@cuemath/leap 3.5.52-as1 → 3.5.53-j1

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 (127) hide show
  1. package/dist/features/homework/homework-card.js +122 -121
  2. package/dist/features/homework/homework-card.js.map +1 -1
  3. package/dist/features/milestone/create/comps/add-custom-chapter/add-custom-chapter.js +66 -61
  4. package/dist/features/milestone/create/comps/add-custom-chapter/add-custom-chapter.js.map +1 -1
  5. package/dist/features/milestone/create/comps/add-custom-chapter/course-catalog.js +56 -55
  6. package/dist/features/milestone/create/comps/add-custom-chapter/course-catalog.js.map +1 -1
  7. package/dist/features/milestone/create/comps/add-custom-chapter/search-chapter/search-chapters.js +32 -25
  8. package/dist/features/milestone/create/comps/add-custom-chapter/search-chapter/search-chapters.js.map +1 -1
  9. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapter-item.js +16 -15
  10. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapter-item.js.map +1 -1
  11. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapters.js +17 -10
  12. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapters.js.map +1 -1
  13. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/tags-render.js +6 -6
  14. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/tags-render.js.map +1 -1
  15. package/dist/features/milestone/create/comps/body-layout/body-layout.js +30 -29
  16. package/dist/features/milestone/create/comps/body-layout/body-layout.js.map +1 -1
  17. package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step.js +77 -74
  18. package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step.js.map +1 -1
  19. package/dist/features/milestone/create/comps/goal-completion-date-selector/goal-completion-date-selector.js +82 -79
  20. package/dist/features/milestone/create/comps/goal-completion-date-selector/goal-completion-date-selector.js.map +1 -1
  21. package/dist/features/milestone/create/milestone-create-styled.js +8 -8
  22. package/dist/features/milestone/create/milestone-create-styled.js.map +1 -1
  23. package/dist/features/milestone/create/milestone-create.js +48 -46
  24. package/dist/features/milestone/create/milestone-create.js.map +1 -1
  25. package/dist/features/milestone/edit/goal-draft-edit-sync.js +26 -0
  26. package/dist/features/milestone/edit/goal-draft-edit-sync.js.map +1 -0
  27. package/dist/features/milestone/edit/goal-drafts/goal-draft-edit-container.js +72 -66
  28. package/dist/features/milestone/edit/goal-drafts/goal-draft-edit-container.js.map +1 -1
  29. package/dist/features/milestone/edit/hooks/use-milestone-edit-sync.js +82 -0
  30. package/dist/features/milestone/edit/hooks/use-milestone-edit-sync.js.map +1 -0
  31. package/dist/features/milestone/milestone-list-container/hooks/use-milestone-list-sync.js +49 -0
  32. package/dist/features/milestone/milestone-list-container/hooks/use-milestone-list-sync.js.map +1 -0
  33. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js +109 -105
  34. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js.map +1 -1
  35. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js +2 -2
  36. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js.map +1 -1
  37. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs-styled.js +21 -16
  38. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs-styled.js.map +1 -1
  39. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js +106 -98
  40. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js.map +1 -1
  41. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js +136 -117
  42. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js.map +1 -1
  43. package/dist/features/milestone/milestone-list-container/milestone-list-container.js +96 -92
  44. package/dist/features/milestone/milestone-list-container/milestone-list-container.js.map +1 -1
  45. package/dist/features/milestone/milestone-list-container/milestone-list-sync.js +25 -0
  46. package/dist/features/milestone/milestone-list-container/milestone-list-sync.js.map +1 -0
  47. package/dist/features/milestone/milestone-resources/resources-assign/added-resource-and-filters.js +78 -81
  48. package/dist/features/milestone/milestone-resources/resources-assign/added-resource-and-filters.js.map +1 -1
  49. package/dist/features/milestone/milestone-resources/resources-assign/comps/filter-item/filter-item.js +28 -25
  50. package/dist/features/milestone/milestone-resources/resources-assign/comps/filter-item/filter-item.js.map +1 -1
  51. package/dist/features/milestone/milestone-resources/resources-assign/comps/resource-item/resource-item.js +39 -33
  52. package/dist/features/milestone/milestone-resources/resources-assign/comps/resource-item/resource-item.js.map +1 -1
  53. package/dist/features/milestone/milestone-resources/resources-assign/hooks/use-resource-assign-sync.js +50 -0
  54. package/dist/features/milestone/milestone-resources/resources-assign/hooks/use-resource-assign-sync.js.map +1 -0
  55. package/dist/features/milestone/milestone-resources/resources-assign/resource-assign-sync.js +25 -0
  56. package/dist/features/milestone/milestone-resources/resources-assign/resource-assign-sync.js.map +1 -0
  57. package/dist/features/milestone/milestone-resources/resources-assign/resource-items/resource-items.js +43 -53
  58. package/dist/features/milestone/milestone-resources/resources-assign/resource-items/resource-items.js.map +1 -1
  59. package/dist/features/milestone/milestone-resources/resources-assign/resources-assign.js +218 -174
  60. package/dist/features/milestone/milestone-resources/resources-assign/resources-assign.js.map +1 -1
  61. package/dist/features/milestone/milestone-resources/resources-assign/store/resource-assign-store.js +198 -0
  62. package/dist/features/milestone/milestone-resources/resources-assign/store/resource-assign-store.js.map +1 -0
  63. package/dist/features/milestone/milestone-resources/resources-list/resources-list.js +69 -67
  64. package/dist/features/milestone/milestone-resources/resources-list/resources-list.js.map +1 -1
  65. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js +46 -45
  66. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js.map +1 -1
  67. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view.js +34 -32
  68. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view.js.map +1 -1
  69. package/dist/features/milestone/milestone-tests/tests-creation/hooks/use-tests-creation-sync.js +52 -0
  70. package/dist/features/milestone/milestone-tests/tests-creation/hooks/use-tests-creation-sync.js.map +1 -0
  71. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/chapter-selection/chapter-selection.js +51 -41
  72. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/chapter-selection/chapter-selection.js.map +1 -1
  73. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/difficulty-and-duration-selection.js +85 -71
  74. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/difficulty-and-duration-selection.js.map +1 -1
  75. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview-styled.js +5 -5
  76. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview-styled.js.map +1 -1
  77. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.js +36 -26
  78. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.js.map +1 -1
  79. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-sync.js +25 -0
  80. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-sync.js.map +1 -0
  81. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-types.js +5 -0
  82. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-types.js.map +1 -0
  83. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation.js +150 -89
  84. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation.js.map +1 -1
  85. package/dist/features/sheet-v2/resource-list/resource-list.js +26 -24
  86. package/dist/features/sheet-v2/resource-list/resource-list.js.map +1 -1
  87. package/dist/features/trial-session/comps/learning-plan/index.js +218 -91
  88. package/dist/features/trial-session/comps/learning-plan/index.js.map +1 -1
  89. package/dist/features/trial-session/comps/learning-plan/learning-plan-styled.js +7 -6
  90. package/dist/features/trial-session/comps/learning-plan/learning-plan-styled.js.map +1 -1
  91. package/dist/features/trial-session/hooks/use-learning-plan-scroll-sync.js +75 -0
  92. package/dist/features/trial-session/hooks/use-learning-plan-scroll-sync.js.map +1 -0
  93. package/dist/features/trial-session/hooks/use-trial-session-navigation.js +125 -115
  94. package/dist/features/trial-session/hooks/use-trial-session-navigation.js.map +1 -1
  95. package/dist/features/trial-session/trial-session-types.js +3 -2
  96. package/dist/features/trial-session/trial-session-types.js.map +1 -1
  97. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js +69 -54
  98. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js.map +1 -1
  99. package/dist/features/worksheet/worksheet/worksheet-types.js.map +1 -1
  100. package/dist/features/worksheet/worksheet/worksheet.js +44 -33
  101. package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
  102. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js +25 -22
  103. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js.map +1 -1
  104. package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js +48 -44
  105. package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js.map +1 -1
  106. package/dist/features/worksheet/worksheet-preview/worksheet-preview.js +2 -2
  107. package/dist/features/worksheet/worksheet-preview/worksheet-preview.js.map +1 -1
  108. package/dist/index.d.ts +138 -2
  109. package/dist/node_modules/decode-uri-component/index.js.map +1 -0
  110. package/dist/node_modules/query-string/base.js +1 -1
  111. package/dist/node_modules/uuid/dist/esm-browser/native.js +7 -0
  112. package/dist/node_modules/uuid/dist/esm-browser/native.js.map +1 -0
  113. package/dist/node_modules/uuid/dist/esm-browser/rng.js +3 -2
  114. package/dist/node_modules/uuid/dist/esm-browser/rng.js.map +1 -1
  115. package/dist/node_modules/uuid/dist/esm-browser/stringify.js +6 -10
  116. package/dist/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -1
  117. package/dist/node_modules/uuid/dist/esm-browser/v4.js +12 -9
  118. package/dist/node_modules/uuid/dist/esm-browser/v4.js.map +1 -1
  119. package/package.json +1 -1
  120. package/dist/features/trial-session/comps/learning-plan/use-learning-plan-scroll-sync.js +0 -37
  121. package/dist/features/trial-session/comps/learning-plan/use-learning-plan-scroll-sync.js.map +0 -1
  122. package/dist/node_modules/query-string/node_modules/decode-uri-component/index.js.map +0 -1
  123. package/dist/node_modules/uuid/dist/esm-browser/regex.js +0 -5
  124. package/dist/node_modules/uuid/dist/esm-browser/regex.js.map +0 -1
  125. package/dist/node_modules/uuid/dist/esm-browser/validate.js +0 -8
  126. package/dist/node_modules/uuid/dist/esm-browser/validate.js.map +0 -1
  127. /package/dist/node_modules/{query-string/node_modules/decode-uri-component → decode-uri-component}/index.js +0 -0
