@renaissancerentals/renaissance-component 10.0.10 → 10.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/lib/asset/AssetModal.d.ts +10 -0
  2. package/lib/asset/AssetModal.js +84 -0
  3. package/lib/asset/assets/AssetModal.scss +37 -0
  4. package/lib/assets/_variables.scss +1 -0
  5. package/lib/floorplan/card/SimilarFloorplanCard.d.ts +7 -0
  6. package/lib/floorplan/card/SimilarFloorplanCard.js +117 -0
  7. package/lib/floorplan/card/TestimonialsCard.d.ts +7 -0
  8. package/lib/floorplan/card/TestimonialsCard.js +68 -0
  9. package/lib/floorplan/card/assets/SimilarFloorplanCard.scss +53 -0
  10. package/lib/floorplan/card/assets/TestimonialsCard.scss +65 -0
  11. package/lib/floorplan/data/Floorplan.d.ts +39 -1
  12. package/lib/floorplan/data/Floorplan.js +1 -1
  13. package/lib/floorplan/data/Unit.d.ts +2 -2
  14. package/lib/floorplan/data/Unit.js +2 -2
  15. package/lib/floorplan/section/FloorplanHero.d.ts +9 -0
  16. package/lib/floorplan/section/FloorplanHero.js +126 -0
  17. package/lib/floorplan/section/FloorplanSection.d.ts +13 -0
  18. package/lib/floorplan/section/FloorplanSection.js +187 -0
  19. package/lib/floorplan/section/assets/FloorplanHero.scss +75 -0
  20. package/lib/floorplan/section/assets/FloorplanSection.scss +88 -0
  21. package/lib/floorplan/service/FloorplanService.d.ts +11 -1
  22. package/lib/floorplan/service/FloorplanService.js +127 -2
  23. package/lib/gallery/GalleryHero.d.ts +2 -2
  24. package/lib/gallery/GalleryHero.js +53 -8
  25. package/lib/gallery/GalleryModal.js +5 -5
  26. package/lib/gallery/VideoTours.d.ts +5 -0
  27. package/lib/gallery/VideoTours.js +56 -0
  28. package/lib/gallery/VirtualTour.d.ts +5 -0
  29. package/lib/gallery/VirtualTour.js +28 -0
  30. package/lib/gallery/assets/GalleryHero.scss +64 -3
  31. package/lib/index.d.ts +5 -3
  32. package/lib/index.js +77 -1
  33. package/lib/utils/Utils.d.ts +3 -0
  34. package/lib/utils/Utils.js +16 -2
  35. package/package.json +2 -1
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.FloorplanHero = void 0;
9
+
10
+ var _react = _interopRequireWildcard(require("react"));
11
+
12
+ require("./assets/FloorplanHero.scss");
13
+
14
+ var _muncherUi = require("@contentmunch/muncher-ui");
15
+
16
+ var _AssetService = require("../../asset/service/AssetService");
17
+
18
+ var _GalleryHeroSkeleton = require("../../gallery/GalleryHeroSkeleton");
19
+
20
+ var _GalleryHero = require("../../gallery/GalleryHero");
21
+
22
+ var _FloorplanService = require("../service/FloorplanService");
23
+
24
+ var _Utils = require("../../utils/Utils");
25
+
26
+ var _AssetModal = require("../../asset/AssetModal");
27
+
28
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
+
30
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
+
32
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
33
+
34
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
35
+
36
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
37
+
38
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
39
+
40
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
41
+
42
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
43
+
44
+ var FloorplanHero = function FloorplanHero(_ref) {
45
+ var _floorplan$units$, _floorplan$units$2, _floorplan$units$3, _floorplan$units$4;
46
+
47
+ var floorplan = _ref.floorplan,
48
+ contactClickHandler = _ref.contactClickHandler,
49
+ applyClickHandler = _ref.applyClickHandler;
50
+
51
+ var _useState = (0, _react.useState)([]),
52
+ _useState2 = _slicedToArray(_useState, 2),
53
+ assets = _useState2[0],
54
+ setAssets = _useState2[1];
55
+
56
+ var _useState3 = (0, _react.useState)(true),
57
+ _useState4 = _slicedToArray(_useState3, 2),
58
+ isLoading = _useState4[0],
59
+ setIsLoading = _useState4[1];
60
+
61
+ var _useState5 = (0, _react.useState)([]),
62
+ _useState6 = _slicedToArray(_useState5, 2),
63
+ videoTours = _useState6[0],
64
+ setVideoTours = _useState6[1];
65
+
66
+ var _useState7 = (0, _react.useState)(undefined),
67
+ _useState8 = _slicedToArray(_useState7, 2),
68
+ virtualTour = _useState8[0],
69
+ setVirtualTour = _useState8[1];
70
+
71
+ (0, _react.useEffect)(function () {
72
+ if (floorplan.virtualTourLink) setVirtualTour(floorplan.virtualTourLink);
73
+ var tourLinks = [];
74
+ if (floorplan.videoTourLink) tourLinks.push(floorplan.videoTourLink);
75
+ if (floorplan.threeSixtyVideoTourLink) tourLinks.push(floorplan.threeSixtyVideoTourLink);
76
+ setVideoTours(tourLinks);
77
+ (0, _AssetService.getAssetsFrom)(floorplan.photosFolderId).then(function (galleryAssets) {
78
+ setAssets(galleryAssets);
79
+ }).finally(function () {
80
+ setIsLoading(false);
81
+ });
82
+ }, [floorplan]);
83
+ return /*#__PURE__*/_react.default.createElement("section", {
84
+ className: "section-floorplan--hero"
85
+ }, isLoading ? /*#__PURE__*/_react.default.createElement(_GalleryHeroSkeleton.GalleryHeroSkeleton, null) : /*#__PURE__*/_react.default.createElement(_GalleryHero.GalleryHero, {
86
+ assets: assets,
87
+ isAvailableNow: (0, _FloorplanService.isFloorplanAvailable)(floorplan),
88
+ virtualTour: virtualTour,
89
+ videoTours: videoTours
90
+ }), /*#__PURE__*/_react.default.createElement("div", {
91
+ className: "container"
92
+ }, /*#__PURE__*/_react.default.createElement("div", {
93
+ className: "floorplan--two-columns"
94
+ }, /*#__PURE__*/_react.default.createElement("div", {
95
+ className: "floorplan-column-left"
96
+ }, /*#__PURE__*/_react.default.createElement("h3", null, floorplan.name), /*#__PURE__*/_react.default.createElement("h4", null, "$", (0, _Utils.rangeFrom)(floorplan.units, "rent"), "/mo"), /*#__PURE__*/_react.default.createElement("p", {
97
+ className: "floorplan--description"
98
+ }, floorplan === null || floorplan === void 0 ? void 0 : (_floorplan$units$ = floorplan.units[0]) === null || _floorplan$units$ === void 0 ? void 0 : _floorplan$units$.address, ", ", floorplan === null || floorplan === void 0 ? void 0 : (_floorplan$units$2 = floorplan.units[0]) === null || _floorplan$units$2 === void 0 ? void 0 : _floorplan$units$2.zipcode), /*#__PURE__*/_react.default.createElement("p", {
99
+ className: "floorplan--featured"
100
+ }, /*#__PURE__*/_react.default.createElement(_AssetModal.AssetModal, {
101
+ assetUrl: floorplan.photo,
102
+ assetTitle: "Floorplan image",
103
+ size: "small"
104
+ }, "View Floorplan"), "|\xA0\xA0", /*#__PURE__*/_react.default.createElement("a", {
105
+ target: "_blank",
106
+ href: (0, _Utils.addressToGoogleMapLink)(floorplan === null || floorplan === void 0 ? void 0 : (_floorplan$units$3 = floorplan.units[0]) === null || _floorplan$units$3 === void 0 ? void 0 : _floorplan$units$3.address, floorplan === null || floorplan === void 0 ? void 0 : (_floorplan$units$4 = floorplan.units[0]) === null || _floorplan$units$4 === void 0 ? void 0 : _floorplan$units$4.zipcode)
107
+ }, "View on Map"))), /*#__PURE__*/_react.default.createElement("div", {
108
+ className: "main"
109
+ }, /*#__PURE__*/_react.default.createElement("div", {
110
+ className: " floorplan-column-right"
111
+ }, /*#__PURE__*/_react.default.createElement(_muncherUi.Button, {
112
+ variant: "primary",
113
+ size: "medium",
114
+ onClick: contactClickHandler
115
+ }, "contact us"), /*#__PURE__*/_react.default.createElement(_muncherUi.Button, {
116
+ variant: "tertiary",
117
+ size: "medium",
118
+ onClick: applyClickHandler
119
+ }, "apply"), /*#__PURE__*/_react.default.createElement(_muncherUi.ShareButton, {
120
+ title: "Check out this apartment",
121
+ size: "large"
122
+ }))))));
123
+ };
124
+
125
+ exports.FloorplanHero = FloorplanHero;
126
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGbG9vcnBsYW5IZXJvIiwiZmxvb3JwbGFuIiwiY29udGFjdENsaWNrSGFuZGxlciIsImFwcGx5Q2xpY2tIYW5kbGVyIiwidXNlU3RhdGUiLCJhc3NldHMiLCJzZXRBc3NldHMiLCJpc0xvYWRpbmciLCJzZXRJc0xvYWRpbmciLCJ2aWRlb1RvdXJzIiwic2V0VmlkZW9Ub3VycyIsInVuZGVmaW5lZCIsInZpcnR1YWxUb3VyIiwic2V0VmlydHVhbFRvdXIiLCJ1c2VFZmZlY3QiLCJ2aXJ0dWFsVG91ckxpbmsiLCJ0b3VyTGlua3MiLCJ2aWRlb1RvdXJMaW5rIiwicHVzaCIsInRocmVlU2l4dHlWaWRlb1RvdXJMaW5rIiwiZ2V0QXNzZXRzRnJvbSIsInBob3Rvc0ZvbGRlcklkIiwidGhlbiIsImdhbGxlcnlBc3NldHMiLCJmaW5hbGx5IiwiaXNGbG9vcnBsYW5BdmFpbGFibGUiLCJuYW1lIiwicmFuZ2VGcm9tIiwidW5pdHMiLCJhZGRyZXNzIiwiemlwY29kZSIsInBob3RvIiwiYWRkcmVzc1RvR29vZ2xlTWFwTGluayJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mbG9vcnBsYW4vc2VjdGlvbi9GbG9vcnBsYW5IZXJvLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBcIi4vYXNzZXRzL0Zsb29ycGxhbkhlcm8uc2Nzc1wiO1xuaW1wb3J0IHtCdXR0b24sIFNoYXJlQnV0dG9ufSBmcm9tIFwiQGNvbnRlbnRtdW5jaC9tdW5jaGVyLXVpXCI7XG5pbXBvcnQge0Fzc2V0fSBmcm9tIFwiLi4vLi4vYXNzZXQvZGF0YS9Bc3NldFwiO1xuaW1wb3J0IHtnZXRBc3NldHNGcm9tfSBmcm9tIFwiLi4vLi4vYXNzZXQvc2VydmljZS9Bc3NldFNlcnZpY2VcIjtcbmltcG9ydCB7R2FsbGVyeUhlcm9Ta2VsZXRvbn0gZnJvbSBcIi4uLy4uL2dhbGxlcnkvR2FsbGVyeUhlcm9Ta2VsZXRvblwiO1xuaW1wb3J0IHtHYWxsZXJ5SGVyb30gZnJvbSBcIi4uLy4uL2dhbGxlcnkvR2FsbGVyeUhlcm9cIjtcbmltcG9ydCB7aXNGbG9vcnBsYW5BdmFpbGFibGV9IGZyb20gXCIuLi9zZXJ2aWNlL0Zsb29ycGxhblNlcnZpY2VcIjtcbmltcG9ydCB7YWRkcmVzc1RvR29vZ2xlTWFwTGluaywgcmFuZ2VGcm9tfSBmcm9tIFwiLi4vLi4vdXRpbHMvVXRpbHNcIjtcbmltcG9ydCB7Rmxvb3JwbGFufSBmcm9tIFwiLi4vZGF0YS9GbG9vcnBsYW5cIjtcbmltcG9ydCB7QXNzZXRNb2RhbH0gZnJvbSBcIi4uLy4uL2Fzc2V0L0Fzc2V0TW9kYWxcIjtcblxuZXhwb3J0IGNvbnN0IEZsb29ycGxhbkhlcm86IFJlYWN0LkZDPEZsb29ycGxhblByb3BzPiA9ICh7Zmxvb3JwbGFuLCBjb250YWN0Q2xpY2tIYW5kbGVyLCBhcHBseUNsaWNrSGFuZGxlcn0pID0+IHtcbiAgICBjb25zdCBbYXNzZXRzLCBzZXRBc3NldHNdID0gdXNlU3RhdGU8QXNzZXRbXT4oW10pO1xuICAgIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgICBjb25zdCBbdmlkZW9Ub3Vycywgc2V0VmlkZW9Ub3Vyc10gPSB1c2VTdGF0ZTxzdHJpbmdbXT4oW10pO1xuICAgIGNvbnN0IFt2aXJ0dWFsVG91ciwgc2V0VmlydHVhbFRvdXJdID0gdXNlU3RhdGU8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChmbG9vcnBsYW4udmlydHVhbFRvdXJMaW5rKVxuICAgICAgICAgICAgc2V0VmlydHVhbFRvdXIoZmxvb3JwbGFuLnZpcnR1YWxUb3VyTGluayk7XG4gICAgICAgIGNvbnN0IHRvdXJMaW5rcyA9IFtdO1xuICAgICAgICBpZiAoZmxvb3JwbGFuLnZpZGVvVG91ckxpbmspXG4gICAgICAgICAgICB0b3VyTGlua3MucHVzaChmbG9vcnBsYW4udmlkZW9Ub3VyTGluayk7XG4gICAgICAgIGlmIChmbG9vcnBsYW4udGhyZWVTaXh0eVZpZGVvVG91ckxpbmspXG4gICAgICAgICAgICB0b3VyTGlua3MucHVzaChmbG9vcnBsYW4udGhyZWVTaXh0eVZpZGVvVG91ckxpbmspO1xuICAgICAgICBzZXRWaWRlb1RvdXJzKHRvdXJMaW5rcyk7XG5cbiAgICAgICAgZ2V0QXNzZXRzRnJvbShmbG9vcnBsYW4ucGhvdG9zRm9sZGVySWQpLnRoZW4oZ2FsbGVyeUFzc2V0cyA9PiB7XG4gICAgICAgICAgICBzZXRBc3NldHMoZ2FsbGVyeUFzc2V0cyk7XG4gICAgICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfSwgW2Zsb29ycGxhbl0pXG4gICAgcmV0dXJuIChcbiAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwic2VjdGlvbi1mbG9vcnBsYW4tLWhlcm9cIj5cbiAgICAgICAgICAgIHtpc0xvYWRpbmcgPyA8R2FsbGVyeUhlcm9Ta2VsZXRvbi8+IDpcbiAgICAgICAgICAgICAgICA8R2FsbGVyeUhlcm8gYXNzZXRzPXthc3NldHN9IGlzQXZhaWxhYmxlTm93PXtpc0Zsb29ycGxhbkF2YWlsYWJsZShmbG9vcnBsYW4pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsVG91cj17dmlydHVhbFRvdXJ9IHZpZGVvVG91cnM9e3ZpZGVvVG91cnN9Lz59XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbG9vcnBsYW4tLXR3by1jb2x1bW5zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxvb3JwbGFuLWNvbHVtbi1sZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDM+e2Zsb29ycGxhbi5uYW1lfTwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDQ+JHtyYW5nZUZyb20oZmxvb3JwbGFuLnVuaXRzLCBcInJlbnRcIil9L21vPC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cImZsb29ycGxhbi0tZGVzY3JpcHRpb25cIj57Zmxvb3JwbGFuPy51bml0c1swXT8uYWRkcmVzc30sIHtmbG9vcnBsYW4/LnVuaXRzWzBdPy56aXBjb2RlfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cImZsb29ycGxhbi0tZmVhdHVyZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXNzZXRNb2RhbCBhc3NldFVybD17Zmxvb3JwbGFuLnBob3RvfSBhc3NldFRpdGxlPVwiRmxvb3JwbGFuIGltYWdlXCIgc2l6ZT1cInNtYWxsXCI+Vmlld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9vcnBsYW48L0Fzc2V0TW9kYWw+fCZuYnNwOyZuYnNwOzxhIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj17YWRkcmVzc1RvR29vZ2xlTWFwTGluayhmbG9vcnBsYW4/LnVuaXRzWzBdPy5hZGRyZXNzLCBmbG9vcnBsYW4/LnVuaXRzWzBdPy56aXBjb2RlKX0+Vmlld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIE1hcDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCIgZmxvb3JwbGFuLWNvbHVtbi1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cInByaW1hcnlcIiBzaXplPVwibWVkaXVtXCIgb25DbGljaz17Y29udGFjdENsaWNrSGFuZGxlcn0+Y29udGFjdCB1czwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cInRlcnRpYXJ5XCIgc2l6ZT1cIm1lZGl1bVwiIG9uQ2xpY2s9e2FwcGx5Q2xpY2tIYW5kbGVyfT5hcHBseTwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGFyZUJ1dHRvbiB0aXRsZT1cIkNoZWNrIG91dCB0aGlzIGFwYXJ0bWVudFwiIHNpemU9XCJsYXJnZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvb3JwbGFuUHJvcHMge1xuICAgIGZsb29ycGxhbjogRmxvb3JwbGFuO1xuICAgIGNvbnRhY3RDbGlja0hhbmRsZXI6ICgpID0+IHZvaWQ7XG4gICAgYXBwbHlDbGlja0hhbmRsZXI6ICgpID0+IHZvaWQ7XG59Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRU8sSUFBTUEsYUFBdUMsR0FBRyxTQUExQ0EsYUFBMEMsT0FBeUQ7RUFBQTs7RUFBQSxJQUF2REMsU0FBdUQsUUFBdkRBLFNBQXVEO0VBQUEsSUFBNUNDLG1CQUE0QyxRQUE1Q0EsbUJBQTRDO0VBQUEsSUFBdkJDLGlCQUF1QixRQUF2QkEsaUJBQXVCOztFQUM1RyxnQkFBNEIsSUFBQUMsZUFBQSxFQUFrQixFQUFsQixDQUE1QjtFQUFBO0VBQUEsSUFBT0MsTUFBUDtFQUFBLElBQWVDLFNB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
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ import "./assets/FloorplanSection.scss";
3
+ export declare const FloorplanSection: React.FC<FloorplanSectionProps>;
4
+ export interface FloorplanSectionProps {
5
+ contactClickHandler: () => void;
6
+ applyClickHandler: () => void;
7
+ floorplanId: string;
8
+ contact: ContactNumber;
9
+ }
10
+ export interface ContactNumber {
11
+ number: number;
12
+ display: string;
13
+ }
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.FloorplanSection = void 0;
9
+
10
+ var _react = _interopRequireWildcard(require("react"));
11
+
12
+ var _Floorplan = require("../data/Floorplan");
13
+
14
+ require("./assets/FloorplanSection.scss");
15
+
16
+ var _FloorplanService = require("../service/FloorplanService");
17
+
18
+ var _GalleryHeroSkeleton = require("../../gallery/GalleryHeroSkeleton");
19
+
20
+ var _FloorplanHero = require("./FloorplanHero");
21
+
22
+ var _Card = require("../../card/Card");
23
+
24
+ var _Utils = require("../../utils/Utils");
25
+
26
+ var _TestimonialsCard = require("../card/TestimonialsCard");
27
+
28
+ var _MapSection = require("../../map/MapSection");
29
+
30
+ var _SimilarFloorplanCard = require("../card/SimilarFloorplanCard");
31
+
32
+ var _muncherUi = require("@contentmunch/muncher-ui");
33
+
34
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
35
+
36
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
37
+
38
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
39
+
40
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
41
+
42
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
43
+
44
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
45
+
46
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
47
+
48
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
49
+
50
+ var FloorplanSection = function FloorplanSection(_ref) {
51
+ var _floorplan$units$, _floorplan$units$2;
52
+
53
+ var contactClickHandler = _ref.contactClickHandler,
54
+ applyClickHandler = _ref.applyClickHandler,
55
+ floorplanId = _ref.floorplanId,
56
+ contact = _ref.contact;
57
+
58
+ var _useState = (0, _react.useState)({}),
59
+ _useState2 = _slicedToArray(_useState, 2),
60
+ floorplan = _useState2[0],
61
+ setFloorplan = _useState2[1];
62
+
63
+ var _useState3 = (0, _react.useState)([]),
64
+ _useState4 = _slicedToArray(_useState3, 2),
65
+ similarFloorplans = _useState4[0],
66
+ setSimilarFloorplans = _useState4[1];
67
+
68
+ var _useState5 = (0, _react.useState)([]),
69
+ _useState6 = _slicedToArray(_useState5, 2),
70
+ floorplanVariations = _useState6[0],
71
+ setFloorplanVariations = _useState6[1];
72
+
73
+ var _useState7 = (0, _react.useState)([]),
74
+ _useState8 = _slicedToArray(_useState7, 2),
75
+ testimonials = _useState8[0],
76
+ setTestimonials = _useState8[1];
77
+
78
+ var _useState9 = (0, _react.useState)(true),
79
+ _useState10 = _slicedToArray(_useState9, 2),
80
+ isLoading = _useState10[0],
81
+ setIsLoading = _useState10[1];
82
+
83
+ var _useState11 = (0, _react.useState)(false),
84
+ _useState12 = _slicedToArray(_useState11, 2),
85
+ errorLoading = _useState12[0],
86
+ setErrorLoading = _useState12[1];
87
+
88
+ (0, _react.useEffect)(function () {
89
+ Promise.all([(0, _FloorplanService.getFloorplan)(floorplanId), (0, _FloorplanService.getFloorplanVariations)(floorplanId), (0, _FloorplanService.getSimilarFloorplans)(floorplanId), (0, _FloorplanService.getTestimonials)(floorplanId)]).then(function (data) {
90
+ setFloorplan(data[0]);
91
+ setFloorplanVariations(data[1]);
92
+ setSimilarFloorplans(data[2]);
93
+ setTestimonials(data[3]);
94
+ }).catch(function () {
95
+ setErrorLoading(true);
96
+ }).finally(function () {
97
+ setIsLoading(false);
98
+ });
99
+ }, [floorplanId]);
100
+ return /*#__PURE__*/_react.default.createElement("section", {
101
+ className: "section-floorplan"
102
+ }, isLoading ? /*#__PURE__*/_react.default.createElement("section", {
103
+ className: "section-floorplan--hero"
104
+ }, /*#__PURE__*/_react.default.createElement(_GalleryHeroSkeleton.GalleryHeroSkeleton, null)) : errorLoading ? /*#__PURE__*/_react.default.createElement("section", {
105
+ className: "div-full--center"
106
+ }, /*#__PURE__*/_react.default.createElement("h2", null, "Uh-oh, this is a 404")) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_FloorplanHero.FloorplanHero, {
107
+ floorplan: floorplan,
108
+ contactClickHandler: contactClickHandler,
109
+ applyClickHandler: applyClickHandler
110
+ }), /*#__PURE__*/_react.default.createElement("div", {
111
+ className: "container"
112
+ }, /*#__PURE__*/_react.default.createElement("div", {
113
+ className: "floorplan--cards"
114
+ }, /*#__PURE__*/_react.default.createElement(_Card.Card, {
115
+ title: "Details"
116
+ }, /*#__PURE__*/_react.default.createElement("p", {
117
+ className: "floorplan-card--featured"
118
+ }, floorplan.bedroom, " Bedroom | ", floorplan.bathroom, " Bathroom ", (0, _Utils.enumToString)(floorplan.style)), /*#__PURE__*/_react.default.createElement("p", {
119
+ className: "floorplan-card--featured"
120
+ }, "$", (0, _Utils.rangeFrom)(floorplan.units, "squareFoot"), " Square Feet"), /*#__PURE__*/_react.default.createElement("p", {
121
+ className: "floorplan-card--featured"
122
+ }, "$", (0, _Utils.rangeFrom)(floorplan.units, "rent"), "/mo"), /*#__PURE__*/_react.default.createElement("p", {
123
+ className: "floorplan-card--featured"
124
+ }, "$", (0, _Utils.rangeFrom)(floorplan.units, "deposit"), " Security Deposit"), /*#__PURE__*/_react.default.createElement("p", null, floorplan.description)), floorplan.amenities.length > 0 ? /*#__PURE__*/_react.default.createElement(_Card.Card, {
125
+ title: "Amenities"
126
+ }, floorplan.amenities.filter(function (amenity) {
127
+ return amenity.featured;
128
+ }).map(function (amenity) {
129
+ return /*#__PURE__*/_react.default.createElement("p", {
130
+ className: "floorplan-card--featured",
131
+ key: "floorplan-amenity-featured-" + amenity.id
132
+ }, amenity.name);
133
+ }), /*#__PURE__*/_react.default.createElement("ul", null, floorplan.amenities.filter(function (amenity) {
134
+ return !amenity.featured;
135
+ }).map(function (amenity) {
136
+ return /*#__PURE__*/_react.default.createElement("li", {
137
+ key: "floorplan-amenity-" + amenity.id
138
+ }, amenity.name);
139
+ })), floorplanVariations.length > 0 ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h5", null, "Variations"), /*#__PURE__*/_react.default.createElement("ul", null, floorplanVariations.map(function (variation, i) {
140
+ return /*#__PURE__*/_react.default.createElement("li", {
141
+ key: "floorplan-variation-" + i
142
+ }, variation.variation);
143
+ }))) : "") : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null), testimonials.length > 0 ? /*#__PURE__*/_react.default.createElement(_TestimonialsCard.TestimonialsCard, {
144
+ testimonials: testimonials
145
+ }) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null), /*#__PURE__*/_react.default.createElement(_Card.Card, null, /*#__PURE__*/_react.default.createElement(_MapSection.MapSection, {
146
+ src: (0, _Utils.addressToGoogleMap)(floorplan === null || floorplan === void 0 ? void 0 : (_floorplan$units$ = floorplan.units[0]) === null || _floorplan$units$ === void 0 ? void 0 : _floorplan$units$.address, floorplan === null || floorplan === void 0 ? void 0 : (_floorplan$units$2 = floorplan.units[0]) === null || _floorplan$units$2 === void 0 ? void 0 : _floorplan$units$2.zipcode)
147
+ })), /*#__PURE__*/_react.default.createElement(_Card.Card, {
148
+ title: "Pets"
149
+ }, /*#__PURE__*/_react.default.createElement("h5", null, "Permitted"), /*#__PURE__*/_react.default.createElement("ul", null, (0, _FloorplanService.permittedPets)(floorplan).map(function (pet, i) {
150
+ return /*#__PURE__*/_react.default.createElement("li", {
151
+ key: "floorplan-permitted-pet-" + i
152
+ }, pet);
153
+ })), (0, _FloorplanService.notPermittedPets)(floorplan).length > 0 ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h5", null, "Not Permitted"), /*#__PURE__*/_react.default.createElement("ul", null, (0, _FloorplanService.notPermittedPets)(floorplan).map(function (pet, i) {
154
+ return /*#__PURE__*/_react.default.createElement("li", {
155
+ key: "floorplan-not-permitted-pet-" + i
156
+ }, pet);
157
+ }))) : "", (0, _FloorplanService.petPolicy)(floorplan) ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h5", null, "Additional Information"), /*#__PURE__*/_react.default.createElement("p", null, "petPolicy(floorplan)")) : ""), /*#__PURE__*/_react.default.createElement(_Card.Card, {
158
+ title: "Utilities"
159
+ }, /*#__PURE__*/_react.default.createElement("h5", null, "Paid By Landlord"), /*#__PURE__*/_react.default.createElement("ul", null, floorplan.utilities.filter(function (utility) {
160
+ return utility.type === _Floorplan.UtilityType.INCLUDED_UTILITY;
161
+ }).map(function (utility) {
162
+ return /*#__PURE__*/_react.default.createElement("li", {
163
+ key: "floorplan-included-utility-" + utility.id
164
+ }, (0, _Utils.capitalizeFirstLetter)(utility.name));
165
+ })), /*#__PURE__*/_react.default.createElement("h5", null, "Paid By Tenant"), /*#__PURE__*/_react.default.createElement("ul", null, floorplan.utilities.filter(function (utility) {
166
+ return utility.type === _Floorplan.UtilityType.RESIDENT_UTILITY;
167
+ }).map(function (utility) {
168
+ return /*#__PURE__*/_react.default.createElement("li", {
169
+ key: "floorplan-resident-utility-" + utility.id
170
+ }, (0, _Utils.capitalizeFirstLetter)(utility.name));
171
+ }))), similarFloorplans.length > 0 ? /*#__PURE__*/_react.default.createElement(_SimilarFloorplanCard.SimilarFloorplanCard, {
172
+ similarFloorplans: similarFloorplans
173
+ }) : "", /*#__PURE__*/_react.default.createElement("div", {
174
+ className: "contact-card"
175
+ }, /*#__PURE__*/_react.default.createElement(_Card.Card, {
176
+ featured: true
177
+ }, /*#__PURE__*/_react.default.createElement("p", null, /*#__PURE__*/_react.default.createElement("i", null, "Questions?")), /*#__PURE__*/_react.default.createElement("p", null, /*#__PURE__*/_react.default.createElement("i", null, "Call or text us anytime:")), /*#__PURE__*/_react.default.createElement("p", null, /*#__PURE__*/_react.default.createElement("a", {
178
+ href: "tel:" + contact.number
179
+ }, contact.display)), /*#__PURE__*/_react.default.createElement(_muncherUi.Button, {
180
+ variant: "tertiary",
181
+ onClick: contactClickHandler,
182
+ size: "large"
183
+ }, "Contact Us \xBB")))))));
184
+ };
185
+
186
+ exports.FloorplanSection = FloorplanSection;
187
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGbG9vcnBsYW5TZWN0aW9uIiwiY29udGFjdENsaWNrSGFuZGxlciIsImFwcGx5Q2xpY2tIYW5kbGVyIiwiZmxvb3JwbGFuSWQiLCJjb250YWN0IiwidXNlU3RhdGUiLCJmbG9vcnBsYW4iLCJzZXRGbG9vcnBsYW4iLCJzaW1pbGFyRmxvb3JwbGFucyIsInNldFNpbWlsYXJGbG9vcnBsYW5zIiwiZmxvb3JwbGFuVmFyaWF0aW9ucyIsInNldEZsb29ycGxhblZhcmlhdGlvbnMiLCJ0ZXN0aW1vbmlhbHMiLCJzZXRUZXN0aW1vbmlhbHMiLCJpc0xvYWRpbmciLCJzZXRJc0xvYWRpbmciLCJlcnJvckxvYWRpbmciLCJzZXRFcnJvckxvYWRpbmciLCJ1c2VFZmZlY3QiLCJQcm9taXNlIiwiYWxsIiwiZ2V0Rmxvb3JwbGFuIiwiZ2V0Rmxvb3JwbGFuVmFyaWF0aW9ucyIsImdldFNpbWlsYXJGbG9vcnBsYW5zIiwiZ2V0VGVzdGltb25pYWxzIiwidGhlbiIsImRhdGEiLCJjYXRjaCIsImZpbmFsbHkiLCJiZWRyb29tIiwiYmF0aHJvb20iLCJlbnVtVG9TdHJpbmciLCJzdHlsZSIsInJhbmdlRnJvbSIsInVuaXRzIiwiZGVzY3JpcHRpb24iLCJhbWVuaXRpZXMiLCJsZW5ndGgiLCJmaWx0ZXIiLCJhbWVuaXR5IiwiZmVhdHVyZWQiLCJtYXAiLCJpZCIsIm5hbWUiLCJ2YXJpYXRpb24iLCJpIiwiYWRkcmVzc1RvR29vZ2xlTWFwIiwiYWRkcmVzcyIsInppcGNvZGUiLCJwZXJtaXR0ZWRQZXRzIiwicGV0Iiwibm90UGVybWl0dGVkUGV0cyIsInBldFBvbGljeSIsInV0aWxpdGllcyIsInV0aWxpdHkiLCJ0eXBlIiwiVXRpbGl0eVR5cGUiLCJJTkNMVURFRF9VVElMSVRZIiwiY2FwaXRhbGl6ZUZpcnN0TGV0dGVyIiwiUkVTSURFTlRfVVRJTElUWSIsIm51bWJlciIsImRpc3BsYXkiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmxvb3JwbGFuL3NlY3Rpb24vRmxvb3JwbGFuU2VjdGlvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7dXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge0Zsb29ycGxhbiwgRmxvb3JwbGFuVmFyaWF0aW9uLCBTaW1pbGFyRmxvb3JwbGFuLCBUZXN0aW1vbmlhbCwgVXRpbGl0eVR5cGV9IGZyb20gXCIuLi9kYXRhL0Zsb29ycGxhblwiO1xuaW1wb3J0IFwiLi9hc3NldHMvRmxvb3JwbGFuU2VjdGlvbi5zY3NzXCI7XG5pbXBvcnQge1xuICAgIGdldEZsb29ycGxhbixcbiAgICBnZXRGbG9vcnBsYW5WYXJpYXRpb25zLFxuICAgIGdldFNpbWlsYXJGbG9vcnBsYW5zLFxuICAgIGdldFRlc3RpbW9uaWFscyxcbiAgICBub3RQZXJtaXR0ZWRQZXRzLFxuICAgIHBlcm1pdHRlZFBldHMsXG4gICAgcGV0UG9saWN5XG59IGZyb20gXCIuLi9zZXJ2aWNlL0Zsb29ycGxhblNlcnZpY2VcIjtcbmltcG9ydCB7R2FsbGVyeUhlcm9Ta2VsZXRvbn0gZnJvbSBcIi4uLy4uL2dhbGxlcnkvR2FsbGVyeUhlcm9Ta2VsZXRvblwiO1xuaW1wb3J0IHtGbG9vcnBsYW5IZXJvfSBmcm9tIFwiLi9GbG9vcnBsYW5IZXJvXCI7XG5pbXBvcnQge0NhcmR9IGZyb20gXCIuLi8uLi9jYXJkL0NhcmRcIjtcbmltcG9ydCB7YWRkcmVzc1RvR29vZ2xlTWFwLCBjYXBpdGFsaXplRmlyc3RMZXR0ZXIsIGVudW1Ub1N0cmluZywgcmFuZ2VGcm9tfSBmcm9tIFwiLi4vLi4vdXRpbHMvVXRpbHNcIjtcbmltcG9ydCB7VGVzdGltb25pYWxzQ2FyZH0gZnJvbSBcIi4uL2NhcmQvVGVzdGltb25pYWxzQ2FyZFwiO1xuaW1wb3J0IHtNYXBTZWN0aW9ufSBmcm9tIFwiLi4vLi4vbWFwL01hcFNlY3Rpb25cIjtcbmltcG9ydCB7U2ltaWxhckZsb29ycGxhbkNhcmR9IGZyb20gXCIuLi9jYXJkL1NpbWlsYXJGbG9vcnBsYW5DYXJkXCI7XG5pbXBvcnQge0J1dHRvbn0gZnJvbSBcIkBjb250ZW50bXVuY2gvbXVuY2hlci11aVwiO1xuXG5leHBvcnQgY29uc3QgRmxvb3JwbGFuU2VjdGlvbjogUmVhY3QuRkM8Rmxvb3JwbGFuU2VjdGlvblByb3BzPiA9ICh7Y29udGFjdENsaWNrSGFuZGxlciwgYXBwbHlDbGlja0hhbmRsZXIsIGZsb29ycGxhbklkLCBjb250YWN0fSkgPT4ge1xuICAgIGNvbnN0IFtmbG9vcnBsYW4sIHNldEZsb29ycGxhbl0gPSB1c2VTdGF0ZTxGbG9vcnBsYW4+KHt9IGFzIEZsb29ycGxhbik7XG4gICAgY29uc3QgW3NpbWlsYXJGbG9vcnBsYW5zLCBzZXRTaW1pbGFyRmxvb3JwbGFuc10gPSB1c2VTdGF0ZTxTaW1pbGFyRmxvb3JwbGFuW10+KFtdKTtcbiAgICBjb25zdCBbZmxvb3JwbGFuVmFyaWF0aW9ucywgc2V0Rmxvb3JwbGFuVmFyaWF0aW9uc10gPSB1c2VTdGF0ZTxGbG9vcnBsYW5WYXJpYXRpb25bXT4oW10pO1xuICAgIGNvbnN0IFt0ZXN0aW1vbmlhbHMsIHNldFRlc3RpbW9uaWFsc10gPSB1c2VTdGF0ZTxUZXN0aW1vbmlhbFtdPihbXSk7XG4gICAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IHVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFtlcnJvckxvYWRpbmcsIHNldEVycm9yTG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgZ2V0Rmxvb3JwbGFuKGZsb29ycGxhbklkKSxcbiAgICAgICAgICAgIGdldEZsb29ycGxhblZhcmlhdGlvbnMoZmxvb3JwbGFuSWQpLFxuICAgICAgICAgICAgZ2V0U2ltaWxhckZsb29ycGxhbnMoZmxvb3JwbGFuSWQpLFxuICAgICAgICAgICAgZ2V0VGVzdGltb25pYWxzKGZsb29ycGxhbklkKVxuICAgICAgICBdKVxuICAgICAgICAgICAgLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRGbG9vcnBsYW4oZGF0YVswXSk7XG4gICAgICAgICAgICAgICAgc2V0Rmxvb3JwbGFuVmFyaWF0aW9ucyhkYXRhWzFdKTtcbiAgICAgICAgICAgICAgICBzZXRTaW1pbGFyRmxvb3JwbGFucyhkYXRhWzJdKTtcbiAgICAgICAgICAgICAgICBzZXRUZXN0aW1vbmlhbHMoZGF0YVszXSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRFcnJvckxvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldElzTG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICB9KTtcblxuICAgIH0sIFtmbG9vcnBsYW5JZF0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwic2VjdGlvbi1mbG9vcnBsYW5cIj5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpc0xvYWRpbmcgPyA8c2VjdGlvbiBjbGFzc05hbWU9XCJzZWN0aW9uLWZsb29ycGxhbi0taGVyb1wiPjxHYWxsZXJ5SGVyb1NrZWxldG9uLz48L3NlY3Rpb24+IDpcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JMb2FkaW5nID9cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cImRpdi1mdWxsLS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDI+VWgtb2gsIHRoaXMgaXMgYSA0MDQ8L2gyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPiA6XG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGbG9vcnBsYW5IZXJvIGZsb29ycGxhbj17Zmxvb3JwbGFufSBjb250YWN0Q2xpY2tIYW5kbGVyPXtjb250YWN0Q2xpY2tIYW5kbGVyfSBhcHBseUNsaWNrSGFuZGxlcj17YXBwbHlDbGlja0hhbmRsZXJ9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsb29ycGxhbi0tY2FyZHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDYXJkIHRpdGxlPVwiRGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cImZsb29ycGxhbi1jYXJkLS1mZWF0dXJlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Zmxvb3JwbGFuLmJlZHJvb219IEJlZHJvb21cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB7Zmxvb3JwbGFuLmJhdGhyb29tfSBCYXRocm9vbSB7ZW51bVRvU3RyaW5nKGZsb29ycGxhbi5zdHlsZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cImZsb29ycGxhbi1jYXJkLS1mZWF0dXJlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3JhbmdlRnJvbShmbG9vcnBsYW4udW5pdHMsIFwic3F1YXJlRm9vdFwiKX0gU3F1YXJlIEZlZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwiZmxvb3JwbGFuLWNhcmQtLWZlYXR1cmVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cmFuZ2VGcm9tKGZsb29ycGxhbi51bml0cywgXCJyZW50XCIpfS9tb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJmbG9vcnBsYW4tY2FyZC0tZmVhdHVyZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtyYW5nZUZyb20oZmxvb3JwbGFuLnVuaXRzLCBcImRlcG9zaXRcIil9IFNlY3VyaXR5IERlcG9zaXQ8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmbG9vcnBsYW4uZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9DYXJkPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvb3JwbGFuLmFtZW5pdGllcy5sZW5ndGggPiAwID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENhcmQgdGl0bGU9XCJBbWVuaXRpZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9vcnBsYW4uYW1lbml0aWVzLmZpbHRlcihhbWVuaXR5ID0+IGFtZW5pdHkuZmVhdHVyZWQpLm1hcChhbWVuaXR5ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cImZsb29ycGxhbi1jYXJkLS1mZWF0dXJlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17XCJmbG9vcnBsYW4tYW1lbml0eS1mZWF0dXJlZC1cIiArIGFtZW5pdHkuaWR9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2FtZW5pdHkubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9vcnBsYW4uYW1lbml0aWVzLmZpbHRlcihhbWVuaXR5ID0+ICFhbWVuaXR5LmZlYXR1cmVkKS5tYXAoYW1lbml0eSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGtleT17XCJmbG9vcnBsYW4tYW1lbml0eS1cIiArIGFtZW5pdHkuaWR9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHthbWVuaXR5Lm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9vcnBsYW5WYXJpYXRpb25zLmxlbmd0aCA+IDAgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1PlZhcmlhdGlvbnM8L2g1PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvb3JwbGFuVmFyaWF0aW9ucy5tYXAoKHZhcmlhdGlvbiwgaSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBrZXk9e1wiZmxvb3JwbGFuLXZhcmlhdGlvbi1cIiArIGl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YXJpYXRpb24udmFyaWF0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+IDogXCJcIn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0NhcmQ+IDogPD48Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RpbW9uaWFscy5sZW5ndGggPiAwID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRlc3RpbW9uaWFsc0NhcmQgdGVzdGltb25pYWxzPXt0ZXN0aW1vbmlhbHN9Lz4gOiA8PjwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENhcmQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE1hcFNlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXthZGRyZXNzVG9Hb29nbGVNYXAoZmxvb3JwbGFuPy51bml0c1swXT8uYWRkcmVzcywgZmxvb3JwbGFuPy51bml0c1swXT8uemlwY29kZSl9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQ2FyZD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENhcmQgdGl0bGU9XCJQZXRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1PlBlcm1pdHRlZDwvaDU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJtaXR0ZWRQZXRzKGZsb29ycGxhbikubWFwKChwZXQsIGkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGtleT17XCJmbG9vcnBsYW4tcGVybWl0dGVkLXBldC1cIiArIGl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cGV0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtub3RQZXJtaXR0ZWRQZXRzKGZsb29ycGxhbikubGVuZ3RoID4gMCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+PGg1Pk5vdCBQZXJtaXR0ZWQ8L2g1PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90UGVybWl0dGVkUGV0cyhmbG9vcnBsYW4pLm1hcCgocGV0LCBpKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGtleT17XCJmbG9vcnBsYW4tbm90LXBlcm1pdHRlZC1wZXQtXCIgKyBpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cGV0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPiA6IFwiXCJ9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBldFBvbGljeShmbG9vcnBsYW4pID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1PkFkZGl0aW9uYWwgSW5mb3JtYXRpb248L2g1PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnBldFBvbGljeShmbG9vcnBsYW4pPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+IDogXCJcIlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZCB0aXRsZT1cIlV0aWxpdGllc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNT5QYWlkIEJ5IExhbmRsb3JkPC9oNT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb29ycGxhbi51dGlsaXRpZXMuZmlsdGVyKHV0aWxpdHkgPT4gdXRpbGl0eS50eXBlID09PSBVdGlsaXR5VHlwZS5JTkNMVURFRF9VVElMSVRZKS5tYXAodXRpbGl0eSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBrZXk9e1wiZmxvb3JwbGFuLWluY2x1ZGVkLXV0aWxpdHktXCIgKyB1dGlsaXR5LmlkfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NhcGl0YWxpemVGaXJzdExldHRlcih1dGlsaXR5Lm5hbWUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNT5QYWlkIEJ5IFRlbmFudDwvaDU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9vcnBsYW4udXRpbGl0aWVzLmZpbHRlcih1dGlsaXR5ID0+IHV0aWxpdHkudHlwZSA9PT0gVXRpbGl0eVR5cGUuUkVTSURFTlRfVVRJTElUWSkubWFwKHV0aWxpdHkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkga2V5PXtcImZsb29ycGxhbi1yZXNpZGVudC11dGlsaXR5LVwiICsgdXRpbGl0eS5pZH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjYXBpdGFsaXplRmlyc3RMZXR0ZXIodXRpbGl0eS5uYW1lKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9DYXJkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3NpbWlsYXJGbG9vcnBsYW5zLmxlbmd0aCA+IDAgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaW1pbGFyRmxvb3JwbGFuQ2FyZCBzaW1pbGFyRmxvb3JwbGFucz17c2ltaWxhckZsb29ycGxhbnN9Lz4gOiBcIlwifVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhY3QtY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDYXJkIGZlYXR1cmVkPXt0cnVlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PGk+UXVlc3Rpb25zPzwvaT48L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxpPkNhbGwgb3IgdGV4dCB1cyBhbnl0aW1lOjwvaT48L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPXtcInRlbDpcIiArIGNvbnRhY3QubnVtYmVyfT57Y29udGFjdC5kaXNwbGF5fTwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJ0ZXJ0aWFyeVwiIG9uQ2xpY2s9e2NvbnRhY3RDbGlja0hhbmRsZXJ9IHNpemU9XCJsYXJnZVwiPkNvbnRhY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDCuzwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQ2FyZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICApO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBGbG9vcnBsYW5TZWN0aW9uUHJvcHMge1xuICAgIGNvbnRhY3RDbGlja0hhbmRsZXI6ICgpID0+IHZvaWQ7XG4gICAgYXBwbHlDbGlja0hhbmRsZXI6ICgpID0+IHZvaWQ7XG4gICAgZmxvb3JwbGFuSWQ6IHN0cmluZztcbiAgICBjb250YWN0OiBDb250YWN0TnVtYmVyO1xuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFjdE51bWJlciB7XG4gICAgbnVtYmVyOiBudW1iZXI7XG4gICAgZGlzcGxheTogc3RyaW5nO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFTQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRU8sSUFBTUEsZ0JBQWlELEdBQUcsU0FBcERBLGdCQUFvRCxPQUFvRTtFQUFBOztFQUFBLElBQWxFQyxtQkFBa0UsUUFBbEVBLG1CQUFrRTtFQUFBLElBQTdDQyxpQkFBNkMsUUFBN0NBLGlCQUE2QztFQUFBLElBQTFCQyxXQUEwQixRQUExQkEsV0FBMEI7RUFBQSxJQUFiQyxPQUFhLFFBQWJBLE9BQWE7O0VBQ2pJLGdCQUFrQyxJQUFBQyxlQUFBLEVBQW9CLEVBQXBCLENBQWxDO0VBQUE7RUFBQSxJQUFPQyxTQUFQO0VBQUEsSUFBa0JDLFlBQWxCOztFQUNBLGlCQUFr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
@@ -0,0 +1,75 @@
1
+ @import 'src/assets/variables';
2
+
3
+ .section-floorplan--hero {
4
+ padding: 0;
5
+ background: $primary-background-color;
6
+
7
+ a {
8
+ text-decoration: underline;
9
+ }
10
+
11
+ .floorplan--two-columns {
12
+ padding: 2rem;
13
+ @media (min-width: $medium-size) {
14
+ display: flex;
15
+ justify-content: space-between;
16
+ align-items: flex-start;
17
+ }
18
+
19
+ .floorplan-column-left {
20
+ h3, h4 {
21
+ text-align: left;
22
+ font-family: $serif-font;
23
+ margin: .5rem 0;
24
+ }
25
+
26
+ h3 {
27
+ font-weight: 400;
28
+ font-size: 2rem;
29
+ text-transform: capitalize;
30
+
31
+ }
32
+
33
+ h4 {
34
+ color: $secondary-color;
35
+ text-transform: none;
36
+ }
37
+
38
+ .floorplan--description {
39
+ font-family: $sans-serif-font;
40
+ //color: $tertiary-background-color;
41
+ font-weight: 300;
42
+ }
43
+
44
+ .floorplan--featured {
45
+ font-family: $sans-serif-font;
46
+ letter-spacing: .05rem;
47
+ font-size: 1.1rem;
48
+ .muncher-button{
49
+ font-family: $sans-serif-font;
50
+ letter-spacing: .05rem;
51
+ font-size: 1.1rem;
52
+ text-transform: capitalize;
53
+ text-decoration: underline;
54
+ }
55
+ }
56
+ }
57
+
58
+ .floorplan-column-right {
59
+ display: flex;
60
+ justify-content: space-evenly;
61
+ align-content: space-evenly;
62
+ align-items: center;
63
+ flex-direction: column;
64
+
65
+ > .muncher-button, .muncher-dropdown > .muncher-button {
66
+ margin: .5rem;
67
+ min-width: 10rem;
68
+ height: 3rem;
69
+ text-transform: capitalize;
70
+ }
71
+
72
+ }
73
+ }
74
+
75
+ }
@@ -0,0 +1,88 @@
1
+ @import 'src/assets/variables';
2
+
3
+ .section-floorplan {
4
+ padding: 0 0 .5rem;
5
+ background: $tertiary-color;
6
+
7
+ .floorplan--cards {
8
+ padding: 0;
9
+ margin: 1rem 0;
10
+ @media (min-width: $large-size) {
11
+ -webkit-column-count: 2;
12
+ column-count: 2;
13
+ column-gap: 1rem;
14
+ > .section-card {
15
+ margin-top: 0;
16
+ }
17
+ }
18
+ }
19
+
20
+ .section-card {
21
+ padding: 0;
22
+ margin: 3vw;
23
+ width: 94vw;
24
+
25
+ @media (min-width: $large-size) {
26
+ margin: 1rem 0;
27
+ width: 100%;
28
+ break-inside: avoid-column;
29
+ -webkit-column-break-inside: avoid;
30
+ }
31
+
32
+ p {
33
+ font-size: 1rem;
34
+ letter-spacing: .03rem;
35
+ line-height: 1.5rem;
36
+ font-weight: 300;
37
+ }
38
+
39
+ ul {
40
+ column-count: 1;
41
+ padding-top: 0;
42
+
43
+ li {
44
+ font-size: 1rem;
45
+ letter-spacing: .03rem;
46
+ line-height: 1.5rem;
47
+ font-weight: 300;
48
+ }
49
+ }
50
+
51
+ .muncher-paper {
52
+ margin: 0;
53
+ }
54
+
55
+ .floorplan-card--featured, h5 {
56
+ color: $primary-color;
57
+ margin: .3rem 0;
58
+ text-transform: capitalize;
59
+ font-weight: 400;
60
+ }
61
+
62
+ h5 {
63
+ padding: 0;
64
+ text-align: left;
65
+ font-size: 1.1rem;
66
+ }
67
+ }
68
+
69
+ .contact-card {
70
+ text-align: center;
71
+
72
+ p {
73
+ font-size: 1.6rem;
74
+ font-family: $serif-font;
75
+ letter-spacing: .04rem;
76
+ line-height: 2rem;
77
+ font-weight: 400;
78
+ }
79
+
80
+ a {
81
+ color: $primary-background-color;
82
+ }
83
+ }
84
+
85
+ .muncher-button--tertiary {
86
+ color: $primary-background-color;
87
+ }
88
+ }
@@ -1,8 +1,18 @@
1
1
  import { CurrentFilters, FloorplanFilters, SortBy } from "../data/FloorplanFilters";
