feat(slide-export): add standalone HTML bundle mode with offline file:// support

- Add htmlMode setting (standalone / server-required) for slide exports
- Integrate Slidev standalone bundler via --standalone-bundle CLI flag
- Render Mermaid diagrams, code highlighting, and all Slidev features
- Add auto-install for http-server when server mode is selected
- Update i18n strings (en/zh_cn) for new settings labels
- Update dist assets to latest build including standalone bundle output
This commit is contained in:
Jacobinwwey 2026-06-17 05:01:11 -05:00
parent 0d3e371856
commit 286925b3a4
224 changed files with 5073 additions and 469 deletions

21
docs/dist/404.html vendored
View file

@ -3,21 +3,22 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Introduction to Machine Learning - Slidev</title>
<title>Real Obsidian Test - Slidev</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@200;400;600&family=Fira+Code:wght@200;400;600&display=swap" type="text/css">
<link rel="preload" as="image" href="https://source.unsplash.com/collection/94734566/1920x1080">
<link rel="icon" href="https://cdn.jsdelivr.net/gh/slidevjs/slidev/assets/favicon.png">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta property="slidev:version" content="52.16.0">
<meta name="description" content="&quot;## Machine Learning Introduction\nA comprehensive overview of ML concepts\n&quot;">
<meta property="og:title" content="Introduction to Machine Learning - Slidev">
<meta property="og:description" content="&quot;## Machine Learning Introduction\nA comprehensive overview of ML concepts\n&quot;"> <script type="module" crossorigin src="./assets/index-hODKC6Hw.js"></script>
<link rel="modulepreload" crossorigin href="./assets/rolldown-runtime-QTnfLwEv.js">
<link rel="modulepreload" crossorigin href="./assets/modules/shiki-yoNnvMyB.js">
<link rel="modulepreload" crossorigin href="./assets/slidev/utils-ebkCohfA.js">
<link rel="modulepreload" crossorigin href="./assets/modules/vue-ejhLULwH.js">
<link rel="stylesheet" crossorigin href="./assets/modules/shiki-BrmBd2_v.css">
<link rel="stylesheet" crossorigin href="./assets/index-CyXYSPNL.css">
<meta property="og:title" content="Real Obsidian Test - Slidev"> <script type="module" crossorigin src="/assets/index-BEBAY2Mg.js"></script>
<link rel="modulepreload" crossorigin href="/assets/_plugin-vue_export-helper-BDNMzG2s.js">
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-QTnfLwEv.js">
<link rel="modulepreload" crossorigin href="/assets/utils-T1it7q9-.js">
<link rel="modulepreload" crossorigin href="/assets/modules/shiki-BmLmNVDB.js">
<link rel="modulepreload" crossorigin href="/assets/slidev/env-DWr22PMh.js">
<link rel="modulepreload" crossorigin href="/assets/modules/vue-5vwy5Re_.js">
<link rel="modulepreload" crossorigin href="/assets/slidev/useClicks-C2yK8i93.js">
<link rel="stylesheet" crossorigin href="/assets/modules/shiki-BrmBd2_v.css">
<link rel="stylesheet" crossorigin href="/assets/index-JRGd7JqD.css">
</head>
<body>
<div id="app"></div>

244
docs/dist/README.md vendored
View file

