questionlayoutrefactoring 0.0.90 → 0.0.91

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 (74) hide show
  1. package/dist/components/Molecules/PerformanceScreen/PreformanceResultScreen.d.ts +2 -0
  2. package/dist/components/Molecules/PerformanceScreen/PreformanceResultScreen.js +68 -24
  3. package/dist/components/Molecules/PerformanceScreen/PreformanceResultScreen.js.map +1 -1
  4. package/dist/components/Molecules/PerformanceScreen/PreformanceResultScreen.stories.d.ts +12 -0
  5. package/dist/components/Molecules/PerformanceScreen/PreformanceResultScreen.stories.js +10 -1
  6. package/dist/components/Molecules/PerformanceScreen/PreformanceResultScreen.stories.js.map +1 -1
  7. package/dist/components/Molecules/RecapNode/ContentView.d.ts +2 -0
  8. package/dist/components/Molecules/RecapNode/ContentView.js +43 -0
  9. package/dist/components/Molecules/RecapNode/ContentView.js.map +1 -0
  10. package/dist/components/Molecules/RecapNode/SectionView.d.ts +7 -0
  11. package/dist/components/Molecules/RecapNode/SectionView.js +151 -0
  12. package/dist/components/Molecules/RecapNode/SectionView.js.map +1 -0
  13. package/dist/components/Molecules/RecapNode/VideoView.d.ts +8 -0
  14. package/dist/components/Molecules/RecapNode/VideoView.js +54 -0
  15. package/dist/components/Molecules/RecapNode/VideoView.js.map +1 -0
  16. package/dist/components/Molecules/comprehension/SubQuestionLayout.js +2 -2
  17. package/dist/components/Molecules/comprehension/SubQuestionLayout.js.map +1 -1
  18. package/dist/components/Molecules/optionLayouts/Scq.js +1 -1
  19. package/dist/components/Molecules/optionLayouts/Scq.js.map +1 -1
  20. package/dist/components/Organisms/FlashCardNode/FlashCardNode.d.ts +3 -0
  21. package/dist/components/Organisms/FlashCardNode/FlashCardNode.js +102 -0
  22. package/dist/components/Organisms/FlashCardNode/FlashCardNode.js.map +1 -0
  23. package/dist/components/Organisms/FlashCardNode/FlashcardContainer.d.ts +29 -0
  24. package/dist/components/Organisms/FlashCardNode/FlashcardContainer.js +57 -0
  25. package/dist/components/Organisms/FlashCardNode/FlashcardContainer.js.map +1 -0
  26. package/dist/components/Organisms/FlashCardNode/FlashcardNode.stories.d.ts +15 -0
  27. package/dist/components/Organisms/FlashCardNode/FlashcardNode.stories.js +301 -0
  28. package/dist/components/Organisms/FlashCardNode/FlashcardNode.stories.js.map +1 -0
  29. package/dist/components/Organisms/FlashCardNode/IconBar.d.ts +7 -0
  30. package/dist/components/Organisms/FlashCardNode/IconBar.js +22 -0
  31. package/dist/components/Organisms/FlashCardNode/IconBar.js.map +1 -0
  32. package/dist/components/Organisms/FlashCardNode/MobileAccordionView.d.ts +11 -0
  33. package/dist/components/Organisms/FlashCardNode/MobileAccordionView.js +34 -0
  34. package/dist/components/Organisms/FlashCardNode/MobileAccordionView.js.map +1 -0
  35. package/dist/components/Organisms/FlashCardNode/NodeHandles.d.ts +3 -0
  36. package/dist/components/Organisms/FlashCardNode/NodeHandles.js +22 -0
  37. package/dist/components/Organisms/FlashCardNode/NodeHandles.js.map +1 -0
  38. package/dist/components/Organisms/RecapGraph/Example.stories.d.ts +3 -0
  39. package/dist/components/Organisms/RecapGraph/Example.stories.js +50 -0
  40. package/dist/components/Organisms/RecapGraph/Example.stories.js.map +1 -0
  41. package/dist/components/Organisms/RecapGraph/Reactgraphflow.d.ts +11 -0
  42. package/dist/components/Organisms/RecapGraph/Reactgraphflow.js +124 -0
  43. package/dist/components/Organisms/RecapGraph/Reactgraphflow.js.map +1 -0
  44. package/dist/components/Organisms/RecapGraph/RecapGraph.d.ts +11 -0
  45. package/dist/components/Organisms/RecapGraph/RecapGraph.js +17 -0
  46. package/dist/components/Organisms/RecapGraph/RecapGraph.js.map +1 -0
  47. package/dist/components/Organisms/RecapGraph/RecapGraphFlow.d.ts +10 -0
  48. package/dist/components/Organisms/RecapGraph/RecapGraphFlow.js +104 -0
  49. package/dist/components/Organisms/RecapGraph/RecapGraphFlow.js.map +1 -0
  50. package/dist/components/Organisms/RecapGraph/useRecapGraphLogic.d.ts +29 -0
  51. package/dist/components/Organisms/RecapGraph/useRecapGraphLogic.js +365 -0
  52. package/dist/components/Organisms/RecapGraph/useRecapGraphLogic.js.map +1 -0
  53. package/dist/components/Organisms/StudentEditor/components/EditorComponent.d.ts +4 -0
  54. package/dist/components/Organisms/StudentEditor/components/EditorComponent.js +148 -0
  55. package/dist/components/Organisms/StudentEditor/components/EditorComponent.js.map +1 -0
  56. package/dist/utils/RecapData.d.ts +694 -0
  57. package/dist/utils/RecapData.js +2258 -0
  58. package/dist/utils/RecapData.js.map +1 -0
  59. package/dist/utils/contentUtils.d.ts +40 -0
  60. package/dist/utils/contentUtils.js +66 -0
  61. package/dist/utils/contentUtils.js.map +1 -0
  62. package/package.json +1 -1
  63. package/dist/components/Molecules/optionLayouts/Scqnew.d.ts +0 -2
  64. package/dist/components/Molecules/optionLayouts/Scqnew.js +0 -491
  65. package/dist/components/Molecules/optionLayouts/Scqnew.js.map +0 -1
  66. package/dist/components/Molecules/questionLayouts/AnswerLayoutnew.d.ts +0 -1
  67. package/dist/components/Molecules/questionLayouts/AnswerLayoutnew.js +0 -61
  68. package/dist/components/Molecules/questionLayouts/AnswerLayoutnew.js.map +0 -1
  69. package/dist/components/Molecules/questionLayouts/QuestionLayoutnew.d.ts +0 -2
  70. package/dist/components/Molecules/questionLayouts/QuestionLayoutnew.js +0 -285
  71. package/dist/components/Molecules/questionLayouts/QuestionLayoutnew.js.map +0 -1
  72. package/dist/utils/revision-utils.d.ts +0 -13
  73. package/dist/utils/revision-utils.js +0 -90
  74. package/dist/utils/revision-utils.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconBar.js","sourceRoot":"","sources":["../../../../src/components/Organisms/FlashCardNode/IconBar.jsx"],"names":[],"mappings":";;;;;;;AAAA,kDAA0B;AAC1B,4CAA+C;AAExC,MAAM,OAAO,GAAG,CAAC,EACtB,KAAK,EACL,WAAW,EACX,WAAW,EACX,QAAQ,EACR,UAAU,GACX,EAAE,EAAE;IACH,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE9C,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,EAAE;QACnC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,OAAO,CACL,uBAAC,YAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,GAAG,EAAC,KAAK,EAAC,UAAU,EAAE,CAAC,YACzC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CACzB,uBAAC,YAAI,IAEH,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAC7B,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAC7B,YAAY,EAAC,KAAK,EAClB,KAAK,EAAC,QAAQ,EACd,OAAO,EAAC,QAAQ,EAChB,MAAM,EAAC,SAAS,EAChB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACb,CAAC,CAAC,eAAe,EAAE,CAAC;gBACpB,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC,EACD,OAAO,EAAE,UAAU,IAAI,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAC7D,UAAU,EAAC,cAAc,EACzB,MAAM,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,YAEnC,uBAAC,aAAK,IAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,MAAM,EAAC,GAAG,EAAE,OAAO,CAAC,IAAI,GAAI,IAf3D,CAAC,CAgBD,CACR,CAAC,GACG,CACR,CAAC;AACJ,CAAC,CAAC;AArCW,QAAA,OAAO,WAqClB"}
