47658.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366
  1. exports.id = 47658;
  2. exports.ids = [47658];
  3. exports.modules = {
  4. /***/ 24868:
  5. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  6. "use strict";
  7. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  8. /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
  9. /* harmony export */ });
  10. /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(16689);
  11. /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
  12. var _path;
  13. function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
  14. var SvgChevronDown = function SvgChevronDown(props) {
  15. return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("svg", _extends({
  16. width: 15,
  17. height: 15,
  18. viewBox: "0 0 15 15",
  19. fill: "none",
  20. xmlns: "http://www.w3.org/2000/svg"
  21. }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", {
  22. d: "M3.135 6.158a.5.5 0 0 1 .707-.023L7.5 9.565l3.658-3.43a.5.5 0 0 1 .684.73l-4 3.75a.5.5 0 0 1-.684 0l-4-3.75a.5.5 0 0 1-.023-.707Z",
  23. fill: "currentColor",
  24. fillRule: "evenodd",
  25. clipRule: "evenodd"
  26. })));
  27. };
  28. /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SvgChevronDown);
  29. /***/ }),
  30. /***/ 80275:
  31. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  32. "use strict";
  33. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  34. /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
  35. /* harmony export */ });
  36. /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(16689);
  37. /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
  38. var _path;
  39. function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
  40. var SvgMenuMoreHoriz = function SvgMenuMoreHoriz(props) {
  41. return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("svg", _extends({
  42. width: 24,
  43. height: 24,
  44. viewBox: "0 0 24 24",
  45. fill: "currentColor",
  46. xmlns: "http://www.w3.org/2000/svg"
  47. }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", {
  48. d: "M12 13a1 1 0 1 0 0-2 1 1 0 0 0 0 2ZM19 13a1 1 0 1 0 0-2 1 1 0 0 0 0 2ZM5 13a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z",
  49. stroke: "currentColor",
  50. strokeWidth: 2,
  51. strokeLinecap: "round",
  52. strokeLinejoin: "round"
  53. })));
  54. };
  55. /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SvgMenuMoreHoriz);
  56. /***/ }),
  57. /***/ 81318:
  58. /***/ ((module) => {
  59. // Exports
  60. module.exports = {
  61. "sorter": "CollectionSorter_sorter__FUf1K",
  62. "sortTrigger": "CollectionSorter_sortTrigger__C17Do",
  63. "itemIcon": "CollectionSorter_itemIcon___37wK"
  64. };
  65. /***/ }),
  66. /***/ 23848:
  67. /***/ ((module) => {
  68. // Exports
  69. module.exports = {
  70. "pageContainer": "index_pageContainer__Pxtn3",
  71. "loadingContainer": "index_loadingContainer__WEZFc",
  72. "flow": "index_flow__rCTR5",
  73. "flowItem": "index_flowItem__GnXWz",
  74. "additionalVerticalGap": "index_additionalVerticalGap__nzYz6",
  75. "fullWidth": "index_fullWidth__1n4ux"
  76. };
  77. /***/ }),
  78. /***/ 56321:
  79. /***/ ((module, __webpack_exports__, __webpack_require__) => {
  80. "use strict";
  81. __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
  82. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  83. /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
  84. /* harmony export */ });
  85. /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20997);
  86. /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
  87. /* harmony import */ var _CollectionSorter_module_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(81318);
  88. /* harmony import */ var _CollectionSorter_module_scss__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_CollectionSorter_module_scss__WEBPACK_IMPORTED_MODULE_4__);
  89. /* harmony import */ var _icons_chevron_down_svg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(24868);
  90. /* harmony import */ var _utils_eventLogger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(55943);
  91. /* harmony import */ var src_components_dls_PopoverMenu_PopoverMenu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(99163);
  92. var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_utils_eventLogger__WEBPACK_IMPORTED_MODULE_2__, src_components_dls_PopoverMenu_PopoverMenu__WEBPACK_IMPORTED_MODULE_3__]);
  93. ([_utils_eventLogger__WEBPACK_IMPORTED_MODULE_2__, src_components_dls_PopoverMenu_PopoverMenu__WEBPACK_IMPORTED_MODULE_3__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
  94. const CollectionSorter = ({ options , selectedOptionId , onChange , isSingleCollection , collectionId =null , })=>{
  95. const selectedOption = options.find((option)=>option.id === selectedOptionId);
  96. const onOpenChange = (isOpen)=>{
  97. const eventData = {
  98. collectionId
  99. };
  100. if (isSingleCollection) {
  101. if (isOpen) {
  102. (0,_utils_eventLogger__WEBPACK_IMPORTED_MODULE_2__/* .logEvent */ .Kz)("collection_sorter_opened", eventData);
  103. } else {
  104. (0,_utils_eventLogger__WEBPACK_IMPORTED_MODULE_2__/* .logEvent */ .Kz)("collection_sorter_closed", eventData);
  105. }
  106. } else if (isOpen) {
  107. (0,_utils_eventLogger__WEBPACK_IMPORTED_MODULE_2__/* .logEvent */ .Kz)("collections_sorter_opened", eventData);
  108. } else {
  109. (0,_utils_eventLogger__WEBPACK_IMPORTED_MODULE_2__/* .logEvent */ .Kz)("collections_sorter_closed", eventData);
  110. }
  111. };
  112. return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
  113. className: (_CollectionSorter_module_scss__WEBPACK_IMPORTED_MODULE_4___default().sorter),
  114. children: /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(src_components_dls_PopoverMenu_PopoverMenu__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z, {
  115. trigger: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("span", {
  116. className: (_CollectionSorter_module_scss__WEBPACK_IMPORTED_MODULE_4___default().sortTrigger),
  117. children: [
  118. selectedOption.label,
  119. /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("span", {
  120. className: (_CollectionSorter_module_scss__WEBPACK_IMPORTED_MODULE_4___default().itemIcon),
  121. children: /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_icons_chevron_down_svg__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, {})
  122. })
  123. ]
  124. }),
  125. onOpenChange: onOpenChange,
  126. children: options.map((option)=>/*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(src_components_dls_PopoverMenu_PopoverMenu__WEBPACK_IMPORTED_MODULE_3__/* ["default"].Item */ .Z.Item, {
  127. shouldCloseMenuAfterClick: true,
  128. onClick: ()=>onChange(option.id),
  129. children: option.label
  130. }, option.id))
  131. })
  132. });
  133. };
  134. /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (CollectionSorter);
  135. __webpack_async_result__();
  136. } catch(e) { __webpack_async_result__(e); } });
  137. /***/ }),
  138. /***/ 11817:
  139. /***/ ((module, __webpack_exports__, __webpack_require__) => {
  140. "use strict";
  141. __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
  142. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  143. /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
  144. /* harmony export */ });
  145. /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20997);
  146. /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
  147. /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16689);
  148. /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
  149. /* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(77843);
  150. /* harmony import */ var _dls_Modal_Modal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21948);
  151. var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_dls_Modal_Modal__WEBPACK_IMPORTED_MODULE_3__]);
  152. _dls_Modal_Modal__WEBPACK_IMPORTED_MODULE_3__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
  153. /* eslint-disable react/no-array-index-key */
  154. const ConfirmationModal = ()=>{
  155. const { onCancel , onConfirm , state } = (0,_hooks__WEBPACK_IMPORTED_MODULE_2__/* .useConfirmModal */ .t)();
  156. const actions = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{
  157. const returnedActions = [];
  158. if (state.confirmText && onConfirm) {
  159. returnedActions.push({
  160. label: state.confirmText,
  161. onClick: onConfirm
  162. });
  163. }
  164. if (state.cancelText && onCancel) {
  165. returnedActions.push({
  166. label: state.cancelText,
  167. onClick: onCancel,
  168. isCloseAction: true
  169. });
  170. }
  171. return returnedActions;
  172. }, [
  173. onCancel,
  174. onConfirm,
  175. state.cancelText,
  176. state.confirmText
  177. ]);
  178. const onClose = ()=>{
  179. if (onCancel) {
  180. onCancel();
  181. }
  182. };
  183. return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_dls_Modal_Modal__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z, {
  184. isOpen: !!state.open,
  185. onClickOutside: onClose,
  186. onEscapeKeyDown: onClose,
  187. children: [
  188. /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_dls_Modal_Modal__WEBPACK_IMPORTED_MODULE_3__/* ["default"].Body */ .Z.Body, {
  189. children: [
  190. /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_dls_Modal_Modal__WEBPACK_IMPORTED_MODULE_3__/* ["default"].Header */ .Z.Header, {
  191. children: [
  192. /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_dls_Modal_Modal__WEBPACK_IMPORTED_MODULE_3__/* ["default"].Title */ .Z.Title, {
  193. children: state.title
  194. }),
  195. /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_dls_Modal_Modal__WEBPACK_IMPORTED_MODULE_3__/* ["default"].Subtitle */ .Z.Subtitle, {
  196. children: state.subtitle
  197. })
  198. ]
  199. }),
  200. /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("p", {
  201. children: state.description
  202. })
  203. ]
  204. }),
  205. /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_dls_Modal_Modal__WEBPACK_IMPORTED_MODULE_3__/* ["default"].Footer */ .Z.Footer, {
  206. children: actions.map((action, index)=>{
  207. const { onClick , label } = action;
  208. if (action.isCloseAction) {
  209. return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_dls_Modal_Modal__WEBPACK_IMPORTED_MODULE_3__/* ["default"].CloseAction */ .Z.CloseAction, {
  210. onClick: onClick,
  211. children: label
  212. }, index);
  213. }
  214. return /*#__PURE__*/ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_dls_Modal_Modal__WEBPACK_IMPORTED_MODULE_3__/* ["default"].Action */ .Z.Action, {
  215. onClick: onClick,
  216. children: label
  217. }, index);
  218. })
  219. })
  220. ]
  221. });
  222. };
  223. /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ConfirmationModal);
  224. __webpack_async_result__();
  225. } catch(e) { __webpack_async_result__(e); } });
  226. /***/ }),
  227. /***/ 77843:
  228. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  229. "use strict";
  230. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  231. /* harmony export */ "N": () => (/* binding */ useConfirm),
  232. /* harmony export */ "t": () => (/* binding */ useConfirmModal)
  233. /* harmony export */ });
  234. /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(16689);
  235. /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
  236. let memoryState = {
  237. open: false
  238. };
  239. const updateState = (newState)=>{
  240. memoryState = newState;
  241. listeners.forEach((listener)=>listener(memoryState));
  242. };
  243. const listeners = [];
  244. /**
  245. * When this hook (useConfirmationModalInternal) is called.
  246. * We set `useState` in the component. So that it will trigger rerender when the state changes
  247. *
  248. * `setState` is registered to a global `listeners`.
  249. * Every time we `updateState`, this will update the state in every components that subscribe
  250. * to the changes (listeners)
  251. */ const useConfirmModal = ()=>{
  252. const { 0: state , 1: setState } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(memoryState);
  253. (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{
  254. listeners.push(setState);
  255. return ()=>{
  256. const index = listeners.indexOf(setState);
  257. if (index > -1) {
  258. listeners.splice(index, 1);
  259. }
  260. };
  261. }, [
  262. state
  263. ]);
  264. const closeConfirm = ()=>{
  265. updateState({
  266. ...state,
  267. open: false
  268. });
  269. };
  270. const onConfirm = ()=>{
  271. closeConfirm();
  272. resolveCallback(true);
  273. };
  274. const onCancel = ()=>{
  275. closeConfirm();
  276. resolveCallback(false);
  277. };
  278. return {
  279. state,
  280. onCancel,
  281. onConfirm
  282. };
  283. };
  284. let resolveCallback;
  285. /**
  286. * This hook is meant to be consumed by other components
  287. * Check ConfirmationModal.stories.tsx for an example
  288. *
  289. * This hook return a callback, that's when called return a Promise<boolean>
  290. * if the user click "confirm", boolean will be true, otherwise it will be false
  291. */ const useConfirm = ()=>{
  292. const confirm = (state)=>{
  293. updateState({
  294. ...state,
  295. open: true
  296. });
  297. return new Promise((res)=>{
  298. resolveCallback = res;
  299. });
  300. };
  301. return confirm;
  302. };
  303. /***/ }),
  304. /***/ 6059:
  305. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  306. "use strict";
  307. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  308. /* harmony export */ "l": () => (/* binding */ CollectionDetailSortOption),
  309. /* harmony export */ "r": () => (/* binding */ CollectionListSortOption)
  310. /* harmony export */ });
  311. var CollectionDetailSortOption;
  312. (function(CollectionDetailSortOption) {
  313. CollectionDetailSortOption["RecentlyAdded"] = "recentlyAdded";
  314. CollectionDetailSortOption["VerseKey"] = "verseKey";
  315. })(CollectionDetailSortOption || (CollectionDetailSortOption = {}));
  316. var CollectionListSortOption;
  317. (function(CollectionListSortOption) {
  318. CollectionListSortOption["RecentlyUpdated"] = "recentlyUpdated";
  319. CollectionListSortOption["Alphabetical"] = "alphabetical";
  320. })(CollectionListSortOption || (CollectionListSortOption = {}));
  321. /***/ })
  322. };
  323. ;
  324. //# sourceMappingURL=47658.js.map