(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([[931],{
/***/ 4176:
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 1462))
/***/ }),
/***/ 1462:
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
// ESM COMPAT FLAG
__webpack_require__.r(__webpack_exports__);
// EXPORTS
__webpack_require__.d(__webpack_exports__, {
"default": function() { return /* binding */ ScheduleTable; }
});
// EXTERNAL MODULE: ./node_modules/next/dist/compiled/react/jsx-runtime.js
var jsx_runtime = __webpack_require__(7437);
// EXTERNAL MODULE: ./node_modules/next/dist/compiled/react/index.js
var react = __webpack_require__(2265);
;// CONCATENATED MODULE: ./components/schedule/schedule-booker.js
function ScheduleBooker(param) {
let { link, type } = param;
return /*#__PURE__*/ (0,jsx_runtime.jsx)("a", {
className: "btn btn-".concat(type),
href: link,
children: type
});
}
;// CONCATENATED MODULE: ./components/schedule/schedule-class.js
function ScheduleClass(param) {
let { scheduledClass } = param;
const startDate = new Date(scheduledClass.dateTime);
const startHours = startDate.getHours() > 12 ? startDate.getHours() - 12 : startDate.getHours();
const startMinutes = startDate.getMinutes() < 10 ? "0".concat(startDate.getMinutes()) : startDate.getMinutes();
const startAm = startDate.getHours() > 11 ? "pm" : "am";
const start = "".concat(startHours, ":").concat(startMinutes).concat(startAm);
const endDate = new Date(scheduledClass.dateTime);
endDate.setMinutes(startDate.getMinutes() + scheduledClass.duration);
const endHours = endDate.getHours() > 12 ? endDate.getHours() - 12 : endDate.getHours();
const endMinutes = endDate.getMinutes() < 10 ? "0".concat(endDate.getMinutes()) : endDate.getMinutes();
const endAm = endDate.getHours() > 11 ? "pm" : "am";
const end = "".concat(endHours, ":").concat(endMinutes).concat(endAm);
const remainingSpots = Math.max(scheduledClass.capacity - scheduledClass.ticketsSold, 0);
let buttonType = "reserve";
let classClass = "class";
let past = false;
if (remainingSpots === 0) {
classClass += " class-full";
buttonType = "waitlist";
}
if (Date.now() > startDate) {
classClass += " class-past";
past = true;
}
const teacherNames = scheduledClass.teacher.split(" ");
if (teacherNames[1] === "") teacherNames.splice(1, 1);
const teacher = "".concat(teacherNames[0], " ").concat(teacherNames[1][0], ".");
if (scheduledClass.isCancelled === true) {
return null;
}
return /*#__PURE__*/ (0,jsx_runtime.jsxs)("li", {
className: classClass,
"data-coach": scheduledClass.teacherId,
"data-class": "10041",
children: [
/*#__PURE__*/ (0,jsx_runtime.jsxs)("h4", {
className: "class-name",
children: [
scheduledClass.title,
/*#__PURE__*/ (0,jsx_runtime.jsx)("span", {
className: "tip",
children: /*#__PURE__*/ (0,jsx_runtime.jsx)("svg", {
className: "svg-inline--fa fa-question-circle fa-w-16",
"aria-hidden": "true",
focusable: "false",
"data-prefix": "far",
"data-icon": "question-circle",
role: "img",
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 512 512",
"data-fa-i2svg": "",
children: /*#__PURE__*/ (0,jsx_runtime.jsx)("path", {
fill: "currentColor",
d: "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z"
})
})
})
]
}),
/*#__PURE__*/ (0,jsx_runtime.jsxs)("div", {
className: "class-time",
children: [
start,
" - ",
end,
" ",
/*#__PURE__*/ (0,jsx_runtime.jsxs)("span", {
className: "class-duration sm muted",
children: [
"(",
scheduledClass.duration,
" min)"
]
})
]
}),
/*#__PURE__*/ (0,jsx_runtime.jsx)("div", {
className: "class-teacher",
children: teacher
}),
/*#__PURE__*/ (0,jsx_runtime.jsx)("div", {
className: "class-status",
children: remainingSpots <= 2 && remainingSpots > 0 && !past ? "".concat(remainingSpots, " ").concat(remainingSpots === 1 ? "spot" : "spots", " left") : ""
}),
/*#__PURE__*/ (0,jsx_runtime.jsx)("div", {
className: "class-cta",
children: /*#__PURE__*/ (0,jsx_runtime.jsx)(ScheduleBooker, {
link: scheduledClass.link,
type: buttonType
})
})
]
});
}
;// CONCATENATED MODULE: ./components/schedule/schedule-day.js
/* __next_internal_client_entry_do_not_use__ default auto */
function ScheduleDay(param) {
let { scheduledDay } = param;
return /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", {
className: "schedule-day",
children: [
/*#__PURE__*/ (0,jsx_runtime.jsx)("div", {
className: "schedule-day-header",
children: /*#__PURE__*/ (0,jsx_runtime.jsxs)("h3", {
children: [
scheduledDay.dayOfWeek,
" ",
/*#__PURE__*/ (0,jsx_runtime.jsxs)("strong", {
children: [
scheduledDay.date,
"/",
scheduledDay.month + 1
]
})
]
})
}),
/*#__PURE__*/ (0,jsx_runtime.jsx)("ul", {
className: "classes",
children: scheduledDay.classes.map((c, i)=>/*#__PURE__*/ (0,jsx_runtime.jsx)(ScheduleClass, {
scheduledClass: c
}, i))
})
]
});
}
;// CONCATENATED MODULE: ./components/schedule/schedule-table.js
/* __next_internal_client_entry_do_not_use__ default auto */
function getDayOfWeek(date) {
const days = [
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
];
return days[date];
}
function ScheduleTable(param) {
let {} = param;
const [events, setEvents] = (0,react.useState)(null);
const [isLoading, setLoading] = (0,react.useState)(true);
const s = new Array();
const hostId = 24392;
const token = "d0e9e93640";
(0,react.useEffect)(()=>{
fetch("https://api.withribbon.com/api/v1/Events?hostId=".concat(hostId, "&token=").concat(token)).then((res)=>res.json()).then((events)=>{
setEvents(events);
setLoading(false);
});
}, []);
if (isLoading) return /*#__PURE__*/ (0,jsx_runtime.jsx)("p", {
children: "Loading..."
});
if (!events) {
return /*#__PURE__*/ (0,jsx_runtime.jsx)("p", {
children: "No events"
});
} else {
// Initialise the dates for the schedule view
// Classes are empty now, but we're about to push them in
const date = new Date();
Array(7).fill(1).map((i)=>{
s.push({
date: date.getDate(),
month: date.getMonth(),
dayOfWeek: getDayOfWeek(date.getDay()),
classes: []
});
date.setDate(date.getDate() + i);
});
const startDate = new Date();
const endDate = new Date();
startDate.setDate(startDate.getDate() - 1);
endDate.setDate(startDate.getDate() + 7);
// Remove any events from outside our date range
events.filter((e)=>{
const eDate = new Date(e.dateTime);
return eDate > startDate && eDate < endDate;
}).map((e)=>{
const eDate = new Date(e.dateTime);
s.forEach((t)=>{
if (eDate.getDate() === t.date && eDate.getMonth() === t.month) {
t.classes.push(e);
}
});
});
}
return /*#__PURE__*/ (0,jsx_runtime.jsx)("div", {
id: "scheduleContentTable",
className: "schedule schedule-grid",
children: s.map((scheduledDay, i)=>/*#__PURE__*/ (0,jsx_runtime.jsx)(ScheduleDay, {
scheduledDay: scheduledDay
}, i))
});
}
/***/ }),
/***/ 622:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
/*
React
react-jsx-runtime.production.min.js
Copyright (c) Meta Platforms, Inc. and affiliates.
This source code is licensed under the MIT license found in the
LICENSE file in the root directory of this source tree.
*/
var f=__webpack_require__(2265),k=Symbol.for("react.element"),l=Symbol.for("react.fragment"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};
function q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=""+g);void 0!==a.key&&(e=""+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;
//# sourceMappingURL=react-jsx-runtime.production.min.js.map
/***/ }),
/***/ 7437:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
"use strict";
if (true) {
module.exports = __webpack_require__(622);
} else {}
/***/ })
},
/******/ function(__webpack_require__) { // webpackRuntimeModules
/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
/******/ var __webpack_exports__ = (__webpack_exec__(4176));
/******/ _N_E = __webpack_exports__;
/******/ }
]);