@@ -0,0 +1,11 @@
1
+ export function MobileAccordionView({ jsonData, contentMap, onContentUpdate, onIconDataUpdate, isAdmin, iconConfig, playicon, onOpenMediaModal, }: {
2
+ jsonData?: null | undefined;
3
+ contentMap?: {} | undefined;
4
+ onContentUpdate: any;
5
+ onIconDataUpdate: any;
6
+ isAdmin?: boolean | undefined;
7
+ iconConfig?: any[] | undefined;
8
+ playicon: any;
9
+ onOpenMediaModal: any;
10
+ }): import("react/jsx-runtime").JSX.Element;
11
+ export default MobileAccordionView;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.MobileAccordionView = void 0;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const react_1 = require("@chakra-ui/react");
9
+ const FlashcardContainer_1 = __importDefault(require("./FlashcardContainer"));
10
+ const contentUtils_1 = require("../../../utils/contentUtils");
11
+ const useRecapGraphLogic_1 = require("../RecapGraph/useRecapGraphLogic");
12
+ const MobileAccordionView = ({ jsonData = null, contentMap = {}, onContentUpdate, onIconDataUpdate, isAdmin = false, iconConfig = [], playicon, onOpenMediaModal, }) => {
13
+ const logic = (0, useRecapGraphLogic_1.useRecapGraphLogic)(jsonData, contentMap, iconConfig);
14
+ const renderNode = (nodeData, level = 0) => {
15
+ const { nodeContent, hasContent } = logic.getNodeContent(nodeData._id);
16
+ const { headerColor, bgColor, colorInfo } = logic.getNodeColors(nodeData._id);
17
+ const hasChildren = nodeData.children?.length > 0;
18
+ const availableContentTypes = hasContent
19
+ ? (0, contentUtils_1.getAvailableContentTypes)(nodeContent)
20
+ : [];
21
+ const availableIcons = iconConfig.filter((icon) => availableContentTypes.includes(icon.type));
22
+ const displayType = logic.displayTypes[nodeData._id] || null;
23
+ const isNodeExpanded = logic.expandedNodes[nodeData._id] !== undefined
24
+ ? logic.expandedNodes[nodeData._id]
25
+ : level === 0;
26
+ const isContentExpanded = logic.contentExpanded[nodeData._id] || false;
27
+ const currentVideoIdx = logic.videoIndices[nodeData._id] || 0;
28
+ return ((0, jsx_runtime_1.jsxs)(react_1.Box, { mb: "8px", children: [(0, jsx_runtime_1.jsx)(FlashcardContainer_1.default, { label: nodeData.description || nodeData.name, color: headerColor, bgColor: bgColor, hasContent: hasContent, isNodeExpanded: isNodeExpanded, isContentExpanded: isContentExpanded, displayType: displayType, availableIcons: availableIcons, handleIconClick: (type) => logic.handleIconClick(nodeData._id, type, availableContentTypes), content: nodeContent, currentVideoIdx: currentVideoIdx, setCurrentVideoIdx: (idx) => logic.setCurrentVideoIdx(nodeData._id, idx), isAdmin: isAdmin, onContentUpdate: onContentUpdate, nodeId: nodeData._id, rootNodeId: jsonData._id, onIconDataUpdate: onIconDataUpdate, hasChildren: hasChildren, onChevronClick: () => logic.handleChevronClick(nodeData._id), isMobile: true, colorKey: colorInfo.colorKey, level: colorInfo.level, playicon: playicon, onOpenMediaModal: onOpenMediaModal }), isNodeExpanded && hasChildren && ((0, jsx_runtime_1.jsx)(react_1.Box, { px: colorInfo.level === 0 ? "0" : "8px", mt: colorInfo.level === 0 ? "10px" : "", mb: "2px", bg: colorInfo.level === 0 ? "" : bgColor, children: nodeData.children.map((child) => renderNode(child, level + 1)) }))] }, nodeData._id));
29
+ };
30
+ return ((0, jsx_runtime_1.jsx)(react_1.Box, { p: "16px", bg: "#f8fafc", minW: "340px", overflowX: "scroll", children: (0, jsx_runtime_1.jsx)(react_1.VStack, { align: "stretch", spacing: "0", children: jsonData && renderNode(jsonData, 0) }) }));
31
+ };
32
+ exports.MobileAccordionView = MobileAccordionView;
33
+ exports.default = exports.MobileAccordionView;
34
+ //# sourceMappingURL=MobileAccordionView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MobileAccordionView.js","sourceRoot":"","sources":["../../../../src/components/Organisms/FlashCardNode/MobileAccordionView.jsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export function NodeHandles({ level }: {
2
+ level: any;
3
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.NodeHandles = void 0;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const react_1 = __importDefault(require("react"));
9
+ const reactflow_1 = require("reactflow");
10
+ const NodeHandles = ({ level }) => {
11
+ const handleStyle = {
12
+ background: "transparent",
13
+ border: "none",
14
+ width: "8px",
15
+ height: "8px",
16
+ opacity: 0,
17
+ pointerEvents: "none",
18
+ };
19
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [level > 0 && ((0, jsx_runtime_1.jsx)(reactflow_1.Handle, { type: "target", position: reactflow_1.Position.Top, style: handleStyle, id: "top" })), level > 0 && ((0, jsx_runtime_1.jsx)(reactflow_1.Handle, { type: "target", position: reactflow_1.Position.Left, style: handleStyle, id: "left" })), (0, jsx_runtime_1.jsx)(reactflow_1.Handle, { type: "source", position: reactflow_1.Position.Bottom, style: handleStyle, id: "bottom" })] }));
20
+ };
21
+ exports.NodeHandles = NodeHandles;
22
+ //# sourceMappingURL=NodeHandles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeHandles.js","sourceRoot":"","sources":["../../../../src/components/Organisms/FlashCardNode/NodeHandles.jsx"],"names":[],"mappings":";;;;;;;AAAA,kDAA0B;AAC1B,yCAA6C;AAEtC,MAAM,WAAW,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IACvC,MAAM,WAAW,GAAG;QAClB,UAAU,EAAE,aAAa;QACzB,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,CAAC;QACV,aAAa,EAAE,MAAM;KACtB,CAAC;IAEF,OAAO,CACL,6DAEG,KAAK,GAAG,CAAC,IAAI,CACZ,uBAAC,kBAAM,IACL,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,oBAAQ,CAAC,GAAG,EACtB,KAAK,EAAE,WAAW,EAClB,EAAE,EAAC,KAAK,GACR,CACH,EAGA,KAAK,GAAG,CAAC,IAAI,CACZ,uBAAC,kBAAM,IACL,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,oBAAQ,CAAC,IAAI,EACvB,KAAK,EAAE,WAAW,EAClB,EAAE,EAAC,MAAM,GACT,CACH,EAGD,uBAAC,kBAAM,IACL,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,oBAAQ,CAAC,MAAM,EACzB,KAAK,EAAE,WAAW,EAClB,EAAE,EAAC,QAAQ,GACX,IACD,CACJ,CAAC;AACJ,CAAC,CAAC;AAzCW,QAAA,WAAW,eAyCtB"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("@storybook/types").ComponentAnnotations<import("@storybook/react/dist/types-0fc72a6d").R, import("@storybook/types").Args>;
2
+ export default _default;
3
+ export declare const DefaultTimerClock: import("@storybook/types").AnnotatedStoryFn<import("@storybook/react/dist/types-0fc72a6d").R, any>;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DefaultTimerClock = void 0;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const RecapData_1 = require("../../../utils/RecapData");
9
+ const Reactgraphflow_1 = __importDefault(require("./Reactgraphflow"));
10
+ const defination_svg_1 = __importDefault(require("../../../assests/recap/defination.svg"));
11
+ const formula_svg_1 = __importDefault(require("../../../assests/recap/formula.svg"));
12
+ const videoplay_svg_1 = __importDefault(require("../../../assests/recap/videoplay.svg"));
13
+ const equations_svg_1 = __importDefault(require("../../../assests/recap/equations.svg"));
14
+ const theorem_svg_1 = __importDefault(require("../../../assests/recap/theorem.svg"));
15
+ const timeline_svg_1 = __importDefault(require("../../../assests/recap/timeline.svg"));
16
+ const processes_svg_1 = __importDefault(require("../../../assests/recap/processes.svg"));
17
+ const lawsandapp_svg_1 = __importDefault(require("../../../assests/recap/lawsandapp.svg"));
18
+ const factualPlay_svg_1 = __importDefault(require("../../../assests/revision/factualPlay.svg"));
19
+ exports.default = {
20
+ title: "Components/Organisms/Graph/ReactFlowELKView",
21
+ component: Reactgraphflow_1.default,
22
+ };
23
+ const Template = (args) => (0, jsx_runtime_1.jsx)(Reactgraphflow_1.default, { ...args });
24
+ const customIcons = [
25
+ { src: equations_svg_1.default, type: "equations" },
26
+ { src: videoplay_svg_1.default, type: "videos" },
27
+ { src: formula_svg_1.default, type: "formulae" },
28
+ { src: defination_svg_1.default, type: "definitions" },
29
+ { src: defination_svg_1.default, type: "keyConcepts" },
30
+ { src: theorem_svg_1.default, type: "theorems" },
31
+ { src: processes_svg_1.default, type: "processes" },
32
+ { src: lawsandapp_svg_1.default, type: "keyPoints" },
33
+ { src: timeline_svg_1.default, type: "Timeline" },
34
+ { src: theorem_svg_1.default, type: "properties" },
35
+ ];
36
+ console.log("contentmap:", RecapData_1.contentMap);
37
+ exports.DefaultTimerClock = Template.bind({});
38
+ exports.DefaultTimerClock.args = {
39
+ jsonData: RecapData_1.jsonData,
40
+ contentMap: RecapData_1.contentMap,
41
+ iconConfig: customIcons,
42
+ onContentUpdate: (payload) => {
43
+ console.log("onContentUpdate payload:", payload);
44
+ },
45
+ onIconDataUpdate: () => { },
46
+ isAdmin: true,
47
+ playicon: factualPlay_svg_1.default,
48
+ // isMobile: true,
49
+ };
50
+ //# sourceMappingURL=Example.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Example.stories.js","sourceRoot":"","sources":["../../../../src/components/Organisms/RecapGraph/Example.stories.tsx"],"names":[],"mappings":";;;;;;;AAEA,wDAA+E;AAC/E,sEAA0C;AAC1C,2FAAmE;AACnE,qFAA6D;AAC7D,yFAAiE;AACjE,yFAAgE;AAChE,qFAA6D;AAC7D,uFAA+D;AAC/D,yFAAiE;AACjE,2FAAmE;AACnE,gGAAiE;AAEjE,kBAAe;IACb,KAAK,EAAE,6CAA6C;IACpD,SAAS,EAAE,wBAAU;CACd,CAAC;AAEV,MAAM,QAAQ,GAAe,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAC,wBAAU,OAAK,IAAI,GAAI,CAAC;AAEhE,MAAM,WAAW,GAAG;IAClB,EAAE,GAAG,EAAE,uBAAY,EAAE,IAAI,EAAE,WAAW,EAAE;IACxC,EAAE,GAAG,EAAE,uBAAa,EAAE,IAAI,EAAE,QAAQ,EAAE;IACtC,EAAE,GAAG,EAAE,qBAAW,EAAE,IAAI,EAAE,UAAU,EAAE;IACtC,EAAE,GAAG,EAAE,wBAAc,EAAE,IAAI,EAAE,aAAa,EAAE;IAC5C,EAAE,GAAG,EAAE,wBAAc,EAAE,IAAI,EAAE,aAAa,EAAE;IAC5C,EAAE,GAAG,EAAE,qBAAW,EAAE,IAAI,EAAE,UAAU,EAAE;IACtC,EAAE,GAAG,EAAE,uBAAa,EAAE,IAAI,EAAE,WAAW,EAAE;IACzC,EAAE,GAAG,EAAE,wBAAc,EAAE,IAAI,EAAE,WAAW,EAAE;IAC1C,EAAE,GAAG,EAAE,sBAAY,EAAE,IAAI,EAAE,UAAU,EAAE;IACvC,EAAE,GAAG,EAAE,qBAAW,EAAE,IAAI,EAAE,YAAY,EAAE;CACzC,CAAC;AACF,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,sBAAU,CAAC,CAAC;AAE1B,QAAA,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACnD,yBAAiB,CAAC,IAAI,GAAG;IACvB,QAAQ,EAAE,oBAAQ;IAClB,UAAU,EAAE,sBAAU;IACtB,UAAU,EAAE,WAAW;IACvB,eAAe,EAAE,CAAC,OAAY,EAAE,EAAE;QAChC,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IACD,gBAAgB,EAAE,GAAG,EAAE,GAAE,CAAC;IAC1B,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,yBAAQ;IAClB,kBAAkB;CACnB,CAAC"}
@@ -0,0 +1,11 @@
1
+ export default RecapGraph;
2
+ declare function RecapGraph({ jsonData, contentMap, iconConfig, onContentUpdate, onIconDataUpdate, isAdmin, isMobile, playicon, }: {
3
+ jsonData?: null | undefined;
4
+ contentMap?: {} | undefined;
5
+ iconConfig?: any[] | undefined;
6
+ onContentUpdate: any;
7
+ onIconDataUpdate: any;
8
+ isAdmin?: boolean | undefined;
9
+ isMobile?: boolean | undefined;
10
+ playicon?: {} | undefined;
11
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const jsx_runtime_1 = require("react/jsx-runtime");
30
+ const react_1 = __importStar(require("react"));
31
+ const reactflow_1 = __importStar(require("reactflow"));
32
+ // import "reactflow/dist/style.css";
33
+ const FlashCardNode_1 = __importDefault(require("../FlashCardNode/FlashCardNode"));
34
+ const MobileAccordionView_1 = require("../FlashCardNode/MobileAccordionView");
35
+ const useRecapGraphLogic_1 = require("./useRecapGraphLogic");
36
+ const MediaModal_1 = __importDefault(require("../../Molecules/MediaModal/MediaModal"));
37
+ const MIN_ZOOM = 0.6;
38
+ const RecapGraph = ({ jsonData = null, contentMap = {}, iconConfig = [], onContentUpdate, onIconDataUpdate, isAdmin = false, isMobile = false, playicon = {}, }) => {
39
+ const [layout, setLayout] = (0, react_1.useState)({
40
+ nodes: [],
41
+ edges: [],
42
+ bounds: null,
43
+ });
44
+ const logic = (0, useRecapGraphLogic_1.useRecapGraphLogic)(jsonData, contentMap, iconConfig);
45
+ const [isMediaModalOpen, setIsMediaModalOpen] = (0, react_1.useState)(false);
46
+ const [selectedMediaData, setSelectedMediaData] = (0, react_1.useState)(null);
47
+ const handleOpenMediaModal = (videoUrl, videoMetadata = [], videoId = "") => {
48
+ setSelectedMediaData({
49
+ video_url: videoUrl,
50
+ media_type: "video",
51
+ video_metadata: videoMetadata,
52
+ video_id: videoId,
53
+ });
54
+ setIsMediaModalOpen(true);
55
+ };
56
+ // Handle closing media modal
57
+ const handleCloseMediaModal = () => {
58
+ setIsMediaModalOpen(false);
59
+ setSelectedMediaData(null);
60
+ };
61
+ const nodeTypes = (0, react_1.useMemo)(() => ({
62
+ flashcard: (props) => ((0, jsx_runtime_1.jsx)(FlashCardNode_1.default, { ...props, rootNodeId: jsonData?._id, onContentUpdate: onContentUpdate, onIconDataUpdate: onIconDataUpdate, isAdmin: isAdmin, isMobile: isMobile, playicon: playicon, onOpenMediaModal: handleOpenMediaModal })),
63
+ }), [onContentUpdate, onIconDataUpdate, isAdmin, isMobile, jsonData?._id]);
64
+ const graphData = (0, react_1.useMemo)(() => {
65
+ if (!jsonData)
66
+ return { nodes: [], edges: [] };
67
+ const nodes = logic.buildNodes(jsonData);
68
+ const edges = logic.buildEdges(jsonData, nodes);
69
+ return { nodes, edges };
70
+ }, [jsonData, logic.activeExpandedNodeId]);
71
+ const computeBounds = (nodes, minZoom = MIN_ZOOM) => {
72
+ // Fallback bounds when no nodes exist
73
+ if (!nodes || nodes.length === 0) {
74
+ const BASE = 2000 / minZoom;
75
+ return {
76
+ minX: -BASE,
77
+ minY: -BASE / 2,
78
+ maxX: BASE,
79
+ maxY: BASE / 2,
80
+ };
81
+ }
82
+ const minX = Math.min(...nodes.map((n) => n.position.x));
83
+ const maxX = Math.max(...nodes.map((n) => n.position.x + (n.width ?? 260)));
84
+ const minY = Math.min(...nodes.map((n) => n.position.y));
85
+ const maxY = Math.max(...nodes.map((n) => n.position.y + (n.height ?? 100)));
86
+ const BASE_PAD_X = 300;
87
+ const BASE_PAD_Y = 120;
88
+ const PAD_X = BASE_PAD_X / minZoom;
89
+ const PAD_Y = BASE_PAD_Y / minZoom;
90
+ return {
91
+ minX: minX - PAD_X,
92
+ minY: minY - PAD_Y,
93
+ maxX: maxX + PAD_X,
94
+ maxY: maxY + PAD_Y,
95
+ };
96
+ };
97
+ (0, react_1.useEffect)(() => {
98
+ const res = logic.computeCustomLayout(graphData.nodes, graphData.edges);
99
+ setLayout({
100
+ nodes: graphData.nodes.map((n) => ({
101
+ ...n,
102
+ position: res.nodes.find((m) => m.id === n.id)?.position || n.position,
103
+ })),
104
+ edges: graphData.edges,
105
+ bounds: computeBounds(res.nodes),
106
+ });
107
+ }, [logic.expandedNodeId, logic.expandedNodeHeight]);
108
+ const bounds = layout.bounds || {
109
+ minX: -2000,
110
+ minY: -2000,
111
+ maxX: 2000,
112
+ maxY: 2000,
113
+ };
114
+ return ((0, jsx_runtime_1.jsxs)("div", { style: {
115
+ width: isAdmin ? "100vw" : "100%",
116
+ height: isAdmin ? "100vh" : "90%",
117
+ backgroundColor: "#f8fafc",
118
+ }, children: [isMobile ? ((0, jsx_runtime_1.jsx)(MobileAccordionView_1.MobileAccordionView, { jsonData: jsonData, contentMap: contentMap, iconConfig: iconConfig, onContentUpdate: onContentUpdate, onIconDataUpdate: onIconDataUpdate, isAdmin: isAdmin, playicon: playicon, onOpenMediaModal: handleOpenMediaModal })) : ((0, jsx_runtime_1.jsxs)(reactflow_1.default, { nodes: layout.nodes, edges: layout.edges, nodeTypes: nodeTypes, proOptions: { hideAttribution: true }, fitView: true, panOnScroll: true, panOnScrollMode: "free", zoomOnPinch: true, zoomOnScroll: false, panOnDrag: true, minZoom: MIN_ZOOM, maxZoom: 1.6, translateExtent: [
119
+ [bounds.minX, bounds.minY],
120
+ [bounds.maxX, bounds.maxY],
121
+ ], children: [(0, jsx_runtime_1.jsx)(reactflow_1.Controls, { showFitView: false, showInteractive: false }), (0, jsx_runtime_1.jsx)(reactflow_1.Background, { variant: "none" })] })), (0, jsx_runtime_1.jsx)(MediaModal_1.default, { openMedia: isMediaModalOpen, handleClose: handleCloseMediaModal, selectedMedia: selectedMediaData, updateVideoEvents: () => { }, muted: false })] }));
122
+ };
123
+ exports.default = RecapGraph;
124
+ //# sourceMappingURL=Reactgraphflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Reactgraphflow.js","sourceRoot":"","sources":["../../../../src/components/Organisms/RecapGraph/Reactgraphflow.jsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export default RecapGraph;
2
+ declare function RecapGraph({ jsonData, contentMap, iconConfig, onContentUpdate, onIconDataUpdate, isAdmin, isMobile, playicon, }: {
3
+ jsonData?: null | undefined;
4
+ contentMap?: {} | undefined;
5
+ iconConfig?: any[] | undefined;
6
+ onContentUpdate: any;
7
+ onIconDataUpdate: any;
8
+ isAdmin?: boolean | undefined;
9
+ isMobile?: boolean | undefined;
10
+ playicon?: {} | undefined;
11
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const jsx_runtime_1 = require("react/jsx-runtime");
7
+ const RecapGraphFlow_1 = __importDefault(require("./RecapGraphFlow"));
8
+ const MobileAccordionView_1 = require("../FlashCardNode/MobileAccordionView");
9
+ const RecapGraph = ({ jsonData = null, contentMap = {}, iconConfig = [], onContentUpdate, onIconDataUpdate, isAdmin = false, isMobile = false, playicon = {}, }) => {
10
+ return ((0, jsx_runtime_1.jsx)("div", { style: {
11
+ width: isAdmin ? "100vw" : "100%",
12
+ height: isAdmin ? "100vh" : "90%",
13
+ backgroundColor: "#f8fafc",
14
+ }, children: isMobile ? ((0, jsx_runtime_1.jsx)(MobileAccordionView_1.MobileAccordionView, { jsonData: jsonData, contentMap: contentMap, iconConfig: iconConfig, onContentUpdate: onContentUpdate, onIconDataUpdate: onIconDataUpdate, isAdmin: isAdmin, playicon: playicon })) : ((0, jsx_runtime_1.jsx)(RecapGraphFlow_1.default, { jsonData: jsonData, contentMap: contentMap, iconConfig: iconConfig, onContentUpdate: onContentUpdate, onIconDataUpdate: onIconDataUpdate, isAdmin: isAdmin, playicon: playicon })) }));
15
+ };
16
+ exports.default = RecapGraph;
17
+ //# sourceMappingURL=RecapGraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecapGraph.js","sourceRoot":"","sources":["../../../../src/components/Organisms/RecapGraph/RecapGraph.jsx"],"names":[],"mappings":";;;;;;AACA,sEAA8C;AAC9C,8EAA2E;AAE3E,MAAM,UAAU,GAAG,CAAC,EAClB,QAAQ,GAAG,IAAI,EACf,UAAU,GAAG,EAAE,EACf,UAAU,GAAG,EAAE,EACf,eAAe,EACf,gBAAgB,EAChB,OAAO,GAAG,KAAK,EACf,QAAQ,GAAG,KAAK,EAChB,QAAQ,GAAG,EAAE,GACd,EAAE,EAAE;IACH,OAAO,CACL,gCACE,KAAK,EAAE;YACL,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;YACjC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;YACjC,eAAe,EAAE,SAAS;SAC3B,YAEA,QAAQ,CAAC,CAAC,CAAC,CACV,uBAAC,yCAAmB,IAClB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,GAClB,CACH,CAAC,CAAC,CAAC,CACF,uBAAC,wBAAc,IACb,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,OAAO,EAAE,OAAO,EAEhB,QAAQ,EAAE,QAAQ,GAClB,CACH,GACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,UAAU,CAAC"}
@@ -0,0 +1,10 @@
1
+ export default RecapGraphFlow;
2
+ declare function RecapGraphFlow({ jsonData, contentMap, iconConfig, onContentUpdate, onIconDataUpdate, isAdmin, playicon, }: {
3
+ jsonData?: null | undefined;
4
+ contentMap?: {} | undefined;
5
+ iconConfig?: any[] | undefined;
6
+ onContentUpdate: any;
7
+ onIconDataUpdate: any;
8
+ isAdmin?: boolean | undefined;
9
+ playicon?: {} | undefined;
10
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const jsx_runtime_1 = require("react/jsx-runtime");
30
+ const react_1 = __importStar(require("react"));
31
+ const reactflow_1 = __importStar(require("reactflow"));
32
+ // import "reactflow/dist/style.css";
33
+ const FlashCardNode_1 = __importDefault(require("../FlashCardNode/FlashCardNode"));
34
+ const MobileAccordionView_1 = require("../FlashCardNode/MobileAccordionView");
35
+ const useRecapGraphLogic_1 = require("./useRecapGraphLogic");
36
+ const MIN_ZOOM = 0.8;
37
+ const RecapGraphFlow = ({ jsonData = null, contentMap = {}, iconConfig = [], onContentUpdate, onIconDataUpdate, isAdmin = false, playicon = {}, }) => {
38
+ const [layout, setLayout] = (0, react_1.useState)({
39
+ nodes: [],
40
+ edges: [],
41
+ bounds: null,
42
+ });
43
+ const logic = (0, useRecapGraphLogic_1.useRecapGraphLogic)(jsonData, contentMap, iconConfig);
44
+ const nodeTypes = (0, react_1.useMemo)(() => ({
45
+ flashcard: (props) => ((0, jsx_runtime_1.jsx)(FlashCardNode_1.default, { ...props, rootNodeId: jsonData?._id, onContentUpdate: onContentUpdate, onIconDataUpdate: onIconDataUpdate, isAdmin: isAdmin, playicon: playicon })),
46
+ }), [onContentUpdate, onIconDataUpdate, isAdmin, jsonData?._id]);
47
+ const graphData = (0, react_1.useMemo)(() => {
48
+ if (!jsonData)
49
+ return { nodes: [], edges: [] };
50
+ const nodes = logic.buildNodes(jsonData);
51
+ const edges = logic.buildEdges(jsonData, nodes);
52
+ return { nodes, edges };
53
+ }, [jsonData, logic.activeExpandedNodeId]);
54
+ const computeBounds = (nodes, minZoom = MIN_ZOOM) => {
55
+ if (!nodes || nodes.length === 0) {
56
+ const BASE = 2000 / minZoom;
57
+ return {
58
+ minX: -BASE,
59
+ minY: -BASE,
60
+ maxX: BASE,
61
+ maxY: BASE,
62
+ };
63
+ }
64
+ const minX = Math.min(...nodes.map((n) => n.position.x));
65
+ const maxX = Math.max(...nodes.map((n) => n.position.x + (n.width || 260)));
66
+ const minY = Math.min(...nodes.map((n) => n.position.y));
67
+ const maxY = Math.max(...nodes.map((n) => n.position.y + (n.height || 150)));
68
+ const BASE_PAD = 400;
69
+ const PAD = BASE_PAD / minZoom;
70
+ return {
71
+ minX: minX - PAD,
72
+ minY: minY - PAD,
73
+ maxX: maxX + PAD,
74
+ maxY: maxY + PAD,
75
+ };
76
+ };
77
+ (0, react_1.useEffect)(() => {
78
+ const res = logic.computeCustomLayout(graphData.nodes, graphData.edges);
79
+ setLayout({
80
+ nodes: graphData.nodes.map((n) => ({
81
+ ...n,
82
+ position: res.nodes.find((m) => m.id === n.id)?.position || n.position,
83
+ })),
84
+ edges: graphData.edges,
85
+ bounds: computeBounds(res.nodes),
86
+ });
87
+ }, [logic.expandedNodeId, logic.expandedNodeHeight]);
88
+ const bounds = layout.bounds || {
89
+ minX: -2000,
90
+ minY: -2000,
91
+ maxX: 2000,
92
+ maxY: 2000,
93
+ };
94
+ return ((0, jsx_runtime_1.jsx)("div", { style: {
95
+ width: isAdmin ? "100vw" : "100%",
96
+ height: isAdmin ? "100vh" : "90%",
97
+ backgroundColor: "#f8fafc",
98
+ }, children: (0, jsx_runtime_1.jsxs)(reactflow_1.default, { nodes: layout.nodes, edges: layout.edges, nodeTypes: nodeTypes, proOptions: { hideAttribution: true }, fitView: true, panOnScroll: true, panOnScrollMode: "free", zoomOnPinch: true, zoomOnScroll: false, panOnDrag: true, minZoom: MIN_ZOOM, maxZoom: 1.6, translateExtent: [
99
+ [bounds.minX, bounds.minY],
100
+ [bounds.maxX, bounds.maxY],
101
+ ], children: [(0, jsx_runtime_1.jsx)(reactflow_1.Controls, { showFitView: false, showInteractive: false }), (0, jsx_runtime_1.jsx)(reactflow_1.Background, { variant: "none" })] }) }));
102
+ };
103
+ exports.default = RecapGraphFlow;
104
+ //# sourceMappingURL=RecapGraphFlow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecapGraphFlow.js","sourceRoot":"","sources":["../../../../src/components/Organisms/RecapGraph/RecapGraphFlow.jsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export function useRecapGraphLogic(jsonData: any, contentMap: any, iconConfig: any): {
2
+ expandedNodeId: null;
3
+ expandedNodeHeight: number;
4
+ activeExpandedNodeId: null;
5
+ isTransitioning: boolean;
6
+ expandedNodes: {};
7
+ contentExpanded: {};
8
+ displayTypes: {};
9
+ videoIndices: {};
10
+ colorMap: {};
11
+ getNodeColors: (nodeId: any) => {
12
+ headerColor: any;
13
+ bgColor: any;
14
+ colorInfo: any;
15
+ };
16
+ getNodeContent: (nodeId: any) => {
17
+ nodeContent: any;
18
+ hasContent: any;
19
+ };
20
+ buildNodes: (data: any) => any[];
21
+ buildEdges: (data: any, nodes: any) => any[];
22
+ computeCustomLayout: (inputNodes: any, inputEdges: any) => {
23
+ nodes: any;
24
+ edges: any;
25
+ };
26
+ handleChevronClick: (nodeId: any) => void;
27
+ handleIconClick: (nodeId: any, type: any, availableContentTypes: any) => void;
28
+ setCurrentVideoIdx: (nodeId: any, idxOrUpdater: any) => void;
29
+ };