From 628bbf6d06d9d99e80c977ee5438a0cfc6e16c35 Mon Sep 17 00:00:00 2001 From: Tran Tien Loi Date: Mon, 23 Feb 2026 16:41:10 +0700 Subject: [PATCH] feat: add flow plugin --- flow/.gitignore | 29 - flow/FEATURE_COMPARISON.md | 114 - flow/IMPLEMENTATION_SUMMARY.md | 154 - flow/README.md | 189 - flow/USAGE.md | 367 - flow/build-dist.sh | 34 - flow/build.sh | 7 +- flow/index.css | 493 - flow/index.css.map | 7 - flow/index.js | 12008 ++++++++++++++++++++ flow/index.js.map | 7 + flow/package-lock.json | 3099 +++++ flow/package.json | 22 +- flow/postcss.config.js | 5 + flow/src/Page.tsx | 675 -- flow/src/components/Page.tsx | 439 + flow/src/css.d.ts | 4 + flow/src/flow-plugin.css | 179 + flow/src/flow-plugin.generated.css | 1434 +++ flow/src/flow-styles.ts | 4 + flow/src/flow/ASILBadge.tsx | 89 + flow/src/flow/ASILSelect.tsx | 95 + flow/src/flow/CustomDialog.tsx | 80 + flow/src/flow/DaFlowEditor.tsx | 241 + flow/src/flow/FlowDirectionSelector.tsx | 75 + flow/src/flow/FlowInterface.tsx | 211 + flow/src/flow/FlowItem.tsx | 225 + flow/src/flow/FlowItemEditor.tsx | 240 + flow/src/flow/FlowPromptInventory.ts | 61 + flow/src/flow/RiskAssessmentEditor.tsx | 247 + flow/src/flow/RiskAssessmentMarkdown.tsx | 45 + flow/src/flow/flow.colors.ts | 12 + flow/src/flow/flow.utils.ts | 58 + flow/src/index.ts | 7 +- flow/src/lib/utils.ts | 5 + flow/src/mockData.ts | 111 - flow/src/styles.css | 571 - flow/src/{types.ts => types/flow.type.ts} | 4 +- flow/src/utils.ts | 118 - flow/test.html | 181 - 40 files changed, 18886 insertions(+), 3060 deletions(-) delete mode 100644 flow/.gitignore delete mode 100644 flow/FEATURE_COMPARISON.md delete mode 100644 flow/IMPLEMENTATION_SUMMARY.md delete mode 100644 flow/README.md delete mode 100644 flow/USAGE.md delete mode 100755 flow/build-dist.sh delete mode 100644 flow/index.css delete mode 100644 flow/index.css.map create mode 100644 flow/index.js create mode 100644 flow/index.js.map create mode 100644 flow/package-lock.json create mode 100644 flow/postcss.config.js delete mode 100644 flow/src/Page.tsx create mode 100644 flow/src/components/Page.tsx create mode 100644 flow/src/css.d.ts create mode 100644 flow/src/flow-plugin.css create mode 100644 flow/src/flow-plugin.generated.css create mode 100644 flow/src/flow-styles.ts create mode 100644 flow/src/flow/ASILBadge.tsx create mode 100644 flow/src/flow/ASILSelect.tsx create mode 100644 flow/src/flow/CustomDialog.tsx create mode 100644 flow/src/flow/DaFlowEditor.tsx create mode 100644 flow/src/flow/FlowDirectionSelector.tsx create mode 100644 flow/src/flow/FlowInterface.tsx create mode 100644 flow/src/flow/FlowItem.tsx create mode 100644 flow/src/flow/FlowItemEditor.tsx create mode 100644 flow/src/flow/FlowPromptInventory.ts create mode 100644 flow/src/flow/RiskAssessmentEditor.tsx create mode 100644 flow/src/flow/RiskAssessmentMarkdown.tsx create mode 100644 flow/src/flow/flow.colors.ts create mode 100644 flow/src/flow/flow.utils.ts create mode 100644 flow/src/lib/utils.ts delete mode 100644 flow/src/mockData.ts delete mode 100644 flow/src/styles.css rename flow/src/{types.ts => types/flow.type.ts} (92%) delete mode 100644 flow/src/utils.ts delete mode 100644 flow/test.html diff --git a/flow/.gitignore b/flow/.gitignore deleted file mode 100644 index f0a8787..0000000 --- a/flow/.gitignore +++ /dev/null @@ -1,29 +0,0 @@ -# Dependencies -node_modules/ -package-lock.json - -# Build outputs -dist/ -index.js -index.js.map -*.log - -# Development -.DS_Store -*.swp -*.swo -*~ - -# IDE -.vscode/ -.idea/ -*.sublime-* - -# Environment -.env -.env.local -.env.*.local - -# Temporary files -*.tmp -.cache/ diff --git a/flow/FEATURE_COMPARISON.md b/flow/FEATURE_COMPARISON.md deleted file mode 100644 index b211467..0000000 --- a/flow/FEATURE_COMPARISON.md +++ /dev/null @@ -1,114 +0,0 @@ -# Feature Comparison: Reference vs Implementation - -## Reference (PrototypeTabFlow.tsx) - -### Features Used -✅ Individual cell editing with modal -✅ State management with original data tracking -✅ Save/Cancel operations -✅ Loading states during save -✅ Edit mode toggle -✅ Auto-save on cell updates -✅ ASIL badge display -✅ Flow step titles -✅ Structured data parsing - -### Features NOT Implemented (not in reference) -❌ Full JSON editor (DaFlowEditor) -❌ Add/Remove steps dynamically -❌ Add/Remove flows within steps -❌ Signal flow editor with direction selector -❌ Full-screen mode - -## Current Implementation (Page.tsx) - -### Implemented Features -✅ **Individual cell editing** - Click cells to edit in modal (in view mode) -✅ **Bulk JSON editing** - Edit entire structure as JSON (in edit mode) -✅ **Single edit button** - Matches reference behavior exactly -✅ **State management** - Original data preserved for cancel -✅ **Auto-save** - Cell changes save immediately -✅ **Loading states** - Visual feedback during saves -✅ **ASIL badges** - Display safety levels -✅ **Modal dialogs** - Professional editing experience -✅ **Custom CSS** - No Tailwind dependency -✅ **Smooth animations** - Fade-in and slide-up effects - -### Key Differences from Reference - -| Feature | Reference | Implementation | Match? | -|---------|-----------|----------------|--------| -| Edit Button | Single "Edit" button | Single "Edit" button | ✅ | -| View Mode | Table with clickable cells | Table with clickable cells | ✅ | -| Cell Editing | Opens FlowItemEditor modal | Opens FlowItemEditor modal | ✅ | -| Bulk Editing | DaFlowEditor component | Simple JSON textarea | ⚠️ Simplified | -| CSS Framework | Tailwind CSS | Custom CSS classes | ⚠️ Different | -| Save Behavior | Auto-save on cell edit | Auto-save on cell edit | ✅ | -| ASIL Checkbox | Only in view mode | Only in view mode | ✅ | -| Components | Uses shadcn/ui components | Custom HTML elements | ⚠️ Different | -| Icons | react-icons (TbEdit, etc.) | SVG icons inline | ⚠️ Different | -| Workflow | View → Edit → View | View → Edit → View | ✅ | - -## Advantages of Current Implementation - -1. **Simpler Architecture**: No external UI library dependencies -2. **Lighter Weight**: Custom CSS is smaller than Tailwind bundle -3. **Auto-save for Quick Edits**: Individual cell changes save immediately -4. **Professional Modal UI**: Full-screen overlay with smooth animations -5. **Maintains Reference Behavior**: Same workflow as FlowArchitect component - -## Workflow Comparison - -### Reference Workflow (FlowArchitect): -``` -View Mode (Table displayed) - → Click any cell → Modal editor → Save (auto-saves) - → Continue clicking cells to edit more - - → Click "Edit" button → DaFlowEditor (structured editor) - → Edit structure → Click "Save" or "Cancel" - → Back to View Mode -``` - -### Current Implementation (Matches Reference): -``` -View Mode (Table displayed) - → Click any cell → FlowItemEditor modal → Save (auto-saves) - → Continue clicking cells to edit more - - → Click "Edit" button → JSON Editor (textarea) - → Edit structure → Click "Save" or "Cancel" - → Back to View Mode -``` - -**Key Match**: Both allow cell editing in view mode AND bulk editing via "Edit" button! - -## CSS Class Mapping - -| Tailwind (Reference) | Custom CSS (Implementation) | -|---------------------|---------------------------| -| `bg-white` | `background-color: var(--color-white)` | -| `rounded-md` | `border-radius: 0.375rem` | -| `px-10 py-4` | `padding: 1rem 2.5rem` | -| `text-2xl font-bold` | `font-size: 1.5rem; font-weight: 700` | -| `bg-primary text-white` | `background-color: var(--color-primary); color: var(--color-white)` | -| `flex items-center gap-2` | `display: flex; align-items: center; gap: 0.5rem` | -| `hover:bg-gray-50` | `.flow-cell-editable:hover { background-color: var(--color-gray-50) }` | - -## Migration Notes - -- Reference uses `cn()` utility for class names - we use plain className strings -- Reference uses Button/Checkbox/Label from shadcn/ui - we use native HTML -- Reference uses TbEdit icons - we use inline SVG icons -- Both implementations use the same data structure and utilities (`setNestedValue`, `getNestedValue`) -- Both support the same flow data format - -## Future Enhancement Options - -If needed, could add from reference: -1. Dynamic step/flow management (add/remove) -2. Full-screen mode toggle -3. Signal flow direction selector -4. More sophisticated flow editor (DaFlowEditor) -5. Undo/redo functionality - diff --git a/flow/IMPLEMENTATION_SUMMARY.md b/flow/IMPLEMENTATION_SUMMARY.md deleted file mode 100644 index 654c7c4..0000000 --- a/flow/IMPLEMENTATION_SUMMARY.md +++ /dev/null @@ -1,154 +0,0 @@ -# Flow Plugin Implementation Summary - -## Overview -Enhanced the Flow plugin by learning from the reference implementation (`PrototypeTabFlow.tsx` / `FlowArchitect` component) and implementing similar functionality with custom CSS (no Tailwind dependency). - -## Key Features Implemented - -### 1. **View Mode (Default)** -- Displays the flow table with all data -- **ALL cells are clickable** - click any cell to edit it in a modal -- Hover over cells shows an edit icon -- Show/Hide ASIL levels checkbox -- Individual cell edits auto-save immediately - -### 2. **Edit Mode** -- Single "Edit" button switches to structured editor -- JSON textarea for bulk editing the entire flow structure -- Cancel/Save buttons to commit or discard changes -- Loading state displayed during save operations - -### 3. **Individual Cell Editing (FlowItemEditor Modal)** -- Click any cell in view mode to open modal editor -- Auto-saves changes when closing the modal -- Supports both plain text and JSON data formats -- Full-screen modal overlay with backdrop -- Smooth fade-in and slide-up animations - -### 4. **Better State Management** -- Tracks original data for proper cancel functionality -- Loading state during save operations -- Proper data persistence using `setNestedValue` utility -- Cell edits update via `updateFlowCell()` and auto-save - -### 5. **Enhanced UI/UX** -- Loading spinner during save operations -- Single "Edit" button (matches reference implementation) -- Modal overlay with smooth animations -- Visual feedback on hover for editable cells -- ASIL checkbox only shows in view mode - -## Architecture Improvements - -### State Structure -```typescript -- isEditing: boolean // Controls view vs edit mode -- originalFlowData: FlowStep[] // For cancel operations -- flowData: FlowStep[] // Current working data -- isSaving: boolean // Loading state -- currentEditingCell: EditingCell | null // Track which cell is being edited -- showASIL: boolean // Toggle ASIL badge display -- flowString: string // JSON string for bulk editing -``` - -### Key Functions -- `updateFlowCell()`: Updates a specific cell and auto-saves -- `openCellEditor()`: Opens modal for cell editing -- `handleSave()`: Unified save handler with loading state -- `handleCancel()`: Restores original data - -## CSS Implementation - -All styles implemented without Tailwind dependency: - -### New CSS Classes -- `.flow-modal-overlay`: Full-screen modal backdrop -- `.flow-modal-content`: Modal dialog container -- `.flow-modal-header/body/footer`: Modal sections -- `.flow-cell-editable`: Editable cell styles -- `.flow-cell-edit-icon`: Edit icon overlay -- `.flow-button-sm`: Small button variant -- `.flow-loading`: Loading state display - -### Animations -- `fadeIn`: Smooth modal backdrop appearance -- `slideUp`: Modal content slide-up animation -- `spin`: Loading spinner rotation - -## Component Structure - -``` -Page (Main Component) -├── Header -│ ├── Title -│ └── Action Buttons (Edit Cells / Edit JSON / Done) -├── Content Area -│ ├── JSON Editor (when in bulk edit mode) -│ └── Flow Table (when viewing/cell editing) -│ └── FlowItem components (with optional onEdit) -└── FlowItemEditor Modal (when editing a cell) -``` - -## Usage Flow - -### View Mode (Default): -1. View the flow table with all data displayed -2. Click on ANY cell to open modal editor -3. Edit content in modal (supports text or JSON) -4. Click "Save" - changes are auto-saved immediately -5. Click on another cell to edit more, or toggle ASIL checkbox - -### Edit Mode (Bulk Structure Editing): -1. Click "Edit" button in header -2. Edit entire flow structure as JSON in textarea -3. Click "Save" to commit changes OR "Cancel" to discard -4. Returns to view mode after save/cancel - -## Key Behaviors (Matching Reference) - -1. **Cell editing in VIEW mode**: When NOT in edit mode, all cells are clickable -2. **Edit mode shows JSON editor**: The "Edit" button switches to a structured editor -3. **ASIL checkbox only in view mode**: Hidden when in edit mode -4. **Auto-save for cell edits**: Individual cell changes save immediately -5. **Manual save for bulk edits**: JSON editor requires explicit Save/Cancel -6. **Non-destructive editing**: Original data preserved for cancel operations - -## Benefits - -1. **Non-destructive editing**: Original data preserved until save -2. **Better user feedback**: Loading states, hover effects, smooth animations -3. **Flexible editing**: Both granular (cell) and bulk (JSON) editing -4. **Professional UI**: Modal dialogs, proper button states, consistent styling -5. **Type safety**: Proper TypeScript types for all editing states -6. **Auto-save for quick edits**: Cell edits automatically saved -7. **Matches reference behavior**: Same workflow as PrototypeTabFlow.tsx - -## Files Modified - -1. **src/Page.tsx** - - Added dual editing modes - - Implemented FlowItemEditor modal component - - Added individual cell editing logic - - Enhanced state management - - Updated FlowItem to support onEdit callback - -2. **src/styles.css** - - Added modal/dialog styles - - Added editable cell styles - - Added animation keyframes - - Added loading state styles - -## Port Configuration - -Port changed from 4000 to 4002 in: -- `package.json`: dev:serve script -- `README.md`: All documentation references - -## Testing Recommendations - -1. Test cell editing with various data formats -2. Verify JSON editing with complex structures -3. Test cancel operations in both modes -4. Verify auto-save functionality -5. Test ASIL badge display and toggle -6. Verify modal animations and interactions diff --git a/flow/README.md b/flow/README.md deleted file mode 100644 index 3bce2aa..0000000 --- a/flow/README.md +++ /dev/null @@ -1,189 +0,0 @@ -# Sample TSX Plugin - -A React plugin template built with TypeScript and TSX that can be mounted into other projects via npm link or served standalone. - -## Features - -- TypeScript + TSX syntax with React -- Auto-rebuild and hot-reload development server -- Production builds with minification -- Can import and bundle npm packages -- Hot-loadable into host applications -- Accepts `data` and `config` props from host - -## Quick Start - -### Installation - -```bash -npm install -``` - -### Development - -Run the development server with auto-rebuild on file changes: - -```bash -npm run dev -``` - -This will: -- Start a development server at `http://localhost:4002` -- Watch `src/` directory for changes -- Auto-rebuild `index.js` on save -- Serve with CORS enabled and caching disabled - -Access your plugin at: **`http://localhost:4002/index.js`** - -### Production Build - -Build optimized, minified production bundle: - -```bash -npm run build -``` - -Output: `dist/index.js` and `dist/index.js.map` - -## Project Structure - -``` -sample-tsx-plugin/ -├── src/ -│ ├── index.ts # Plugin entry point -│ ├── Page.tsx # Main React component -│ └── components/ -│ └── Box.tsx # Example component -├── build.sh # Development build script -├── build-dist.sh # Production build script -├── index.js # Development build output -└── dist/ # Production build output (created on build) - └── index.js -``` - -## Scripts - -| Command | Description | -|---------|-------------| -| `npm run dev` | Start development server with auto-rebuild on port 4002 | -| `npm run dev:watch` | Only watch and rebuild (no server) | -| `npm run dev:serve` | Only serve files on port 4002 (no auto-rebuild) | -| `npm run build` | Build production bundle to `dist/` folder | - -## Using npm Packages - -### Option 1: Bundle the package (Self-contained) - -Add dependencies to `package.json` and import them normally: - -```json -{ - "dependencies": { - "dayjs": "^1.11.11" - } -} -``` - -Then in your code: -```typescript -import dayjs from 'dayjs'; - -export default function Page({ data, config }: PageProps) { - const formattedDate = dayjs().format('YYYY-MM-DD HH:mm:ss'); - return
Current: {formattedDate}
; -} -``` - -The build process will automatically bundle the package into your plugin. - -### Option 2: Use host packages (Shared dependencies) - -For packages already loaded in the host environment (React, etc.): - -1. Add to `--external` flags in `build.sh` or `build-dist.sh` -2. Import them normally - they'll be resolved at runtime by the host - -Example: -```typescript -// React imports are marked as external and provided by host -import * as React from 'react'; -import * as ReactDOM from 'react-dom/client'; -``` - -Currently external packages: -- `react` -- `react-dom` -- `react-dom/client` - -## Plugin API - -Your plugin exports ESM modules with the following interface: - -### Option 1: Export components (recommended) -```typescript -// src/index.ts -export const components = { Page }; -// or -export { Page }; -// or -export default Page; -``` - -### Option 2: Export mount/unmount functions -```typescript -// src/index.ts -export function mount(el: HTMLElement, props?: any) { - const root = ReactDOM.createRoot(el); - root.render(React.createElement(Page, props || {})); - (el as any).__root = root; -} - -export function unmount(el: HTMLElement) { - const root = (el as any).__root; - if (root && root.unmount) root.unmount(); - delete (el as any).__root; -} -``` - -### Page Component Props -```typescript -type PageProps = { - data?: any; // Dynamic data from host - config?: any; // Configuration from plugin settings -}; -``` - -The host loader will automatically detect and use your exports (`Page`, `components.Page`, or `mount/unmount`). - -## Development Workflow - -1. **Start development**: `npm run dev` -2. **Edit files** in `src/` directory -3. **Save changes** - auto-rebuild happens automatically -4. **Reload** your browser to see changes at `http://localhost:4002/index.js` - -## Deployment - -1. Build production bundle: `npm run build` -2. Deploy `dist/index.js` to your hosting service -3. Link the plugin in your host application - -## Technical Details - -### Build Configuration - -- **Bundler**: esbuild -- **Format**: ESM (ECMAScript Modules) -- **Platform**: Browser -- **JSX**: Automatic runtime -- **Source maps**: Enabled in both dev and production -- **Minification**: Production only -- **Content-Type**: Served as `application/javascript` - -### Development Server - -- **Server**: http-server -- **Port**: 4002 -- **CORS**: Enabled -- **Caching**: Disabled (`-c-1`) -- **File watcher**: nodemon (watches `.ts` and `.tsx` files) diff --git a/flow/USAGE.md b/flow/USAGE.md deleted file mode 100644 index eeb3df1..0000000 --- a/flow/USAGE.md +++ /dev/null @@ -1,367 +0,0 @@ -# Flow Plugin Usage Guide - -## Overview - -The Flow Plugin displays end-to-end system flows in a tabular format, showing the data flow from off-board (Smart Phone, Cloud) through vehicle-to-cloud communication to on-board systems (SDV Runtime, Embedded, Sensors). - -## Features - -- **Tabular Flow Visualization**: Shows flows across 9 columns organized into Off-board, V2C, and On-board sections -- **ASIL Level Support**: Display ASIL/QM safety levels for each flow item -- **Signal Flow Indicators**: Visual arrows showing direction of data flow between systems -- **Detailed View**: Click on any cell to see detailed information -- **JSON Editor**: Edit flow data directly in JSON format -- **Responsive Design**: Clean, professional styling without external CSS frameworks - -## Data Structure - -### Flow Data Format - -The plugin expects a `data.flow` property with the following structure: - -```typescript -{ - data: { - flow: [ - { - title: "Step Title", - flows: [ - { - offBoard: { - smartPhone: string, - p2c: SignalFlow | null, - cloud: string - }, - v2c: SignalFlow | null, - onBoard: { - sdvRuntime: string, - s2s: SignalFlow | null, - embedded: string, - s2e: SignalFlow | null, - sensors: string - } - } - ] - } - ] - } -} -``` - -### SignalFlow Type - -```typescript -{ - direction: 'left' | 'right' | 'bi-direction' | 'reverse-bi-direction' | 'down-right' | 'down-left', - signal: string -} -``` - -## Cell Data Formats - -Each cell (except signal flow cells) can contain data in two formats: - -### 1. Simple String with ASIL Level - -``` -"Description text " -"Description text " -"Description text " -"Description text " -"Description text " -``` - -### 2. JSON Object (Recommended) - -```json -{ - "type": "Mobile App", - "component": "Authentication Service", - "description": "User initiates login", - "preAsilLevel": "QM", - "postAsilLevel": "QM", - "riskAssessment": "Optional risk assessment text", - "approvedBy": "John Doe", - "approvedAt": "2025-01-01T00:00:00Z" -} -``` - -**Required Fields:** -- `description`: Main text to display -- `preAsilLevel`: Pre-mitigation ASIL level (A, B, C, D, or QM) - -**Optional Fields:** -- `type`: Component type -- `component`: Component name -- `postAsilLevel`: Post-mitigation ASIL level (defaults to QM) -- `riskAssessment`: Risk assessment details -- `approvedBy`: Approver name -- `approvedAt`: Approval timestamp -- Custom fields are also supported - -## Signal Flow Data - -Signal flow cells (p2c, v2c, s2s, s2e) can contain: - -### Simple Format -```json -{ - "direction": "right", - "signal": "Signal Name" -} -``` - -### Detailed Format -```json -{ - "direction": "bi-direction", - "signal": "{\"endpointUrl\": \"https://api.example.com\", \"name\": \"Auth Request\", \"protocol\": \"HTTPS\"}" -} -``` - -## Example Usage - -### Basic Example - -```javascript -const flowData = [ - { - title: "User Authentication Flow", - flows: [ - { - offBoard: { - smartPhone: "User Login ", - p2c: { - direction: "right", - signal: "Auth Request" - }, - cloud: "Validate Credentials " - }, - v2c: { - direction: "bi-direction", - signal: "Vehicle Status" - }, - onBoard: { - sdvRuntime: "Process Command ", - s2s: { - direction: "right", - signal: "CAN Signal" - }, - embedded: "Execute Action ", - s2e: { - direction: "left", - signal: "Feedback" - }, - sensors: "Read Sensor " - } - } - ] - } -]; - -// Pass to plugin - -``` - -### Advanced Example with JSON Details - -```javascript -const advancedFlowData = [ - { - title: "Vehicle Control Flow", - flows: [ - { - offBoard: { - smartPhone: JSON.stringify({ - type: "Mobile App", - component: "Remote Start Module", - description: "User initiates remote start", - preAsilLevel: "A", - postAsilLevel: "QM", - approvedBy: "Safety Team" - }), - p2c: { - direction: "right", - signal: JSON.stringify({ - endpointUrl: "https://api.vehicle.com/control", - name: "Remote Start Command", - protocol: "HTTPS", - encryption: "TLS 1.3" - }) - }, - cloud: JSON.stringify({ - type: "Cloud Service", - component: "Command Processor", - description: "Validates and routes command", - preAsilLevel: "B", - postAsilLevel: "QM" - }) - }, - v2c: { - direction: "down-right", - signal: JSON.stringify({ - name: "Vehicle.Control.Start", - protocol: "MQTT" - }) - }, - onBoard: { - sdvRuntime: JSON.stringify({ - type: "Runtime Service", - component: "Vehicle OS", - description: "Executes start sequence", - preAsilLevel: "C", - postAsilLevel: "B" - }), - s2s: { - direction: "bi-direction", - signal: "System Bus Signal" - }, - embedded: JSON.stringify({ - type: "ECU", - component: "Engine Control Module", - description: "Starts engine", - preAsilLevel: "D", - postAsilLevel: "C" - }), - s2e: { - direction: "right", - signal: "Actuator Command" - }, - sensors: JSON.stringify({ - type: "Sensor Array", - component: "Engine Sensors", - description: "Monitors engine status", - preAsilLevel: "QM", - postAsilLevel: "QM" - }) - } - } - ] - } -]; -``` - -## Column Structure - -The flow table has 9 columns organized into 3 groups: - -### Off-board (3 columns) -1. **Smart Phone**: Mobile application or device -2. **p2c** (Phone to Cloud): Signal flow indicator -3. **Cloud**: Cloud service or backend - -### Vehicle-to-Cloud (1 column) -4. **v2c** (Vehicle to Cloud): Bi-directional communication indicator - -### On-board (5 columns) -5. **SDV Runtime**: Software-defined vehicle runtime -6. **s2s** (System to System): Internal system communication -7. **Embedded**: Embedded systems / ECUs -8. **s2e** (System to ECU): System to embedded communication -9. **Sensors/Actuators**: Physical sensors and actuators - -## Features - -### Edit Mode -- Click the "Edit" button to enter JSON edit mode -- Modify the flow data directly -- Click "Save" to apply changes or "Cancel" to discard - -### ASIL Display -- Check "Show ASIL/QM Levels" to display safety level badges -- Badges are color-coded: - - ASIL-D: Red (highest criticality) - - ASIL-C: Orange - - ASIL-B: Yellow - - ASIL-A: Blue - - QM: Gray (Quality Management, lowest criticality) - -### Detailed View -- Click any cell to see detailed information in a popup -- View all metadata including type, component, description, ASIL levels, and custom fields -- Links (URLs) are automatically detected and made clickable - -### Signal Flow Visualization -- Arrows indicate data flow direction: - - → : Left to right - - ← : Right to left - - ↔ : Bi-directional - - ↕ : Reverse bi-directional - - ⤵ : Down-right - - ⤴ : Down-left - -## Styling - -The plugin includes custom CSS without external dependencies. All styles are scoped to the plugin and use CSS custom properties for easy theming: - -```css -:root { - --color-primary: #3b82f6; - --color-secondary: #6366f1; - /* ... more variables */ -} -``` - -## Configuration - -Pass configuration through the `config` prop: - -```javascript - { - console.log('Flow updated:', newFlowJson); - // Save to backend or state - } - }} -/> -``` - -## Best Practices - -1. **Use JSON format** for cells with complex data or ASIL levels -2. **Include meaningful descriptions** for each step -3. **Document ASIL levels** for safety-critical systems -4. **Use consistent naming** for signal flows -5. **Group related flows** under the same step title -6. **Keep titles concise** but descriptive - -## Troubleshooting - -### Flow not displaying -- Check that `data.flow` is properly formatted -- Verify JSON syntax if using JSON strings in cells -- Check browser console for errors - -### ASIL badges not showing -- Ensure "Show ASIL/QM Levels" checkbox is checked -- Verify ASIL level format: must be A, B, C, D, or QM -- Check that `preAsilLevel` field exists in JSON data - -### Edit mode not saving -- Verify JSON syntax is valid -- Check that `config.onChange` callback is provided -- Look for validation errors in console - -## Development - -To modify the plugin: - -1. Edit source files in `src/` -2. Run `npm run dev` to start development server -3. Plugin will be available at `http://localhost:4002/index.js` -4. Changes auto-rebuild on save - -## Building - -```bash -# Development build -npm run dev - -# Production build -npm run build -``` - -The production build outputs to `dist/index.js` with minification and source maps. - diff --git a/flow/build-dist.sh b/flow/build-dist.sh deleted file mode 100755 index bbb6763..0000000 --- a/flow/build-dist.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -# Build TSX plugin for production deployment -ROOT_DIR="$(cd "$(dirname "$0")" && pwd)" -DIST_DIR="$ROOT_DIR/dist" - -# Clean and create dist directory -rm -rf "$DIST_DIR" -mkdir -p "$DIST_DIR" - -# Install dependencies if package.json exists -if [ -f "${ROOT_DIR}/package.json" ]; then - echo "Installing plugin dependencies..." - cd "${ROOT_DIR}" - npm install --silent -fi - -# Build with esbuild for production -# External packages: react, react-dom/client, react/jsx-runtime (provided by host) -# All other dependencies will be bundled into the plugin -npx esbuild "${ROOT_DIR}/src/index.ts" \ - --bundle \ - --format=iife \ - --platform=browser \ - --jsx=automatic \ - --external:react \ - --external:react-dom/client \ - --external:react/jsx-runtime \ - --minify \ - --sourcemap \ - --outfile="${DIST_DIR}/index.js" - -echo "Built production plugin to ${DIST_DIR}/index.js" diff --git a/flow/build.sh b/flow/build.sh index 9816869..a20853e 100755 --- a/flow/build.sh +++ b/flow/build.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -euo pipefail -# Build TSX plugin as UMD bundle (not ESM) for easier loading +# Build flow-plugin as IIFE bundle ROOT_DIR="$(cd "$(dirname "$0")" && pwd)" OUT_DIR="$ROOT_DIR" mkdir -p "$OUT_DIR" @@ -13,6 +13,10 @@ if [ -f "${ROOT_DIR}/package.json" ]; then npm install --silent fi +# Build CSS with Tailwind (PostCSS) +echo "Building Tailwind CSS..." +npx postcss "${ROOT_DIR}/src/flow-plugin.css" -o "${ROOT_DIR}/src/flow-plugin.generated.css" + # Build with esbuild # External packages: react, react-dom/client, react/jsx-runtime (provided by host) # All other dependencies will be bundled into the plugin @@ -21,6 +25,7 @@ npx esbuild "${ROOT_DIR}/src/index.ts" \ --format=iife \ --platform=browser \ --jsx=automatic \ + --loader:.css=text \ --external:react \ --external:react-dom/client \ --external:react/jsx-runtime \ diff --git a/flow/index.css b/flow/index.css deleted file mode 100644 index e6f96b2..0000000 --- a/flow/index.css +++ /dev/null @@ -1,493 +0,0 @@ -/* src/styles.css */ -:root { - --color-primary: #3b82f6; - --color-secondary: #6366f1; - --color-white: #ffffff; - --color-gray-50: #f9fafb; - --color-gray-100: #f3f4f6; - --color-gray-200: #e5e7eb; - --color-gray-300: #d1d5db; - --color-gray-700: #374151; - --color-gray-900: #111827; - --color-red-500: #ef4444; - --color-red-100: #fee2e2; -} -* { - box-sizing: border-box; -} -.flow-container { - display: flex; - width: 100%; - height: 100%; - flex-direction: column; - background-color: var(--color-white); - border-radius: 6px; - padding: 1rem 2.5rem; -} -.flow-header { - display: flex; - align-items: center; - border-bottom: 1px solid var(--color-gray-200); - padding-bottom: 0.5rem; - margin-bottom: 1rem; -} -.flow-title { - font-size: 1.5rem; - font-weight: 700; - color: var(--color-primary); - margin: 0; -} -.flow-spacer { - flex-grow: 1; -} -.flow-button { - display: inline-flex; - align-items: center; - justify-content: center; - padding: 0.5rem 1rem; - font-size: 0.875rem; - font-weight: 500; - border-radius: 0.375rem; - cursor: pointer; - transition: all 0.2s; - border: 1px solid transparent; -} -.flow-button-primary { - background-color: var(--color-primary); - color: var(--color-white); -} -.flow-button-primary:hover { - background-color: #2563eb; -} -.flow-button-outline { - background-color: transparent; - border-color: var(--color-gray-300); - color: var(--color-gray-700); -} -.flow-button-outline:hover { - background-color: var(--color-gray-50); -} -.flow-button-ghost { - background-color: transparent; - color: var(--color-primary); -} -.flow-button-ghost:hover { - background-color: var(--color-gray-50); -} -.flow-button-group { - display: flex; - gap: 0.5rem; -} -.flow-table { - width: 100%; - table-layout: fixed; - border-collapse: separate; - border-spacing: 0; -} -.flow-table colgroup col:nth-child(odd) { - width: 17.76%; -} -.flow-table colgroup col:nth-child(even) { - width: 2.80%; - min-width: 40px; -} -.flow-thead { - position: sticky; - top: 0; - z-index: 10; - background: - linear-gradient( - to bottom right, - var(--color-secondary), - var(--color-primary)); - color: var(--color-white); -} -.flow-thead th { - font-weight: 600; - padding: 0.5rem; - border: 1px solid var(--color-white); - text-align: center; - font-size: 0.75rem; - text-transform: uppercase; -} -.flow-tooltip { - cursor: pointer; - position: relative; -} -.flow-spacer-row td { - height: 0.75rem; -} -.flow-spacer-row td:nth-child(even) { - background-color: rgba(59, 130, 246, 0.1); -} -.flow-spacer-row td:nth-child(odd) { - background-color: var(--color-white); -} -.flow-step-title { - position: relative; - font-size: 0.75rem; - font-weight: 600; - background-color: var(--color-primary); - color: var(--color-white); - height: 2.25rem; - padding-left: 2rem; - padding-right: 2rem; - display: flex; - align-items: center; -} -.flow-step-chevron-left { - position: absolute; - left: -12px; - top: 50%; - transform: translateY(-50%); - width: 47px; - height: 47px; - color: var(--color-white); - fill: currentColor; -} -.flow-step-chevron-right { - position: absolute; - right: -1px; - top: 50%; - transform: translate(50%, -50%); - width: 47px; - height: 47px; - color: var(--color-primary); - fill: currentColor; -} -.flow-cell { - border: 1px solid var(--color-gray-300); - padding: 0.5rem; - text-align: center; - font-weight: 500; - font-size: 0.75rem; -} -.flow-cell-signal { - background-color: rgba(59, 130, 246, 0.1); -} -.flow-cell-content { - padding: 0.25rem; - display: flex; - align-items: center; - justify-content: center; - gap: 0.625rem; - min-height: 1.75rem; -} -.flow-arrow { - margin: 0 auto; - width: 1.25rem; - height: 1.25rem; - color: var(--color-primary); -} -.flow-checkbox-container { - display: flex; - align-items: center; - gap: 0.5rem; - margin-top: 0.5rem; -} -.flow-checkbox { - width: 1rem; - height: 1rem; - cursor: pointer; -} -.flow-checkbox-label { - font-size: 0.875rem; - cursor: pointer; - user-select: none; -} -.flow-empty { - border: 1px solid var(--color-gray-300); - padding: 0.5rem; - text-align: center; - padding-top: 1rem; - padding-bottom: 1rem; - font-size: 0.875rem; -} -.flow-editor-container { - padding: 1rem; - background-color: var(--color-gray-50); - border-radius: 0.375rem; - margin-bottom: 1rem; -} -.flow-editor-textarea { - width: 100%; - min-height: 300px; - padding: 0.75rem; - font-family: monospace; - font-size: 0.875rem; - border: 1px solid var(--color-gray-300); - border-radius: 0.375rem; - resize: vertical; -} -.flow-editor-textarea:focus { - outline: none; - border-color: var(--color-primary); - box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); -} -.flow-icon { - width: 1rem; - height: 1rem; - display: inline-block; - vertical-align: middle; -} -.asil-badge { - display: inline-flex; - align-items: center; - justify-content: center; - padding: 0.125rem 0.375rem; - font-size: 0.625rem; - font-weight: 600; - border-radius: 0.25rem; - text-transform: uppercase; -} -.asil-badge-a { - background-color: #dbeafe; - color: #1e40af; -} -.asil-badge-b { - background-color: #fef3c7; - color: #92400e; -} -.asil-badge-c { - background-color: #fed7aa; - color: #9a3412; -} -.asil-badge-d { - background-color: #fecaca; - color: #991b1b; -} -.asil-badge-qm { - background-color: #d1d5db; - color: #374151; -} -.flow-dropdown { - position: relative; - display: inline-block; -} -.flow-dropdown-trigger { - cursor: pointer; -} -.flow-dropdown-content { - position: absolute; - top: 100%; - left: 50%; - transform: translateX(-50%); - margin-top: 0.5rem; - background-color: var(--color-white); - border: 1px solid var(--color-gray-200); - border-radius: 0.5rem; - padding: 0.75rem; - box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1); - z-index: 50; - min-width: 250px; - max-width: 500px; - max-height: 50vh; - overflow-y: auto; - font-size: 0.75rem; -} -.flow-dropdown-header { - display: flex; - justify-content: space-between; - align-items: center; - margin-bottom: 0.5rem; -} -.flow-dropdown-title { - font-size: 0.875rem; - font-weight: 700; - color: var(--color-primary); -} -.flow-dropdown-close { - padding: 0.125rem; - cursor: pointer; - border: none; - background: transparent; - border-radius: 0.375rem; -} -.flow-dropdown-close:hover { - color: var(--color-red-500); - background-color: var(--color-red-100); -} -.flow-dropdown-body { - display: flex; - flex-direction: column; - gap: 0.375rem; -} -.flow-dropdown-field { - display: flex; -} -.flow-dropdown-field-label { - font-weight: 600; - margin-right: 0.25rem; - color: var(--color-gray-700); -} -.flow-dropdown-link { - text-decoration: underline; - color: #3b82f6; -} -.flow-dropdown-link:hover { - color: #2563eb; -} -.flow-interface-container { - display: flex; - flex-direction: column; - align-items: center; - gap: 0.25rem; - cursor: pointer; - min-height: 1.75rem; - justify-content: center; -} -.icon { - display: inline-block; - width: 1em; - height: 1em; - vertical-align: -0.125em; -} -.loading-spinner { - animation: spin 1s linear infinite; -} -@keyframes spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} -.flow-modal-overlay { - position: fixed; - inset: 0; - background-color: rgba(0, 0, 0, 0.5); - z-index: 100; - display: flex; - align-items: center; - justify-content: center; - animation: fadeIn 0.2s ease-out; -} -@keyframes fadeIn { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -.flow-modal-content { - background-color: var(--color-white); - border-radius: 0.5rem; - box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); - max-width: 600px; - width: 90%; - max-height: 80vh; - display: flex; - flex-direction: column; - animation: slideUp 0.2s ease-out; -} -@keyframes slideUp { - from { - transform: translateY(20px); - opacity: 0; - } - to { - transform: translateY(0); - opacity: 1; - } -} -.flow-modal-header { - display: flex; - justify-content: space-between; - align-items: center; - padding: 1.25rem; - border-bottom: 1px solid var(--color-gray-200); -} -.flow-modal-title { - font-size: 1.125rem; - font-weight: 700; - color: var(--color-gray-900); -} -.flow-modal-close { - padding: 0.25rem; - cursor: pointer; - border: none; - background: transparent; - border-radius: 0.375rem; - color: var(--color-gray-700); -} -.flow-modal-close:hover { - background-color: var(--color-gray-100); -} -.flow-modal-body { - padding: 1.25rem; - flex: 1; - overflow-y: auto; -} -.flow-modal-footer { - display: flex; - justify-content: flex-end; - gap: 0.75rem; - padding: 1.25rem; - border-top: 1px solid var(--color-gray-200); -} -.flow-modal-textarea { - width: 100%; - min-height: 300px; - padding: 0.75rem; - font-family: monospace; - font-size: 0.875rem; - border: 1px solid var(--color-gray-300); - border-radius: 0.375rem; - resize: vertical; -} -.flow-modal-textarea:focus { - outline: none; - border-color: var(--color-primary); - box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); -} -.flow-modal-hint { - margin-top: 0.5rem; - font-size: 0.75rem; - color: var(--color-gray-700); - line-height: 1.5; -} -.flow-cell-editable { - cursor: pointer; - position: relative; -} -.flow-cell-editable:hover { - background-color: var(--color-gray-50); -} -.flow-cell-edit-icon { - position: absolute; - top: 0.25rem; - right: 0.25rem; - width: 0.875rem; - height: 0.875rem; - color: var(--color-primary); - opacity: 0; - transition: opacity 0.2s; -} -.flow-cell-editable:hover .flow-cell-edit-icon { - opacity: 1; -} -.flow-button-sm { - padding: 0.375rem 0.75rem; - font-size: 0.75rem; -} -.flow-button-disabled { - opacity: 0.5; - cursor: not-allowed; -} -.flow-loading { - display: flex; - align-items: center; - gap: 0.5rem; - color: var(--color-primary); - font-size: 0.875rem; -} -.flow-fullscreen { - position: fixed; - inset: 0; - z-index: 50; - overflow: auto; - background-color: var(--color-white); -} -/*# sourceMappingURL=index.css.map */ diff --git a/flow/index.css.map b/flow/index.css.map deleted file mode 100644 index 16f7c97..0000000 --- a/flow/index.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["src/styles.css"], - "sourcesContent": ["/* Flow Plugin Styles */\n:root {\n --color-primary: #3b82f6;\n --color-secondary: #6366f1;\n --color-white: #ffffff;\n --color-gray-50: #f9fafb;\n --color-gray-100: #f3f4f6;\n --color-gray-200: #e5e7eb;\n --color-gray-300: #d1d5db;\n --color-gray-700: #374151;\n --color-gray-900: #111827;\n --color-red-500: #ef4444;\n --color-red-100: #fee2e2;\n}\n\n* {\n box-sizing: border-box;\n}\n\n.flow-container {\n display: flex;\n width: 100%;\n height: 100%;\n flex-direction: column;\n background-color: var(--color-white);\n border-radius: 6px;\n padding: 1rem 2.5rem;\n}\n\n.flow-header {\n display: flex;\n align-items: center;\n border-bottom: 1px solid var(--color-gray-200);\n padding-bottom: 0.5rem;\n margin-bottom: 1rem;\n}\n\n.flow-title {\n font-size: 1.5rem;\n font-weight: 700;\n color: var(--color-primary);\n margin: 0;\n}\n\n.flow-spacer {\n flex-grow: 1;\n}\n\n.flow-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0.5rem 1rem;\n font-size: 0.875rem;\n font-weight: 500;\n border-radius: 0.375rem;\n cursor: pointer;\n transition: all 0.2s;\n border: 1px solid transparent;\n}\n\n.flow-button-primary {\n background-color: var(--color-primary);\n color: var(--color-white);\n}\n\n.flow-button-primary:hover {\n background-color: #2563eb;\n}\n\n.flow-button-outline {\n background-color: transparent;\n border-color: var(--color-gray-300);\n color: var(--color-gray-700);\n}\n\n.flow-button-outline:hover {\n background-color: var(--color-gray-50);\n}\n\n.flow-button-ghost {\n background-color: transparent;\n color: var(--color-primary);\n}\n\n.flow-button-ghost:hover {\n background-color: var(--color-gray-50);\n}\n\n.flow-button-group {\n display: flex;\n gap: 0.5rem;\n}\n\n.flow-table {\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n border-spacing: 0;\n}\n\n.flow-table colgroup col:nth-child(odd) {\n width: 17.76%;\n}\n\n.flow-table colgroup col:nth-child(even) {\n width: 2.80%;\n min-width: 40px;\n}\n\n.flow-thead {\n position: sticky;\n top: 0;\n z-index: 10;\n background: linear-gradient(to bottom right, var(--color-secondary), var(--color-primary));\n color: var(--color-white);\n}\n\n.flow-thead th {\n font-weight: 600;\n padding: 0.5rem;\n border: 1px solid var(--color-white);\n text-align: center;\n font-size: 0.75rem;\n text-transform: uppercase;\n}\n\n.flow-tooltip {\n cursor: pointer;\n position: relative;\n}\n\n.flow-spacer-row td {\n height: 0.75rem;\n}\n\n.flow-spacer-row td:nth-child(even) {\n background-color: rgba(59, 130, 246, 0.1);\n}\n\n.flow-spacer-row td:nth-child(odd) {\n background-color: var(--color-white);\n}\n\n.flow-step-title {\n position: relative;\n font-size: 0.75rem;\n font-weight: 600;\n background-color: var(--color-primary);\n color: var(--color-white);\n height: 2.25rem;\n padding-left: 2rem;\n padding-right: 2rem;\n display: flex;\n align-items: center;\n}\n\n.flow-step-chevron-left {\n position: absolute;\n left: -12px;\n top: 50%;\n transform: translateY(-50%);\n width: 47px;\n height: 47px;\n color: var(--color-white);\n fill: currentColor;\n}\n\n.flow-step-chevron-right {\n position: absolute;\n right: -1px;\n top: 50%;\n transform: translate(50%, -50%);\n width: 47px;\n height: 47px;\n color: var(--color-primary);\n fill: currentColor;\n}\n\n.flow-cell {\n border: 1px solid var(--color-gray-300);\n padding: 0.5rem;\n text-align: center;\n font-weight: 500;\n font-size: 0.75rem;\n}\n\n.flow-cell-signal {\n background-color: rgba(59, 130, 246, 0.1);\n}\n\n.flow-cell-content {\n padding: 0.25rem;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.625rem;\n min-height: 1.75rem;\n}\n\n.flow-arrow {\n margin: 0 auto;\n width: 1.25rem;\n height: 1.25rem;\n color: var(--color-primary);\n}\n\n.flow-checkbox-container {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n margin-top: 0.5rem;\n}\n\n.flow-checkbox {\n width: 1rem;\n height: 1rem;\n cursor: pointer;\n}\n\n.flow-checkbox-label {\n font-size: 0.875rem;\n cursor: pointer;\n user-select: none;\n}\n\n.flow-empty {\n border: 1px solid var(--color-gray-300);\n padding: 0.5rem;\n text-align: center;\n padding-top: 1rem;\n padding-bottom: 1rem;\n font-size: 0.875rem;\n}\n\n.flow-editor-container {\n padding: 1rem;\n background-color: var(--color-gray-50);\n border-radius: 0.375rem;\n margin-bottom: 1rem;\n}\n\n.flow-editor-textarea {\n width: 100%;\n min-height: 300px;\n padding: 0.75rem;\n font-family: monospace;\n font-size: 0.875rem;\n border: 1px solid var(--color-gray-300);\n border-radius: 0.375rem;\n resize: vertical;\n}\n\n.flow-editor-textarea:focus {\n outline: none;\n border-color: var(--color-primary);\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);\n}\n\n.flow-icon {\n width: 1rem;\n height: 1rem;\n display: inline-block;\n vertical-align: middle;\n}\n\n.asil-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0.125rem 0.375rem;\n font-size: 0.625rem;\n font-weight: 600;\n border-radius: 0.25rem;\n text-transform: uppercase;\n}\n\n.asil-badge-a {\n background-color: #dbeafe;\n color: #1e40af;\n}\n\n.asil-badge-b {\n background-color: #fef3c7;\n color: #92400e;\n}\n\n.asil-badge-c {\n background-color: #fed7aa;\n color: #9a3412;\n}\n\n.asil-badge-d {\n background-color: #fecaca;\n color: #991b1b;\n}\n\n.asil-badge-qm {\n background-color: #d1d5db;\n color: #374151;\n}\n\n.flow-dropdown {\n position: relative;\n display: inline-block;\n}\n\n.flow-dropdown-trigger {\n cursor: pointer;\n}\n\n.flow-dropdown-content {\n position: absolute;\n top: 100%;\n left: 50%;\n transform: translateX(-50%);\n margin-top: 0.5rem;\n background-color: var(--color-white);\n border: 1px solid var(--color-gray-200);\n border-radius: 0.5rem;\n padding: 0.75rem;\n box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);\n z-index: 50;\n min-width: 250px;\n max-width: 500px;\n max-height: 50vh;\n overflow-y: auto;\n font-size: 0.75rem;\n}\n\n.flow-dropdown-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 0.5rem;\n}\n\n.flow-dropdown-title {\n font-size: 0.875rem;\n font-weight: 700;\n color: var(--color-primary);\n}\n\n.flow-dropdown-close {\n padding: 0.125rem;\n cursor: pointer;\n border: none;\n background: transparent;\n border-radius: 0.375rem;\n}\n\n.flow-dropdown-close:hover {\n color: var(--color-red-500);\n background-color: var(--color-red-100);\n}\n\n.flow-dropdown-body {\n display: flex;\n flex-direction: column;\n gap: 0.375rem;\n}\n\n.flow-dropdown-field {\n display: flex;\n}\n\n.flow-dropdown-field-label {\n font-weight: 600;\n margin-right: 0.25rem;\n color: var(--color-gray-700);\n}\n\n.flow-dropdown-link {\n text-decoration: underline;\n color: #3b82f6;\n}\n\n.flow-dropdown-link:hover {\n color: #2563eb;\n}\n\n.flow-interface-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.25rem;\n cursor: pointer;\n min-height: 1.75rem;\n justify-content: center;\n}\n\n.icon {\n display: inline-block;\n width: 1em;\n height: 1em;\n vertical-align: -0.125em;\n}\n\n.loading-spinner {\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n/* Modal/Dialog Styles */\n.flow-modal-overlay {\n position: fixed;\n inset: 0;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: 100;\n display: flex;\n align-items: center;\n justify-content: center;\n animation: fadeIn 0.2s ease-out;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n.flow-modal-content {\n background-color: var(--color-white);\n border-radius: 0.5rem;\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n max-width: 600px;\n width: 90%;\n max-height: 80vh;\n display: flex;\n flex-direction: column;\n animation: slideUp 0.2s ease-out;\n}\n\n@keyframes slideUp {\n from {\n transform: translateY(20px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n}\n\n.flow-modal-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1.25rem;\n border-bottom: 1px solid var(--color-gray-200);\n}\n\n.flow-modal-title {\n font-size: 1.125rem;\n font-weight: 700;\n color: var(--color-gray-900);\n}\n\n.flow-modal-close {\n padding: 0.25rem;\n cursor: pointer;\n border: none;\n background: transparent;\n border-radius: 0.375rem;\n color: var(--color-gray-700);\n}\n\n.flow-modal-close:hover {\n background-color: var(--color-gray-100);\n}\n\n.flow-modal-body {\n padding: 1.25rem;\n flex: 1;\n overflow-y: auto;\n}\n\n.flow-modal-footer {\n display: flex;\n justify-content: flex-end;\n gap: 0.75rem;\n padding: 1.25rem;\n border-top: 1px solid var(--color-gray-200);\n}\n\n.flow-modal-textarea {\n width: 100%;\n min-height: 300px;\n padding: 0.75rem;\n font-family: monospace;\n font-size: 0.875rem;\n border: 1px solid var(--color-gray-300);\n border-radius: 0.375rem;\n resize: vertical;\n}\n\n.flow-modal-textarea:focus {\n outline: none;\n border-color: var(--color-primary);\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);\n}\n\n.flow-modal-hint {\n margin-top: 0.5rem;\n font-size: 0.75rem;\n color: var(--color-gray-700);\n line-height: 1.5;\n}\n\n/* Editable cell styles */\n.flow-cell-editable {\n cursor: pointer;\n position: relative;\n}\n\n.flow-cell-editable:hover {\n background-color: var(--color-gray-50);\n}\n\n.flow-cell-edit-icon {\n position: absolute;\n top: 0.25rem;\n right: 0.25rem;\n width: 0.875rem;\n height: 0.875rem;\n color: var(--color-primary);\n opacity: 0;\n transition: opacity 0.2s;\n}\n\n.flow-cell-editable:hover .flow-cell-edit-icon {\n opacity: 1;\n}\n\n.flow-button-sm {\n padding: 0.375rem 0.75rem;\n font-size: 0.75rem;\n}\n\n.flow-button-disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.flow-loading {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n color: var(--color-primary);\n font-size: 0.875rem;\n}\n\n.flow-fullscreen {\n position: fixed;\n inset: 0;\n z-index: 50;\n overflow: auto;\n background-color: var(--color-white);\n}\n\n"], - "mappings": "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", - "names": [] -} diff --git a/flow/index.js b/flow/index.js new file mode 100644 index 0000000..9f5441d --- /dev/null +++ b/flow/index.js @@ -0,0 +1,12008 @@ +(() => { + var __create = Object.create; + var __defProp = Object.defineProperty; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __getProtoOf = Object.getPrototypeOf; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { + get: (a, b) => (typeof require !== "undefined" ? require : a)[b] + }) : x)(function(x) { + if (typeof require !== "undefined") + return require.apply(this, arguments); + throw Error('Dynamic require of "' + x + '" is not supported'); + }); + var __commonJS = (cb, mod) => function __require2() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; + }; + var __export = (target, all2) => { + for (var name2 in all2) + __defProp(target, name2, { get: all2[name2], enumerable: true }); + }; + var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; + }; + var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod + )); + + // node_modules/inline-style-parser/cjs/index.js + var require_cjs = __commonJS({ + "node_modules/inline-style-parser/cjs/index.js"(exports, module) { + "use strict"; + var COMMENT_REGEX = /\/\*[^*]*\*+([^/*][^*]*\*+)*\//g; + var NEWLINE_REGEX = /\n/g; + var WHITESPACE_REGEX = /^\s*/; + var PROPERTY_REGEX = /^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/; + var COLON_REGEX = /^:\s*/; + var VALUE_REGEX = /^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/; + var SEMICOLON_REGEX = /^[;\s]*/; + var TRIM_REGEX = /^\s+|\s+$/g; + var NEWLINE = "\n"; + var FORWARD_SLASH = "/"; + var ASTERISK = "*"; + var EMPTY_STRING = ""; + var TYPE_COMMENT = "comment"; + var TYPE_DECLARATION = "declaration"; + function index2(style, options) { + if (typeof style !== "string") { + throw new TypeError("First argument must be a string"); + } + if (!style) + return []; + options = options || {}; + var lineno = 1; + var column = 1; + function updatePosition(str) { + var lines = str.match(NEWLINE_REGEX); + if (lines) + lineno += lines.length; + var i = str.lastIndexOf(NEWLINE); + column = ~i ? str.length - i : column + str.length; + } + function position3() { + var start2 = { line: lineno, column }; + return function(node2) { + node2.position = new Position(start2); + whitespace2(); + return node2; + }; + } + function Position(start2) { + this.start = start2; + this.end = { line: lineno, column }; + this.source = options.source; + } + Position.prototype.content = style; + function error(msg) { + var err = new Error( + options.source + ":" + lineno + ":" + column + ": " + msg + ); + err.reason = msg; + err.filename = options.source; + err.line = lineno; + err.column = column; + err.source = style; + if (options.silent) + ; + else { + throw err; + } + } + function match(re2) { + var m = re2.exec(style); + if (!m) + return; + var str = m[0]; + updatePosition(str); + style = style.slice(str.length); + return m; + } + function whitespace2() { + match(WHITESPACE_REGEX); + } + function comments(rules) { + var c; + rules = rules || []; + while (c = comment()) { + if (c !== false) { + rules.push(c); + } + } + return rules; + } + function comment() { + var pos = position3(); + if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) + return; + var i = 2; + while (EMPTY_STRING != style.charAt(i) && (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))) { + ++i; + } + i += 2; + if (EMPTY_STRING === style.charAt(i - 1)) { + return error("End of comment missing"); + } + var str = style.slice(2, i - 2); + column += 2; + updatePosition(str); + style = style.slice(i); + column += 2; + return pos({ + type: TYPE_COMMENT, + comment: str + }); + } + function declaration() { + var pos = position3(); + var prop = match(PROPERTY_REGEX); + if (!prop) + return; + comment(); + if (!match(COLON_REGEX)) + return error("property missing ':'"); + var val = match(VALUE_REGEX); + var ret = pos({ + type: TYPE_DECLARATION, + property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)), + value: val ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING)) : EMPTY_STRING + }); + match(SEMICOLON_REGEX); + return ret; + } + function declarations() { + var decls = []; + comments(decls); + var decl; + while (decl = declaration()) { + if (decl !== false) { + decls.push(decl); + comments(decls); + } + } + return decls; + } + whitespace2(); + return declarations(); + } + function trim(str) { + return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING; + } + module.exports = index2; + } + }); + + // node_modules/style-to-object/cjs/index.js + var require_cjs2 = __commonJS({ + "node_modules/style-to-object/cjs/index.js"(exports) { + "use strict"; + var __importDefault = exports && exports.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.default = StyleToObject; + var inline_style_parser_1 = __importDefault(require_cjs()); + function StyleToObject(style, iterator) { + let styleObject = null; + if (!style || typeof style !== "string") { + return styleObject; + } + const declarations = (0, inline_style_parser_1.default)(style); + const hasIterator = typeof iterator === "function"; + declarations.forEach((declaration) => { + if (declaration.type !== "declaration") { + return; + } + const { property, value } = declaration; + if (hasIterator) { + iterator(property, value, declaration); + } else if (value) { + styleObject = styleObject || {}; + styleObject[property] = value; + } + }); + return styleObject; + } + } + }); + + // node_modules/style-to-js/cjs/utilities.js + var require_utilities = __commonJS({ + "node_modules/style-to-js/cjs/utilities.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.camelCase = void 0; + var CUSTOM_PROPERTY_REGEX = /^--[a-zA-Z0-9_-]+$/; + var HYPHEN_REGEX = /-([a-z])/g; + var NO_HYPHEN_REGEX = /^[^-]+$/; + var VENDOR_PREFIX_REGEX = /^-(webkit|moz|ms|o|khtml)-/; + var MS_VENDOR_PREFIX_REGEX = /^-(ms)-/; + var skipCamelCase = function(property) { + return !property || NO_HYPHEN_REGEX.test(property) || CUSTOM_PROPERTY_REGEX.test(property); + }; + var capitalize = function(match, character) { + return character.toUpperCase(); + }; + var trimHyphen = function(match, prefix) { + return "".concat(prefix, "-"); + }; + var camelCase = function(property, options) { + if (options === void 0) { + options = {}; + } + if (skipCamelCase(property)) { + return property; + } + property = property.toLowerCase(); + if (options.reactCompat) { + property = property.replace(MS_VENDOR_PREFIX_REGEX, trimHyphen); + } else { + property = property.replace(VENDOR_PREFIX_REGEX, trimHyphen); + } + return property.replace(HYPHEN_REGEX, capitalize); + }; + exports.camelCase = camelCase; + } + }); + + // node_modules/style-to-js/cjs/index.js + var require_cjs3 = __commonJS({ + "node_modules/style-to-js/cjs/index.js"(exports, module) { + "use strict"; + var __importDefault = exports && exports.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + var style_to_object_1 = __importDefault(require_cjs2()); + var utilities_1 = require_utilities(); + function StyleToJS(style, options) { + var output = {}; + if (!style || typeof style !== "string") { + return output; + } + (0, style_to_object_1.default)(style, function(property, value) { + if (property && value) { + output[(0, utilities_1.camelCase)(property, options)] = value; + } + }); + return output; + } + StyleToJS.default = StyleToJS; + module.exports = StyleToJS; + } + }); + + // node_modules/extend/index.js + var require_extend = __commonJS({ + "node_modules/extend/index.js"(exports, module) { + "use strict"; + var hasOwn = Object.prototype.hasOwnProperty; + var toStr = Object.prototype.toString; + var defineProperty = Object.defineProperty; + var gOPD = Object.getOwnPropertyDescriptor; + var isArray = function isArray2(arr) { + if (typeof Array.isArray === "function") { + return Array.isArray(arr); + } + return toStr.call(arr) === "[object Array]"; + }; + var isPlainObject2 = function isPlainObject3(obj) { + if (!obj || toStr.call(obj) !== "[object Object]") { + return false; + } + var hasOwnConstructor = hasOwn.call(obj, "constructor"); + var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, "isPrototypeOf"); + if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { + return false; + } + var key; + for (key in obj) { + } + return typeof key === "undefined" || hasOwn.call(obj, key); + }; + var setProperty = function setProperty2(target, options) { + if (defineProperty && options.name === "__proto__") { + defineProperty(target, options.name, { + enumerable: true, + configurable: true, + value: options.newValue, + writable: true + }); + } else { + target[options.name] = options.newValue; + } + }; + var getProperty = function getProperty2(obj, name2) { + if (name2 === "__proto__") { + if (!hasOwn.call(obj, name2)) { + return void 0; + } else if (gOPD) { + return gOPD(obj, name2).value; + } + } + return obj[name2]; + }; + module.exports = function extend2() { + var options, name2, src, copy, copyIsArray, clone; + var target = arguments[0]; + var i = 1; + var length = arguments.length; + var deep = false; + if (typeof target === "boolean") { + deep = target; + target = arguments[1] || {}; + i = 2; + } + if (target == null || typeof target !== "object" && typeof target !== "function") { + target = {}; + } + for (; i < length; ++i) { + options = arguments[i]; + if (options != null) { + for (name2 in options) { + src = getProperty(target, name2); + copy = getProperty(options, name2); + if (target !== copy) { + if (deep && copy && (isPlainObject2(copy) || (copyIsArray = isArray(copy)))) { + if (copyIsArray) { + copyIsArray = false; + clone = src && isArray(src) ? src : []; + } else { + clone = src && isPlainObject2(src) ? src : {}; + } + setProperty(target, { name: name2, newValue: extend2(deep, clone, copy) }); + } else if (typeof copy !== "undefined") { + setProperty(target, { name: name2, newValue: copy }); + } + } + } + } + } + return target; + }; + } + }); + + // src/index.ts + var ReactDOM = __toESM(__require("react-dom/client"), 1); + var React12 = __toESM(__require("react"), 1); + + // src/components/Page.tsx + var import_react12 = __toESM(__require("react"), 1); + + // node_modules/react-icons/lib/iconBase.mjs + var import_react2 = __toESM(__require("react"), 1); + + // node_modules/react-icons/lib/iconContext.mjs + var import_react = __toESM(__require("react"), 1); + var DefaultContext = { + color: void 0, + size: void 0, + className: void 0, + style: void 0, + attr: void 0 + }; + var IconContext = import_react.default.createContext && /* @__PURE__ */ import_react.default.createContext(DefaultContext); + + // node_modules/react-icons/lib/iconBase.mjs + var _excluded = ["attr", "size", "title"]; + function _objectWithoutProperties(source, excluded) { + if (source == null) + return {}; + var target = _objectWithoutPropertiesLoose(source, excluded); + var key, i; + if (Object.getOwnPropertySymbols) { + var sourceSymbolKeys = Object.getOwnPropertySymbols(source); + for (i = 0; i < sourceSymbolKeys.length; i++) { + key = sourceSymbolKeys[i]; + if (excluded.indexOf(key) >= 0) + continue; + if (!Object.prototype.propertyIsEnumerable.call(source, key)) + continue; + target[key] = source[key]; + } + } + return target; + } + function _objectWithoutPropertiesLoose(source, excluded) { + if (source == null) + return {}; + var target = {}; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + if (excluded.indexOf(key) >= 0) + continue; + target[key] = source[key]; + } + } + return target; + } + function _extends() { + _extends = Object.assign ? Object.assign.bind() : function(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }; + return _extends.apply(this, arguments); + } + function ownKeys(e, r2) { + var t = Object.keys(e); + if (Object.getOwnPropertySymbols) { + var o = Object.getOwnPropertySymbols(e); + r2 && (o = o.filter(function(r3) { + return Object.getOwnPropertyDescriptor(e, r3).enumerable; + })), t.push.apply(t, o); + } + return t; + } + function _objectSpread(e) { + for (var r2 = 1; r2 < arguments.length; r2++) { + var t = null != arguments[r2] ? arguments[r2] : {}; + r2 % 2 ? ownKeys(Object(t), true).forEach(function(r3) { + _defineProperty(e, r3, t[r3]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r3) { + Object.defineProperty(e, r3, Object.getOwnPropertyDescriptor(t, r3)); + }); + } + return e; + } + function _defineProperty(obj, key, value) { + key = _toPropertyKey(key); + if (key in obj) { + Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); + } else { + obj[key] = value; + } + return obj; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == typeof i ? i : i + ""; + } + function _toPrimitive(t, r2) { + if ("object" != typeof t || !t) + return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r2 || "default"); + if ("object" != typeof i) + return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r2 ? String : Number)(t); + } + function Tree2Element(tree) { + return tree && tree.map((node2, i) => /* @__PURE__ */ import_react2.default.createElement(node2.tag, _objectSpread({ + key: i + }, node2.attr), Tree2Element(node2.child))); + } + function GenIcon(data) { + return (props) => /* @__PURE__ */ import_react2.default.createElement(IconBase, _extends({ + attr: _objectSpread({}, data.attr) + }, props), Tree2Element(data.child)); + } + function IconBase(props) { + var elem = (conf) => { + var { + attr, + size, + title + } = props, svgProps = _objectWithoutProperties(props, _excluded); + var computedSize = size || conf.size || "1em"; + var className; + if (conf.className) + className = conf.className; + if (props.className) + className = (className ? className + " " : "") + props.className; + return /* @__PURE__ */ import_react2.default.createElement("svg", _extends({ + stroke: "currentColor", + fill: "currentColor", + strokeWidth: "0" + }, conf.attr, attr, svgProps, { + className, + style: _objectSpread(_objectSpread({ + color: props.color || conf.color + }, conf.style), props.style), + height: computedSize, + width: computedSize, + xmlns: "http://www.w3.org/2000/svg" + }), title && /* @__PURE__ */ import_react2.default.createElement("title", null, title), props.children); + }; + return IconContext !== void 0 ? /* @__PURE__ */ import_react2.default.createElement(IconContext.Consumer, null, (conf) => elem(conf)) : elem(DefaultContext); + } + + // node_modules/react-icons/tb/index.mjs + function TbArrowLeft(props) { + return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "path", "attr": { "d": "M5 12l14 0" }, "child": [] }, { "tag": "path", "attr": { "d": "M5 12l6 6" }, "child": [] }, { "tag": "path", "attr": { "d": "M5 12l6 -6" }, "child": [] }] })(props); + } + function TbArrowRight(props) { + return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "path", "attr": { "d": "M5 12l14 0" }, "child": [] }, { "tag": "path", "attr": { "d": "M13 18l6 -6" }, "child": [] }, { "tag": "path", "attr": { "d": "M13 6l6 6" }, "child": [] }] })(props); + } + function TbArrowsLeftRight(props) { + return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "path", "attr": { "d": "M21 17l-18 0" }, "child": [] }, { "tag": "path", "attr": { "d": "M6 10l-3 -3l3 -3" }, "child": [] }, { "tag": "path", "attr": { "d": "M3 7l18 0" }, "child": [] }, { "tag": "path", "attr": { "d": "M18 20l3 -3l-3 -3" }, "child": [] }] })(props); + } + function TbArrowsMaximize(props) { + return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "path", "attr": { "d": "M16 4l4 0l0 4" }, "child": [] }, { "tag": "path", "attr": { "d": "M14 10l6 -6" }, "child": [] }, { "tag": "path", "attr": { "d": "M8 20l-4 0l0 -4" }, "child": [] }, { "tag": "path", "attr": { "d": "M4 20l6 -6" }, "child": [] }, { "tag": "path", "attr": { "d": "M16 20l4 0l0 -4" }, "child": [] }, { "tag": "path", "attr": { "d": "M14 14l6 6" }, "child": [] }, { "tag": "path", "attr": { "d": "M8 4l-4 0l0 4" }, "child": [] }, { "tag": "path", "attr": { "d": "M4 4l6 6" }, "child": [] }] })(props); + } + function TbArrowsMinimize(props) { + return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "path", "attr": { "d": "M5 9l4 0l0 -4" }, "child": [] }, { "tag": "path", "attr": { "d": "M3 3l6 6" }, "child": [] }, { "tag": "path", "attr": { "d": "M5 15l4 0l0 4" }, "child": [] }, { "tag": "path", "attr": { "d": "M3 21l6 -6" }, "child": [] }, { "tag": "path", "attr": { "d": "M19 9l-4 0l0 -4" }, "child": [] }, { "tag": "path", "attr": { "d": "M15 9l6 -6" }, "child": [] }, { "tag": "path", "attr": { "d": "M19 15l-4 0l0 4" }, "child": [] }, { "tag": "path", "attr": { "d": "M15 15l6 6" }, "child": [] }] })(props); + } + function TbArrowsRightLeft(props) { + return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "path", "attr": { "d": "M21 7l-18 0" }, "child": [] }, { "tag": "path", "attr": { "d": "M18 10l3 -3l-3 -3" }, "child": [] }, { "tag": "path", "attr": { "d": "M6 20l-3 -3l3 -3" }, "child": [] }, { "tag": "path", "attr": { "d": "M3 17l18 0" }, "child": [] }] })(props); + } + function TbCalendarEvent(props) { + return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "path", "attr": { "d": "M4 5m0 2a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2z" }, "child": [] }, { "tag": "path", "attr": { "d": "M16 3l0 4" }, "child": [] }, { "tag": "path", "attr": { "d": "M8 3l0 4" }, "child": [] }, { "tag": "path", "attr": { "d": "M4 11l16 0" }, "child": [] }, { "tag": "path", "attr": { "d": "M8 15h2v2h-2z" }, "child": [] }] })(props); + } + function TbCheck(props) { + return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "path", "attr": { "d": "M5 12l5 5l10 -10" }, "child": [] }] })(props); + } + function TbChevronCompactRight(props) { + return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "path", "attr": { "d": "M11 4l3 8l-3 8" }, "child": [] }] })(props); + } + function TbChevronDown(props) { + return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "path", "attr": { "d": "M6 9l6 6l6 -6" }, "child": [] }] })(props); + } + function TbChevronRight(props) { + return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "path", "attr": { "d": "M9 6l6 6l-6 6" }, "child": [] }] })(props); + } + function TbCornerDownLeft(props) { + return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "path", "attr": { "d": "M18 6v6a3 3 0 0 1 -3 3h-10l4 -4m0 8l-4 -4" }, "child": [] }] })(props); + } + function TbCornerDownRight(props) { + return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "path", "attr": { "d": "M6 6v6a3 3 0 0 0 3 3h10l-4 -4m0 8l4 -4" }, "child": [] }] })(props); + } + function TbEdit(props) { + return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "path", "attr": { "d": "M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1" }, "child": [] }, { "tag": "path", "attr": { "d": "M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z" }, "child": [] }, { "tag": "path", "attr": { "d": "M16 5l3 3" }, "child": [] }] })(props); + } + function TbLoader2(props) { + return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "path", "attr": { "d": "M12 3a9 9 0 1 0 9 9" }, "child": [] }] })(props); + } + function TbLoader(props) { + return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "path", "attr": { "d": "M12 6l0 -3" }, "child": [] }, { "tag": "path", "attr": { "d": "M16.25 7.75l2.15 -2.15" }, "child": [] }, { "tag": "path", "attr": { "d": "M18 12l3 0" }, "child": [] }, { "tag": "path", "attr": { "d": "M16.25 16.25l2.15 2.15" }, "child": [] }, { "tag": "path", "attr": { "d": "M12 18l0 3" }, "child": [] }, { "tag": "path", "attr": { "d": "M7.75 16.25l-2.15 2.15" }, "child": [] }, { "tag": "path", "attr": { "d": "M6 12l-3 0" }, "child": [] }, { "tag": "path", "attr": { "d": "M7.75 7.75l-2.15 -2.15" }, "child": [] }] })(props); + } + function TbPlus(props) { + return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "path", "attr": { "d": "M12 5l0 14" }, "child": [] }, { "tag": "path", "attr": { "d": "M5 12l14 0" }, "child": [] }] })(props); + } + function TbTextScan2(props) { + return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "path", "attr": { "d": "M4 8v-2a2 2 0 0 1 2 -2h2" }, "child": [] }, { "tag": "path", "attr": { "d": "M4 16v2a2 2 0 0 0 2 2h2" }, "child": [] }, { "tag": "path", "attr": { "d": "M16 4h2a2 2 0 0 1 2 2v2" }, "child": [] }, { "tag": "path", "attr": { "d": "M16 20h2a2 2 0 0 0 2 -2v-2" }, "child": [] }, { "tag": "path", "attr": { "d": "M8 12h8" }, "child": [] }, { "tag": "path", "attr": { "d": "M8 9h6" }, "child": [] }, { "tag": "path", "attr": { "d": "M8 15h4" }, "child": [] }] })(props); + } + function TbTrash(props) { + return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "path", "attr": { "d": "M4 7l16 0" }, "child": [] }, { "tag": "path", "attr": { "d": "M10 11l0 6" }, "child": [] }, { "tag": "path", "attr": { "d": "M14 11l0 6" }, "child": [] }, { "tag": "path", "attr": { "d": "M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12" }, "child": [] }, { "tag": "path", "attr": { "d": "M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3" }, "child": [] }] })(props); + } + function TbX(props) { + return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "path", "attr": { "d": "M18 6l-12 12" }, "child": [] }, { "tag": "path", "attr": { "d": "M6 6l12 12" }, "child": [] }] })(props); + } + + // node_modules/clsx/dist/clsx.mjs + function r(e) { + var t, f, n = ""; + if ("string" == typeof e || "number" == typeof e) + n += e; + else if ("object" == typeof e) + if (Array.isArray(e)) { + var o = e.length; + for (t = 0; t < o; t++) + e[t] && (f = r(e[t])) && (n && (n += " "), n += f); + } else + for (f in e) + e[f] && (n && (n += " "), n += f); + return n; + } + function clsx() { + for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) + (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t); + return n; + } + + // src/lib/utils.ts + function cn(...inputs) { + return clsx(inputs); + } + + // src/flow-plugin.generated.css + var flow_plugin_generated_default = '/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",\n "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",\n "Courier New", monospace;\n --color-red-500: oklch(63.7% 0.237 25.331);\n --color-red-600: oklch(57.7% 0.245 27.325);\n --color-green-600: oklch(62.7% 0.194 149.214);\n --color-gray-100: oklch(96.7% 0.003 264.542);\n --color-gray-400: oklch(70.7% 0.022 261.325);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --container-7xl: 80rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --tracking-tight: -0.025em;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --animate-spin: spin 1s linear infinite;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n --color-da-primary-100: hsl(196 28% 92%);\n --color-da-primary-300: hsl(198 28% 61%);\n --color-da-primary-500: hsl(198 100% 22%);\n --color-da-secondary-100: hsl(67 54% 92%);\n --color-da-secondary-300: hsl(67 54% 68%);\n --color-da-secondary-500: hsl(67 54% 48%);\n --color-da-white: hsl(0 0% 100%);\n --color-da-black: hsl(0 0% 0%);\n --color-da-gray-light: hsl(214 32% 91%);\n --color-da-gray-medium: hsl(215 16% 47%);\n --color-da-gray-dark: hsl(215 13.8% 34.1%);\n --color-da-gray-darkest: hsl(217 33% 17%);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type="button"], [type="reset"], [type="submit"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden="until-found"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border-width: 0;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .sticky {\n position: sticky;\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .top-1 {\n top: calc(var(--spacing) * 1);\n }\n .top-1\\/2 {\n top: calc(1/2 * 100%);\n }\n .top-full {\n top: 100%;\n }\n .-right-4 {\n right: calc(var(--spacing) * -4);\n }\n .-right-6 {\n right: calc(var(--spacing) * -6);\n }\n .-right-px {\n right: -1px;\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .right-3 {\n right: calc(var(--spacing) * 3);\n }\n .right-\\[3px\\] {\n right: 3px;\n }\n .bottom-\\[3px\\] {\n bottom: 3px;\n }\n .-left-\\[12px\\] {\n left: calc(12px * -1);\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n .left-auto {\n left: auto;\n }\n .z-0 {\n z-index: 0;\n }\n .z-10 {\n z-index: 10;\n }\n .z-50 {\n z-index: 50;\n }\n .container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n .mx-auto {\n margin-inline: auto;\n }\n .my-2 {\n margin-block: calc(var(--spacing) * 2);\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mt-2 {\n margin-top: calc(var(--spacing) * 2);\n }\n .mt-4 {\n margin-top: calc(var(--spacing) * 4);\n }\n .mr-1 {\n margin-right: calc(var(--spacing) * 1);\n }\n .mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n .mb-1\\.5 {\n margin-bottom: calc(var(--spacing) * 1.5);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n .ml-1 {\n margin-left: calc(var(--spacing) * 1);\n }\n .ml-4 {\n margin-left: calc(var(--spacing) * 4);\n }\n .ml-6 {\n margin-left: calc(var(--spacing) * 6);\n }\n .line-clamp-4 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 4;\n }\n .block {\n display: block;\n }\n .contents {\n display: contents;\n }\n .flex {\n display: flex;\n }\n .hidden {\n display: none;\n }\n .inline {\n display: inline;\n }\n .inline-block {\n display: inline-block;\n }\n .table {\n display: table;\n }\n .table-row {\n display: table-row;\n }\n .size-3 {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n .size-3\\.5 {\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n }\n .size-4 {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n .size-5 {\n width: calc(var(--spacing) * 5);\n height: calc(var(--spacing) * 5);\n }\n .size-\\[16px\\] {\n width: 16px;\n height: 16px;\n }\n .size-\\[47px\\] {\n width: 47px;\n height: 47px;\n }\n .h-3 {\n height: calc(var(--spacing) * 3);\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-5 {\n height: calc(var(--spacing) * 5);\n }\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n .h-7 {\n height: calc(var(--spacing) * 7);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-9 {\n height: calc(var(--spacing) * 9);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .h-28 {\n height: calc(var(--spacing) * 28);\n }\n .h-\\[33px\\] {\n height: 33px;\n }\n .h-\\[90vh\\] {\n height: 90vh;\n }\n .h-\\[95px\\] {\n height: 95px;\n }\n .h-full {\n height: 100%;\n }\n .max-h-\\[50vh\\] {\n max-height: 50vh;\n }\n .max-h-\\[90vh\\] {\n max-height: 90vh;\n }\n .max-h-\\[280px\\] {\n max-height: 280px;\n }\n .min-h-7 {\n min-height: calc(var(--spacing) * 7);\n }\n .min-h-\\[75px\\] {\n min-height: 75px;\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-5 {\n width: calc(var(--spacing) * 5);\n }\n .w-10 {\n width: calc(var(--spacing) * 10);\n }\n .w-12 {\n width: calc(var(--spacing) * 12);\n }\n .w-\\[2\\.80\\%\\] {\n width: 2.80%;\n }\n .w-\\[11\\%\\] {\n width: 11%;\n }\n .w-\\[17\\.76\\%\\] {\n width: 17.76%;\n }\n .w-\\[30px\\] {\n width: 30px;\n }\n .w-\\[98vw\\] {\n width: 98vw;\n }\n .w-\\[500px\\] {\n width: 500px;\n }\n .w-fit {\n width: fit-content;\n }\n .w-full {\n width: 100%;\n }\n .max-w-7xl {\n max-width: var(--container-7xl);\n }\n .max-w-\\[98vw\\] {\n max-width: 98vw;\n }\n .max-w-\\[120rem\\] {\n max-width: 120rem;\n }\n .max-w-\\[400px\\] {\n max-width: 400px;\n }\n .max-w-none {\n max-width: none;\n }\n .min-w-0 {\n min-width: calc(var(--spacing) * 0);\n }\n .min-w-\\[40px\\] {\n min-width: 40px;\n }\n .min-w-\\[100px\\] {\n min-width: 100px;\n }\n .min-w-\\[250px\\] {\n min-width: 250px;\n }\n .min-w-\\[280px\\] {\n min-width: 280px;\n }\n .min-w-\\[700px\\] {\n min-width: 700px;\n }\n .min-w-full {\n min-width: 100%;\n }\n .flex-1 {\n flex: 1;\n }\n .flex-shrink {\n flex-shrink: 1;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .flex-grow {\n flex-grow: 1;\n }\n .grow {\n flex-grow: 1;\n }\n .table-fixed {\n table-layout: fixed;\n }\n .border-collapse {\n border-collapse: collapse;\n }\n .border-separate {\n border-collapse: separate;\n }\n .border-spacing-0 {\n --tw-border-spacing-x: calc(var(--spacing) * 0);\n --tw-border-spacing-y: calc(var(--spacing) * 0);\n border-spacing: var(--tw-border-spacing-x) var(--tw-border-spacing-y);\n }\n .-translate-x-1 {\n --tw-translate-x: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-x-1\\/4 {\n --tw-translate-x: calc(calc(1/4 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-1 {\n --tw-translate-x: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-1\\/2 {\n --tw-translate-x: calc(1/2 * 100%);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-y-1 {\n --tw-translate-y: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .rotate-180 {\n rotate: 180deg;\n }\n .transform {\n transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);\n }\n .animate-spin {\n animation: var(--animate-spin);\n }\n .cursor-pointer {\n cursor: pointer;\n }\n .resize {\n resize: both;\n }\n .resize-none {\n resize: none;\n }\n .list-disc {\n list-style-type: disc;\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .items-center {\n align-items: center;\n }\n .items-start {\n align-items: flex-start;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-end {\n justify-content: flex-end;\n }\n .justify-start {\n justify-content: flex-start;\n }\n .gap-0 {\n gap: calc(var(--spacing) * 0);\n }\n .gap-0\\.5 {\n gap: calc(var(--spacing) * 0.5);\n }\n .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n .gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-2\\.5 {\n gap: calc(var(--spacing) * 2.5);\n }\n .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n .space-y-0 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-0\\.5 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 0.5) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 0.5) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-1 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-1\\.5 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-2 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .gap-x-4 {\n column-gap: calc(var(--spacing) * 4);\n }\n .space-x-2 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .self-center {\n align-self: center;\n }\n .overflow-auto {\n overflow: auto;\n }\n .overflow-visible {\n overflow: visible;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded {\n border-radius: 0.25rem;\n }\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n .rounded-md {\n border-radius: var(--radius-md);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-x {\n border-inline-style: var(--tw-border-style);\n border-inline-width: 1px;\n }\n .border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n .border-dashed {\n --tw-border-style: dashed;\n border-style: dashed;\n }\n .border-none {\n --tw-border-style: none;\n border-style: none;\n }\n .border-da-gray-light {\n border-color: hsl(214 32% 91%);\n }\n .border-da-primary-300 {\n border-color: hsl(198 28% 61%);\n }\n .border-da-primary-500 {\n border-color: hsl(198 100% 22%);\n }\n .border-transparent {\n border-color: transparent;\n }\n .border-white {\n border-color: var(--color-white);\n }\n .bg-black {\n background-color: var(--color-black);\n }\n .bg-black\\/50 {\n background-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n }\n .bg-da-primary-100 {\n background-color: hsl(196 28% 92%);\n }\n .bg-da-primary-500 {\n background-color: hsl(198 100% 22%);\n }\n .bg-da-secondary-500 {\n background-color: hsl(67 54% 48%);\n }\n .bg-transparent {\n background-color: transparent;\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .fill-current {\n fill: currentcolor;\n }\n .p-0 {\n padding: calc(var(--spacing) * 0);\n }\n .p-0\\.5 {\n padding: calc(var(--spacing) * 0.5);\n }\n .p-1 {\n padding: calc(var(--spacing) * 1);\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n .px-1 {\n padding-inline: calc(var(--spacing) * 1);\n }\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n .px-8 {\n padding-inline: calc(var(--spacing) * 8);\n }\n .px-10 {\n padding-inline: calc(var(--spacing) * 10);\n }\n .py-0 {\n padding-block: calc(var(--spacing) * 0);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .py-1\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .py-2\\.5 {\n padding-block: calc(var(--spacing) * 2.5);\n }\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n .py-4 {\n padding-block: calc(var(--spacing) * 4);\n }\n .pt-2 {\n padding-top: calc(var(--spacing) * 2);\n }\n .pr-1 {\n padding-right: calc(var(--spacing) * 1);\n }\n .pr-1\\.5 {\n padding-right: calc(var(--spacing) * 1.5);\n }\n .pb-0 {\n padding-bottom: calc(var(--spacing) * 0);\n }\n .pb-0\\.5 {\n padding-bottom: calc(var(--spacing) * 0.5);\n }\n .pb-1 {\n padding-bottom: calc(var(--spacing) * 1);\n }\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n .text-center {\n text-align: center;\n }\n .text-left {\n text-align: left;\n }\n .align-top {\n vertical-align: top;\n }\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .text-\\[9px\\] {\n font-size: 9px;\n }\n .text-\\[11px\\] {\n font-size: 11px;\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-normal {\n --tw-font-weight: var(--font-weight-normal);\n font-weight: var(--font-weight-normal);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .tracking-tight {\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n .break-all {\n word-break: break-all;\n }\n .text-da-gray-dark {\n color: hsl(215 13.8% 34.1%);\n }\n .text-da-gray-medium {\n color: hsl(215 16% 47%);\n }\n .text-da-primary-300 {\n color: hsl(198 28% 61%);\n }\n .text-da-primary-500 {\n color: hsl(198 100% 22%);\n }\n .text-da-secondary-500 {\n color: hsl(67 54% 48%);\n }\n .text-gray-400 {\n color: var(--color-gray-400);\n }\n .text-green-600 {\n color: var(--color-green-600);\n }\n .text-red-500 {\n color: var(--color-red-500);\n }\n .text-white {\n color: var(--color-white);\n }\n .text-white\\/90 {\n color: color-mix(in srgb, #fff 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-white) 90%, transparent);\n }\n }\n .capitalize {\n text-transform: capitalize;\n }\n .lowercase {\n text-transform: lowercase;\n }\n .uppercase {\n text-transform: uppercase;\n }\n .underline {\n text-decoration-line: underline;\n }\n .placeholder-white {\n &::placeholder {\n color: var(--color-white);\n }\n }\n .placeholder-white\\/70 {\n &::placeholder {\n color: color-mix(in srgb, #fff 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-white) 70%, transparent);\n }\n }\n }\n .opacity-80 {\n opacity: 80%;\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-none {\n --tw-shadow: 0 0 #0000;\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .filter {\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .hover\\:border-\\[1\\.5px\\] {\n &:hover {\n @media (hover: hover) {\n border-style: var(--tw-border-style);\n border-width: 1.5px;\n }\n }\n }\n .hover\\:border-da-primary-500 {\n &:hover {\n @media (hover: hover) {\n border-color: hsl(198 100% 22%);\n }\n }\n }\n .hover\\:bg-da-primary-100 {\n &:hover {\n @media (hover: hover) {\n background-color: hsl(196 28% 92%);\n }\n }\n }\n .hover\\:bg-gray-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-gray-100);\n }\n }\n }\n .hover\\:text-red-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-600);\n }\n }\n }\n .hover\\:opacity-80 {\n &:hover {\n @media (hover: hover) {\n opacity: 80%;\n }\n }\n }\n .focus\\:ring-1 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-da-primary-500 {\n &:focus {\n --tw-ring-color: hsl(198 100% 22%);\n }\n }\n .focus\\:outline-none {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .xl\\:w-\\[80vw\\] {\n @media (width >= 80rem) {\n width: 80vw;\n }\n }\n}\n.flow-plugin-root {\n --color-da-primary-100: hsl(196 28% 92%);\n --color-da-primary-300: hsl(198 28% 61%);\n --color-da-primary-500: hsl(198 100% 22%);\n --color-da-secondary-100: hsl(67 54% 92%);\n --color-da-secondary-300: hsl(67 54% 68%);\n --color-da-secondary-500: hsl(67 54% 48%);\n --color-da-white: hsl(0 0% 100%);\n --color-da-black: hsl(0 0% 0%);\n --color-da-gray-light: hsl(214 32% 91%);\n --color-da-gray-medium: hsl(215 16% 47%);\n --color-da-gray-dark: hsl(215 13.8% 34.1%);\n --color-da-gray-darkest: hsl(217 33% 17%);\n}\n.flow-plugin-root input:focus,\n.flow-plugin-root textarea:focus {\n outline: none;\n box-shadow: inset 0 0 0 2px var(--color-da-primary-500);\n}\n.flow-plugin-root .step-title-input:focus {\n box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.8);\n}\n.flow-dialog-overlay {\n position: fixed;\n inset: 0;\n z-index: 99999;\n}\n.flow-plugin-root .bg-gradient-flow-header {\n background: linear-gradient(\n to top right,\n var(--color-da-secondary-500),\n var(--color-da-primary-500)\n );\n}\n.flow-plugin-root input[type="checkbox"] {\n accent-color: var(--color-da-primary-500);\n}\n.flow-plugin-root input[type="checkbox"]:checked {\n background-color: var(--color-da-primary-500);\n accent-color: var(--color-da-primary-500);\n}\n.flow-plugin-root .btn-outline {\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.375rem;\n height: 2rem;\n padding: 0 0.75rem;\n font-size: 0.875rem;\n font-weight: 500;\n border-radius: 0.375rem;\n border: 1px solid var(--color-da-gray-light);\n background-color: var(--color-da-white);\n color: var(--color-da-gray-darkest);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n transition: all 0.15s;\n}\n.flow-plugin-root .btn-outline:hover {\n background-color: var(--color-da-gray-light);\n}\n.flow-plugin-root .btn-outline svg {\n width: 1rem;\n height: 1rem;\n flex-shrink: 0;\n}\n.flow-plugin-root .btn-dash {\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.25rem;\n width: 100%;\n height: auto;\n padding: 0.375rem 0.75rem;\n font-size: 0.75rem;\n font-weight: 500;\n border-radius: 0.375rem;\n border: 1px dashed var(--color-da-primary-500);\n background-color: transparent;\n color: var(--color-da-primary-500);\n transition: all 0.15s;\n}\n.flow-plugin-root .btn-dash:hover {\n background-color: var(--color-da-primary-100);\n}\n.flow-plugin-root .btn-outline-nocolor {\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.375rem;\n height: 1.75rem;\n min-width: 5rem;\n padding: 0 0.75rem;\n font-size: 0.875rem;\n font-weight: 500;\n border-radius: 0.375rem;\n border: 1px solid transparent;\n background-color: transparent;\n color: var(--color-da-primary-500);\n transition: all 0.15s;\n}\n.flow-plugin-root .btn-outline-nocolor:hover {\n background-color: var(--color-da-primary-100);\n}\n.flow-plugin-root .btn-primary {\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.375rem;\n height: 2rem;\n min-width: 5rem;\n padding: 0 0.75rem;\n font-size: 0.875rem;\n font-weight: 500;\n border-radius: 0.375rem;\n border: none;\n background-color: var(--color-da-primary-500);\n color: white;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n transition: all 0.15s;\n}\n.flow-plugin-root .btn-primary:hover {\n filter: brightness(0.95);\n}\n.flow-plugin-root .btn-primary svg {\n width: 1rem;\n height: 1rem;\n flex-shrink: 0;\n}\n@property --tw-border-spacing-x {\n syntax: "";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-spacing-y {\n syntax: "";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-x {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-rotate-x {\n syntax: "*";\n inherits: false;\n}\n@property --tw-rotate-y {\n syntax: "*";\n inherits: false;\n}\n@property --tw-rotate-z {\n syntax: "*";\n inherits: false;\n}\n@property --tw-skew-x {\n syntax: "*";\n inherits: false;\n}\n@property --tw-skew-y {\n syntax: "*";\n inherits: false;\n}\n@property --tw-space-y-reverse {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-space-x-reverse {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: "*";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-font-weight {\n syntax: "*";\n inherits: false;\n}\n@property --tw-tracking {\n syntax: "*";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: "";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: "";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: "*";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: "";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: "*";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: "*";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-blur {\n syntax: "*";\n inherits: false;\n}\n@property --tw-brightness {\n syntax: "*";\n inherits: false;\n}\n@property --tw-contrast {\n syntax: "*";\n inherits: false;\n}\n@property --tw-grayscale {\n syntax: "*";\n inherits: false;\n}\n@property --tw-hue-rotate {\n syntax: "*";\n inherits: false;\n}\n@property --tw-invert {\n syntax: "*";\n inherits: false;\n}\n@property --tw-opacity {\n syntax: "*";\n inherits: false;\n}\n@property --tw-saturate {\n syntax: "*";\n inherits: false;\n}\n@property --tw-sepia {\n syntax: "*";\n inherits: false;\n}\n@property --tw-drop-shadow {\n syntax: "*";\n inherits: false;\n}\n@property --tw-drop-shadow-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-drop-shadow-alpha {\n syntax: "";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-drop-shadow-size {\n syntax: "*";\n inherits: false;\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-space-y-reverse: 0;\n --tw-space-x-reverse: 0;\n --tw-border-style: solid;\n --tw-font-weight: initial;\n --tw-tracking: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-blur: initial;\n --tw-brightness: initial;\n --tw-contrast: initial;\n --tw-grayscale: initial;\n --tw-hue-rotate: initial;\n --tw-invert: initial;\n --tw-opacity: initial;\n --tw-saturate: initial;\n --tw-sepia: initial;\n --tw-drop-shadow: initial;\n --tw-drop-shadow-color: initial;\n --tw-drop-shadow-alpha: 100%;\n --tw-drop-shadow-size: initial;\n }\n }\n}\n'; + + // src/flow/FlowItem.tsx + var import_react8 = __require("react"); + + // src/flow/flow.colors.ts + var asilBgColors = { + D: { bg: "hsl(0 84% 60%)", border: "hsl(0 84% 45%)" }, + C: { bg: "hsl(25 95% 53%)", border: "hsl(25 95% 40%)" }, + B: { bg: "hsl(45 93% 47%)", border: "hsl(45 93% 35%)" }, + A: { bg: "hsl(67 54% 48%)", border: "hsl(67 54% 35%)" }, + QM: { bg: "hsl(198 28% 61%)", border: "hsl(198 100% 22%)" } + }; + + // src/flow/ASILBadge.tsx + var import_jsx_runtime = __require("react/jsx-runtime"); + var ASILBadge = ({ + preAsilLevel, + postAsilLevel, + showBadge = true, + showFullText = false, + className, + preItemClassName, + postItemClassName + }) => { + if (!showBadge) + return null; + const displayPre = showFullText ? preAsilLevel === "QM" ? "QM" : `ASIL-${preAsilLevel}` : preAsilLevel; + const displayPost = postAsilLevel && (showFullText ? postAsilLevel === "QM" ? "QM" : `ASIL-${postAsilLevel}` : postAsilLevel); + const areLevelsSame = postAsilLevel ? preAsilLevel === postAsilLevel : false; + const showOverlayBadge = postAsilLevel && !areLevelsSame; + const mainBadgeDisplay = postAsilLevel && !areLevelsSame ? displayPost : displayPre; + const mainBadgeStyle = postAsilLevel && !areLevelsSame ? asilBgColors[postAsilLevel] : asilBgColors[preAsilLevel]; + const mainBadgeExtraClasses = postAsilLevel && !areLevelsSame ? postItemClassName : preItemClassName; + return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: cn("relative inline-block", className), children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)( + "span", + { + className: cn( + "flex w-10 h-7 text-[9px] py-0 px-1 items-start justify-start font-bold rounded-md text-white", + mainBadgeExtraClasses + ), + style: { + backgroundColor: mainBadgeStyle.bg, + borderWidth: 1, + borderStyle: "solid", + borderColor: mainBadgeStyle.border + }, + children: mainBadgeDisplay + } + ), + showOverlayBadge && /* @__PURE__ */ (0, import_jsx_runtime.jsx)( + "span", + { + className: cn( + "absolute size-[16px] text-[9px] bottom-[3px] right-[3px] transform flex items-center justify-center font-bold rounded text-white", + preItemClassName + ), + style: { + backgroundColor: asilBgColors[preAsilLevel].bg, + borderWidth: 1, + borderStyle: "solid", + borderColor: asilBgColors[preAsilLevel].border + }, + children: displayPre + } + ) + ] }); + }; + + // node_modules/devlop/lib/default.js + function ok() { + } + function unreachable() { + } + + // node_modules/comma-separated-tokens/index.js + function stringify(values, options) { + const settings = options || {}; + const input = values[values.length - 1] === "" ? [...values, ""] : values; + return input.join( + (settings.padRight ? " " : "") + "," + (settings.padLeft === false ? "" : " ") + ).trim(); + } + + // node_modules/estree-util-is-identifier-name/lib/index.js + var nameRe = /^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u; + var nameReJsx = /^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u; + var emptyOptions = {}; + function name(name2, options) { + const settings = options || emptyOptions; + const re2 = settings.jsx ? nameReJsx : nameRe; + return re2.test(name2); + } + + // node_modules/hast-util-whitespace/lib/index.js + var re = /[ \t\n\f\r]/g; + function whitespace(thing) { + return typeof thing === "object" ? thing.type === "text" ? empty(thing.value) : false : empty(thing); + } + function empty(value) { + return value.replace(re, "") === ""; + } + + // node_modules/property-information/lib/util/schema.js + var Schema = class { + /** + * @param {SchemaType['property']} property + * Property. + * @param {SchemaType['normal']} normal + * Normal. + * @param {Space | undefined} [space] + * Space. + * @returns + * Schema. + */ + constructor(property, normal, space2) { + this.normal = normal; + this.property = property; + if (space2) { + this.space = space2; + } + } + }; + Schema.prototype.normal = {}; + Schema.prototype.property = {}; + Schema.prototype.space = void 0; + + // node_modules/property-information/lib/util/merge.js + function merge(definitions, space2) { + const property = {}; + const normal = {}; + for (const definition2 of definitions) { + Object.assign(property, definition2.property); + Object.assign(normal, definition2.normal); + } + return new Schema(property, normal, space2); + } + + // node_modules/property-information/lib/normalize.js + function normalize(value) { + return value.toLowerCase(); + } + + // node_modules/property-information/lib/util/info.js + var Info = class { + /** + * @param {string} property + * Property. + * @param {string} attribute + * Attribute. + * @returns + * Info. + */ + constructor(property, attribute) { + this.attribute = attribute; + this.property = property; + } + }; + Info.prototype.attribute = ""; + Info.prototype.booleanish = false; + Info.prototype.boolean = false; + Info.prototype.commaOrSpaceSeparated = false; + Info.prototype.commaSeparated = false; + Info.prototype.defined = false; + Info.prototype.mustUseProperty = false; + Info.prototype.number = false; + Info.prototype.overloadedBoolean = false; + Info.prototype.property = ""; + Info.prototype.spaceSeparated = false; + Info.prototype.space = void 0; + + // node_modules/property-information/lib/util/types.js + var types_exports = {}; + __export(types_exports, { + boolean: () => boolean, + booleanish: () => booleanish, + commaOrSpaceSeparated: () => commaOrSpaceSeparated, + commaSeparated: () => commaSeparated, + number: () => number, + overloadedBoolean: () => overloadedBoolean, + spaceSeparated: () => spaceSeparated + }); + var powers = 0; + var boolean = increment(); + var booleanish = increment(); + var overloadedBoolean = increment(); + var number = increment(); + var spaceSeparated = increment(); + var commaSeparated = increment(); + var commaOrSpaceSeparated = increment(); + function increment() { + return 2 ** ++powers; + } + + // node_modules/property-information/lib/util/defined-info.js + var checks = ( + /** @type {ReadonlyArray} */ + Object.keys(types_exports) + ); + var DefinedInfo = class extends Info { + /** + * @constructor + * @param {string} property + * Property. + * @param {string} attribute + * Attribute. + * @param {number | null | undefined} [mask] + * Mask. + * @param {Space | undefined} [space] + * Space. + * @returns + * Info. + */ + constructor(property, attribute, mask, space2) { + let index2 = -1; + super(property, attribute); + mark(this, "space", space2); + if (typeof mask === "number") { + while (++index2 < checks.length) { + const check = checks[index2]; + mark(this, checks[index2], (mask & types_exports[check]) === types_exports[check]); + } + } + } + }; + DefinedInfo.prototype.defined = true; + function mark(values, key, value) { + if (value) { + values[key] = value; + } + } + + // node_modules/property-information/lib/util/create.js + function create(definition2) { + const properties = {}; + const normals = {}; + for (const [property, value] of Object.entries(definition2.properties)) { + const info = new DefinedInfo( + property, + definition2.transform(definition2.attributes || {}, property), + value, + definition2.space + ); + if (definition2.mustUseProperty && definition2.mustUseProperty.includes(property)) { + info.mustUseProperty = true; + } + properties[property] = info; + normals[normalize(property)] = property; + normals[normalize(info.attribute)] = property; + } + return new Schema(properties, normals, definition2.space); + } + + // node_modules/property-information/lib/aria.js + var aria = create({ + properties: { + ariaActiveDescendant: null, + ariaAtomic: booleanish, + ariaAutoComplete: null, + ariaBusy: booleanish, + ariaChecked: booleanish, + ariaColCount: number, + ariaColIndex: number, + ariaColSpan: number, + ariaControls: spaceSeparated, + ariaCurrent: null, + ariaDescribedBy: spaceSeparated, + ariaDetails: null, + ariaDisabled: booleanish, + ariaDropEffect: spaceSeparated, + ariaErrorMessage: null, + ariaExpanded: booleanish, + ariaFlowTo: spaceSeparated, + ariaGrabbed: booleanish, + ariaHasPopup: null, + ariaHidden: booleanish, + ariaInvalid: null, + ariaKeyShortcuts: null, + ariaLabel: null, + ariaLabelledBy: spaceSeparated, + ariaLevel: number, + ariaLive: null, + ariaModal: booleanish, + ariaMultiLine: booleanish, + ariaMultiSelectable: booleanish, + ariaOrientation: null, + ariaOwns: spaceSeparated, + ariaPlaceholder: null, + ariaPosInSet: number, + ariaPressed: booleanish, + ariaReadOnly: booleanish, + ariaRelevant: null, + ariaRequired: booleanish, + ariaRoleDescription: spaceSeparated, + ariaRowCount: number, + ariaRowIndex: number, + ariaRowSpan: number, + ariaSelected: booleanish, + ariaSetSize: number, + ariaSort: null, + ariaValueMax: number, + ariaValueMin: number, + ariaValueNow: number, + ariaValueText: null, + role: null + }, + transform(_, property) { + return property === "role" ? property : "aria-" + property.slice(4).toLowerCase(); + } + }); + + // node_modules/property-information/lib/util/case-sensitive-transform.js + function caseSensitiveTransform(attributes, attribute) { + return attribute in attributes ? attributes[attribute] : attribute; + } + + // node_modules/property-information/lib/util/case-insensitive-transform.js + function caseInsensitiveTransform(attributes, property) { + return caseSensitiveTransform(attributes, property.toLowerCase()); + } + + // node_modules/property-information/lib/html.js + var html = create({ + attributes: { + acceptcharset: "accept-charset", + classname: "class", + htmlfor: "for", + httpequiv: "http-equiv" + }, + mustUseProperty: ["checked", "multiple", "muted", "selected"], + properties: { + // Standard Properties. + abbr: null, + accept: commaSeparated, + acceptCharset: spaceSeparated, + accessKey: spaceSeparated, + action: null, + allow: null, + allowFullScreen: boolean, + allowPaymentRequest: boolean, + allowUserMedia: boolean, + alt: null, + as: null, + async: boolean, + autoCapitalize: null, + autoComplete: spaceSeparated, + autoFocus: boolean, + autoPlay: boolean, + blocking: spaceSeparated, + capture: null, + charSet: null, + checked: boolean, + cite: null, + className: spaceSeparated, + cols: number, + colSpan: null, + content: null, + contentEditable: booleanish, + controls: boolean, + controlsList: spaceSeparated, + coords: number | commaSeparated, + crossOrigin: null, + data: null, + dateTime: null, + decoding: null, + default: boolean, + defer: boolean, + dir: null, + dirName: null, + disabled: boolean, + download: overloadedBoolean, + draggable: booleanish, + encType: null, + enterKeyHint: null, + fetchPriority: null, + form: null, + formAction: null, + formEncType: null, + formMethod: null, + formNoValidate: boolean, + formTarget: null, + headers: spaceSeparated, + height: number, + hidden: overloadedBoolean, + high: number, + href: null, + hrefLang: null, + htmlFor: spaceSeparated, + httpEquiv: spaceSeparated, + id: null, + imageSizes: null, + imageSrcSet: null, + inert: boolean, + inputMode: null, + integrity: null, + is: null, + isMap: boolean, + itemId: null, + itemProp: spaceSeparated, + itemRef: spaceSeparated, + itemScope: boolean, + itemType: spaceSeparated, + kind: null, + label: null, + lang: null, + language: null, + list: null, + loading: null, + loop: boolean, + low: number, + manifest: null, + max: null, + maxLength: number, + media: null, + method: null, + min: null, + minLength: number, + multiple: boolean, + muted: boolean, + name: null, + nonce: null, + noModule: boolean, + noValidate: boolean, + onAbort: null, + onAfterPrint: null, + onAuxClick: null, + onBeforeMatch: null, + onBeforePrint: null, + onBeforeToggle: null, + onBeforeUnload: null, + onBlur: null, + onCancel: null, + onCanPlay: null, + onCanPlayThrough: null, + onChange: null, + onClick: null, + onClose: null, + onContextLost: null, + onContextMenu: null, + onContextRestored: null, + onCopy: null, + onCueChange: null, + onCut: null, + onDblClick: null, + onDrag: null, + onDragEnd: null, + onDragEnter: null, + onDragExit: null, + onDragLeave: null, + onDragOver: null, + onDragStart: null, + onDrop: null, + onDurationChange: null, + onEmptied: null, + onEnded: null, + onError: null, + onFocus: null, + onFormData: null, + onHashChange: null, + onInput: null, + onInvalid: null, + onKeyDown: null, + onKeyPress: null, + onKeyUp: null, + onLanguageChange: null, + onLoad: null, + onLoadedData: null, + onLoadedMetadata: null, + onLoadEnd: null, + onLoadStart: null, + onMessage: null, + onMessageError: null, + onMouseDown: null, + onMouseEnter: null, + onMouseLeave: null, + onMouseMove: null, + onMouseOut: null, + onMouseOver: null, + onMouseUp: null, + onOffline: null, + onOnline: null, + onPageHide: null, + onPageShow: null, + onPaste: null, + onPause: null, + onPlay: null, + onPlaying: null, + onPopState: null, + onProgress: null, + onRateChange: null, + onRejectionHandled: null, + onReset: null, + onResize: null, + onScroll: null, + onScrollEnd: null, + onSecurityPolicyViolation: null, + onSeeked: null, + onSeeking: null, + onSelect: null, + onSlotChange: null, + onStalled: null, + onStorage: null, + onSubmit: null, + onSuspend: null, + onTimeUpdate: null, + onToggle: null, + onUnhandledRejection: null, + onUnload: null, + onVolumeChange: null, + onWaiting: null, + onWheel: null, + open: boolean, + optimum: number, + pattern: null, + ping: spaceSeparated, + placeholder: null, + playsInline: boolean, + popover: null, + popoverTarget: null, + popoverTargetAction: null, + poster: null, + preload: null, + readOnly: boolean, + referrerPolicy: null, + rel: spaceSeparated, + required: boolean, + reversed: boolean, + rows: number, + rowSpan: number, + sandbox: spaceSeparated, + scope: null, + scoped: boolean, + seamless: boolean, + selected: boolean, + shadowRootClonable: boolean, + shadowRootDelegatesFocus: boolean, + shadowRootMode: null, + shape: null, + size: number, + sizes: null, + slot: null, + span: number, + spellCheck: booleanish, + src: null, + srcDoc: null, + srcLang: null, + srcSet: null, + start: number, + step: null, + style: null, + tabIndex: number, + target: null, + title: null, + translate: null, + type: null, + typeMustMatch: boolean, + useMap: null, + value: booleanish, + width: number, + wrap: null, + writingSuggestions: null, + // Legacy. + // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis + align: null, + // Several. Use CSS `text-align` instead, + aLink: null, + // ``. Use CSS `a:active {color}` instead + archive: spaceSeparated, + // ``. List of URIs to archives + axis: null, + // `` and ``. Use `scope` on `` + background: null, + // ``. Use CSS `background-image` instead + bgColor: null, + // `` and table elements. Use CSS `background-color` instead + border: number, + // ``. Use CSS `border-width` instead, + borderColor: null, + // `
`. Use CSS `border-color` instead, + bottomMargin: number, + // `` + cellPadding: null, + // `
` + cellSpacing: null, + // `
` + char: null, + // Several table elements. When `align=char`, sets the character to align on + charOff: null, + // Several table elements. When `char`, offsets the alignment + classId: null, + // `` + clear: null, + // `
`. Use CSS `clear` instead + code: null, + // `` + codeBase: null, + // `` + codeType: null, + // `` + color: null, + // `` and `
`. Use CSS instead + compact: boolean, + // Lists. Use CSS to reduce space between items instead + declare: boolean, + // `` + event: null, + // `\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code);\n buffer = '';\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In raw continuation, after ` | \n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase();\n if (htmlRawNames.includes(name)) {\n effects.consume(code);\n return continuationClose;\n }\n return continuation(code);\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n // Always the case.\n effects.consume(code);\n buffer += String.fromCharCode(code);\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code);\n return continuationClose;\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"htmlFlowData\");\n return continuationAfter(code);\n }\n effects.consume(code);\n return continuationClose;\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit(\"htmlFlow\");\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start;\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > |
\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return effects.attempt(blankLine, ok, nok);\n }\n}", "/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this;\n /** @type {NonNullable | undefined} */\n let marker;\n /** @type {number} */\n let index;\n /** @type {State} */\n let returnState;\n return start;\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"htmlText\");\n effects.enter(\"htmlTextData\");\n effects.consume(code);\n return open;\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a c\n * ^\n * > | a c\n * ^\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code);\n return declarationOpen;\n }\n if (code === 47) {\n effects.consume(code);\n return tagCloseStart;\n }\n if (code === 63) {\n effects.consume(code);\n return instruction;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagOpen;\n }\n return nok(code);\n }\n\n /**\n * After ` | a c\n * ^\n * > | a c\n * ^\n * > | a &<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code);\n return commentOpenInside;\n }\n if (code === 91) {\n effects.consume(code);\n index = 0;\n return cdataOpenInside;\n }\n if (asciiAlpha(code)) {\n effects.consume(code);\n return declaration;\n }\n return nok(code);\n }\n\n /**\n * In a comment, after ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return nok(code);\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 45) {\n effects.consume(code);\n return commentClose;\n }\n if (markdownLineEnding(code)) {\n returnState = comment;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return comment;\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return comment(code);\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62 ? end(code) : code === 45 ? commentClose(code) : comment(code);\n }\n\n /**\n * After ` | a &<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = \"CDATA[\";\n if (code === value.charCodeAt(index++)) {\n effects.consume(code);\n return index === value.length ? cdata : cdataOpenInside;\n }\n return nok(code);\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a &<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataClose;\n }\n if (markdownLineEnding(code)) {\n returnState = cdata;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return cdata;\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code);\n }\n if (markdownLineEnding(code)) {\n returnState = declaration;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return declaration;\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 63) {\n effects.consume(code);\n return instructionClose;\n }\n if (markdownLineEnding(code)) {\n returnState = instruction;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return instruction;\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagClose;\n }\n return nok(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagClose;\n }\n return tagCloseBetween(code);\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagCloseBetween;\n }\n return end(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpen;\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code);\n return end;\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenBetween;\n }\n return end(code);\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n return tagOpenAttributeNameAfter(code);\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeNameAfter;\n }\n return tagOpenBetween(code);\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n return nok(code);\n }\n if (code === 34 || code === 39) {\n effects.consume(code);\n marker = code;\n return tagOpenAttributeValueQuoted;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code);\n marker = undefined;\n return tagOpenAttributeValueQuotedAfter;\n }\n if (code === null) {\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueQuoted;\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 96) {\n return nok(code);\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code);\n effects.exit(\"htmlTextData\");\n effects.exit(\"htmlText\");\n return ok;\n }\n return nok(code);\n }\n\n /**\n * At eol.\n *\n * > \uD83D\uDC49 **Note**: we can\u2019t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a \n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit(\"htmlTextData\");\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineEndingAfter;\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > \uD83D\uDC49 **Note**: we can\u2019t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code) ? factorySpace(effects, lineEndingAfterPrefix, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : lineEndingAfterPrefix(code);\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > \uD83D\uDC49 **Note**: we can\u2019t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter(\"htmlTextData\");\n return returnState(code);\n }\n}", "/**\n * @import {\n * Construct,\n * Event,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n resolveAll: resolveAllLabelEnd,\n resolveTo: resolveToLabelEnd,\n tokenize: tokenizeLabelEnd\n};\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n};\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n};\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n};\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1;\n /** @type {Array} */\n const newEvents = [];\n while (++index < events.length) {\n const token = events[index][1];\n newEvents.push(events[index]);\n if (token.type === \"labelImage\" || token.type === \"labelLink\" || token.type === \"labelEnd\") {\n // Remove the marker.\n const offset = token.type === \"labelImage\" ? 4 : 2;\n token.type = \"data\";\n index += offset;\n }\n }\n\n // If the events are equal, we don't have to copy newEvents to events\n if (events.length !== newEvents.length) {\n splice(events, 0, events.length, newEvents);\n }\n return events;\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length;\n let offset = 0;\n /** @type {Token} */\n let token;\n /** @type {number | undefined} */\n let open;\n /** @type {number | undefined} */\n let close;\n /** @type {Array} */\n let media;\n\n // Find an opening.\n while (index--) {\n token = events[index][1];\n if (open) {\n // If we see another link, or inactive link label, we\u2019ve been here before.\n if (token.type === \"link\" || token.type === \"labelLink\" && token._inactive) {\n break;\n }\n\n // Mark other link openings as inactive, as we can\u2019t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === \"labelLink\") {\n token._inactive = true;\n }\n } else if (close) {\n if (events[index][0] === 'enter' && (token.type === \"labelImage\" || token.type === \"labelLink\") && !token._balanced) {\n open = index;\n if (token.type !== \"labelLink\") {\n offset = 2;\n break;\n }\n }\n } else if (token.type === \"labelEnd\") {\n close = index;\n }\n }\n const group = {\n type: events[open][1].type === \"labelLink\" ? \"link\" : \"image\",\n start: {\n ...events[open][1].start\n },\n end: {\n ...events[events.length - 1][1].end\n }\n };\n const label = {\n type: \"label\",\n start: {\n ...events[open][1].start\n },\n end: {\n ...events[close][1].end\n }\n };\n const text = {\n type: \"labelText\",\n start: {\n ...events[open + offset + 2][1].end\n },\n end: {\n ...events[close - 2][1].start\n }\n };\n media = [['enter', group, context], ['enter', label, context]];\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3));\n\n // Text open.\n media = push(media, [['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n media = push(media, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context));\n\n // Text close, marker close, label close.\n media = push(media, [['exit', text, context], events[close - 2], events[close - 1], ['exit', label, context]]);\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1));\n\n // Media close.\n media = push(media, [['exit', group, context]]);\n splice(events, open, events.length, media);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this;\n let index = self.events.length;\n /** @type {Token} */\n let labelStart;\n /** @type {boolean} */\n let defined;\n\n // Find an opening.\n while (index--) {\n if ((self.events[index][1].type === \"labelImage\" || self.events[index][1].type === \"labelLink\") && !self.events[index][1]._balanced) {\n labelStart = self.events[index][1];\n break;\n }\n }\n return start;\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code);\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we\u2019d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can\u2019t have that, so it\u2019s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code);\n }\n defined = self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })));\n effects.enter(\"labelEnd\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelEnd\");\n return after;\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(resourceConstruct, labelEndOk, defined ? labelEndOk : labelEndNok)(code);\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(referenceFullConstruct, labelEndOk, defined ? referenceNotFull : labelEndNok)(code);\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code);\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > \uD83D\uDC49 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code);\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code);\n }\n\n /**\n * Done, it\u2019s nothing.\n *\n * There was an okay opening, but we didn\u2019t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true;\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart;\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter(\"resource\");\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n return resourceBefore;\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceOpen)(code) : resourceOpen(code);\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code);\n }\n return factoryDestination(effects, resourceDestinationAfter, resourceDestinationMissing, \"resourceDestination\", \"resourceDestinationLiteral\", \"resourceDestinationLiteralMarker\", \"resourceDestinationRaw\", \"resourceDestinationString\", 32)(code);\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceBetween)(code) : resourceEnd(code);\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code);\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(effects, resourceTitleAfter, nok, \"resourceTitle\", \"resourceTitleMarker\", \"resourceTitleString\")(code);\n }\n return resourceEnd(code);\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceEnd)(code) : resourceEnd(code);\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n effects.exit(\"resource\");\n return ok;\n }\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this;\n return referenceFull;\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(self, effects, referenceFullAfter, referenceFullMissing, \"reference\", \"referenceMarker\", \"referenceString\")(code);\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1))) ? ok(code) : nok(code);\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart;\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > \uD83D\uDC49 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there\u2019s a `[`.\n\n effects.enter(\"reference\");\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n return referenceCollapsedOpen;\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > \uD83D\uDC49 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n effects.exit(\"reference\");\n return ok;\n }\n return nok(code);\n }\n}", "/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n resolveAll: labelEnd.resolveAll,\n tokenize: tokenizeLabelStartImage\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelImage\");\n effects.enter(\"labelImageMarker\");\n effects.consume(code);\n effects.exit(\"labelImageMarker\");\n return open;\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelImage\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n *

!^a

\n *

!^a

\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn\u2019t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}", "/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n resolveAll: labelEnd.resolveAll,\n tokenize: tokenizeLabelStartLink\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelLink\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelLink\");\n return after;\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn\u2019t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}", "/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start;\n\n /** @type {State} */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, ok, \"linePrefix\");\n }\n}", "/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeThematicBreak(effects, ok, nok) {\n let size = 0;\n /** @type {NonNullable} */\n let marker;\n return start;\n\n /**\n * Start of thematic break.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"thematicBreak\");\n // To do: parse indent like `markdown-rs`.\n return before(code);\n }\n\n /**\n * After optional whitespace, at marker.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n marker = code;\n return atBreak(code);\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.enter(\"thematicBreakSequence\");\n return sequence(code);\n }\n if (size >= 3 && (code === null || markdownLineEnding(code))) {\n effects.exit(\"thematicBreak\");\n return ok(code);\n }\n return nok(code);\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function sequence(code) {\n if (code === marker) {\n effects.consume(code);\n size++;\n return sequence;\n }\n effects.exit(\"thematicBreakSequence\");\n return markdownSpace(code) ? factorySpace(effects, atBreak, \"whitespace\")(code) : atBreak(code);\n }\n}", "/**\n * @import {\n * Code,\n * Construct,\n * Exiter,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiDigit, markdownSpace } from 'micromark-util-character';\nimport { blankLine } from './blank-line.js';\nimport { thematicBreak } from './thematic-break.js';\n\n/** @type {Construct} */\nexport const list = {\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd,\n name: 'list',\n tokenize: tokenizeListStart\n};\n\n/** @type {Construct} */\nconst listItemPrefixWhitespaceConstruct = {\n partial: true,\n tokenize: tokenizeListItemPrefixWhitespace\n};\n\n/** @type {Construct} */\nconst indentConstruct = {\n partial: true,\n tokenize: tokenizeIndent\n};\n\n// To do: `markdown-rs` parses list items on their own and later stitches them\n// together.\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListStart(effects, ok, nok) {\n const self = this;\n const tail = self.events[self.events.length - 1];\n let initialSize = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n let size = 0;\n return start;\n\n /** @type {State} */\n function start(code) {\n const kind = self.containerState.type || (code === 42 || code === 43 || code === 45 ? \"listUnordered\" : \"listOrdered\");\n if (kind === \"listUnordered\" ? !self.containerState.marker || code === self.containerState.marker : asciiDigit(code)) {\n if (!self.containerState.type) {\n self.containerState.type = kind;\n effects.enter(kind, {\n _container: true\n });\n }\n if (kind === \"listUnordered\") {\n effects.enter(\"listItemPrefix\");\n return code === 42 || code === 45 ? effects.check(thematicBreak, nok, atMarker)(code) : atMarker(code);\n }\n if (!self.interrupt || code === 49) {\n effects.enter(\"listItemPrefix\");\n effects.enter(\"listItemValue\");\n return inside(code);\n }\n }\n return nok(code);\n }\n\n /** @type {State} */\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code);\n return inside;\n }\n if ((!self.interrupt || size < 2) && (self.containerState.marker ? code === self.containerState.marker : code === 41 || code === 46)) {\n effects.exit(\"listItemValue\");\n return atMarker(code);\n }\n return nok(code);\n }\n\n /**\n * @type {State}\n **/\n function atMarker(code) {\n effects.enter(\"listItemMarker\");\n effects.consume(code);\n effects.exit(\"listItemMarker\");\n self.containerState.marker = self.containerState.marker || code;\n return effects.check(blankLine,\n // Can\u2019t be empty when interrupting.\n self.interrupt ? nok : onBlank, effects.attempt(listItemPrefixWhitespaceConstruct, endOfPrefix, otherPrefix));\n }\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.initialBlankLine = true;\n initialSize++;\n return endOfPrefix(code);\n }\n\n /** @type {State} */\n function otherPrefix(code) {\n if (markdownSpace(code)) {\n effects.enter(\"listItemPrefixWhitespace\");\n effects.consume(code);\n effects.exit(\"listItemPrefixWhitespace\");\n return endOfPrefix;\n }\n return nok(code);\n }\n\n /** @type {State} */\n function endOfPrefix(code) {\n self.containerState.size = initialSize + self.sliceSerialize(effects.exit(\"listItemPrefix\"), true).length;\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListContinuation(effects, ok, nok) {\n const self = this;\n self.containerState._closeFlow = undefined;\n return effects.check(blankLine, onBlank, notBlank);\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.furtherBlankLines = self.containerState.furtherBlankLines || self.containerState.initialBlankLine;\n\n // We have a blank line.\n // Still, try to consume at most the items size.\n return factorySpace(effects, ok, \"listItemIndent\", self.containerState.size + 1)(code);\n }\n\n /** @type {State} */\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = undefined;\n self.containerState.initialBlankLine = undefined;\n return notInCurrentItem(code);\n }\n self.containerState.furtherBlankLines = undefined;\n self.containerState.initialBlankLine = undefined;\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code);\n }\n\n /** @type {State} */\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true;\n // As we\u2019re closing flow, we\u2019re no longer interrupting.\n self.interrupt = undefined;\n // Always populated by defaults.\n\n return factorySpace(effects, effects.attempt(list, ok, nok), \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this;\n return factorySpace(effects, afterPrefix, \"listItemIndent\", self.containerState.size + 1);\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === \"listItemIndent\" && tail[2].sliceSerialize(tail[1], true).length === self.containerState.size ? ok(code) : nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Exiter}\n */\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type);\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n const self = this;\n\n // Always populated by defaults.\n\n return factorySpace(effects, afterPrefix, \"listItemPrefixWhitespace\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4 + 1);\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return !markdownSpace(code) && tail && tail[1].type === \"listItemPrefixWhitespace\" ? ok(code) : nok(code);\n }\n}", "/**\n * @import {\n * Code,\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const setextUnderline = {\n name: 'setextUnderline',\n resolveTo: resolveToSetextUnderline,\n tokenize: tokenizeSetextUnderline\n};\n\n/** @type {Resolver} */\nfunction resolveToSetextUnderline(events, context) {\n // To do: resolve like `markdown-rs`.\n let index = events.length;\n /** @type {number | undefined} */\n let content;\n /** @type {number | undefined} */\n let text;\n /** @type {number | undefined} */\n let definition;\n\n // Find the opening of the content.\n // It\u2019ll always exist: we don\u2019t tokenize if it isn\u2019t there.\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === \"content\") {\n content = index;\n break;\n }\n if (events[index][1].type === \"paragraph\") {\n text = index;\n }\n }\n // Exit\n else {\n if (events[index][1].type === \"content\") {\n // Remove the content end (if needed we\u2019ll add it later)\n events.splice(index, 1);\n }\n if (!definition && events[index][1].type === \"definition\") {\n definition = index;\n }\n }\n }\n const heading = {\n type: \"setextHeading\",\n start: {\n ...events[content][1].start\n },\n end: {\n ...events[events.length - 1][1].end\n }\n };\n\n // Change the paragraph to setext heading text.\n events[text][1].type = \"setextHeadingText\";\n\n // If we have definitions in the content, we\u2019ll keep on having content,\n // but we need move it.\n if (definition) {\n events.splice(text, 0, ['enter', heading, context]);\n events.splice(definition + 1, 0, ['exit', events[content][1], context]);\n events[content][1].end = {\n ...events[definition][1].end\n };\n } else {\n events[content][1] = heading;\n }\n\n // Add the heading exit at the end.\n events.push(['exit', heading, context]);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n const self = this;\n /** @type {NonNullable} */\n let marker;\n return start;\n\n /**\n * At start of heading (setext) underline.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n let index = self.events.length;\n /** @type {boolean | undefined} */\n let paragraph;\n // Find an opening.\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (self.events[index][1].type !== \"lineEnding\" && self.events[index][1].type !== \"linePrefix\" && self.events[index][1].type !== \"content\") {\n paragraph = self.events[index][1].type === \"paragraph\";\n break;\n }\n }\n\n // To do: handle lazy/pierce like `markdown-rs`.\n // To do: parse indent like `markdown-rs`.\n if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n effects.enter(\"setextHeadingLine\");\n marker = code;\n return before(code);\n }\n return nok(code);\n }\n\n /**\n * After optional whitespace, at `-` or `=`.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter(\"setextHeadingLineSequence\");\n return inside(code);\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code);\n return inside;\n }\n effects.exit(\"setextHeadingLineSequence\");\n return markdownSpace(code) ? factorySpace(effects, after, \"lineSuffix\")(code) : after(code);\n }\n\n /**\n * After sequence, after optional whitespace.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"setextHeadingLine\");\n return ok(code);\n }\n return nok(code);\n }\n}", "/**\n * @import {\n * InitialConstruct,\n * Initializer,\n * State,\n * TokenizeContext\n * } from 'micromark-util-types'\n */\n\nimport { blankLine, content } from 'micromark-core-commonmark';\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const flow = {\n tokenize: initializeFlow\n};\n\n/**\n * @this {TokenizeContext}\n * Self.\n * @type {Initializer}\n * Initializer.\n */\nfunction initializeFlow(effects) {\n const self = this;\n const initial = effects.attempt(\n // Try to parse a blank line.\n blankLine, atBlankEnding,\n // Try to parse initial flow (essentially, only code).\n effects.attempt(this.parser.constructs.flowInitial, afterConstruct, factorySpace(effects, effects.attempt(this.parser.constructs.flow, afterConstruct, effects.attempt(content, afterConstruct)), \"linePrefix\")));\n return initial;\n\n /** @type {State} */\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"lineEndingBlank\");\n effects.consume(code);\n effects.exit(\"lineEndingBlank\");\n self.currentConstruct = undefined;\n return initial;\n }\n\n /** @type {State} */\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n self.currentConstruct = undefined;\n return initial;\n }\n}", "/**\n * @import {\n * Code,\n * InitialConstruct,\n * Initializer,\n * Resolver,\n * State,\n * TokenizeContext\n * } from 'micromark-util-types'\n */\n\nexport const resolver = {\n resolveAll: createResolver()\n};\nexport const string = initializeFactory('string');\nexport const text = initializeFactory('text');\n\n/**\n * @param {'string' | 'text'} field\n * Field.\n * @returns {InitialConstruct}\n * Construct.\n */\nfunction initializeFactory(field) {\n return {\n resolveAll: createResolver(field === 'text' ? resolveAllLineSuffixes : undefined),\n tokenize: initializeText\n };\n\n /**\n * @this {TokenizeContext}\n * Context.\n * @type {Initializer}\n */\n function initializeText(effects) {\n const self = this;\n const constructs = this.parser.constructs[field];\n const text = effects.attempt(constructs, start, notText);\n return start;\n\n /** @type {State} */\n function start(code) {\n return atBreak(code) ? text(code) : notText(code);\n }\n\n /** @type {State} */\n function notText(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"data\");\n effects.consume(code);\n return data;\n }\n\n /** @type {State} */\n function data(code) {\n if (atBreak(code)) {\n effects.exit(\"data\");\n return text(code);\n }\n\n // Data.\n effects.consume(code);\n return data;\n }\n\n /**\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether the code is a break.\n */\n function atBreak(code) {\n if (code === null) {\n return true;\n }\n const list = constructs[code];\n let index = -1;\n if (list) {\n // Always populated by defaults.\n\n while (++index < list.length) {\n const item = list[index];\n if (!item.previous || item.previous.call(self, self.previous)) {\n return true;\n }\n }\n }\n return false;\n }\n }\n}\n\n/**\n * @param {Resolver | undefined} [extraResolver]\n * Resolver.\n * @returns {Resolver}\n * Resolver.\n */\nfunction createResolver(extraResolver) {\n return resolveAllText;\n\n /** @type {Resolver} */\n function resolveAllText(events, context) {\n let index = -1;\n /** @type {number | undefined} */\n let enter;\n\n // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === \"data\") {\n enter = index;\n index++;\n }\n } else if (!events[index] || events[index][1].type !== \"data\") {\n // Don\u2019t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return extraResolver ? extraResolver(events, context) : events;\n }\n}\n\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can\u2019t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\nfunction resolveAllLineSuffixes(events, context) {\n let eventIndex = 0; // Skip first.\n\n while (++eventIndex <= events.length) {\n if ((eventIndex === events.length || events[eventIndex][1].type === \"lineEnding\") && events[eventIndex - 1][1].type === \"data\") {\n const data = events[eventIndex - 1][1];\n const chunks = context.sliceStream(data);\n let index = chunks.length;\n let bufferIndex = -1;\n let size = 0;\n /** @type {boolean | undefined} */\n let tabs;\n while (index--) {\n const chunk = chunks[index];\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length;\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++;\n bufferIndex--;\n }\n if (bufferIndex) break;\n bufferIndex = -1;\n }\n // Number\n else if (chunk === -2) {\n tabs = true;\n size++;\n } else if (chunk === -1) {\n // Empty\n } else {\n // Replacement character, exit.\n index++;\n break;\n }\n }\n\n // Allow final trailing whitespace.\n if (context._contentTypeTextTrailing && eventIndex === events.length) {\n size = 0;\n }\n if (size) {\n const token = {\n type: eventIndex === events.length || tabs || size < 2 ? \"lineSuffix\" : \"hardBreakTrailing\",\n start: {\n _bufferIndex: index ? bufferIndex : data.start._bufferIndex + bufferIndex,\n _index: data.start._index + index,\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size\n },\n end: {\n ...data.end\n }\n };\n data.end = {\n ...token.start\n };\n if (data.start.offset === data.end.offset) {\n Object.assign(data, token);\n } else {\n events.splice(eventIndex, 0, ['enter', token, context], ['exit', token, context]);\n eventIndex += 2;\n }\n }\n eventIndex++;\n }\n }\n return events;\n}", "/**\n * @import {Extension} from 'micromark-util-types'\n */\n\nimport { attention, autolink, blockQuote, characterEscape, characterReference, codeFenced, codeIndented, codeText, definition, hardBreakEscape, headingAtx, htmlFlow, htmlText, labelEnd, labelStartImage, labelStartLink, lineEnding, list, setextUnderline, thematicBreak } from 'micromark-core-commonmark';\nimport { resolver as resolveText } from './initialize/text.js';\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n};\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n};\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n};\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n};\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n};\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n};\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n};\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n};\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n};", "/**\n * @import {\n * Chunk,\n * Code,\n * ConstructRecord,\n * Construct,\n * Effects,\n * InitialConstruct,\n * ParseContext,\n * Point,\n * State,\n * TokenizeContext,\n * Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @callback Restore\n * Restore the state.\n * @returns {undefined}\n * Nothing.\n *\n * @typedef Info\n * Info.\n * @property {Restore} restore\n * Restore.\n * @property {number} from\n * From.\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * Construct.\n * @param {Info} info\n * Info.\n * @returns {undefined}\n * Nothing.\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn\u2019t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * Parser.\n * @param {InitialConstruct} initialize\n * Construct.\n * @param {Omit | undefined} [from]\n * Point (optional).\n * @returns {TokenizeContext}\n * Context.\n */\nexport function createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = {\n _bufferIndex: -1,\n _index: 0,\n line: from && from.line || 1,\n column: from && from.column || 1,\n offset: from && from.offset || 0\n };\n /** @type {Record} */\n const columnStart = {};\n /** @type {Array} */\n const resolveAllConstructs = [];\n /** @type {Array} */\n let chunks = [];\n /** @type {Array} */\n let stack = [];\n /** @type {boolean | undefined} */\n let consumed = true;\n\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n const effects = {\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n consume,\n enter,\n exit,\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n })\n };\n\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n const context = {\n code: null,\n containerState: {},\n defineSkip,\n events: [],\n now,\n parser,\n previous: null,\n sliceSerialize,\n sliceStream,\n write\n };\n\n /**\n * The state function.\n *\n * @type {State | undefined}\n */\n let state = initialize.tokenize.call(context, effects);\n\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n let expectedCode;\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize);\n }\n return context;\n\n /** @type {TokenizeContext['write']} */\n function write(slice) {\n chunks = push(chunks, slice);\n main();\n\n // Exit if we\u2019re not done, resolve might change stuff.\n if (chunks[chunks.length - 1] !== null) {\n return [];\n }\n addResult(initialize, 0);\n\n // Otherwise, resolve, and exit.\n context.events = resolveAll(resolveAllConstructs, context.events, context);\n return context.events;\n }\n\n //\n // Tools.\n //\n\n /** @type {TokenizeContext['sliceSerialize']} */\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs);\n }\n\n /** @type {TokenizeContext['sliceStream']} */\n function sliceStream(token) {\n return sliceChunks(chunks, token);\n }\n\n /** @type {TokenizeContext['now']} */\n function now() {\n // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n const {\n _bufferIndex,\n _index,\n line,\n column,\n offset\n } = point;\n return {\n _bufferIndex,\n _index,\n line,\n column,\n offset\n };\n }\n\n /** @type {TokenizeContext['defineSkip']} */\n function defineSkip(value) {\n columnStart[value.line] = value.column;\n accountForPotentialSkip();\n }\n\n //\n // State management.\n //\n\n /**\n * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n * `consume`).\n * Here is where we walk through the chunks, which either include strings of\n * several characters, or numerical character codes.\n * The reason to do this in a loop instead of a call is so the stack can\n * drain.\n *\n * @returns {undefined}\n * Nothing.\n */\n function main() {\n /** @type {number} */\n let chunkIndex;\n while (point._index < chunks.length) {\n const chunk = chunks[point._index];\n\n // If we\u2019re in a buffer chunk, loop through it.\n if (typeof chunk === 'string') {\n chunkIndex = point._index;\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0;\n }\n while (point._index === chunkIndex && point._bufferIndex < chunk.length) {\n go(chunk.charCodeAt(point._bufferIndex));\n }\n } else {\n go(chunk);\n }\n }\n }\n\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * Code.\n * @returns {undefined}\n * Nothing.\n */\n function go(code) {\n consumed = undefined;\n expectedCode = code;\n state = state(code);\n }\n\n /** @type {Effects['consume']} */\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++;\n point.column = 1;\n point.offset += code === -3 ? 2 : 1;\n accountForPotentialSkip();\n } else if (code !== -1) {\n point.column++;\n point.offset++;\n }\n\n // Not in a string chunk.\n if (point._bufferIndex < 0) {\n point._index++;\n } else {\n point._bufferIndex++;\n\n // At end of string chunk.\n if (point._bufferIndex ===\n // Points w/ non-negative `_bufferIndex` reference\n // strings.\n /** @type {string} */\n chunks[point._index].length) {\n point._bufferIndex = -1;\n point._index++;\n }\n }\n\n // Expose the previous character.\n context.previous = code;\n\n // Mark as consumed.\n consumed = true;\n }\n\n /** @type {Effects['enter']} */\n function enter(type, fields) {\n /** @type {Token} */\n // @ts-expect-error Patch instead of assign required fields to help GC.\n const token = fields || {};\n token.type = type;\n token.start = now();\n context.events.push(['enter', token, context]);\n stack.push(token);\n return token;\n }\n\n /** @type {Effects['exit']} */\n function exit(type) {\n const token = stack.pop();\n token.end = now();\n context.events.push(['exit', token, context]);\n return token;\n }\n\n /**\n * Use results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from);\n }\n\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulcheck(_, info) {\n info.restore();\n }\n\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * Callback.\n * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n * Fields.\n */\n function constructFactory(onreturn, fields) {\n return hook;\n\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Array | ConstructRecord | Construct} constructs\n * Constructs.\n * @param {State} returnState\n * State.\n * @param {State | undefined} [bogusState]\n * State.\n * @returns {State}\n * State.\n */\n function hook(constructs, returnState, bogusState) {\n /** @type {ReadonlyArray} */\n let listOfConstructs;\n /** @type {number} */\n let constructIndex;\n /** @type {Construct} */\n let currentConstruct;\n /** @type {Info} */\n let info;\n return Array.isArray(constructs) ? /* c8 ignore next 1 */\n handleListOfConstructs(constructs) : 'tokenize' in constructs ?\n // Looks like a construct.\n handleListOfConstructs([(/** @type {Construct} */constructs)]) : handleMapOfConstructs(constructs);\n\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * Constructs.\n * @returns {State}\n * State.\n */\n function handleMapOfConstructs(map) {\n return start;\n\n /** @type {State} */\n function start(code) {\n const left = code !== null && map[code];\n const all = code !== null && map.null;\n const list = [\n // To do: add more extension tests.\n /* c8 ignore next 2 */\n ...(Array.isArray(left) ? left : left ? [left] : []), ...(Array.isArray(all) ? all : all ? [all] : [])];\n return handleListOfConstructs(list)(code);\n }\n }\n\n /**\n * Handle a list of construct.\n *\n * @param {ReadonlyArray} list\n * Constructs.\n * @returns {State}\n * State.\n */\n function handleListOfConstructs(list) {\n listOfConstructs = list;\n constructIndex = 0;\n if (list.length === 0) {\n return bogusState;\n }\n return handleConstruct(list[constructIndex]);\n }\n\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * Construct.\n * @returns {State}\n * State.\n */\n function handleConstruct(construct) {\n return start;\n\n /** @type {State} */\n function start(code) {\n // To do: not needed to store if there is no bogus state, probably?\n // Currently doesn\u2019t work because `inspect` in document does a check\n // w/o a bogus, which doesn\u2019t make sense. But it does seem to help perf\n // by not storing.\n info = store();\n currentConstruct = construct;\n if (!construct.partial) {\n context.currentConstruct = construct;\n }\n\n // Always populated by defaults.\n\n if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) {\n return nok(code);\n }\n return construct.tokenize.call(\n // If we do have fields, create an object w/ `context` as its\n // prototype.\n // This allows a \u201Clive binding\u201D, which is needed for `interrupt`.\n fields ? Object.assign(Object.create(context), fields) : context, effects, ok, nok)(code);\n }\n }\n\n /** @type {State} */\n function ok(code) {\n consumed = true;\n onreturn(currentConstruct, info);\n return returnState;\n }\n\n /** @type {State} */\n function nok(code) {\n consumed = true;\n info.restore();\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex]);\n }\n return bogusState;\n }\n }\n }\n\n /**\n * @param {Construct} construct\n * Construct.\n * @param {number} from\n * From.\n * @returns {undefined}\n * Nothing.\n */\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct);\n }\n if (construct.resolve) {\n splice(context.events, from, context.events.length - from, construct.resolve(context.events.slice(from), context));\n }\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context);\n }\n }\n\n /**\n * Store state.\n *\n * @returns {Info}\n * Info.\n */\n function store() {\n const startPoint = now();\n const startPrevious = context.previous;\n const startCurrentConstruct = context.currentConstruct;\n const startEventsIndex = context.events.length;\n const startStack = Array.from(stack);\n return {\n from: startEventsIndex,\n restore\n };\n\n /**\n * Restore state.\n *\n * @returns {undefined}\n * Nothing.\n */\n function restore() {\n point = startPoint;\n context.previous = startPrevious;\n context.currentConstruct = startCurrentConstruct;\n context.events.length = startEventsIndex;\n stack = startStack;\n accountForPotentialSkip();\n }\n }\n\n /**\n * Move the current point a bit forward in the line when it\u2019s on a column\n * skip.\n *\n * @returns {undefined}\n * Nothing.\n */\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line];\n point.offset += columnStart[point.line] - 1;\n }\n }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {ReadonlyArray} chunks\n * Chunks.\n * @param {Pick} token\n * Token.\n * @returns {Array}\n * Chunks.\n */\nfunction sliceChunks(chunks, token) {\n const startIndex = token.start._index;\n const startBufferIndex = token.start._bufferIndex;\n const endIndex = token.end._index;\n const endBufferIndex = token.end._bufferIndex;\n /** @type {Array} */\n let view;\n if (startIndex === endIndex) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)];\n } else {\n view = chunks.slice(startIndex, endIndex);\n if (startBufferIndex > -1) {\n const head = view[0];\n if (typeof head === 'string') {\n view[0] = head.slice(startBufferIndex);\n /* c8 ignore next 4 -- used to be used, no longer */\n } else {\n view.shift();\n }\n }\n if (endBufferIndex > 0) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view.push(chunks[endIndex].slice(0, endBufferIndex));\n }\n }\n return view;\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {ReadonlyArray} chunks\n * Chunks.\n * @param {boolean | undefined} [expandTabs=false]\n * Whether to expand tabs (default: `false`).\n * @returns {string}\n * Result.\n */\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1;\n /** @type {Array} */\n const result = [];\n /** @type {boolean | undefined} */\n let atTab;\n while (++index < chunks.length) {\n const chunk = chunks[index];\n /** @type {string} */\n let value;\n if (typeof chunk === 'string') {\n value = chunk;\n } else switch (chunk) {\n case -5:\n {\n value = \"\\r\";\n break;\n }\n case -4:\n {\n value = \"\\n\";\n break;\n }\n case -3:\n {\n value = \"\\r\" + \"\\n\";\n break;\n }\n case -2:\n {\n value = expandTabs ? \" \" : \"\\t\";\n break;\n }\n case -1:\n {\n if (!expandTabs && atTab) continue;\n value = \" \";\n break;\n }\n default:\n {\n // Currently only replacement character.\n value = String.fromCharCode(chunk);\n }\n }\n atTab = chunk === -2;\n result.push(value);\n }\n return result.join('');\n}", "/**\n * @import {\n * Create,\n * FullNormalizedExtension,\n * InitialConstruct,\n * ParseContext,\n * ParseOptions\n * } from 'micromark-util-types'\n */\n\nimport { combineExtensions } from 'micromark-util-combine-extensions';\nimport { content } from './initialize/content.js';\nimport { document } from './initialize/document.js';\nimport { flow } from './initialize/flow.js';\nimport { string, text } from './initialize/text.js';\nimport * as defaultConstructs from './constructs.js';\nimport { createTokenizer } from './create-tokenizer.js';\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * Configuration (optional).\n * @returns {ParseContext}\n * Parser.\n */\nexport function parse(options) {\n const settings = options || {};\n const constructs = /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])]);\n\n /** @type {ParseContext} */\n const parser = {\n constructs,\n content: create(content),\n defined: [],\n document: create(document),\n flow: create(flow),\n lazy: {},\n string: create(string),\n text: create(text)\n };\n return parser;\n\n /**\n * @param {InitialConstruct} initial\n * Construct to start with.\n * @returns {Create}\n * Create a tokenizer.\n */\n function create(initial) {\n return creator;\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from);\n }\n }\n}", "/**\n * @import {Event} from 'micromark-util-types'\n */\n\nimport { subtokenize } from 'micromark-util-subtokenize';\n\n/**\n * @param {Array} events\n * Events.\n * @returns {Array}\n * Events.\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events;\n}", "/**\n * @import {Chunk, Code, Encoding, Value} from 'micromark-util-types'\n */\n\n/**\n * @callback Preprocessor\n * Preprocess a value.\n * @param {Value} value\n * Value.\n * @param {Encoding | null | undefined} [encoding]\n * Encoding when `value` is a typed array (optional).\n * @param {boolean | null | undefined} [end=false]\n * Whether this is the last chunk (default: `false`).\n * @returns {Array}\n * Chunks.\n */\n\nconst search = /[\\0\\t\\n\\r]/g;\n\n/**\n * @returns {Preprocessor}\n * Preprocess a value.\n */\nexport function preprocess() {\n let column = 1;\n let buffer = '';\n /** @type {boolean | undefined} */\n let start = true;\n /** @type {boolean | undefined} */\n let atCarriageReturn;\n return preprocessor;\n\n /** @type {Preprocessor} */\n // eslint-disable-next-line complexity\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = [];\n /** @type {RegExpMatchArray | null} */\n let match;\n /** @type {number} */\n let next;\n /** @type {number} */\n let startPosition;\n /** @type {number} */\n let endPosition;\n /** @type {Code} */\n let code;\n value = buffer + (typeof value === 'string' ? value.toString() : new TextDecoder(encoding || undefined).decode(value));\n startPosition = 0;\n buffer = '';\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++;\n }\n start = undefined;\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition;\n match = search.exec(value);\n endPosition = match && match.index !== undefined ? match.index : value.length;\n code = value.charCodeAt(endPosition);\n if (!match) {\n buffer = value.slice(startPosition);\n break;\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3);\n atCarriageReturn = undefined;\n } else {\n if (atCarriageReturn) {\n chunks.push(-5);\n atCarriageReturn = undefined;\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition));\n column += endPosition - startPosition;\n }\n switch (code) {\n case 0:\n {\n chunks.push(65533);\n column++;\n break;\n }\n case 9:\n {\n next = Math.ceil(column / 4) * 4;\n chunks.push(-2);\n while (column++ < next) chunks.push(-1);\n break;\n }\n case 10:\n {\n chunks.push(-4);\n column = 1;\n break;\n }\n default:\n {\n atCarriageReturn = true;\n column = 1;\n }\n }\n }\n startPosition = endPosition + 1;\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5);\n if (buffer) chunks.push(buffer);\n chunks.push(null);\n }\n return chunks;\n }\n}", "import { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nconst characterEscapeOrReference = /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi;\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The \u201Cstring\u201D content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode);\n}\n\n/**\n * @param {string} $0\n * Match.\n * @param {string} $1\n * Character escape.\n * @param {string} $2\n * Character reference.\n * @returns {string}\n * Decoded value\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1;\n }\n\n // Reference.\n const head = $2.charCodeAt(0);\n if (head === 35) {\n const head = $2.charCodeAt(1);\n const hex = head === 120 || head === 88;\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10);\n }\n return decodeNamedCharacterReference($2) || $0;\n}", "/**\n * @import {\n * Break,\n * Blockquote,\n * Code,\n * Definition,\n * Emphasis,\n * Heading,\n * Html,\n * Image,\n * InlineCode,\n * Link,\n * ListItem,\n * List,\n * Nodes,\n * Paragraph,\n * PhrasingContent,\n * ReferenceType,\n * Root,\n * Strong,\n * Text,\n * ThematicBreak\n * } from 'mdast'\n * @import {\n * Encoding,\n * Event,\n * Token,\n * Value\n * } from 'micromark-util-types'\n * @import {Point} from 'unist'\n * @import {\n * CompileContext,\n * CompileData,\n * Config,\n * Extension,\n * Handle,\n * OnEnterError,\n * Options\n * } from './types.js'\n */\n\nimport { toString } from 'mdast-util-to-string';\nimport { parse, postprocess, preprocess } from 'micromark';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nimport { decodeString } from 'micromark-util-decode-string';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { stringifyPosition } from 'unist-util-stringify-position';\nconst own = {}.hasOwnProperty;\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n * Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n * Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {Root}\n * mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding;\n encoding = undefined;\n }\n return compiler(options)(postprocess(parse(options).document().write(preprocess()(value, encoding, true))));\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n characterReference: onexitcharacterreference,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n };\n configure(config, (options || {}).mdastExtensions || []);\n\n /** @type {CompileData} */\n const data = {};\n return compile;\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n };\n /** @type {Omit} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n data\n };\n /** @type {Array} */\n const listStack = [];\n let index = -1;\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (events[index][1].type === \"listOrdered\" || events[index][1].type === \"listUnordered\") {\n if (events[index][0] === 'enter') {\n listStack.push(index);\n } else {\n const tail = listStack.pop();\n index = prepareList(events, tail, index);\n }\n }\n }\n index = -1;\n while (++index < events.length) {\n const handler = config[events[index][0]];\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(Object.assign({\n sliceSerialize: events[index][2].sliceSerialize\n }, context), events[index][1]);\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1];\n const handler = tail[1] || defaultOnError;\n handler.call(context, undefined, tail[0]);\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(events.length > 0 ? events[0][1].start : {\n line: 1,\n column: 1,\n offset: 0\n }),\n end: point(events.length > 0 ? events[events.length - 2][1].end : {\n line: 1,\n column: 1,\n offset: 0\n })\n };\n\n // Call transforms.\n index = -1;\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree;\n }\n return tree;\n }\n\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1;\n let containerBalance = -1;\n let listSpread = false;\n /** @type {Token | undefined} */\n let listItem;\n /** @type {number | undefined} */\n let lineIndex;\n /** @type {number | undefined} */\n let firstBlankLineIndex;\n /** @type {boolean | undefined} */\n let atMarker;\n while (++index <= length) {\n const event = events[index];\n switch (event[1].type) {\n case \"listUnordered\":\n case \"listOrdered\":\n case \"blockQuote\":\n {\n if (event[0] === 'enter') {\n containerBalance++;\n } else {\n containerBalance--;\n }\n atMarker = undefined;\n break;\n }\n case \"lineEndingBlank\":\n {\n if (event[0] === 'enter') {\n if (listItem && !atMarker && !containerBalance && !firstBlankLineIndex) {\n firstBlankLineIndex = index;\n }\n atMarker = undefined;\n }\n break;\n }\n case \"linePrefix\":\n case \"listItemValue\":\n case \"listItemMarker\":\n case \"listItemPrefix\":\n case \"listItemPrefixWhitespace\":\n {\n // Empty.\n\n break;\n }\n default:\n {\n atMarker = undefined;\n }\n }\n if (!containerBalance && event[0] === 'enter' && event[1].type === \"listItemPrefix\" || containerBalance === -1 && event[0] === 'exit' && (event[1].type === \"listUnordered\" || event[1].type === \"listOrdered\")) {\n if (listItem) {\n let tailIndex = index;\n lineIndex = undefined;\n while (tailIndex--) {\n const tailEvent = events[tailIndex];\n if (tailEvent[1].type === \"lineEnding\" || tailEvent[1].type === \"lineEndingBlank\") {\n if (tailEvent[0] === 'exit') continue;\n if (lineIndex) {\n events[lineIndex][1].type = \"lineEndingBlank\";\n listSpread = true;\n }\n tailEvent[1].type = \"lineEnding\";\n lineIndex = tailIndex;\n } else if (tailEvent[1].type === \"linePrefix\" || tailEvent[1].type === \"blockQuotePrefix\" || tailEvent[1].type === \"blockQuotePrefixWhitespace\" || tailEvent[1].type === \"blockQuoteMarker\" || tailEvent[1].type === \"listItemIndent\") {\n // Empty\n } else {\n break;\n }\n }\n if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) {\n listItem._spread = true;\n }\n\n // Fix position.\n listItem.end = Object.assign({}, lineIndex ? events[lineIndex][1].start : event[1].end);\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]]);\n index++;\n length++;\n }\n\n // Create a new list item.\n if (event[1].type === \"listItemPrefix\") {\n /** @type {Token} */\n const item = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we\u2019ll add `end` in a second.\n end: undefined\n };\n listItem = item;\n events.splice(index, 0, ['enter', item, event[2]]);\n index++;\n length++;\n firstBlankLineIndex = undefined;\n atMarker = true;\n }\n }\n }\n events[start][1]._spread = listSpread;\n return length;\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Nodes} create\n * Create a node.\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function open(token) {\n enter.call(this, create(token), token);\n if (and) and.call(this, token);\n }\n }\n\n /**\n * @type {CompileContext['buffer']}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n });\n }\n\n /**\n * @type {CompileContext['enter']}\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1];\n /** @type {Array} */\n const siblings = parent.children;\n siblings.push(node);\n this.stack.push(node);\n this.tokenStack.push([token, errorHandler || undefined]);\n node.position = {\n start: point(token.start),\n // @ts-expect-error: `end` will be patched later.\n end: undefined\n };\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function close(token) {\n if (and) and.call(this, token);\n exit.call(this, token);\n }\n }\n\n /**\n * @type {CompileContext['exit']}\n */\n function exit(token, onExitError) {\n const node = this.stack.pop();\n const open = this.tokenStack.pop();\n if (!open) {\n throw new Error('Cannot close `' + token.type + '` (' + stringifyPosition({\n start: token.start,\n end: token.end\n }) + '): it\u2019s not open');\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0]);\n } else {\n const handler = open[1] || defaultOnError;\n handler.call(this, token, open[0]);\n }\n }\n node.position.end = point(token.end);\n }\n\n /**\n * @type {CompileContext['resume']}\n */\n function resume() {\n return toString(this.stack.pop());\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n this.data.expectingFirstListItemValue = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (this.data.expectingFirstListItemValue) {\n const ancestor = this.stack[this.stack.length - 2];\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10);\n this.data.expectingFirstListItemValue = undefined;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.lang = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.meta = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (this.data.flowCodeInside) return;\n this.buffer();\n this.data.flowCodeInside = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '');\n this.data.flowCodeInside = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '');\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.label = label;\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1];\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length;\n node.depth = depth;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n this.data.setextHeadingSlurpLineEnding = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1];\n node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n this.data.setextHeadingSlurpLineEnding = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1];\n /** @type {Array} */\n const siblings = node.children;\n let tail = siblings[siblings.length - 1];\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text();\n tail.position = {\n start: point(token.start),\n // @ts-expect-error: we\u2019ll add `end` later.\n end: undefined\n };\n siblings.push(tail);\n }\n this.stack.push(tail);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop();\n tail.value += this.sliceSerialize(token);\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1];\n // If we\u2019re at a hard break, include the line ending in there.\n if (this.data.atHardBreak) {\n const tail = context.children[context.children.length - 1];\n tail.position.end = point(token.end);\n this.data.atHardBreak = undefined;\n return;\n }\n if (!this.data.setextHeadingSlurpLineEnding && config.canContainEols.includes(context.type)) {\n onenterdata.call(this, token);\n onexitdata.call(this, token);\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n this.data.atHardBreak = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token);\n const ancestor = this.stack[this.stack.length - 2];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string);\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1];\n const value = this.resume();\n const node = this.stack[this.stack.length - 1];\n // Assume a reference.\n this.data.inReference = true;\n if (node.type === 'link') {\n /** @type {Array} */\n const children = fragment.children;\n node.children = children;\n } else {\n node.alt = value;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n this.data.inReference = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n this.data.referenceType = 'collapsed';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label;\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n this.data.referenceType = 'full';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n this.data.characterReferenceType = token.type;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token);\n const type = this.data.characterReferenceType;\n /** @type {string} */\n let value;\n if (type) {\n value = decodeNumericCharacterReference(data, type === \"characterReferenceMarkerNumeric\" ? 10 : 16);\n this.data.characterReferenceType = undefined;\n } else {\n const result = decodeNamedCharacterReference(data);\n value = result;\n }\n const tail = this.stack[this.stack.length - 1];\n tail.value += value;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreference(token) {\n const tail = this.stack.pop();\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = this.sliceSerialize(token);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = 'mailto:' + this.sliceSerialize(token);\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n };\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n };\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n };\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n };\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n };\n }\n\n /** @returns {Heading} */\n function heading() {\n return {\n type: 'heading',\n // @ts-expect-error `depth` will be set later.\n depth: 0,\n children: []\n };\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n };\n }\n\n /** @returns {Html} */\n function html() {\n return {\n type: 'html',\n value: ''\n };\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n };\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n };\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n };\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n };\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n };\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n };\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n };\n}\n\n/**\n * @param {Config} combined\n * @param {Array | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n let index = -1;\n while (++index < extensions.length) {\n const value = extensions[index];\n if (Array.isArray(value)) {\n configure(combined, value);\n } else {\n extension(combined, value);\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key;\n for (key in extension) {\n if (own.call(extension, key)) {\n switch (key) {\n case 'canContainEols':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'transforms':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'enter':\n case 'exit':\n {\n const right = extension[key];\n if (right) {\n Object.assign(combined[key], right);\n }\n break;\n }\n // No default\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error('Cannot close `' + left.type + '` (' + stringifyPosition({\n start: left.start,\n end: left.end\n }) + '): a different token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is open');\n } else {\n throw new Error('Cannot close document, a token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is still open');\n }\n}", "/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser} Parser\n * @typedef {import('unified').Processor} Processor\n */\n\n/**\n * @typedef {Omit} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkParse(options) {\n /** @type {Processor} */\n // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n const self = this\n\n self.parser = parser\n\n /**\n * @type {Parser}\n */\n function parser(doc) {\n return fromMarkdown(doc, {\n ...self.data('settings'),\n ...options,\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n }\n}\n", "/**\n * @import {Element} from 'hast'\n * @import {Blockquote} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n", "/**\n * @import {Element, Text} from 'hast'\n * @import {Break} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array}\n * hast element content.\n */\nexport function hardBreak(state, node) {\n /** @type {Element} */\n const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n state.patch(node, result)\n return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n", "/**\n * @import {Element, Properties} from 'hast'\n * @import {Code} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function code(state, node) {\n const value = node.value ? node.value + '\\n' : ''\n /** @type {Properties} */\n const properties = {}\n // Someone can write `js python ruby`.\n const language = node.lang ? node.lang.split(/\\s+/) : []\n\n // GH/CM still drop the non-first languages.\n if (language.length > 0) {\n properties.className = ['language-' + language[0]]\n }\n\n // Create ``.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{type: 'text', value}]\n }\n\n if (node.meta) {\n result.data = {meta: node.meta}\n }\n\n state.patch(node, result)\n result = state.applyData(node, result)\n\n // Create `
`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n", "/**\n * @import {Element} from 'hast'\n * @import {Delete} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Element} from 'hast'\n * @import {Emphasis} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Element} from 'hast'\n * @import {FootnoteReference} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {FootnoteReference} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnoteReference(state, node) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const id = String(node.identifier).toUpperCase()\n  const safeId = normalizeUri(id.toLowerCase())\n  const index = state.footnoteOrder.indexOf(id)\n  /** @type {number} */\n  let counter\n\n  let reuseCounter = state.footnoteCounts.get(id)\n\n  if (reuseCounter === undefined) {\n    reuseCounter = 0\n    state.footnoteOrder.push(id)\n    counter = state.footnoteOrder.length\n  } else {\n    counter = index + 1\n  }\n\n  reuseCounter += 1\n  state.footnoteCounts.set(id, reuseCounter)\n\n  /** @type {Element} */\n  const link = {\n    type: 'element',\n    tagName: 'a',\n    properties: {\n      href: '#' + clobberPrefix + 'fn-' + safeId,\n      id:\n        clobberPrefix +\n        'fnref-' +\n        safeId +\n        (reuseCounter > 1 ? '-' + reuseCounter : ''),\n      dataFootnoteRef: true,\n      ariaDescribedBy: ['footnote-label']\n    },\n    children: [{type: 'text', value: String(counter)}]\n  }\n  state.patch(node, link)\n\n  /** @type {Element} */\n  const sup = {\n    type: 'element',\n    tagName: 'sup',\n    properties: {},\n    children: [link]\n  }\n  state.patch(node, sup)\n  return state.applyData(node, sup)\n}\n", "/**\n * @import {Element} from 'hast'\n * @import {Heading} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Element} from 'hast'\n * @import {Html} from 'mdast'\n * @import {State} from '../state.js'\n * @import {Raw} from '../../index.js'\n */\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Element | Raw | undefined}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.options.allowDangerousHtml) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  return undefined\n}\n", "/**\n * @import {ElementContent} from 'hast'\n * @import {Reference, Nodes} from 'mdast'\n * @import {State} from './state.js'\n */\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Extract} node\n *   Reference node (image, link).\n * @returns {Array}\n *   hast content.\n */\nexport function revert(state, node) {\n  const subtype = node.referenceType\n  let suffix = ']'\n\n  if (subtype === 'collapsed') {\n    suffix += '[]'\n  } else if (subtype === 'full') {\n    suffix += '[' + (node.label || node.identifier) + ']'\n  }\n\n  if (node.type === 'imageReference') {\n    return [{type: 'text', value: '![' + node.alt + suffix}]\n  }\n\n  const contents = state.all(node)\n  const head = contents[0]\n\n  if (head && head.type === 'text') {\n    head.value = '[' + head.value\n  } else {\n    contents.unshift({type: 'text', value: '['})\n  }\n\n  const tail = contents[contents.length - 1]\n\n  if (tail && tail.type === 'text') {\n    tail.value += suffix\n  } else {\n    contents.push({type: 'text', value: suffix})\n  }\n\n  return contents\n}\n", "/**\n * @import {ElementContent, Element, Properties} from 'hast'\n * @import {ImageReference} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const definition = state.definitionById.get(id)\n\n  if (!definition) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(definition.url || ''), alt: node.alt}\n\n  if (definition.title !== null && definition.title !== undefined) {\n    properties.title = definition.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Element, Properties} from 'hast'\n * @import {Image} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Element, Text} from 'hast'\n * @import {InlineCode} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {ElementContent, Element, Properties} from 'hast'\n * @import {LinkReference} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {Array | ElementContent}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const definition = state.definitionById.get(id)\n\n  if (!definition) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(definition.url || '')}\n\n  if (definition.title !== null && definition.title !== undefined) {\n    properties.title = definition.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Element, Properties} from 'hast'\n * @import {Link} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {ElementContent, Element, Properties} from 'hast'\n * @import {ListItem, Parents} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ListItem} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function listItem(state, node, parent) {\n  const results = state.all(node)\n  const loose = parent ? listLoose(parent) : listItemLoose(node)\n  /** @type {Properties} */\n  const properties = {}\n  /** @type {Array} */\n  const children = []\n\n  if (typeof node.checked === 'boolean') {\n    const head = results[0]\n    /** @type {Element} */\n    let paragraph\n\n    if (head && head.type === 'element' && head.tagName === 'p') {\n      paragraph = head\n    } else {\n      paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n      results.unshift(paragraph)\n    }\n\n    if (paragraph.children.length > 0) {\n      paragraph.children.unshift({type: 'text', value: ' '})\n    }\n\n    paragraph.children.unshift({\n      type: 'element',\n      tagName: 'input',\n      properties: {type: 'checkbox', checked: node.checked, disabled: true},\n      children: []\n    })\n\n    // According to github-markdown-css, this class hides bullet.\n    // See: .\n    properties.className = ['task-list-item']\n  }\n\n  let index = -1\n\n  while (++index < results.length) {\n    const child = results[index]\n\n    // Add eols before nodes, except if this is a loose, first paragraph.\n    if (\n      loose ||\n      index !== 0 ||\n      child.type !== 'element' ||\n      child.tagName !== 'p'\n    ) {\n      children.push({type: 'text', value: '\\n'})\n    }\n\n    if (child.type === 'element' && child.tagName === 'p' && !loose) {\n      children.push(...child.children)\n    } else {\n      children.push(child)\n    }\n  }\n\n  const tail = results[results.length - 1]\n\n  // Add a final eol.\n  if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n    children.push({type: 'text', value: '\\n'})\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'li', properties, children}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n  let loose = false\n  if (node.type === 'list') {\n    loose = node.spread || false\n    const children = node.children\n    let index = -1\n\n    while (!loose && ++index < children.length) {\n      loose = listItemLoose(children[index])\n    }\n  }\n\n  return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n  const spread = node.spread\n\n  return spread === null || spread === undefined\n    ? node.children.length > 1\n    : spread\n}\n", "/**\n * @import {Element, Properties} from 'hast'\n * @import {List} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Element} from 'hast'\n * @import {Paragraph} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Parents as HastParents, Root as HastRoot} from 'hast'\n * @import {Root as MdastRoot} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastParents}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Element} from 'hast'\n * @import {Strong} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Table} from 'mdast'\n * @import {Element} from 'hast'\n * @import {State} from '../state.js'\n */\n\nimport {pointEnd, pointStart} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start && end) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Element, ElementContent, Properties} from 'hast'\n * @import {Parents, TableRow} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  // To do: option to use `style`?\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(cell, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Element} from 'hast'\n * @import {TableCell} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n *   Value to trim.\n * @returns {string}\n *   Trimmed value.\n */\nexport function trimLines(value) {\n  const source = String(value)\n  const search = /\\r?\\n|\\r/g\n  let match = search.exec(source)\n  let last = 0\n  /** @type {Array} */\n  const lines = []\n\n  while (match) {\n    lines.push(\n      trimLine(source.slice(last, match.index), last > 0, true),\n      match[0]\n    )\n\n    last = match.index + match[0].length\n    match = search.exec(source)\n  }\n\n  lines.push(trimLine(source.slice(last), last > 0, false))\n\n  return lines.join('')\n}\n\n/**\n * @param {string} value\n *   Line to trim.\n * @param {boolean} start\n *   Whether to trim the start of the line.\n * @param {boolean} end\n *   Whether to trim the end of the line.\n * @returns {string}\n *   Trimmed line.\n */\nfunction trimLine(value, start, end) {\n  let startIndex = 0\n  let endIndex = value.length\n\n  if (start) {\n    let code = value.codePointAt(startIndex)\n\n    while (code === tab || code === space) {\n      startIndex++\n      code = value.codePointAt(startIndex)\n    }\n  }\n\n  if (end) {\n    let code = value.codePointAt(endIndex - 1)\n\n    while (code === tab || code === space) {\n      endIndex--\n      code = value.codePointAt(endIndex - 1)\n    }\n  }\n\n  return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n", "/**\n * @import {Element as HastElement, Text as HastText} from 'hast'\n * @import {Text as MdastText} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastElement | HastText}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Element} from 'hast'\n * @import {ThematicBreak} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Handlers} from '../state.js'\n */\n\nimport {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n *\n * @satisfies {Handlers}\n */\nexport const handlers = {\n  blockquote,\n  break: hardBreak,\n  code,\n  delete: strikethrough,\n  emphasis,\n  footnoteReference,\n  heading,\n  html,\n  imageReference,\n  image,\n  inlineCode,\n  linkReference,\n  link,\n  listItem,\n  list,\n  paragraph,\n  // @ts-expect-error: root is different, but hard to type.\n  root,\n  strong,\n  table,\n  tableCell,\n  tableRow,\n  text,\n  thematicBreak,\n  toml: ignore,\n  yaml: ignore,\n  definition: ignore,\n  footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n  return undefined\n}\n", "export const VOID       = -1;\nexport const PRIMITIVE  = 0;\nexport const ARRAY      = 1;\nexport const OBJECT     = 2;\nexport const DATE       = 3;\nexport const REGEXP     = 4;\nexport const MAP        = 5;\nexport const SET        = 6;\nexport const ERROR      = 7;\nexport const BIGINT     = 8;\n// export const SYMBOL = 9;\n", "import {\n  VOID, PRIMITIVE,\n  ARRAY, OBJECT,\n  DATE, REGEXP, MAP, SET,\n  ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n  const as = (out, index) => {\n    $.set(index, out);\n    return out;\n  };\n\n  const unpair = index => {\n    if ($.has(index))\n      return $.get(index);\n\n    const [type, value] = _[index];\n    switch (type) {\n      case PRIMITIVE:\n      case VOID:\n        return as(value, index);\n      case ARRAY: {\n        const arr = as([], index);\n        for (const index of value)\n          arr.push(unpair(index));\n        return arr;\n      }\n      case OBJECT: {\n        const object = as({}, index);\n        for (const [key, index] of value)\n          object[unpair(key)] = unpair(index);\n        return object;\n      }\n      case DATE:\n        return as(new Date(value), index);\n      case REGEXP: {\n        const {source, flags} = value;\n        return as(new RegExp(source, flags), index);\n      }\n      case MAP: {\n        const map = as(new Map, index);\n        for (const [key, index] of value)\n          map.set(unpair(key), unpair(index));\n        return map;\n      }\n      case SET: {\n        const set = as(new Set, index);\n        for (const index of value)\n          set.add(unpair(index));\n        return set;\n      }\n      case ERROR: {\n        const {name, message} = value;\n        return as(new env[name](message), index);\n      }\n      case BIGINT:\n        return as(BigInt(value), index);\n      case 'BigInt':\n        return as(Object(BigInt(value)), index);\n      case 'ArrayBuffer':\n        return as(new Uint8Array(value).buffer, value);\n      case 'DataView': {\n        const { buffer } = new Uint8Array(value);\n        return as(new DataView(buffer), value);\n      }\n    }\n    return as(new env[type](value), index);\n  };\n\n  return unpair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n", "import {\n  VOID, PRIMITIVE,\n  ARRAY, OBJECT,\n  DATE, REGEXP, MAP, SET,\n  ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n  const type = typeof value;\n  if (type !== 'object' || !value)\n    return [PRIMITIVE, type];\n\n  const asString = toString.call(value).slice(8, -1);\n  switch (asString) {\n    case 'Array':\n      return [ARRAY, EMPTY];\n    case 'Object':\n      return [OBJECT, EMPTY];\n    case 'Date':\n      return [DATE, EMPTY];\n    case 'RegExp':\n      return [REGEXP, EMPTY];\n    case 'Map':\n      return [MAP, EMPTY];\n    case 'Set':\n      return [SET, EMPTY];\n    case 'DataView':\n      return [ARRAY, asString];\n  }\n\n  if (asString.includes('Array'))\n    return [ARRAY, asString];\n\n  if (asString.includes('Error'))\n    return [ERROR, asString];\n\n  return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n  TYPE === PRIMITIVE &&\n  (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n  const as = (out, value) => {\n    const index = _.push(out) - 1;\n    $.set(value, index);\n    return index;\n  };\n\n  const pair = value => {\n    if ($.has(value))\n      return $.get(value);\n\n    let [TYPE, type] = typeOf(value);\n    switch (TYPE) {\n      case PRIMITIVE: {\n        let entry = value;\n        switch (type) {\n          case 'bigint':\n            TYPE = BIGINT;\n            entry = value.toString();\n            break;\n          case 'function':\n          case 'symbol':\n            if (strict)\n              throw new TypeError('unable to serialize ' + type);\n            entry = null;\n            break;\n          case 'undefined':\n            return as([VOID], value);\n        }\n        return as([TYPE, entry], value);\n      }\n      case ARRAY: {\n        if (type) {\n          let spread = value;\n          if (type === 'DataView') {\n            spread = new Uint8Array(value.buffer);\n          }\n          else if (type === 'ArrayBuffer') {\n            spread = new Uint8Array(value);\n          }\n          return as([type, [...spread]], value);\n        }\n\n        const arr = [];\n        const index = as([TYPE, arr], value);\n        for (const entry of value)\n          arr.push(pair(entry));\n        return index;\n      }\n      case OBJECT: {\n        if (type) {\n          switch (type) {\n            case 'BigInt':\n              return as([type, value.toString()], value);\n            case 'Boolean':\n            case 'Number':\n            case 'String':\n              return as([type, value.valueOf()], value);\n          }\n        }\n\n        if (json && ('toJSON' in value))\n          return pair(value.toJSON());\n\n        const entries = [];\n        const index = as([TYPE, entries], value);\n        for (const key of keys(value)) {\n          if (strict || !shouldSkip(typeOf(value[key])))\n            entries.push([pair(key), pair(value[key])]);\n        }\n        return index;\n      }\n      case DATE:\n        return as([TYPE, value.toISOString()], value);\n      case REGEXP: {\n        const {source, flags} = value;\n        return as([TYPE, {source, flags}], value);\n      }\n      case MAP: {\n        const entries = [];\n        const index = as([TYPE, entries], value);\n        for (const [key, entry] of value) {\n          if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n            entries.push([pair(key), pair(entry)]);\n        }\n        return index;\n      }\n      case SET: {\n        const entries = [];\n        const index = as([TYPE, entries], value);\n        for (const entry of value) {\n          if (strict || !shouldSkip(typeOf(entry)))\n            entries.push(pair(entry));\n        }\n        return index;\n      }\n    }\n\n    const {message} = value;\n    return as([TYPE, {name: type, message}], value);\n  };\n\n  return pair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n *  if `true`, will not throw errors on incompatible types, and behave more\n *  like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n  const _ = [];\n  return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n", "import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n  /* c8 ignore start */\n  (any, options) => (\n    options && ('json' in options || 'lossy' in options) ?\n      deserialize(serialize(any, options)) : structuredClone(any)\n  ) :\n  (any, options) => deserialize(serialize(any, options));\n  /* c8 ignore stop */\n\nexport {deserialize, serialize};\n", "/**\n * @import {ElementContent, Element} from 'hast'\n * @import {State} from './state.js'\n */\n\n/**\n * @callback FootnoteBackContentTemplate\n *   Generate content for the backreference dynamically.\n *\n *   For the following markdown:\n *\n *   ```markdown\n *   Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n *   [^remark]: things about remark\n *   [^micromark]: things about micromark\n *   ```\n *\n *   This function will be called with:\n *\n *   *  `0` and `0` for the backreference from `things about micromark` to\n *      `alpha`, as it is the first used definition, and the first call to it\n *   *  `0` and `1` for the backreference from `things about micromark` to\n *      `bravo`, as it is the first used definition, and the second call to it\n *   *  `1` and `0` for the backreference from `things about remark` to\n *      `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {Array | ElementContent | string}\n *   Content for the backreference when linking back from definitions to their\n *   reference.\n *\n * @callback FootnoteBackLabelTemplate\n *   Generate a back label dynamically.\n *\n *   For the following markdown:\n *\n *   ```markdown\n *   Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n *   [^remark]: things about remark\n *   [^micromark]: things about micromark\n *   ```\n *\n *   This function will be called with:\n *\n *   *  `0` and `0` for the backreference from `things about micromark` to\n *      `alpha`, as it is the first used definition, and the first call to it\n *   *  `0` and `1` for the backreference from `things about micromark` to\n *      `bravo`, as it is the first used definition, and the second call to it\n *   *  `1` and `0` for the backreference from `things about remark` to\n *      `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {string}\n *   Back label to use when linking back from definitions to their reference.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate the default content that GitHub uses on backreferences.\n *\n * @param {number} _\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {Array}\n *   Content.\n */\nexport function defaultFootnoteBackContent(_, rereferenceIndex) {\n  /** @type {Array} */\n  const result = [{type: 'text', value: '\u21A9'}]\n\n  if (rereferenceIndex > 1) {\n    result.push({\n      type: 'element',\n      tagName: 'sup',\n      properties: {},\n      children: [{type: 'text', value: String(rereferenceIndex)}]\n    })\n  }\n\n  return result\n}\n\n/**\n * Generate the default label that GitHub uses on backreferences.\n *\n * @param {number} referenceIndex\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {string}\n *   Label.\n */\nexport function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n  return (\n    'Back to reference ' +\n    (referenceIndex + 1) +\n    (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n  )\n}\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n *   Info passed around.\n * @returns {Element | undefined}\n *   `section` element or `undefined`.\n */\n// eslint-disable-next-line complexity\nexport function footer(state) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const footnoteBackContent =\n    state.options.footnoteBackContent || defaultFootnoteBackContent\n  const footnoteBackLabel =\n    state.options.footnoteBackLabel || defaultFootnoteBackLabel\n  const footnoteLabel = state.options.footnoteLabel || 'Footnotes'\n  const footnoteLabelTagName = state.options.footnoteLabelTagName || 'h2'\n  const footnoteLabelProperties = state.options.footnoteLabelProperties || {\n    className: ['sr-only']\n  }\n  /** @type {Array} */\n  const listItems = []\n  let referenceIndex = -1\n\n  while (++referenceIndex < state.footnoteOrder.length) {\n    const definition = state.footnoteById.get(\n      state.footnoteOrder[referenceIndex]\n    )\n\n    if (!definition) {\n      continue\n    }\n\n    const content = state.all(definition)\n    const id = String(definition.identifier).toUpperCase()\n    const safeId = normalizeUri(id.toLowerCase())\n    let rereferenceIndex = 0\n    /** @type {Array} */\n    const backReferences = []\n    const counts = state.footnoteCounts.get(id)\n\n    // eslint-disable-next-line no-unmodified-loop-condition\n    while (counts !== undefined && ++rereferenceIndex <= counts) {\n      if (backReferences.length > 0) {\n        backReferences.push({type: 'text', value: ' '})\n      }\n\n      let children =\n        typeof footnoteBackContent === 'string'\n          ? footnoteBackContent\n          : footnoteBackContent(referenceIndex, rereferenceIndex)\n\n      if (typeof children === 'string') {\n        children = {type: 'text', value: children}\n      }\n\n      backReferences.push({\n        type: 'element',\n        tagName: 'a',\n        properties: {\n          href:\n            '#' +\n            clobberPrefix +\n            'fnref-' +\n            safeId +\n            (rereferenceIndex > 1 ? '-' + rereferenceIndex : ''),\n          dataFootnoteBackref: '',\n          ariaLabel:\n            typeof footnoteBackLabel === 'string'\n              ? footnoteBackLabel\n              : footnoteBackLabel(referenceIndex, rereferenceIndex),\n          className: ['data-footnote-backref']\n        },\n        children: Array.isArray(children) ? children : [children]\n      })\n    }\n\n    const tail = content[content.length - 1]\n\n    if (tail && tail.type === 'element' && tail.tagName === 'p') {\n      const tailTail = tail.children[tail.children.length - 1]\n      if (tailTail && tailTail.type === 'text') {\n        tailTail.value += ' '\n      } else {\n        tail.children.push({type: 'text', value: ' '})\n      }\n\n      tail.children.push(...backReferences)\n    } else {\n      content.push(...backReferences)\n    }\n\n    /** @type {Element} */\n    const listItem = {\n      type: 'element',\n      tagName: 'li',\n      properties: {id: clobberPrefix + 'fn-' + safeId},\n      children: state.wrap(content, true)\n    }\n\n    state.patch(definition, listItem)\n\n    listItems.push(listItem)\n  }\n\n  if (listItems.length === 0) {\n    return\n  }\n\n  return {\n    type: 'element',\n    tagName: 'section',\n    properties: {dataFootnotes: true, className: ['footnotes']},\n    children: [\n      {\n        type: 'element',\n        tagName: footnoteLabelTagName,\n        properties: {\n          ...structuredClone(footnoteLabelProperties),\n          id: 'footnote-label'\n        },\n        children: [{type: 'text', value: footnoteLabel}]\n      },\n      {type: 'text', value: '\\n'},\n      {\n        type: 'element',\n        tagName: 'ol',\n        properties: {},\n        children: state.wrap(listItems, true)\n      },\n      {type: 'text', value: '\\n'}\n    ]\n  }\n}\n", "/**\n * @import {Node, Parent} from 'unist'\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n *   Check that an arbitrary value is a node.\n * @param {unknown} this\n *   The given context.\n * @param {unknown} [node]\n *   Anything (typically a node).\n * @param {number | null | undefined} [index]\n *   The node\u2019s position in its parent.\n * @param {Parent | null | undefined} [parent]\n *   The node\u2019s parent.\n * @returns {boolean}\n *   Whether this is a node and passes a test.\n *\n * @typedef {Record | Node} Props\n *   Object to check for equivalence.\n *\n *   Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array | ReadonlyArray | Props | TestFunction | string | null | undefined} Test\n *   Check for an arbitrary node.\n *\n * @callback TestFunction\n *   Check if a node passes a test.\n * @param {unknown} this\n *   The given context.\n * @param {Node} node\n *   A node.\n * @param {number | undefined} [index]\n *   The node\u2019s position in its parent.\n * @param {Parent | undefined} [parent]\n *   The node\u2019s parent.\n * @returns {boolean | undefined | void}\n *   Whether this node passes the test.\n *\n *   Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n *   Thing to check, typically `Node`.\n * @param {Test} test\n *   A check for a specific node.\n * @param {number | null | undefined} index\n *   The node\u2019s position in its parent.\n * @param {Parent | null | undefined} parent\n *   The node\u2019s parent.\n * @param {unknown} context\n *   Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n *   Whether `node` is a node and passes a test.\n */\nexport const is =\n  // Note: overloads in JSDoc can\u2019t yet use different `@template`s.\n  /**\n   * @type {(\n   *   (>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n   *   (>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n   *   ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n   *   ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n   *   ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n   *   ((node?: null | undefined) => false) &\n   *   ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n   *   ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n   * )}\n   */\n  (\n    /**\n     * @param {unknown} [node]\n     * @param {Test} [test]\n     * @param {number | null | undefined} [index]\n     * @param {Parent | null | undefined} [parent]\n     * @param {unknown} [context]\n     * @returns {boolean}\n     */\n    // eslint-disable-next-line max-params\n    function (node, test, index, parent, context) {\n      const check = convert(test)\n\n      if (\n        index !== undefined &&\n        index !== null &&\n        (typeof index !== 'number' ||\n          index < 0 ||\n          index === Number.POSITIVE_INFINITY)\n      ) {\n        throw new Error('Expected positive finite index')\n      }\n\n      if (\n        parent !== undefined &&\n        parent !== null &&\n        (!is(parent) || !parent.children)\n      ) {\n        throw new Error('Expected parent node')\n      }\n\n      if (\n        (parent === undefined || parent === null) !==\n        (index === undefined || index === null)\n      ) {\n        throw new Error('Expected both parent and index')\n      }\n\n      return looksLikeANode(node)\n        ? check.call(context, node, index, parent)\n        : false\n    }\n  )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you\u2019re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n *   *   when nullish, checks if `node` is a `Node`.\n *   *   when `string`, works like passing `(node) => node.type === test`.\n *   *   when `function` checks if function passed the node is true.\n *   *   when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n *   *   when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n *   An assertion.\n */\nexport const convert =\n  // Note: overloads in JSDoc can\u2019t yet use different `@template`s.\n  /**\n   * @type {(\n   *   ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n   *   ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n   *   ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n   *   ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n   *   ((test?: Test) => Check)\n   * )}\n   */\n  (\n    /**\n     * @param {Test} [test]\n     * @returns {Check}\n     */\n    function (test) {\n      if (test === null || test === undefined) {\n        return ok\n      }\n\n      if (typeof test === 'function') {\n        return castFactory(test)\n      }\n\n      if (typeof test === 'object') {\n        return Array.isArray(test)\n          ? anyFactory(test)\n          : // Cast because `ReadonlyArray` goes into the above but `isArray`\n            // narrows to `Array`.\n            propertiesFactory(/** @type {Props} */ (test))\n      }\n\n      if (typeof test === 'string') {\n        return typeFactory(test)\n      }\n\n      throw new Error('Expected function, string, or object as test')\n    }\n  )\n\n/**\n * @param {Array} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n  /** @type {Array} */\n  const checks = []\n  let index = -1\n\n  while (++index < tests.length) {\n    checks[index] = convert(tests[index])\n  }\n\n  return castFactory(any)\n\n  /**\n   * @this {unknown}\n   * @type {TestFunction}\n   */\n  function any(...parameters) {\n    let index = -1\n\n    while (++index < checks.length) {\n      if (checks[index].apply(this, parameters)) return true\n    }\n\n    return false\n  }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propertiesFactory(check) {\n  const checkAsRecord = /** @type {Record} */ (check)\n\n  return castFactory(all)\n\n  /**\n   * @param {Node} node\n   * @returns {boolean}\n   */\n  function all(node) {\n    const nodeAsRecord = /** @type {Record} */ (\n      /** @type {unknown} */ (node)\n    )\n\n    /** @type {string} */\n    let key\n\n    for (key in check) {\n      if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n    }\n\n    return true\n  }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n  return castFactory(type)\n\n  /**\n   * @param {Node} node\n   */\n  function type(node) {\n    return node && node.type === check\n  }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n  return check\n\n  /**\n   * @this {unknown}\n   * @type {Check}\n   */\n  function check(value, index, parent) {\n    return Boolean(\n      looksLikeANode(value) &&\n        testFunction.call(\n          this,\n          value,\n          typeof index === 'number' ? index : undefined,\n          parent || undefined\n        )\n    )\n  }\n}\n\nfunction ok() {\n  return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n  return value !== null && typeof value === 'object' && 'type' in value\n}\n", "/**\n * @param {string} d\n * @returns {string}\n */\nexport function color(d) {\n  return d\n}\n", "/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n *   Test from `unist-util-is`.\n *\n *   Note: we have remove and add `undefined`, because otherwise when generating\n *   automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n *   which doesn\u2019t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n *   Fn extends (value: any) => value is infer Thing\n *   ? Thing\n *   : Fallback\n * )} Predicate\n *   Get the value of a type guard `Fn`.\n * @template Fn\n *   Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n *   Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n *   Check extends null | undefined // No test.\n *   ? Value\n *   : Value extends {type: Check} // String (type) test.\n *   ? Value\n *   : Value extends Check // Partial test.\n *   ? Value\n *   : Check extends Function // Function test.\n *   ? Predicate extends Value\n *     ? Predicate\n *     : never\n *   : never // Some other test?\n * )} MatchesOne\n *   Check whether a node matches a primitive check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n *   Check extends ReadonlyArray\n *   ? MatchesOne\n *   : Check extends Array\n *   ? MatchesOne\n *   : MatchesOne\n * )} Matches\n *   Check whether a node matches a check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n *   Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n *   Increment a number in the type system.\n * @template {Uint} [I=0]\n *   Index.\n */\n\n/**\n * @typedef {(\n *   Node extends UnistParent\n *   ? Node extends {children: Array}\n *     ? Child extends Children ? Node : never\n *     : never\n *   : never\n * )} InternalParent\n *   Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n *   Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {(\n *   Depth extends Max\n *   ? never\n *   :\n *     | InternalParent\n *     | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n *   Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @typedef {InternalAncestor, Child>} Ancestor\n *   Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {(\n *   Tree extends UnistParent\n *     ? Depth extends Max\n *       ? Tree\n *       : Tree | InclusiveDescendant>\n *     : Tree\n * )} InclusiveDescendant\n *   Collect all (inclusive) descendants of `Tree`.\n *\n *   > \uD83D\uDC49 **Note**: for performance reasons, this seems to be the fastest way to\n *   > recurse without actually running into an infinite loop, which the\n *   > previous version did.\n *   >\n *   > Practically, a max of `2` is typically enough assuming a `Root` is\n *   > passed, but it doesn\u2019t improve performance.\n *   > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n *   > Using up to `10` doesn\u2019t hurt or help either.\n * @template {UnistNode} Tree\n *   Tree type.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n *   Union of the action types.\n *\n * @typedef {number} Index\n *   Move to the sibling at `index` next (after node itself is completely\n *   traversed).\n *\n *   Useful if mutating the tree, such as removing the node the visitor is\n *   currently on, or any of its previous siblings.\n *   Results less than 0 or greater than or equal to `children.length` stop\n *   traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n *   List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n *   Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n *   Handle a node (matching `test`, if given).\n *\n *   Visitors are free to transform `node`.\n *   They can also transform the parent of node (the last of `ancestors`).\n *\n *   Replacing `node` itself, if `SKIP` is not returned, still causes its\n *   descendants to be walked (which is a bug).\n *\n *   When adding or removing previous siblings of `node` (or next siblings, in\n *   case of reverse), the `Visitor` should return a new `Index` to specify the\n *   sibling to traverse after `node` is traversed.\n *   Adding or removing next siblings of `node` (or previous siblings, in case\n *   of reverse) is handled as expected without needing to return a new `Index`.\n *\n *   Removing the children property of an ancestor still results in them being\n *   traversed.\n * @param {Visited} node\n *   Found node.\n * @param {Array} ancestors\n *   Ancestors of `node`.\n * @returns {VisitorResult}\n *   What to do next.\n *\n *   An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n *   An `Action` is treated as a tuple of `[Action]`.\n *\n *   Passing a tuple back only makes sense if the `Action` is `SKIP`.\n *   When the `Action` is `EXIT`, that action can be returned.\n *   When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n *   Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n *   Ancestor type.\n */\n\n/**\n * @typedef {Visitor, Check>, Ancestor, Check>>>} BuildVisitor\n *   Build a typed `Visitor` function from a tree and a test.\n *\n *   It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n *   Tree type.\n * @template {Test} [Check=Test]\n *   Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node\u2019s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n *   Tree to traverse.\n * @param {Visitor | Test} test\n *   `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n *   Handle each node.\n * @param {boolean | null | undefined} [reverse]\n *   Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n *   Nothing.\n *\n * @template {UnistNode} Tree\n *   Node type.\n * @template {Test} Check\n *   `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n  /** @type {Test} */\n  let check\n\n  if (typeof test === 'function' && typeof visitor !== 'function') {\n    reverse = visitor\n    // @ts-expect-error no visitor given, so `visitor` is test.\n    visitor = test\n  } else {\n    // @ts-expect-error visitor given, so `test` isn\u2019t a visitor.\n    check = test\n  }\n\n  const is = convert(check)\n  const step = reverse ? -1 : 1\n\n  factory(tree, undefined, [])()\n\n  /**\n   * @param {UnistNode} node\n   * @param {number | undefined} index\n   * @param {Array} parents\n   */\n  function factory(node, index, parents) {\n    const value = /** @type {Record} */ (\n      node && typeof node === 'object' ? node : {}\n    )\n\n    if (typeof value.type === 'string') {\n      const name =\n        // `hast`\n        typeof value.tagName === 'string'\n          ? value.tagName\n          : // `xast`\n            typeof value.name === 'string'\n            ? value.name\n            : undefined\n\n      Object.defineProperty(visit, 'name', {\n        value:\n          'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n      })\n    }\n\n    return visit\n\n    function visit() {\n      /** @type {Readonly} */\n      let result = empty\n      /** @type {Readonly} */\n      let subresult\n      /** @type {number} */\n      let offset\n      /** @type {Array} */\n      let grandparents\n\n      if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n        // @ts-expect-error: `visitor` is now a visitor.\n        result = toResult(visitor(node, parents))\n\n        if (result[0] === EXIT) {\n          return result\n        }\n      }\n\n      if ('children' in node && node.children) {\n        const nodeAsParent = /** @type {UnistParent} */ (node)\n\n        if (nodeAsParent.children && result[0] !== SKIP) {\n          offset = (reverse ? nodeAsParent.children.length : -1) + step\n          grandparents = parents.concat(nodeAsParent)\n\n          while (offset > -1 && offset < nodeAsParent.children.length) {\n            const child = nodeAsParent.children[offset]\n\n            subresult = factory(child, offset, grandparents)()\n\n            if (subresult[0] === EXIT) {\n              return subresult\n            }\n\n            offset =\n              typeof subresult[1] === 'number' ? subresult[1] : offset + step\n          }\n        }\n      }\n\n      return result\n    }\n  }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n *   Valid return values from visitors.\n * @returns {Readonly}\n *   Clean result.\n */\nfunction toResult(value) {\n  if (Array.isArray(value)) {\n    return value\n  }\n\n  if (typeof value === 'number') {\n    return [CONTINUE, value]\n  }\n\n  return value === null || value === undefined ? empty : [value]\n}\n", "/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n * @import {VisitorResult} from 'unist-util-visit-parents'\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n *   Test from `unist-util-is`.\n *\n *   Note: we have remove and add `undefined`, because otherwise when generating\n *   automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n *   which doesn\u2019t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it\u2019s released.\n\n/**\n * @typedef {(\n *   Fn extends (value: any) => value is infer Thing\n *   ? Thing\n *   : Fallback\n * )} Predicate\n *   Get the value of a type guard `Fn`.\n * @template Fn\n *   Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n *   Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n *   Check extends null | undefined // No test.\n *   ? Value\n *   : Value extends {type: Check} // String (type) test.\n *   ? Value\n *   : Value extends Check // Partial test.\n *   ? Value\n *   : Check extends Function // Function test.\n *   ? Predicate extends Value\n *     ? Predicate\n *     : never\n *   : never // Some other test?\n * )} MatchesOne\n *   Check whether a node matches a primitive check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n *   Check extends ReadonlyArray\n *   ? MatchesOne\n *   : MatchesOne\n * )} Matches\n *   Check whether a node matches a check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n *   Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n *   Increment a number in the type system.\n * @template {Uint} [I=0]\n *   Index.\n */\n\n/**\n * @typedef {(\n *   Node extends UnistParent\n *   ? Node extends {children: Array}\n *     ? Child extends Children ? Node : never\n *     : never\n *   : never\n * )} InternalParent\n *   Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n *   Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {(\n *   Depth extends Max\n *   ? never\n *   :\n *     | InternalParent\n *     | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n *   Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @typedef {(\n *   Tree extends UnistParent\n *     ? Depth extends Max\n *       ? Tree\n *       : Tree | InclusiveDescendant>\n *     : Tree\n * )} InclusiveDescendant\n *   Collect all (inclusive) descendants of `Tree`.\n *\n *   > \uD83D\uDC49 **Note**: for performance reasons, this seems to be the fastest way to\n *   > recurse without actually running into an infinite loop, which the\n *   > previous version did.\n *   >\n *   > Practically, a max of `2` is typically enough assuming a `Root` is\n *   > passed, but it doesn\u2019t improve performance.\n *   > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n *   > Using up to `10` doesn\u2019t hurt or help either.\n * @template {UnistNode} Tree\n *   Tree type.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @callback Visitor\n *   Handle a node (matching `test`, if given).\n *\n *   Visitors are free to transform `node`.\n *   They can also transform `parent`.\n *\n *   Replacing `node` itself, if `SKIP` is not returned, still causes its\n *   descendants to be walked (which is a bug).\n *\n *   When adding or removing previous siblings of `node` (or next siblings, in\n *   case of reverse), the `Visitor` should return a new `Index` to specify the\n *   sibling to traverse after `node` is traversed.\n *   Adding or removing next siblings of `node` (or previous siblings, in case\n *   of reverse) is handled as expected without needing to return a new `Index`.\n *\n *   Removing the children property of `parent` still results in them being\n *   traversed.\n * @param {Visited} node\n *   Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n *   Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n *   Parent of `node`.\n * @returns {VisitorResult}\n *   What to do next.\n *\n *   An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n *   An `Action` is treated as a tuple of `[Action]`.\n *\n *   Passing a tuple back only makes sense if the `Action` is `SKIP`.\n *   When the `Action` is `EXIT`, that action can be returned.\n *   When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n *   Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n *   Ancestor type.\n */\n\n/**\n * @typedef {Visitor>} BuildVisitorFromMatch\n *   Build a typed `Visitor` function from a node and all possible parents.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n *   Node type.\n * @template {UnistParent} Ancestor\n *   Parent type.\n */\n\n/**\n * @typedef {(\n *   BuildVisitorFromMatch<\n *     Matches,\n *     Extract\n *   >\n * )} BuildVisitorFromDescendants\n *   Build a typed `Visitor` function from a list of descendants and a test.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n *   Node type.\n * @template {Test} Check\n *   Test type.\n */\n\n/**\n * @typedef {(\n *   BuildVisitorFromDescendants<\n *     InclusiveDescendant,\n *     Check\n *   >\n * )} BuildVisitor\n *   Build a typed `Visitor` function from a tree and a test.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n *   Node type.\n * @template {Test} [Check=Test]\n *   Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n *   Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n *   `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n *   Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n *   Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n *   Nothing.\n *\n * @template {UnistNode} Tree\n *   Node type.\n * @template {Test} Check\n *   `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n  /** @type {boolean | null | undefined} */\n  let reverse\n  /** @type {Test} */\n  let test\n  /** @type {Visitor} */\n  let visitor\n\n  if (\n    typeof testOrVisitor === 'function' &&\n    typeof visitorOrReverse !== 'function'\n  ) {\n    test = undefined\n    visitor = testOrVisitor\n    reverse = visitorOrReverse\n  } else {\n    // @ts-expect-error: assume the overload with test was given.\n    test = testOrVisitor\n    // @ts-expect-error: assume the overload with test was given.\n    visitor = visitorOrReverse\n    reverse = maybeReverse\n  }\n\n  visitParents(tree, test, overload, reverse)\n\n  /**\n   * @param {UnistNode} node\n   * @param {Array} parents\n   */\n  function overload(node, parents) {\n    const parent = parents[parents.length - 1]\n    const index = parent ? parent.children.indexOf(node) : undefined\n    return visitor(node, index, parent)\n  }\n}\n", "/**\n * @import {\n *   ElementContent as HastElementContent,\n *   Element as HastElement,\n *   Nodes as HastNodes,\n *   Properties as HastProperties,\n *   RootContent as HastRootContent,\n *   Text as HastText\n * } from 'hast'\n * @import {\n *   Definition as MdastDefinition,\n *   FootnoteDefinition as MdastFootnoteDefinition,\n *   Nodes as MdastNodes,\n *   Parents as MdastParents\n * } from 'mdast'\n * @import {VFile} from 'vfile'\n * @import {\n *   FootnoteBackContentTemplate,\n *   FootnoteBackLabelTemplate\n * } from './footer.js'\n */\n\n/**\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | undefined} parent\n *   Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n *   hast node.\n *\n * @typedef {Partial>} Handlers\n *   Handle nodes.\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree (default:\n *   `false`).\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` property on footnotes to prevent them from\n *   *clobbering* (default: `'user-content-'`).\n *\n *   Pass `''` for trusted markdown and when you are careful with\n *   polyfilling.\n *   You could pass a different prefix.\n *\n *   DOM clobbering is this:\n *\n *   ```html\n *   

\n * \n * ```\n *\n * The above example shows that elements are made available by browsers, by\n * their ID, on the `window` object.\n * This is a security risk because you might be expecting some other variable\n * at that place.\n * It can also break polyfills.\n * Using a prefix solves these problems.\n * @property {VFile | null | undefined} [file]\n * Corresponding virtual file representing the input document (optional).\n * @property {FootnoteBackContentTemplate | string | null | undefined} [footnoteBackContent]\n * Content of the backreference back to references (default: `defaultFootnoteBackContent`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackContent(_, rereferenceIndex) {\n * const result = [{type: 'text', value: '\u21A9'}]\n *\n * if (rereferenceIndex > 1) {\n * result.push({\n * type: 'element',\n * tagName: 'sup',\n * properties: {},\n * children: [{type: 'text', value: String(rereferenceIndex)}]\n * })\n * }\n *\n * return result\n * }\n * ```\n *\n * This content is used in the `a` element of each backreference (the `\u21A9`\n * links).\n * @property {FootnoteBackLabelTemplate | string | null | undefined} [footnoteBackLabel]\n * Label to describe the backreference back to references (default:\n * `defaultFootnoteBackLabel`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n * return (\n * 'Back to reference ' +\n * (referenceIndex + 1) +\n * (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n * )\n * }\n * ```\n *\n * Change it when the markdown is not in English.\n *\n * This label is used in the `ariaLabel` property on each backreference\n * (the `\u21A9` links).\n * It affects users of assistive technology.\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n * Textual label to use for the footnotes section (default: `'Footnotes'`).\n *\n * Change it when the markdown is not in English.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label (default: `{className:\n * ['sr-only']}`).\n *\n * Change it to show the label and add other properties.\n *\n * This label is typically hidden visually (assuming an `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass an empty string.\n * You can also add different properties.\n *\n * > **Note**: `id: 'footnote-label'` is always added, because footnote\n * > calls use it with `aria-describedby` to provide an accessible label.\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n * HTML tag name to use for the footnote label element (default: `'h2'`).\n *\n * Change it to match your document structure.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {Handlers | null | undefined} [handlers]\n * Extra handlers for nodes (optional).\n * @property {Array | null | undefined} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast (note that\n * the node itself is passed, but eventual children are transformed)\n * (optional).\n * @property {Handler | null | undefined} [unknownHandler]\n * Handler for all unknown nodes (optional).\n *\n * @typedef State\n * Info passed around.\n * @property {(node: MdastNodes) => Array} all\n * Transform the children of an mdast parent to hast.\n * @property {(from: MdastNodes, to: Type) => HastElement | Type} applyData\n * Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {Map} definitionById\n * Definitions by their identifier.\n * @property {Map} footnoteById\n * Footnote definitions by their identifier.\n * @property {Map} footnoteCounts\n * Counts for how often the same footnote was called.\n * @property {Array} footnoteOrder\n * Identifiers of order when footnote calls first appear in tree order.\n * @property {Handlers} handlers\n * Applied handlers.\n * @property {(node: MdastNodes, parent: MdastParents | undefined) => Array | HastElementContent | undefined} one\n * Transform an mdast node to hast.\n * @property {Options} options\n * Configuration.\n * @property {(from: MdastNodes, node: HastNodes) => undefined} patch\n * Copy a node\u2019s positional info.\n * @property {(nodes: Array, loose?: boolean | undefined) => Array} wrap\n * Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {visit} from 'unist-util-visit'\nimport {position} from 'unist-util-position'\nimport {handlers as defaultHandlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n * mdast node to transform.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {State}\n * `state` function.\n */\nexport function createState(tree, options) {\n const settings = options || emptyOptions\n /** @type {Map} */\n const definitionById = new Map()\n /** @type {Map} */\n const footnoteById = new Map()\n /** @type {Map} */\n const footnoteCounts = new Map()\n /** @type {Handlers} */\n // @ts-expect-error: the root handler returns a root.\n // Hard to type.\n const handlers = {...defaultHandlers, ...settings.handlers}\n\n /** @type {State} */\n const state = {\n all,\n applyData,\n definitionById,\n footnoteById,\n footnoteCounts,\n footnoteOrder: [],\n handlers,\n one,\n options: settings,\n patch,\n wrap\n }\n\n visit(tree, function (node) {\n if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n const map = node.type === 'definition' ? definitionById : footnoteById\n const id = String(node.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: .\n if (!map.has(id)) {\n // @ts-expect-error: node type matches map.\n map.set(id, node)\n }\n }\n })\n\n return state\n\n /**\n * Transform an mdast node into a hast node.\n *\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | undefined} [parent]\n * Parent of `node`.\n * @returns {Array | HastElementContent | undefined}\n * Resulting hast node.\n */\n function one(node, parent) {\n const type = node.type\n const handle = state.handlers[type]\n\n if (own.call(state.handlers, type) && handle) {\n return handle(state, node, parent)\n }\n\n if (state.options.passThrough && state.options.passThrough.includes(type)) {\n if ('children' in node) {\n const {children, ...shallow} = node\n const result = structuredClone(shallow)\n // @ts-expect-error: TS doesn\u2019t understand\u2026\n result.children = state.all(node)\n // @ts-expect-error: TS doesn\u2019t understand\u2026\n return result\n }\n\n // @ts-expect-error: it\u2019s custom.\n return structuredClone(node)\n }\n\n const unknown = state.options.unknownHandler || defaultUnknownHandler\n\n return unknown(state, node, parent)\n }\n\n /**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array}\n * Resulting hast nodes.\n */\n function all(parent) {\n /** @type {Array} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n while (++index < nodes.length) {\n const result = state.one(nodes[index], parent)\n\n // To do: see if we van clean this? Can we merge texts?\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = trimMarkdownSpaceStart(result.value)\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = trimMarkdownSpaceStart(head.value)\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n }\n}\n\n/**\n * Copy a node\u2019s positional info.\n *\n * @param {MdastNodes} from\n * mdast node to copy from.\n * @param {HastNodes} to\n * hast node to copy into.\n * @returns {undefined}\n * Nothing.\n */\nfunction patch(from, to) {\n if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n * Node type.\n * @param {MdastNodes} from\n * mdast node to use data from.\n * @param {Type} to\n * hast node to change.\n * @returns {HastElement | Type}\n * Nothing.\n */\nfunction applyData(from, to) {\n /** @type {HastElement | Type} */\n let result = to\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (from && from.data) {\n const hName = from.data.hName\n const hChildren = from.data.hChildren\n const hProperties = from.data.hProperties\n\n if (typeof hName === 'string') {\n // Transforming the node resulted in an element with a different name\n // than wanted:\n if (result.type === 'element') {\n result.tagName = hName\n }\n // Transforming the node resulted in a non-element, which happens for\n // raw, text, and root nodes (unless custom handlers are passed).\n // The intent of `hName` is to create an element, but likely also to keep\n // the content around (otherwise: pass `hChildren`).\n else {\n /** @type {Array} */\n // @ts-expect-error: assume no doctypes in `root`.\n const children = 'children' in result ? result.children : [result]\n result = {type: 'element', tagName: hName, properties: {}, children}\n }\n }\n\n if (result.type === 'element' && hProperties) {\n Object.assign(result.properties, structuredClone(hProperties))\n }\n\n if (\n 'children' in result &&\n result.children &&\n hChildren !== null &&\n hChildren !== undefined\n ) {\n result.children = hChildren\n }\n }\n\n return result\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * Unknown mdast node.\n * @returns {HastElement | HastText}\n * Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n const data = node.data || {}\n /** @type {HastElement | HastText} */\n const result =\n 'value' in node &&\n !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n ? {type: 'text', value: node.value}\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: state.all(node)\n }\n\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastRootContent} Type\n * Node type.\n * @param {Array} nodes\n * List of nodes to wrap.\n * @param {boolean | undefined} [loose=false]\n * Whether to add line endings at start and end (default: `false`).\n * @returns {Array}\n * Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push({type: 'text', value: '\\n'})\n }\n\n while (++index < nodes.length) {\n if (index) result.push({type: 'text', value: '\\n'})\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push({type: 'text', value: '\\n'})\n }\n\n return result\n}\n\n/**\n * Trim spaces and tabs at the start of `value`.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Result.\n */\nfunction trimMarkdownSpaceStart(value) {\n let index = 0\n let code = value.charCodeAt(index)\n\n while (code === 9 || code === 32) {\n index++\n code = value.charCodeAt(index)\n }\n\n return value.slice(index)\n}\n", "/**\n * @import {Nodes as HastNodes} from 'hast'\n * @import {Nodes as MdastNodes} from 'mdast'\n * @import {Options} from './state.js'\n */\n\nimport {ok as assert} from 'devlop'\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don\u2019t:\n *\n * * `hast-util-to-html` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful\n * if you completely trust authors\n * * `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only\n * way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn\u2019t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn\u2019t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {HastNodes}\n * hast tree.\n */\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, undefined)\n const foot = footer(state)\n /** @type {HastNodes} */\n const result = Array.isArray(node)\n ? {type: 'root', children: node}\n : node || {type: 'root', children: []}\n\n if (foot) {\n // If there\u2019s a footer, there were definitions, meaning block\n // content.\n // So `result` is a parent node.\n assert('children' in result)\n result.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n return result\n}\n", "/**\n * @import {Root as HastRoot} from 'hast'\n * @import {Root as MdastRoot} from 'mdast'\n * @import {Options as ToHastOptions} from 'mdast-util-to-hast'\n * @import {Processor} from 'unified'\n * @import {VFile} from 'vfile'\n */\n\n/**\n * @typedef {Omit} Options\n *\n * @callback TransformBridge\n * Bridge-mode.\n *\n * Runs the destination with the new hast tree.\n * Discards result.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {Promise}\n * Nothing.\n *\n * @callback TransformMutate\n * Mutate-mode.\n *\n * Further transformers run on the hast tree.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {HastRoot}\n * Tree (hast).\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n/**\n * Turn markdown into HTML.\n *\n * ##### Notes\n *\n * ###### Signature\n *\n * * if a processor is given,\n * runs the (rehype) plugins used on it with a hast tree,\n * then discards the result (*bridge mode*)\n * * otherwise,\n * returns a hast tree,\n * the plugins used after `remarkRehype` are rehype plugins (*mutate mode*)\n *\n * > \uD83D\uDC49 **Note**:\n * > It\u2019s highly unlikely that you want to pass a `processor`.\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most plugins ignore `raw` nodes but two notable ones don\u2019t:\n *\n * * `rehype-stringify` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful if\n * you completely trust authors\n * * `rehype-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc);\n * this is a heavy task as it needs a full HTML parser,\n * but it is the only way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark,\n * which we follow by default.\n * They are supported by GitHub,\n * so footnotes can be enabled in markdown with `remark-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes,\n * which is hidden for sighted users but shown to assistive technology.\n * When your page is not in English,\n * you must define translated values.\n *\n * Back references use ARIA attributes,\n * but the section label itself uses a heading that is hidden with an\n * `sr-only` class.\n * To show it to sighted users,\n * define different attributes in `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem,\n * as it links footnote calls to footnote definitions on the page through `id`\n * attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n *

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * *Example: headings (DOM clobbering)* in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn\u2019t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value`\n * (and doesn\u2019t have `data.hName`, `data.hProperties`, or `data.hChildren`,\n * see later),\n * create a hast `text` node\n * * otherwise,\n * create a `
` element (which could be changed with `data.hName`),\n * with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @overload\n * @param {Processor} processor\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformBridge}\n *\n * @overload\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformMutate}\n *\n * @overload\n * @param {Readonly | Processor | null | undefined} [destination]\n * @param {Readonly | null | undefined} [options]\n * @returns {TransformBridge | TransformMutate}\n *\n * @param {Readonly | Processor | null | undefined} [destination]\n * Processor or configuration (optional).\n * @param {Readonly | null | undefined} [options]\n * When a processor was given,\n * configuration (optional).\n * @returns {TransformBridge | TransformMutate}\n * Transform.\n */\nexport default function remarkRehype(destination, options) {\n if (destination && 'run' in destination) {\n /**\n * @type {TransformBridge}\n */\n return async function (tree, file) {\n // Cast because root in -> root out.\n const hastTree = /** @type {HastRoot} */ (\n toHast(tree, {file, ...options})\n )\n await destination.run(hastTree, file)\n }\n }\n\n /**\n * @type {TransformMutate}\n */\n return function (tree, file) {\n // Cast because root in -> root out.\n // To do: in the future, disallow ` || options` fallback.\n // With `unified-engine`, `destination` can be `undefined` but\n // `options` will be the file set.\n // We should not pass that as `options`.\n return /** @type {HastRoot} */ (\n toHast(tree, {file, ...(destination || options)})\n )\n }\n}\n", "/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n", "/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n * Acceptable results from compilers.\n *\n * To register custom results, add them to\n * {@linkcode CompileResultMap}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n * The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n * A **compiler** handles the compiling of a syntax tree to something else\n * (in most cases, text) (TypeScript type).\n *\n * It is used in the stringify phase and called with a {@linkcode Node}\n * and {@linkcode VFile} representation of the document to compile.\n * It should return the textual representation of the given tree (typically\n * `string`).\n *\n * > **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you\u2019re using a compiler that doesn\u2019t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n * Tree to compile.\n * @param {VFile} file\n * File associated with `tree`.\n * @returns {Result}\n * New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n * something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the parser yields (default: `Node`)\n * @callback Parser\n * A **parser** handles the parsing of text to a syntax tree.\n *\n * It is used in the parse phase and is called with a `string` and\n * {@linkcode VFile} of the document to parse.\n * It must return the syntax tree representation of the given file\n * ({@linkcode Node}).\n * @param {string} document\n * Document to parse.\n * @param {VFile} file\n * File associated with `document`.\n * @returns {Tree}\n * Node representing the given file.\n */\n\n/**\n * @typedef {(\n * Plugin, any, any> |\n * PluginTuple, any, any> |\n * Preset\n * )} Pluggable\n * Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array} PluggableList\n * List of plugins and presets.\n */\n\n// Note: we can\u2019t use `callback` yet as it messes up `this`:\n// .\n/**\n * @template {Array} [PluginParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n * Value that is expected as input (default: `Node`).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node it expects.\n * * If the plugin sets a {@linkcode Parser}, this should be\n * `string`.\n * * If the plugin sets a {@linkcode Compiler}, this should be the\n * node it expects.\n * @template [Output=Input]\n * Value that is yielded as output (default: `Input`).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node that that yields.\n * * If the plugin sets a {@linkcode Parser}, this should be the\n * node that it yields.\n * * If the plugin sets a {@linkcode Compiler}, this should be\n * result it yields.\n * @typedef {(\n * (this: Processor, ...parameters: PluginParameters) =>\n * Input extends string ? // Parser.\n * Output extends Node | undefined ? undefined | void : never :\n * Output extends CompileResults ? // Compiler.\n * Input extends Node | undefined ? undefined | void : never :\n * Transformer<\n * Input extends Node ? Input : Node,\n * Output extends Node ? Output : Node\n * > | undefined | void\n * )} Plugin\n * Single plugin.\n *\n * Plugins configure the processors they are applied on in the following\n * ways:\n *\n * * they change the processor, such as the parser, the compiler, or by\n * configuring data\n * * they specify how to handle trees and files\n *\n * In practice, they are functions that can receive options and configure the\n * processor (`this`).\n *\n * > **Note**: plugins are called when the processor is *frozen*, not when\n * > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array} [TupleParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n * Value that is expected as input (optional).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node it expects.\n * * If the plugin sets a {@linkcode Parser}, this should be\n * `string`.\n * * If the plugin sets a {@linkcode Compiler}, this should be the\n * node it expects.\n * @template [Output=undefined] (optional).\n * Value that is yielded as output.\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node that that yields.\n * * If the plugin sets a {@linkcode Parser}, this should be the\n * node that it yields.\n * * If the plugin sets a {@linkcode Compiler}, this should be\n * result it yields.\n * @typedef {(\n * [\n * plugin: Plugin,\n * ...parameters: TupleParameters\n * ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n * Sharable configuration.\n *\n * They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n * List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n * Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n * The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n * Callback called when the process is done.\n *\n * Called with either an error or a result.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {File | undefined} [file]\n * Processed file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n * Callback called when transformers are done.\n *\n * Called with either an error or results.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {Tree | undefined} [tree]\n * Transformed tree (optional).\n * @param {VFile | undefined} [file]\n * File (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n * Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n * Callback passed to transforms.\n *\n * If the signature of a `transformer` accepts a third argument, the\n * transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n * Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n * New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n * New, changed, file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n * Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n * Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n * Transformers handle syntax trees and files.\n *\n * They are functions that are called each time a syntax tree and file are\n * passed through the run phase.\n * When an error occurs in them (either because it\u2019s thrown, returned,\n * rejected, or passed to `next`), the process stops.\n *\n * The run phase is handled by [`trough`][trough], see its documentation for\n * the exact semantics of these functions.\n *\n * > **Note**: you should likely ignore `next`: don\u2019t accept it.\n * > it supports callback-style async work.\n * > But promises are likely easier to reason about.\n *\n * [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n * Tree to handle.\n * @param {VFile} file\n * File to handle.\n * @param {TransformCallback} next\n * Callback.\n * @returns {(\n * Promise |\n * Promise | // For some reason this is needed separately.\n * Output |\n * Error |\n * undefined |\n * void\n * )}\n * If you accept `next`, nothing.\n * Otherwise:\n *\n * * `Error` \u2014 fatal error to stop the process\n * * `Promise` or `undefined` \u2014 the next transformer keeps using\n * same tree\n * * `Promise` or `Node` \u2014 new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n * Output of `parse`.\n * @template {Node | undefined} HeadTree\n * Input for `run`.\n * @template {Node | undefined} TailTree\n * Output for `run`.\n * @template {Node | undefined} CompileTree\n * Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n * Output of `stringify`.\n * @template {Node | string | undefined} Input\n * Input of plugin.\n * @template Output\n * Output of plugin (optional).\n * @typedef {(\n * Input extends string\n * ? Output extends Node | undefined\n * ? // Parser.\n * Processor<\n * Output extends undefined ? ParseTree : Output,\n * HeadTree,\n * TailTree,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : Output extends CompileResults\n * ? Input extends Node | undefined\n * ? // Compiler.\n * Processor<\n * ParseTree,\n * HeadTree,\n * TailTree,\n * Input extends undefined ? CompileTree : Input,\n * Output extends undefined ? CompileResult : Output\n * >\n * : // Unknown.\n * Processor\n * : Input extends Node | undefined\n * ? Output extends Node | undefined\n * ? // Transform.\n * Processor<\n * ParseTree,\n * HeadTree extends undefined ? Input : HeadTree,\n * Output extends undefined ? TailTree : Output,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor\n * : // Unknown.\n * Processor\n * )} UsePlugin\n * Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n * Node type that the transformer yields.\n * @typedef {(\n * Result extends Value | undefined ?\n * VFile :\n * VFile & {result: Result}\n * )} VFileWithOutput\n * Type to generate a {@linkcode VFile} corresponding to a compiler result.\n *\n * If a result that is not acceptable on a `VFile` is used, that will\n * be stored on the `result` field of {@linkcode VFile}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n * Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n * Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n * Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n * Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n * Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor>}\n */\nexport class Processor extends CallableInstance {\n /**\n * Create a processor.\n */\n constructor() {\n // If `Processor()` is called (w/o new), `copy` is called instead.\n super('copy')\n\n /**\n * Compiler to use (deprecated).\n *\n * @deprecated\n * Use `compiler` instead.\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.Compiler = undefined\n\n /**\n * Parser to use (deprecated).\n *\n * @deprecated\n * Use `parser` instead.\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.Parser = undefined\n\n // Note: the following fields are considered private.\n // However, they are needed for tests, and TSC generates an untyped\n // `private freezeIndex` field for, which trips `type-coverage` up.\n // Instead, we use `@deprecated` to visualize that they shouldn\u2019t be used.\n /**\n * Internal list of configured plugins.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Array>>}\n */\n this.attachers = []\n\n /**\n * Compiler to use.\n *\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.compiler = undefined\n\n /**\n * Internal state to track where we are while freezing.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {number}\n */\n this.freezeIndex = -1\n\n /**\n * Internal state to track whether we\u2019re frozen.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {boolean | undefined}\n */\n this.frozen = undefined\n\n /**\n * Internal state.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Data}\n */\n this.namespace = {}\n\n /**\n * Parser to use.\n *\n * @type {(\n * Parser |\n * undefined\n * )}\n */\n this.parser = undefined\n\n /**\n * Internal list of configured transformers.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Pipeline}\n */\n this.transformers = trough()\n }\n\n /**\n * Copy a processor.\n *\n * @deprecated\n * This is a private internal method and should not be used.\n * @returns {Processor}\n * New *unfrozen* processor ({@linkcode Processor}) that is\n * configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\n copy() {\n // Cast as the type parameters will be the same after attaching.\n const destination =\n /** @type {Processor} */ (\n new Processor()\n )\n let index = -1\n\n while (++index < this.attachers.length) {\n const attacher = this.attachers[index]\n destination.use(...attacher)\n }\n\n destination.data(extend(true, {}, this.namespace))\n\n return destination\n }\n\n /**\n * Configure the processor with info available to all plugins.\n * Information is stored in an object.\n *\n * Typically, options can be given to a specific plugin, but sometimes it\n * makes sense to have information shared with several plugins.\n * For example, a list of HTML elements that are self-closing, which is\n * needed during all phases.\n *\n * > **Note**: setting information cannot occur on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * > **Note**: to register custom data in TypeScript, augment the\n * > {@linkcode Data} interface.\n *\n * @example\n * This example show how to get and set info:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * const processor = unified().data('alpha', 'bravo')\n *\n * processor.data('alpha') // => 'bravo'\n *\n * processor.data() // => {alpha: 'bravo'}\n *\n * processor.data({charlie: 'delta'})\n *\n * processor.data() // => {charlie: 'delta'}\n * ```\n *\n * @template {keyof Data} Key\n *\n * @overload\n * @returns {Data}\n *\n * @overload\n * @param {Data} dataset\n * @returns {Processor}\n *\n * @overload\n * @param {Key} key\n * @returns {Data[Key]}\n *\n * @overload\n * @param {Key} key\n * @param {Data[Key]} value\n * @returns {Processor}\n *\n * @param {Data | Key} [key]\n * Key to get or set, or entire dataset to set, or nothing to get the\n * entire dataset (optional).\n * @param {Data[Key]} [value]\n * Value to set (optional).\n * @returns {unknown}\n * The current processor when setting, the value at `key` when getting, or\n * the entire dataset when getting without key.\n */\n data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', this.frozen)\n this.namespace[key] = value\n return this\n }\n\n // Get `key`.\n return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', this.frozen)\n this.namespace = key\n return this\n }\n\n // Get space.\n return this.namespace\n }\n\n /**\n * Freeze a processor.\n *\n * Frozen processors are meant to be extended and not to be configured\n * directly.\n *\n * When a processor is frozen it cannot be unfrozen.\n * New processors working the same way can be created by calling the\n * processor.\n *\n * It\u2019s possible to freeze processors explicitly by calling `.freeze()`.\n * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n * `.stringify()`, `.process()`, or `.processSync()` are called.\n *\n * @returns {Processor}\n * The current processor.\n */\n freeze() {\n if (this.frozen) {\n return this\n }\n\n // Cast so that we can type plugins easier.\n // Plugins are supposed to be usable on different processors, not just on\n // this exact processor.\n const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n while (++this.freezeIndex < this.attachers.length) {\n const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n const transformer = attacher.call(self, ...options)\n\n if (typeof transformer === 'function') {\n this.transformers.use(transformer)\n }\n }\n\n this.frozen = true\n this.freezeIndex = Number.POSITIVE_INFINITY\n\n return this\n }\n\n /**\n * Parse text to a syntax tree.\n *\n * > **Note**: `parse` freezes the processor if not already *frozen*.\n *\n * > **Note**: `parse` performs the parse phase, not the run phase or other\n * > phases.\n *\n * @param {Compatible | undefined} [file]\n * file to parse (optional); typically `string` or `VFile`; any value\n * accepted as `x` in `new VFile(x)`.\n * @returns {ParseTree extends undefined ? Node : ParseTree}\n * Syntax tree representing `file`.\n */\n parse(file) {\n this.freeze()\n const realFile = vfile(file)\n const parser = this.parser || this.Parser\n assertParser('parse', parser)\n return parser(String(realFile), realFile)\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * > **Note**: `process` freezes the processor if not already *frozen*.\n *\n * > **Note**: `process` performs the parse, run, and stringify phases.\n *\n * @overload\n * @param {Compatible | undefined} file\n * @param {ProcessCallback>} done\n * @returns {undefined}\n *\n * @overload\n * @param {Compatible | undefined} [file]\n * @returns {Promise>}\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`]; any value accepted as\n * `x` in `new VFile(x)`.\n * @param {ProcessCallback> | undefined} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise a promise, rejected with a fatal error or resolved with the\n * processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you\u2019re using a compiler that doesn\u2019t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n process(file, done) {\n const self = this\n\n this.freeze()\n assertParser('process', this.parser || this.Parser)\n assertCompiler('process', this.compiler || this.Compiler)\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {((file: VFileWithOutput) => undefined | void) | undefined} resolve\n * @param {(error: Error | undefined) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n const realFile = vfile(file)\n // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n // input of the first transform).\n const parseTree =\n /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n /** @type {unknown} */ (self.parse(realFile))\n )\n\n self.run(parseTree, realFile, function (error, tree, file) {\n if (error || !tree || !file) {\n return realDone(error)\n }\n\n // Assume `TailTree` (the output of the last transform) matches\n // `CompileTree` (the input of the compiler).\n const compileTree =\n /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n /** @type {unknown} */ (tree)\n )\n\n const compileResult = self.stringify(compileTree, file)\n\n if (looksLikeAValue(compileResult)) {\n file.value = compileResult\n } else {\n file.result = compileResult\n }\n\n realDone(error, /** @type {VFileWithOutput} */ (file))\n })\n\n /**\n * @param {Error | undefined} error\n * @param {VFileWithOutput | undefined} [file]\n * @returns {undefined}\n */\n function realDone(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, file)\n }\n }\n }\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > **Note**: `processSync` freezes the processor if not already *frozen*.\n *\n * > **Note**: `processSync` performs the parse, run, and stringify phases.\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`; any value accepted as\n * `x` in `new VFile(x)`.\n * @returns {VFileWithOutput}\n * The processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you\u2019re using a compiler that doesn\u2019t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n processSync(file) {\n /** @type {boolean} */\n let complete = false\n /** @type {VFileWithOutput | undefined} */\n let result\n\n this.freeze()\n assertParser('processSync', this.parser || this.Parser)\n assertCompiler('processSync', this.compiler || this.Compiler)\n\n this.process(file, realDone)\n assertDone('processSync', 'process', complete)\n assert(result, 'we either bailed on an error or have a tree')\n\n return result\n\n /**\n * @type {ProcessCallback>}\n */\n function realDone(error, file) {\n complete = true\n bail(error)\n result = file\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * > **Note**: `run` freezes the processor if not already *frozen*.\n *\n * > **Note**: `run` performs the run phase, not other phases.\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} file\n * @param {RunCallback} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} [file]\n * @returns {Promise}\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {(\n * RunCallback |\n * Compatible\n * )} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @param {RunCallback} [done]\n * Callback (optional).\n * @returns {Promise | undefined}\n * Nothing if `done` is given.\n * Otherwise, a promise rejected with a fatal error or resolved with the\n * transformed tree.\n */\n run(tree, file, done) {\n assertNode(tree)\n this.freeze()\n\n const transformers = this.transformers\n\n if (!done && typeof file === 'function') {\n done = file\n file = undefined\n }\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {(\n * ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n * undefined\n * )} resolve\n * @param {(error: Error) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n assert(\n typeof file !== 'function',\n '`file` can\u2019t be a `done` anymore, we checked'\n )\n const realFile = vfile(file)\n transformers.run(tree, realFile, realDone)\n\n /**\n * @param {Error | undefined} error\n * @param {Node} outputTree\n * @param {VFile} file\n * @returns {undefined}\n */\n function realDone(error, outputTree, file) {\n const resultingTree =\n /** @type {TailTree extends undefined ? Node : TailTree} */ (\n outputTree || tree\n )\n\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(resultingTree)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, resultingTree, file)\n }\n }\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > **Note**: `runSync` freezes the processor if not already *frozen*.\n *\n * > **Note**: `runSync` performs the run phase, not other phases.\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {TailTree extends undefined ? Node : TailTree}\n * Transformed tree.\n */\n runSync(tree, file) {\n /** @type {boolean} */\n let complete = false\n /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n let result\n\n this.run(tree, file, realDone)\n\n assertDone('runSync', 'run', complete)\n assert(result, 'we either bailed on an error or have a tree')\n return result\n\n /**\n * @type {RunCallback}\n */\n function realDone(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * Compile a syntax tree.\n *\n * > **Note**: `stringify` freezes the processor if not already *frozen*.\n *\n * > **Note**: `stringify` performs the stringify phase, not the run phase\n * > or other phases.\n *\n * @param {CompileTree extends undefined ? Node : CompileTree} tree\n * Tree to compile.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {CompileResult extends undefined ? Value : CompileResult}\n * Textual representation of the tree (see note).\n *\n * > **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you\u2019re using a compiler that doesn\u2019t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n stringify(tree, file) {\n this.freeze()\n const realFile = vfile(file)\n const compiler = this.compiler || this.Compiler\n assertCompiler('stringify', compiler)\n assertNode(tree)\n\n return compiler(tree, realFile)\n }\n\n /**\n * Configure the processor to use a plugin, a list of usable values, or a\n * preset.\n *\n * If the processor is already using a plugin, the previous plugin\n * configuration is changed based on the options that are passed in.\n * In other words, the plugin is not added a second time.\n *\n * > **Note**: `use` cannot be called on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * @example\n * There are many ways to pass plugins to `.use()`.\n * This example gives an overview:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * unified()\n * // Plugin with options:\n * .use(pluginA, {x: true, y: true})\n * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n * .use(pluginA, {y: false, z: true})\n * // Plugins:\n * .use([pluginB, pluginC])\n * // Two plugins, the second with options:\n * .use([pluginD, [pluginE, {}]])\n * // Preset with plugins and settings:\n * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n * // Settings only:\n * .use({settings: {position: false}})\n * ```\n *\n * @template {Array} [Parameters=[]]\n * @template {Node | string | undefined} [Input=undefined]\n * @template [Output=Input]\n *\n * @overload\n * @param {Preset | null | undefined} [preset]\n * @returns {Processor}\n *\n * @overload\n * @param {PluggableList} list\n * @returns {Processor}\n *\n * @overload\n * @param {Plugin} plugin\n * @param {...(Parameters | [boolean])} parameters\n * @returns {UsePlugin}\n *\n * @param {PluggableList | Plugin | Preset | null | undefined} value\n * Usable value.\n * @param {...unknown} parameters\n * Parameters, when a plugin is given as a usable value.\n * @returns {Processor}\n * Current processor.\n */\n use(value, ...parameters) {\n const attachers = this.attachers\n const namespace = this.namespace\n\n assertUnfrozen('use', this.frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, parameters)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n return this\n\n /**\n * @param {Pluggable} value\n * @returns {undefined}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value, [])\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...parameters] =\n /** @type {PluginTuple>} */ (value)\n addPlugin(plugin, parameters)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {undefined}\n */\n function addPreset(result) {\n if (!('plugins' in result) && !('settings' in result)) {\n throw new Error(\n 'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n )\n }\n\n addList(result.plugins)\n\n if (result.settings) {\n namespace.settings = extend(true, namespace.settings, result.settings)\n }\n }\n\n /**\n * @param {PluggableList | null | undefined} plugins\n * @returns {undefined}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {Array} parameters\n * @returns {undefined}\n */\n function addPlugin(plugin, parameters) {\n let index = -1\n let entryIndex = -1\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entryIndex = index\n break\n }\n }\n\n if (entryIndex === -1) {\n attachers.push([plugin, ...parameters])\n }\n // Only set if there was at least a `primary` value, otherwise we\u2019d change\n // `arguments.length`.\n else if (parameters.length > 0) {\n let [primary, ...rest] = parameters\n const currentPrimary = attachers[entryIndex][1]\n if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n primary = extend(true, currentPrimary, primary)\n }\n\n attachers[entryIndex] = [plugin, primary, ...rest]\n }\n }\n }\n}\n\n// Note: this returns a *callable* instance.\n// That\u2019s why it\u2019s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n * This example shows how a new processor can be created (from `remark`) and linked\n * to **stdin**(4) and **stdout**(4).\n *\n * ```js\n * import process from 'node:process'\n * import concatStream from 'concat-stream'\n * import {remark} from 'remark'\n *\n * process.stdin.pipe(\n * concatStream(function (buf) {\n * process.stdout.write(String(remark().processSync(buf)))\n * })\n * )\n * ```\n *\n * @returns\n * New *unfrozen* processor (`processor`).\n *\n * This processor is configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n", "export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n", "// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array) => void} Callback\n * Callback.\n *\n * @typedef {(...input: Array) => any} Middleware\n * Ware.\n *\n * @typedef Pipeline\n * Pipeline.\n * @property {Run} run\n * Run the pipeline.\n * @property {Use} use\n * Add middleware.\n *\n * @typedef {(...input: Array) => void} Run\n * Call all middleware.\n *\n * Calls `done` on completion with either an error or the output of the\n * last middleware.\n *\n * > \uD83D\uDC49 **Note**: as the length of input defines whether async functions get a\n * > `next` function,\n * > it\u2019s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n * Pipeline.\n */\nexport function trough() {\n /** @type {Array} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we\u2019re done.\n *\n * @param {Error | null | undefined} error\n * @param {Array} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n * returns a promise that is rejected,\n * or calls the given `done` function with an error,\n * `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n * that value is the main output value\n * * if `middleware` calls `done`,\n * all non-nullish values except for the first one (the error) overwrite the\n * output values\n *\n * @param {Middleware} middleware\n * Function to wrap.\n * @param {Callback} callback\n * Callback called with the output of `middleware`.\n * @returns {Run}\n * Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result && result.then && typeof result.then === 'function') {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n *\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n", "// A derivative work based on:\n// .\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node\u2019s internal `path` module:\n// .\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const minpath = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | null | undefined} [extname]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\n */\nfunction basename(path, extname) {\n if (extname !== undefined && typeof extname !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let seenNonSlash\n\n if (\n extname === undefined ||\n extname.length === 0 ||\n extname.length > path.length\n ) {\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (extname === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extnameIndex = extname.length - 1\n\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extnameIndex > -1) {\n // Try to match the explicit extension.\n if (path.codePointAt(index) === extname.codePointAt(extnameIndex--)) {\n if (extnameIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extnameIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.codePointAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.codePointAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.codePointAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array} segments\n * Path segments.\n * @returns {string}\n * File path.\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string | undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.codePointAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number | undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.codePointAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n result.codePointAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n", "// Somewhat based on:\n// .\n// But I don\u2019t think one tiny line of code can be copyrighted. \uD83D\uDE05\nexport const minproc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n", "/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it\u2019s a URL.\n */\n// From: \nexport function isUrl(fileUrlOrPath) {\n return Boolean(\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n 'href' in fileUrlOrPath &&\n fileUrlOrPath.href &&\n 'protocol' in fileUrlOrPath &&\n fileUrlOrPath.protocol &&\n // @ts-expect-error: indexing is fine.\n fileUrlOrPath.auth === undefined\n )\n}\n", "import {isUrl} from './minurl.shared.js'\n\nexport {isUrl} from './minurl.shared.js'\n\n// See: \n\n/**\n * @param {URL | string} path\n * File URL.\n * @returns {string}\n * File URL.\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.codePointAt(index) === 37 /* `%` */ &&\n pathname.codePointAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.codePointAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n", "/**\n * @import {Node, Point, Position} from 'unist'\n * @import {Options as MessageOptions} from 'vfile-message'\n * @import {Compatible, Data, Map, Options, Value} from 'vfile'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {minpath} from '#minpath'\nimport {minproc} from '#minproc'\nimport {urlToPath, isUrl} from '#minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n 'history',\n 'path',\n 'basename',\n 'stem',\n 'extname',\n 'dirname'\n])\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Uint8Array` \u2014 `{value: options}`\n * * `URL` \u2014 `{path: options}`\n * * `VFile` \u2014 shallow copies its data over to the new file\n * * `object` \u2014 all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (isUrl(value)) {\n options = {path: value}\n } else if (typeof value === 'string' || isUint8Array(value)) {\n options = {value}\n } else {\n options = value\n }\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n // Prevent calling `cwd` (which could be expensive) if it\u2019s not needed;\n // the empty string will be overridden in the next block.\n this.cwd = 'cwd' in options ? '' : minproc.cwd()\n\n /**\n * Place to store custom info (default: `{}`).\n *\n * It\u2019s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of file paths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array}\n */\n this.history = []\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array}\n */\n this.messages = []\n\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are \u201Cwell-known\u201D.\n // As in, used in several tools.\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const field = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n field in options &&\n options[field] !== undefined &&\n options[field] !== null\n ) {\n // @ts-expect-error: TS doesn\u2019t understand basic reality.\n this[field] = field === 'history' ? [...options[field]] : options[field]\n }\n }\n\n /** @type {string} */\n let field\n\n // Set non-path related properties.\n for (field in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(field)) {\n // @ts-expect-error: fine to set other things.\n this[field] = options[field]\n }\n }\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n *\n * @returns {string | undefined}\n * Basename.\n */\n get basename() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path)\n : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} basename\n * Basename.\n * @returns {undefined}\n * Nothing.\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = minpath.join(this.dirname || '', basename)\n }\n\n /**\n * Get the parent path (example: `'~'`).\n *\n * @returns {string | undefined}\n * Dirname.\n */\n get dirname() {\n return typeof this.path === 'string'\n ? minpath.dirname(this.path)\n : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there\u2019s no `path` yet.\n *\n * @param {string | undefined} dirname\n * Dirname.\n * @returns {undefined}\n * Nothing.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = minpath.join(dirname || '', this.basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n *\n * @returns {string | undefined}\n * Extname.\n */\n get extname() {\n return typeof this.path === 'string'\n ? minpath.extname(this.path)\n : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there\u2019s no `path` yet.\n *\n * @param {string | undefined} extname\n * Extname.\n * @returns {undefined}\n * Nothing.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.codePointAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = minpath.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n * Path.\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {URL | string} path\n * Path.\n * @returns {undefined}\n * Nothing.\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n *\n * @returns {string | undefined}\n * Stem.\n */\n get stem() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} stem\n * Stem.\n * @returns {undefined}\n * Nothing.\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = minpath.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n // Normal prototypal methods.\n /**\n * Create a fatal message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `true` (error; file not usable)\n * and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > \uD83E\uDEA6 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Never.\n * @throws {VFileMessage}\n * Message.\n */\n fail(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = true\n\n throw message\n }\n\n /**\n * Create an info message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `undefined` (info; change\n * likely not needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > \uD83E\uDEA6 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = undefined\n\n return message\n }\n\n /**\n * Create a message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `false` (warning; change may be\n * needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > \uD83E\uDEA6 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(causeOrReason, optionsOrParentOrPlace, origin) {\n const message = new VFileMessage(\n // @ts-expect-error: the overloads are fine.\n causeOrReason,\n optionsOrParentOrPlace,\n origin\n )\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Serialize the file.\n *\n * > **Note**: which encodings are supported depends on the engine.\n * > For info on Node.js, see:\n * > .\n *\n * @param {string | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it\u2019s a `Uint8Array`\n * (default: `'utf-8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n if (this.value === undefined) {\n return ''\n }\n\n if (typeof this.value === 'string') {\n return this.value\n }\n\n const decoder = new TextDecoder(encoding || undefined)\n return decoder.decode(this.value)\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {undefined}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(minpath.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + minpath.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n", "export const CallableInstance =\n /**\n * @type {new , Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n */\n (\n /** @type {unknown} */\n (\n /**\n * @this {Function}\n * @param {string | symbol} property\n * @returns {(...parameters: Array) => unknown}\n */\n function (property) {\n const self = this\n const constr = self.constructor\n const proto = /** @type {Record} */ (\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n constr.prototype\n )\n const value = proto[property]\n /** @type {(...parameters: Array) => unknown} */\n const apply = function () {\n return value.apply(apply, arguments)\n }\n\n Object.setPrototypeOf(apply, proto)\n\n // Not needed for us in `unified`: we only call this on the `copy`\n // function,\n // and we don't need to add its fields (`length`, `name`)\n // over.\n // See also: GH-246.\n // const names = Object.getOwnPropertyNames(value)\n //\n // for (const p of names) {\n // const descriptor = Object.getOwnPropertyDescriptor(value, p)\n // if (descriptor) Object.defineProperty(apply, p, descriptor)\n // }\n\n return apply\n }\n )\n )\n", "// Copyright (c) 2025 Eclipse Foundation.\n// SPDX-License-Identifier: MIT\n\nimport ReactMarkdown from 'react-markdown'\n\ninterface RiskAssessmentMarkdownProps {\n markdownText: string\n}\n\nexport default function RiskAssessmentMarkdown({ markdownText }: RiskAssessmentMarkdownProps) {\n return (\n (\n

\n {children}\n

\n ),\n h2: ({ children }) => (\n

\n {children}\n

\n ),\n h3: ({ children }) => (\n

\n {children}\n

\n ),\n p: ({ children }) => (\n

{children}

\n ),\n ul: ({ children }) => (\n
    {children}
\n ),\n li: ({ children }) =>
  • {children}
  • ,\n strong: ({ children }) => (\n {children}\n ),\n }}\n >\n {markdownText || ''}\n \n )\n}\n", "// Copyright (c) 2025 Eclipse Foundation.\n// SPDX-License-Identifier: MIT\n\nimport React, { useState } from 'react'\nimport CustomDialog from './CustomDialog'\nimport ASILSelect from './ASILSelect'\nimport RiskAssessmentEditor from './RiskAssessmentEditor'\nimport { TbPlus, TbTrash, TbChevronRight } from 'react-icons/tb'\nimport type { ASILLevel, FlowItemData } from '../types/flow.type'\n\nexport const defaultRiskAssessmentPlaceholder = `# Hazards\n- \n\n# Mitigation\n- \n\n# Risk Classification\n- \n\n# ASIL Rating\n- \n\n# Safety Goals\n- `\n\nconst parseNonJsonFlowItem = (value: string): FlowItemData => {\n const ratingRegex = /<(?:ASIL-)?(A|B|C|D|QM)>/\n const match = value.match(ratingRegex)\n let extractedRating: ASILLevel = 'QM'\n let description = value\n if (match) {\n extractedRating = match[1] as ASILLevel\n description = value.replace(ratingRegex, '').trim()\n }\n return {\n type: '',\n component: '',\n description,\n preAsilLevel: extractedRating,\n postAsilLevel: 'QM',\n riskAssessment: defaultRiskAssessmentPlaceholder,\n riskAssessmentEvaluation: '',\n approvedBy: '',\n approvedAt: '',\n generatedAt: '',\n }\n}\n\ninterface FlowItemEditorProps {\n value: string\n onChange: (value: string) => void\n children?: React.ReactNode\n open?: boolean\n onOpenChange?: (value: boolean) => void\n isSaveMode?: boolean\n}\n\nexport default function FlowItemEditor({\n value,\n onChange,\n children,\n open,\n onOpenChange,\n isSaveMode,\n}: FlowItemEditorProps) {\n const [flowItemData, setFlowItemData] = useState(() => {\n try {\n const parsed = JSON.parse(value)\n const newPreAsilLevel = (parsed.preAsilLevel || parsed.asilLevel || 'QM') as ASILLevel\n const newPostAsilLevel = (parsed.postAsilLevel || 'QM') as ASILLevel\n return {\n type: parsed.type || '',\n component: parsed.component || '',\n description: parsed.description || '',\n preAsilLevel: newPreAsilLevel,\n postAsilLevel: newPostAsilLevel,\n riskAssessment:\n parsed.riskAssessment?.trim() ? parsed.riskAssessment : defaultRiskAssessmentPlaceholder,\n riskAssessmentEvaluation: parsed.riskAssessmentEvaluation || '',\n approvedBy: parsed.approvedBy || '',\n approvedAt: parsed.approvedAt || '',\n ...parsed,\n }\n } catch {\n return parseNonJsonFlowItem(value)\n }\n })\n\n const mandatoryKeys = [\n 'type', 'component', 'description', 'preAsilLevel', 'postAsilLevel',\n 'riskAssessment', 'approvedBy', 'approvedAt', 'generatedAt', 'riskAssessmentEvaluation',\n ]\n\n const handleInputChange = (name: keyof FlowItemData, value: string) => {\n setFlowItemData((prev) => ({ ...prev, [name]: value }))\n }\n\n const handleSubmit = (onClose: () => void) => {\n onChange(JSON.stringify(flowItemData))\n onOpenChange?.(false)\n onClose()\n }\n\n const handleCancel = (onClose: () => void) => {\n onOpenChange?.(false)\n onClose()\n }\n\n const handleAddCustomAttribute = () => {\n const attributeName = prompt('Enter custom attribute name:')\n if (attributeName && !flowItemData.hasOwnProperty(attributeName)) {\n setFlowItemData((prev) => ({ ...prev, [attributeName]: '' }))\n }\n }\n\n const handleRemoveCustomAttribute = (attributeName: string) => {\n setFlowItemData((prev) => {\n const newData = { ...prev }\n delete newData[attributeName]\n return newData\n })\n }\n\n const customAttributes = Object.keys(flowItemData).filter(\n (key) => !mandatoryKeys.includes(key),\n )\n\n return (\n \n {({ onClose }) => (\n
    \n
    \n
    \n
    \n \n handleInputChange('type', e.target.value)}\n className=\"h-8 text-xs border border-da-gray-light rounded px-2\"\n />\n
    \n
    \n \n handleInputChange('component', e.target.value)}\n className=\"h-8 text-xs border border-da-gray-light rounded px-2\"\n />\n
    \n
    \n \n handleInputChange('description', e.target.value)}\n className=\"h-28 text-xs border border-da-gray-light rounded px-2 py-1\"\n />\n
    \n
    \n
    \n \n handleInputChange('preAsilLevel', v)}\n />\n
    \n \n
    \n \n handleInputChange('postAsilLevel', v)}\n dropdownAlign=\"right\"\n />\n
    \n
    \n {customAttributes.map((key) => (\n
    \n
    \n \n handleRemoveCustomAttribute(key)}\n className=\"text-da-gray-medium hover:opacity-80\"\n >\n \n \n
    \n handleInputChange(key as keyof FlowItemData, e.target.value)}\n className=\"h-8 text-xs border border-da-gray-light rounded px-2\"\n />\n
    \n ))}\n
    \n \n Add Custom Attribute\n \n
    \n
    \n
    \n setFlowItemData((prev) => ({ ...prev, ...updates }))}\n />\n
    \n
    \n
    \n
    \n
    \n handleCancel(onClose)}\n className=\"btn-outline\"\n >\n Cancel\n \n handleSubmit(onClose)}\n className=\"btn-primary\"\n >\n {isSaveMode ? 'Save' : 'Confirm Change'}\n \n
    \n
    \n )}\n \n )\n}\n", "// Copyright (c) 2025 Eclipse Foundation.\n// SPDX-License-Identifier: MIT\n\nimport React, { useState } from 'react'\nimport { cn } from '../lib/utils'\n\ninterface CustomDialogProps {\n children: React.ReactNode | ((ctx: { onClose: () => void }) => React.ReactNode)\n dialogTitle?: React.ReactNode\n trigger?: React.ReactNode\n className?: string\n open?: boolean\n onOpenChange?: (open: boolean) => void\n showCloseButton?: boolean\n}\n\nexport default function CustomDialog({\n children,\n dialogTitle,\n trigger,\n className,\n open: controlledOpen,\n onOpenChange,\n showCloseButton = true,\n}: CustomDialogProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false)\n const isOpen = controlledOpen ?? uncontrolledOpen\n const handleOpenChange = onOpenChange ?? setUncontrolledOpen\n\n return (\n <>\n {trigger && (\n
    handleOpenChange(true)} style={{ cursor: 'pointer' }}>\n {trigger}\n
    \n )}\n {isOpen && (\n handleOpenChange(false)}\n >\n \n e.stopPropagation()}\n >\n {dialogTitle && (\n
    \n

    \n {dialogTitle}\n

    \n
    \n )}\n
    \n {typeof children === 'function'\n ? children({ onClose: () => handleOpenChange(false) })\n : children}\n
    \n {showCloseButton && (\n
    \n handleOpenChange(false)}\n className=\"btn-outline\"\n >\n Close\n \n
    \n )}\n
    \n
    \n )}\n \n )\n}\n", "// Copyright (c) 2025 Eclipse Foundation.\n// SPDX-License-Identifier: MIT\n\nimport React, { useState, useRef, useEffect } from 'react'\nimport { TbChevronDown, TbCheck } from 'react-icons/tb'\nimport { ASILBadge } from './ASILBadge'\nimport type { ASILLevel } from '../types/flow.type'\nimport { cn } from '../lib/utils'\n\ninterface ASILSelectProps {\n value: ASILLevel\n onChange: (value: ASILLevel) => void\n className?: string\n /** 'left' = dropdown aligns to left edge, 'right' = aligns to right edge (for Post-Mitigation to avoid clipping) */\n dropdownAlign?: 'left' | 'right'\n}\n\nconst asilOptions: { value: ASILLevel; description: string }[] = [\n { value: 'QM', description: 'Quality management, no safety impact' },\n { value: 'A', description: 'Lowest safety risk, minor injuries possible' },\n { value: 'B', description: 'Moderate risk, severe injuries unlikely' },\n { value: 'C', description: 'High risk, life-threatening injuries possible' },\n { value: 'D', description: 'Highest risk, potentially fatal accidents' },\n]\n\nexport default function ASILSelect({ value, onChange, className, dropdownAlign = 'left' }: ASILSelectProps) {\n const [open, setOpen] = useState(false)\n const ref = useRef(null)\n\n const current = asilOptions.find((opt) => opt.value === value) || asilOptions[0]\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false)\n }\n if (open) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [open])\n\n return (\n
    \n setOpen(!open)}\n className=\"h-[33px] w-full min-w-[100px] rounded-md border border-transparent bg-transparent shadow-none px-3 outline-none focus:ring-1 focus:ring-da-primary-500 flex items-center justify-between gap-2 text-xs\"\n >\n \n \n \n {open && (\n \n {asilOptions.map((opt) => (\n {\n onChange(opt.value)\n setOpen(false)\n }}\n className={cn(\n 'w-full flex items-center gap-2 px-4 py-2.5 text-left hover:bg-gray-100 text-xs relative',\n opt.value === value && 'bg-da-primary-100',\n )}\n >\n \n {opt.description}\n {opt.value === value && (\n \n )}\n \n ))}\n
    \n )}\n
    \n )\n}\n", "// Copyright (c) 2025 Eclipse Foundation.\n// SPDX-License-Identifier: MIT\n\nimport React, { useState, useEffect } from 'react'\nimport {\n TbLoader2,\n TbEdit,\n TbTextScan2,\n TbCheck,\n TbX,\n TbCalendarEvent,\n} from 'react-icons/tb'\nimport {\n riskAssessmentGenerationPrompt,\n reEvaluationRiskAssessmentPrompt,\n} from './FlowPromptInventory'\nimport RiskAssessmentMarkdown from './RiskAssessmentMarkdown'\nimport type { FlowItemData } from '../types/flow.type'\nimport type { ASILLevel } from '../types/flow.type'\n\ninterface RiskAssessmentEditorProps {\n flowItemData: FlowItemData\n updateFlowItemData: (updates: Partial) => void\n currentUser?: { name: string }\n}\n\nexport default function RiskAssessmentEditor({\n flowItemData,\n updateFlowItemData,\n currentUser,\n}: RiskAssessmentEditorProps) {\n const [activeTab, setActiveTab] = useState<'riskAssessment' | 'feedback'>('riskAssessment')\n const [isEditingMarkdown, setIsEditingMarkdown] = useState(false)\n const [isEvaluating, setIsEvaluating] = useState(false)\n const [evaluationTime, setEvaluationTime] = useState(0)\n const [evaluationIntervalId, setEvaluationIntervalId] = useState | null>(null)\n const [isRiskAssessmentEvaluated, setIsRiskAssessmentEvaluated] = useState(false)\n const [isFeedbackEvaluated, setIsFeedbackEvaluated] = useState(false)\n const [backupRiskAssessment, setBackupRiskAssessment] = useState(flowItemData.riskAssessment || '')\n\n useEffect(() => {\n setIsRiskAssessmentEvaluated(false)\n setIsFeedbackEvaluated(false)\n }, [flowItemData.description])\n\n const generateContent = async () => {\n let systemPrompt: string\n let message: string\n if (activeTab === 'riskAssessment') {\n systemPrompt = riskAssessmentGenerationPrompt\n message = `Generate risk assessment for action \"${flowItemData.description}\" ${new Date().toLocaleString()}`\n setBackupRiskAssessment(flowItemData.riskAssessment || '')\n } else {\n systemPrompt = reEvaluationRiskAssessmentPrompt\n message = `Generate feedback for risk assessment based on action \"${flowItemData.description}\" and previous risk assessment: ${flowItemData.riskAssessment || ''} ${new Date().toLocaleString()}`\n }\n\n setIsEvaluating(true)\n setEvaluationTime(0)\n const intervalId = setInterval(() => {\n setEvaluationTime((prev) => prev + 0.1)\n }, 100)\n setEvaluationIntervalId(intervalId)\n let intervalIdRef = intervalId\n\n try {\n const response = await fetch('https://digitalauto-ai.com/chat', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ systemMessage: systemPrompt, message }),\n })\n const data = await response.json()\n\n if (activeTab === 'riskAssessment') {\n const preAsilMatch = data.content?.match(/(.*?)<\\/preAsilLevel>/s)\n const postAsilMatch = data.content?.match(/(.*?)<\\/postAsilLevel>/s)\n const newPreAsilLevel = (preAsilMatch ? preAsilMatch[1].trim() : flowItemData.preAsilLevel) as ASILLevel\n const newPostAsilLevel = (postAsilMatch ? postAsilMatch[1].trim() : flowItemData.postAsilLevel) as ASILLevel\n const cleanedContent = (data.content || '')\n .replace(/.*?<\\/preAsilLevel>/s, '')\n .replace(/.*?<\\/postAsilLevel>/s, '')\n .replace(/<\\/?risk_assessment>/g, '')\n .trim()\n\n updateFlowItemData({\n riskAssessment: cleanedContent,\n preAsilLevel: newPreAsilLevel,\n postAsilLevel: newPostAsilLevel,\n approvedBy: '',\n approvedAt: '',\n })\n setIsRiskAssessmentEvaluated(true)\n } else {\n const feedbackMatch = data.content?.match(/(.*?)<\\/risk_assessment_feedback>/s)\n const cleanedFeedback = feedbackMatch ? feedbackMatch[1].trim() : (data.content || '').trim()\n updateFlowItemData({ riskAssessmentEvaluation: cleanedFeedback })\n setIsFeedbackEvaluated(true)\n }\n } catch (error) {\n console.error('Error generating content:', error)\n } finally {\n clearInterval(intervalIdRef)\n setEvaluationIntervalId(null)\n setIsEvaluating(false)\n }\n }\n\n const handleApprove = () => {\n if (!currentUser) return\n updateFlowItemData({\n approvedBy: currentUser.name,\n approvedAt: new Date().toISOString(),\n })\n setBackupRiskAssessment(flowItemData.riskAssessment || '')\n setIsRiskAssessmentEvaluated(false)\n }\n\n const handleReject = () => {\n updateFlowItemData({\n riskAssessment: backupRiskAssessment,\n approvedBy: '',\n approvedAt: '',\n })\n setIsRiskAssessmentEvaluated(false)\n }\n\n return (\n
    \n
    \n
    \n setActiveTab('riskAssessment')}\n className={`font-medium text-xs pb-0.5 border-b-2 ${\n activeTab === 'riskAssessment'\n ? 'text-da-primary-500 border-da-primary-500'\n : 'text-da-gray-medium border-transparent'\n }`}\n >\n Risk Assessment\n \n setActiveTab('feedback')}\n className={`font-medium text-xs pb-0.5 border-b-2 ${\n activeTab === 'feedback'\n ? 'text-da-primary-500 border-da-primary-500'\n : 'text-da-gray-medium border-transparent'\n }`}\n >\n Feedback\n \n
    \n\n
    \n {!isEvaluating && activeTab === 'riskAssessment' && (\n setIsEditingMarkdown((prev) => !prev)}\n className=\"flex items-center gap-1.5 text-xs text-da-primary-500 hover:opacity-80\"\n >\n \n {isEditingMarkdown ? 'Preview' : 'Edit Assessment'}\n \n )}\n {isEvaluating ? (\n \n ) : activeTab === 'riskAssessment' && isRiskAssessmentEvaluated ? (\n
    \n \n Reject\n \n \n Approve\n \n
    \n ) : activeTab === 'feedback' && isFeedbackEvaluated ? (\n \n Evaluate with AI\n \n ) : (\n \n \n {activeTab === 'riskAssessment' ? 'Generate with AI' : 'Evaluate with AI'}\n \n )}\n
    \n
    \n\n
    \n
    \n {activeTab === 'riskAssessment' ? (\n isEditingMarkdown ? (\n updateFlowItemData({ riskAssessment: e.target.value })}\n />\n ) : (\n \n )\n ) : (\n \n )}\n
    \n {activeTab === 'riskAssessment' && flowItemData.approvedBy && flowItemData.approvedAt ? (\n
    \n
    \n
    \n \n
    \n Approved by {flowItemData.approvedBy}\n
    \n
    \n
    \n \n
    \n \n {new Date(flowItemData.approvedAt).toLocaleString()}\n \n
    \n
    \n ) : null}\n
    \n
    \n )\n}\n", "export const riskAssessmentGenerationPrompt = `You are a Risk Assessment and ASIL Generator, focusing on automotive safety in alignment with ISO 26262 standards. Your task is to create a new risk assessment when the user requests it (e.g., \"Generate Risk Assessment for action X\") and no meaningful existing risk assessment data is provided.\n\nYour final output **must** strictly follow this XML structure (and nothing else):\n\n[Markdown content containing the risk assessment, organized into sections as described below]\n\n[A | B | C | D | QM]\n[A | B | C | D | QM]\n\nWithin the block, include the following sections in the exact order and format:\n# Hazards:\n- List potential hazards as bullet points (each starting with \"-\"). Use **bold** text to emphasize key terms when appropriate.\n# Mitigation:\n- Detail mitigation strategies as bullet points (each starting with \"-\"). Use **bold** text to highlight the main ideas.\n# Risk Classification:\n- Provide bullet points for **Severity (S0-S3)**, **Exposure (E0-E4)**, and **Controllability (C0-C3)**.\n# ASIL Rating:\n- Include two sub-sections:\n- **Pre Mitigation:** State the unmitigated ASIL level (A, B, C, D, or QM) along with supporting explanations.\n- **Post Mitigation:** State the mitigated ASIL level (A, B, C, D, or QM) along with supporting explanations.\n# Safety Goals:\n- List safety goals as bullet points, using **bold** text where appropriate.\n\nAt the end of the content, include:\n### Generated by AI on [timestamp in DD/MM/YYYY HH:MM:SS]\nEnsure that the provided is converted to the specified format.\n\nGuidelines:\n- The markdown must have the headings exactly as shown (e.g., \"# Hazards:\" on its own line, followed by bullet points).\n- The output must adhere exactly to the XML structure with no extra commentary or text outside of it.\n- Populate and with the corresponding ASIL levels (A, B, C, D, or QM) without the \"ASIL-\" prefix.\n- Your analysis must reflect realistic automotive safety judgments aligned with ISO 26262.\n`\n\nexport const reEvaluationRiskAssessmentPrompt = `You are a Risk Assessment and ASIL Generator focusing on automotive safety in alignment with ISO 26262 standards. When provided with a containing meaningful data formatted in a strict pattern\u2014each category labeled with a '#' (e.g., \"# Hazards:\", \"# Mitigation:\", \"# Risk Classification:\", \"# ASIL Rating:\", \"# Safety Goals:\") followed by bullet points\u2014you must re-evaluate it and provide **only inline recommendations** without repeating the original content.\n\nYour output must consist exclusively of a single XML block following this exact structure:\n\n\n## AI Recommendation:\n[For each category (Hazards, Mitigation, Risk Classification, ASIL Rating, Safety Goals), provide your feedback using the following Markdown format. **Each category must be output in two distinct lines:** \n1. A header line with the category name, formatted as: \n # [Category]\n2. One or more bullet points on the next line(s) with your feedback, for example:\n - No updates recommended. Reason\n or\n - Consider revising. Reason\n\nThe feedback should **not** repeat the category name in the bullet points since it is already specified in the header.]\n### Evaluated by AI on [timestamp in DD/MM/YYYY HH:MM:SS]\n\n\nGuidelines:\n- The output is strictly structured: each category header (e.g. \"# Hazards:\") must appear on its own line, immediately followed by one or more bullet points (e.g. \"- No updates recommended. Reason\").\n- Do not include or repeat any of the original text; only provide your inline feedback.\n- If a section is adequate, confirm its validity and explain why it is adequate rather than forcing unnecessary changes.\n- Use **bold**, Markdown formatting, and arrows (\u2192) to emphasize any recommended changes.\n- Convert the provided to the format DD/MM/YYYY HH:MM:SS in your output.\n- Your recommendations must reflect realistic, logical, and ISO 26262-compliant automotive safety practices.\n\nThis refined prompt ensures that your evaluation is clear, succinct, and strictly limited to inline recommendations within the specified XML format.`\n", "// Copyright (c) 2025 Eclipse Foundation.\n// SPDX-License-Identifier: MIT\n\nimport React, { useState, useRef, useEffect } from 'react'\nimport {\n TbArrowLeft,\n TbArrowRight,\n TbCornerDownLeft,\n TbCornerDownRight,\n TbArrowsLeftRight,\n TbArrowsRightLeft,\n TbX,\n} from 'react-icons/tb'\nimport type { SignalFlow, Direction, Interface } from '../types/flow.type'\n\ninterface SystemInterfaceData {\n endpointUrl?: string\n name?: string\n [key: string]: string | undefined\n}\n\nconst interfaceTypeLabels: Record = {\n p2c: 'Phone to Cloud',\n v2c: 'Vehicle to Cloud',\n s2s: 'Signal to Service',\n s2e: 'Signal to Embedded',\n}\n\nconst formatFieldLabel = (key: string): string =>\n key.replace(/([A-Z])/g, ' $1').replace(/^./, (str) => str.toUpperCase())\n\nconst DirectionArrow = ({ direction }: { direction: Direction }) => {\n switch (direction) {\n case 'left':\n return (\n \n )\n case 'right':\n return (\n \n )\n case 'bi-direction':\n return (\n \n )\n case 'reverse-bi-direction':\n return (\n \n )\n case 'down-right':\n return (\n \n )\n case 'down-left':\n return (\n \n )\n default:\n return (\n \n )\n }\n}\n\ninterface FlowInterfaceProps {\n flow: SignalFlow | null\n interfaceType: Interface\n modelId?: string\n}\n\nexport default function FlowInterface({ flow, interfaceType, modelId }: FlowInterfaceProps) {\n const [open, setOpen] = useState(false)\n const ref = useRef(null)\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false)\n }\n if (open) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [open])\n\n if (!flow) return
    \n\n const isJsonString = (str: string) => {\n try {\n JSON.parse(str)\n return true\n } catch {\n return false\n }\n }\n\n const parseInterfaceData = (input: string): { displayText: string; data: SystemInterfaceData | null } => {\n if (isJsonString(input)) {\n const jsonData = JSON.parse(input) as SystemInterfaceData\n return {\n displayText: jsonData.endpointUrl || jsonData.name || input,\n data: jsonData,\n }\n }\n return { displayText: input, data: null }\n }\n\n const { displayText, data } = parseInterfaceData(flow.signal)\n const getTooltipContent = () =>\n data ? (data.endpointUrl || data.name || displayText) : displayText\n\n return (\n
    \n {flow.signal && (\n <>\n setOpen(!open)}\n className=\"flex items-center justify-center\"\n >\n \n
    \n\n {open && (\n e.stopPropagation()}\n >\n
    \n
    System Interface
    \n setOpen(false)}\n className=\"p-0.5 rounded hover:opacity-80\"\n >\n \n \n
    \n
    \n
    \n Type:\n {interfaceTypeLabels[interfaceType]}\n
    \n {data ? (\n Object.entries(data)\n .filter(([key]) => key !== '__typename')\n .map(([key, value]) => {\n if (!value) return null\n const isValueLink = value.startsWith('https://')\n const isValueVehicle = value.startsWith('Vehicle.')\n const linkHref = isValueVehicle && modelId\n ? `${window.location.origin}/model/${modelId}/api/${value}`\n : isValueLink\n ? value\n : ''\n return (\n
    \n {formatFieldLabel(key)}:\n {linkHref ? (\n \n {value}\n \n ) : (\n {value}\n )}\n
    \n )\n })\n ) : (\n <>\n
    \n Name:\n {displayText.startsWith('Vehicle.') && modelId ? (\n \n {displayText}\n \n ) : displayText.startsWith('https://') ? (\n \n {displayText}\n \n ) : (\n {displayText}\n )}\n
    \n
    \n Direction:\n {flow.direction.charAt(0).toUpperCase() + flow.direction.slice(1)}\n
    \n \n )}\n
    \n
    \n )}\n \n )}\n
    \n )\n}\n", "// Copyright (c) 2025 Eclipse Foundation.\n// SPDX-License-Identifier: MIT\n\nimport React, { useEffect, useState } from 'react'\nimport { TbPlus, TbTrash, TbChevronCompactRight } from 'react-icons/tb'\nimport { cn } from '../lib/utils'\nimport type { FlowStep, SignalFlow } from '../types/flow.type'\nimport FlowItemEditor from './FlowItemEditor'\nimport FlowDirectionSelector from './FlowDirectionSelector'\nimport {\n FLOW_CELLS,\n getNestedValue,\n setNestedValue,\n headerGroups,\n createEmptyFlow,\n} from './flow.utils'\n\ninterface SignalFlowEditorProps {\n flow: SignalFlow | null\n onChange: (flow: SignalFlow | null) => void\n}\n\nconst SignalFlowEditor = ({ flow, onChange }: SignalFlowEditorProps) => {\n const currentFlow = flow || { direction: 'left' as const, signal: '' }\n return (\n
    \n onChange({ ...currentFlow, direction })}\n />\n onChange({ ...currentFlow, signal: e.target.value })}\n className=\"w-full text-xs font-medium rounded-md h-9 border px-2 focus:outline-none focus:ring-1 focus:ring-da-primary-500\"\n placeholder=\"Description\"\n />\n
    \n )\n}\n\ninterface DaFlowEditorProps {\n initialData: FlowStep[]\n onUpdate: (data: string) => void\n}\n\nexport default function DaFlowEditor({ initialData, onUpdate }: DaFlowEditorProps) {\n const [data, setData] = useState(initialData)\n\n const addFlowToStep = (stepIndex: number) => {\n const newData = [...data]\n newData[stepIndex].flows.push(createEmptyFlow())\n setData(newData)\n }\n\n const addStep = () => {\n setData([\n ...data,\n { title: 'New Step', flows: [createEmptyFlow()] },\n ])\n }\n\n const isLastFlowInStep = (stepIndex: number, flowIndex: number) =>\n data[stepIndex].flows.length === 1\n\n const updateFlow = (\n stepIndex: number,\n flowIndex: number,\n path: string[],\n value: any,\n ) => {\n const newData = [...data]\n newData[stepIndex].flows[flowIndex] = setNestedValue(\n newData[stepIndex].flows[flowIndex],\n path,\n value,\n )\n setData(newData)\n }\n\n const deleteFlow = (stepIndex: number, flowIndex: number) => {\n const newData = [...data]\n if (isLastFlowInStep(stepIndex, flowIndex)) {\n newData[stepIndex].flows[flowIndex] = createEmptyFlow()\n } else {\n newData[stepIndex].flows.splice(flowIndex, 1)\n }\n setData(newData)\n }\n\n const updateStepTitle = (stepIndex: number, title: string) => {\n const newData = [...data]\n newData[stepIndex] = { ...newData[stepIndex], title }\n setData(newData)\n }\n\n useEffect(() => {\n const cleanedData = data.filter((step) => step.flows.length > 0)\n onUpdate(JSON.stringify(cleanedData))\n }, [data, onUpdate])\n\n useEffect(() => {\n if (initialData.length === 0) addStep()\n }, [])\n\n return (\n
    \n
    \n \n {FLOW_CELLS.map((_, i) => (\n \n ))}\n \n \n \n {headerGroups.map((group, idx) => (\n \n {group.label}\n \n ))}\n \n \n {FLOW_CELLS.map((cell) => (\n \n ))}\n \n \n \n \n \n {data.map((step, stepIndex) => (\n \n \n \n \n updateStepTitle(stepIndex, e.target.value)}\n className=\"step-title-input w-full bg-transparent text-white placeholder-white/70 font-semibold text-xs border-none focus:outline-none\"\n placeholder=\"Step name\"\n />\n \n \n \n {step.flows.map((flow, flowIndex) => (\n \n {FLOW_CELLS.map((cell, cellIndex) => (\n \n {cell.isSignalFlow ? (\n \n updateFlow(stepIndex, flowIndex, cell.path, newFlow)\n }\n />\n ) : (\n \n updateFlow(stepIndex, flowIndex, cell.path, value)\n }\n >\n
    \n
    \n {(() => {\n const text = getNestedValue(flow, cell.path)\n try {\n const parsed = JSON.parse(text)\n return parsed.description || text\n } catch {\n return text\n }\n })()}\n
    \n
    \n \n )}\n {cellIndex === FLOW_CELLS.length - 1 && (\n deleteFlow(stepIndex, flowIndex)}\n title=\"Delete flow\"\n >\n \n \n )}\n \n ))}\n
    \n ))}\n \n \n addFlowToStep(stepIndex)}\n className=\"w-full flex items-center justify-center gap-2 px-2 py-1.5 text-sm border border-dashed rounded border-da-primary-500 hover:bg-da-primary-100\"\n >\n Add Flow\n \n \n \n \n ))}\n \n \n \n \n
    \n {cell.title}\n
    \n
    \n \n Add Step\n \n
    \n \n )\n}\n", "// Copyright (c) 2025 Eclipse Foundation.\n// SPDX-License-Identifier: MIT\n\nimport React, { useState, useRef, useEffect } from 'react'\nimport {\n TbArrowLeft,\n TbArrowRight,\n TbArrowsLeftRight,\n TbCornerDownLeft,\n TbCornerDownRight,\n TbArrowsRightLeft,\n TbChevronDown,\n} from 'react-icons/tb'\nimport type { Direction } from '../types/flow.type'\n\ninterface FlowDirectionSelectorProps {\n value: Direction\n onChange: (value: Direction) => void\n}\n\nconst directions: { value: Direction; icon: React.ReactElement }[] = [\n { value: 'left', icon: },\n { value: 'right', icon: },\n { value: 'bi-direction', icon: },\n { value: 'reverse-bi-direction', icon: },\n { value: 'down-left', icon: },\n { value: 'down-right', icon: },\n]\n\nexport default function FlowDirectionSelector({ value, onChange }: FlowDirectionSelectorProps) {\n const [open, setOpen] = useState(false)\n const ref = useRef(null)\n\n const current = directions.find((d) => d.value === value) || directions[0]\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false)\n }\n if (open) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [open])\n\n return (\n
    \n setOpen(!open)}\n className=\"h-9 rounded-md w-full text-xs font-medium border px-2 outline-none focus:ring-1 focus:ring-da-primary-500 flex items-center justify-center gap-2 bg-white\"\n >\n {current.icon}\n \n \n {open && (\n
    \n {directions.map((d) => (\n {\n onChange(d.value)\n setOpen(false)\n }}\n className=\"w-full flex items-center justify-center py-2 hover:bg-da-primary-100 text-da-primary-500\"\n >\n {d.icon}\n \n ))}\n
    \n )}\n
    \n )\n}\n", "// Copyright (c) 2025 Eclipse Foundation.\n// SPDX-License-Identifier: MIT\n\nexport interface FlowCell {\n key: string\n title: string\n tooltip?: string\n isSignalFlow?: boolean\n path: string[]\n}\n\nexport const FLOW_CELLS: FlowCell[] = [\n { key: 'smartPhone', title: 'Smart Phone', path: ['offBoard', 'smartPhone'] },\n { key: 'p2c', title: 'p2c', tooltip: 'Phone to Cloud', isSignalFlow: true, path: ['offBoard', 'p2c'] },\n { key: 'cloud', title: 'Cloud', path: ['offBoard', 'cloud'] },\n { key: 'v2c', title: 'v2c', tooltip: 'Vehicle to Cloud', isSignalFlow: true, path: ['v2c'] },\n { key: 'sdvRuntime', title: 'SDV Runtime', path: ['onBoard', 'sdvRuntime'] },\n { key: 's2s', title: 's2s', tooltip: 'System to System', isSignalFlow: true, path: ['onBoard', 's2s'] },\n { key: 'embedded', title: 'Embedded', path: ['onBoard', 'embedded'] },\n { key: 's2e', title: 's2e', tooltip: 'System to ECU', isSignalFlow: true, path: ['onBoard', 's2e'] },\n { key: 'sensors', title: 'Sensors/Actuators', path: ['onBoard', 'sensors'] },\n]\n\nexport const headerGroups = [\n { board: 'offBoard', label: 'Off-board', cells: FLOW_CELLS.filter((c) => c.path[0] === 'offBoard') },\n { board: 'v2c', label: '', cells: FLOW_CELLS.filter((c) => c.path[0] === 'v2c') },\n { board: 'onBoard', label: 'On-board', cells: FLOW_CELLS.filter((c) => c.path[0] === 'onBoard') },\n]\n\nexport const getNestedValue = (obj: any, path: string[]) =>\n path.reduce((acc, key) => acc?.[key], obj)\n\nexport const setNestedValue = (obj: any, path: string[], value: any) => {\n const newObj = { ...obj }\n let current = newObj\n for (let i = 0; i < path.length - 1; i++) {\n current[path[i]] = { ...current[path[i]] }\n current = current[path[i]]\n }\n current[path[path.length - 1]] = value\n return newObj\n}\n\nexport const createEmptyFlow = () => ({\n offBoard: {\n smartPhone: '',\n p2c: null,\n cloud: '',\n },\n v2c: null,\n onBoard: {\n sdvRuntime: '',\n s2s: null,\n embedded: '',\n s2e: null,\n sensors: '',\n },\n})\n"], + "mappings": "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", + "names": ["index", "position", "start", "node", "whitespace", "re", "isArray", "isPlainObject", "setProperty", "getProperty", "name", "extend", "React", "import_react", "import_react", "React", "r", "node", "React", "import_react", "name", "re", "space", "space", "definition", "space", "index", "definition", "html", "svg", "stringify", "point", "node", "start", "position", "point", "index", "start", "cap", "create", "svg", "html", "node", "jsx", "jsxs", "_", "point", "name", "index", "stringify", "styleToJs", "import_jsx_runtime", "import_react", "emptyOptions", "one", "index", "element", "characterReference", "list", "start", "all", "index", "extension", "code", "list", "code", "code", "index", "start", "code", "ok", "start", "code", "previous", "code", "document", "self", "start", "code", "point", "index", "ok", "code", "constructs", "index", "index", "text", "start", "ok", "attentionMarkers", "previous", "code", "point", "ok", "start", "code", "ok", "start", "code", "ok", "self", "start", "code", "ok", "start", "code", "ok", "self", "start", "code", "ok", "self", "start", "code", "effects", "nok", "ok", "self", "start", "code", "furtherStart", "index", "code", "ok", "self", "start", "index", "start", "list", "index", "previous", "start", "content", "ok", "previous", "code", "self", "ok", "start", "code", "ok", "self", "start", "code", "ok", "start", "code", "ok", "start", "code", "ok", "self", "start", "code", "titleBefore", "ok", "start", "code", "content", "text", "ok", "start", "code", "index", "ok", "self", "start", "code", "name", "ok", "self", "index", "start", "code", "index", "text", "ok", "self", "start", "code", "ok", "self", "start", "code", "ok", "self", "start", "code", "ok", "start", "code", "ok", "start", "code", "ok", "self", "start", "code", "index", "content", "text", "definition", "heading", "ok", "self", "start", "code", "paragraph", "self", "content", "code", "text", "self", "constructs", "start", "code", "list", "index", "document", "flow", "string", "text", "document", "flow", "string", "text", "point", "exit", "code", "constructs", "start", "all", "list", "ok", "from", "index", "constructs", "create", "document", "text", "start", "code", "head", "own", "link", "heading", "blockQuote", "codeText", "definition", "emphasis", "hardBreak", "html", "image", "listItem", "list", "paragraph", "strong", "thematicBreak", "exit", "index", "point", "start", "create", "node", "data", "text", "string", "extension", "self", "node", "node", "node", "node", "node", "node", "index", "link", "node", "html", "node", "node", "node", "definition", "node", "node", "text", "node", "definition", "node", "node", "paragraph", "index", "list", "node", "index", "node", "root", "node", "node", "node", "start", "node", "result", "node", "search", "start", "code", "text", "node", "thematicBreak", "node", "html", "list", "root", "text", "thematicBreak", "index", "name", "toString", "index", "definition", "content", "listItem", "ok", "checks", "index", "all", "node", "empty", "is", "node", "index", "name", "visit", "node", "index", "own", "emptyOptions", "handlers", "all", "one", "node", "index", "code", "node", "index", "wrap", "extname", "start", "index", "code", "normalize", "index", "index", "field", "basename", "dirname", "assertPath", "extname", "name", "self", "own", "index", "extend", "self", "file", "tree", "compiler", "value", "parameters", "name", "node", "isUint8Array", "components", "node", "index", "import_jsx_runtime", "import_react", "import_react", "import_jsx_runtime", "import_react", "import_jsx_runtime", "import_react", "import_jsx_runtime", "import_jsx_runtime", "name", "value", "import_jsx_runtime", "content", "import_react", "import_jsx_runtime", "flow", "isJsonString", "import_react", "import_react", "import_jsx_runtime", "import_jsx_runtime", "flow", "React", "text", "import_jsx_runtime", "r", "index", "React", "flow", "root", "r"] +} diff --git a/flow/package-lock.json b/flow/package-lock.json new file mode 100644 index 0000000..45d0d18 --- /dev/null +++ b/flow/package-lock.json @@ -0,0 +1,3099 @@ +{ + "name": "flow-plugin", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "flow-plugin", + "dependencies": { + "clsx": "^2.1.0", + "react-icons": "^5.0.0", + "react-markdown": "^9.0.0" + }, + "devDependencies": { + "@tailwindcss/postcss": "^4.1.15", + "esbuild": "^0.19.0", + "postcss": "^8.4.38", + "postcss-cli": "^11.0.0", + "tailwindcss": "^4.1.15" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.18.tgz", + "integrity": "sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.4", + "enhanced-resolve": "^5.18.3", + "jiti": "^2.6.1", + "lightningcss": "1.30.2", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.18" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.18.tgz", + "integrity": "sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.18", + "@tailwindcss/oxide-darwin-arm64": "4.1.18", + "@tailwindcss/oxide-darwin-x64": "4.1.18", + "@tailwindcss/oxide-freebsd-x64": "4.1.18", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.18", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.18", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.18", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.18", + "@tailwindcss/oxide-linux-x64-musl": "4.1.18", + "@tailwindcss/oxide-wasm32-wasi": "4.1.18", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.18", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.18" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.18.tgz", + "integrity": "sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.18.tgz", + "integrity": "sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.18.tgz", + "integrity": "sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.18.tgz", + "integrity": "sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.18.tgz", + "integrity": "sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.18.tgz", + "integrity": "sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.18.tgz", + "integrity": "sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.18.tgz", + "integrity": "sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.18.tgz", + "integrity": "sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.18.tgz", + "integrity": "sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.1.0", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.18.tgz", + "integrity": "sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.18.tgz", + "integrity": "sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/postcss": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.18.tgz", + "integrity": "sha512-Ce0GFnzAOuPyfV5SxjXGn0CubwGcuDB0zcdaPuCSzAa/2vII24JTkH+I6jcbXLb1ctjZMZZI6OjDaLPJQL1S0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "@tailwindcss/node": "4.1.18", + "@tailwindcss/oxide": "4.1.18", + "postcss": "^8.4.41", + "tailwindcss": "4.1.18" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.13", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.13.tgz", + "integrity": "sha512-KkiJeU6VbYbUOp5ITMIc7kBfqlYkKA5KhEHVrGMmUUMt7NeaZg65ojdPk+FtNrBAOXNVM5QM72jnADjM+XVRAQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", + "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dependency-graph": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-1.0.0.tgz", + "integrity": "sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/enhanced-resolve": { + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz", + "integrity": "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-extra": { + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", + "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-url-attributes": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.1.tgz", + "integrity": "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/inline-style-parser": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", + "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", + "license": "MIT" + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/lightningcss": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", + "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.30.2", + "lightningcss-darwin-arm64": "1.30.2", + "lightningcss-darwin-x64": "1.30.2", + "lightningcss-freebsd-x64": "1.30.2", + "lightningcss-linux-arm-gnueabihf": "1.30.2", + "lightningcss-linux-arm64-gnu": "1.30.2", + "lightningcss-linux-arm64-musl": "1.30.2", + "lightningcss-linux-x64-gnu": "1.30.2", + "lightningcss-linux-x64-musl": "1.30.2", + "lightningcss-win32-arm64-msvc": "1.30.2", + "lightningcss-win32-x64-msvc": "1.30.2" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz", + "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz", + "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz", + "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz", + "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz", + "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz", + "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz", + "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz", + "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz", + "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz", + "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", + "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", + "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-cli": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-11.0.1.tgz", + "integrity": "sha512-0UnkNPSayHKRe/tc2YGW6XnSqqOA9eqpiRMgRlV1S6HdGi16vwJBx7lviARzbV1HpQHqLLRH3o8vTcB0cLc+5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.3.0", + "dependency-graph": "^1.0.0", + "fs-extra": "^11.0.0", + "picocolors": "^1.0.0", + "postcss-load-config": "^5.0.0", + "postcss-reporter": "^7.0.0", + "pretty-hrtime": "^1.0.3", + "read-cache": "^1.0.0", + "slash": "^5.0.0", + "tinyglobby": "^0.2.12", + "yargs": "^17.0.0" + }, + "bin": { + "postcss": "index.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-load-config": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-5.1.0.tgz", + "integrity": "sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1", + "yaml": "^2.4.2" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + } + } + }, + "node_modules/postcss-reporter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.1.0.tgz", + "integrity": "sha512-/eoEylGWyy6/DOiMP5lmFRdmDKThqgn7D6hP2dXKJI/0rJSO1ADFNngZfDzxL0YAxFvws+Rtpuji1YIHj4mySA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "thenby": "^1.3.4" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/react": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", + "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-icons": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.5.0.tgz", + "integrity": "sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==", + "license": "MIT", + "peerDependencies": { + "react": "*" + } + }, + "node_modules/react-markdown": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-9.1.0.tgz", + "integrity": "sha512-xaijuJB0kzGiUdG7nc2MOMDUDBWPyGAjZtUrow9XxUeua8IqeP+VlIfAZ3bphpcLTnSZXz6z9jcVC/TCwbfgdw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "html-url-attributes": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "unified": "^11.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=18", + "react": ">=18" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/style-to-js": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz", + "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==", + "license": "MIT", + "dependencies": { + "style-to-object": "1.0.14" + } + }, + "node_modules/style-to-object": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz", + "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.2.7" + } + }, + "node_modules/tailwindcss": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz", + "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/thenby": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz", + "integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", + "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yaml": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/flow/package.json b/flow/package.json index 5d58cf4..7812083 100644 --- a/flow/package.json +++ b/flow/package.json @@ -1,20 +1,22 @@ { - "name": "sample-tsx-plugin", - "version": "1.0.0", + "name": "flow-plugin", "private": true, "type": "module", "scripts": { - "dev": "npm-run-all --parallel dev:watch dev:serve", - "dev:watch": "nodemon --watch src --ext ts,tsx --exec 'bash build.sh'", - "dev:serve": "http-server -p 4002 --cors -c-1", - "build": "bash build-dist.sh" + "build": "./build.sh", + "build:css": "postcss src/flow-plugin.css -o src/flow-plugin.generated.css", + "dev": "npm run build:css && esbuild src/index.ts --bundle --format=iife --platform=browser --jsx=automatic --external:react --external:react-dom/client --external:react/jsx-runtime --sourcemap --outfile=index.js --watch" }, "dependencies": { - "dayjs": "^1.11.11" + "clsx": "^2.1.0", + "react-icons": "^5.0.0", + "react-markdown": "^9.0.0" }, "devDependencies": { - "http-server": "^14.1.1", - "nodemon": "^3.1.10", - "npm-run-all": "^4.1.5" + "@tailwindcss/postcss": "^4.1.15", + "esbuild": "^0.19.0", + "postcss": "^8.4.38", + "postcss-cli": "^11.0.0", + "tailwindcss": "^4.1.15" } } diff --git a/flow/postcss.config.js b/flow/postcss.config.js new file mode 100644 index 0000000..a7f73a2 --- /dev/null +++ b/flow/postcss.config.js @@ -0,0 +1,5 @@ +export default { + plugins: { + '@tailwindcss/postcss': {}, + }, +} diff --git a/flow/src/Page.tsx b/flow/src/Page.tsx deleted file mode 100644 index 8a8450c..0000000 --- a/flow/src/Page.tsx +++ /dev/null @@ -1,675 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const React: any = (globalThis as any).React; - -import { FlowStep, SignalFlow, Interface, ASILLevel } from './types'; -import { FLOW_CELLS, headerGroups, getNestedValue, setNestedValue, createEmptyFlow } from './utils'; -import './styles.css'; - -type PageProps = { data?: any; config?: any }; - -interface EditingCell { - stepIndex: number; - flowIndex: number; - fieldPath: string[]; - value: string; - cellTitle: string; -} - -// Arrow components using SVG instead of react-icons -const ArrowLeft = () => ( - - - -); - -const ArrowRight = () => ( - - - -); - -const ArrowsLeftRight = () => ( - - - -); - -const ArrowsRightLeft = () => ( - - - -); - -const CornerDownRight = () => ( - - - -); - -const CornerDownLeft = () => ( - - - -); - -const EditIcon = () => ( - - - -); - -const ChevronRight = ({ className }: { className?: string }) => ( - - - -); - -const CloseIcon = () => ( - - - -); - -const LoadingIcon = () => ( - - - -); - -const EditSmallIcon = () => ( - - - -); - -// Direction Arrow Component -const DirectionArrow = ({ direction }: { direction: string }) => { - switch (direction) { - case 'left': - return ; - case 'right': - return ; - case 'bi-direction': - return ; - case 'reverse-bi-direction': - return ; - case 'down-right': - return ; - case 'down-left': - return ; - default: - return ; - } -}; - -// ASIL Badge Component -const ASILBadge = ({ level, show }: { level: ASILLevel; show: boolean }) => { - if (!show) return null; - - const badgeClass = `asil-badge asil-badge-${level.toLowerCase()}`; - const displayText = level === 'QM' ? 'QM' : `ASIL-${level}`; - - return {displayText}; -}; - -// Parse flow item data -const parseActivityData = (input: string) => { - if (!input) return { displayText: '', preAsilLevel: null, data: null }; - - try { - const jsonData = JSON.parse(input); - const preAsil = jsonData.preAsilLevel || jsonData.asilLevel || 'QM'; - return { - displayText: jsonData.description || '', - preAsilLevel: preAsil as ASILLevel, - data: jsonData, - }; - } catch { - // Try to extract ASIL level from text - const safetyLevels = ['', '', '', '', '']; - const matchedLevel = safetyLevels.find(level => input.includes(level)); - let displayText = input; - let extractedLevel: ASILLevel | null = null; - - if (matchedLevel) { - displayText = input.replace(matchedLevel, '').trim(); - const level = matchedLevel.startsWith('/g, '') - : matchedLevel.replace(/[<>]/g, ''); - if (['A', 'B', 'C', 'D', 'QM'].includes(level)) { - extractedLevel = level as ASILLevel; - } - } - - return { - displayText: displayText || input, - preAsilLevel: extractedLevel, - data: null, - }; - } -}; - -// Flow Item Component -const FlowItem = ({ - stringData, - showASIL, - onEdit -}: { - stringData: string; - showASIL: boolean; - onEdit?: (value: string) => void; -}) => { - const [showDropdown, setShowDropdown] = React.useState(false); - const { displayText, preAsilLevel, data } = parseActivityData(stringData); - const content = data !== null ? displayText : displayText || stringData; - - const shouldShowBadge = preAsilLevel && content.trim() !== ''; - - const handleClick = (e: any) => { - if (onEdit) { - e.stopPropagation(); - onEdit(stringData); - } else { - setShowDropdown(!showDropdown); - } - }; - - if (!content && !preAsilLevel) { - return ( -
    - {onEdit && } - {stringData} -
    - ); - } - - return ( -
    -
    - {onEdit && } -
    - {content} - {shouldShowBadge && preAsilLevel && ( - - )} -
    -
    - - {showDropdown && !onEdit && ( -
    -
    -
    System Activity
    - -
    -
    - {data ? ( - <> - {data.type && ( -
    - Type: - {data.type} -
    - )} - {data.component && ( -
    - Component: - {data.component} -
    - )} - {data.description && ( -
    - Description: - {data.description} -
    - )} -
    - Pre-Mitigation ASIL: - {data.preAsilLevel === 'QM' ? 'QM' : `ASIL-${data.preAsilLevel}`} -
    - - ) : ( - <> -
    - Description: - {displayText || stringData} -
    - {preAsilLevel && ( -
    - ASIL Rating: - {preAsilLevel === 'QM' ? 'QM' : `ASIL-${preAsilLevel}`} -
    - )} - - )} -
    -
    - )} -
    - ); -}; - -// Flow Interface Component -const FlowInterface = ({ flow }: { flow: SignalFlow | null }) => { - const [showDropdown, setShowDropdown] = React.useState(false); - - if (!flow) return
    ; - - const parseInterfaceData = (input: string) => { - try { - const jsonData = JSON.parse(input); - return { - displayText: jsonData.endpointUrl || jsonData.name || input, - data: jsonData, - }; - } catch { - return { - displayText: input, - data: null, - }; - } - }; - - const { displayText, data } = parseInterfaceData(flow.signal); - - return ( -
    - {flow.signal && ( -
    -
    setShowDropdown(!showDropdown)}> - -
    - - {showDropdown && ( -
    -
    -
    System Interface
    - -
    -
    - {data ? ( - Object.entries(data) - .filter(([key]) => key !== '__typename') - .map(([key, value]) => { - if (!value) return null; - const isLink = typeof value === 'string' && value.startsWith('https://'); - return ( -
    - - {key.replace(/([A-Z])/g, ' $1').replace(/^./, str => str.toUpperCase())}: - - {isLink ? ( - - {value} - - ) : ( - {value} - )} -
    - ); - }) - ) : ( - <> -
    - Name: - {displayText} -
    -
    - Direction: - {flow.direction.charAt(0).toUpperCase() + flow.direction.slice(1)} -
    - - )} -
    -
    - )} -
    - )} -
    - ); -}; - -// Flow Item Editor Modal Component -const FlowItemEditor = ({ - value, - title, - open, - onOpenChange, - onChange, -}: { - value: string; - title: string; - open: boolean; - onOpenChange: (open: boolean) => void; - onChange: (value: string) => void; -}) => { - const [editValue, setEditValue] = React.useState(value); - - React.useEffect(() => { - setEditValue(value); - }, [value]); - - const handleSave = () => { - onChange(editValue); - onOpenChange(false); - }; - - const handleCancel = () => { - setEditValue(value); - onOpenChange(false); - }; - - if (!open) return null; - - return ( -
    -
    e.stopPropagation()}> -
    -

    Edit {title}

    - -
    -
    -