@ -1,244 +0,0 @@
# Slidev Build Output Directory
This directory contains the build output from Slidev presentation exports.
## Files
### Production Output
**`index-standalone.html`** ⭐
- **Size:** 727KB
- **Type:** Single-file bundle (standalone mode)
- **Usage:** Double-click to view in browser
- **Protocol:** Works under `file://`, `http://`, `https://`
- **Status:** Production-ready ✅
**`index.html`**
- **Size:** 1.6KB
- **Type:** Multi-file build (server-script mode)
- **Usage:** Requires local HTTP server
- **Protocol:** `http://` only
- **Dependencies:** `assets/` directory
**`assets/`**
- JavaScript modules (ES modules)
- CSS stylesheets
- Slidev components
- Total size: ~700KB
### Development Files
**`test-*.html`**
- Development and debugging builds
- Used for testing bundler transformations
- Not for production use
**`404.html`**
- Error page for hosted deployments
- Used when file not found
**`_redirects`**
- Netlify/hosting configuration
- Handles SPA routing
## Build Process
### Standalone Mode
```bash
# Build Slidev with Vite
cd docs && npm run build
# Transform to standalone bundle
node ../test-bundle-FIXED.js
# Output: index-standalone.html
```
### Server-Script Mode
```bash
# Build Slidev with Vite
cd docs && npm run build
# Output: index.html + assets/
# Server scripts generated by plugin
```
## Testing
### Verify Standalone Bundle
```bash
# Method 1: Double-click
open index-standalone.html
# Method 2: HTTP server
python3 -m http.server 8888 &
# Open http://localhost:8888/index-standalone.html
```
### Verify Server-Script Build
```bash
python3 -m http.server 8888 &
# Open http://localhost:8888/index.html
```
### Automated Verification
```bash
# Start server
cd docs/dist
python3 -m http.server 8888 &
# Run verification script
node /tmp/final-verify.js
# Expected output:
# Status: ✅ SUCCESS
# Slide exists: true
# Has content: true
```
## File Structure
```
docs/dist/
├── index-standalone.html ⭐ Production standalone
├── index.html Production multi-file
├── assets/ JavaScript & CSS modules
│ ├── index-*.js
│ ├── modules/
│ └── slidev/
├── test-*.html Development builds
├── 404.html Error page
└── _redirects Hosting config
```
## Size Analysis
| File | Size | Type |
|------|------|------|
| `index-standalone.html` | 727KB | All-in-one |
| `index.html` | 1.6KB | Entry point |
| `assets/` (total) | ~700KB | Split modules |
| **Total multi-file** | ~701KB | |
**Note:** Standalone bundle is only 4% larger than multi-file due to deduplication.
## Browser Testing
Test both builds in:
- ✅ Chrome/Chromium
- ✅ Firefox
- ✅ Edge
- ✅ Safari
**Standalone:** Works with `file://` protocol
**Multi-file:** Requires `http://` protocol
## Troubleshooting
### Standalone Bundle Issues
**Empty slides (shows `<!---->`)**
- Old bug: Fixed in test-bundle-FIXED.js (2026-06-16)
- Solution: Regenerate with `node test-bundle-FIXED.js`
- Verify: Check "Introduction to Machine Learning" is visible
**File size wrong**
- Expected: ~727KB
- If much smaller: Export transformation failed
- If much larger: Extra content or duplication
**Console errors**
- Check browser DevTools (F12)
- Look for module loading errors
- Verify all imports transformed correctly
### Multi-File Build Issues
**CORS errors on file://**
- Expected: Multi-file build requires HTTP server
- Solution: Use `python3 -m http.server 8888`
- Or use standalone bundle instead
**Module not found errors**
- Check `assets/` directory exists
- Verify relative paths are correct
- Ensure HTTP server is serving from correct directory
## Deployment
### Standalone Bundle
```bash
# Copy single file anywhere
cp index-standalone.html ~/Desktop/presentation.html
# Works immediately by double-clicking
```
### Multi-File Build
```bash
# Copy entire directory
cp -r docs/dist/* /var/www/html/presentation/
# Or create archive
tar -czf presentation.tar.gz index.html assets/ 404.html _redirects
```
## Development
### Rebuild After Changes
```bash
# 1. Update Slidev source (docs/*.md)
# 2. Rebuild
cd docs && npm run build
# 3. Regenerate standalone
cd .. && node test-bundle-FIXED.js
# 4. Test
open docs/dist/index-standalone.html
```
### Debug Build Issues
```bash
# Check Vite output
cd docs && npm run build -- --debug
# Check bundler logs
node test-bundle-FIXED.js 2>&1 | tee bundle.log
# Verify module structure
node -e "
const fs = require('fs');
const html = fs.readFileSync('docs/dist/index-standalone.html', 'utf8');
const scriptMatch = html.match(/<script[^>]*>([\s\S]+)<\/script>/);
const moduleCode = scriptMatch[1];
console.log('Script size:', moduleCode.length);
console.log('Module count:', (moduleCode.match(/"\.\//g) || []).length);
"
```
## Related Documentation
- [../STANDALONE_BUNDLE_FIX.md](../STANDALONE_BUNDLE_FIX.md) - Fix details
- [../SINGLE_FILE_BUNDLER.md](../SINGLE_FILE_BUNDLER.md) - Architecture
- [../export/README.md](../export/README.md) - User-facing docs
- [../../BUNDLE_SCRIPTS_README.md](../../BUNDLE_SCRIPTS_README.md) - Script reference
## Maintenance
**Clean build artifacts:**
```bash
rm -f test-*.html
# Keep: index-standalone.html, index.html, assets/, 404.html, _redirects
```
**Verify production build:**
```bash
ls -lh index-standalone.html # Should be ~727KB
node /tmp/final-verify.js # Should pass all checks
```
---
**Last Updated:** 2026-06-16
**Current Production:** `index-standalone.html` (standalone mode)