@@ -0,0 +1,50 @@
1
+ import { useRef as g, useMemo as i, useCallback as l, useEffect as h } from "react";
2
+ import { useMessageBrokerChannel as b } from "@cuemath/cue-message-broker";
3
+ const R = ({
4
+ channelId: r,
5
+ isTeacher: n
6
+ }) => {
7
+ const o = g(void 0), f = i(
8
+ () => ({
9
+ channelId: r,
10
+ ttl: 1
11
+ }),
12
+ [r]
13
+ ), { channelStatus: u, setChannelMetadata: s, channelMetadata: a, channel: e } = b({
14
+ channelOptions: f,
15
+ metadataRequired: !0,
16
+ enabled: r !== void 0
17
+ }), d = i(() => {
18
+ if (!(n || !a))
19
+ return a;
20
+ }, [n, a]), S = l(
21
+ (t) => {
22
+ if (!n || !s) return;
23
+ const c = {
24
+ pageNumber: t.pageNumber,
25
+ searchValue: t.searchValue,
26
+ searchQuery: t.searchQuery,
27
+ selectedResourceItems: t.selectedResourceItems || [],
28
+ selectedTab: t.selectedTab,
29
+ filterExpansion: t.filterExpansion
30
+ }, p = JSON.stringify(c), y = JSON.stringify(o.current);
31
+ p !== y && (o.current = c, s(c));
32
+ },
33
+ [n, s]
34
+ ), m = l(() => {
35
+ e && (e.removeChannelMetadata(), setTimeout(() => {
36
+ e.destroyChannel();
37
+ }, 500));
38
+ }, [e]);
39
+ return h(() => {
40
+ !u && e && e.init();
41
+ }, [e, u]), {
42
+ syncedState: d,
43
+ setSyncState: S,
44
+ closeChannel: m
45
+ };
46
+ };
47
+ export {
48
+ R as useResourceAssignSync
49
+ };
50
+ //# sourceMappingURL=use-resource-assign-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-resource-assign-sync.js","sources":["../../../../../../src/features/milestone/milestone-resources/resources-assign/hooks/use-resource-assign-sync.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport { useMessageBrokerChannel } from '@cuemath/cue-message-broker';\n\nimport type { IEPResourceState } from '../resources-assign-type';\n\ninterface IUseResourceAssignSyncParams {\n channelId: string;\n isTeacher: boolean;\n initialState?: Partial<IEPResourceState>;\n}\n\ninterface IUseResourceAssignSync {\n syncedState: Partial<IEPResourceState> | undefined;\n setSyncState: (state: Partial<IEPResourceState>) => void;\n closeChannel: () => void;\n}\n\nexport const useResourceAssignSync = ({\n channelId,\n isTeacher,\n}: IUseResourceAssignSyncParams): IUseResourceAssignSync => {\n const prevStateRef = useRef<Partial<IEPResourceState> | undefined>(undefined);\n\n const channelOptions = useMemo(\n () => ({\n channelId,\n ttl: 1,\n }),\n [channelId],\n );\n\n const { channelStatus, setChannelMetadata, channelMetadata, channel } = useMessageBrokerChannel<\n never,\n Partial<IEPResourceState>\n >({\n channelOptions,\n metadataRequired: true,\n enabled: channelId !== undefined,\n });\n\n const syncedState = useMemo(() => {\n if (isTeacher || !channelMetadata) return undefined;\n\n return channelMetadata;\n }, [isTeacher, channelMetadata]);\n\n const setSyncState = useCallback(\n (state: Partial<IEPResourceState>) => {\n if (!isTeacher || !setChannelMetadata) return;\n\n const syncState = {\n pageNumber: state.pageNumber,\n searchValue: state.searchValue,\n searchQuery: state.searchQuery,\n selectedResourceItems: state.selectedResourceItems || [],\n selectedTab: state.selectedTab,\n filterExpansion: state.filterExpansion,\n };\n\n const currentStateString = JSON.stringify(syncState);\n const prevStateString = JSON.stringify(prevStateRef.current);\n\n if (currentStateString === prevStateString) return;\n\n prevStateRef.current = syncState;\n\n setChannelMetadata(syncState);\n },\n [isTeacher, setChannelMetadata],\n );\n\n const closeChannel = useCallback(() => {\n if (channel) {\n channel.removeChannelMetadata();\n setTimeout(() => {\n channel.destroyChannel();\n }, 500);\n }\n }, [channel]);\n\n useEffect(() => {\n if (!channelStatus && channel) {\n channel.init();\n }\n }, [channel, channelStatus]);\n\n return {\n syncedState,\n setSyncState,\n closeChannel,\n };\n};\n"],"names":["useResourceAssignSync","channelId","isTeacher","prevStateRef","useRef","channelOptions","useMemo","channelStatus","setChannelMetadata","channelMetadata","channel","useMessageBrokerChannel","syncedState","setSyncState","useCallback","state","syncState","currentStateString","prevStateString","closeChannel","useEffect"],"mappings":";;AAkBO,MAAMA,IAAwB,CAAC;AAAA,EACpC,WAAAC;AAAA,EACA,WAAAC;AACF,MAA4D;AACpD,QAAAC,IAAeC,EAA8C,MAAS,GAEtEC,IAAiBC;AAAA,IACrB,OAAO;AAAA,MACL,WAAAL;AAAA,MACA,KAAK;AAAA,IAAA;AAAA,IAEP,CAACA,CAAS;AAAA,EAAA,GAGN,EAAE,eAAAM,GAAe,oBAAAC,GAAoB,iBAAAC,GAAiB,SAAAC,EAAA,IAAYC,EAGtE;AAAA,IACA,gBAAAN;AAAA,IACA,kBAAkB;AAAA,IAClB,SAASJ,MAAc;AAAA,EAAA,CACxB,GAEKW,IAAcN,EAAQ,MAAM;AAC5B,QAAA,EAAAJ,KAAa,CAACO;AAEX,aAAAA;AAAA,EAAA,GACN,CAACP,GAAWO,CAAe,CAAC,GAEzBI,IAAeC;AAAA,IACnB,CAACC,MAAqC;AAChC,UAAA,CAACb,KAAa,CAACM,EAAoB;AAEvC,YAAMQ,IAAY;AAAA,QAChB,YAAYD,EAAM;AAAA,QAClB,aAAaA,EAAM;AAAA,QACnB,aAAaA,EAAM;AAAA,QACnB,uBAAuBA,EAAM,yBAAyB,CAAC;AAAA,QACvD,aAAaA,EAAM;AAAA,QACnB,iBAAiBA,EAAM;AAAA,MAAA,GAGnBE,IAAqB,KAAK,UAAUD,CAAS,GAC7CE,IAAkB,KAAK,UAAUf,EAAa,OAAO;AAE3D,MAAIc,MAAuBC,MAE3Bf,EAAa,UAAUa,GAEvBR,EAAmBQ,CAAS;AAAA,IAC9B;AAAA,IACA,CAACd,GAAWM,CAAkB;AAAA,EAAA,GAG1BW,IAAeL,EAAY,MAAM;AACrC,IAAIJ,MACFA,EAAQ,sBAAsB,GAC9B,WAAW,MAAM;AACf,MAAAA,EAAQ,eAAe;AAAA,OACtB,GAAG;AAAA,EACR,GACC,CAACA,CAAO,CAAC;AAEZ,SAAAU,EAAU,MAAM;AACV,IAAA,CAACb,KAAiBG,KACpBA,EAAQ,KAAK;AAAA,EACf,GACC,CAACA,GAASH,CAAa,CAAC,GAEpB;AAAA,IACL,aAAAK;AAAA,IACA,cAAAC;AAAA,IACA,cAAAM;AAAA,EAAA;AAEJ;"}
@@ -0,0 +1,25 @@
1
+ import { jsx as u } from "react/jsx-runtime";
2
+ import { memo as a, useEffect as m } from "react";
3
+ import { useResourceAssignSync as f } from "./hooks/use-resource-assign-sync.js";
4
+ import p from "./resources-assign.js";
5
+ const d = a(function(n) {
6
+ const { channelId: t, userType: s, ...r } = n, e = s === "TEACHER", { syncedState: c, setSyncState: i, closeChannel: o } = f({
7
+ channelId: t,
8
+ isTeacher: e
9
+ });
10
+ return m(() => () => {
11
+ o();
12
+ }, [o]), /* @__PURE__ */ u(
13
+ p,
14
+ {
15
+ ...r,
16
+ userType: s,
17
+ state: e ? void 0 : c,
18
+ onStateChange: e ? i : void 0
19
+ }
20
+ );
21
+ });
22
+ export {
23
+ d as default
24
+ };
25
+ //# sourceMappingURL=resource-assign-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-assign-sync.js","sources":["../../../../../src/features/milestone/milestone-resources/resources-assign/resource-assign-sync.tsx"],"sourcesContent":["import { memo, useEffect, type FC } from 'react';\n\nimport type { TUserTypes } from '../../../ui/types';\nimport { useResourceAssignSync } from './hooks/use-resource-assign-sync';\nimport EPResourceAssign from './resources-assign';\nimport type { IEPResourceAssign } from './resources-assign-type';\n\ninterface IEPResourceAssignSync extends Omit<IEPResourceAssign, 'state' | 'onStateChange'> {\n channelId: string;\n userType: TUserTypes;\n isTrialSession?: boolean;\n}\n\nconst EPResourceAssignSync: FC<IEPResourceAssignSync> = memo(function EPResourceAssignSync(props) {\n const { channelId, userType, ...resourceAssignProps } = props;\n\n const isTeacher = userType === 'TEACHER';\n\n const { syncedState, setSyncState, closeChannel } = useResourceAssignSync({\n channelId,\n isTeacher,\n });\n\n useEffect(() => {\n return () => {\n closeChannel();\n };\n }, [closeChannel]);\n\n return (\n <EPResourceAssign\n {...resourceAssignProps}\n userType={userType}\n state={isTeacher ? undefined : syncedState}\n onStateChange={isTeacher ? setSyncState : undefined}\n />\n );\n});\n\nexport default EPResourceAssignSync;\n"],"names":["EPResourceAssignSync","memo","props","channelId","userType","resourceAssignProps","isTeacher","syncedState","setSyncState","closeChannel","useResourceAssignSync","useEffect","jsx","EPResourceAssign"],"mappings":";;;;AAaA,MAAMA,IAAkDC,EAAK,SAA8BC,GAAO;AAChG,QAAM,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,MAAwBH,GAElDI,IAAYF,MAAa,WAEzB,EAAE,aAAAG,GAAa,cAAAC,GAAc,cAAAC,EAAA,IAAiBC,EAAsB;AAAA,IACxE,WAAAP;AAAA,IACA,WAAAG;AAAA,EAAA,CACD;AAED,SAAAK,EAAU,MACD,MAAM;AACE,IAAAF;EAAA,GAEd,CAACA,CAAY,CAAC,GAGf,gBAAAG;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,GAAGR;AAAA,MACJ,UAAAD;AAAA,MACA,OAAOE,IAAY,SAAYC;AAAA,MAC/B,eAAeD,IAAYE,IAAe;AAAA,IAAA;AAAA,EAAA;AAGhD,CAAC;"}
@@ -1,78 +1,68 @@
1
- import { jsxs as d, jsx as r, Fragment as A } from "react/jsx-runtime";
2
- import E from "../../../../../node_modules/lodash.debounce/index.js";
3
- import { memo as _, useRef as y, useMemo as b, useEffect as x } from "react";
4
- import C from "../../../../../assets/line-icons/icons/sheet.js";
5
- import N from "../../../../ui/layout/flex-view.js";
6
- import X from "../../../../ui/text/text.js";
7
- import j from "../comps/resource-item/resource-item.js";
8
- import { RESOURCE_ASSIGN_ANALYTICS_EVENTS as w } from "../resource-assign-analytics-events.js";
9
- import L from "./no-resource-screen.js";
10
- import { ResourceItemWrapper as u, ButtonWrapper as P, StyledButton as T } from "./resource-items-styled.js";
11
- const q = _(function(a) {
12
- const {
13
- pageNumber: t,
14
- totalPages: i,
15
- resourceItems: l,
16
- selectedResource: o,
17
- assigningInProgress: f,
18
- isFilterAdded: p,
19
- onResourceAdditionOrDeletion: g,
20
- onResourceAssign: h,
21
- onViewResource: $,
22
- onPageNumberUpdate: m
23
- } = a, c = y(null), R = b(
1
+ import { jsxs as a, jsx as t, Fragment as E } from "react/jsx-runtime";
2
+ import A from "../../../../../node_modules/lodash.debounce/index.js";
3
+ import { memo as _, useRef as y, useMemo as N, useEffect as b } from "react";
4
+ import x from "../../../../../assets/line-icons/icons/sheet.js";
5
+ import C from "../../../../ui/layout/flex-view.js";
6
+ import T from "../../../../ui/text/text.js";
7
+ import P from "../comps/resource-item/resource-item.js";
8
+ import { RESOURCE_ASSIGN_ANALYTICS_EVENTS as X } from "../resource-assign-analytics-events.js";
9
+ import { useResourceItems as j, useSelectedResources as w, useSearchState as L, usePagination as v, useApiState as U } from "../store/resource-assign-store.js";
10
+ import B from "./no-resource-screen.js";
11
+ import { ResourceItemWrapper as d, ButtonWrapper as D, StyledButton as F } from "./resource-items-styled.js";
12
+ const Q = _(function(f) {
13
+ const { assigningInProgress: p, userType: l, onResourceAssign: g, onViewResource: h, onPageNumberUpdate: m } = f, u = j(), r = w(), { isFilterAdded: S } = L(), o = v(), { totalPages: c } = U(), i = y(null), $ = N(
24
14
  () => ({
25
- node_ids: o.map(({ node_id: e }) => e)
15
+ node_ids: r.map(({ node_id: e }) => e)
26
16
  }),
27
- [o]
17
+ [r]
28
18
  );
29
- return x(() => {
30
- const e = c.current;
19
+ return b(() => {
20
+ const e = i.current;
31
21
  if (e) {
32
- const n = E(() => {
33
- const s = e ? e.scrollTop / (e.scrollHeight - e.clientHeight) : 0;
34
- t && i && s > 0.85 && t < i && m(t + 1);
22
+ const s = A(() => {
23
+ const n = e ? e.scrollTop / (e.scrollHeight - e.clientHeight) : 0;
24
+ o && c && n > 0.85 && o < c && m(o + 1);
35
25
  }, 300);
36
- return e.addEventListener("scroll", n), () => {
37
- e.removeEventListener("scroll", n);
26
+ return e.addEventListener("scroll", s), () => {
27
+ e.removeEventListener("scroll", s);
38
28
  };
39
29
  }
40
- }, [c, t, i, m]), l.length === 0 ? p ? /* @__PURE__ */ d(N, { $height: "100%", $alignItems: "center", $justifyContent: "center", children: [
41
- /* @__PURE__ */ r(C, { opacity: 0.38 }),
42
- /* @__PURE__ */ r(X, { $renderAs: "ub1-bold", $color: "BLACK_T_38", children: "No sheets match the selected filters" })
43
- ] }) : /* @__PURE__ */ r(u, { $alignItems: "center", $justifyContent: "center", $overflowHidden: !0, children: /* @__PURE__ */ r(L, {}) }) : /* @__PURE__ */ d(A, { children: [
44
- /* @__PURE__ */ r(u, { $gapX: 1.5, $gutterX: 1.5, $flexGapX: 1.125, ref: c, children: l.map((e) => {
45
- const { id: n, node_id: s } = e, I = o.some((S) => S.node_id === s);
46
- return /* @__PURE__ */ r(
47
- j,
30
+ }, [i, o, c, m]), u.length === 0 ? S ? /* @__PURE__ */ a(C, { $height: "100%", $alignItems: "center", $justifyContent: "center", children: [
31
+ /* @__PURE__ */ t(x, { opacity: 0.38 }),
32
+ /* @__PURE__ */ t(T, { $renderAs: "ub1-bold", $color: "BLACK_T_38", children: "No sheets match the selected filters" })
33
+ ] }) : /* @__PURE__ */ t(d, { $alignItems: "center", $justifyContent: "center", $overflowHidden: !0, children: /* @__PURE__ */ t(B, {}) }) : /* @__PURE__ */ a(E, { children: [
34
+ /* @__PURE__ */ t(d, { $gapX: 1.5, $gutterX: 1.5, $flexGapX: 1.125, ref: i, children: u.map((e) => {
35
+ const { id: s, node_id: n } = e, R = r.some((I) => I.node_id === n);
36
+ return /* @__PURE__ */ t(
37
+ P,
48
38
  {
49
39
  resource: e,
50
- onResourceAdditionOrDeletion: g,
51
- onViewResource: $,
52
- selected: I
40
+ onViewResource: h,
41
+ selected: R,
42
+ userType: l
53
43
  },
54
- `${n}_${s}`
44
+ `${s}_${n}`
55
45
  );
56
46
  }) }),
57
- o.length > 0 && /* @__PURE__ */ r(
58
- P,
47
+ r.length > 0 && l !== "STUDENT" && /* @__PURE__ */ t(
48
+ D,
59
49
  {
60
50
  $flexDirection: "row",
61
51
  $justifyContent: "flex-end",
62
52
  $gapX: 1,
63
53
  $gutterX: 1,
64
- children: /* @__PURE__ */ r(
65
- T,
54
+ children: /* @__PURE__ */ t(
55
+ F,
66
56
  {
67
57
  renderAs: "primary",
68
58
  label: "Assign",
69
59
  shape: "square",
70
60
  size: "small",
71
61
  widthX: 8.5,
72
- analyticsLabel: w.RESOURCE_ASSIGNED,
73
- analyticsProps: R,
74
- onClick: h,
75
- busy: f
62
+ analyticsLabel: X.RESOURCE_ASSIGNED,
63
+ analyticsProps: $,
64
+ onClick: g,
65
+ busy: p
76
66
  }
77
67
  )
78
68
  }
@@ -80,6 +70,6 @@ const q = _(function(a) {
80
70
  ] });
81
71
  });
82
72
  export {
83
- q as default
73
+ Q as default
84
74
  };
85
75
  //# sourceMappingURL=resource-items.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource-items.js","sources":["../../../../../../src/features/milestone/milestone-resources/resources-assign/resource-items/resource-items.tsx"],"sourcesContent":["import debounce from 'lodash.debounce';\nimport { type FC, memo, useEffect, useMemo, useRef } from 'react';\n\nimport SheetIcon from '../../../../../assets/line-icons/icons/sheet';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport Text from '../../../../ui/text/text';\nimport ResourceItem from '../comps/resource-item/resource-item';\nimport { RESOURCE_ASSIGN_ANALYTICS_EVENTS } from '../resource-assign-analytics-events';\nimport NoResourceScreen from './no-resource-screen';\nimport * as Styled from './resource-items-styled';\nimport type { IResourceItems } from './resource-items-types';\n\nconst ResourceItems: FC<IResourceItems> = memo(function ResourceItems(props) {\n const {\n pageNumber,\n totalPages,\n resourceItems,\n selectedResource,\n assigningInProgress,\n isFilterAdded,\n onResourceAdditionOrDeletion,\n onResourceAssign,\n onViewResource,\n onPageNumberUpdate,\n } = props;\n\n const containerRef = useRef<HTMLDivElement>(null);\n const analyticsProps = useMemo(\n () => ({\n node_ids: selectedResource.map(({ node_id: nodeId }) => nodeId),\n }),\n [selectedResource],\n );\n\n useEffect(() => {\n const scrollElement = containerRef.current;\n\n if (scrollElement) {\n const handleScroll = debounce(() => {\n const scrollPercentage = scrollElement\n ? scrollElement.scrollTop / (scrollElement.scrollHeight - scrollElement.clientHeight)\n : 0;\n\n if (pageNumber && totalPages)\n if (scrollPercentage > 0.85 && pageNumber < totalPages) {\n onPageNumberUpdate(pageNumber + 1);\n }\n }, 300);\n\n scrollElement.addEventListener('scroll', handleScroll);\n\n return () => {\n scrollElement.removeEventListener('scroll', handleScroll);\n };\n }\n }, [containerRef, pageNumber, totalPages, onPageNumberUpdate]);\n\n if (resourceItems.length === 0) {\n return isFilterAdded ? (\n <FlexView $height=\"100%\" $alignItems=\"center\" $justifyContent=\"center\">\n <SheetIcon opacity={0.38} />\n <Text $renderAs=\"ub1-bold\" $color=\"BLACK_T_38\">\n No sheets match the selected filters\n </Text>\n </FlexView>\n ) : (\n <Styled.ResourceItemWrapper $alignItems=\"center\" $justifyContent=\"center\" $overflowHidden>\n <NoResourceScreen />\n </Styled.ResourceItemWrapper>\n );\n }\n\n return (\n <>\n <Styled.ResourceItemWrapper $gapX={1.5} $gutterX={1.5} $flexGapX={1.125} ref={containerRef}>\n {resourceItems.map(item => {\n const { id, node_id: nodeId } = item;\n const selected = selectedResource.some(resource => resource.node_id === nodeId);\n\n return (\n <ResourceItem\n key={`${id}_${nodeId}`}\n resource={item}\n onResourceAdditionOrDeletion={onResourceAdditionOrDeletion}\n onViewResource={onViewResource}\n selected={selected}\n />\n );\n })}\n </Styled.ResourceItemWrapper>\n\n {selectedResource.length > 0 && (\n <Styled.ButtonWrapper\n $flexDirection=\"row\"\n $justifyContent=\"flex-end\"\n $gapX={1}\n $gutterX={1}\n >\n <Styled.StyledButton\n renderAs=\"primary\"\n label=\"Assign\"\n shape=\"square\"\n size=\"small\"\n widthX={8.5}\n analyticsLabel={RESOURCE_ASSIGN_ANALYTICS_EVENTS.RESOURCE_ASSIGNED}\n analyticsProps={analyticsProps}\n onClick={onResourceAssign}\n busy={assigningInProgress}\n />\n </Styled.ButtonWrapper>\n )}\n </>\n );\n});\n\nexport default ResourceItems;\n"],"names":["ResourceItems","memo","props","pageNumber","totalPages","resourceItems","selectedResource","assigningInProgress","isFilterAdded","onResourceAdditionOrDeletion","onResourceAssign","onViewResource","onPageNumberUpdate","containerRef","useRef","analyticsProps","useMemo","nodeId","useEffect","scrollElement","handleScroll","debounce","scrollPercentage","FlexView","jsx","SheetIcon","Text","Styled.ResourceItemWrapper","NoResourceScreen","jsxs","Fragment","item","id","selected","resource","ResourceItem","Styled.ButtonWrapper","Styled.StyledButton","RESOURCE_ASSIGN_ANALYTICS_EVENTS"],"mappings":";;;;;;;;;;AAYA,MAAMA,IAAoCC,EAAK,SAAuBC,GAAO;AACrE,QAAA;AAAA,IACJ,YAAAC;AAAA,IACA,YAAAC;AAAA,IACA,eAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,8BAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,oBAAAC;AAAA,EACE,IAAAV,GAEEW,IAAeC,EAAuB,IAAI,GAC1CC,IAAiBC;AAAA,IACrB,OAAO;AAAA,MACL,UAAUV,EAAiB,IAAI,CAAC,EAAE,SAASW,QAAaA,CAAM;AAAA,IAAA;AAAA,IAEhE,CAACX,CAAgB;AAAA,EAAA;AA0Bf,SAvBJY,EAAU,MAAM;AACd,UAAMC,IAAgBN,EAAa;AAEnC,QAAIM,GAAe;AACX,YAAAC,IAAeC,EAAS,MAAM;AAClC,cAAMC,IAAmBH,IACrBA,EAAc,aAAaA,EAAc,eAAeA,EAAc,gBACtE;AAEJ,QAAIhB,KAAcC,KACZkB,IAAmB,QAAQnB,IAAaC,KAC1CQ,EAAmBT,IAAa,CAAC;AAAA,SAEpC,GAAG;AAEQ,aAAAgB,EAAA,iBAAiB,UAAUC,CAAY,GAE9C,MAAM;AACG,QAAAD,EAAA,oBAAoB,UAAUC,CAAY;AAAA,MAAA;AAAA,IAE5D;AAAA,KACC,CAACP,GAAcV,GAAYC,GAAYQ,CAAkB,CAAC,GAEzDP,EAAc,WAAW,IACpBG,sBACJe,GAAS,EAAA,SAAQ,QAAO,aAAY,UAAS,iBAAgB,UAC5D,UAAA;AAAA,IAAC,gBAAAC,EAAAC,GAAA,EAAU,SAAS,KAAM,CAAA;AAAA,sBACzBC,GAAK,EAAA,WAAU,YAAW,QAAO,cAAa,UAE/C,wCAAA;AAAA,EAAA,EACF,CAAA,IAEA,gBAAAF,EAACG,GAAA,EAA2B,aAAY,UAAS,iBAAgB,UAAS,iBAAe,IACvF,UAAA,gBAAAH,EAACI,KAAiB,EACpB,CAAA,IAMA,gBAAAC,EAAAC,GAAA,EAAA,UAAA;AAAA,IAAA,gBAAAN,EAACG,GAAA,EAA2B,OAAO,KAAK,UAAU,KAAK,WAAW,OAAO,KAAKd,GAC3E,UAAAR,EAAc,IAAI,CAAQ0B,MAAA;AACzB,YAAM,EAAE,IAAAC,GAAI,SAASf,EAAA,IAAWc,GAC1BE,IAAW3B,EAAiB,KAAK,CAAY4B,MAAAA,EAAS,YAAYjB,CAAM;AAG5E,aAAA,gBAAAO;AAAA,QAACW;AAAA,QAAA;AAAA,UAEC,UAAUJ;AAAA,UACV,8BAAAtB;AAAA,UACA,gBAAAE;AAAA,UACA,UAAAsB;AAAA,QAAA;AAAA,QAJK,GAAGD,CAAE,IAAIf,CAAM;AAAA,MAAA;AAAA,IAOzB,CAAA,GACH;AAAA,IAECX,EAAiB,SAAS,KACzB,gBAAAkB;AAAA,MAACY;AAAAA,MAAA;AAAA,QACC,gBAAe;AAAA,QACf,iBAAgB;AAAA,QAChB,OAAO;AAAA,QACP,UAAU;AAAA,QAEV,UAAA,gBAAAZ;AAAA,UAACa;AAAAA,UAAA;AAAA,YACC,UAAS;AAAA,YACT,OAAM;AAAA,YACN,OAAM;AAAA,YACN,MAAK;AAAA,YACL,QAAQ;AAAA,YACR,gBAAgBC,EAAiC;AAAA,YACjD,gBAAAvB;AAAA,YACA,SAASL;AAAA,YACT,MAAMH;AAAA,UAAA;AAAA,QACR;AAAA,MAAA;AAAA,IACF;AAAA,EAEJ,EAAA,CAAA;AAEJ,CAAC;"}
1
+ {"version":3,"file":"resource-items.js","sources":["../../../../../../src/features/milestone/milestone-resources/resources-assign/resource-items/resource-items.tsx"],"sourcesContent":["import debounce from 'lodash.debounce';\nimport { type FC, memo, useEffect, useMemo, useRef } from 'react';\n\nimport SheetIcon from '../../../../../assets/line-icons/icons/sheet';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport Text from '../../../../ui/text/text';\nimport ResourceItem from '../comps/resource-item/resource-item';\nimport { RESOURCE_ASSIGN_ANALYTICS_EVENTS } from '../resource-assign-analytics-events';\nimport {\n useResourceItems,\n useSelectedResources,\n useSearchState,\n usePagination,\n useApiState,\n} from '../store/resource-assign-store';\nimport NoResourceScreen from './no-resource-screen';\nimport * as Styled from './resource-items-styled';\nimport type { IResourceItems } from './resource-items-types';\n\nconst ResourceItems: FC<IResourceItems> = memo(function ResourceItems(props) {\n const { assigningInProgress, userType, onResourceAssign, onViewResource, onPageNumberUpdate } =\n props;\n\n const resourceItems = useResourceItems();\n const selectedResource = useSelectedResources();\n const { isFilterAdded } = useSearchState();\n const pageNumber = usePagination();\n const { totalPages } = useApiState();\n\n const containerRef = useRef<HTMLDivElement>(null);\n const analyticsProps = useMemo(\n () => ({\n node_ids: selectedResource.map(({ node_id: nodeId }) => nodeId),\n }),\n [selectedResource],\n );\n\n useEffect(() => {\n const scrollElement = containerRef.current;\n\n if (scrollElement) {\n const handleScroll = debounce(() => {\n const scrollPercentage = scrollElement\n ? scrollElement.scrollTop / (scrollElement.scrollHeight - scrollElement.clientHeight)\n : 0;\n\n if (pageNumber && totalPages)\n if (scrollPercentage > 0.85 && pageNumber < totalPages) {\n onPageNumberUpdate(pageNumber + 1);\n }\n }, 300);\n\n scrollElement.addEventListener('scroll', handleScroll);\n\n return () => {\n scrollElement.removeEventListener('scroll', handleScroll);\n };\n }\n }, [containerRef, pageNumber, totalPages, onPageNumberUpdate]);\n\n if (resourceItems.length === 0) {\n return isFilterAdded ? (\n <FlexView $height=\"100%\" $alignItems=\"center\" $justifyContent=\"center\">\n <SheetIcon opacity={0.38} />\n <Text $renderAs=\"ub1-bold\" $color=\"BLACK_T_38\">\n No sheets match the selected filters\n </Text>\n </FlexView>\n ) : (\n <Styled.ResourceItemWrapper $alignItems=\"center\" $justifyContent=\"center\" $overflowHidden>\n <NoResourceScreen />\n </Styled.ResourceItemWrapper>\n );\n }\n\n return (\n <>\n <Styled.ResourceItemWrapper $gapX={1.5} $gutterX={1.5} $flexGapX={1.125} ref={containerRef}>\n {resourceItems.map(item => {\n const { id, node_id: nodeId } = item;\n const selected = selectedResource.some(resource => resource.node_id === nodeId);\n\n return (\n <ResourceItem\n key={`${id}_${nodeId}`}\n resource={item}\n onViewResource={onViewResource}\n selected={selected}\n userType={userType}\n />\n );\n })}\n </Styled.ResourceItemWrapper>\n\n {selectedResource.length > 0 && userType !== 'STUDENT' && (\n <Styled.ButtonWrapper\n $flexDirection=\"row\"\n $justifyContent=\"flex-end\"\n $gapX={1}\n $gutterX={1}\n >\n <Styled.StyledButton\n renderAs=\"primary\"\n label=\"Assign\"\n shape=\"square\"\n size=\"small\"\n widthX={8.5}\n analyticsLabel={RESOURCE_ASSIGN_ANALYTICS_EVENTS.RESOURCE_ASSIGNED}\n analyticsProps={analyticsProps}\n onClick={onResourceAssign}\n busy={assigningInProgress}\n />\n </Styled.ButtonWrapper>\n )}\n </>\n );\n});\n\nexport default ResourceItems;\n"],"names":["ResourceItems","memo","props","assigningInProgress","userType","onResourceAssign","onViewResource","onPageNumberUpdate","resourceItems","useResourceItems","selectedResource","useSelectedResources","isFilterAdded","useSearchState","pageNumber","usePagination","totalPages","useApiState","containerRef","useRef","analyticsProps","useMemo","nodeId","useEffect","scrollElement","handleScroll","debounce","scrollPercentage","FlexView","jsx","SheetIcon","Text","Styled.ResourceItemWrapper","NoResourceScreen","jsxs","Fragment","item","id","selected","resource","ResourceItem","Styled.ButtonWrapper","Styled.StyledButton","RESOURCE_ASSIGN_ANALYTICS_EVENTS"],"mappings":";;;;;;;;;;;AAmBA,MAAMA,IAAoCC,EAAK,SAAuBC,GAAO;AAC3E,QAAM,EAAE,qBAAAC,GAAqB,UAAAC,GAAU,kBAAAC,GAAkB,gBAAAC,GAAgB,oBAAAC,EACvE,IAAAL,GAEIM,IAAgBC,KAChBC,IAAmBC,KACnB,EAAE,eAAAC,MAAkBC,KACpBC,IAAaC,KACb,EAAE,YAAAC,MAAeC,KAEjBC,IAAeC,EAAuB,IAAI,GAC1CC,IAAiBC;AAAA,IACrB,OAAO;AAAA,MACL,UAAUX,EAAiB,IAAI,CAAC,EAAE,SAASY,QAAaA,CAAM;AAAA,IAAA;AAAA,IAEhE,CAACZ,CAAgB;AAAA,EAAA;AA0Bf,SAvBJa,EAAU,MAAM;AACd,UAAMC,IAAgBN,EAAa;AAEnC,QAAIM,GAAe;AACX,YAAAC,IAAeC,EAAS,MAAM;AAClC,cAAMC,IAAmBH,IACrBA,EAAc,aAAaA,EAAc,eAAeA,EAAc,gBACtE;AAEJ,QAAIV,KAAcE,KACZW,IAAmB,QAAQb,IAAaE,KAC1CT,EAAmBO,IAAa,CAAC;AAAA,SAEpC,GAAG;AAEQ,aAAAU,EAAA,iBAAiB,UAAUC,CAAY,GAE9C,MAAM;AACG,QAAAD,EAAA,oBAAoB,UAAUC,CAAY;AAAA,MAAA;AAAA,IAE5D;AAAA,KACC,CAACP,GAAcJ,GAAYE,GAAYT,CAAkB,CAAC,GAEzDC,EAAc,WAAW,IACpBI,sBACJgB,GAAS,EAAA,SAAQ,QAAO,aAAY,UAAS,iBAAgB,UAC5D,UAAA;AAAA,IAAC,gBAAAC,EAAAC,GAAA,EAAU,SAAS,KAAM,CAAA;AAAA,sBACzBC,GAAK,EAAA,WAAU,YAAW,QAAO,cAAa,UAE/C,wCAAA;AAAA,EAAA,EACF,CAAA,IAEA,gBAAAF,EAACG,GAAA,EAA2B,aAAY,UAAS,iBAAgB,UAAS,iBAAe,IACvF,UAAA,gBAAAH,EAACI,KAAiB,EACpB,CAAA,IAMA,gBAAAC,EAAAC,GAAA,EAAA,UAAA;AAAA,IAAA,gBAAAN,EAACG,GAAA,EAA2B,OAAO,KAAK,UAAU,KAAK,WAAW,OAAO,KAAKd,GAC3E,UAAAV,EAAc,IAAI,CAAQ4B,MAAA;AACzB,YAAM,EAAE,IAAAC,GAAI,SAASf,EAAA,IAAWc,GAC1BE,IAAW5B,EAAiB,KAAK,CAAY6B,MAAAA,EAAS,YAAYjB,CAAM;AAG5E,aAAA,gBAAAO;AAAA,QAACW;AAAA,QAAA;AAAA,UAEC,UAAUJ;AAAA,UACV,gBAAA9B;AAAA,UACA,UAAAgC;AAAA,UACA,UAAAlC;AAAA,QAAA;AAAA,QAJK,GAAGiC,CAAE,IAAIf,CAAM;AAAA,MAAA;AAAA,IAOzB,CAAA,GACH;AAAA,IAECZ,EAAiB,SAAS,KAAKN,MAAa,aAC3C,gBAAAyB;AAAA,MAACY;AAAAA,MAAA;AAAA,QACC,gBAAe;AAAA,QACf,iBAAgB;AAAA,QAChB,OAAO;AAAA,QACP,UAAU;AAAA,QAEV,UAAA,gBAAAZ;AAAA,UAACa;AAAAA,UAAA;AAAA,YACC,UAAS;AAAA,YACT,OAAM;AAAA,YACN,OAAM;AAAA,YACN,MAAK;AAAA,YACL,QAAQ;AAAA,YACR,gBAAgBC,EAAiC;AAAA,YACjD,gBAAAvB;AAAA,YACA,SAASf;AAAA,YACT,MAAMF;AAAA,UAAA;AAAA,QACR;AAAA,MAAA;AAAA,IACF;AAAA,EAEJ,EAAA,CAAA;AAEJ,CAAC;"}