@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,149 @@
|
|
|
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 () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const react_1 = __importStar(require("react"));
|
|
40
|
+
const clsx_1 = __importDefault(require("clsx"));
|
|
41
|
+
const theme_common_1 = require("@docusaurus/theme-common");
|
|
42
|
+
const client_1 = require("@docusaurus/plugin-content-docs/client");
|
|
43
|
+
const Link_1 = __importDefault(require("@docusaurus/Link"));
|
|
44
|
+
const isInternalUrl_1 = __importDefault(require("@docusaurus/isInternalUrl"));
|
|
45
|
+
const ExternalLink_1 = __importDefault(require("@theme/Icon/ExternalLink"));
|
|
46
|
+
const useDocTaskStats_1 = require("../../../utils/useDocTaskStats");
|
|
47
|
+
const useTaskBadgeAnimation_1 = require("../../../utils/useTaskBadgeAnimation");
|
|
48
|
+
const usePluginId_1 = require("../../../utils/usePluginId");
|
|
49
|
+
const icons_1 = require("../../../utils/icons");
|
|
50
|
+
const badgeStyles_1 = require("../../../utils/badgeStyles");
|
|
51
|
+
const styles_module_css_1 = __importDefault(require("./styles.module.css"));
|
|
52
|
+
function LinkLabel({ label }) {
|
|
53
|
+
return (react_1.default.createElement("span", { title: label, className: styles_module_css_1.default.linkLabel }, label));
|
|
54
|
+
}
|
|
55
|
+
function DocSidebarItemLink({ item, onItemClick, activePath, level, index, ...props }) {
|
|
56
|
+
const { href, label, className, autoAddBaseUrl, docId } = item;
|
|
57
|
+
const isActive = (0, client_1.isActiveSidebarItem)(item, activePath);
|
|
58
|
+
const isInternalLink = (0, isInternalUrl_1.default)(href);
|
|
59
|
+
// Get the correct plugin ID
|
|
60
|
+
const pluginId = (0, usePluginId_1.usePluginId)();
|
|
61
|
+
// Get task statistics for this doc
|
|
62
|
+
const stats = (0, useDocTaskStats_1.useDocTaskStats)(docId, pluginId);
|
|
63
|
+
const hasTasks = stats?.hasAnyTasks || false;
|
|
64
|
+
const isComplete = stats?.isComplete || false;
|
|
65
|
+
const badgeConfig = stats?.badgeConfig;
|
|
66
|
+
// Check if badge should be hidden
|
|
67
|
+
const hideBadge = (0, badgeStyles_1.shouldHideBadge)(badgeConfig);
|
|
68
|
+
const disableIcon = (0, badgeStyles_1.shouldDisableIcon)(badgeConfig);
|
|
69
|
+
// Animation tracking
|
|
70
|
+
const { hasAnimated, markAsAnimated } = (0, useTaskBadgeAnimation_1.useTaskBadgeAnimation)(pluginId, docId);
|
|
71
|
+
// Local state for animations
|
|
72
|
+
const [isAnimatingCompletion, setIsAnimatingCompletion] = (0, react_1.useState)(false);
|
|
73
|
+
const [isRemovingCheckmark, setIsRemovingCheckmark] = (0, react_1.useState)(false);
|
|
74
|
+
// Track previous completion state
|
|
75
|
+
const prevIsComplete = (0, react_1.useRef)(isComplete);
|
|
76
|
+
// Detect when completion state changes
|
|
77
|
+
(0, react_1.useEffect)(() => {
|
|
78
|
+
if (prevIsComplete.current !== isComplete) {
|
|
79
|
+
// When tasks become completed
|
|
80
|
+
if (isComplete && !prevIsComplete.current) {
|
|
81
|
+
// Only animate if not already animated this session
|
|
82
|
+
if (!hasAnimated) {
|
|
83
|
+
setIsAnimatingCompletion(true);
|
|
84
|
+
setIsRemovingCheckmark(false);
|
|
85
|
+
markAsAnimated();
|
|
86
|
+
// Clear animation state after animation completes
|
|
87
|
+
setTimeout(() => {
|
|
88
|
+
setIsAnimatingCompletion(false);
|
|
89
|
+
}, 400); // Match animation duration
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// When tasks are uncompleted (undo)
|
|
93
|
+
if (!isComplete && prevIsComplete.current) {
|
|
94
|
+
setIsRemovingCheckmark(true);
|
|
95
|
+
setIsAnimatingCompletion(false);
|
|
96
|
+
setTimeout(() => {
|
|
97
|
+
setIsRemovingCheckmark(false);
|
|
98
|
+
}, 400);
|
|
99
|
+
}
|
|
100
|
+
prevIsComplete.current = isComplete;
|
|
101
|
+
}
|
|
102
|
+
}, [isComplete, hasAnimated, markAsAnimated]);
|
|
103
|
+
// If no tasks or badge is hidden, render standard link
|
|
104
|
+
if (!hasTasks || !stats || hideBadge) {
|
|
105
|
+
return (react_1.default.createElement("li", { className: (0, clsx_1.default)(theme_common_1.ThemeClassNames.docs.docSidebarItemLink, theme_common_1.ThemeClassNames.docs.docSidebarItemLinkLevel(level), 'menu__list-item', className), key: label },
|
|
106
|
+
react_1.default.createElement(Link_1.default, { className: (0, clsx_1.default)('menu__link', !isInternalLink && styles_module_css_1.default.menuExternalLink, {
|
|
107
|
+
'menu__link--active': isActive,
|
|
108
|
+
}), autoAddBaseUrl: autoAddBaseUrl, "aria-current": isActive ? 'page' : undefined, to: href, ...(isInternalLink && {
|
|
109
|
+
onClick: onItemClick ? () => onItemClick(item) : undefined,
|
|
110
|
+
}), ...props },
|
|
111
|
+
react_1.default.createElement(LinkLabel, { label: label }),
|
|
112
|
+
!isInternalLink && react_1.default.createElement(ExternalLink_1.default, null))));
|
|
113
|
+
}
|
|
114
|
+
// Render link with task progress
|
|
115
|
+
const badgeClass = isComplete ? styles_module_css_1.default.taskBadgeComplete : styles_module_css_1.default.taskBadgeIncomplete;
|
|
116
|
+
const badgeStyles = (0, badgeStyles_1.getBadgeStyles)(badgeConfig, isComplete);
|
|
117
|
+
// Show icon only if complete AND icon not disabled
|
|
118
|
+
const showIcon = isComplete && !disableIcon;
|
|
119
|
+
// Determine checkmark visibility classes
|
|
120
|
+
const checkmarkClasses = (0, clsx_1.default)(styles_module_css_1.default.taskBadgeCheckmark, {
|
|
121
|
+
[styles_module_css_1.default.taskBadgeCheckmarkVisible]: showIcon && !isAnimatingCompletion && !isRemovingCheckmark,
|
|
122
|
+
[styles_module_css_1.default.taskBadgeCheckmarkAnimating]: showIcon && isAnimatingCompletion,
|
|
123
|
+
[styles_module_css_1.default.taskBadgeCheckmarkRemoving]: isRemovingCheckmark,
|
|
124
|
+
});
|
|
125
|
+
// Determine number visibility classes
|
|
126
|
+
const numberClasses = (0, clsx_1.default)(styles_module_css_1.default.taskBadgeNumber, {
|
|
127
|
+
[styles_module_css_1.default.taskBadgeNumberVisible]: !showIcon || isRemovingCheckmark,
|
|
128
|
+
[styles_module_css_1.default.taskBadgeNumberRemoving]: showIcon && isAnimatingCompletion,
|
|
129
|
+
});
|
|
130
|
+
return (react_1.default.createElement("li", { className: (0, clsx_1.default)(theme_common_1.ThemeClassNames.docs.docSidebarItemLink, theme_common_1.ThemeClassNames.docs.docSidebarItemLinkLevel(level), 'menu__list-item', className), key: label },
|
|
131
|
+
react_1.default.createElement(Link_1.default, { className: (0, clsx_1.default)('menu__link', styles_module_css_1.default.linkWithTasks, !isInternalLink && styles_module_css_1.default.menuExternalLink, {
|
|
132
|
+
'menu__link--active': isActive,
|
|
133
|
+
}), autoAddBaseUrl: autoAddBaseUrl, "aria-current": isActive ? 'page' : undefined, to: href, ...(isInternalLink && {
|
|
134
|
+
onClick: onItemClick ? () => onItemClick(item) : undefined,
|
|
135
|
+
}), ...props },
|
|
136
|
+
react_1.default.createElement("div", { className: styles_module_css_1.default.linkContent },
|
|
137
|
+
stats.hasSectionName && (react_1.default.createElement("div", { className: styles_module_css_1.default.sectionName }, stats.sectionName)),
|
|
138
|
+
react_1.default.createElement(LinkLabel, { label: label })),
|
|
139
|
+
react_1.default.createElement("div", { className: (0, clsx_1.default)(styles_module_css_1.default.taskBadge, badgeClass, isAnimatingCompletion && styles_module_css_1.default.taskBadgeAnimating), style: badgeStyles },
|
|
140
|
+
react_1.default.createElement("span", { className: numberClasses },
|
|
141
|
+
stats.completedTasks,
|
|
142
|
+
"/",
|
|
143
|
+
stats.totalTasks),
|
|
144
|
+
react_1.default.createElement("span", { className: checkmarkClasses }, icons_1.CHECKMARK_ICON)),
|
|
145
|
+
!isInternalLink && react_1.default.createElement(ExternalLink_1.default, null))));
|
|
146
|
+
}
|
|
147
|
+
// Memoize to prevent unnecessary re-renders
|
|
148
|
+
exports.default = react_1.default.memo(DocSidebarItemLink);
|
|
149
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/theme/DocSidebarItem/Link/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
.menuExternalLink {
|
|
2
|
+
align-items: center;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.linkLabel {
|
|
6
|
+
overflow: hidden;
|
|
7
|
+
display: -webkit-box;
|
|
8
|
+
line-clamp: 2;
|
|
9
|
+
-webkit-box-orient: vertical;
|
|
10
|
+
-webkit-line-clamp: 2;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/* Task progress badge styles */
|
|
14
|
+
.linkWithTasks {
|
|
15
|
+
display: grid;
|
|
16
|
+
grid-template-columns: 1fr auto;
|
|
17
|
+
grid-template-areas: "content badge";
|
|
18
|
+
align-items: center;
|
|
19
|
+
gap: 0.5rem;
|
|
20
|
+
padding: var(--ifm-menu-link-padding-vertical)
|
|
21
|
+
var(--ifm-menu-link-padding-horizontal);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.linkContent {
|
|
25
|
+
grid-area: content;
|
|
26
|
+
display: flex;
|
|
27
|
+
flex-direction: column;
|
|
28
|
+
gap: 0.125rem;
|
|
29
|
+
min-width: 0;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.sectionName {
|
|
33
|
+
font-weight: 700;
|
|
34
|
+
font-size: 0.75rem;
|
|
35
|
+
color: var(--ifm-color-emphasis-700);
|
|
36
|
+
line-height: 1.2;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.taskBadge {
|
|
40
|
+
grid-area: badge;
|
|
41
|
+
padding: 0.25rem 0.5rem;
|
|
42
|
+
border-radius: 4px;
|
|
43
|
+
font-weight: 700;
|
|
44
|
+
font-size: 0.75rem;
|
|
45
|
+
text-align: center;
|
|
46
|
+
white-space: nowrap;
|
|
47
|
+
min-width: 35px;
|
|
48
|
+
transition: background-color 0.2s ease, color 0.2s ease;
|
|
49
|
+
position: relative;
|
|
50
|
+
display: flex;
|
|
51
|
+
align-items: center;
|
|
52
|
+
justify-content: center;
|
|
53
|
+
height: 25px;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.taskBadgeAnimating {
|
|
57
|
+
animation: badgePulse 0.4s ease-out;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/* Badge number container */
|
|
61
|
+
.taskBadgeNumber {
|
|
62
|
+
position: absolute;
|
|
63
|
+
display: flex;
|
|
64
|
+
align-items: center;
|
|
65
|
+
justify-content: center;
|
|
66
|
+
opacity: 0;
|
|
67
|
+
transition: opacity 0.2s ease;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.taskBadgeNumber.taskBadgeNumberVisible {
|
|
71
|
+
opacity: 1;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.taskBadgeNumber.taskBadgeNumberRemoving {
|
|
75
|
+
animation: numberFadeOut 0.2s ease-out forwards;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/* Badge checkmark container */
|
|
79
|
+
.taskBadgeCheckmark {
|
|
80
|
+
position: absolute;
|
|
81
|
+
display: flex;
|
|
82
|
+
align-items: center;
|
|
83
|
+
justify-content: center;
|
|
84
|
+
opacity: 0;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.taskBadgeCheckmark.taskBadgeCheckmarkVisible {
|
|
88
|
+
opacity: 1;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.taskBadgeCheckmark.taskBadgeCheckmarkAnimating {
|
|
92
|
+
animation: checkmarkFadeIn 0.2s ease-out 0.2s forwards;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.taskBadgeCheckmark.taskBadgeCheckmarkRemoving {
|
|
96
|
+
animation: checkmarkFadeOut 0.2s ease-out forwards;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.taskBadgeIncomplete {
|
|
100
|
+
background-color: var(--task-badge-bg, var(--ifm-color-primary));
|
|
101
|
+
color: var(--task-badge-color, var(--ifm-color-primary-contrast-background));
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.taskBadgeComplete {
|
|
105
|
+
background-color: var(--task-badge-bg, var(--ifm-color-success));
|
|
106
|
+
color: var(--task-badge-color, var(--ifm-color-success-contrast-background));
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/* Dark mode support via CSS custom properties */
|
|
110
|
+
[data-theme="dark"] .taskBadgeIncomplete {
|
|
111
|
+
background-color: var(
|
|
112
|
+
--task-badge-bg-dark,
|
|
113
|
+
var(--task-badge-bg, var(--ifm-color-primary))
|
|
114
|
+
);
|
|
115
|
+
color: var(
|
|
116
|
+
--task-badge-color-dark,
|
|
117
|
+
var(--task-badge-color, var(--ifm-color-primary-contrast-background))
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
[data-theme="dark"] .taskBadgeComplete {
|
|
122
|
+
background-color: var(
|
|
123
|
+
--task-badge-bg-dark,
|
|
124
|
+
var(--task-badge-bg, var(--ifm-color-success))
|
|
125
|
+
);
|
|
126
|
+
color: var(
|
|
127
|
+
--task-badge-color-dark,
|
|
128
|
+
var(--task-badge-color, var(--ifm-color-success-contrast-background))
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/* Dark mode adjustments */
|
|
133
|
+
[data-theme="dark"] .sectionName {
|
|
134
|
+
color: var(--ifm-color-emphasis-600);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/* Keyframe animations */
|
|
138
|
+
@keyframes badgePulse {
|
|
139
|
+
0% {
|
|
140
|
+
box-shadow: 0 0 0 0 var(--ifm-color-success);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
50% {
|
|
144
|
+
box-shadow: 0 0 0 4px rgba(var(--ifm-color-success-rgb, 0, 200, 100), 0.4);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
100% {
|
|
148
|
+
box-shadow: 0 0 0 0 rgba(var(--ifm-color-success-rgb, 0, 200, 100), 0);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
@keyframes numberFadeOut {
|
|
153
|
+
0% {
|
|
154
|
+
opacity: 1;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
100% {
|
|
158
|
+
opacity: 0;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
@keyframes checkmarkFadeIn {
|
|
163
|
+
0% {
|
|
164
|
+
opacity: 0;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
100% {
|
|
168
|
+
opacity: 1;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
@keyframes checkmarkFadeOut {
|
|
173
|
+
0% {
|
|
174
|
+
opacity: 1;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
100% {
|
|
178
|
+
opacity: 0;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/* Responsive adjustments */
|
|
183
|
+
@media (max-width: 768px) {
|
|
184
|
+
.linkWithTasks {
|
|
185
|
+
gap: 0.375rem;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.sectionName {
|
|
189
|
+
font-size: 0.7rem;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
.taskBadge {
|
|
193
|
+
padding: 0.2rem 0.4rem;
|
|
194
|
+
font-size: 0.7rem;
|
|
195
|
+
min-width: 30px;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/theme/DocSidebarItem/index.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAI5C,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,uBAAuB,CAAC;AAEjD,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAC,IAAI,EAAE,GAAG,KAAK,EAAC,EAAE,KAAK,GAAG,SAAS,CAUzE"}
|
|
@@ -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.default = DocSidebarItem;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const Category_1 = __importDefault(require("@theme/DocSidebarItem/Category"));
|
|
9
|
+
const Link_1 = __importDefault(require("@theme/DocSidebarItem/Link"));
|
|
10
|
+
const Html_1 = __importDefault(require("@theme/DocSidebarItem/Html"));
|
|
11
|
+
function DocSidebarItem({ item, ...props }) {
|
|
12
|
+
switch (item.type) {
|
|
13
|
+
case 'category':
|
|
14
|
+
return react_1.default.createElement(Category_1.default, { item: item, ...props });
|
|
15
|
+
case 'html':
|
|
16
|
+
return react_1.default.createElement(Html_1.default, { item: item, ...props });
|
|
17
|
+
case 'link':
|
|
18
|
+
default:
|
|
19
|
+
return react_1.default.createElement(Link_1.default, { item: item, ...props });
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/theme/DocSidebarItem/index.tsx"],"names":[],"mappings":";;;;;AAMA,iCAUC;AAhBD,kDAA4C;AAC5C,8EAAoE;AACpE,sEAA4D;AAC5D,sEAA4D;AAG5D,SAAwB,cAAc,CAAC,EAAC,IAAI,EAAE,GAAG,KAAK,EAAQ;IAC5D,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,UAAU;YACb,OAAO,8BAAC,kBAAsB,IAAC,IAAI,EAAE,IAAI,KAAM,KAAK,GAAI,CAAC;QAC3D,KAAK,MAAM;YACT,OAAO,8BAAC,cAAkB,IAAC,IAAI,EAAE,IAAI,KAAM,KAAK,GAAI,CAAC;QACvD,KAAK,MAAM,CAAC;QACZ;YACE,OAAO,8BAAC,cAAkB,IAAC,IAAI,EAAE,IAAI,KAAM,KAAK,GAAI,CAAC;IACzD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
import type { Props } from '@theme/DocSidebarItems';
|
|
3
|
+
declare function DocSidebarItems({ items, ...props }: Props): ReactNode;
|
|
4
|
+
declare const _default: React.MemoExoticComponent<typeof DocSidebarItems>;
|
|
5
|
+
export default _default;
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/theme/DocSidebarItems/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAO,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAOlD,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,wBAAwB,CAAC;AAElD,iBAAS,eAAe,CAAC,EAAC,KAAK,EAAE,GAAG,KAAK,EAAC,EAAE,KAAK,GAAG,SAAS,CAS5D;;AAGD,wBAAqC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
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 () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const react_1 = __importStar(require("react"));
|
|
40
|
+
const client_1 = require("@docusaurus/plugin-content-docs/client");
|
|
41
|
+
const DocSidebarItem_1 = __importDefault(require("@theme/DocSidebarItem"));
|
|
42
|
+
function DocSidebarItems({ items, ...props }) {
|
|
43
|
+
const visibleItems = (0, client_1.useVisibleSidebarItems)(items, props.activePath);
|
|
44
|
+
return (react_1.default.createElement(client_1.DocSidebarItemsExpandedStateProvider, null, visibleItems.map((item, index) => (react_1.default.createElement(DocSidebarItem_1.default, { key: index, item: item, index: index, ...props })))));
|
|
45
|
+
}
|
|
46
|
+
// Optimize sidebar at each "level"
|
|
47
|
+
exports.default = (0, react_1.memo)(DocSidebarItems);
|
|
48
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/theme/DocSidebarItems/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAkD;AAClD,mEAGgD;AAChD,2EAAmD;AAInD,SAAS,eAAe,CAAC,EAAC,KAAK,EAAE,GAAG,KAAK,EAAQ;IAC/C,MAAM,YAAY,GAAG,IAAA,+BAAsB,EAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACrE,OAAO,CACL,8BAAC,6CAAoC,QAClC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CACjC,8BAAC,wBAAc,IAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,KAAM,KAAK,GAAI,CACpE,CAAC,CACmC,CACxC,CAAC;AACJ,CAAC;AAED,mCAAmC;AACnC,kBAAe,IAAA,YAAI,EAAC,eAAe,CAAC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DocTaskCounterProvider Component
|
|
3
|
+
* Manages task auto-numbering within a doc page
|
|
4
|
+
*/
|
|
5
|
+
import { type ReactNode, type ReactElement } from 'react';
|
|
6
|
+
export interface DocTaskCounterProviderProps {
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
}
|
|
9
|
+
export declare function DocTaskCounterProvider({ children }: DocTaskCounterProviderProps): ReactElement;
|
|
10
|
+
/**
|
|
11
|
+
* Hook to get the next task number for auto-numbering
|
|
12
|
+
* Must be called during render, not in effects or callbacks
|
|
13
|
+
*/
|
|
14
|
+
export declare function useTaskNumber(): number;
|
|
15
|
+
/**
|
|
16
|
+
* Hook to get the next example number for task-example auto-numbering
|
|
17
|
+
* Must be called during render, not in effects or callbacks
|
|
18
|
+
*/
|
|
19
|
+
export declare function useTaskExampleNumber(): number;
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/theme/DocTaskCounterProvider/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EACZ,KAAK,SAAS,EACd,KAAK,YAAY,EAKlB,MAAM,OAAO,CAAC;AAMf,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,sBAAsB,CAAC,EAAE,QAAQ,EAAE,EAAE,2BAA2B,GAAG,YAAY,CAoC9F;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAWtC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAW7C"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* DocTaskCounterProvider Component
|
|
4
|
+
* Manages task auto-numbering within a doc page
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.DocTaskCounterProvider = DocTaskCounterProvider;
|
|
41
|
+
exports.useTaskNumber = useTaskNumber;
|
|
42
|
+
exports.useTaskExampleNumber = useTaskExampleNumber;
|
|
43
|
+
const react_1 = __importStar(require("react"));
|
|
44
|
+
const router_1 = require("@docusaurus/router");
|
|
45
|
+
const DocTaskCounterContext = (0, react_1.createContext)(undefined);
|
|
46
|
+
function DocTaskCounterProvider({ children }) {
|
|
47
|
+
const counterRef = (0, react_1.useRef)(0);
|
|
48
|
+
const exampleCounterRef = (0, react_1.useRef)(0);
|
|
49
|
+
const location = (0, router_1.useLocation)();
|
|
50
|
+
const getNextTaskNumber = (0, react_1.useCallback)(() => {
|
|
51
|
+
counterRef.current += 1;
|
|
52
|
+
return counterRef.current;
|
|
53
|
+
}, []);
|
|
54
|
+
const getNextExampleNumber = (0, react_1.useCallback)(() => {
|
|
55
|
+
exampleCounterRef.current += 1;
|
|
56
|
+
return exampleCounterRef.current;
|
|
57
|
+
}, []);
|
|
58
|
+
const resetCounter = (0, react_1.useCallback)(() => {
|
|
59
|
+
counterRef.current = 0;
|
|
60
|
+
exampleCounterRef.current = 0;
|
|
61
|
+
}, []);
|
|
62
|
+
const contextValue = {
|
|
63
|
+
getNextTaskNumber,
|
|
64
|
+
getNextExampleNumber,
|
|
65
|
+
resetCounter,
|
|
66
|
+
};
|
|
67
|
+
// Reset counter when location changes (page navigation)
|
|
68
|
+
react_1.default.useEffect(() => {
|
|
69
|
+
resetCounter();
|
|
70
|
+
}, [location.pathname, resetCounter]);
|
|
71
|
+
return (react_1.default.createElement(DocTaskCounterContext.Provider, { value: contextValue }, children));
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Hook to get the next task number for auto-numbering
|
|
75
|
+
* Must be called during render, not in effects or callbacks
|
|
76
|
+
*/
|
|
77
|
+
function useTaskNumber() {
|
|
78
|
+
const context = (0, react_1.useContext)(DocTaskCounterContext);
|
|
79
|
+
if (!context) {
|
|
80
|
+
throw new Error('useTaskNumber must be used within a DocTaskCounterProvider');
|
|
81
|
+
}
|
|
82
|
+
// Get task number during render using useRef to maintain stability
|
|
83
|
+
const taskNumberRef = (0, react_1.useRef)(null);
|
|
84
|
+
if (taskNumberRef.current === null) {
|
|
85
|
+
taskNumberRef.current = context.getNextTaskNumber();
|
|
86
|
+
}
|
|
87
|
+
return taskNumberRef.current;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Hook to get the next example number for task-example auto-numbering
|
|
91
|
+
* Must be called during render, not in effects or callbacks
|
|
92
|
+
*/
|
|
93
|
+
function useTaskExampleNumber() {
|
|
94
|
+
const context = (0, react_1.useContext)(DocTaskCounterContext);
|
|
95
|
+
if (!context) {
|
|
96
|
+
throw new Error('useTaskExampleNumber must be used within a DocTaskCounterProvider');
|
|
97
|
+
}
|
|
98
|
+
// Get example number during render using useRef to maintain stability
|
|
99
|
+
const exampleNumberRef = (0, react_1.useRef)(null);
|
|
100
|
+
if (exampleNumberRef.current === null) {
|
|
101
|
+
exampleNumberRef.current = context.getNextExampleNumber();
|
|
102
|
+
}
|
|
103
|
+
return exampleNumberRef.current;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/theme/DocTaskCounterProvider/index.tsx"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBH,wDAoCC;AAMD,sCAWC;AAMD,oDAWC;AAvFD,+CAOe;AACf,+CAAiD;AAGjD,MAAM,qBAAqB,GAAG,IAAA,qBAAa,EAAyC,SAAS,CAAC,CAAC;AAM/F,SAAgB,sBAAsB,CAAC,EAAE,QAAQ,EAA+B;IAC9E,MAAM,UAAU,GAAG,IAAA,cAAM,EAAS,CAAC,CAAC,CAAC;IACrC,MAAM,iBAAiB,GAAG,IAAA,cAAM,EAAS,CAAC,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAA,oBAAW,GAAE,CAAC;IAE/B,MAAM,iBAAiB,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QACzC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;QACxB,OAAO,UAAU,CAAC,OAAO,CAAC;IAC5B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,oBAAoB,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QAC5C,iBAAiB,CAAC,OAAO,IAAI,CAAC,CAAC;QAC/B,OAAO,iBAAiB,CAAC,OAAO,CAAC;IACnC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,YAAY,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QACpC,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC;QACvB,iBAAiB,CAAC,OAAO,GAAG,CAAC,CAAC;IAChC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,YAAY,GAAQ;QACxB,iBAAiB;QACjB,oBAAoB;QACpB,YAAY;KACb,CAAC;IAEF,wDAAwD;IACxD,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,YAAY,EAAE,CAAC;IACjB,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IAEtC,OAAO,CACL,8BAAC,qBAAqB,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,IAChD,QAAQ,CACsB,CAClC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,qBAAqB,CAAC,CAAC;IAClD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IACD,mEAAmE;IACnE,MAAM,aAAa,GAAG,IAAA,cAAM,EAAgB,IAAI,CAAC,CAAC;IAClD,IAAI,aAAa,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QACnC,aAAa,CAAC,OAAO,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IACtD,CAAC;IACD,OAAO,aAAa,CAAC,OAAO,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB;IAClC,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,qBAAqB,CAAQ,CAAC;IACzD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IACD,sEAAsE;IACtE,MAAM,gBAAgB,GAAG,IAAA,cAAM,EAAgB,IAAI,CAAC,CAAC;IACrD,IAAI,gBAAgB,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QACtC,gBAAgB,CAAC,OAAO,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAC5D,CAAC;IACD,OAAO,gBAAgB,CAAC,OAAiB,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MDXComponents wrapper
|
|
3
|
+
* Makes Task components available in MDX
|
|
4
|
+
*
|
|
5
|
+
* NOTE: Users don't write <Task>, <Text>, <Hint>, <Solution> directly in MDX.
|
|
6
|
+
* Instead, they write directive syntax (:::task[Name]) which is transformed
|
|
7
|
+
* by our remark plugin into these JSX components during compilation.
|
|
8
|
+
*
|
|
9
|
+
* These components must still be exported here so they're available when
|
|
10
|
+
* the transformed JSX is rendered.
|
|
11
|
+
*
|
|
12
|
+
* TaskProgression, TaskProgressionOverview, and TaskPlaceholder ARE used directly by users.
|
|
13
|
+
*
|
|
14
|
+
* CRITICAL FIX: Import Code and Pre directly from theme-classic to avoid circular resolution
|
|
15
|
+
* when DocRoot uses direct imports (which breaks the @theme-original chain).
|
|
16
|
+
*/
|
|
17
|
+
declare const _default: any;
|
|
18
|
+
export default _default;
|
|
19
|
+
//# sourceMappingURL=MDXComponents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MDXComponents.d.ts","sourceRoot":"","sources":["../../src/theme/MDXComponents.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;;AAiBH,wBAgBE"}
|