View file

@ -1 +1 @@
./* ./index.html 200
/* /index.html 200

1
docs/dist/assets/404-CSzoupeA.css vendored Normal file
View file

@ -0,0 +1 @@
.page-link[data-v-1cb65413]{background-color:#9ca3af1a;border-radius:.25rem;padding:.5rem 1rem}.page-link[data-v-1cb65413]:hover{background-color:#9ca3af33}

View file

@ -1 +0,0 @@
.page-link[data-v-b1d9b4aa]{background-color:#9ca3af1a;border-radius:.25rem;padding:.5rem 1rem}.page-link[data-v-b1d9b4aa]:hover{background-color:#9ca3af33}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
.slidev-slide-container[data-v-1c3c0b8e]{width:100%;height:100%;position:relative;overflow:hidden}.slidev-slide-content[data-v-1c3c0b8e]{--slidev-slide-container-scale:var(--slidev-slide-scale);transform:translate(-50%, -50%) scale(var(--slidev-slide-scale));--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity)) ;position:absolute;top:50%;left:50%;overflow:hidden}.dark .slidev-slide-content[data-v-1c3c0b8e]{--un-bg-opacity:1;background-color:rgb(18 18 18/var(--un-bg-opacity)) }.disable-view-transition[data-v-55a3a6cb] *{view-transition-name:none!important}.slidev-page[data-v-55a3a6cb]{--slidev-slide-zoom-scale:1;width:calc(100% / var(--slidev-slide-zoom-scale));height:calc(100% / var(--slidev-slide-zoom-scale));transform-origin:0 0;scale:var(--slidev-slide-zoom-scale);--slidev-slide-scale:calc(var(--slidev-slide-container-scale) * var(--slidev-slide-zoom-scale));position:absolute;inset:0}
.slidev-slide-container[data-v-f9a69392]{width:100%;height:100%;position:relative;overflow:hidden}.slidev-slide-content[data-v-f9a69392]{--slidev-slide-container-scale:var(--slidev-slide-scale);transform:translate(-50%, -50%) scale(var(--slidev-slide-scale));--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity)) ;position:absolute;top:50%;left:50%;overflow:hidden}.dark .slidev-slide-content[data-v-f9a69392]{--un-bg-opacity:1;background-color:rgb(18 18 18/var(--un-bg-opacity)) }.disable-view-transition[data-v-4ce610b6] *{view-transition-name:none!important}.slidev-page[data-v-4ce610b6]{--slidev-slide-zoom-scale:1;width:calc(100% / var(--slidev-slide-zoom-scale));height:calc(100% / var(--slidev-slide-zoom-scale));transform-origin:0 0;scale:var(--slidev-slide-zoom-scale);--slidev-slide-scale:calc(var(--slidev-slide-container-scale) * var(--slidev-slide-zoom-scale));position:absolute;inset:0}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
var e=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n};export{e as t};

View file

@ -0,0 +1 @@
import{x as e}from"./chunk-BBDM4ZFP-DhnAO8sj.js";export{e as createArchitectureServices};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
import{r as e}from"./chunk-PTVI3W5X-DVfdoxm6.js";function t(e,t){e.accDescr&&t.setAccDescription?.(e.accDescr),e.accTitle&&t.setAccTitle?.(e.accTitle),e.title&&t.setDiagramTitle?.(e.title)}e(t,`populateCommonDb`);export{t};

View file

@ -0,0 +1 @@
import{r as e}from"./chunk-PTVI3W5X-DVfdoxm6.js";import{I as t}from"./chunk-V7P66DNM-D246Sefn.js";var n=e((e,n)=>{let r;return n===`sandbox`&&(r=t(`#i`+e)),t(n===`sandbox`?r.nodes()[0].contentDocument.body:`body`).select(`[id="${e}"]`)},`getDiagramElement`);export{n as t};

View file

@ -0,0 +1 @@
import{r as e,t}from"./chunk-PTVI3W5X-DVfdoxm6.js";var n=t({"../../node_modules/.pnpm/@braintree+sanitize-url@7.1.1/node_modules/@braintree/sanitize-url/dist/constants.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.BLANK_URL=e.relativeFirstCharacters=e.whitespaceEscapeCharsRegex=e.urlSchemeRegex=e.ctrlCharactersRegex=e.htmlCtrlEntityRegex=e.htmlEntitiesRegex=e.invalidProtocolRegex=void 0,e.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im,e.htmlEntitiesRegex=/&#(\w+)(^\w|;)?/g,e.htmlCtrlEntityRegex=/&(newline|tab);/gi,e.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,e.urlSchemeRegex=/^.+(:|&colon;)/gim,e.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g,e.relativeFirstCharacters=[`.`,`/`],e.BLANK_URL=`about:blank`}}),r=t({"../../node_modules/.pnpm/@braintree+sanitize-url@7.1.1/node_modules/@braintree/sanitize-url/dist/index.js"(t){Object.defineProperty(t,"__esModule",{value:!0}),t.sanitizeUrl=void 0;var r=n();function i(e){return r.relativeFirstCharacters.indexOf(e[0])>-1}e(i,`isRelativeUrlWithoutProtocol`);function a(e){return e.replace(r.ctrlCharactersRegex,``).replace(r.htmlEntitiesRegex,function(e,t){return String.fromCharCode(t)})}e(a,`decodeHtmlCharacters`);function o(e){return URL.canParse(e)}e(o,`isValidUrl`);function s(e){try{return decodeURIComponent(e)}catch{return e}}e(s,`decodeURI`);function c(e){if(!e)return r.BLANK_URL;var t,n=s(e.trim());do n=a(n).replace(r.htmlCtrlEntityRegex,``).replace(r.ctrlCharactersRegex,``).replace(r.whitespaceEscapeCharsRegex,``).trim(),n=s(n),t=n.match(r.ctrlCharactersRegex)||n.match(r.htmlEntitiesRegex)||n.match(r.htmlCtrlEntityRegex)||n.match(r.whitespaceEscapeCharsRegex);while(t&&t.length>0);var c=n;if(!c)return r.BLANK_URL;if(i(c))return c;var l=c.trimStart(),u=l.match(r.urlSchemeRegex);if(!u)return c;var d=u[0].toLowerCase().trim();if(r.invalidProtocolRegex.test(d))return r.BLANK_URL;var f=l.replace(/\\/g,`/`);if(d===`mailto:`||d.includes(`://`))return f;if(d===`http:`||d===`https:`){if(!o(f))return r.BLANK_URL;var p=new URL(f);return p.protocol=p.protocol.toLowerCase(),p.hostname=p.hostname.toLowerCase(),p.toString()}return f}e(c,`sanitizeUrl`),t.sanitizeUrl=c}});export{r as t};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
import{r as e}from"./chunk-PTVI3W5X-DVfdoxm6.js";import{C as t}from"./chunk-Q52JI7PB-BeSPinqD.js";var n=e(e=>{let{handDrawnSeed:n}=t();return{fill:e,hachureAngle:120,hachureGap:4,fillWeight:2,roughness:.7,stroke:e,seed:n}},`solidStateFill`),r=e(e=>{let t=i([...e.cssCompiledStyles||[],...e.cssStyles||[],...e.labelStyle||[]]);return{stylesMap:t,stylesArray:[...t]}},`compileStyles`),i=e(e=>{let t=new Map;return e.forEach(e=>{let[n,r]=e.split(`:`);t.set(n.trim(),r?.trim())}),t},`styles2Map`),a=e(e=>e===`color`||e===`font-size`||e===`font-family`||e===`font-weight`||e===`font-style`||e===`text-decoration`||e===`text-align`||e===`text-transform`||e===`line-height`||e===`letter-spacing`||e===`word-spacing`||e===`text-shadow`||e===`text-overflow`||e===`white-space`||e===`word-wrap`||e===`word-break`||e===`overflow-wrap`||e===`hyphens`,`isLabelStyle`),o=e(e=>{let{stylesArray:t}=r(e),n=[],i=[],o=[],s=[];return t.forEach(e=>{let t=e[0];a(t)?n.push(e.join(`:`)+` !important`):(i.push(e.join(`:`)+` !important`),t.includes(`stroke`)&&o.push(e.join(`:`)+` !important`),t===`fill`&&s.push(e.join(`:`)+` !important`))}),{labelStyles:n.join(`;`),nodeStyles:i.join(`;`),stylesArray:t,borderStyles:o,backgroundStyles:s}},`styles2String`),s=e((e,n)=>{let{themeVariables:i,handDrawnSeed:a}=t(),{nodeBorder:o,mainBkg:s}=i,{stylesMap:l}=r(e);return Object.assign({roughness:.7,fill:l.get(`fill`)||s,fillStyle:`hachure`,fillWeight:4,hachureGap:5.2,stroke:l.get(`stroke`)||o,seed:a,strokeWidth:l.get(`stroke-width`)?.replace(`px`,``)||1.3,fillLineDash:[0,0],strokeLineDash:c(l.get(`stroke-dasharray`))},n)},`userNodeOverrides`),c=e(e=>{if(!e)return[0,0];let t=e.trim().split(/\s+/).map(Number);if(t.length===1){let e=isNaN(t[0])?0:t[0];return[e,e]}return[isNaN(t[0])?0:t[0],isNaN(t[1])?0:t[1]]},`getStrokeDashArray`);export{s as a,o as i,a as n,n as r,r as t};

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
import{r as e}from"./chunk-PTVI3W5X-DVfdoxm6.js";var t=class{constructor(e){this.init=e,this.records=this.init()}static{e(this,`ImperativeState`)}reset(){this.records=this.init()}};export{t};

View file

@ -0,0 +1 @@
import{r as e}from"./chunk-PTVI3W5X-DVfdoxm6.js";import{T as t}from"./chunk-V7P66DNM-D246Sefn.js";import{l as n}from"./chunk-Q52JI7PB-BeSPinqD.js";var r=e((e,r,o,s)=>{e.attr(`class`,o);let{width:c,height:l,x:u,y:d}=i(e,r);n(e,l,c,s);let f=a(u,d,c,l,r);e.attr(`viewBox`,f),t.debug(`viewBox configured: ${f} with padding: ${r}`)},`setupViewPortForSVG`),i=e((e,t)=>{let n=e.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:n.width+t*2,height:n.height+t*2,x:n.x,y:n.y}},`calculateDimensionsWithPadding`),a=e((e,t,n,r,i)=>`${e-i} ${t-i} ${n} ${r}`,`createViewBox`);export{r as t};

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
import{i as e,r as t}from"./chunk-PTVI3W5X-DVfdoxm6.js";import{I as n}from"./chunk-V7P66DNM-D246Sefn.js";import{F as r}from"./chunk-Q52JI7PB-BeSPinqD.js";import{t as i}from"./chunk-7TFACZ55-BO7C1qvL.js";var a=e(i(),1),o=t((e,t)=>{let n=e.append(`rect`);if(n.attr(`x`,t.x),n.attr(`y`,t.y),n.attr(`fill`,t.fill),n.attr(`stroke`,t.stroke),n.attr(`width`,t.width),n.attr(`height`,t.height),t.name&&n.attr(`name`,t.name),t.rx&&n.attr(`rx`,t.rx),t.ry&&n.attr(`ry`,t.ry),t.attrs!==void 0)for(let e in t.attrs)n.attr(e,t.attrs[e]);return t.class&&n.attr(`class`,t.class),n},`drawRect`),s=t((e,t)=>{o(e,{x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:`rect`}).lower()},`drawBackgroundRect`),c=t((e,t)=>{let n=t.text.replace(r,` `),i=e.append(`text`);i.attr(`x`,t.x),i.attr(`y`,t.y),i.attr(`class`,`legend`),i.style(`text-anchor`,t.anchor),t.class&&i.attr(`class`,t.class);let a=i.append(`tspan`);return a.attr(`x`,t.x+t.textMargin*2),a.text(n),i},`drawText`),l=t((e,t,n,r)=>{let i=e.append(`image`);i.attr(`x`,t),i.attr(`y`,n);let o=(0,a.sanitizeUrl)(r);i.attr(`xlink:href`,o)},`drawImage`),u=t((e,t,n,r)=>{let i=e.append(`use`);i.attr(`x`,t),i.attr(`y`,n);let o=(0,a.sanitizeUrl)(r);i.attr(`xlink:href`,`#${o}`)},`drawEmbeddedImage`),d=t(()=>({x:0,y:0,width:100,height:100,fill:`#EDF2AE`,stroke:`#666`,anchor:`start`,rx:0,ry:0}),`getNoteRect`),f=t(()=>({x:0,y:0,width:100,height:100,"text-anchor":`start`,style:`#666`,textMargin:0,rx:0,ry:0,tspan:!0}),`getTextObj`),p=t(()=>{let e=n(`.mermaidTooltip`);return e.empty()&&(e=n(`body`).append(`div`).attr(`class`,`mermaidTooltip`).style(`opacity`,0).style(`position`,`absolute`).style(`text-align`,`center`).style(`max-width`,`200px`).style(`padding`,`2px`).style(`font-size`,`12px`).style(`background`,`#ffffde`).style(`border`,`1px solid #333`).style(`border-radius`,`2px`).style(`pointer-events`,`none`).style(`z-index`,`100`)),e},`createTooltip`);export{o as a,f as c,l as i,s as n,c as o,u as r,d as s,p as t};

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,n)=>t(e,`name`,{value:n,configurable:!0}),s=(e,t)=>function(){return t||(0,e[r(e)[0]])((t={exports:{}}).exports,t),t.exports},c=(e,n)=>{for(var r in n)t(e,r,{get:n[r],enumerable:!0})},l=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(let c of r(i))!a.call(e,c)&&c!==o&&t(e,c,{get:()=>i[c],enumerable:!(s=n(i,c))||s.enumerable});return e},u=(n,r,a)=>(a=n==null?{}:e(i(n)),l(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));export{u as i,c as n,o as r,s as t};

View file

@ -0,0 +1 @@
import{r as e}from"./chunk-PTVI3W5X-DVfdoxm6.js";import{I as t}from"./chunk-V7P66DNM-D246Sefn.js";import{C as n}from"./chunk-Q52JI7PB-BeSPinqD.js";var r=e(e=>{let{securityLevel:r}=n(),i=t(`body`);return r===`sandbox`&&(i=t((t(`#i${e}`).node()?.contentDocument??document).body)),i.select(`#${e}`)},`selectSvgElement`);export{r as t};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,15 @@
import{r as e}from"./chunk-PTVI3W5X-DVfdoxm6.js";var t=e(()=>`
/* Font Awesome icon styling - consolidated */
.label-icon {
display: inline-block;
height: 1em;
overflow: visible;
vertical-align: -0.125em;
}
.node .label-icon path {
fill: currentColor;
stroke: revert;
stroke-width: revert;
}
`,`getIconStyles`);export{t};

View file

@ -0,0 +1 @@
import{r as e}from"./chunk-PTVI3W5X-DVfdoxm6.js";var t=e((e,t)=>{if(t)return`translate(`+-e.width/2+`, `+-e.height/2+`)`;let n=e.x??0,r=e.y??0;return`translate(`+-(n+e.width/2)+`, `+-(r+e.height/2)+`)`},`computeLabelTransform`),n={aggregation:17.25,extension:17.25,composition:17.25,dependency:6,lollipop:13.5,arrow_point:4,arrow_barb:0,arrow_barb_neo:5.5},r={arrow_point:4,arrow_cross:12.5,arrow_circle:12.5};function i(e,t){if(e===void 0||t===void 0)return{angle:0,deltaX:0,deltaY:0};e=a(e),t=a(t);let[n,r]=[e.x,e.y],[i,o]=[t.x,t.y],s=i-n,c=o-r;return{angle:Math.atan(c/s),deltaX:s,deltaY:c}}e(i,`calculateDeltaAndAngle`);var a=e(e=>Array.isArray(e)?{x:e[0],y:e[1]}:e,`pointTransformer`),o=e(t=>({x:e(function(e,r,o){let s=0,c=a(o[0]).x<a(o[o.length-1]).x?`left`:`right`;if(r===0&&Object.hasOwn(n,t.arrowTypeStart)){let{angle:e,deltaX:r}=i(o[0],o[1]);s=n[t.arrowTypeStart]*Math.cos(e)*(r>=0?1:-1)}else if(r===o.length-1&&Object.hasOwn(n,t.arrowTypeEnd)){let{angle:e,deltaX:r}=i(o[o.length-1],o[o.length-2]);s=n[t.arrowTypeEnd]*Math.cos(e)*(r>=0?1:-1)}let l=Math.abs(a(e).x-a(o[o.length-1]).x),u=Math.abs(a(e).y-a(o[o.length-1]).y),d=Math.abs(a(e).x-a(o[0]).x),f=Math.abs(a(e).y-a(o[0]).y),p=n[t.arrowTypeStart],m=n[t.arrowTypeEnd];if(l<m&&l>0&&u<m){let e=m+1-l;e*=c===`right`?-1:1,s-=e}if(d<p&&d>0&&f<p){let e=p+1-d;e*=c===`right`?-1:1,s+=e}return a(e).x+s},`x`),y:e(function(e,r,o){let s=0,c=a(o[0]).y<a(o[o.length-1]).y?`down`:`up`;if(r===0&&Object.hasOwn(n,t.arrowTypeStart)){let{angle:e,deltaY:r}=i(o[0],o[1]);s=n[t.arrowTypeStart]*Math.abs(Math.sin(e))*(r>=0?1:-1)}else if(r===o.length-1&&Object.hasOwn(n,t.arrowTypeEnd)){let{angle:e,deltaY:r}=i(o[o.length-1],o[o.length-2]);s=n[t.arrowTypeEnd]*Math.abs(Math.sin(e))*(r>=0?1:-1)}let l=Math.abs(a(e).y-a(o[o.length-1]).y),u=Math.abs(a(e).x-a(o[o.length-1]).x),d=Math.abs(a(e).y-a(o[0]).y),f=Math.abs(a(e).x-a(o[0]).x),p=n[t.arrowTypeStart],m=n[t.arrowTypeEnd];if(l<m&&l>0&&u<m){let e=m+1-l;e*=c===`up`?-1:1,s-=e}if(d<p&&d>0&&f<p){let e=p+1-d;e*=c===`up`?-1:1,s+=e}return a(e).y+s},`y`)}),`getLineFunctionsWithOffset`);export{r as i,o as n,n as r,t};

View file

@ -0,0 +1,2 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-ZXKKJJHT-CJBRrdma.js","assets/chunk-7TFACZ55-BO7C1qvL.js","assets/chunk-PTVI3W5X-DVfdoxm6.js","assets/chunk-BSZA5ISF-LqNHBHyp.js","assets/chunk-Q52JI7PB-BeSPinqD.js","assets/index-BEBAY2Mg.js","assets/_plugin-vue_export-helper-BDNMzG2s.js","assets/rolldown-runtime-QTnfLwEv.js","assets/slidev/env-DWr22PMh.js","assets/utils-T1it7q9-.js","assets/modules/shiki-BmLmNVDB.js","assets/modules/shiki-BrmBd2_v.css","assets/modules/vue-5vwy5Re_.js","assets/slidev/useClicks-C2yK8i93.js","assets/index-JRGd7JqD.css","assets/chunk-V7P66DNM-D246Sefn.js","assets/chunk-GTILCTU2-D-9HFTK6.js","assets/chunk-HQMLCRZ6-HgqAiHMi.js","assets/chunk-PLCLPJVV-rGjVDjLw.js","assets/chunk-SZ5Y56Q4-Bki2Aicm.js","assets/chunk-YSJUE5HW-eH4JtoEG.js","assets/chunk-RTI7CJYH-CrTK6TD7.js","assets/chunk-T5XCKZAJ-Dtmpyu6x.js","assets/chunk-XAKTCX7R-ChjAedyW.js","assets/chunk-TRQY2T3P-DxnI4jXA.js","assets/cose-bilkent-WZ3F43K2-qc8oz4yM.js","assets/chunk-234R4QNB-By2FNiLO.js"])))=>i.map(i=>d[i]);
import{ht as e}from"./index-BEBAY2Mg.js";import{r as t}from"./chunk-PTVI3W5X-DVfdoxm6.js";import{T as n}from"./chunk-V7P66DNM-D246Sefn.js";import{S as r,c as i}from"./chunk-Q52JI7PB-BeSPinqD.js";import{f as a}from"./chunk-BSZA5ISF-LqNHBHyp.js";import{a as o,i as s,s as c}from"./chunk-HQMLCRZ6-HgqAiHMi.js";import{a as l,i as u,n as d,r as f}from"./chunk-TRQY2T3P-DxnI4jXA.js";var p={common:i,getConfig:r,insertCluster:s,insertEdge:d,insertEdgeLabel:f,insertMarkers:u,insertNode:o,interpolateToCurve:a,labelHelper:c,log:n,positionEdgeLabel:l},m={},h=t(e=>{for(let t of e)m[t.name]=t},`registerLayoutLoaders`);t(()=>{h([{name:`dagre`,loader:t(async()=>await e(()=>import(`./dagre-ZXKKJJHT-CJBRrdma.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24])),`loader`)},{name:`cose-bilkent`,loader:t(async()=>await e(()=>import(`./cose-bilkent-WZ3F43K2-qc8oz4yM.js`),__vite__mapDeps([25,26,2,15])),`loader`)}])},`registerDefaultLayoutLoaders`)();var g=t(async(e,t)=>{if(!(e.layoutAlgorithm in m))throw Error(`Unknown layout algorithm: ${e.layoutAlgorithm}`);if(e.diagramId)for(let t of e.nodes){let n=t.domId||t.id;t.domId=`${e.diagramId}-${n}`}let n=m[e.layoutAlgorithm],r=await n.loader(),{theme:i,themeVariables:a}=e.config,{useGradient:o,gradientStart:s,gradientStop:c}=a,l=t.attr(`id`);if(t.append(`defs`).append(`filter`).attr(`id`,`${l}-drop-shadow`).attr(`height`,`130%`).attr(`width`,`130%`).append(`feDropShadow`).attr(`dx`,`4`).attr(`dy`,`4`).attr(`stdDeviation`,0).attr(`flood-opacity`,`0.06`).attr(`flood-color`,`${i?.includes(`dark`)?`#FFFFFF`:`#000000`}`),t.append(`defs`).append(`filter`).attr(`id`,`${l}-drop-shadow-small`).attr(`height`,`150%`).attr(`width`,`150%`).append(`feDropShadow`).attr(`dx`,`2`).attr(`dy`,`2`).attr(`stdDeviation`,0).attr(`flood-opacity`,`0.06`).attr(`flood-color`,`${i?.includes(`dark`)?`#FFFFFF`:`#000000`}`),o){let e=t.append(`linearGradient`).attr(`id`,t.attr(`id`)+`-gradient`).attr(`gradientUnits`,`objectBoundingBox`).attr(`x1`,`0%`).attr(`y1`,`0%`).attr(`x2`,`100%`).attr(`y2`,`0%`);e.append(`svg:stop`).attr(`offset`,`0%`).attr(`stop-color`,s).attr(`stop-opacity`,1),e.append(`svg:stop`).attr(`offset`,`100%`).attr(`stop-color`,c).attr(`stop-opacity`,1)}return r.render(e,t,p,{algorithm:n.algorithm})},`render`),_=t((e=``,{fallback:t=`dagre`}={})=>{if(e in m)return e;if(t in m)return n.warn(`Layout algorithm ${e} is not registered. Using ${t} as fallback.`),t;throw Error(`Both layout algorithms ${e} and ${t} are not registered.`)},`getRegisteredLayoutAlgorithm`);export{h as n,g as r,_ as t};

View file

@ -0,0 +1 @@
import{r as e}from"./chunk-PTVI3W5X-DVfdoxm6.js";import{C as t,m as n}from"./chunk-Q52JI7PB-BeSPinqD.js";import{h as r}from"./chunk-BSZA5ISF-LqNHBHyp.js";var i=e(({flowchart:e})=>{let t=e?.subGraphTitleMargin?.top??0,n=e?.subGraphTitleMargin?.bottom??0;return{subGraphTitleTopMargin:t,subGraphTitleBottomMargin:n,subGraphTitleTotalMargin:t+n}},`getSubGraphTitleMargins`);async function a(i,a){let o=i.getElementsByTagName(`img`);if(!o||o.length===0)return;let s=a.replace(/<img[^>]*>/g,``).trim()===``;await Promise.all([...o].map(i=>new Promise(a=>{function o(){if(i.style.display=`flex`,i.style.flexDirection=`column`,s){let[e=n.fontSize]=r(t().fontSize?t().fontSize:window.getComputedStyle(document.body).fontSize),a=e*5+`px`;i.style.minWidth=a,i.style.maxWidth=a}else i.style.width=`100%`;a(i)}e(o,`setupImage`),setTimeout(()=>{i.complete&&o()}),i.addEventListener(`error`,o),i.addEventListener(`load`,o)})))}e(a,`configureLabelImages`);export{i as n,a as t};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
import{r as e}from"./chunk-PTVI3W5X-DVfdoxm6.js";import"./chunk-V7P66DNM-D246Sefn.js";import"./chunk-Q52JI7PB-BeSPinqD.js";import"./chunk-PLCLPJVV-rGjVDjLw.js";import"./chunk-GTILCTU2-D-9HFTK6.js";import"./chunk-7TFACZ55-BO7C1qvL.js";import"./chunk-BSZA5ISF-LqNHBHyp.js";import"./chunk-SZ5Y56Q4-Bki2Aicm.js";import"./chunk-YSJUE5HW-eH4JtoEG.js";import"./chunk-HQMLCRZ6-HgqAiHMi.js";import"./chunk-RTI7CJYH-CrTK6TD7.js";import"./chunk-TRQY2T3P-DxnI4jXA.js";import"./chunk-SNQTKDUU-CQmHT9KX.js";import"./chunk-O4A3IS3O-BIKKhWCb.js";import"./chunk-7723GVCQ-CfHgq7qP.js";import"./chunk-KEUPHFFI-DMlFzrf2.js";import{i as t,n,r,t as i}from"./chunk-VFD24L5A-DOz8HER0.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};

Some files were not shown because too many files have changed in this diff Show more