2
- import { FloorplanDetails } from "../data/Floorplan";
2
+ import { Floorplan, FloorplanDetails, FloorplanSpotlight, FloorplanVariation, SimilarFloorplan, Testimonial } from "../data/Floorplan";
3
3
  import { PropertyId } from "../../property/data/Property";
4
4
  export declare const convertToHttps: (url: string) => string;
5
5
  export declare const getFloorplans: (propertyId: PropertyId) => Promise<FloorplanDetails[]>;
6
6
  export declare const sortAndFilter: (floorplans: FloorplanDetails[], currentFilters: CurrentFilters) => FloorplanDetails[];
7
7
  export declare const sortFloorplans: (floorplans: FloorplanDetails[], sortBy: SortBy) => FloorplanDetails[];
8
8
  export declare const filtersFrom: (floorplans: FloorplanDetails[]) => FloorplanFilters;
9
+ export declare const getFeaturedFloorplans: () => Promise<FloorplanSpotlight[]>;
10
+ export declare const getAllActiveFloorplans: () => Promise<FloorplanDetails[]>;
11
+ export declare const getFloorplan: (floorplanId: string) => Promise<Floorplan>;
12
+ export declare const getSimilarFloorplans: (floorplanId: string) => Promise<SimilarFloorplan[]>;
13
+ export declare const getFloorplanVariations: (floorplanId: string) => Promise<FloorplanVariation[]>;
14
+ export declare const isFloorplanAvailable: (floorplan: Floorplan) => boolean;
15
+ export declare const getTestimonials: (floorplanId: string) => Promise<Testimonial[]>;
16
+ export declare const permittedPets: (floorplan: Floorplan) => string[];
17
+ export declare const notPermittedPets: (floorplan: Floorplan) => string[];
18
+ export declare const petPolicy: (floorplan: Floorplan) => string | undefined;