@sp-days-framework/docusaurus-plugin-interactive-tasks 1.0.0
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.
- package/LICENSE +21 -0
- package/README.md +339 -0
- package/lib/contexts/DocTaskCounterContext.d.ts +15 -0
- package/lib/contexts/DocTaskCounterContext.d.ts.map +1 -0
- package/lib/contexts/DocTaskCounterContext.js +7 -0
- package/lib/contexts/DocTaskCounterContext.js.map +1 -0
- package/lib/contexts/TaskContext.d.ts +72 -0
- package/lib/contexts/TaskContext.d.ts.map +1 -0
- package/lib/contexts/TaskContext.js +6 -0
- package/lib/contexts/TaskContext.js.map +1 -0
- package/lib/index.d.ts +14 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +59 -0
- package/lib/index.js.map +1 -0
- package/lib/plugin/TaskRegistryPlugin.d.ts +27 -0
- package/lib/plugin/TaskRegistryPlugin.d.ts.map +1 -0
- package/lib/plugin/TaskRegistryPlugin.js +328 -0
- package/lib/plugin/TaskRegistryPlugin.js.map +1 -0
- package/lib/plugin/remarkTaskDirective.d.ts +29 -0
- package/lib/plugin/remarkTaskDirective.d.ts.map +1 -0
- package/lib/plugin/remarkTaskDirective.js +277 -0
- package/lib/plugin/remarkTaskDirective.js.map +1 -0
- package/lib/theme/DocRoot/Layout/index.d.ts +14 -0
- package/lib/theme/DocRoot/Layout/index.d.ts.map +1 -0
- package/lib/theme/DocRoot/Layout/index.js +27 -0
- package/lib/theme/DocRoot/Layout/index.js.map +1 -0
- package/lib/theme/DocRoot/index.d.ts +22 -0
- package/lib/theme/DocRoot/index.d.ts.map +1 -0
- package/lib/theme/DocRoot/index.js +33 -0
- package/lib/theme/DocRoot/index.js.map +1 -0
- package/lib/theme/DocSidebar/Desktop/CollapseButton/index.d.ts +4 -0
- package/lib/theme/DocSidebar/Desktop/CollapseButton/index.d.ts.map +1 -0
- package/lib/theme/DocSidebar/Desktop/CollapseButton/index.js +24 -0
- package/lib/theme/DocSidebar/Desktop/CollapseButton/index.js.map +1 -0
- package/lib/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +40 -0
- package/lib/theme/DocSidebar/Desktop/Content/index.d.ts +4 -0
- package/lib/theme/DocSidebar/Desktop/Content/index.d.ts.map +1 -0
- package/lib/theme/DocSidebar/Desktop/Content/index.js +67 -0
- package/lib/theme/DocSidebar/Desktop/Content/index.js.map +1 -0
- package/lib/theme/DocSidebar/Desktop/Content/styles.module.css +16 -0
- package/lib/theme/DocSidebar/Desktop/index.d.ts +6 -0
- package/lib/theme/DocSidebar/Desktop/index.d.ts.map +1 -0
- package/lib/theme/DocSidebar/Desktop/index.js +21 -0
- package/lib/theme/DocSidebar/Desktop/index.js.map +1 -0
- package/lib/theme/DocSidebar/Desktop/styles.module.css +37 -0
- package/lib/theme/DocSidebar/Mobile/index.d.ts +6 -0
- package/lib/theme/DocSidebar/Mobile/index.d.ts.map +1 -0
- package/lib/theme/DocSidebar/Mobile/index.js +29 -0
- package/lib/theme/DocSidebar/Mobile/index.js.map +1 -0
- package/lib/theme/DocSidebar/index.d.ts +4 -0
- package/lib/theme/DocSidebar/index.d.ts.map +1 -0
- package/lib/theme/DocSidebar/index.js +21 -0
- package/lib/theme/DocSidebar/index.js.map +1 -0
- package/lib/theme/DocSidebarItem/Category/index.d.ts +4 -0
- package/lib/theme/DocSidebarItem/Category/index.d.ts.map +1 -0
- package/lib/theme/DocSidebarItem/Category/index.js +316 -0
- package/lib/theme/DocSidebarItem/Category/index.js.map +1 -0
- package/lib/theme/DocSidebarItem/Category/styles.module.css +187 -0
- package/lib/theme/DocSidebarItem/Html/index.d.ts +4 -0
- package/lib/theme/DocSidebarItem/Html/index.d.ts.map +1 -0
- package/lib/theme/DocSidebarItem/Html/index.js +17 -0
- package/lib/theme/DocSidebarItem/Html/index.js.map +1 -0
- package/lib/theme/DocSidebarItem/Html/styles.module.css +6 -0
- package/lib/theme/DocSidebarItem/Link/index.d.ts +6 -0
- package/lib/theme/DocSidebarItem/Link/index.d.ts.map +1 -0
- package/lib/theme/DocSidebarItem/Link/index.js +149 -0
- package/lib/theme/DocSidebarItem/Link/index.js.map +1 -0
- package/lib/theme/DocSidebarItem/Link/styles.module.css +197 -0
- package/lib/theme/DocSidebarItem/index.d.ts +4 -0
- package/lib/theme/DocSidebarItem/index.d.ts.map +1 -0
- package/lib/theme/DocSidebarItem/index.js +22 -0
- package/lib/theme/DocSidebarItem/index.js.map +1 -0
- package/lib/theme/DocSidebarItems/index.d.ts +6 -0
- package/lib/theme/DocSidebarItems/index.d.ts.map +1 -0
- package/lib/theme/DocSidebarItems/index.js +48 -0
- package/lib/theme/DocSidebarItems/index.js.map +1 -0
- package/lib/theme/DocTaskCounterProvider/index.d.ts +20 -0
- package/lib/theme/DocTaskCounterProvider/index.d.ts.map +1 -0
- package/lib/theme/DocTaskCounterProvider/index.js +105 -0
- package/lib/theme/DocTaskCounterProvider/index.js.map +1 -0
- package/lib/theme/MDXComponents.d.ts +19 -0
- package/lib/theme/MDXComponents.d.ts.map +1 -0
- package/lib/theme/MDXComponents.js +52 -0
- package/lib/theme/MDXComponents.js.map +1 -0
- package/lib/theme/Root.d.ts +9 -0
- package/lib/theme/Root.d.ts.map +1 -0
- package/lib/theme/Root.js +105 -0
- package/lib/theme/Root.js.map +1 -0
- package/lib/theme/Task/Hint/index.d.ts +14 -0
- package/lib/theme/Task/Hint/index.d.ts.map +1 -0
- package/lib/theme/Task/Hint/index.js +23 -0
- package/lib/theme/Task/Hint/index.js.map +1 -0
- package/lib/theme/Task/Hint/styles.module.css +72 -0
- package/lib/theme/Task/Solution/index.d.ts +14 -0
- package/lib/theme/Task/Solution/index.d.ts.map +1 -0
- package/lib/theme/Task/Solution/index.js +23 -0
- package/lib/theme/Task/Solution/index.js.map +1 -0
- package/lib/theme/Task/Solution/styles.module.css +71 -0
- package/lib/theme/Task/Text/index.d.ts +14 -0
- package/lib/theme/Task/Text/index.d.ts.map +1 -0
- package/lib/theme/Task/Text/index.js +18 -0
- package/lib/theme/Task/Text/index.js.map +1 -0
- package/lib/theme/Task/Text/styles.module.css +39 -0
- package/lib/theme/Task/index.d.ts +11 -0
- package/lib/theme/Task/index.d.ts.map +1 -0
- package/lib/theme/Task/index.js +286 -0
- package/lib/theme/Task/index.js.map +1 -0
- package/lib/theme/Task/styles.module.css +529 -0
- package/lib/theme/TaskAutoHideToggle/index.d.ts +10 -0
- package/lib/theme/TaskAutoHideToggle/index.d.ts.map +1 -0
- package/lib/theme/TaskAutoHideToggle/index.js +79 -0
- package/lib/theme/TaskAutoHideToggle/index.js.map +1 -0
- package/lib/theme/TaskAutoHideToggle/styles.module.css +41 -0
- package/lib/theme/TaskExample/index.d.ts +16 -0
- package/lib/theme/TaskExample/index.d.ts.map +1 -0
- package/lib/theme/TaskExample/index.js +249 -0
- package/lib/theme/TaskExample/index.js.map +1 -0
- package/lib/theme/TaskPlaceholder/README.md +119 -0
- package/lib/theme/TaskPlaceholder/index.d.ts +23 -0
- package/lib/theme/TaskPlaceholder/index.d.ts.map +1 -0
- package/lib/theme/TaskPlaceholder/index.js +293 -0
- package/lib/theme/TaskPlaceholder/index.js.map +1 -0
- package/lib/theme/TaskProgression/index.d.ts +11 -0
- package/lib/theme/TaskProgression/index.d.ts.map +1 -0
- package/lib/theme/TaskProgression/index.js +131 -0
- package/lib/theme/TaskProgression/index.js.map +1 -0
- package/lib/theme/TaskProgression/styles.module.css +162 -0
- package/lib/theme/TaskProgressionOverview/index.d.ts +10 -0
- package/lib/theme/TaskProgressionOverview/index.d.ts.map +1 -0
- package/lib/theme/TaskProgressionOverview/index.js +123 -0
- package/lib/theme/TaskProgressionOverview/index.js.map +1 -0
- package/lib/theme/TaskProgressionOverview/styles.module.css +159 -0
- package/lib/theme/TaskProvider/index.d.ts +15 -0
- package/lib/theme/TaskProvider/index.d.ts.map +1 -0
- package/lib/theme/TaskProvider/index.js +134 -0
- package/lib/theme/TaskProvider/index.js.map +1 -0
- package/lib/utils/badgeStyles.d.ts +29 -0
- package/lib/utils/badgeStyles.d.ts.map +1 -0
- package/lib/utils/badgeStyles.js +60 -0
- package/lib/utils/badgeStyles.js.map +1 -0
- package/lib/utils/icons.d.ts +38 -0
- package/lib/utils/icons.d.ts.map +1 -0
- package/lib/utils/icons.js +53 -0
- package/lib/utils/icons.js.map +1 -0
- package/lib/utils/logger.d.ts +38 -0
- package/lib/utils/logger.d.ts.map +1 -0
- package/lib/utils/logger.js +72 -0
- package/lib/utils/logger.js.map +1 -0
- package/lib/utils/storage.d.ts +33 -0
- package/lib/utils/storage.d.ts.map +1 -0
- package/lib/utils/storage.js +105 -0
- package/lib/utils/storage.js.map +1 -0
- package/lib/utils/useDocTaskStats.d.ts +58 -0
- package/lib/utils/useDocTaskStats.d.ts.map +1 -0
- package/lib/utils/useDocTaskStats.js +206 -0
- package/lib/utils/useDocTaskStats.js.map +1 -0
- package/lib/utils/usePluginId.d.ts +24 -0
- package/lib/utils/usePluginId.d.ts.map +1 -0
- package/lib/utils/usePluginId.js +61 -0
- package/lib/utils/usePluginId.js.map +1 -0
- package/lib/utils/useResolveDocPath.d.ts +33 -0
- package/lib/utils/useResolveDocPath.d.ts.map +1 -0
- package/lib/utils/useResolveDocPath.js +122 -0
- package/lib/utils/useResolveDocPath.js.map +1 -0
- package/lib/utils/useTaskBadgeAnimation.d.ts +16 -0
- package/lib/utils/useTaskBadgeAnimation.d.ts.map +1 -0
- package/lib/utils/useTaskBadgeAnimation.js +51 -0
- package/lib/utils/useTaskBadgeAnimation.js.map +1 -0
- package/lib/validateThemeConfig.d.ts +8 -0
- package/lib/validateThemeConfig.d.ts.map +1 -0
- package/lib/validateThemeConfig.js +15 -0
- package/lib/validateThemeConfig.js.map +1 -0
- package/package.json +82 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MDXComponents wrapper
|
|
4
|
+
* Makes Task components available in MDX
|
|
5
|
+
*
|
|
6
|
+
* NOTE: Users don't write <Task>, <Text>, <Hint>, <Solution> directly in MDX.
|
|
7
|
+
* Instead, they write directive syntax (:::task[Name]) which is transformed
|
|
8
|
+
* by our remark plugin into these JSX components during compilation.
|
|
9
|
+
*
|
|
10
|
+
* These components must still be exported here so they're available when
|
|
11
|
+
* the transformed JSX is rendered.
|
|
12
|
+
*
|
|
13
|
+
* TaskProgression, TaskProgressionOverview, and TaskPlaceholder ARE used directly by users.
|
|
14
|
+
*
|
|
15
|
+
* CRITICAL FIX: Import Code and Pre directly from theme-classic to avoid circular resolution
|
|
16
|
+
* when DocRoot uses direct imports (which breaks the @theme-original chain).
|
|
17
|
+
*/
|
|
18
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
19
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
const MDXComponents_1 = __importDefault(require("@theme-original/MDXComponents"));
|
|
23
|
+
// Import Code and Pre directly from theme-classic to break potential circular resolution
|
|
24
|
+
const Code_1 = __importDefault(require("@docusaurus/theme-classic/lib/theme/MDXComponents/Code"));
|
|
25
|
+
const Pre_1 = __importDefault(require("@docusaurus/theme-classic/lib/theme/MDXComponents/Pre"));
|
|
26
|
+
const Admonition_1 = __importDefault(require("@docusaurus/theme-classic/lib/theme/Admonition"));
|
|
27
|
+
const Task_1 = __importDefault(require("@theme/Task"));
|
|
28
|
+
const TaskExample_1 = __importDefault(require("@theme/TaskExample"));
|
|
29
|
+
const TaskPlaceholder_1 = __importDefault(require("@theme/TaskPlaceholder"));
|
|
30
|
+
const Text_1 = __importDefault(require("@theme/Task/Text"));
|
|
31
|
+
const Hint_1 = __importDefault(require("@theme/Task/Hint"));
|
|
32
|
+
const Solution_1 = __importDefault(require("@theme/Task/Solution"));
|
|
33
|
+
const TaskProgression_1 = __importDefault(require("@theme/TaskProgression"));
|
|
34
|
+
const TaskProgressionOverview_1 = __importDefault(require("@theme/TaskProgressionOverview"));
|
|
35
|
+
exports.default = {
|
|
36
|
+
...MDXComponents_1.default,
|
|
37
|
+
// Explicitly override code and pre components with direct imports
|
|
38
|
+
code: Code_1.default,
|
|
39
|
+
pre: Pre_1.default,
|
|
40
|
+
// Additional MDX components
|
|
41
|
+
admonition: Admonition_1.default,
|
|
42
|
+
// Task components
|
|
43
|
+
Task: Task_1.default,
|
|
44
|
+
TaskExample: TaskExample_1.default,
|
|
45
|
+
TaskPlaceholder: TaskPlaceholder_1.default,
|
|
46
|
+
Text: Text_1.default,
|
|
47
|
+
Hint: Hint_1.default,
|
|
48
|
+
Solution: Solution_1.default,
|
|
49
|
+
TaskProgression: TaskProgression_1.default,
|
|
50
|
+
TaskProgressionOverview: TaskProgressionOverview_1.default,
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=MDXComponents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MDXComponents.js","sourceRoot":"","sources":["../../src/theme/MDXComponents.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;AAGH,kFAA0D;AAC1D,yFAAyF;AACzF,kGAA6E;AAC7E,gGAA2E;AAC3E,gGAAwE;AACxE,uDAA+B;AAC/B,qEAA6C;AAC7C,6EAAqD;AACrD,4DAAoC;AACpC,4DAAoC;AACpC,oEAA4C;AAC5C,6EAAqD;AACrD,6FAAqE;AAErE,kBAAe;IACb,GAAG,uBAAa;IAChB,kEAAkE;IAClE,IAAI,EAAE,cAAO;IACb,GAAG,EAAE,aAAM;IACX,4BAA4B;IAC5B,UAAU,EAAE,oBAAU;IACtB,kBAAkB;IAClB,IAAI,EAAJ,cAAI;IACJ,WAAW,EAAX,qBAAW;IACX,eAAe,EAAf,yBAAe;IACf,IAAI,EAAJ,cAAI;IACJ,IAAI,EAAJ,cAAI;IACJ,QAAQ,EAAR,kBAAQ;IACR,eAAe,EAAf,yBAAe;IACf,uBAAuB,EAAvB,iCAAuB;CACxB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Root component wrapper
|
|
3
|
+
* Injects TaskAutoHideToggle into the navbar using a custom element
|
|
4
|
+
*/
|
|
5
|
+
import React from 'react';
|
|
6
|
+
export default function Root({ children }: {
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
}): React.ReactElement;
|
|
9
|
+
//# sourceMappingURL=Root.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Root.d.ts","sourceRoot":"","sources":["../../src/theme/Root.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAoB,MAAM,OAAO,CAAC;AAOzC,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,GAAG,KAAK,CAAC,YAAY,CA+D5F"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Root component wrapper
|
|
4
|
+
* Injects TaskAutoHideToggle into the navbar using a custom element
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
40
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
41
|
+
};
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.default = Root;
|
|
44
|
+
const react_1 = __importStar(require("react"));
|
|
45
|
+
const ReactDOM = __importStar(require("react-dom/client"));
|
|
46
|
+
const TaskAutoHideToggle_1 = __importDefault(require("./TaskAutoHideToggle"));
|
|
47
|
+
// Store root instance to prevent multiple renders
|
|
48
|
+
let toggleRoot = null;
|
|
49
|
+
function Root({ children }) {
|
|
50
|
+
(0, react_1.useEffect)(() => {
|
|
51
|
+
// Only run on client side
|
|
52
|
+
if (typeof window === 'undefined')
|
|
53
|
+
return;
|
|
54
|
+
const injectToggle = () => {
|
|
55
|
+
// Find the navbar right section
|
|
56
|
+
const navbar = document.querySelector('.navbar__items--right');
|
|
57
|
+
if (!navbar)
|
|
58
|
+
return;
|
|
59
|
+
// Check if already injected
|
|
60
|
+
const existingContainer = document.getElementById('task-auto-hide-toggle-container');
|
|
61
|
+
if (existingContainer)
|
|
62
|
+
return;
|
|
63
|
+
// Create container
|
|
64
|
+
const container = document.createElement('div');
|
|
65
|
+
container.id = 'task-auto-hide-toggle-container';
|
|
66
|
+
container.style.display = 'flex';
|
|
67
|
+
container.style.alignItems = 'center';
|
|
68
|
+
container.style.marginLeft = '12px';
|
|
69
|
+
// Insert at the beginning of right navbar items
|
|
70
|
+
navbar.insertBefore(container, navbar.firstChild);
|
|
71
|
+
// Render the toggle button using React 18/19 createRoot API
|
|
72
|
+
toggleRoot = ReactDOM.createRoot(container);
|
|
73
|
+
toggleRoot.render(react_1.default.createElement(TaskAutoHideToggle_1.default, null));
|
|
74
|
+
};
|
|
75
|
+
// Try immediately
|
|
76
|
+
injectToggle();
|
|
77
|
+
// Also try after a short delay in case navbar isn't ready
|
|
78
|
+
const timeoutId = setTimeout(injectToggle, 100);
|
|
79
|
+
// Observe DOM changes for hot reload
|
|
80
|
+
const observer = new MutationObserver(() => {
|
|
81
|
+
if (!document.getElementById('task-auto-hide-toggle-container')) {
|
|
82
|
+
injectToggle();
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
observer.observe(document.body, {
|
|
86
|
+
childList: true,
|
|
87
|
+
subtree: true,
|
|
88
|
+
});
|
|
89
|
+
return () => {
|
|
90
|
+
clearTimeout(timeoutId);
|
|
91
|
+
observer.disconnect();
|
|
92
|
+
// Clean up on unmount
|
|
93
|
+
if (toggleRoot) {
|
|
94
|
+
toggleRoot.unmount();
|
|
95
|
+
toggleRoot = null;
|
|
96
|
+
}
|
|
97
|
+
const container = document.getElementById('task-auto-hide-toggle-container');
|
|
98
|
+
if (container) {
|
|
99
|
+
container.remove();
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
}, []);
|
|
103
|
+
return react_1.default.createElement(react_1.default.Fragment, null, children);
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=Root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Root.js","sourceRoot":"","sources":["../../src/theme/Root.tsx"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASH,uBA+DC;AAtED,+CAAyC;AACzC,2DAA6C;AAC7C,8EAAsD;AAEtD,kDAAkD;AAClD,IAAI,UAAU,GAAyB,IAAI,CAAC;AAE5C,SAAwB,IAAI,CAAC,EAAE,QAAQ,EAAiC;IACtE,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,0BAA0B;QAC1B,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO;QAE1C,MAAM,YAAY,GAAG,GAAG,EAAE;YACxB,gCAAgC;YAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;YAC/D,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEpB,4BAA4B;YAC5B,MAAM,iBAAiB,GAAG,QAAQ,CAAC,cAAc,CAAC,iCAAiC,CAAC,CAAC;YACrF,IAAI,iBAAiB;gBAAE,OAAO;YAE9B,mBAAmB;YACnB,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,EAAE,GAAG,iCAAiC,CAAC;YACjD,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YACjC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;YACtC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;YAEpC,gDAAgD;YAChD,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;YAElD,4DAA4D;YAC5D,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC5C,UAAU,CAAC,MAAM,CAAC,8BAAC,4BAAkB,OAAG,CAAC,CAAC;QAC5C,CAAC,CAAC;QAEF,kBAAkB;QAClB,YAAY,EAAE,CAAC;QAEf,0DAA0D;QAC1D,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAEhD,qCAAqC;QACrC,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE;YACzC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,iCAAiC,CAAC,EAAE,CAAC;gBAChE,YAAY,EAAE,CAAC;YACjB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;YAC9B,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,QAAQ,CAAC,UAAU,EAAE,CAAC;YACtB,sBAAsB;YACtB,IAAI,UAAU,EAAE,CAAC;gBACf,UAAU,CAAC,OAAO,EAAE,CAAC;gBACrB,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;YACD,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,iCAAiC,CAAC,CAAC;YAC7E,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,MAAM,EAAE,CAAC;YACrB,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,8DAAG,QAAQ,CAAI,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hint Component
|
|
3
|
+
* Content area for task hints - rendered as a panel by parent Task component
|
|
4
|
+
*/
|
|
5
|
+
import { type ReactNode, type ReactElement } from 'react';
|
|
6
|
+
export interface HintProps {
|
|
7
|
+
children?: ReactNode;
|
|
8
|
+
}
|
|
9
|
+
declare function Hint({ children }: HintProps): ReactElement;
|
|
10
|
+
declare namespace Hint {
|
|
11
|
+
var displayName: string;
|
|
12
|
+
}
|
|
13
|
+
export default Hint;
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/Task/Hint/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAIjE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAKD,iBAAwB,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,SAAS,GAAG,YAAY,CASlE;kBATuB,IAAI;;;eAAJ,IAAI"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Hint Component
|
|
4
|
+
* Content area for task hints - rendered as a panel by parent Task component
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.default = Hint;
|
|
11
|
+
const react_1 = __importDefault(require("react"));
|
|
12
|
+
const icons_1 = require("../../../utils/icons");
|
|
13
|
+
const styles_module_css_1 = __importDefault(require("./styles.module.css"));
|
|
14
|
+
// Add displayName for parent component detection
|
|
15
|
+
Hint.displayName = 'Hint';
|
|
16
|
+
function Hint({ children }) {
|
|
17
|
+
return (react_1.default.createElement("div", { className: styles_module_css_1.default.hintPanel },
|
|
18
|
+
react_1.default.createElement("div", { className: styles_module_css_1.default.hintLabel },
|
|
19
|
+
icons_1.HINT_ICON,
|
|
20
|
+
"Hint"),
|
|
21
|
+
react_1.default.createElement("div", { className: styles_module_css_1.default.hintContent }, children)));
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/theme/Task/Hint/index.tsx"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AAaH,uBASC;AApBD,kDAAiE;AACjE,gDAAiD;AACjD,4EAAyC;AAMzC,iDAAiD;AACjD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;AAE1B,SAAwB,IAAI,CAAC,EAAE,QAAQ,EAAa;IAClD,OAAO,CACL,uCAAK,SAAS,EAAE,2BAAM,CAAC,SAAS;QAC9B,uCAAK,SAAS,EAAE,2BAAM,CAAC,SAAS;YAAG,iBAAS;mBAAW;QACvD,uCAAK,SAAS,EAAE,2BAAM,CAAC,WAAW,IAC/B,QAAQ,CACL,CACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hint Panel Styles
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
.hintPanel {
|
|
6
|
+
padding: 1rem 1.25rem;
|
|
7
|
+
background-color: var(--ifm-color-warning-contrast-background);
|
|
8
|
+
border-left: 4px solid var(--ifm-color-warning);
|
|
9
|
+
border-radius: 4px;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.hintLabel {
|
|
13
|
+
font-weight: 600;
|
|
14
|
+
font-size: 0.95rem;
|
|
15
|
+
color: var(--ifm-color-warning-darker);
|
|
16
|
+
margin-bottom: 0.75rem;
|
|
17
|
+
display: flex;
|
|
18
|
+
align-items: center;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.hintContent {
|
|
22
|
+
color: var(--ifm-font-color-base);
|
|
23
|
+
line-height: 1.6;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.hintContent > *:first-child {
|
|
27
|
+
margin-top: 0;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.hintContent > *:last-child {
|
|
31
|
+
margin-bottom: 0;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.hintContent p {
|
|
35
|
+
margin-bottom: 0.75rem;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.hintContent ul,
|
|
39
|
+
.hintContent ol {
|
|
40
|
+
margin-left: 1.5rem;
|
|
41
|
+
margin-bottom: 0.75rem;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.hintContent li {
|
|
45
|
+
margin-bottom: 0.25rem;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.hintContent code {
|
|
49
|
+
background-color: unset;
|
|
50
|
+
border-radius: 3px;
|
|
51
|
+
padding: 0.125rem 0.375rem;
|
|
52
|
+
font-size: 0.9em;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.hintContent pre code {
|
|
56
|
+
padding: 16px;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.hintContent pre {
|
|
60
|
+
margin-top: 20px;
|
|
61
|
+
margin-bottom: 20px;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/* Dark mode adjustments */
|
|
65
|
+
html[data-theme='dark'] .hintPanel {
|
|
66
|
+
background-color: rgba(255, 196, 0, 0.1);
|
|
67
|
+
border-left-color: var(--ifm-color-warning-light);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
html[data-theme='dark'] .hintLabel {
|
|
71
|
+
color: var(--ifm-color-warning-light);
|
|
72
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solution Component
|
|
3
|
+
* Content area for task solutions - rendered as a panel by parent Task component
|
|
4
|
+
*/
|
|
5
|
+
import { type ReactNode, type ReactElement } from 'react';
|
|
6
|
+
export interface SolutionProps {
|
|
7
|
+
children?: ReactNode;
|
|
8
|
+
}
|
|
9
|
+
declare function Solution({ children }: SolutionProps): ReactElement;
|
|
10
|
+
declare namespace Solution {
|
|
11
|
+
var displayName: string;
|
|
12
|
+
}
|
|
13
|
+
export default Solution;
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/Task/Solution/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAIjE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAKD,iBAAwB,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,aAAa,GAAG,YAAY,CAS1E;kBATuB,QAAQ;;;eAAR,QAAQ"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Solution Component
|
|
4
|
+
* Content area for task solutions - rendered as a panel by parent Task component
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.default = Solution;
|
|
11
|
+
const react_1 = __importDefault(require("react"));
|
|
12
|
+
const icons_1 = require("../../../utils/icons");
|
|
13
|
+
const styles_module_css_1 = __importDefault(require("./styles.module.css"));
|
|
14
|
+
// Add displayName for parent component detection
|
|
15
|
+
Solution.displayName = 'Solution';
|
|
16
|
+
function Solution({ children }) {
|
|
17
|
+
return (react_1.default.createElement("div", { className: styles_module_css_1.default.solutionPanel },
|
|
18
|
+
react_1.default.createElement("div", { className: styles_module_css_1.default.solutionLabel },
|
|
19
|
+
icons_1.SOLUTION_ICON,
|
|
20
|
+
"Solution"),
|
|
21
|
+
react_1.default.createElement("div", { className: styles_module_css_1.default.solutionContent }, children)));
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/theme/Task/Solution/index.tsx"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AAaH,2BASC;AApBD,kDAAiE;AACjE,gDAAqD;AACrD,4EAAyC;AAMzC,iDAAiD;AACjD,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAC;AAElC,SAAwB,QAAQ,CAAC,EAAE,QAAQ,EAAiB;IAC1D,OAAO,CACL,uCAAK,SAAS,EAAE,2BAAM,CAAC,aAAa;QAClC,uCAAK,SAAS,EAAE,2BAAM,CAAC,aAAa;YAAG,qBAAa;uBAAe;QACnE,uCAAK,SAAS,EAAE,2BAAM,CAAC,eAAe,IACnC,QAAQ,CACL,CACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solution Panel Styles
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
.solutionPanel {
|
|
6
|
+
padding: 1rem 1.25rem;
|
|
7
|
+
background-color: var(--ifm-color-info-contrast-background);
|
|
8
|
+
border-left: 4px solid var(--ifm-color-info);
|
|
9
|
+
border-radius: 4px;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.solutionLabel {
|
|
13
|
+
font-weight: 600;
|
|
14
|
+
font-size: 0.95rem;
|
|
15
|
+
color: var(--ifm-color-info-darker);
|
|
16
|
+
margin-bottom: 0.75rem;
|
|
17
|
+
display: flex;
|
|
18
|
+
align-items: center;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.solutionContent {
|
|
22
|
+
color: var(--ifm-font-color-base);
|
|
23
|
+
line-height: 1.6;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.solutionContent > *:first-child {
|
|
27
|
+
margin-top: 0;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.solutionContent > *:last-child {
|
|
31
|
+
margin-bottom: 0;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.solutionContent p {
|
|
35
|
+
margin-bottom: 0.75rem;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.solutionContent ul,
|
|
39
|
+
.solutionContent ol {
|
|
40
|
+
margin-left: 1.5rem;
|
|
41
|
+
margin-bottom: 0.75rem;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.solutionContent li {
|
|
45
|
+
margin-bottom: 0.25rem;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.solutionContent code {
|
|
49
|
+
background-color: unset;
|
|
50
|
+
border-radius: 3px;
|
|
51
|
+
padding: 0.125rem 0.375rem;
|
|
52
|
+
font-size: 0.9em;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.solutionContent pre code {
|
|
56
|
+
padding: 16px;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.solutionContent pre {
|
|
60
|
+
margin-top: 20px;
|
|
61
|
+
margin-bottom: 20px;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/* Dark mode adjustments */
|
|
65
|
+
html[data-theme='dark'] .solutionPanel {
|
|
66
|
+
border-left-color: var(--ifm-color-info-light);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
html[data-theme='dark'] .solutionLabel {
|
|
70
|
+
color: var(--ifm-color-info-light);
|
|
71
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text Component
|
|
3
|
+
* Main content area for task instructions
|
|
4
|
+
*/
|
|
5
|
+
import { type ReactNode, type ReactElement } from 'react';
|
|
6
|
+
export interface TextProps {
|
|
7
|
+
children?: ReactNode;
|
|
8
|
+
}
|
|
9
|
+
declare function Text({ children }: TextProps): ReactElement;
|
|
10
|
+
declare namespace Text {
|
|
11
|
+
var displayName: string;
|
|
12
|
+
}
|
|
13
|
+
export default Text;
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/Task/Text/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAGjE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAKD,iBAAwB,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,SAAS,GAAG,YAAY,CAMlE;kBANuB,IAAI;;;eAAJ,IAAI"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Text Component
|
|
4
|
+
* Main content area for task instructions
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.default = Text;
|
|
11
|
+
const react_1 = __importDefault(require("react"));
|
|
12
|
+
const styles_module_css_1 = __importDefault(require("./styles.module.css"));
|
|
13
|
+
// Add displayName for parent component detection
|
|
14
|
+
Text.displayName = 'Text';
|
|
15
|
+
function Text({ children }) {
|
|
16
|
+
return (react_1.default.createElement("div", { className: styles_module_css_1.default.textContainer }, children));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/theme/Task/Text/index.tsx"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AAYH,uBAMC;AAhBD,kDAAiE;AACjE,4EAAyC;AAMzC,iDAAiD;AACjD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;AAE1B,SAAwB,IAAI,CAAC,EAAE,QAAQ,EAAa;IAClD,OAAO,CACL,uCAAK,SAAS,EAAE,2BAAM,CAAC,aAAa,IACjC,QAAQ,CACL,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
.textContainer {
|
|
2
|
+
margin-bottom: 1rem;
|
|
3
|
+
color: var(--ifm-font-color-base);
|
|
4
|
+
line-height: 1.6;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.textContainer > *:last-child {
|
|
8
|
+
margin-bottom: 0;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.textContainer p {
|
|
12
|
+
margin-bottom: 0.75rem;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.textContainer ul,
|
|
16
|
+
.textContainer ol {
|
|
17
|
+
margin-left: 1.5rem;
|
|
18
|
+
margin-bottom: 0.75rem;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.textContainer li {
|
|
22
|
+
margin-bottom: 0.25rem;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.textContainer code {
|
|
26
|
+
background-color: unset;
|
|
27
|
+
border-radius: 3px;
|
|
28
|
+
padding: 0.125rem 0.375rem;
|
|
29
|
+
font-size: 0.9em;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.textContainer pre code {
|
|
33
|
+
padding: 16px;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.textContainer pre {
|
|
37
|
+
margin-top: 20px;
|
|
38
|
+
margin-bottom: 20px;
|
|
39
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task Component
|
|
3
|
+
* Interactive collapsible task with optional hint and solution sections
|
|
4
|
+
*/
|
|
5
|
+
import { type ReactNode, type ReactElement } from 'react';
|
|
6
|
+
export interface TaskProps {
|
|
7
|
+
name: string;
|
|
8
|
+
children?: ReactNode;
|
|
9
|
+
}
|
|
10
|
+
export default function Task({ name, children }: TaskProps): ReactElement;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/theme/Task/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EAAE,KAAK,SAAS,EAAY,KAAK,YAAY,EAAqB,MAAM,OAAO,CAAC;AAU9F,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,SAAS,GAAG,YAAY,CAqWxE"}
|