From 9eff4a84a9863b77034210b41ca3eac44b36a40b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=AAsufian=20nasser=E2=80=AC=E2=80=8F?= <166199800+sufyanaser@users.noreply.github.com> Date: Sat, 8 Aug 2026 05:51:18 +0300 Subject: [PATCH 1/3] feat(workspace): establish Planer desktop baseline Version: 0.1.0 - Replaced legacy draw.io metadata with a Tauri v2, React, TypeScript, and Vite scaffold - Added a local-first project launcher and canvas-first workspace shell - Integrated Excalidraw with Zustand-backed multi-board project state - Added IndexedDB autosave, board CRUD, light/dark appearance, and JSON exports - Added Planer app icons, changelog, product status updates, and Windows installer CI - Verified npm ci, lint, TypeScript, and production Vite build --- .github/workflows/ci.yml | 43 + .gitignore | 65 +- .snyk | 4 - .travis.yml | 18 - CHANGELOG.md | 20 + CITATION.cff | 13 - CODE_OF_CONDUCT.md | 49 - ChangeLog | 13365 -------------------------- DIALOG_STYLE_GUIDE.md | 172 - LICENSE | 201 - README.md | 65 +- SECURITY.md | 14 - VERSION | 1 - app-icon.svg | 14 + docs/PLANER_PRODUCT_BLUEPRINT_V1.md | 31 +- eslint.config.js | 25 + index.html | 14 + package-lock.json | 6334 ++++++++++++ package.json | 36 + src-tauri/Cargo.toml | 19 + src-tauri/build.rs | 3 + src-tauri/icons/128x128.png | Bin 0 -> 4116 bytes src-tauri/icons/128x128@2x.png | Bin 0 -> 8517 bytes src-tauri/icons/32x32.png | Bin 0 -> 1017 bytes src-tauri/icons/64x64.png | Bin 0 -> 1955 bytes src-tauri/icons/icon.icns | Bin 0 -> 116919 bytes src-tauri/icons/icon.ico | Bin 0 -> 20381 bytes src-tauri/icons/icon.png | Bin 0 -> 19120 bytes src-tauri/src/lib.rs | 6 + src-tauri/src/main.rs | 5 + src-tauri/tauri.conf.json | 48 + src/App.tsx | 17 + src/components/BoardBar.tsx | 44 + src/components/BrandMark.tsx | 9 + src/components/Canvas.tsx | 54 + src/components/Launcher.tsx | 119 + src/components/Workspace.tsx | 73 + src/main.tsx | 11 + src/services/persistence.ts | 84 + src/services/project.ts | 31 + src/store/usePlanerStore.ts | 157 + src/styles/index.css | 134 + src/types.ts | 32 + teams.html | 1 - tsconfig.app.json | 23 + tsconfig.json | 7 + tsconfig.node.json | 17 + vite.config.ts | 16 + 48 files changed, 7449 insertions(+), 13945 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .snyk delete mode 100644 .travis.yml create mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 ChangeLog delete mode 100644 DIALOG_STYLE_GUIDE.md delete mode 100644 LICENSE delete mode 100644 SECURITY.md delete mode 100644 VERSION create mode 100644 app-icon.svg create mode 100644 eslint.config.js create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src-tauri/Cargo.toml create mode 100644 src-tauri/build.rs create mode 100644 src-tauri/icons/128x128.png create mode 100644 src-tauri/icons/128x128@2x.png create mode 100644 src-tauri/icons/32x32.png create mode 100644 src-tauri/icons/64x64.png create mode 100644 src-tauri/icons/icon.icns create mode 100644 src-tauri/icons/icon.ico create mode 100644 src-tauri/icons/icon.png create mode 100644 src-tauri/src/lib.rs create mode 100644 src-tauri/src/main.rs create mode 100644 src-tauri/tauri.conf.json create mode 100644 src/App.tsx create mode 100644 src/components/BoardBar.tsx create mode 100644 src/components/BrandMark.tsx create mode 100644 src/components/Canvas.tsx create mode 100644 src/components/Launcher.tsx create mode 100644 src/components/Workspace.tsx create mode 100644 src/main.tsx create mode 100644 src/services/persistence.ts create mode 100644 src/services/project.ts create mode 100644 src/store/usePlanerStore.ts create mode 100644 src/styles/index.css create mode 100644 src/types.ts delete mode 100644 teams.html create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..26906df --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,43 @@ +name: Planer CI + +on: + push: + branches: [develop, main] + pull_request: + branches: [develop, main] + +permissions: + contents: read + +jobs: + quality: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: npm + - run: npm ci + - run: npm run lint + - run: npm run build + + windows-installer: + runs-on: windows-latest + needs: quality + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: npm + - uses: dtolnay/rust-toolchain@stable + - run: npm ci + - run: npm run tauri build + - uses: actions/upload-artifact@v4 + with: + name: Planer-0.1.0-Windows + path: | + src-tauri/target/release/bundle/nsis/*.exe + src-tauri/target/release/bundle/msi/*.msi + if-no-files-found: error diff --git a/.gitignore b/.gitignore index 17b2081..7227016 100644 --- a/.gitignore +++ b/.gitignore @@ -1,52 +1,13 @@ -bin -build -classes -node_modules -.vscode/settings.json -src/main/webapp/WEB-INF/lib/animal-sniffer-annotations-*.jar -src/main/webapp/WEB-INF/lib/annotations-*.jar -src/main/webapp/WEB-INF/lib/api-common-*.jar -src/main/webapp/WEB-INF/lib/auto-value-annotations-*.jar -src/main/webapp/WEB-INF/lib/bcpkix-jdk15on-*.jar -src/main/webapp/WEB-INF/lib/bcprov-jdk15on-*.jar -src/main/webapp/WEB-INF/lib/checker-qual-*.jar -src/main/webapp/WEB-INF/lib/conscrypt-openjdk-uber-*.jar -src/main/webapp/WEB-INF/lib/error_prone_annotations-*.jar -src/main/webapp/WEB-INF/lib/failureaccess-*.jar -src/main/webapp/WEB-INF/lib/gax-*.jar -src/main/webapp/WEB-INF/lib/gax-grpc-*.jar -src/main/webapp/WEB-INF/lib/google-auth-library-credentials-*.jar -src/main/webapp/WEB-INF/lib/google-auth-library-oauth2-http-*.jar -src/main/webapp/WEB-INF/lib/google-cloud-secretmanager-*.jar -src/main/webapp/WEB-INF/lib/google-http-client-*.jar -src/main/webapp/WEB-INF/lib/google-http-client-gson-*.jar -src/main/webapp/WEB-INF/lib/grpc-alts-*.jar -src/main/webapp/WEB-INF/lib/grpc-api-*.jar -src/main/webapp/WEB-INF/lib/grpc-auth-*.jar -src/main/webapp/WEB-INF/lib/grpc-context-*.jar -src/main/webapp/WEB-INF/lib/grpc-core-*.jar -src/main/webapp/WEB-INF/lib/grpc-grpclb-*.jar -src/main/webapp/WEB-INF/lib/grpc-netty-shaded-*.jar -src/main/webapp/WEB-INF/lib/grpc-protobuf-*.jar -src/main/webapp/WEB-INF/lib/grpc-protobuf-lite-*.jar -src/main/webapp/WEB-INF/lib/grpc-services-*.jar -src/main/webapp/WEB-INF/lib/grpc-stub-*.jar -src/main/webapp/WEB-INF/lib/grpc-xds-*.jar -src/main/webapp/WEB-INF/lib/guava-*-jre.jar -src/main/webapp/WEB-INF/lib/httpcore-*.jar -src/main/webapp/WEB-INF/lib/j2objc-annotations-*.jar -src/main/webapp/WEB-INF/lib/javax.annotation-api-*.jar -src/main/webapp/WEB-INF/lib/jsr305-*.jar -src/main/webapp/WEB-INF/lib/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar -src/main/webapp/WEB-INF/lib/opencensus-api-*.jar -src/main/webapp/WEB-INF/lib/opencensus-contrib-http-util-*.jar -src/main/webapp/WEB-INF/lib/opencensus-proto-*.jar -src/main/webapp/WEB-INF/lib/perfmark-api-*.jar -src/main/webapp/WEB-INF/lib/proto-google-cloud-secretmanager-v1-*.jar -src/main/webapp/WEB-INF/lib/proto-google-cloud-secretmanager-v1beta1-*.jar -src/main/webapp/WEB-INF/lib/proto-google-common-protos-*.jar -src/main/webapp/WEB-INF/lib/proto-google-iam-v1-*.jar -src/main/webapp/WEB-INF/lib/protobuf-java-*.jar -src/main/webapp/WEB-INF/lib/protobuf-java-util-*.jar -src/main/webapp/WEB-INF/lib/re2j-*.jar -src/main/webapp/WEB-INF/lib/threetenbp-*.jar +node_modules/ +dist/ +*.local +.DS_Store +src-tauri/target/ +src-tauri/gen/ +*.log + +# Generated mobile/store icon variants are not part of the Windows baseline. +src-tauri/icons/android/ +src-tauri/icons/ios/ +src-tauri/icons/Square*Logo.png +src-tauri/icons/StoreLogo.png diff --git a/.snyk b/.snyk deleted file mode 100644 index 0dfdce7..0000000 --- a/.snyk +++ /dev/null @@ -1,4 +0,0 @@ -# Snyk (https://snyk.io) policy file -exclude: - global: - - etc/vsdx/src/com/mxgraph/vsdxImport \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 27457fe..0000000 --- a/.travis.yml +++ /dev/null @@ -1,18 +0,0 @@ -language: java -sudo: false -before_install: -- sudo apt-get update -- sudo apt-get install ant -- cd etc/build -script: ant war -before_deploy: -- cd $TRAVIS_BUILD_DIR -deploy: - provider: releases - api_key: - secure: CzBd1sEPknb5wQYpPa3Ao517JTi8I/wBQXAQN3xUcGiJycZRb4GcOdbylDzcL9VtjkXAldHUxGHV181xvs/xUt4BQQY4Rg0OhWFQ8JhThFGe/eQwLKTxZbJmFk9eRs36GbqrBXRQ/2SgWDzhWf1FBefBb/blJKrgpzqyJlIhYESE7mKvPGORF9ef/3zrieXCu6ycDn/AhWLXgB/HE7ZztcrsUa+DxiIvjGoVIfECIXf1uejBJSK5iPzfxWEMOoOxKueA9Y6cajMNJeKO410D/GxFTT+2xRyZhTIFiM7BF0hTCbPlIIJIS6TdIYYkIZAjd8FlYqk8ECrhCQn5etzaDx/FWvtC5IvFMJjwAfydLwPFt+iRBfP8fFSuQ6Hw8RE3CxDkU1SV6N6BAEACiteAQXzYcjtL3YCoUlsR8CIHXf+x+gaxK6rPE/XGNg8JX1N5duYDsHBf5rJZrVfImQd5Qy/eddP2/4/NBsV+5zfapMrfx0MIeP/uUWhENkZYUysnum+sn9JhKvqqjbou1gBJh8xXgFEPAqcylSqxgXFY+AcWVCJzKnycjR2ldi0jBWgaYt0ItzwW0oWOaDmxMPnXLMzbozap414BfpdipxWrhYM9e2ldGd7StniJFYN4eAzRGMYlSFd3xA+HLeJzk7EunI3tAn8VMVy7gXcHzyQ4GpA= - file: build/draw.war - skip_cleanup: true - on: - repo: jgraph/drawio - tags: true diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..2e31d48 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,20 @@ +# Changelog + +All notable changes to Planer are documented here. + +## [0.1.0] - 2026-08-08 + +### Added + +- Tauri v2, React, TypeScript, and Vite application baseline. +- Local-first project launcher with recent projects. +- Multi-board workspace with create, rename, duplicate, and delete actions. +- Excalidraw canvas engine integrated into the Planer AppShell. +- Zustand project state and debounced IndexedDB autosave. +- Light and dark appearance support. +- `.planer` and `.excalidraw` JSON exports. +- Windows CI workflow for lint, web build, and Tauri installer artifacts. + +### Removed + +- Legacy draw.io repository metadata and placeholder files. diff --git a/CITATION.cff b/CITATION.cff deleted file mode 100644 index bf630e7..0000000 --- a/CITATION.cff +++ /dev/null @@ -1,13 +0,0 @@ -cff-version: 1.2.0 -message: "To cite draw.io in publications please use:" -type: software -license: Apache-2.0 -abstract: "draw.io - JavaScript Diagramming and Whiteboard Application" -authors: -- name: "JGraph" - website: "http://www.drawio.com" -title: "draw.io" -version: 15.5.2 -date-released: 2021-10-14 -repository-code: "https://github.com/jgraph/drawio" -url: "https://www.drawio.com/" \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index c87b5cb..0000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,49 +0,0 @@ -# Contributor Covenant Code of Conduct: - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers aim to making participation in our project and our community a harassment-free experience for everyone. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or advances. -* Trolling, insulting/derogatory comments, and personal or political attacks. -* Public or private harassment, including focusing on individual developers when a topic should be broadly addressed. -* Publishing others' private information, such as a physical or electronic address, without explicit permission. -* Other conduct which could reasonably be considered inappropriate in a professional setting. -* Not respecting other people's time. -* Being impatient or rude. -* Pressing developers for priority fixes or ETAs. -* Guilting the developers into focusing on your issue(s). -* Ignoring that a request has been declined and repeating your point over and over . -* "X app has it, why don't you?" -* Repeatedly showing an inappropriate level of entitlement, asking for issue status, or bumping issues. - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies to all JGraph projects and the draw.io google groups. - -Project maintainers are not subject to this code. - -## Attribution - -This Code of Conduct is adapted from the [Contributor-Covenant][homepage], version 1.4, available at [https://contributor-covenant.org/version/1/4][version] - -[homepage]: https://contributor-covenant.org -[version]: https://contributor-covenant.org/version/1/4/ diff --git a/ChangeLog b/ChangeLog deleted file mode 100644 index 0274c01..0000000 --- a/ChangeLog +++ /dev/null @@ -1,13365 +0,0 @@ -27-MAY-2026: 30.0.4 - -- Adds GCP3 to build -- Build of version 30.0.4 - -27-MAY-2026: 30.0.4 - - - -26-MAY-2026: 30.0.3 - -- Test Cloud Build trigger -- Test Cloud Build trigger -- Upgrades to JDK 21 -- Adds new GCP3 stencils. Preliminary version, content added, but many things to fix. -- Adds new GCP3 stencils to the sidebar -- Adds pointerEvents=1 style to GCP3 stencils and changes labels to a more conventional format -- Adds multicolor support to some iOS7 stencils -- Adds more multicolor options for some Rack stencils -- Removes duplicate entry -- Removes quotes from bool -- Adds vertical text check to wrapping check [DID-18880] -- Updates DOMPurify from 3.4.2 to 3.4.5 -- Adds lockedGroupIcon, editIcon styles and lock/edit handles -- Adjusts footer position in Notion dialog to improve layout -- Adds editPolygon option in edit menu -- Adds line breaks for dev tooltips -- Blocks drops and child drags inside locked groups -- Pads lock and edit icon handles like the rotation handle -- Adds multicolor support for IBM stencils -- Adds multicolor support for Atlassian stencils -- Refactors an Azure stencil, so it's in line with the others in the set -- Adds multicolor support for a Bootstrap stencil -- Adds multicolor support for EIP stencils -- Adds multicolor support for a Flowchart stencil -- Adds multicolor support for VVD stencils -- Adds multicolor support for some Android stencils -- Promote text and anonymize plugins to core functionality - -15-MAY-2026: 30.0.2 - -- Makes some Mockup shapes multi-color flexible -- Makes some MSCAE shapes multi-color flexible -- Makes some Salesforce shapes multi-color flexible -- Small fix for a Network 2025 shape -- Small bugfix for some Mockup shapes -- Additional color flexibility for some Cisco Safe shapes -- Adds multi color fill for some Citrix stencils -- Adds multi-color support for some GCP2 shapes and stencils -- Adds multi-color support for GCP2 shapes and stencils -- Adds multi-color support for a GCP2 icon stencil -- Adds multi-color support for MS Office stencils -- Fixes size for some stencils in the Rack library -- Adds multi-color support for some Rack stencils -- Makes HPE Aruba Gateways and Controllers subgroup in Rack shapes color flexible -- Makes HPE Aruba Security subgroup in Rack shapes color flexible -- Makes part of HPE Aruba Switches subgroup in Rack shapes color flexible -- Makes some Rack stencils color flexible -- Makes some Rack stencils color flexible -- Makes the rest of Rack/Aruba stencils color flexible -- Small fix for an Aruba switch stencil -- Makes Rack/IBM stencils color flexible -- Stencil size fix for a Rack stencil -- Makes Rack/Oracle stencils color flexible -- Adds multicolor support to Veeam stencils -- Adds multicolor support to EIP stencils -- Adds multicolor support to some GMDL stencils -- Adds multicolor support to some Floorplan stencils -- Fixed NPE in mermaid to draw.io [#drawio-5553] -- Fallback to FO when vertical writing-mode set in HTML [DID-18880] -- Updated github actions, replaced 3rd party actions, and specified needed permissions -- Build of version 30.0.2 - -15-MAY-2026: 30.0.2 - -- Makes some Mockup shapes multi-color flexible -- Makes some MSCAE shapes multi-color flexible -- Makes some Salesforce shapes multi-color flexible -- Small fix for a Network 2025 shape -- Small bugfix for some Mockup shapes -- Additional color flexibility for some Cisco Safe shapes -- Adds multi color fill for some Citrix stencils -- Adds multi-color support for some GCP2 shapes and stencils -- Adds multi-color support for GCP2 shapes and stencils -- Adds multi-color support for a GCP2 icon stencil -- Adds multi-color support for MS Office stencils -- Fixes size for some stencils in the Rack library -- Adds multi-color support for some Rack stencils -- Makes HPE Aruba Gateways and Controllers subgroup in Rack shapes color flexible -- Makes HPE Aruba Security subgroup in Rack shapes color flexible -- Makes part of HPE Aruba Switches subgroup in Rack shapes color flexible -- Makes some Rack stencils color flexible -- Makes some Rack stencils color flexible -- Makes the rest of Rack/Aruba stencils color flexible -- Small fix for an Aruba switch stencil -- Makes Rack/IBM stencils color flexible -- Stencil size fix for a Rack stencil -- Makes Rack/Oracle stencils color flexible -- Adds multicolor support to Veeam stencils -- Adds multicolor support to EIP stencils -- Adds multicolor support to some GMDL stencils -- Adds multicolor support to some Floorplan stencils -- Fixed NPE in mermaid to draw.io [#drawio-5553] -- Fallback to FO when vertical writing-mode set in HTML [DID-18880] -- Updated github actions, replaced 3rd party actions, and specified needed permissions - -11-MAY-2026: 30.0.1 - -- Corrects rounded of Archimate Techonology Functions shape [jgraph/drawio#5571] -- ci: fix MCP index trigger tag pattern -- Shows up to 4 matching pages in omnisearch dropdown - -09-MAY-2026: 30.0.0 - -- Uses cached sanitized label for SVG support detection -- Updates DOMPurify from 3.4.0 to 3.4.2 -- Persists minimized state of floating windows -- Moves adaptive colors to page setup, adds page setup in simple+min UI -- Adds mermaid shapes from native-ports branch -- Sizes math labels and view to rendered MathJax output [jgraph/drawio#3311] -- Fixes math fit-to-window on page switch with sync MathJax typeset -- Adds configurable tooltipFontSize and tooltipMaxWidth -- Adds lockedGroup cell style for grouping cells as one image -- Adds Mindmap Bang, Git Tag, and Smiley Faces in Basic sidebar -- Fixes dropped initialText in cellEditor.startEditing override -- Fixes tab scroller jumping left when switching from rightmost page -- Keeps inline toolbar and popovers inside visible viewport -- Fixed Lucid import chrome extension -- Skips empty drafts on save and cleans up existing ones on startup -- Default adaptive colours no longer simple in desktop - -05-MAY-2026: 29.7.12 - -- Adds boundedLbl for manual input shape -- Removes quip references -- Adds label sanitize https://github.com/jgraph/docker-drawio/security/advisories/GHSA-wj8x-4c77-v8v3 - -04-MAY-2026: 29.7.11 - -- Upgrades to JDK 21 -- Fixes offline local shape search pagination [jgraph/drawio-desktop#2409] -- Updated mermaid to v11.14.0 -- Fixes NPE in insertTableRow on empty table; inserts initial row with single column -- Disables insert column buttons in Format panel for empty tables -- Updates MathJax from 4.1.1 to 4.1.2 -- Replaces diagramly source in GAE release - -01-MAY-2026: 29.7.10 - -- Fixed lightbox mode for MS360 files -- Conf Cloud: Added configuration editor -- Added Confluence specific configurations to config-editor -- Inline configuration editor into dialog instead of iframe -- Update i18n submodule with normalized English capitalization -- Add missed lineend/linestart capitalization in i18n submodule -- Remove unused hateApp/loveIt keys and expand procEng in i18n submodule -- Expand Proc. Eng. abbreviation in PID sidebar and i18n submodule -- Fixes page format options vertical alignment -- Fixes print dialog inconsistencies -- Fixes inconsistent sections in Format panel -- Adds rounding for arrow handle values -- Fixes inconsistent padding for Format sections -- Adds glass style support for ellipse and rhombus shapes -- Show style tiles for mixed selections including edge labels -- Fixes fill pattern issues with crop print and color leak [jgraph/drawio#5546] -- Adjusts padding for edge geometry and stroke panels for improved layout -- Fixes ignored current dark mode in config editor -- Replaces rounded button with checkbox in diagram style panel -- Restyles file properties dialog using dialog style guide -- Restyles font dialog using dialog style guide -- Saving embed macro preview with the actual diagram [DID-18496] -- Recovers broken desktop saved PDFs jgraph/drawio-desktop#2394] -- Removed incorrect gitlinks added for submodules - -20-APR-2026: 29.7.9 - -- Skip clipboard init in read-only chromeless EditorUi -- Restricts third-party gitlab integrations without config [DID-18566] - -17-APR-2026: 29.7.8 - -- Fixes NPE in mxEdgeHandler.reset when handle reset triggers destroy -- Fixes NPE in mxCellRenderer.insertStateAfter when node is orphaned -- Fixes NPE in mxWindow.setLocation when window is destroyed during drag -- Fixes NPE in mxVertexHandler.start when handle shapes are not created -- Fixes NPE in EditorUi.diffPages when pages array contains null entries -- Fixes NPE in EmbedFile.isAutosaveOptional when desc is null -- Add defensive settings check in restoreVisibleWindows - -14-APR-2026: 29.7.7 - -- Creates default viewState in patchViewState when null -- Fix null crashes in HoverIcons and mxConstraintHandler during mouse events -- Handle atob error in noFile fallback when error dialog is dismissed -- Fix null crash in PolygonDialog drag when points array is modified -- Exclude InvalidCharacterError from mergeFile error logging -- Guard against non-function success callback in DriveFile.saveFile -- Fix mxObjectCodec mapping default picking up Array.prototype methods -- Persist size of modal resizable edit/insert dialogs -- Guard pasteCellStyles split against non-string cell styles -- Guard mxSvgCanvas2D.setCssText against non-Element nodes -- Guard mxUtils.setStyleFlag against non-string style values -- Add configurable foldingIconSize for collapse/expand icons -- Enable collapse/expand actions for multi-selection [DID-18161] -- Guard EditorUi.highlightElement against null document.body -- Guard Sidebar.addEntry against non-string tags values -- Skip null-geometry cells in Graph.visitTableCells -- Guard Minimal.js hideCurrentMenu override against null editor -- Guard Sidebar.addCustomEntries against missing entry.libs -- Guard Dialog constructor against null document.body -- Guard updateShapes split against non-string cell styles -- Declare loop variable in Menus.showIconOnly -- Fix diffViewState null asymmetry causing checksum errors in mergeFile -- Persist Selection Only state in export dialogs within session -- Updates DOMPurify from 3.3.3 to 3.4.0 -- Fixes link dialog layout in confluence connect - -12-APR-2026: 29.7.6 - -- Thinner inline toolbar icons and toggle popover on click -- Shows inline toolbar popover above when below viewport -- Fix InlineToolbar ReferenceError in viewer builds -- Disables server logging for handled errors in handleError -- Excludes "Invalid or unexpected token" SyntaxError from server log -- Use specific color dialog titles instead of panel labels -- Move InlineToolbar creation override to InlineToolbar.js - -12-APR-2026: 29.7.5 - -- Fixes URL hash update when switching pages in presentation mode -- Refactors theme submenu addition logic for better readability and maintainability -- Increases minimum width for shape window to improve layout consistency -- Fixes null reference errors in TableLayout, updateTabContainer, and ColorDialog -- A workaround for multipart doesn't support non ascii characters in diagram save comments -- Adds try-catch for image metadata stripping to handle malformed chunks -- Adds realtime checksum debugging documentation to CLAUDE.md -- Fixes null geometry in TableLayout.execute -- Fixes TypeError in EmbedFile.getTitle when descriptor is null -- Fixes JSON.parse error in loadLibraries when external library returns invalid content -- Handle corrupt page data in getPagesForXml without aborting -- Handles corrupted data errors in async pickFolder callbacks -- Extract InlineToolbar into separate InlineToolbar.js file -- Fixes edge color button in InlineToolbar to pass default color and show diagonal light-dark swatch -- Hides inline toolbar when edge color picker is opened -- Hides inline toolbar when edge color is picked or color picker is closed -- Adds arrow key navigation for sidebar search dropdown -- Excludes errors from blob: URLs in client error logging -- Excludes strict mode errors from extensions.min.js in client error logging -- Adds error handling for JSON.parse of create hash parameter in loadFile -- Adds error handling for menu factory in createMenubar -- Logs decodeChild errors to console instead of throwing -- Logs duplicate ID errors to console instead of throwing in putObject -- Adds null check for geometry in mxGraphHandler.start -- Fixes infinite loop in wedgeArrowDashed2 when stepSize is 0 -- Adds null check for bounds in fitDiagramToWindow - -10-APR-2026: 29.7.4 - -- Fixes Sidebar.destroy NPE by destroying sidebar before editor -- Fixes TypeError in updateEdgeState for invalid geometry objects -- Fixes TypeError in mxOutline.getViewBox after destroy -- Fixes TypeError in mxUtils.setStyle for non-string style values -- Refactors link overlay click handling to support custom links and improve link opening logic -- Uses page dropdown with chevronDown in presentation mode toolbar -- Fixes TypeError in refreshBrowserTranslateMirror for destroyed graph -- Fixes TypeError in keydown/keyup handlers for null graph container -- Fixes TypeError in windowResized for destroyed EditorUi -- Fixes TypeError in mxGeometry.equals for non-mxPoint offset objects -- Fixes TypeError in EmbedFile.getDescriptorRevisionId for null descriptor -- Fixes TypeError in mxPolyline.redraw for null node in updatePageBreaks -- Fixes possible NPE in mxCellState.clone -- Fixes possible NPE -- Adds error handling for corrupted data in dialog save actions -- Fixes TypeError in pasteCellStyles for non-string cell style -- Fixes paste style not removing default styles from target [jgraph/drawio-desktop#2383] -- Revert "Fixes encoding for connect attachments comments" - -09-APR-2026: 29.7.3 - -- Changes to dashboard URL -- ci: trigger drawio-mcp search index update on new version tags -- Adds null check for callback in showExportDialog -- Adds null check for setTerminalPoint in cellsRemoved and disconnectGraph -- Fix URIError in StyleFormatPanel.addProperties for malformed style values -- Adds null check for equals in processChange for mxGeometryChange -- Fixes TypeError in addPaletteFunctions by protecting createVertexTemplateFromCells restore in addEntry -- Adds presentation mode for desktop using fullscreen DIV overlay -- Jira Cloud: Fixed a bug in Confluence search [DID-18214] -- Jira Conf: Added support for Forge diagrams in Confluence embed [DID-18214] -- Fix checksum errors from external tools adding extra diagram attributes - -09-APR-2026: 29.7.2 - -- Prefers non-current page in omni search results -- Moves copy/paste text style from edit dropdown to text format panel buttons -- Adds page actions for omnibox access and reuses them in page tab menus -- Restores geUrlLinkContainer class on link dialog URL row for Confluence plugin -- Adds adaptiveColors to viewStateProperties for diff sync -- Fixes NPE in page tab drag when requestAnimationFrame fires after dragend -- Fixes NPE in table color picker when selection changes during async callback -- Fixes stroke color condition typo and non-string style in color scheme panel -- Adds error handling for corrupted data in Graph.decompress -- Adds error handling for corrupted draft data in DraftDialog -- Exposes urlInput property on LinkDialog for stable access from plugins -- Prevents showing sparkle button in simple theme if generate action is null - -08-APR-2026: 29.7.1 - -- Jira Cloud: Fixed Confluence auth in embed [DID-18214] - -08-APR-2026: 29.7.0 - -- Fixes dashboard URL -- Fixes possible NPE for invalid shape picker configuration -- Adds experimental curved text shape in Misc sidebar [jgraph/drawio#2651] -- feat: improve shape search with scored fallback and compound token splitting -- Redesigned edit data dialog -- Redesigned edit geometry dialog -- Redesigned page setup dialog -- Redesigned page background dialog -- Redesigned edit link dialog -- Update dialog style guide -- Redesigned edit library dialog and added resizing -- Redesigned edit diagram dialog -- Redesigned parse dialog -- Redesigned create graph dialog -- Redesigned plugins dialog -- Redesigned text dialog -- Redesigned simple text dialog -- Makes text dialog resizable -- Adds ms365 to proxy list -- Redesigned insert table drop down -- Persists sidebar width across page reloads -- Persists format panel collapsed section states across page reloads -- Persists sidebar library collapsed states across page reloads -- Adds pop animation when inserting single vertices from sidebar via click -- Shortens insert animation and defers selection until it completes -- Adds drag-and-drop reordering of sidebar library entries with persistence -- Convert color picker from modal dialog to non-modal tool window -- Fixes mxWindow title accumulation when browser translation is active -- Adds persistence for window positions, sizes, docking states and visibility -- Fixes layers window disabled state and tool windows not showing on first click -- Fixes recent colors duplication after reset in color picker -- Adds shift+click on tag eye icon to show only that tag -- Adds browserTranslate configuration switch and documentation -- Adds experimental support for browser translation -- Adds browser translation support to GraphViewer and changes default to enabled -- Adds spacer placeholder for page tab drag reorder -- Fixes tab scroller jumping on page activation -- Lazy browser translate init, default on in viewer, same-origin iframe support -- Fixes default color button missing in color picker tool window -- Adjusts animation delay in itemClicked function for faster transitions -- Fixes typing shim stealing focus from clipboard handler during copy/paste -- Adds Ctrl/Cmd+Enter shortcut to omnisearch dropdown for first entry after separator -- Fixes clipped SVG borders in clipSvgDataUri [jgraph/drawio#5534] -- Fixes stencil connection points with direction and aspect=fixed [jgraph/drawio#5537] -- Fixes stencil edge routing bounds with direction and self-loop state corruption [jgraph/drawio#5537] -- Improved localized shape search using fast, local reverse lookup for available resources [jgraph/drawio#5518] -- Adds copy/paste text style feature [jgraph/drawio#4752] -- Adds rounded border support for image shapes -- Fixes Find/Replace window not showing on first invocation from omni search -- Adds exact page name match in omni search when query ends with space -- Removes enableAi hard coded to true in conf connect plugin -- Defaults enableAi to false for new Confluence installs - -02-APR-2026: 29.6.10 - -- Fixes build dashboard URL -- Fixes selection only option in print dialog for single page files [jgraph/drawio#5530] -- Remove unused GraphViewer.mergeXmlDelta and helper functions -- Adds pop effect easter egg to create hash property -- Add collapsible sections to format panel -- Increase sidebar padding and spacing for lighter feel -- Increase sidebar padding and spacing for lighter feel -- Enhance More Shapes dialog with new styles and layout adjustments -- Improve More Shapes dialog footer spacing and alignment - -01-APR-2026: 29.6.9 - -- Adds elastic pop animation and popIn/popOut custom link actions -- fix: skip spacebar panning when focus is in a form element [jgraph/drawio#5529] - -31-MAR-2026: 29.6.8 - -- Adds GraphViewer.mergeXmlDelta -- Fixes dy is not defined in EditorUi.showPublishLinkDialog -- Fixes TypeError in translateCell for invalid geometry objects -- Fixes TypeError in GraphViewer hiddenTags when diagrams is undefined - -31-MAR-2026: 29.6.7 - -- Adds compressed XML support for SVG CLI export [jgraph/drawio-desktop#2143] -- Fixes rasterized fill patterns in PDF export [jgraph/drawio#3620] -- Enhance SVG text rendering by adding support for block elements and improving HTML to SVG conversion -- Add .claude/launch.json to .gitignore -- Enhance HTML to SVG conversion by adding word wrap and HTML tags -- Updates DOMPurify from 3.3.2 to 3.3.3 -- Add BR support to HTML-to-SVG conversion and fix wrapped line heights -- Fixes inconsistent table row and column resizing -- feat: add configuration editor dialog with tabbed interface for visual editor and JSON -- docs: add guidance for updating configuration switches in Editor.configure -- feat: Enhance SVG conversion for HTML blocks and inline elements -- fix: Improve dy calculations for superscripts and subscripts in SVG rendering -- fix: Hide inline toolbar during all handle and cell drag operations -- Fixes inconsistent file open handling -- fix: Use whiteSpace instead of svgWhiteSpace when foreignObject is used -- fix: Correct typo in ChangeLog for animated gif export -- Add "Use Current" buttons for default styles in config editor -- fix: Update redrawInnerBends to handle empty geometry points for bends opacity -- fix: Auto-detect Android tablets in Chrome's desktop UA mode [jgraph/drawio#2090] -- Enables Generate dialog with clipboard actions in desktop app -- feat: add setInnerBendsOpacity function to manage inner bends opacity -- feat: add optional optimizeHtmlLabels config to clean up HTML labels [jgraph/drawio#5516] -- feat: Add "Search Shapes in Open Libraries" to omni search [jgraph/drawio-desktop#2320] -- Update resources submodule with translations for searchShapesInOpenLibraries -- fix: round text y-coordinates to 2 decimals in HTML-to-SVG label conversion -- Update resources submodule with translation fixes across 15 languages -- perf: reuse persistent div in getSizeForString to avoid repeated DOM reflows -- refactor: remove unused enableWrap parameter from mxText.updateSize -- refactor: remove IE8 dead code from mxText -- refactor: remove IE and IE11 dead code across entire codebase -- Update resources submodule with removed unused improveContrast key -- feat: make default file type configurable via Editor.configure [jgraph/drawio-desktop#1430] -- Update resources submodule with 9 unused resource keys removed -- fix: respect hidden tags in PDF export and printing [jgraph/drawio#3183] -- feat: populate tags URL/config param with current hidden tags state -- feat: streamline hidden tags handling across export and UI components -- feat: add root/layer metadata and type attribute to svgdata plugin SVG export [jgraph/drawio#5527] -- fix: always prevent default scroll on spacebar when activating panning [jgraph/drawio/issues/5524] -- fix: use this.format instead of undefined self.format in wrapSvgBlockElements -- fix: replace transform with zoom for improved print preview scaling -- feat: add enableLocalFonts config flag for desktop font scanning [jgraph/drawio-desktop#2371] -- fix: resolve %pagenumber% for each page during all-pages PDF export [jgraph/drawio-desktop#2376] -- Refactor export dialog layout and styles -- feat: extract embedded XML from PDF files in CLI export [jgraph/drawio-desktop#2160] -- fix: apply --width/--height to PDF export in CLI [jgraph/drawio-desktop#2162] -- feat: add contractParent and groupPadding styles for auto-shrinking groups [jgraph/drawio#618] -- Restyle embed dialogs and add auto-height for CustomDialog -- Move dialog style guide to separate file and add auto-height to print dialog -- Restyle config-editor dialog to match main app theme -- fix: avoid inline toolbar overlap with edge labels and child elements -- Remove agent and version attributes from mxfile -- fix: disable MathJax inline line breaking for edge labels [jgraph/drawio#5514] -- Add fixedHeader style for swimlane shapes - -24-MAR-2026: 29.6.6 - -- Enhances tab activation and scrolling behavior in the page tab container -- Threads done callback through openFiles/openFileHandle/openLocalFile -- Remove launch configuration file for development servers -- Sanitizes invalid VSDX property names for best-effort import -- Add clipboard actions to generate dialog [jgraph/drawio#5507] -- Update subproject commit reference in resources -- Add smooth scrolling to tab on click in createTab function -- Update chat window dimensions in openGenerateDialog function -- Allow docked windows to be resized -- Update clipboard copy label in ChatWindow dialog -- Adds animated gif export to atlas.min.js -- Add insert diagram from clipboard option in generate dialog -- Improve generate dialog dropdown labels for AI options -- Fixes encoding for connect attachments comments - -23-MAR-2026: 29.6.5 - -- Corrects dashboard path -- Avoid InlineToolbar overlapping edge segments -- Remove embedded XML from images copied to clipboard -- Add showLinkIcons and showTooltipIcons support to GraphViewer -- Fix word wrapping mismatch in autosizeText in-place editor -- Fix MathJax path in embed dev mode -- Fix fill patterns to scale correctly with diagram zoom level -- Fix touch input on Android tablets using Chrome desktop site mode -- Fixes wrong SVG scaling in desktop PNG export [drawio-desktop#1954] -- Adds intersectionSelect configuration switch [drawio#5508] -- Fixes undo for initial fill style change (eg. from auto to hatch) -- Fixes Cmd+, for Chrome settings on macOS -- Fixes fill pattern offset shifting on zoom and window resize -- Add exportProtocol and diffSync options to JSON embed protocol -- Adds configurable shape picker via Editor.configure() [jgraph/drawio#1812,jgraph/drawio#1197,jgraph/drawio#4130,jgraph/drawio#3783] -- Marks imported files with updates page links as dirty [DID-17660] -- Opens draw.io/VSDX files in same window when dropped on blank file - -18-MAR-2026: 29.6.4 - -- Tidies changelog -- Add dev server launch configurations -- Align custom paper size unit dropdown with other format panel elements -- Removes exits from preprocessor -- Fixes possible NPE in mxCellEditor.resize -- Add noExitOnCancel option to template protocol action -- Update InlineToolbar styles for improved dark mode support - -16-MAR-2026: 29.6.3 - -- Fixes NPE - -16-MAR-2026: 29.6.2 - -- Fixed swimlane business template [DID-17965] -- Updates DOMPurify from 3.3.1 to 3.3.2 -- Update border color for dark mode dialog windows -- Fix format=0 to hide format panel initially instead of disabling it -- Disable window docking in embedInline mode -- Add sidebarEnabled property to manage sidebar visibility in EditorUi -- Reposition icon in InlineToolbar to avoid overlap with edge waypoint handles -- Adjust minimum widths for toolbar and menus based on embed parameter; enhance flex properties -- Remove minWidth attribute from viewMenu and adjust separator addition in Toolbar initialization -- Enhance passive scroll mode handling in EditorUi to prevent keystroke capture and forward scroll events to parent frame -- Enhance fitWindow method to support centering on page within viewport -- Enhance theme handling for 'kennedy' in EditorUi; adjust format panel and sidebar visibility based on window size -- Fixes delayed scroll for fitDiagramOnLoad option -- Ignores invalid scratchpad data [jgraph/drawio-desktop#2341] -- Adds fitDiagramOnPage switch [jgraph/drawio#5415] -- Refactors getXml function to simplify XML serialization process -- Refactors isRelativeUrl function to improve URL validation logic -- Implements event firing for rubberband selection updates and adds UPDATE event constant -- Adds default link target for SVG exports in Graph class -- Sets mxIsElectron to false in embed mode for better compatibility -- Adds support for plugin menu items and hides specified menu items -- Enhances configuration options for EditorUi, adding support for compact mode, auto-focus suppression, and customizable message sources in embed mode. -- Refactors updateAutosizeTextFontSize to accept style parameter for improved flexibility -- Adds autosize text font size update on text spacing change -- Refactors toggleShapesPanel to include noScroll parameter for improved control over scrolling behavior -- Refactors diagram fitting logic to use initialFitDiagram method for improved readability and consistency -- Adds optional connect handle functionality -- Adds configuration option for connect handle visibility -- Enables debug tooltip with dev-tooltips parameter -- Adds support for passive scroll and no resizers configuration options -- Removes unused code for IE -- Adds support for pasting at mouse pointer if enabled -- Adds edit tooltip functionality for cells in the graph -- Adds support for internal clipboard configuration in Editor and EditorUi -- Adds support for source metadata handling in diagram parsing -- Adds load event for mermaid datain embedded editor -- Disable auto focus in embedded editor with noAutoFocus -- Refactor smartFit action to streamline lightbox resizing and integrate with button click -- Conditional key binding for 'selectVertices' action based on dev parameter -- Enhance connect handle by adding shape picker on click -- Add default connection arrows and connectable settings to Graph prototype -- Improve connectable and connection arrows settings handling in readGraphState -- Add default folding enabled setting and update related configurations -- Force show shape picker on connect handle click -- Add URL parameters for grid and page visibility settings -- Enhance GraphViewer responsiveness by adding max scale configuration -- Refactor message handling in export and autosave processes -- Add custom scale handling and margin adjustments for embedded diagrams -- Add inline embedding support for graph translation adjustments -- Enhance inline embedding by adding UI visibility controls for toolbar and windows -- Enhance responsiveness in GraphViewer by adjusting viewBox calculations and adding border handling -- Add context menu enhancements for passiveScroll mode with shape picker integration -- Fixes insert for cancel in insert polygon -- Adds support for styles in parsed mermaid diagrams [jgraph/drawio#3884] -- Improve overlap detection for inline toolbar positioning -- Delay fitting of popup menu to ensure it is rendered correctly in the viewport -- Add clearSelection action to graph for improved user interaction -- Refactor responsive border handling in GraphViewer for consistent scaling behavior -- Add resetViewOnSave configuration to reset view position on save -- Preserve original XML attribute values in readGraphState for consistent state management -- Update view state management to preserve view position on save -- Add copyStyle/pasteStyle to context menu in passiveScroll mode -- Rename clearSelection embed action to resetEditor and hide menus -- Add bend style dropdown to inline edge toolbar -- Add modelBounds to embed protocol and xml export format -- Honor preset maxWidth in responsive scaling for diagrams -- Refactor maxWidth calculation for responsive scaling in GraphViewer -- Sync fullscreen button state with actual panel visibility -- feat: add noPrint and noExport URL params to hide chromeless toolbar buttons -- Fix inline toolbar icons not visible in dark mode -- Updates all actions to node 24 - -05-MAR-2026: 29.6.1 - -- Removes i18n updating from actions -- Fix Cloud Build when using custom service account -- Hide cell ID and make Edit Data dialog resizable for file-level vars -- Prevent focus stealing from external input elements in showTypingShim [DID-17955] -- Adds showTooltipIcons switch -- Reset sync channel on makeCopy to prevent cross-talk with original file [jgraph/drawio#5487] -- Increase dialog height for EmbedDialog instances to improve layout -- Make EmbedDialog resizable with flex layout -- Hides hints while zooming [jgraph/drawio#5486] - -27-FEB-2026: 29.6.0 - -- Fix MS365 SharePoint file picker integration -- Sets ms365 integration live -- Adds format=0 and sidebar=0 URL params for minimal theme - -26-FEB-2026: 29.5.6 - -- AWS shapes update -- Adds ms365 URL parameter - -26-FEB-2026: 29.5.5 - -- Fixes possible NPE in mxLayoutManager -- Fixes return value in Graph.cellsResized override -- Fixes line submenu in edge context menu -- Adds new dialog styles -- Adds file-specific variables [jgraph/drawio#549] [jgraph/drawio#2911] [jgraph/drawio-desktop#2108] - -25-FEB-2026: 29.5.4 - -- Fixes elbow edge style icons -- Fixes update of toolbar edge styles with selected vertices -- Fixes order of horizontal and vertical edge option in Format panel, toolbar, inline toolbar and context menu -- Makes inline toolbar visible by default, uses line menu -- Fixes tooltips for inline toolbar -- Fixes inconsistent edge menus -- Adds dockable tool windows -- Fixes possible stale dropdown menu -- Fixes clipping of labels for Chrome on Windows -- Fixes inconsistent tooltips in Format panel -- Adds tooltips for checkboxes in Format panel -- Adds autosizeText cell style and sticky notes with automatic text size [jgraph/drawio#2570] -- Fixes background image translation in GraphViewer (almost all code overrides getGraphBounds of graph and not viewer which graph.fit uses) [DID-17873] - -24-FEB-2026: 29.5.3 - -- Hides link icons if showLinkIcons disabled -- Fixes IME first keystroke [jgraph/drawio#3642] [jgraph/drawio#4801] [jgraph/drawio#313] -- Fixes broken copy/paste after IME fix -- Fixes error message for missing animations -- Adds zigzag shape in Misc sidebar [jgraph/drawio#4663] -- Adds insert and edit polygon actions [jgraph/drawio#5292] -- Fixes broken panning after IME fix -- Adds optional inline toolbar for edge styles [jgraph/drawio#4794] -- Simplifies horizontal and vertical elbow edge style icons -- Fix VSDX import: make Visio containers non-connectable and add hyperlink null guard [DID-17660] - -22-FEB-2026: 29.5.2 - -- Deletes unused code causing security warnings -- Tidies changelog -- Updates excludes -- Fixes zoom while drawing freehand [jgraph/drawio#3959] -- Updates MathJax from 4.1.0 to 4.1.1 -- Fixes panning in active freehand mode [jgraph/drawio#4080] -- Adds animated gif export [jgraph/drawio#3739] -- Moves animated gif functions to correct location -- Fixes error for saving scratchpad [jgraph/drawio-desktop#2341] -- Adds flow direction and fixes background for animated gif export -- Limits show link icons to main graph -- Fixes resources merge issue -- Reviewed and updated translations - -20-FEB-2026: 29.5.1 - -- Updates to emf importer - -19-FEB-2026: 29.5.0 - -- Initial draft for link icon -- Uses validateCellState for update of link icon -- Adds enableExportUrl configuration switch [jgraph/drawio#4336] [jgraph/drawio#5431] -- Fix emoji and supplementary Unicode characters corrupted after save/reload -- Bezier curve falls back to quad for cases it can't handle [jgraph/drawio-desktop#2333] -- Missing var in actions.js [jgraph/drawio#5457] -- Fixes rename and saveAs for StorageFiles -- New emf converter - -14-FEB-2026: 29.4.0 - -- Handles 404 in GitLab group iteration [jgraph/drawio#4528] -- Adds visible modifiers and events for actions -- Fixes ignored parameter in addItem -- Fixes ignored pv and grid URL parameters for create hash with xml -- Sets maximum initial zoom for create hash to 1.2 -- Makes connection points dialog resizable [drawio/discussions/5442] -- Adds resizing for image crop dialog [drawio/discussions/5203], handles overflows [drawio/discussions/5478] -- Adds fitDiagramOnLoad switch [jgraph/drawio#5415] -- Fixes realtimeStateChanged triggers notification repaint -- Adds message type for create hash property -- Fixes grid jump while zoom [jgraph/drawio#1440] -- Uses current production wheelZoomDelay -- Adds markers for arc shape [jgraph/drawio#3639] -- Removes fill and gradient option for arc shape - -06-FEB-2026: 29.3.8 - -- Improves create hash handling -- Handles overflows in error dialog -- Conf Cloud: Removed export to URL option [DID-17708] -- Adds debug output in executeCreateHash - -03-FEB-2026: 29.3.7 - -- Adds Claude 4.5 Opus for local LLMS and removes whitespace from response XML -- Shows AI button in Conf and Jira toolbar if not disabled -- Adds scrollbars for overflow content in Generate window -- Bump qs, body-parser and express in /etc/centralizedLogging/GCP -- Adds XML type for create hash property -- Fits create hash property diagram to window - -27-JAN-2026: 29.3.6 - -- Adds delete all pages option -- Improvements for XML import -- Adds custom line dash pattern options -- Update translations submodule to 996b60e -- Disables file size stats -- Adds claude guide to root -- Fixes handling of inherit color value -- Fixes overflow, adds option to insert layer after current layer, moves selection layers [jgraph/drawio#5438] -- Update translations submodule to 6650194 -- Update translations submodule to 645f7e6 -- Conf Cloud: Fixed race condition in OAuth requests when multiple viewers are in the same page [DID-17497] -- VSDX Import: Fixed some NPE and added a case for embedded images [DID-17282] - -20-JAN-2026: 29.3.5 - -- Add simple.js build to atlas.min.js - -20-JAN-2026: 29.3.4 - -- Added some css filtering for @import and absolute urls [bugcrowd 31d70940-348e-4d9e-ae26-a20396ef5d69] -- Improvements for [bugcrowd 31d70940-348e-4d9e-ae26-a20396ef5d69] -- Adds Kalaallisut to supported languages - -19-JAN-2026: 29.3.3 - -- Adds expandToFront cell style [jgraph/drawio#4413,jgraph/drawio#5419] -- VSDX Import: Improved background color parsing [DID-17382] -- Fixes hide of shape picker on hover icon reset -- Moves autosize text to Misc sidebar [jgraph/drawio-desktop#2313] -- Fixes drag and drop in layers dialog -- Augments existing URL parameters with #P -- Handles test mode in getEditBlankUrl -- Creates temporary file after close -- Fixes saveAs for browser files -- Uses #P for edit as new -- Clears #P hash property in client mode, keeps saved temp file in same window - -15-JAN-2026: 29.3.2 - -- Adds shift+click on app version in desktop to enable debug mode -- Adds additional check for external change detection [2312] -- Adds bezier style option for curved edges -- [conf cloud] Fixed extra whitespace when centering is enabled [DID-17409] -- Adds support for optional tags attribute in mxlibrary node -- Changes beizer to use standard cubic control point positions -- Adds initial NURBS support [jgraph/drawio#2104] - -13-JAN-2026: 29.3.1 - -- Fixes import of cropped SVG images [jgraph/drawio#5015] -- Adds optional size parameter for export action [jgraph/drawio#4536] -- Adds Mermaid support for load action [jgraph/drawio#5215] -- Removes metadata from JPEG/PNG images [AMS-49114] -- Adds removeImageMetadata config switch -- Fixes check for image type in stripImageMetadata -- Adds optional cell style compression for images and stencils in model codec -- Adds file size stats - -08-JAN-2026: 29.3.0 - -- Fixes possible NPE -- Merges built preprod back to dev as PR rather than commit -- Adapts validate actions for PR merge instead of cherry picking -- Fixes possible invalid default parent -- Hides current menu when windows are moved or resized -- Adds layer selection in layers dialog [jgraph/drawio#5408] -- Fixes inconsistent menu order for current layer -- Fixes possible NPE [jgraph/drawio-desktop#2307] -- Adds legacy support for anchor points [jgraph/drawio-desktop#2306] -- Fixes resources for selecting and selected objects in layers -- Adds defaultTextStyle config switch -- Adds autosize for shape picker text [jgraph/drawio#5409] -- Disables legacy anchor points only on unconnected flipped shapes - -06-JAN-2026: 29.2.10 - -- Fixes help link in chat dialog -- Fixed a bug in vsdx importer [DID-17282] -- Improves generate dialog for custom LLMs -- Changes default for desktopAutoSync to true [jgraph/drawio-desktop#2227] -- Uses fonts loader path for MathJax -- Fixes multi-line issue -- Sanitize HTML output in ChatWindow -- Improves layers dialog [jgraph/drawio#5408] - -19-DEC-2025: 29.2.9 - -- Updates MathJax fonts to 4.1.0 - -18-DEC-2025: 29.2.8 - -- Adds configuration options for custom LLMs -- Updates DOMPurify from 3.3.0 to 3.3.1 -- Updates MathJax from 4.0.0 to 4.1.0 -- Adds enableNativeClipboard config switch [jgraph/drawio#5383] -- Renames enableChatGpt to enableAi -- Checks for string color instead of object [DID-17282] - -10-DEC-2025: 29.2.7 - -- Reverts edit icon for local .html files [jgraph/drawio#5375] - -08-DEC-2025: 29.2.6 - -- Changes edit icon naming clash caused by [jgraph/drawio#5375] - -08-DEC-2025: 29.2.5 - -- Fixes anchor points for flipped shapes [jgraph/drawio#5341] - -04-DEC-2025: 29.2.4 - -- Adds edit icon for local .html files [jgraph/drawio#5375] - -02-DEC-2025: 29.2.3 - -- Minor UI fixes - -01-DEC-2025: 29.2.2 - -- AI and licensing tuning - -27-NOV-2025: 29.2.1 - -- Fixes possible NPE - -27-NOV-2025: 29.2.0 - -- Enhances pagecount and pagenumber placeholders [jgraph/drawio#3378] -- Adds support for CSV in create hash property [jgraph/drawio#5273] -- Replaces smart template section with generate window - -21-NOV-2025: 29.1.1 - -- [conf connect] License tuning - -19-NOV-2025: 29.1.0 - -- Makes attribute encoding deterministic [jgraph/drawio#1556] - -15-NOV-2025: 29.0.3 - -- Math base path and CSP corrections - -13-NOV-2025: 29.0.2 - -- Fixes math PDF export - -13-NOV-2025: 29.0.1 - -- Updates mermaid to 11.12.1 -- Fixes math print output - -12-NOV-2025: 29.0.0 - -- Updates to Mathjax 4.0.0 -- Fixes edge labels in Mermaid flowcharts [DID-16838] -- Removes unused files for MathJax [mathjax/MathJax#3436] -- Cisco stencil updates - -03-NOV-2025: 28.2.9 - -- Updates DOMPurify from 3.2.5 to 3.3.0 -- Adds handling of light-dark grid settings [jgraph/drawio#5285] -- Fixes cursor state in freehand mode [jgraph/drawio#4936] -- [conf forge] Changes to allow plantUml - -23-OCT-2025: 28.2.8 - -- Hides inactive virtual bends for entity relations -- Fixes preview button in smart template section -- Fixes possible NPE for dependent properties -- Improves search for fully qualified shape names -- Fixes color picker for valid shape colors -- Fixes watch new file handles, adds desktopAutoSync switch (beta) [jgraph/drawio-desktop#2227] -- Fixes possible stale draft in desktop -- Adds open recent in simple UI for desktop [jgraph/drawio-desktop#2221] - -14-OCT-2025: 28.2.7 - -- Adds support for animations on multiple pages [jgraph/drawio#5262] -- Fixes q.getStatus is not a function in OneDriveClient -- Fixes possible a.split is not a function in StyleFormatPanel - -13-OCT-2025: 28.2.6 - -- [conf cloud] Notifies user when app is uninstalled in case of forge migration -- Makes some Cisco stencils multi-color flexible -- Fixes blurry image export [jgraph/drawio-desktop#2209] -- Adds copy marker option [jgraph/drawio#5280] -- Fixes inconsistent default text styles and sizes [jgraph/drawio#4818] -- Enables bulk modification of container property -- Shows shape name in cell properties [jgraph/drawio#5288] -- AWS shapes update -- Adds opacity option in color dialog [jgraph/drawio#5256] -- Fixes text wrapping for process shape with fixed size [jgraph/drawio#5296] -- Uses single quotes for font names with spaces [jgraph/drawio-desktop#2214] -- Fixes click handling on SVG embed option labels -- Disasbles convert label option for unformatted text -- Fixes property panel in min UI [jgraph/drawio-desktop#2176] -- Fixes context menu for multiple selected edges [jgraph/drawio#4791] - -24-SEP-2025: 28.2.5 - -- Fixes handling of alpha values in inverted colors [DID-16387] - -22-SEP-2025: 28.2.4 - -- Adds support for HEX colors with transparency -- Adds dash-dot line pattern [jgraph/drawio-desktop#2184] -- [conf cloud] Adds option to build page IDs mapping manually using DB files [DID-15536] -- Fixes possible NPE for VSDX import [jgraph/drawio#3507] -- Changes unconnected terminal dims to [0,0] [jgraph/drawio#5242] - -16-SEP-2025: 28.2.3 - -- Adds dropbox.com to connect-src CSP - -15-SEP-2025: 28.2.2 - -- Fixes error dialog when panning into shapes panel [jgraph/drawio#5263] -- Changes notification URL to support diagrams.net and draw.io -- Registers service worker with enableSW=1 URL parameter - -11-SEP-2025: 28.2.1 - -- Adds gliffy shape mappings [DID-16199] -- Rack cabinet shape layout bugfix [jgraph/drawio#4823] - -05-SEP-2025: 28.2.0 - -- Adds gliffy stencil mappings [DID-16201] - -28-AUG-2025: 28.1.2 - -- Fixes broken image in Office app [jgraph/drawio#5219] -- X keyboard shortcut hides freehand window [jgraph/drawio#5217] -- Makes CSV import dialog resizeable -- Fixes label position for Network 2025 shapes [jgraph/drawio#5244] -- Updates mermaid to v11.10.1 - -21-AUG-2025: 28.1.1 - -- [conf cloud] Workaround for CONFCLOUD-80136 bug [CES-99755] -- [conf cloud] Removed color name from the anchor including a status macro [DID-16085] -- Fixes scrollbars in nested menus [jgraph/drawio#5231] -- Fixes handling of gapi-stealth for file menu, save and link dialog [DID-15625] -- Adds lockdown via app configuration -- Fixes editing of draft files in desktop - -12-AUG-2025: 28.1.0 - -- [conf cloud] Fixes anchors with special characters [DID-15965] -- [conf cloud] Adds caching to page IDs import [DID-15536] - -08-AUG-2025: 28.0.9 - -- [conf cloud] Recovers from bug in page IDs import where server drawio macros are changed to embed (re-indexing reconverts them) [DID-15899] - -08-AUG-2025: 28.0.8 - -- Fixes mermaid Gantt diagrams width [DID-15926] -- [conf cloud] Reduces diagram preview image size to fit more in search-recent -- [conf cloud] Removes edit-settings buttons in Livedoc viewer [DID-15961] -- [conf cloud] Fixes a bug in page IDs import where server drawio macros changes to embed [DID-15899] - -25-JUL-2025: 28.0.7 - -- Fixes zoom out icon in draft dialog [jgraph/drawio-desktop#2154] -- Fixes clipboard.read is not a function -- [conf cloud] Fixes page IDs import, page is not found [DID-15536] - -17-JUL-2025: 28.0.6 - -- Fixes missing File menu option - -16-JUL-2025: 28.0.5 - -- [conf cloud] Stops converting server macro with aspectHash to embed macro [DID-15703] -- Add LC case for UserImage2Block shape [DID-15706] -- Fixes mermaid colors in dark mode [DID-15734] - -12-JUL-2025: 28.0.4 - -- Adds pages option to export URL dialog -- Handles backgroundColor in HTML to SVG -- Adds resizing for plantuml and mermaid edit dialog -- Removes image option in plantuml dialog - -11-JUL-2025: 28.0.3 - -- Activates convert HTML to SVG and removes feature flag - -11-JUL-2025: 28.0.2 - -- Conf Cloud: Handled incorrect return value from convert-ids-to-types API [DID-15536] - -10-JUL-2025: 28.0.1 - -- Adds some HTML to SVG conversion - -10-JUL-2025: 28.0.0 - -- Fixes possible ClipboardItem.supports is not a function -- Fixes possible overflow for sidebars on small screens -- Fixes Alt+Click in sidebar and shape picker [jgraph/drawio#4720] -- Fixes possible NPE in mxGraph.intersects -- Removes Twitter and Facebook button in Embed dialog [DID-15625] -- Enables PlantUML menu option if URL was customized [DID-15625]\ -- Adds gapi-stealth URL parameter for stealth mode with Google Drive [DID-15625] -- Adds resizing for metadata dialog [jgraph/drawio#375,jgraph/drawio#5142] -- Hides Publish and Embed menu when offline [DID-15625] -- Hides Publish and Embed menu when offline in Minimal theme [DID-15625] -- Updates icon cache - -30-JUN-2025: 27.2.0 - -- Adds copy as SVG, improves handling of clipboard data -- Fixes theme buttons on touch devices -- Fixes justifyfull [jgraph/drawio#526] -- Fixes enter keystroke in omni search box -- Fixes use of generic font-families [jgraph/drawio#4998] -- Fixes window tooltips i18n [jgraph/drawio#4654] -- Adds shadows option for print and PDF export, uses CSS filter for global shadow [jgraph/drawio-desktop#2133] -- Fixes floating panels on mobile [jgraph/drawio#5134] -- Fixes exported SVG image sizes [jgraph/drawio#4814] -- Fixes diagram insert position in Notion extension [jgraph/drawio#5123] -- Fixes disabled dark mode in Firefox 140 -- Adds miterlimit property for shapes [jgraph/drawio#4706] -- Fixes PDF title and page numbers [jgraph/drawio-desktop#2130,jgraph/drawio#4102] -- Adds experimental pipe shape, improves edge style panel [jgraph/drawio#5144] -- Fixes miter limit default value -- Adds support for SVG background images with dark mode -- Fixes offsets in image export [jgraph/drawio#5122] -- Fixes possible NPE in Find dialog [jgraph/drawio#5143] - -16-JUN-2025: 27.1.6 - -- Hides dark mode toggle in unsupported browsers -- Updates SAP library preview -- Service worker optimizations - -13-JUN-2025: 27.1.5 - -- [conf cloud] Fallback for more info call failing [DID-15438] -- [jira cloud] Fixing Jira re-indexing [DID-14930] -- Fixes CSS issues in Atlas theme [jgraph/drawio#5119] -- Updates SAP shapes -- Adds app.diagrams.net specific service worker - -04-JUN-2025: 27.1.4 - -- [conf cloud] Removed upload option from embed diagram macro -- Adds ge prefix for panel-color and dark-panel-color CSS variable -- Fixes editing of property values [jgraph/drawio#5102] - -02-JUN-2025: 27.1.3 - -- Lowers specificity of generic CSS selectors -- Fixes handling of transparent background in explore mode - -30-MAY-2025: 27.1.2 - -- Makes certain css selectors less generic [DID-15398] - -28-MAY-2025: 27.1.1 - -- [conf cloud] Fixed permissions check for diagram edit [DID-15344] - -28-MAY-2025: 27.1.0 - -- Refactors GCP2 shapes [jgraph/draw#5006] -- [conf cloud] Making Gliffy version pinning optional (off by default) [DID-15346] - -23-MAY-2025: 27.0.9 - -- Uses per-cell container for inputs/selects in property rows [jgraph/draw#5086] - -22-MAY-2025: 27.0.8 - -- Fixes possible notification NPE - -22-MAY-2025: 27.0.7 - -- Restricts notifications to own diagrams.net domains [jgraph/docker-drawio#187] -- [conf cloud] Removes blank and smart templates from Confluence Template diagrams [DID-14800] -- [conf cloud] Fixes editor hang in Template editor [DID-14800] - -16-MAY-2025: 27.0.6 - -- Fixes paste location to use position of mouse [drawio-desktop#2096] - -13-MAY-2025: 27.0.5 - -- Skips service worker install on first load - -12-MAY-2025: 27.0.4 - -- Fixes image export background [jgraph/drawio-desktop#2091] -- Adds warning for plantuml deprecation - -09-MAY-2025: 27.0.3 - -- Moves bootstrap and main code to external JS files - -08-MAY-2025: 27.0.2 - -- Changes cache url for app.diagrams.net -- Builds xml2js - -07-MAY-2025: 27.0.1 - -- Sorts xml2js file list deterministically - -07-MAY-2025: 27.0.0 - -- Disables splash screen by default - -06-MAY-2025: 26.3.0 - -- Improves XML parsing with invalid characters [DID-15090] -- Renames Network libraries -- AWS update -- Updated Mermaid to v11.6.0 -- Fixes SVG output of mermaid in some special cases [#drawio-5046] -- Fixes tab selection after label change [jgraph/drawio#5050] -- Requires forceMigration=1 to run www.draw.io migration - -23-APR-2025: 26.2.15 - -- Internal build - -22-APR-2025: 26.2.14 - -- Fixes NPE in VSDX import -- Fixes initial sidebar width for Firefox -- Adds urlParam, enableSW, to force enable service worker -- Adds missing jira cloud viewer html to SW - -16-APR-2025: 26.2.13 - -- Adds missing Exit Group and Home menu items [jgraph/drawio#5021] - -11-APR-2025: 26.2.12 - -- Fixes build error - -11-APR-2025: 26.2.11 - -- Moves Mermaid menu from Advanced to Insert menu -- [conf cloud] Adds option to Gliffy mass import to check current page when linked diagrams fail [DID-14921] -- [vsdx]: Partial fix for themed fill color[DID-14963] - -10-APR-2025: 26.2.10 - -- [conf cloud] Fixed diagrams in custom templates [DID-14800] - -07-APR-2025: 26.2.9 - -- [conf cloud] Fixed migrated server custom libraries names for Conf v8.x [DID-14902] - -05-APR-2025: 26.2.8 - -- Adds ALLOW_INTERNAL_10_NET=1 for 10.x.x.x proxy usage [jgraph/drawio#4966] -- Adds try/catch for TENANT_ID exception [jgraph/drawio#4909] -- Moves mermaid2drawio.js back into public build - -05-APR-2025: 26.2.7 - -- [conf cloud] and GraphViewer. Removes tooltips config. Pages use file tooltips config [DID-14767] -- Fixes filename and comments button for Conf Cloud - -04-APR-2025: 26.2.6 - -- Updates DOMPurify from 3.2.4 to 3.2.5 -- Adds primaryColor option for custom shape properties -- Adds mxUtils.getColorValue -- [conf cloud] Adds support for live docs [DID-14520] -- Adds Note shape in Misc sidebar -- [conf cloud] Fixed migrated server custom libraries names [DID-14902] - -03-APR-2025: 26.2.5 - -- Fixes Google Drive folder picker z-index -- Fixes OneDrive folder picker size -- [conf cloud] Fixes headers anchor [DID-14864] - -02-APR-2025: 26.2.4 - -- Fixes possible NPE in Sidebar.disablePointerEvents -- [conf cloud] Added support for imported Gliffy images with the added version prefix to the name [DID-14867] -- Fixes possible NPE in ColorDialog - -01-APR-2025: 26.2.3 - -- [conf cloud] Fixes viewer background - -31-MAR-2025: 26.2.2 - -- Adds Tamil translations -- Fixes Confluence cloud lightbox [DID-14879] - -31-MAR-2025: 26.2.1 - -- [conf cloud] Fixes possible NPE in LinkDialog -- Fixes updateUserElement is not a function -- Fixes initial state of default theme in embed mode -- Fixes background for Notion extension - -31-MAR-2025: 26.2.0 - -- [conf cloud] Removes lucidchartObject from the imported diagram and Conf loaded diagrams [DID-14777] -- [conf cloud] Added debug message to script load error [DID-14714] -- Fixes background color in PNG export [jgraph/drawio-desktop#2049] -- Adds styles to clipboard and default style [jgraph/drawio#4989] -- Refactors editor CSS - -25-MAR-2025: 26.1.3 - -- Fixes handling of duplicate IDs in mxCodec [DID-14777] -- [conf cloud] Potential fix for link dialog size [DID-14793] - -24-MAR-2025: 26.1.2 - -- Increases mermaid text size to 900k [jgraph/drawio#4761] -- Jira Cloud: Replaced deprecated search APIs -- Disables pusher.min.js loading in lockdown mode -- [conf cloud] Potential fix to Gliffy import incorrect version pinning [DID-14749] -- [conf cloud] Added sorting to attachments and anchors in link dialog [DID-14793] - -14-MAR-2025: 26.1.1 - -- Adds fill-/strokeColorStyles for XML stencils -- Fixes text selection on shape drag from sidebar [jgraph/drawio-desktop#2015] -- [conf cloud] Fixes import libraries error handling -- Updates placeholders in resize preview [jgraph/drawio#4958] -- Find/replace sets focus on search input [jgraph/drawio#4959] - -05-MAR-2025: 26.1.0 - -- Tenant for OneDrive fix [jgraph/drawio#4905] -- Fixes print to PDF export dialog size and button title -- Fixed images in vsdx export with multiple pages and also image scale [DID-14515] -- Removes vsdx export functionality - -21-FEB-2025: 26.0.16 - -- Fixes colors in vsdx export [DID-14515] -- Fixes background color option for selection text - -19-FEB-2025: 26.0.15 - -- Adds default dark mode support for SVG images -- Shows word wrap option for non-resizable cells [jgraph/drawio-desktop#1994] -- Adds word wrapping to attributes section of entity shape [jgraph/drawio-desktop#1994] -- [conf cloud] Fixes Aura compatibility [DID-14484] - -14-FEB-2025: 26.0.14 - -- Fixes change of line height for wrapped text [jgraph/drawio#4902] -- Adds support for older browsers with no light-dark colors -- Improves compatibility of exported SVG -- Improves handling of ignored stroke-widths in clipSvgDataUri -- Fixes handling of single color values in SVG with editable CSS rules - -12-FEB-2025: 26.0.13 - -- Adds appearance option in publish and embed dialogs -- Forces light export of diagrams with no adaptive colors -- Skips light-dark function for same light and dark color -- [conf cloud] Adds support for pagePin in Gliffy import -- Adds enableLightDarkColors configuration - -07-FEB-2025: 26.0.12 - -- [conf cloud] Fixes simple view of imported Gliffy diagrams [DID-14343] -- [conf cloud] Disable direct editing if a page has unpublished changes [DID-14257] -- Fixes handling of Ctrl+Enter on Windows [jgraph/drawio#4883] -- Adds transparent background option in iframe embed dialog [jgraph/drawio#4884] -- Handles Ctrl+S while editing labels [jgraph/drawio#4885] -- Fixes editing toolbar alignment in embed mode [jgraph/drawio#4874] -- Updates DOMPurify from 3.2.3 to 3.2.4 -- Handles subgroups in GitLab paths [jgraph/drawio#4870] - -04-FEB-2025: 26.0.11 - -- [conf cloud] Show error when embed diagram page not found (deleted or restricted) [DID-14304] -- [conf cloud] Fixed realtime collaboration [DID-12871] - -28-JAN-2025: 26.0.10 - -- [conf cloud] Fixes Gliffy mass import of linked diagrams when done in separate runs [DID-14151] -- Enhanced page links in vsdx import [DID-14276] - -27-JAN-2025: 26.0.9 - -- Fixes possible split is not a function in StyleFormatPanel -- Uses light custom background with simple adaptive colors [jgraph/drawio-desktop#1978] - -24-JAN-2025: 26.0.8 - -- Improves VSDX Import [DID-14176] -- [conf cloud]] Fixes Gliffy diagrams with core ui icons [DID-14260] - -22-JAN-2025: 26.0.7 - -- Fixes for Atlas theme dark mode -- Dark mode fixes -- Changes raster images to SVG -- Stroke width fix for some BPMN2 shapes. Ticket [jgraph/drawio#4861] -- [conf cloud] Adds disableGithubEmbedding config to hide Github tab from embed editor [DID-14232] - -15-JAN-2025: 26.0.6 - -- Various dark mode improvements - -10-JAN-2025: 26.0.5 - -- Fixes Ctrl+Shift+G to enable grid [jgraph/drawio#4825] -- Replaces three dots with layers icon [jgraph/drawio-desktop#1953] -- Mermaid2drawio: Added support for new flowchart shapes and fixed [jgraph/drawio-#4832] -- Adds editableCssRules=.* for imported SVG images [jgraph/drawio#4721] -- Adds default and font keyword for stencil colors [jgraph/drawio#4723] - -06-JAN-2025: 26.0.4 - -- Disables dark mode in viewer by default [jgraph/drawio#3701] -- Adds dark mode option in embed dialog - -03-JAN-2025: 26.0.3 - -- Fixes slope angle property for parallelogram and hexagon [jgraph/drawio#3672] -- Adds arcSize property for chevron [jgraph/drawio#4813] -- Adds units for width, height and length [jgraph/drawio#4362] -- [conf cloud] Fixed Safari dark mode [DID-14095] -- Fixes missing data-cell-id in EditorUi.getEmbeddedSvg [jgraph/drawio#4532] - -29-DEC-2024: 26.0.2 - -- NPE fixes - -28-DEC-2024: 26.0.1 - -- Updates mermaid to v11.4.1 - -27-DEC-2024: 26.0.0 - -- Updates DOMPurify from 3.2.2 to 3.2.3 -- Adds dark mode specific colour scheme - -05-DEC-2024: 25.0.3 - -- Adds entering custom zoom via toolbar in simple UI -- Adds back jszip to deployment - -03-DEC-2024: 25.0.2 - -- Internal release - -30-NOV-2024: 25.0.1 - -- Updates DOMPurify from 3.1.5 to 3.2.2 with fix for [DID-13161] - -29-NOV-2024: 25.0.0 - -- Restructures project files - -28-NOV-2024: 24.9.3 - -- NPE fixes - -27-NOV-2024: 24.9.2 - -- [conf cloud] Improving theme detection timing [DID-13083] - -25-NOV-2024: 24.9.1 - -- Reverts DOMPurifty to 3.1.5 [DID-13161] - -23-NOV-2024: 24.9.0 - -- Updates workbox to 7.3.0 in build docker image - -22-NOV-2024: 24.8.9 - -- Forces service worker to reload Confluence and Jira html to fetch the new CSP header [DID-13083] - -21-NOV-2024: 24.8.8 - -- Fixes possible NPE - -21-NOV-2024: 24.8.7 - -- Fixes font size and line height change for selection text [jgraph/drawio-desktop#1880] -- Removes implicit CSS values and empty style attributes from DOM -- Adds OpenStack stencils -- Adds Power Platform stencils to Azure and Dynamics365 stencils - -13-NOV-2024: 24.8.6 - -- Corrects sidebar build - -13-NOV-2024: 24.8.5 - -- [conf cloud] Removes target options from the page IDs export [DID-12937] -- Adds Alibaba Cloud stencils -- [teams] Fixes mobile app file picker - -04-NOV-2024: 24.8.4 - -- [conf cloud] Removes confluence embed file hash to fix embed iframe [DID-12936] - -25-OCT-2024: 24.8.3 - -- [desktop] Fixes print page size [jgraph/drawio-desktop#1893] - -23-OCT-2024: 24.8.2 - -- Adds IBM Cloud stencil set - -22-OCT-2024: 24.8.1 - -- Initial convert of confluence connect manifest to forge - -18-OCT-2024: 24.8.0 - -- Fixes math typesetting in svg export [jgraph/drawio-desktop#1874] -- Adds new Citrix stencil set -- Initial convert of jira connect manifest to forge -- [jira cloud] Fixes search page error - -30-SEP-2024: 24.7.17 - -- [conf cloud] Fixes showing older versions of a diagram in page history [DID-12641] -- [conf cloud] Adds libraries edit/add from the editor [DID-12585] - -20-SEP-2024: 24.7.16 - -- Fixes editorui parameter for loadLibrary [DID-12644] - -19-SEP-2024: 24.7.15 - -- Uses java17 for GAE deployment -- [conf cloud] Adds diagram translation support via ["translateDiagrams": true] config -- [conf cloud] Fixes a NPE [DID-12553] - -13-SEP-2024: 24.7.14 - -- Updates to mermaid 11.2.0 -- [conf cloud] Uses retry-after header info when rate-limiting hits - -11-SEP-2024: 24.7.13 - -- [conf cloud] Fixes errors in diagrams list - -05-SEP-2024: 24.7.12 - -- Internal release - -05-SEP-2024: 24.7.11 - -- Fixes possible XSS for tooltips in dev mode - -02-SEP-2024: 24.7.10 - -- Internal release - -02-SEP-2024: 24.7.9 - -- Fixes exit flag in save event message [jgraph/drawio#4010] -- [conf cloud] Using viewerTimeout config in the editor also [DID-12425] - -28-AUG-2024: 24.7.8 - -- Adds math typesetting support for Mermaid [drawio-desktop-1824] -- [conf cloud] Handle incorrect draft status of a page [DID-12384] - -12-AUG-2024: 24.7.7 - -- [conf cloud] Improved mass import error message to match API v2 behavior [DID-12282] -- Fixes scratchpad saving errors [drawio-1833] - -29-JUL-2024: 24.7.6 - -- Uses current host only for non-public GitLab and GitHub files [jgraph/drawio#4502] -- [conf cloud] Fixed Giffy mass import issues [DID-12199] - -25-JUL-2024: 24.7.5 - -- [conf cloud] Applies link adjustment configuration to diagram editor [DID-12118] -- AWS shapes update -- [conf cloud] Fixed NPE when editing some diagrams [DID-12175] -- Fixes cell highlight bounding box [jgraph/drawio#4509] - -23-JUL-2024: 24.7.4 - -- Fixes page break alignment in print preview [jgraph/drawio#4447] -- Fixes timeout for synchronize of StorageFile -- Removes modified, etag and type attribute from mxfile [jgraph/drawio#4461] -- Fixes handling of font lists and quotes in font names [jgraph/drawio#4560] -- [conf cloud] Fixes new diagram dangling drafts issue [DID-12168, DID-12166, DID-12158, DID-12159] - -22-JUL-2024: 24.7.3 - -- Updates SAP shapes -- [conf cloud] Showing confluence images when 3rd party cookies are disabled [DID-12108] -- Fixes PDF export and print pixel ratio [DID-12130] -- Fixes ignored transform on SVG subtree [jgraph/drawio#4557] -- Removes data-cell-id in SVG subtrees -- [conf cloud] Fixes embed macro insertion - -19-JUL-2024: 24.7.2 - -- [conf cloud] Uses v2 connect endpoint calls -- Excludes clipart from shape search index [jgraph/drawio#4547] -- [conf DC] Improved Google Drive app not installed error handling [DID-12115] - -17-JUL-2024: 24.7.1 - -- Removes host domain checks [DID-12104] - -16-JUL-2024: 24.7.0 - -- Adds SAP icons [jgraph/drawio#4199] - -10-JUL-2024: 24.6.5 - -- [conf cloud] Fixed relative links when owningPageId is empty [DID-12053] - -27-JUN-2024: 24.6.4 - -- Fixes reset of selected shape groups [drawio-desktop#1783] -- Removes broken help link in template dialog -- Fixes missing URL parameters for published Drive files [jgraph/drawio#4501] -- Fixes arrows in mermaid sequence diagram converter -- Adds UI switch to toggle animations [jgraph/drawio#4491] - -25-JUN-2024: 24.6.3 - -- Removes drop shadow in PDF export [jgraph/drawio-desktop#1784] -- Conf Cloud: Added support for copied pages in Gliffy import [DID-11864] -- Conf Cloud: Added support for inplaceEdits configuration [DID-11923] -- Removes uponSanitizeAttribute listener for SVG content attribute [DND-1208] - -22-JUN-2024: 24.6.2 - -- Adds option to include current page in PNG and SVG export [jgraph/drawio#2860] -- Fixes Cmd + US keyboard shortcut [jgraph/drawio-desktop#1792] - -21-JUN-2024: 24.6.1 - -- Improves Google Drive app not installed message [DID-11885] -- Disables shadows in printing and PDF export [jgraph/drawio-desktop#1784] - -20-JUN-2024: 24.6.0 - -- Adds autosizeGrid style [jgraph/drawio#1131] -- Adds Editor.enableChatGpt with config switch -- Ignores service worker registration errors [jgraph/drawio#4483] -- Adds UI zoom to desktop help menu [jgraph/drawio-desktop#1359] -- Adds non-numpad zoom keyboard shortcuts [jgraph/drawio-desktop#978] -- Uses quotes for CSS font-family [jgraph/drawio-desktop#1604] -- Adds Editor.enableAnimations with config switch [jgraph/drawio#4491] -- Fixes grid color for print and PDF export in dark mode [jgraph/drawio#4488] -- Preserves cell hierarchy in SVG output [jgraph/drawio#3960] - -17-JUN-2024: 24.5.5 - -- Simplifies publish dialog [jgraph/drawio#4346] -- Allows image links in libraries [jgraph/drawio#4474] -- Runs PNGs through pngquant with default settings -- Fixes change of default connection style [jgraph/drawio#4479] -- Fixes math rendering in revision compare view -- Adds in-place editing for layer names [jgraph/drawio#902] - -12-JUN-2024: 24.5.4 - -- Fixes link to members page for GitLab files [jgraph/drawio#4213] -- Uses current unit in edge start/end/width/size/spacing in Format panel [jgraph/drawio#2993] -- Fixes conflict dialog for deleted files in desktop -- Fixes BPMN group shape in dark mode [jgraph/drawio#4471] - -11-JUN-2024: 24.5.3 - -- Fixes show start screen option [drawio-desktop-1738] -- Fixes fallback text position [drawio-desktop-1624] -- Removes control characters in link check -- Uses current unit in line position (start, end) in Format panel - Arrange [drawio-1915] - -07-JUN-2024: 24.5.2 - -- [conf cloud] Adds Drive file access and app check to embed macro -- Fixes bulk change of cell styles [drawio-3961] - -06-JUN-2024: 24.5.1 - -- [conf-cloud] Fixes viewer scope - -06-JUN-2024: 24.5.0 - -- Changes viewer to use main google project 671 ID - -06-JUN-2024: 24.4.15 - -- Fixes possible clipping in sidebar popup -- Enables saveAs for read-only files -- Fixes text editing position for insert layout dialog [drawio-4449] -- Adds start-/endFillColor styles for connectors [drawio-4438] - -05-JUN-2024: 24.4.14 - -- Adds support for adaptive polling -- Updates DOMPurify from 3.1.4 to 3.1.5 -- Adds support for mermaid flowchart elk renderer [drawio-3634] -- Undo/redo selects and scrolls to modified cells [drawio-desktop-1766] -- Fixes preview for sidebar items [drawio-desktop-1737] -- Improves UX for AI generate template tile - -31-MAY-2024: 24.4.13 - -- Moves polyfill scope - -31-MAY-2024: 24.4.12 - -- Adds empty polyfill for structuredClone to avoid mermaid.js syntax error - -31-MAY-2024: 24.4.11 - -- Updates Mermaid to v10.9.1 -- Fixes cropped PDF output [drawio-desktop-1747] -- Fixes inconsistent handling of empty diagram nodes - -29-MAY-2024: 24.4.10 - -- Improves edge label positions in Explorer Plugin [drawio-4424] -- Fixes shift+drag for new lines with anchor points [drawio-4197] -- Adds new teams domain to frame ancestor CSP - -27-MAY-2024: 24.4.9 - -- Uses 4 digits after the decimal point for inches [drawio-desktop-1739] -- Fixes inconcistent handling of Ctrl and Cmd key for edges - -24-MAY-2024: 24.4.8 - -- Fixes default shadow opacity [drawio-desktop-1750] - -23-MAY-2024: 24.4.7 - -- Fixes possible NPE for inserted pages -- Forces XML update for inserted default root and layer -- [vsdx] Another trial to fix edge as a group [drawio-1722] -- [conf cloud] Potential fix for copy/paste in draft pages [DID-11494] -- Fixes possible empty diagram node in mxfile [DID-11645] - -22-MAY-2024: 24.4.6 - -- Fixes possible NPE in Graph.initTouch - -22-MAY-2024: 24.4.5 - -- Updates Teams app to use SDK v2.22.0 [CSP-3150] -- Fixes in-place editing on iOS [drawio-4411] -- Updates DOMPurify from 3.1.3 to 3.1.4 -- Fixes possible overwritten library files in browser storage -- Blocks popup menu and shape picker in freehand mode -- Fixes units for table cell size change [drawio-4360] -- Fixes handling of parallel edges in explore plugin [drawio-4422] -- Adds units for custom page size [DID-11607] - -17-MAY-2024: 24.4.4 - -- Improves diff sync for removed default layer - -16-MAY-2024: 24.4.3 - -- [conf cloud] Updates CSP based on the deprecation notice https://developer.atlassian.com/cloud/confluence/changelog/#CHANGE-1601 -- Improves diff sync and handles special cases - -15-MAY-2024: 24.4.2 - -- Fixes possible NPE in StorageFile.getEtag - -15-MAY-2024: 24.4.1 - -- Improves page switching performance -- Updates DOMPurify from 3.1.2 to 3.1.3 -- Restores view and selection state after merge of local files -- Adds conflict handling for browser files for testing -- Fixes inactive escape listeners in sidebar [drawio-4379] -- Moves locking to file [drawio-desktop-1380] -- Adds automatic merge for browser files - -10-MAY-2024: 24.4.0 - -- [vsdx] Fixes attribute labels [drawio-4299] -- Fixes built-in plugins enabling in windows [drawio-desktop-1508] -- Adds full support for fullscreen menu option [drawio-desktop-1638] -- Improves font support in PDF export -- Improves refresh when Math rendered -- Adds my.microsoftpersonalcontent.com to CSP -- Fixes first page title when a file is imported into an empty diagram [drawio-3519] -- [conf cloud] Adds global config to disable diagram revisions (disableVersioning: true) [DID-10247] -- Adds grid, selection cells to mxPrintPreview -- Merges print, PDF and advanced PDF export dialog -- Fixes bounding box for edge shapes [DID-11356] -- Fixes label position for Kubernetes shapes [drawio-4386] -- Updates DOMPurify from 3.1.0 to 3.1.2 -- Handles possible errors in App.clearServiceWorker [drawio-4340] - -26-APR-2024: 24.3.1 - -- Fixes breadcrumb trail after refresh in OneDrive picker [drawio-4339] -- Fixes diagrams in Google Add ons [drawio-4349] -- Fixes diagram size in Google Add ons [drawio-4351] -- Removes margin for cropped PDF export [drawio-4353] -- [conf cloud] Fixes AP.navigator.getLocation returning incorrect pageId in drafts [DID-11399] - -24-APR-2024: 24.3.0 - -- Enable internal links in PDF export [drawio-722] - -24-APR-2024: 24.2.9 - -- Adds support for PDF+XML files in OneDrive picker [drawio-4339] -- Adds autosize and resizable to style clipboard [drawio-4285] -- Fixes PWA for iOS and iPadOS [drawio-4342] -- Adds support for iframe sandbox attribute [drawio-4340] -- Skips getStoredMode in embed mode [drawio-4340] - -22-APR-2024: 24.2.8 - -- Adds experimental read-only mode [drawio-desktop-1380] -- [conf cloud] Adds support for server lightbox links [DID-11348] -- Enables crop option in PDF export dialog -- Fixes background images, page IDs in print preview - -19-APR-2024: 24.2.7 - -- Simplifies print dialog -- Adds linecap and linejoin style [drawio-4200] -- Removes test.draw.io domain for development -- Adds Open Library option in Edit dropdown [drawio-3499,1357] -- Adds support for stencils in Open Library option -- Fixes dynamic loading of stencils in Firefox [DID-11328] -- Fixes possible scrollbars, all pages label in print dialog -- Changes font size unit label to px [drawio-3615,drawio-desktop-1448] - -18-APR-2024: 24.2.6 - -- Build failure - -12-APR-2024: 24.2.5 - -- [conf cloud] Improves embedding from URL and CSV via proxy and confluence attachments [DID-11234] -- Fixes possible DOM error in mxGraph.panGraph -- Sorts files and folders in OneDrive picker [drawio-2870] -- Checks size in Graph.clipSvgDataUri [drawio-desktop-1686] -- Fixes C4 shape container names [drawio-4312] - -10-APR-2024: 24.2.4 - -- Release skipped - -08-APR-2024: 24.2.3 - -- Adds Editor.fontSizeUnit, fixes possible unhandled font element -- Disables dots fillStyle in sketch mode -- Updates Rough.js from 4.4.1 to 4.6.6 -- Enables rubberband on locked shapes [drawio-desktop-1684] -- Fixes saving of embed HTML in desktop [drawio-4301] -- Updates DOMPurify from 3.0.11 to 3.1.0 -- Fixes ignored anchor links in SVG for Chrome PDF export - -03-APR-2024: 24.2.2 - -- [conf cloud] Fixes timeout error fetching custom libraries when libraries page not found [DID-11193] -- Fixes iphone shape in small sizes [DID-11188] -- Writes warning for unknown object type, ignored value [DID-11225] -- Removes internalCompression feature flag - -28-MAR-2024: 24.2.1 - -- Adds menu item for high contrast mode -- Adds shortcuts.svg to PWA [drawio-desktop-1130] -- [conf cloud] Fixes special XML characters in import services [DID-10752] -- Fixes C4 labels [drawio-4300] - -26-MAR-2024: 24.2.0 - -- Naming fix for [draw-3336] -- Updates DOMPurify from 3.0.9 to 3.0.11 -- Fixes export with invalid background page -- Fixes C4 strings [drawio-2612,3581] -- First iteration support for OS high constrast [drawio-4296] - -23-MAR-2024: 24.1.0 - -- Improves save performance for files with images [DID-11006] - -23-MAR-2024: 24.0.9 - -- Improves remote changes handling in DrawioFileSync.fastForward - -22-MAR-2024: 24.0.8 - -- Fixes background of ID property -- Fixes lost page links in pasted cells -- Adds shortcut for bringForward/sendBackward [drawio-desktop-1662] -- Fixes mouse wheel in freehand mode [drawio-4278] -- [conf cloud] Refreshes viewer if loaded version doesn't match one in storage format [DID-10966] - -14-MAR-2024: 24.0.7 - -- Moves Cloudflare workers to mxgraph-gliffy-java repository -- Fixes possible HTML content as SVG subtree -- Fixes overridden font in background page images -- Fixes timeout for invalid image in SVG export -- Disables and removes links in background pages -- Adds tooltips for values in Property pane -- Fixes clipped cell ID in Property pane [drawio-4262] -- Fixes regex performance in Graph.isLink [drawio-3939] -- [conf cloud] Adds upload embed diagrams to custom templates parsing [DID-11066] - -13-MAR-2024: 24.0.6 - -- Moves subtree when tree is collapsed [drawio-3113] -- Fixes ignored given local filename [drawio-3555] -- Fixes possible NPE in Graph.executeCustomActions -- Fixes event handling on background pages -- Fixes %length% placeholder in child edge labels [drawio-1677] - -11-MAR-2024: 24.0.5 - -- Adds checkbox for text shadow [drawio-4247] -- Explore ignores hidden edges [drawio-4243] - -09-MAR-2024: 24.0.4 - -- [conf cloud] Fixes copied pages with embed upload macro editing [DID-11003] - -08-MAR-2024: 24.0.3 - -- [conf cloud] Enables direct editing without custom content -- [conf cloud] Fixed imported libraries name if end with ".xml" [DID-10920] -- Adds block padding and margin properties to style panel [drawio-4198] -- Uses default spacing for Textbox shape -- Fixes default font for sketch mode [drawio-4216] -- Fixes broken MathJax output after zoom [drawio-4242] -- Fixes custom fonts and images in background pages [drawio-4239,drawio-3712,drawio-3281,drawio-2733,drawio-2367] - -05-MAR-2024: 24.0.2 - -- Fixes DRAWIO_SERVER_URL if query string contains forward slash -- Handles double-quotes in page URLs -- Fixes waypoints for grouped edges [drawio-desktop-1646] -- Fixes ignored null bytes in mxUtils.trim - -02-MAR-2024: 24.0.1 - -- Updates DOMPurify from 3.0.8 to 3.0.9 -- Adds contrast URL parameter [drawio-3701] -- Fixes preview of SVG export with embedded fonts -- [conf cloud] Adds migration support for pageInfo parameter, templateUrl to re-indexing, improves tinyUrl parsing regex -- [conf cloud] Adds support for templateUrl with pageInfo in viewer -- [conf cloud] Shows custom contents based on macros in the page instead of page custom contents (easier deletion and no re-indexing) - -29-FEB-2024: 24.0.0 - -- Adds shape shadow style option [drawio-1671] -- Uses drop-shadow CSS filter for shape shadows [drawio-1671] -- Disables shape shadow option for Safari -- Fixes possible XSS in mxUtils.getSizeForString [CSP-3024] -- Supports vertical writing mode [drawio-4068] - -28-FEB-2024: 23.1.8 - -- Remove unnecessary servlets from deployment -- Fixes possible XSS in print preview title [CSP-3018] -- Fixes editBlankUrl for subpaths [drawio-4152] -- Fixes possible NPE in Sidebar -- Salesforce shape library fix -- AWS shapes update [DS-951] -- [conf cloud] Fixed some re-indexing issues in logging and search text property [DID-10652] - -26-FEB-2024: 23.1.7 - -- Debug build to attempt to find rogue resources load - -22-FEB-2024: 23.1.6 - -- Fixes possible XSS in tooltips for overlays [CSP-2969] -- Fixes reference to clip path [drawio-4202] -- Fixes possible XSS in fontCss for print preview [CSP-2986] -- [conf cloud] Added tooltip to edit button when disabled -- [conf cloud] Using v2 api to edit the page in direct diagram editing - -15-FEB-2024: 23.1.5 - -- [conf cloud] Add charset to requests to protect from default charset changes -- [conf cloud] Added requests rate limiting retrials for long running services [DID-10681] -- Fixes incorrect font colors in PDF output [drawio-4176] -- Removes text editing code for IE8/9/10 -- Fixes possible XSS in Graph.updateLabelElements [CSP-2963] -- Fixes possible XSS in ErrorDialog [CSP-2964] - -13-FEB-2024: 23.1.4 - -- Fixes CSS scope in SVG sub-trees [drawio-4119] -- Fixes possible XSS for init-editor [CSP-2954] - -12-FEB-2024: 23.1.3 - -- [conf cloud] Added support for Gliffy pinned versions & display name in mass import [DID-10522] -- Improves copy/paste for styles -- Improves font defaults for themes -- Applies default theme edge font size to general edge labels -- [conf cloud] Moving back to REST v1 to avoid encoding issues [DID-10762] - -06-FEB-2024: 23.1.2 - -- Fixes possible spin forever in image dialogs [drawio-4166] -- Uses SVG icons for Confluence Cloud viewer toolbar buttons -- Handles possible parser error in OneDrive auth -- Fixes prev is not defined when creating new files -- [conf cloud] Removed custom libs 25 limit in listing [DID-10673][DID-10695] - -01-FEB-2024: 23.1.1 - -- Update azure shapes [drawio-3333] -- Fixes only first layer shown in template preview -- Fixes image size and padding for savesidebar URL parameter - -31-JAN-2024: 23.1.0 - -- Fixes smoothing configuration for freehand [drawio-3093] -- Fixes loading of uncompressed templates with CORS headers -- [conf cloud] Handles trailing spaces in the diagram name for gliffy import [DID-10460] -- Changes auth paths to use server url prefix -- [conf cloud] Fixed outdated drafts when page is copied [DID-10546] -- [conf cloud] Handles macros with macroId only parameter in gliffy import [DID-10460] - -25-JAN-2024: 23.0.2 - -- Fallback to online resource for embed fonts and images -- Fixes possible duplicate callback for XHR in error case -- Adds fallback to raster for embedded SVG images -- Fixes freehand drawing behaviour [drawio-4140] -- Prevents XSS due to unchecked base URL parameter -- Fixes inconsistent link and textbox dialogs - -24-JAN-2024: 23.0.1 - -- Fixes possible scrollbar in connection points dialog -- Fixes not adding existing tags to selection - -23-JAN-2024: 23.0.0 - -- Major release increment due to removal of HTML labels to SVG path functionality -- Removes convert label to SVG, embeds images and fonts by default in SVG export -- Fixes scrollbars in fitWindow for viewbox action -- Disables compressed XML in SVG export, sets scale/border for XML in SVG/PNG export [drawio-4125] -- [conf cloud] Fixes Aspects dialog overflow issue [DID-10568] - -23-JAN-2024: 22.1.22 - -- Adds experimental freehand settings [drawio-3093] -- Ports Embed2 servlet to CF worker -- Consistent handling for closing splash [drawio-4089] -- [conf cloud] Storing services log to configuration space [drawio-3991] -- [conf cloud] Improved viewer settings dialog -- Improved compatibility for SVG export [drawio-4119] - -17-JAN-2024: 22.1.21 - -- Fixes immediate Dropbox file loading in dev mode -- Updates DOMPurify from 3.0.6 to 3.0.8 -- Fixes dropbox naming clash in global scope, duplicate function - -16-JAN-2024: 22.1.20 - -- Internal release, see release notes - -16-JAN-2024: 22.1.19 - -- Scrolls page tab to visible after moving page -- Fixes possible timeout when entering commit message -- Removes line jumps at branching points [drawio-3965] -- Fixes ignored text direction style [drawio-4104] - -09-JAN-2024: 22.1.18 - -- Fixes overridden configurations [drawio-desktop-1564] -- Removes multiple javascript protocol prefixes -- Adds exit menu and fixed isModified detection [drawio-desktop-1222] -- Fixed text replace when search query is " or ' [drawio-desktop-1152] -- Fixes error messages of new files in offline mode [drawio-nextcloud-62] -- Experimental support for vertical writing mode [drawio-4068] -- Fixes relative links in SVG export - -04-JAN-2024: 22.1.17 - -- Adds copyAsText in Edit drop down [drawio-3949] -- Replaces clearWaypoints button with drop down -- Fixes clipping, replaces hint in filename dialog [drawio-4074] -- Adds support for using the same URL in DRAWIO_LIGHTBOX_URL [docker-drawio-137] -- Fixes selection propagation for current root -- Fixes cursor for immediate edge handling in groups -- Fixes cursor for immediate edge handling in selected ancestors -- Fixes scrollbar positions after enter-/exitGroup -- Fixes move of selected edges in groups - -29-DEC-2023: 22.1.16 - -- Adds simple theme to atlas.min.js - -27-DEC-2023: 22.1.15 - -- Fixes NPE of undefined function emfDone [drawio-4072] -- Prints current version number in clear.html -- Fixes dark mode not persisted in some cases [drawio-desktop-1540] - -27-DEC-2023: 22.1.14 - -- Fixes this.isVisioFilename undefined in Editor.js -- Fixes mxSettings is undefined [DID-10370] -- Fixes NPE for minified freehand code in production build - -27-DEC-2023: 22.1.13 - -- Fixes "Add tag" dialog title clipped [drawio-desktop-1537] -- Increases maximumFileSizeToCacheInBytes to 10MB [DID-10317] - -26-DEC-2023: 22.1.12 - -- Handles possible empty content in GitHub [drawio-4045] -- Fixes use of modified default style for sidebar items -- Fixes use of defaults for curved edge styles -- Adds new Kubernetes shapes [drawio-3699] -- [conf cloud] Adds enableCssDarkMode config to viewers also [DID-10038] - -15-DEC-2023: 22.1.11 - -- Fixes default edge style overrides edges in sidebar [drawio-4038] - -15-DEC-2023: 22.1.10 - -- Release stopped due to NPE in testing - -14-DEC-2023: 22.1.9 - -- Scrolls to loaded libraries, fixes library export to browser -- Fixes library moved to end after edit -- Fixes relative links in print preview -- Alt+Shift+Drag ignores cell under mouse if selection not empty - -12-DEC-2023: 22.1.8 - -- Adds color option in freehand dialog [drawio-3454] -- Fixes reset icon for recent colors in dark mode -- Adds appendCustomLibraries config switch [drawio-4027] -- Fixes direction of edges in horizontal tree layout [DID-10171] -- Sets edgeStyle for edges inserted from sidebar [drawio-1122] -- Fixes scroll to inserted page tab - -06-DEC-2023: 22.1.7 - -- Fixes possible getAttribute is not a function - -06-DEC-2023: 22.1.6 - -- Adds custom fonts to list only after graph changes -- Adds style option for image libraries [DID-10031] -- Adds expandLibraries config switch [drawio-1737] -- Adds label value in edit data export [drawio-3949] -- Updates GCP icons [drawio-3254] - -29-NOV-2023: 22.1.5 - -- Fixes forwards refs for undo of replaceDiagramData -- Adds defaultGridSize config option [DID-10031] -- Fixes custom fonts while editing label [DID-10031] - -24-NOV-2023: 22.1.4 - -- [conf cloud] Fixes diagram list editing older versions and not refreshing [DID-10113] -- Adds selectParentLayer config switch [drawio-3928] -- Fixes handling of space separated layer-ids in URL -- Fixes improve contrast only enabled in dark mode -- [conf cloud] Improving page IDs import report readability [DID-10039] -- Selects current page based on browser address bar -- Fixes PDF export for background images and pages -- [conf cloud] Allows simple viewer with 3rd party cookies disabled [DID-10047] -- Fixes relative path for MathJax in embedded HTML -- Updates DOMPurify from 3.0.5 to 3.0.6 -- Fixes bold font for Google Fonts [drawio-3907] - -17-NOV-2023: 22.1.3 - -- Updates archimate icons [drawio-3863] - -15-NOV-2023: 22.1.2 - -- Fixes move of child cells in groups [drawio-3967] -- [conf cloud] Fixes bugs in rendering diagrams with pageInfo param [DFCC-64] - -13-NOV-2023: 22.1.1 - -- Reverts part of e6ea9f to restore child cell dragging behaviour [drawio-3967] - -08-Nov-2023: 22.1.0 - -- [conf cloud] Added confluence-content parameter support [DFCC-64] -- Updates AWS icons to Q3 23 set [drawio-3945] - -25-OCT-2023: 22.0.8 - -- [conf cloud] Excludes old editor from duplicate macros fix [DID-9751] - -24-OCT-2023: 22.0.7 - -- [conf cloud] Fixed math in the viewer [DID-9794] - -19-OCT-2023: 22.0.6 - -- [conf cloud] Fixes Gliffy import hanging when import API fails [DID-9752] -- [conf cloud] Adds support for importing short links with special characters [DID-9687] - -18-OCT-2023: 22.0.5 - -- [conf cloud] Adds support for importing short links less than 6 characters [DID-9687] -- [conf cloud] Fixes direct editing in blogposts [DID-9702] -- [conf cloud] Fixes fullscreen (lightbox) view of diagrams in page templates [DID-9690] - -06-OCT-2023: 22.0.4 - -- Adds Emoji shape support - -05-OCT-2023: 22.0.3 - -- Fixes possible NPE in clonePages error handler -- [vsdx] Stops using default theme when theme index not found [DID-9622] -- Fixes tags dialog icons in dark mode [drawio-3910] - -03-OCT-2023: 22.0.2 - -- Fixes new save dialog for SharePoint [drawio-3900] -- Fixes copy/paste after dialog was shown [drawio-3903] - -02-OCT-2023: 22.0.1 - -- Ignores selection for nested cells with part style -- Adds salesforce icons [drawio-2793] - -28-SEP-2023: 22.0.0 - -- Adds DRAWIO_SERVER_URL as an additional URL to DRAWIO_BASE_URL. BASE_URL used to indicate - the URL both the back-end and static code were delivered on. SERVER_URL now provides a - way to delivery on one URL and server the back-end functions on a different URL. - By default the server URL value is blank. -- Fixes search for uncompressed shapes, result order -- Fixes dialog stack order [drawio-3883] - -24-SEP-2023: 21.8.2 - -- Confirm escape key for insert layout [drawio-3880] -- Scrolls cell to visible after remove from group - -22-SEP-2023: 21.8.1 - -- Attempt to fix NPE in GraphViewer -- [conf cloud] Fixed custom templates loading in the editor [DID-9482] -- [conf cloud] Prevent calling theme callback multiple times for the same event [DID-9505] -- Fixes independent drag of cell with part=1 [DS-950] - -20-SEP-2023: 21.8.0 - -- Ports Cache servlet to AWS Lambda [TI-11] -- Fixes possible tab scrolling [drawio-desktop-1411] -- Fixes default parent after root change [drawio-3868] -- Adds inverse dark filter for iframes [drawio-3869] -- Inserts overlapping connector on top [drawio-3853] -- Fixes collapsed details viewer in FF [drawio-3292] -- Adds spacing, alignment to default style [drawio-3307] -- Fixes shape search on Android with Chromium [3321] -- Adds width and height placeholders [drawio-3327] -- Add allowed domain [DID-9475] -- Adds length placeholder for edges [drawio-3327] -- Fixes constrained collapsed resize [drawio-3274] -- Adds edge meta data in CSV import [drawio-3324] -- Adds support for same height as width in CSV import - -12-SEP-2023: 21.7.5 - -- Adds CSS styles for Latex SVG export [drawio-3839] -- Removes invalid flow plugin UI entry [drawio-3840] -- Fixes child edge bounding box offset [drawio-3844] -- Fixes saving changes in Notion plugin [drawio-3846] -- Shows shapes panel only after loading custom libs -- [conf cloud] Improved error message for 413 HTTP error (file too large) [DID-9113] -- Fixes contentLength header for UTF16 [drawio-3847] - -08-SEP-2023: 21.7.4 - -- AWS shapes update to Q2 2023 [drawio-3677] - -08-SEP-2023: 21.7.3 - -- Adds title attribute support for custom links -- Adds Ctrl+Alt+X for copy as image [drawio-3754] -- Changed app name in shortcuts edit link to draw.io -- Uses pre-line for newlines in tooltips [DID-9327] -- Adds WebP image export [drawio-553] -- Enables text selection in lightbox [drawio-3732] -- [conf cloud] Added support for custom templates in page IDs import [DID-9320] -- [conf cloud] Showing actual filename in viewer title tooltip when displayName is different [DID-9241] -- Handles possible JSON parsing error in DriveClient - -01-SEP-2023: 21.7.2 - -- Fixes library item zoom on label select [DID-9295] -- [conf cloud]] Added support for diagram names with spaces (untrimmed) [DID-9038] - -30-AUG-2023: 21.7.1 - -- Refreshes after showing/hiding cells [drawio-9263] -- Fixes moving multiple cells on touch devices -- Fixes anchors and edge style for sequence diagrams [drawio-desktop-1370] -- Fixes replace shape for UML lifeline drop targets -- Enables new save dialog - -28-AUG-2023: 21.7.0 - -- Adds page names in viewer tooltips [drawio-3763] -- Adds README for Crypto JS library [CSP-2255] -- Fixes canvas state after redrawShape [drawio-3806] -- Adds checkbox for current layer with multiple cells -- Fixes connect/select in locked layer [drawio-3760] -- Adds Alt+C/V for copy-/pasteStyle [drawio-3632] -- Adds initial API for custom links on context cells -- Fixes possible cropping, reduces link dialog width -- Adds Embed button to convert image URL to data URI - -22-AUG-2023: 21.6.9 - -- Shows sidebar when libraries are loaded [drawio-3744] -- Fixes toggle shapes panel ignores current state -- Uses center of shapes for swap action -- Remembers include diagram state for SVG/PNG export -- Fixes CSS for exported dark mode SVG [drawio-3768] -- Fixes printing of background images in CSS dark mode - -10-AUG-2023: 21.6.8 - -- Fixes possible background image error [DID-9099] - -07-AUG-2023: 21.6.7 - -- Fixes offset after page selection [drawio-desktop-1411] - -28-JUL-2023: 21.6.6 - -- Adds improve contrast, fixes CSS for old dark mode -- [conf cloud] Added config option to generate SVG preview when a diagram is published (generateSVGs: true) [DID-8942] -- [vsdx] Split EMF conversion into chunks to reduce the chance of timeout and reduce + retries on error - -20-JUL-2023: 21.6.5 - -- Fixes mxIsElectron undefined error in editor.js - -20-JUL-2023: 21.6.4 - -- Uses URL hashtag for embed in Notion [drawio-3376] -- [conf cloud] Removes draw.io support menu item from Confluence help menu [DID-8934] -- [desktop] Changes default dark mode to classic [drawio-desktop-1391] -- Adds html tags check/filteration to i18n parser [CSP-2113] -- [conf cloud] Fixes Go to Containing Page button in embed diagrams viewer [DID-8704] - -18-JUL-2023: 21.6.3 - -- Shift+Alt+Drag moves selection cells [drawio-3726] -- Fixes grouping of shapes with table [drawio-3725] -- Updates DOMPurify from 3.0.3 to 3.0.5 -- Fixes update of page tabs after import [DID-8891] -- [conf cloud] Load main file diagram if draft unchanged and old version in macro -- Fixes Grid option in pdf export -- [jira cloud] Added support for server zip format [DFJC-18] -- [vsdx] Added support for rotated edge labels [DID-8697] -- Fixes getBoundingBoxFromGeometry for nested groups -- Fixes initial scrollbar for demo mode in simple UI -- Removes voice plugin [CSP-2113] -- Use Ctrl+Y and Ctrl+Shift+Z for redo [drawio-3733] -- Sanitizes HTML markup in labels [CSP-2113] - -11-JUL-2023: 21.6.2 - -- Fixes application icon background color -- Adds swap for two selected vertices in Arrange tab -- [conf cloud] Adds Gliffy non-mapped shapes to mass import report [DID-8704] -- Fixes inverted background page colors [drawio-desktop-1375] -- Hides explore for unconnected cells [drawio-3716] -- Fixes move cells on fold in lightbox [DID-8763] -- Fixes handling of UTF-8 in SVG images [drawio-506] - -05-JUL-2023: 21.6.1 - -- Fixes special cases in replace shape [drawio-3686] -- Enables new dark mode in production [drawio-3701] -- [conf cloud]] Adds back dark theme [drawio-3698] -- [jira cloud]] Adds back dark theme [drawio-3697] -- [vsdx] Fixed edge labels [DID-8697] -- Fixes blue guides remaining in view [drawio-3695] -- Uses new dark mode in Notion extension [#3701] - -04-JUL-2023: 21.6.0 - -- Release rejected - -28-JUN-2023: 21.5.2 - -- Fixes text contrast in right sidebar [drawio-3691] -- Fixes clipping of library symbol icons [DID-8634] -- Replacing shape replaces all styles [drawio-3686] -- Disables dark mode in jira and conf cloud [drawio-3692] - -26-JUN-2023: 21.5.1 - -- Adds tolerance for edge handles, click on terminal -- Shift+alt+drag moves shapes, fixes inconsistencies -- Shift+alt+drag on resize and terminal handle moves -- Fixes highlight of connecting edges for shift+drag -- Fixes update of table handlers, inconsistent code -- Changes replace behavior to match find logic [drawio-3616] -- Improves replace in html labels to cover more cases -- Fixes status not clickable on icon [drawio-3688] -- Fixes zoom in edit connection points [drawio-3684] -- Adds grid in connection points dialog [drawio-3685] -- Changes allowBrowser to an argument in LibraryDialog [DID-8641] -- [desktop] Fixes stencils and shapes in export due to CSP restrictions - -17-JUN-2023: 21.5.0 - -- Moves electron.js out of drawio project into desktop - -16-JUN-2023: 21.4.1 - -- Fixes misalignment of arrow labels [drawio-3668] -- [conf cloud] Fixes NPE in theming code -- Updates stage sub domain to preprod -- Adds click handler for preview in new save dialog -- Ctrl+Drag of active anchor point starts move cell -- Toggle selection drag starts move of selection -- Fixes virtual bends for custom edge handlers -- Ctrl/shift and selected state forces move on edges -- Reviews innerHTML usage in dialogs.js - -14-JUN-2023: 21.4.0 - -- [jira cloud] Uses dark mode status from host in editor -- [conf cloud] Uses dark mode status from host in editor -- [conf cloud] Adds drawio-sketch macro support for page IDs import and re-indexing -- Fixes possible NPE in fitDiagramToWindow -- Fixes reset of view state after creating new files -- [conf cloud] Hide support link in anon views -- [conf cloud] Fixes link fixing of page IDs import [DID-5141] -- Adds pass-through for user request error in GitHub -- Fixes paste of HTML-formatted text [drawio-3666] -- Fixes https://huntr.dev/bounties/ce75aa04-e4d6-4e0a-9db0-ae84c46ae9e2/ - -13-JUN-2023: 21.3.9 - -- Release rejected, failed to deploy to stage - -08-JUN-2023: 21.3.8 - -- [conf cloud] Fixed page anchor of imported pages when it has spaces [DID-8417] -- Fixes auto dark mode option after dark mode change -- Fixes editing for Mermaid declaration with comment -- Fixes ignored selection in fitWindow [drawio-3647] -- Adds edit and remove for links in labels [drawio-3654] -- Pick folder for GitHub and GitLab in new save dialog -- Fixes lost error message for GitLab return code 400 - -01-JUN-2023: 21.3.7 - -- [conf cloud] Keeping trailing spaces in attachment name [DID-8309] -- [conf cloud] Fixed space filter in new page IDs import [DID-8048] - -30-MAY-2023: 21.3.6 - -- [conf cloud] Improved Import Page IDs performance [DID-8048] - -27-MAY-2023: 21.3.5 - -- Fixes tabs converted to spaces in labels [drawio-3540] - -24-MAY-2023: 21.3.4 - -- Adds support for MermaidJS timelines [drawio-3613] -- Keeps MermaidJS styling after update [drawio-3417] -- [conf cloud] Count errors of each kind in pageID import, Gliffy/Lucid import, and re-indexing and display summary at bottom of file. Add FAQ text for common fixes. -- Forces direct load in browser to download PlantUML diagrams -- [conf cloud] Added page IDs logging - partial [DID-8048] -- Improves replace shapes [drawio-3505] -- Removes hard-coded image base path [drawio-3171] -- Adds titles to shape tags, normalizes search terms [drawio-3618] - -23-MAY-2023: 21.3.3 - -- Allows http and localhost in services (OAuth) [drawio-3079] -- Fixes nth-check dependencies vulnerability by removing react-scripts and using vite [drawio-dev-dependabot-144] -- [desktop] Fixed page-index and page-rage CLI export arguments [drawio-3597] -- [desktop] Fixed svg export scale [drawio-desktop-1165] -- Fixes Trello power-up repeated auth [DND-1015] -- Fixes possible NPE in VSDX export [drawio-3608] -- Fixes automatic dark mode in viewer [drawio-3614] -- Fixes patch and in-place change of local view state -- Improves AI prompt for smart template generation -- Fixes timeout and adds callback in synchronizeFile -- Adds plain text tooltips to SVG export [drawio-3610] -- Uses noopener,noreferrer to open links in viewer - -15-MAY-2023: 21.3.2 - -- Fixes NPE added in 21.3.1 - -15-MAY-2023: 21.3.1 - -- Removes animation for lightbox in all viewers -- Shows error for possible NPE in print preview -- Fixes restoring scrollbars after page selection -- Fixes view after undo, restore and for blank pages -- Escapes HTML in embed dialog preview title and body -- Handles possible missing child in row [drawio-3592] -- Fixes removed text between < and > with pasteHere -- Fixes blank PDF export [drawio-3596] -- Adds shortcut for in-/decrease font [drawio-3585] - -12-MAY-2023: 21.3.0 - -- Updates DOMPurify from 3.0.2 to 3.0.3 -- Fixes in-place change of graph bounds in fitWindow -- Restores sidebar on dark mode change [drawio-3577] -- Fixes page scroll while editing text [drawio-3523] -- [conf cloud] Fixed embed diagram macro when context lack the contentType [DID-8214] -- Preserves tabs in pasted text from text editors -- Uses simple theme on iPadOS, iOS and Android -- [desktop]] Potential fix for spawn errors [drawio-desktop-1122] -- Resets scrollbar state after inserting new pages -- Fixes reset of scrollbars after deleting last page - -04-MAY-2023: 21.2.9 - -- Fixes scrolling of iframe parents [drawio-3563] - -04-MAY-2023: 21.2.8 - -- [jira cloud] Uses issueContext instead of the deprecated issueGlance -- Fixes invalidation for filenames, sanitized labels [CSP-1852] - -03-MAY-2023: 21.2.7 - -- Fixes possible NPE in validate - -02-MAY-2023: 21.2.6 - -- Fixes setting x0 and y0 in graph.sizeDidChange [DS-949] - -02-MAY-2023: 21.2.5 - -- Re-release of 21.2.4 for caching issues - -02-MAY-2023: 21.2.4 - -- Adds wrapper container for view node hierarchy -- Removes view validation for document title changes -- Adds less strict search matching [drawio-655] -- Improves performance for page selection -- Adds threshhold for reset view check -- [conf cloud] Adds space filter to pagesIds import [DID-8048] - -26-APR-2023: 21.2.3 - -- Uses move cursor CSS style for table row handle -- Adds current selected page ID to URL [drawio-3128] -- Adds lazy ResizeObserver and blocks possible loops [DFCC-61] -- Fixes fitWindow in page view, refactors common code -- Fixes syntax for check of property with value of 0 -- [conf cloud] Fix uncompressed custom libraries preview [DID-8096] - -25-APR-2023: 21.2.2 - -- Improves performance for window resize event handlers -- Fixes handles for zoom and large selection changes -- Improves performance for GraphViewer [drawio-2766] -- Ignores invalid numbers in bounding box [DID-8051] -- Fixes possible divide by zero in router [DID-8051] - -19-APR-2023: 21.2.1 - -- Skips sanitizeHtml for unchanged labels [drawio-3530] -- Uses cssText property to set CSS in foreignObjects -- Adds submenu to enable and change diagram language - -19-APR-2023: 21.2.0 - -- Defers bounding box update until after DOM changes [DID-7902] - -18-APR-2023: 21.1.9 - -- Edit connection points in popup menu [drawio-2984] -- [vsdx] Fixes image cropping [drawio-3518] -- Updates DOMPurify from 2.4.3 to 3.0.2 -- Fixes image export if inside group [drawio-3516] -- Increases maximum image size to 1200 pixels and 2 MB -- Removes Theme submenu from MS Teams app and Confluence DC [drawio-3517] - -14-APR-2023: 21.1.8 - -- Adds headless editor UI class that sets chromeless -- Fixes line jumps crossing waypoints [drawio-2664] -- Fixes possible NPE for VSDX import [drawio-3507] -- Fixes remove group with drag and drop [drawio-3510] -- Fixes moving vertical label position [drawio-3512] -- Updates AWS icons [drawio-3336] - -12-APR-2023: 21.1.7 - -- [vsdx] Fixes text overflow of zero width/height labels [DID-7950] -- Uses Alt+Shift+R for clear waypoints [drawio-3501] -- Allow blank replace string in dialog [drawio-3502] -- Handles dark theme change in trees plugin [drawio-3496] -- Adds smart-template-type, -generate URL parameters - -11-APR-2023: 21.1.6 - -- [conf cloud] Fixes large instances page IDs export and import and using new API [DID-7895] -- Fixes safari bug with embed mode (calling App.main twice) [drawio-nextcloud-37] -- Adds support for links to pages in print preview [drawio-722] -- Blocks direct links to plantUML images generator and from other domains [CSP-1717] -- Fixes OneDrive saving large files with non-Ascii characters [drawio-3481] -- Prevents mermaid insertion errors when mxMermaidToDrawio is not available [drawio-3488] - -06-APR-2023: 21.1.5 - -- Fixes asynchronous MathJax rendering [drawio-2876] -- Added mermaid insertion as draw.io diagram to Atlassian [drawio-3488] -- [conf cloud] Adds support for importing Gliffy macros with no diagram name (only attachment ID) [DID-7470] -- [conf cloud] Fixed space filter search when key has "-" [DID-7470] -- [conf cloud] Added support for Historical revisions of imported pages [DID-7233] - -04-APR-2023: 21.1.4 - -- Remerge and release of dev branch - -03-APR-2023: 21.1.3 - -- Adds zoom and border properties for XML+SVG files -- Adds Clear Formatting button in Text style panel -- Removes fontSource cell styles in clear formatting -- Fixes possible resolving of defaults in stylesheet -- Conf Cloud: Support proper versioning for embed -> upload [DID-7828] -- Enables compression with compressXml [drawio-3484] - -29-MAR-2023: 21.1.2 - -- Fixes handling of ctrl+shift+v on Mac [drawio-291] -- Fixes properties cannot be named id [drawio-3460] -- [vsdx]] Adds overflow=width to improve support label alignment [DID-7420] -- Fixes change of title size in tables [drawio-3468] -- Adds live preview for change of swimlane title size - -23-MAR-2023: 21.1.1 - -- Fixes possible f.replace is not a function -- Fixes detection for Firefox browser [drawio-3456] -- Fixes OutlineWindow is not defined in viewer -- Fixes block layout in link info for multiple links - -23-MAR-2023: 21.1.0 - -- Updates Pako compression library to 2.1.0 -- Fixes inconsistent file opening in app and desktop -- Disables file compression [drawio-1724] -- Removes compression in libraries and embedded PDFs [drawio-1724] -- Fixes change of page ID [drawio-3397] - -21-MAR-2023: 21.0.10 - -- Removes P1 plugin - -21-MAR-2023: 21.0.9 Build not released nor tested - -- Fixes dialog after resize in viewer and embed mode - -18-MAR-2023: 21.0.8 - -- Fixes sequence diagram generation from mermaid - -17-MAR-2023: 21.0.7 - -- Fixes order of image class in styles [drawio-3432] -- Fixes update of global edge style [drawio-3429] -- Connector split clones marker and spacing [DS-946] -- VSDX import: Fixed some cases of incorrect text alignment [DID-7420] - -09-MAR-2023: 21.0.6 - -- Fixes preview for smart template - -09-MAR-2023: 21.0.5 Build Rejected on test - -- Fixes e not a function error for arrow [DID-7677] -- Fixes 404 for sign out from GitLab [drawio-3416] - -08-MAR-2023: 21.0.4 - -- Enables smart templates in production [DS-942] - -08-MAR-2023: 21.0.3 Build Rejected on test - -- Updates to Mermaid v10 [DS-945] -- Adds rack shape with vertical size determining number of units. -- Fixes HTML entities in format change [drawio-3403] -- [conf cloud] Shows message when conf diagram is edited from Jira Service Desk [DID-7647] -- Fixes default for container property [drawio-3406] - -03-MAR-2023: 21.0.2 - -- Fixes BPMN event attachment [draw-3342] -- Removes testing code for no branches [drawio-3396] - -02-MAR-2023: 21.0.1 - -- Changes behaviour of default styling [drawio-3312] - -02-MAR-2023: 21.0.0 Build Rejected on test - -- Build rejected, failed testing on stage - -01-MAR-2023: 20.8.24 - -- Fixes tolerance and logic for shape picker [drawio-3256] -- Updates sequence diagram styles in UML 2.5 library -- Fixes possible clipping of help icon in save dialog -- Using Mermaid v10 ESM in dev mode [DS-945] -- Fixed jscompiler error due to dynamic module import. -- Disables all diagram exports via configuration [drawio-3374] -- Improves error messages in git clients [drawio-3185] -- Fixes tooltip for elbow edge styles [drawio-3343] -- Fixes NPE when "more shapes" is clicked and configured libraries are incorrect -- [conf cloud] Sorts custom libraries alphabetically [DID-7590, drawio-1287] -- Fixes possible NPE in ArrangePanel - -22-FEB-2023: 20.8.23 - -- Fixes file extension for .drawio.pdf files [drawio-3368] -- [conf cloud] Workaround for invalid JSON response from getContentProperty API [DID-7519] - -20-FEB-2023: 20.8.22 - -- Internal release to update hidden flag template functionality [DS-942] - -20-FEB-2023: 20.8.21 - -- [vsdx] Adds special case of text field esc(0) format [DID-7420] -- Avoids NPE with bad libraries configurations [DID-7439] -- [conf cloud] Improved Gliffy mass import logs (page links start end time) [DID-7470] - -10-FEB-2023: 20.8.20 - -- Fixes rubberband, links for cells in locked layers [drawio-3343] - -09-FEB-2023: 20.8.19 - -- Disables object selection in locked layers [drawio-3343] - -07-FEB-2023: 20.8.18 - -- Fixes locked is not defined in read-only diagrams [DS-944] -- Fixes offset of terminal point after drag and drop -- Fixes special cases for drag and drop from sidebar -- Fixes parents for adding edges in cell hierarchies -- Fixes point offsets for duplicated edges in groups - -06-FEB-2023: 20.8.17 - -- Fixes connection points dialog, adds help button -- Fixed connection points losing dx, dy on edit (DS-943) -- Improves UX for UML sequence diagrams [DID-7338] -- Fixes initial embedded inline editor position -- Fixes default fill color on UML frame label -- Fixes inconsistent font color for condition shape - -02-FEB-2023: 20.8.16 - -- Fixes overriden CSS for buttons and button states [drawio-3326] -- Uses manifest version 3 in Notion Chrome extension -- Fixes possible NPE in async resize handler -- Clear default style action disables sketch mode [drawio-3331] -- View sketch option no longer updates existing cells[drawio-3331] - -01-FEB-2023: 20.8.15 - -- Adds debug output, improves UX in Notion extension -- Fixes clipping of start screen checkbox in dialog -- Fixes vertical alignment of show start screen item -- Fixes CSS for default action button [drawio-desktop-1219] - -31-JAN-2023: 20.8.14 - -- Updates in-place editor after scroll and UI change -- Fixes CSS specificity and global styles [DID-7294] -- Limit convert labels to SVG option to online draw.io only -- [conf cloud] Adds config option to disable the automatic generation of the preview images from the page view ["disableEmbedAutoImgGen": true] [DID-7251] -- Ignore events on selection border and parent shape -- Fixes library save, improves error handling [drawio-3323] - -26-JAN-2023: 20.8.13 - -- Fixes NPE when changing colors from toolbar [drawio-3315] - -26-JAN-2023: 20.8.12 - -- Updates CSP and script check for new JS index.html -- Fixes setDefaultStyle if updateDefaultStyle is false -- Updated express dependency of nodeImport (vsd server) [CSP-1246] -- Prevent XSS due to unsanitized input [CSP-1267] -- Attempt to fix NPE in mxVertexHandler.redrawHandles -- Error message links to Notion and diagram template -- Fixes picker and background in inline embed mode -- Adds links to templates, minimum size for editor -- Fixes initial view state for inline embed editing -- Adds viewer entry to CSP generation - -24-JAN-2023: 20.8.11 - -- Simplifies error logging code for parser in MSEdge -- Adds orgchart to PWA, fixes orgchart in CSV [2028] -- Adds Custom Orgchart button and handling in dialog -- Fixes keyboard input in native color dialog [3291] -- Improves error handling in Notion extension [3284] -- Adds updateDefaultStyle for tracking style changes -- Fixes possible NPE in StyleFormatPanel.addStyles - -20-JAN-2023: 20.8.10 - -- [conf cloud] Handles some common errors in initializing viewer -- [desktop] Updates internal filename in desktop after save as - -20-JAN-2023: 20.8.9 - -- Handles possible errors in custom links -- Adds paste data in style tab for multiple cells -- Improves error logging in P2PCollab [drawio-nextcloud-27] - -19-JAN-2023: 20.8.8 - -- Updates actions after undo history events [drawio-3294] -- Adds navigation items to context menu in simple UI -- Mermaid Updated to v9.3.0 -- Updates express dependency of nodeImport (vsd server) [CSP-1246] -- [conf cloud] Removes auth dialog in Safari with anonymous access [DID-7219] - -19-JAN-2023: 20.8.7 - -- Fixes initial page ID and name when creating files [DS-941] -- [vsdx] Fixed edge/vertex detection [DID-7208] -- Fixes log of ignored anoymous and extension errors - -18-JAN-2023: 20.8.6 - -- Returns trash URL for trashed Google Drive files -- Moves refresh icon to header in GitHub file dialog -- Shift+click in shape picker updates selected cells -- Fixes refresh icon for OneDrive picker in dark mode -- Fixes default stroke color applied in UML subshape -- Applies basic text styles to cells with text class -- Updates DOMPurify from 2.3.6 to 2.4.3 -- Fixes possible NPE in mxGraph.cloneCells -- Ignores errors in script source files -- Shows paste style button for multiple selected cells -- Calls auth fallback on parse error in Google Drive -- Handles invalid JSON in P2PCollab message listener -- Improves error handling for pasting cells -- Improves error handling for firing mouse events -- Executes layouts in min and simple layout submenu -- Fixes center, rounds waypoint for parallel routing -- Fixes possible NPE for adding SVG with no viewBox -- Fixes possible NPE in shape picker -- Hides button to add custom plugins if not allowed -- Fixes possible NPE in hideDialog -- Fixes possible NPE in OneDriveClient - -12-JAN-2023: 20.8.5 - -- Fixes possible NPE [DID-7061] -- Shows spinner while authorizing with Google Drive -- Conf & Jira Cloud: Added error check to JSON.parse in multiple locations [DID-7101] -- Lucid import: Added support for notes [DID-7053] -- Retries saving after invalid response from Google -- Fixes possible NPE in mxCellEditor -- Fixes hidden Format option in view menu [DID-7133] -- About shift+click prints window and app to console -- Fixes possible NPE in Lucid import extension - -11-JAN-2023: 20.8.4 - -- Fixes evt is not defined in selectSiblings action -- Adds sharp, rounded, curved option for wire shapes -- Fixes drawing of markers and shadows in wire shape -- Fixes sidebar triggers autosave, scale for preview -- Fixed OneDrive share link [3273] -- Fixes clientId in checksum error fallback logging -- Fixes preview graph state, drag preview background -- Shift+Click on About menu item shows console -- [conf cloud] Adds viewerCanExceedPageWidth settings to allow increasing the viewer size above the allowed width [DID-7094] -- Adds fallback for missing translations to show key -- Fixes specificity for gePrimaryBtn dark mode style -- Fixes possible NPE for missing resource in confirm -- Saves file to Google Drive if sharing unavailable -- Fixes draft dialog shape background for dark mode -- Adds merge/unmerge to context menu for table cells -- Fixes reset of view state after initial file save -- Fixes change stroke color for table cells and rows -- Removes span with cell styles after paste of text - -06-JAN-2023: 20.8.3 - -- Adds logging for merge fallback success or failure -- Fires consumeMouseEvent event in consumeMouseEvent -- Removes edge URL parameter -- Fixes mouse cursors for direct edge event handling - -06-JAN-2023: 20.8.2 - -- Fixes possible NPE, missing update of page tabs -- Fallback to mergeFile after checksum error in sync [DS-940] -- Fixes scrollbars after reset view on empty diagram -- [jira cloud] license compliance improvements [DFJC-17] -- Fixes empty edge label handle disables moving edge - -03-JAN-2023: 20.8.1 - -- Fixes substring not a function for invalid pattern -- Paints grid in fast zoom preview with no page view -- Shows shapes before freehand in responsive toolbar -- Fixes CSS for template dialog in dark mode -- Fixes possible NPE in format panel - -02-JAN-2023: 20.8.0 - -- Fixes possible NPE for window widths below 360px -- Fixes NPE [DS-935] -- Shows keyboard shortcuts as tooltips when disabled -- Decreases tap and hold delay for marquee selection -- Fixes keyboard shortcuts conflicts -- Hides no unread notification icon in simple theme -- Adds background color, shadow, sketch view options -- Add selection count in simple UI delete popup menu -- Adds dashed wire shape [3249] -- Fixes Cloudflare workers deployment scripts to prevent removing KV bindings and dashboard configurations [DS-938] -- Fixes ignored dark UI theme in embed mode [3172] -- Fixes edge styles in Advanced sidebar containers -- Fixes order after split edge and size of waypoint -- Fixes direct moving of segment edge end points -- Fixes moving edge segments with segment connector -- Fixes drag from sidebar and popup on touch devices -- Fixes ignored final rounding for fast zoom preview -- Updates zoom label in UI during fast zoom preview -- Enables line jump format option for wire shapes -- Fixes dash pattern dropdown for current selection -- Changes default edge style in simple theme -- Fixes sketch URL parameter default and host checks -- Removes redirect for drive button in splash [3260] -- Fixes possible DOM error in obsolete plugin -- Attempt to fix possible NPE in TextFormatPanel -- Moves page actions to submenu in pages menu -- Adds animation for sidebar and shape picker items -- Adds live preview for drag and drop from sidebar -- Fixes hardcoded title font color for process bar -- Fixes scratchpad and entry background in dark mode -- Adds native scrolling for page tabs [3265] -- Fixes preview for edge cases where height is 0 -- Fixes sidebar live preview item count check -- Adds select option in tags dialog -- Fixes focus handling with props plugin [3264] -- Fixes NPE in vsdx import, hiddenTags is null -- Removes undo/redo from context menu in simple UI -- Fixes border for predefined colors in dark mode -- Fixes height for inserted SQL table shapes -- Adds outline for zoom menu in min and sketch UI - -16-DEC-2022: 20.7.4 - -- Fixes notification icon CSS styles -- Fixes vertical offset of bell icon in classic UI -- Fixes app icon and comments button in Conf Cloud -- Smaller notification count icon -- Removes shadow for notification icon -- Shows Classic menu item only in kennedy theme -- Darker menu highlight CSS style -- Improves network status updates and error handling -- Uses status box styling for collaboration updates - -15-DEC-2022: 20.7.3 - -- Hides empty button container in standalone app -- Fixes inconsistent network status icon and message -- Fixes direct moving of unconnected edge end points -- Fixes NPE with disabled libs in embed mode [3247] -- Adds order for multiple cells in popup menu [3248] -- Adds page CSS in print preview output -- Fixes possible NPE [DS-933] -- Fixes possible NPE in pages menu [DS-934] -- Fixes print preview dialog in Safari -- Fixes remove background color in background dialog - -14-DEC-2022: 20.7.2 - -- Fixes undefined function error when switching to simple UI -- Adds missing network status and icon in simple UI - -13-DEC-2022: 20.7.1 - -- Restores original default jiggle value for sketch -- Fixes position of inserted edges with shape picker -- Fixes user element CSS display after window resize -- Moves Close item to Diagram menu in modern themes - -12-DEC-2022: 20.7.0 - -- Fixes cell selection while using cursor [DID-6906] -- VSDX import: Fixed layers (replaced with tags to support multiple layers per cell) and cancelled considering group edges as vertexes. [DID-6874] -- Refactors simple UI [DRAWIO-DEV-13] - -08-DEC-2022: 20.6.2 - -- Enabled native window frame on Windows and Linux [DESK-784] -- Adds button container in atlassian sketch mode [DFCS-314] -- Conf Cloud: Added configuration to auto crop the viewer [DID-6866] - -08-DEC-2022: 20.6.1 - -- Adds API to get cloud storage folder and file URL -- Restores edit link menu option in sketch mode -- Added support for OneDrive Single Tenant apps [3203] -- [conf cloud] Copy diagram attachment on Page Editor Copy/paste [DID-6797] -- Fixes label editing on older iOS versions [3214] -- Fixes handling of nested cells with negative child - -22-NOV-2022: 20.6.0 - -- Adds search, scratchpad in simple UI shapes dialog -- Removes tooltip for removed click event handler -- Supports reading uncompressed library entries [DS-929] -- Adds AWS lambda authenication replication [DS-930] -- Fixes ignored locked table and row styles [3174] -- Adds lock/unlock option in arrange tab -- Fixes mouse selection bugs on iOS [2758,3055,3056] -- Handles change of search query via clipboard event -- [desktop] Added CLI csv export [202] -- [desktop] Added layers selection support to CLI export [143] -- Blocks functions from being overwritten with values [DID-6750] -- Improves visibility of more shapes item in sidebar [DS-931] -- Checks url parameters before using them [CSP-1035] -- Removes potential ReDoS code that is not used [CSP-1036] -- Escapes url parameters used in output [CSP-1037] -- Fixes link to app folder in Dropbox [2843] -- Fixes restoring from mxGraphModel files [DID-6788] -- Fixes hover shape picker ignores container [3199] - -06-NOV-2022: 20.5.3 - -- Uses static Graph.sanitizeHtml -- Sanitizes status bar content -- Fixes icon stroke width -- Shows crop option only if image style is used - -04-NOV-2022: 20.5.2 - -- Fixes infinite redirection in embed + proxy (https://huntr.dev/bounties/28d79d99-81a4-46f3-9455-89658bca424b/) -- Updates autosize for text insert with keyboard -- Removes Cloud Fortified program metric API calls -- getPublicUrl checks for private GitHub repository -- Limits default simple mode for small window sizes -- Updates Azure stencils -- [conf cloud] Fixed getProperty as Atlassian sometimes returns duplicates [DID-6520] -- [conf cloud] Improved export/import/mass import/re-indexing error logging [DID-6646] -- Fixes possible CSS and CSP bypass in tickets plugin -- [conf cloud] Workaround for cases where API returns duplicate entries for unique items [DID-6501] - -22-OCT-2022: 20.5.1 - -- Restores original CSS selector for links in footer -- Fixes possible NPE for tagsWindow, style in viewer -- Fixes gray background in Conf Cloud [DID-6578] -- Fixes find/replace window size in sketch/simple UI -- Hides all tool windows when diagram is closed -- Disables themes in viewer -- Ignores possible missing method for auto dark mode - -21-OCT-2022: 20.5.0 - -- Enables live UI switching between sketch and default themes [DS-909] -- Replaces old tables in the Threat Modeling library [3019] -- Shows download banner for own domains only [3119] -- Consistent select in export, handle auto dark mode -- Changes label of background image button to image -- Adds page move menu in sketch theme -- Fixes ignored movable style for cursor keys [3110] -- Fixes exit flag for save button in embed mode -- Adds drag and drop to shape picker -- Updates autosize for text insert with shape picker (edited) -- Fixes proxy infinite redirection loop by a malicious site (https://huntr.dev/bounties/d383a6b8-b12a-4893-9b8f-8df18ec679c3/) -- [conf cloud] Adds "Edit Owning Page" button to embed diagram editor [DID-6482] -- [conf cloud] Fixes NPE when publishing a diagram in a page with no draft - -19-OCT-2022: 20.4.2 - -- Fixes draggable elements problem in Chrome [3112] - -13-OCT-2022: 20.4.1 - -- Adds Gliffy file size error message [DS-920] -- Only hides current menu for mouse down event types [DS-921] -- Fixes possible #ERROR fill for invalid fillStyles [DS-922] -- Bugfixes for Rack Cabinet shape [3052] -- Fixes DOM for empty status message -- Fixes status alert style in dark mode- -- Fixes spaces, missing HTML tag in C4 shapes [3082] -- Uses data attribute for status event handling code [DS-923] -- Uses svg icons, fixes revisions dialog for mobile -- Adds new port shape to the SysML library [3015] -- Inverts order of toolbar items in revision dialog -- Adds editing for relative positions in Arrange tab -- Fixes possible overflow of library preview [3080] -- Handles data-effect attribute for status bar items -- Fixes key insert position if mouse outside diagram [DS-924] - -29-SEP-2022: 20.4.0 - -- [conf cloud] Fixed bug that instances without configuration store diagrams as compressed XML [DID-6387] -- Applies fill=stroke for some stencils [DS-918] -- Fixed image export text shift in lightbox [DID-6374] - -27-SEP-2022: 20.3.7 - -- [conf cloud] Fixes conf pdf export of diagrams with () in their name -- Prevents loading compatible files (png, svg...) as local files in embed mode and on-prem [DID-6193] -- Fixes call to fadeNodes in animation plugin [3070] -- Added Spacing option to distribute to have equal spacing between cells [736] - -22-SEP-2022: 20.3.6 - -- Fixes possible NPE in viewer lightbox [DS-917] - -22-SEP-2022: 20.3.5 - -- Ignores OS setting for default dark mode [DS-916] - -22-SEP-2022: 20.3.4 - BUILD FAILED AT STAGE TESTING - https://github.com/jgraph/drawio-dev/commit/1bb7a0fc531d68ff85653534e4f11774914bcc30 - -- Changes proxy 500 returns to 400 [DS-915] -- Disables dark mode with UI in embed mode [DS-6350] -- Fixes embed button offset and padding in sketch UI - -19-SEP-2022: 20.3.3 - -- Replaces CSS classname in live UI refresh to avoid extension clash [DS-909] - -16-SEP-2022: 20.3.2 - -- Keep SVG content attribute in DOMPurify [DID-6193] - -15-SEP-2022: 20.3.1 - -- Multiple commits preparing for live UI switch [DS-909] -- Disables java proxy by default [DS-912] -- Removes click to stop drawing freehand [1109] -- NPE fix [DS-913] -- NPE fix [DS-914] -- [conf cloud] Diagram count restrictions on free tier [DFCC-57] -- Fixes scroll issue for CMD key in Safari 16 [3017] -- Enables autosize for multiple vertices [1116] -- Adds ui/safe to fix possible XSS in math [CSP-733] - -07-SEP-2022: 20.3.0 - -- Uses organic as default layout to fix possible NPE in CSV import [DS-910] -- Removes storage.googleapis.com from CSP as no longer needed for PWA [CSP-673] -- Adds ALLOW_CUSTOM_PLUGINS for third party plugins [CSP-676] -- Limits plugins to built-in or same domain [CSP-676] -- Hides connect arrows while freehand drawing [1107] -- Removes yarn.lock file as we removed package.json from this project [DS-911] -- Fixes possible XSS in viewer back/refresh buttons [CSP-677] -- Checks href attribute with no namespace in use tag [CSP-678] - -01-SEP-2022: 20.2.8 - -- Fixes importing plain SVG images by drag and drop [DS-902] -- Adds createToolbarButton helper function [3007] -- Sets current stroke color and width independently [DS-903] -- Fixes layout for CSV import in lightbox mode [DS-904] -- Fixes repeated set default style not working [DS-905] -- [conf cloud] Catches errors in diagram text extraction to not break re-indexing process [DS-908] -- Applies fillColor=strokeColor for shapes where appropriate [DS-903] -- Makes format window closable in min ui [DS-906] -- Fixes file pattern for workbox [2977] -- Smaller stencils.min, uses built-in base64 encoder [DS-907] -- Allows for close icon in minimized format window [DS-906] -- Adds support for stroke and fill color in stencils [DS-903] -- Restricts proxy servlet, java disabled by default, all errors are 500 (not distinguishable), allow ports only by config [CSP-633] -- Conf Cloud: Fixed error of renaming/changing view settings not published if no modification done to the diagram [DID-6141] -- Adds custom starting unit number to Rack Cabinet shape [2967] - -22-AUG-2022: 20.2.7 - -- Reduces cursor update frequency to reduce DO request count [DS-899] -- Creates Github app specific to confluence cloud [DS-900] -- Adds enumeration state in image export [2900] -- Updates freehand library to fix security dependency issue -- Fixes highlight for drag over AWS subnet [2966] - -21-AUG-2022: 20.2.6 - -- Updates to latest GCP icon set [DS-898] -- Changes language menu icon to SVG [DS-897] -- Use relative URL for service worker [2740] - -18-AUG-2022: 20.2.5 - -- [conf cloud] Adds support for anon users by using display name instead of email [DS-895] -- [conf cloud] Adds private repository support to embed diagram github option [DID-5931] -- [conf cloud] Fixes hi res preview setting in viewer [DID-5978] - -15-AUG-2022: 20.2.4 - -- [conf cloud] Adds support for legacy diagramly macros [DID-5823] - -03-AUG-2022: 20.2.3 - -- [conf cloud] Fixes adding diagrams to unsaved global templates [DID-5761] - -26-JUL-2022: 20.2.2 - -- Uses proxy for loading from template URL [DND-629] -- [conf cloud] Fixes issue in page update of pageIDs import [DID-5641] - -26-JUL-2022: 20.2.1 - -- Adds statistics to realtime CF worker -- Adds checksums for merge(File) error logging - -22-JUL-2022: 20.2.0 - -- Changes real-time collaboration CF worker to use the same DO for multiple files - -21-JUL-2022: 20.1.4 - -- Fixes dark mode switch overlaps embed buttons -- Fixes embed button styles in dark mode -- Uses proxy for CSV descriptor URL if CSP is used - -20-JUL-2022: 20.1.3 - -- Fixes curved/rounded checkbox in diagram style tab -- Restores update of default curved/rounded style -- Adds border width and type for color scheme [2924] -- Fixes ignored expand style for image change [2921] - -19-JUL-2022: 20.1.2 - -- Update mermaid to v9.1.3 -- Removes Advanced PDF export when printPdfExport is true -- Adds A/S/D/F/X/C, moves Ctrl+(Shift)+K/X shortcuts -- Fixes page background if ui URL parameter is used -- Adds label in dialog/tooltip if diagram translated -- Uses default browser language for online app - -12-JUL-2022: 20.1.1 - -- Closes secret manager resources - -11-JUL-2022: 20.1.0 - -- [conf cloud] Trial to add archived spaces support to Gliffy mass import -- Improves performance for CSV parsing (RFC 4180) -- Uses gcloud secret manager -- [conf cloud] Changed page IDs export name to draw.io Export -- [conf cloud] Using Page IDs import/export in cloud/server -- [conf cloud] Added archived spaces support to Gliffy mass import -- Changes pusher.properties to pusher_properties - -29-JUN-2022: 20.0.4 - -- [conf cloud] Adds tags to viewer/lightbox toolbar -- Adds initial miro import (non-production) -- Disables math typesetting for plain text [2899] - -22-JUN-2022: 20.0.3 - -- Fixes ignored error codes for loading templates -- Fixes new tab for insert from template URL [2891] -- Validates dialog size after window resize [2883] -- Fixes page tabs overflow after format panel toggle -- Adds Lithuanian and Latvian translations - -21-JUN-2022: 20.0.2 - -- Fixes autosize and text editor with spacing [2732] -- Fixes embed mode with math typesetting [2879] -- Fixes math rendering in embed code for html files - -12-JUN-2022: 20.0.1 - -- Fixes bold math in print output for Chrome [2873] -- Disables MathJax for Internet Explorer -- Adds MathJax callback, fixes math in PDF export -- Fixes style changes override default style [2164] - -11-JUN-2022: 20.0.0 - -- Fixes font style button state before typing [2398] -- Fixes overwritten style for new cell in CSV import -- Updates to MathJax 3 - -08-JUN-2022: 19.0.3 - -- Adds allowlist for allowed constructors in mxCodec -- Fixes possible NPE with no local storage [2850] -- Handles service worker permission error in promise -- Adds fixedWidth to limit autosize to height [2732] - -07-JUN-2022: 19.0.2 - -- Fixes isNode check, handling of HTML in node names -- Fixes cell value Element type check in mxCellCodec -- Changes mxStylesheetCodec.allowEval to false - -06-JUN-2022: 19.0.1 - -- Fixes handling of cell ID in CSV import [DID-5225] - -03-JUN-2022: 19.0.0 - -- Removes IE 11 support -- Updates mermaid.js to 9.1.1 -- Fixes updating existing cells in CSV import [2796] - -02-JUN-2022: 18.2.1 - -- Updates JSZip to 3.10.0 -- Ignores only cells with hidden state in layouts -- Fixes reset of document overflow in viewer [2822] -- Adds support for orgchart layouts in CSV import -- Updates AWS - -31-MAY-2022: 18.2.0 - -- Fixes inconsistent menus in sketch theme -- Fixes ignored XML data for importing embedded SVG -- Fixes ignored double arrow marker selection [2839] -- Fixes NPE with regex in find/replace dialog [2833] -- Fixes link icons in dark mode -- Fixes main button hover state in conf sketch macro - -26-MAY-2022: 18.1.3 - -- Adds spacing dialog for parallels layout -- Adds allowlist for layout constructor names -- Adds JSON values for childLayout styles -- Adds size check for fetched connection data -- Allows custom protocols in links - -23-MAY-2022: 18.1.2 - -- Limits export proxy URL - -20-MAY-2022: 18.1.1 - -- [VSDX import] Fixes case when theme index is incorrect -- Checks stencil name parameter in embed servlet -- Adds DOM_PURIFY_CONFIG global variable -- Check env var is set in ExportProxy - -19-MAY-2022: 18.0.8 - -- Deletes unused ExportProxyServlet - -17-MAY-2022: 18.0.7 - -- Sets setInstanceFollowRedirects(false) in proxyservlet -- Fixes issue in state redirect of AbsAuth -- Changes regex for CORS check - -16-MAY-2022: 18.0.6 - -- Moves sanitize URL to Utils, adds extra IPv6 check -- Adds additional checks for hyperlinks - -15-MAY-2022: 18.0.5 - -- Adds isLinkLocalAddress() to address checks -- Limits well known servlet to serving single file - -14-MAY-2022: 18.0.4 - -- Fixes type error for diffsync with overlays [2808] -- Handles possible error 400 in OneDrive auth flow -- Fixes update of cell metadata in CSV import [2796] -- Applies URL filtering checks to location header in java proxy -- Resolves URL parameters in java proxy before filtering - -11-MAY-2022: 18.0.3 - -- Removes remote cursor options from context menu -- Fixes patch checking for entry with no secret -- Updates closure compiler to v20220502 -- Fixes check for text/plain transfer data -- Fixes replace all ignoring the first match - -07-MAY-2022: 18.0.2 - -- Handles Element fields in object cloning [DND-477] -- Fixes lost changes for preview while editing -- Forbids use of form tags in labels -- Fixes CSS issues in print dialog for lightbox - -05-MAY-2022: 18.0.1 - -- Adds support for windows line break in CSV files -- [conf cloud] Fixes trailing space in diagram name during page IDs import -- FIxes timestamp check in watchFile [819] [DND-487] -- Hides menus and dropdowns if clicked again [2745] -- Fixes cursor handling for composite cells [2756] -- [desktop] Adds strict CSP after loading plugins (disabling unsafe-inline scripts) - -04-MAY-2022: 18.0.0 - -- Replaces sanitizer with DOMpurify - -04-MAY-2022: 17.5.1 - -- [conf cloud] Adds saving delay for specific timing case [DID-4851] -- Adds "shareCursorPosition": true/false configuration -- [conf cloud] Prevent publishing without changes creating new version -- Fixes alt+shift for floating connection [DID-4550] -- Changes default for shareCursorPosition to true -- Hides non-applicable sketch options for edges -- Fixes handling of invalid background page images -- Adds showRemoteCursors option -- Fixes LocalFile ctor arguments -- Fixes lazy shadow pages, stale local draft files -- Fixes conflict handling for writing electron files - -28-APR-2022: 17.5.0 - -- Refactors GCP2 shapes -- [conf cloud] Improves page IDs import - -20-APR-2022: 17.4.6 - -- Internal release testing whiteboard app changes - -11-APR-2022: 17.4.5 - -- Internal release testing whiteboard app changes - -11-APR-2022: 17.4.4 - -- Internal release testing whiteboard app changes - -11-APR-2022: 17.4.3 - -- Avoids null string in unused token key - -09-APR-2022: 17.4.2 - -- Fixes height of zero height groups in vsdx import -- Adds connection points support in vsdx import -- Adds isolation for caches, logs reading non-latest - -06-APR-2022: 17.4.1 - -- Fixes OneDrive inline picker in Link dialog and show all files -- Extracts text from selection if cells selected -- Returns indexable text in model cell order -- Fixes minimum stroke width for image export https://github.com/jgraph/drawio/issues/2723 -- Fixes PDF printing of background images -- [conf cloud] Fixes NPE in viewer -- [jira cloud] Adds delete button for cases of removed embed diagrams - -31-MAR-2022: 17.4.0 - -- Disables text selection in OneDrive inline picker -- [jira cloud] Fixes re-indexing of old diagrams -- Fixes NPE for OneDrive file in LinkDialog https://github.com/jgraph/drawio/issues/2721 -- Fixes modal sync status in embed with sketch theme -- GAE API SDK update to 1.9.95 - -30-MAR-2022: 17.3.0 - -- [conf cloud] Enables RT on all domains -- [jira cloud] Fixes conf auth when multiple sites are allowed -- Adds enableHtmlEditOption in EditorUi [DID-4610] - -30-MAR-2022: 17.2.6 - -- [jira cloud] Adds Configuration page with re-indexing functionality - -29-MAR-2022: 17.2.5 - -- Adds lazy parsing of file data for shadow pages -- Adds selection option in print dialog for one page -- Changes token generation to use SecureRandom -- [conf cloud] Increases timeout after successful write to next write - -25-MAR-2022: 17.2.4 - -- Fixes replace is not a function -- Fixes Sharepoint saving to site root drives in new picker - -25-MAR-2022: 17.2.3 - -- Fixes custom links in duplicated page for realtime -- Uses same domain for realtime in production - -24-MAR-2022: 17.2.2 - -- Adds Shift+Alt for floating connections [DID-4550] - -23-MAR-2022: 17.2.1 - -- Fixes realtime for optimistic sync in OneDrive - -23-MAR-2022: 17.2.0 - -- Improves performance issues on real time mechanism - -22-MAR-2022: 17.1.5 - -- [conf cloud] Gliffy import case, containerId wrong, but diagram on current page - -22-MAR-2022: 17.1.4 - -- [conf cloud] Fixed gliffy mass import, incorrect macro type imported - -15-MAR-2022: 17.1.3 - -- Adds image clipPath support to mxLabel and mxSwimlane -- [jira Cloud] Updates embed conf scopes - -11-MAR-2022: 17.1.2 - -- Skips sort and merge in RT for single receive data -- Reduces flickering, simplified RT code - -10-MAR-2022: 17.1.1 - -- Uses tab key for nesting in list elements https://github.com/jgraph/drawio/issues/2673 -- Adds protocol and editor version to p2p message -- Replaces consensus with improved consistency check -- Fixes Gliffy DnD import - -09-MAR-2022: 17.1.0 - -- Changes freehand drawing to filled path -- Ignores pageNotFound in background image dialog -- Fixes handling of default colors in style targets -- Adds selection only option to print output -- Fixes background image offset in print output -- Fixes dark mode and background pages in print output - -08-MAR-2022: 17.0.0 - -- Enables real time collaborative editing - -08-MAR-2022: 16.6.8 - -- [conf cloud] Fixes toolbar showing in page editor in FF - -07-MAR-2022: 16.6.7 - -- Adds MathJax Safe-mode to fix XSS vulnerability when viewer is used with CSP - -04-MAR-2022: 16.6.6 - -- Fixed cropped images of sub shapes not showing - -02-MAR-2022: 16.6.5 - -- Handles drag and drop of .drawio.png image files -- Improves error handling when loading files -- Adds i18n for realtime collaboration - -24-FEB-2022: 16.6.4 - -- Make consistency check independent of return value -- Fixes cropping in background image dialog -- Adds click handler for status error message -- [conf cloud] Adds clean draft files to draw.io re-indexing -- Disables fast sync by default in OneDrive - -23-FEB-2022: 16.6.3 - -- Enables Google Drive on PC in Office addon -- Enables fast RT for OneDrive -- Selects URL input after drag and drop - -21-FEB-2022: 16.6.2 - -- Fixes snap to terminal tolerance -- Fixes import of bitmap images into blank diagrams -- Fixes dialog title for checksum error [DID-4314] -- Handles remote page name changes in sketch theme - -17-FEB-2022: 16.6.1 - -- Adds P2PCollab to build - -17-FEB-2022: 16.6.0 - -- Mode URL parameter forces splash -- Adds pass-through arguments -- Disables auth check for external editing -- Fixes parsing of keywords in SQL plugin https://github.com/jgraph/drawio/issues/2631 - -10-FEB-2022: 16.5.6 - -- Opens file after drag and drop on blank diagram -- Shift+drop forces open file in new tab -- Fixes pinch to zoom in lightbox -- Moves multitouch event filtering to mxGraph - -09-FEB-2022: 16.5.5 - -- Updates AWS stencils - -08-FEB-2022: 16.5.4 - -- Removes font CSS links with embedded fonts -- Adds Cmd+Shift+Alt+Drag -- Allow connection points for vertices only excluding groups -- Fixed export to pdf error of empty pages -- Fixes ctrl+resize for groups - -02-FEB-2022: 16.5.3 - -- Fixes sketch font path -- [conf cloud] Adds linkAdjustment configuration to viewer -- [Conf Cloud] Fixes issue in linkAdjustment of tooltips -- Adds shift+drag to swap shapes -- Adds missing background for SVG files in dark mode - -28-JAN-2022: 16.5.2 - -- Disables iOS scroll workaround in viewer - -28-JAN-2022: 16.5.1 - -- Adds isExternalDataComms flag - -28-JAN-2022: 16.5.0 - -- Keeps windows in viewport for inline embed mode -- Sets default scrollbars to true -- [desktop] Removes setting offline to true - -27-JAN-2022: 16.4.11 - -- Fixes build process to deploy teams.html - -27-JAN-2022: 16.4.8 - -- [desktop] Fixes draft files removal when auto-save is enabled -- Edit connection points dialog can now only be closed via the dialog button -- [conf cloud] Disables editing if confluence page is opened inside another service (e.g, Jira project pages) -- Shows label in edit connection points dialog https://github.com/jgraph/drawio/issues/864 -- Fixes touch event handling on Android https://github.com/jgraph/drawio/issues/2579 -- [desktop] Sets offline and offlineApp true -- [desktop] Display meaningful error when content is imported that requires server - https://github.com/jgraph/drawio/issues/2117 -- Fixes drag from picker for Chrome on touch devices - -25-JAN-2022: 16.4.7 - -- Improves output validation of AbsAuthServlet [DND-371] -- Improves redirect url validation [DND-370] -- Changes child-src from none to self -- Fixes two windows with disabled start screen https://github.com/jgraph/drawio-desktop/issues/883 -- Fixes handling of hidden stroke in RoughCanvas -- Fixes order and start point for circle layout -- Removes tags and layers icon in sketch footer -- [conf cloud] Replaces deprecated dialog.on('close', ...) -- [conf cloud] Forces sketch mode even when config sets ui -- Improves connection points dialog - -24-JAN-2022: 16.4.6 - -- Fixes border for waypoint shape with sketch style -- [conf cloud] Added support for "new line" in page name in PageIds Export -- Fixes configurations not saving https://github.com/jgraph/drawio-desktop/issues/873 - -21-JAN-2022: 16.4.5 - -- Corrects SHA for bootstrap - -21-JAN-2022: 16.4.4 - -- Fixes undeclared variable idx -- Adds a confirmation step to public Github deployment -- Enables reverse action for edges https://github.com/jgraph/drawio/issues/2569 -- Switches to dev branch of i18n submodule -- [conf cloud] Uses content.id instead of the deprecated page.id -- [conf cloud] Fixes errors of spaces in diagram name and NPE in GraphViewer - -20-JAN-2022: 16.4.3 - -- [jira cloud] Adds refresh button to diagram search page -- Fixes duplicate flipEdge function -- Adds unknownStyle option for CSV import -- Uses new app path in Dropbox - -19-JAN-2022: 16.4.2 - -- Fixes NPE on destroyParentHighlight - -19-JAN-2022: 16.4.1 - -- Fixes NPE in CropImageDialog -- Expands format window on large screens in sketch -- Fixes parent highlight after change of parent - -19-JAN-2022: 16.4.0 - -- Adds helper function for tree layouts -- Fixes inkscape svg export size -- Adds support for special characters and html entities in string properties -- Adds sketch default font to PWA cache -- Fixes crop button state -- Adds insert menu in sketch sidepanel -- Bypasses proxy for Google fonts, adds font mapping -- Fixes local folder for Google font in cell style -- Adds mapping from font CSS URLs to font-face CSS - -18-JAN-2022: 16.3.0 - -- Fixes hardcoded textarea dialog size -- Adds snapToGrid action -- Adds flip for groups and edges https://github.com/jgraph/drawio/issues/1895 /1139 -- Fixes copySize enabled state for edges -- Embeds sketch default font (Architects Daughter) -- Clears background image with background color -- Fixes mouse wheel zoom in Brave for Windows https://github.com/jgraph/drawio/issues/2528 -- Adds support for enumerating edges - -14-JAN-2022: 16.2.7 - -- Adds enumerateValue property -- Adds peristent scratchpad and search in sketch -- Updated for modified inline CSS -- Fixes realtime zoom on iPad with sketch https://github.com/jgraph/drawio/issues/2545 - -12-JAN-2022: 16.2.6 - -- Fixes NPE - -12-JAN-2022: 16.2.5 - -- Fixes reset of grid color -- Adds File submenu, windows=0 test URL parameter -- Adds enumerate property to replace number plugin -- Adds non-destructive image cropping https://github.com/jgraph/drawio/issues/73 -- Adds Advanced submenu in Import from -- Adds mailto for short text sharing -- Adds ellipsis for Comments menu item -- Fixes broken background page links after import - -07-JAN-2022: 16.2.4 - -- Fixes duplicate edges in CVS import -- Adds Convert labels to SVG option to SVG export - -07-JAN-2022: 16.2.3 - -- Uses tableRow in ERD shapes -- Handles special title sizes in table -- Adds labels checkbox in More Shapes dialog - -05-JAN-2022: 16.2.2 - -- Disables merging for merged cells -- [conf cloud] Adds support for anchor importing from server + support for adding links to anchors in old editor -- Adds precedence for alt on mouse down -- Adds Shift+Click for table range selection -- Fixes insertRow/Column for selected cell range - -04-JAN-2022: 16.2.1 - -- Fixes cell divider event handling - -04-JAN-2022: 16.2.0 - -- Fixes MathJax anti-aliasing in CLI export https://github.com/jgraph/drawio/issues/2253 - -03-JAN-2022: 16.1.4 - -- Fixes possible NPE - -03-JAN-2022: 16.1.3 - -- Fixes highlight for table shapes - -30-DEC-2021: 16.1.2 - -- Adds fillStyle dropdown for image background - -29-DEC-2021: 16.1.1 - -- Avoids creating Blob for parseFile -- Fixes dimension shape with large stroke size https://github.com/jgraph/drawio/issues/271 -- Hides foreign object warnings in background pages -- Fixes overflows in minimal and sketch theme https://github.com/jgraph/drawio/issues/2509 -- Fixes freehand mode for Apple pencil on iOS https://github.com/jgraph/drawio/issues/2510 -- Adds tableRow shape, fixes events for merged cells -- Uses clip path attribute for SVG image clipping -- Fixes default label background for imported images -- Fits image to clipPath bounding box -- Fixes collapsed table foreground https://github.com/jgraph/drawio/issues/2512 -- Fixes overflow in LinkDialog -- Disables child layout for collapsed cells - -23-DEC-2021: 16.1.0 - -- Fixes inconsistent event cursors on table lines -- Fixes default lanecolor for UML frame -- [conf cloud] Reduces number of comments requests -- Refactor structure of WEB-INF folder - -21-DEC-2021: 16.0.3 - -- Adds Share and Comments in sketch File menu -- Fixes no stroke in Roughjs, adds swimlaneHead/Body -- Uses persisted default grid color -- Fixes rendering and tooltips for special colors -- Fixes initial placement of shapes window -- Uses Pusher 7.0.3 to fix NPE - -21-DEC-2021: 16.0.2 - -- Re-build - -21-DEC-2021: 16.0.1 - -- Fixes possible NPE - -17-DEC-2021: 16.0.0 - -The reason for going to version 16 is there is a breaking change in the docker image. The -default base image used has been changed because the previous image was not supported. There -is no breaking change in the editor codebase, but the docker images follow the same numbering. - -- Fixes clipping on initial arrow drop down https://github.com/jgraph/drawio/issues/2482 -- Fixes table and template icon in sketch mode -- Restores sync problem icon -- Hides Cmd+R keyboard shortcut in Safari https://github.com/jgraph/drawio/issues/1757 -- Moves selection state to EditorUi -- Added scrollbar to layersDialog in GraphViewer https://github.com/jgraph/drawio/issues/1347 -- Added dark mode support for Mermaid https://github.com/jgraph/drawio-desktop/issues/785 -- [conf cloud] Added minorEdit for page changes just in case it is effective - -13-DEC-2021: 15.9.6 - -- Fixes NPE for wheel event in outline window - -13-DEC-2021: 15.9.5 - -- Ctrl disables copy if enabled by default -- Uses action state for (un)group buttons -- Altered AWS group styles for better usability -- Fixes no pointerEvents for no (fill)opacity -- Fixes for AWS container usability -- Uses lazyZoom and adds trackpad in outline window -- Fixes dark mode support in browser picker -- Fixes ignored stroke option in SVG getBBox https://github.com/jgraph/drawio/issues/2484 -- - -08-DEC-2021: 15.9.4 - -- Adds mxShape.intersectsRectangle -- Shows row-/colspan property for table cells -- Fixes style processing issues https://github.com/jgraph/drawio-desktop/issues/843 - -08-DEC-2021: 15.9.3 - -- Adds commons-lang3 3.12.0 for commons text dependency - -08-DEC-2021: 15.9.2 - -- Keeps only window title inside viewrect -- Fixes handling of defaults in copy/paste style -- Removes GoogleGadgetServlet -- Improves handling of special style values -- Uses map in signature of Graph.updateCellStyles -- Fixes possible unresolved values in default style -- Fixes unresolved colors in style thumbnail -- Fixes background page for PDF export in dark mode -- Fixes line cap for partial rectangle https://github.com/jgraph/drawio-desktop/issues/813 -- Fixes ignored model for change of cells in event - -03-DEC-2021: 15.9.1 - -- Fixes build error - -03-DEC-2021: 15.9.0 - -- Fixes possible hidden tool windows in sketch -- [conf cloud] Fixes page ids export error log -- [conf cloud] Adds fallback for the viewer when a file returns 403 for a specific version -- Fixes in-app help search query -- Improves pinch to zoom on trackpad https://github.com/jgraph/drawio/issues/2469 -- Updates GCP icons - -02-DEC-2021: 15.8.9 - -- Adds Shift+Click on Zoom in Sketch theme -- Add table divider handles with col/rowspan -- Fixes text selection with inline OneDrive picker https://github.com/jgraph/drawio/issues/2444 - -30-NOV-2021: 15.8.8 - -- Hides xml extension in library title https://github.com/jgraph/drawio/issues/2448 -- [vsdx] Improves font-size and line height and links to internal pages -- Fixes file exists check in GitHub - -29-NOV-2021: 15.8.7 - -- Fixed string replace when label has a new line https://github.com/jgraph/drawio/issues/2015 -- Removes dots fill pattern https://github.com/jgraph/drawio/issues/2443 -- Fixes parsing of base64 PNG with XML and no prefix -- Hides empty table section in Arrange panel -- Ignores cached style in table background -- Shows error if popup is blocked in Google Drive -- Adds 2px between scrollbar and elements -- Uses rgb for default colors in output https://github.com/jgraph/drawio/issues/2445 -- Fixes rgb values in SVG gradient IDs [DID-3797] - -24-NOV-2021: 15.8.6 - -- Adds support for refresh token to github -- Adds authorize, refresh and help buttons in GitHub -- [conf cloud] Fixes NPE in page ids import/export - -24-NOV-2021: 15.8.5 - -- Removes alignment from current style -- Handles combined row- and colspans -- Adds Ctrl+Enter in text and data dialog https://github.com/jgraph/drawio/issues/2438 -- Removes last row and column line -- Conf Cloud: Added custom templates preview https://github.com/jgraph/drawio/issues/2436 -- Handles resource not accessible in GitHub -- Fixes reset of configuration, adds tooltip - -22-NOV-2021: 15.8.4 - -- Fixes move of edge labels after ungroup https://github.com/jgraph/drawio/issues/2433 -- [conf cloud] Added space filtering to page collection to avoid CONFCLOUD-73202 -- Fixes default color and other possible rgba colors in vsdx export -- [conf cloud] Added revision history to Board macro - -19-NOV-2021: 15.8.3 - -- Removes whitespace in resource values -- Uses SVG for folding icons https://github.com/jgraph/drawio/issues/2359 -- Matches folding icon gradient colors -- Ignores icon search response with error code -- Fixes broken check for supported domain https://github.com/jgraph/drawio/issues/2426 -- Adds check for enabledLibraries -- Moves page setup and scale to preferences in sketch -- Ignores disabled libraries in search https://github.com/jgraph/drawio/issues/1838 -- Moves page setup to file menu - -17-NOV-2021: 15.8.2 - -- [conf cloud] Fixes diagrams with non-English characters in name - -17-NOV-2021: 15.8.1 - -- Changes Trello API key -- Adds drawiolib files in OneDrive inline picker -- Fixes preview for libraries in OneDrive picker -- Fixes connectable for multiple vertices https://github.com/jgraph/drawio/issues/2383 -- Update to kr translations, thanks to Hochul cho - -17-NOV-2021: 15.8.0 - -- Switches to command line deployment script -- Uses API for inline styles -- Fixes chrome extension link color -- Replaces inline CSS styles with DOM API -- Uses larger handles for line end https://github.com/jgraph/drawio/issues/1683 -- [conf cloud] Allows page ids import to continue when Confluence fails to list all pages -- Fixes event handling for Chrome on Linux https://github.com/jgraph/drawio/issues/2392 -- Fixes clear waypoints keyboard shortcut https://github.com/jgraph/drawio/issues/2420 -- Fixes handling of PNG data URL with charset - -15-NOV-2021: 15.7.4 - -- Adds titlebar to desktop sketch mode -- Adds styles config type check -- Adds rowspan for row line rendering - -10-NOV-2021: 15.7.3 - -- [teams] Fixes shapes rendering in picker - -10-NOV-2021: 15.7.2 - -- Fixes pointer events in sketch mode https://github.com/jgraph/drawio-desktop/issues/760 -- Fixes undo history after table insert -- Fixes delayed style change in table shape - -08-NOV-2021: 15.7.1 - -- Makes all C4 shapes attributes editable -- Enables transparent default page background color -- Separate cell style for dark mode no longer needed -- Applies AWS stencil colors for light background - -05-NOV-2021: 15.7.0 - -- Add missing GCP3 file to build - -05-NOV-2021: 15.6.9 - -- Adds new GCP icons -- Limits Google and disabled editing in mobile apps (webview) to MS Teams only -- Fixes line visible in ERzeroToMany marker https://github.com/jgraph/drawio/issues/22386 -- Adds additional SVG sanitizing -- Fixes zero to one/many marker fill color https://github.com/jgraph/drawio/issues/2386 - -03-NOV-2021: 15.6.8 - -- Fixes handling of transparent default colors - -03-NOV-2021: 15.6.7 - -- Fixes overridden colors in UI update callback - -02-NOV-2021: 15.6.6 - -- Fixes scrolling with css transforms [DID-3588] -- Fixes hardcoded default colors - -01-NOV-2021: 15.6.5 - -- Fixes change of default style - -01-NOV-2021: 15.6.4 - -- Moves resolve default colors to cell style https://github.com/jgraph/drawio/issues/2370 -- Adds default text border color -- FIxes handling of Atlas mode and default colors -- Updates default color via prototype -- Fixes sticky scrollbar in FF on Windows [DID-3588] -- Restores previous Notion embed menu - -31-OCT-2021: 15.6.3 - -- Hides dragHandle while editing diagram -- Fixes inline embed resize moves format panel -- Fixes handling of default colors in SVG output -- Notion extension improvements - -28-OCT-2021: 15.6.2 - -- Fixes bounding box scale for SVG clipping https://github.com/jgraph/drawio/issues/2257 -- Uses default style for thumbnails -- Improves handling for background colors in Notion -- Fixes remove rounded diagram style for line https://github.com/jgraph/drawio/issues/2066 -- Adds sidebarTitles, sidebarTitleSize config https://github.com/jgraph/drawio/issues/1893 -- Adds drag and drop to swap UML lifelines https://github.com/jgraph/drawio/issues/982 -- Adds exit point for inline embed protocol -- Hides dragHandle while editing diagram -- Fixes inline embed resize moves format panel - -27-OCT-2021: 15.6.1 - -- Handles of dark mode change for diagram styles -- Uses waypoint shapes, removes hardcoded colors -- Ignores some edge styles when inserting templates -- [jira cloud] Hide draw.io button when no diagrams are in the issue -- Uses default not current style for import -- [conf cloud] Log viewer xml errors -- Fixes OneDrive inlinePicker config error -- [conf cloud] Added simpleViewer global config - -26-OCT-2021: 15.6.0 - -- First release of Notion Chrome extension -- Add trigger of release on push of VERSION to release branch -- Adds embed viewport -- [conf cloud] Stops unnecessary viewer refreshes -- Keeps windows inside embed viewport - -22-OCT-2021: 15.5.9 - -- Fixes stroke and font color in dark mode https://github.com/jgraph/drawio/issues/2338 - -21-OCT-2021: 15.5.8 - -- Fixes NPE in OneDrive inline picker -- [conf cloud] Fixes JSON validation CSP no-eval restriction -- Improves error handling for inline embed mode -- Fixes ignored configured styles in sketch mode - -20-OCT-2021: 15.5.7 - -- Fixes rendering of row lines https://github.com/jgraph/drawio/issues/2332 -- Fixes hardcoded dark mode colors -- Adds oneDriveInlinePicker switch https://github.com/jgraph/drawio/issues/2330 -- Adds settingsName config -- Fixes color override for non-formatted text -- Changes for conf server to use sketch mode -- Fixes in-place editor default color -- Adds Graph.defaultForegroundColor -- Fixes background page default foreground - -19-OCT-2021: 15.5.6 - -- [conf Cloud] Adds Config JSON Schema validation and error check in viewer -- Minor fix for inline embed mode - -18-OCT_2021: 15.5.5 - -- Adds support for "primary key (PK)" SQL syntax #DID-3505 -- Fixes crop to selection in export https://github.com/jgraph/drawio/issues/2324 - -15-OCT-2021: 15.5.4 - -- Fixes NPE in TableShape.paintForeground - -15-OCT-2021: 15.5.3 - -- Fixes background clipping, in-place bounds changes -- Fixes clipping in EmbedDialog -- Updates C4 shapes -- Fixes new page defaults, adds stepper shift+click -- Fixes possible getAttribute is not a function -- Fixes export to GitLab https://github.com/jgraph/drawio/issues/1784 -- Removes save and import servlet -- Fixes ignored edge source for metadata [DID-3512] - -12-OCT-2021: 15.5.2 - -- Disables plugins, shows sketch for inline embed -- Adds fullscreenExitImage -- Adds Editor.enableExportUrl -- Updates current style for fillStyle change -- Uses shift+click for stroke, alt+click for fill -- Fixes logic for alt and shift click -- Adds defaultGridEnabled/-PageVisible config https://github.com/jgraph/drawio/issues/2306 -- Stops editing on exit inline embed mode - -11-OCT-2021: 15.5.1 - -- Adds embedInline URL parameter -- Uses system dark mode for default -- Fixes library depends on current edge style https://github.com/jgraph/drawio/issues/2308 -- Fixes handling of inlineFullscreen iframe - -08-OCT-2021: 15.5.0 - -- Adds inches and meters as units -- Fixes date formatted labels on vsdx import -- Fixes possible NPE in Gitlab client -- Fires CELLS_ADDED for duplicating cells https://github.com/jgraph/drawio/issues/2298 -- Adds embed fonts option in SVG export -- Fixes fonts for embedded SVG files with callback -- Ports resource generation to JS (Node) -- Fixes clipping for longer button labels -- Fixes possible clipping in download PDF dialog -- Fixes pointer events with no fill color in sketch -- Adds numbered property, fixed for sketch theme -- Fixes math output in JSON protocol export -- i18n update Lambda function -- Adds i18n resources as a submodule in internal repo - -05-OCT-2021: 15.4.3 - -- Tides NPEs from logging - -05-OCT-2021: 15.4.2 - -- [conf/jira cloud] Changes theme to Kennedy -- Adds grid URL parameter https://github.com/jgraph/drawio/issues/1882 -- Adds table actions for child cells in stacks -- Fixes PDF export with background page in dark mode -- Adds preview for moved cells with arrow key https://github.com/jgraph/drawio/issues/1146 -- [conf cloud] Adds embed from GitHub -- Improves CSV import for groups, values and sizing -- Fixes ignored zoom for arrows keys - -01-OCT-2021: 15.4.1 - -- [gliffy] Hides shapes fully in -ve coord -- Fixes lineheight and regex https://github.com/jgraph/drawio/issues/2280, adds rowspan -- Fixes possible getAttribute is not a function -- Fixes update of current style for label editing https://github.com/jgraph/drawio-desktop/issues/727 -- Fixes update of color button, handling of rgba - -30-SEP-2021: 15.4.0 - -- Adds pages switch for sketch mode -- Fixes format panel styling in sketch mode -- Fixes stroke tolerance for disabled pointer events -- Adds Double Block arrow end style -- [lucidchart] Improves freehand stencil import -- Fixes connection point contrast https://github.com/jgraph/drawio/issues/712 -- Fixes text shape size -- Fixes ignored current styles -- Fixes autosize for groups https://github.com/jgraph/drawio/issues/509 -- Fixes clipping in Safari in chromeles mode https://github.com/jgraph/drawio/issues/2277 -- Adds Alt+Drag to select intersection https://github.com/jgraph/drawio/issues/297 -- Uses shadowModified for saving storage files -- Changes active page tab text color - -29-SEP-2021: 15.3.8 - -- Fixes width for list dropdown on the arrow heads -- Switches search to use www.diagrams.net -- Improves error handling of invalid config values -- Fixes text inconsistencies in sketch mode -- Adds dark mode and fullscreen to preferences menu - -28-SEP-2021: 15.3.7 - -- Ignores floating terminal points for snapping -- Improved lollipop notation https://github.com/jgraph/drawio/issues/2270 -- Fixes for sketch toggle -- Fixes sketch mode used in non-sketch themes - -28-SEP-2021: 15.3.6 - -- Replaces cssText with DOM API -- Replaces cssText and innerHTML with DOM API --[conf cloud] Fixes duplicate name of copied diagrams - -27-SEP-2021: 15.3.5 - -- Fixes inconsistent styling in format panel -- Fixes scrollbar dependency for some format options -- Fixes NPE of localStorage.setItem - -26-SEP-2021: 15.3.4 - -- Moves sketch option to preferences menu -- Fixes mxSetting NPE - -25-SEP-2021: 15.3.3 - -- Fixes update of zoom label -- Invokes cellsInserted for table rows and cells -- Fixes user panel styles -- Uses Alt+Wheel for zoom in sketch theme -- Fixes update of background page image -- Adds sketch toggle, moves options to context menu -- Fixes zIndex for user panel over format window -- Fixes for Teams app -- Uses sketch theme on small screens -- Fixes encoding of tags URL parameter - -24-SEP-2021: 15.3.2 - -- Fixes NPE in ODPicker -- Fixes NPE in notifications - -23-SEP-2021: 15.3.1 - -- Improves extra pages in PDF export -- Self-host JQuery for Trello and removing its CDN from CSP header -- Adds table controls for stacks https://github.com/jgraph/drawio/issues/2260 -- Fixes inconsistent event handling with no stroke -- Fixes default font size and vertical alignment -- Adds insert table option in sketch toolbar -- Fixes shift+drag for column handle in table https://github.com/jgraph/drawio/issues/2262 - -22-SEP-2021: 15.3.0 - -- Fixes handling folder error while loading preview -- Fixes svg/png with dark theme, background pages -- Escapes HTML entities in file titles -- Escaped innerHTML when mxResources is used in ODPicker -- Fixes cellToClone is not defined -- Adds electrical shapes -- Updates pt-br translation. Thanks to Marcelo Filho. - -16-SEP-2021: 15.2.9 - -- Fixes OneDrive inline picker script not loaded - -16-SEP-2021: 15.2.8 - -- Moves enableWebFonts switch to Editor -- Fixes inconsistent naming for shadowOptionEnabled -- Adds more label flexibility to C4 Database shape -- Uses SVG for spinner in sketch and min theme -- Hides title and container option for HTML table -- Adds colspan in test mode -- Fixes duplicate rounded style for flexArrow -- [gliffy import] Fixes svg image clipping (#DID-1443 and #DID-3137) -- Adds comment for embedded SVG files -- Using OneDrive inline picker by default - -14-SEP-2021: 15.2.7 - -- Fixes possible use of undefined FontDialog - -14-SEP-2021: 15.2.6 - -- Fixes SVG export in IE, adds more status hashes -- Removes inline styles for status messages -- Adds FontDialog.enableWebFonts switch -- Removes unsafe-inline style-src for se CSP outputs -- [electron] Fixes issue using old remote in Init.js (disabled localStorage) - -13-SEP-2021: 15.2.5 - -- Uses DOM API for SVG gradients -- Uses unsafe-inline style-src for se in production -- Fixes possible NPE on cssText - -13-SEP-2021: 15.2.4 - -- Internal build - -13-SEP-2021: 15.2.3 - -- Fixes background color issues for some shapes - -13-SEP-2021: 15.2.2 - -- Fixes possible NPE due to getAllTags scope -- Fixes drop target detection with live preview and guides -- Adds safe-style-src URL parameter - -12-SEP-2021: 15.2.1 - -- Uses icon to toggle layer visibility -- Hides tooltip when entering chromeless toolbar -- Handles default color in dialogs -- Improves handling of default colors for dark mode -- Fixes inconsistent modifier keys for connections - -10-SEP-2021: 15.2.0 - -- Consolidates icons -- Fixes scrollbars in dialog for iOS -- Fixes CSS selector for chromeless toolbar controls -- Fixes default label background color for vertices https://github.com/jgraph/drawio/issues/2238 -- Adds default, fixes lane color in dark mode https://github.com/jgraph/drawio/issues/2239 -- Uses OS font for application user interface https://github.com/jgraph/drawio-desktop/issues/514 -- Enables tags in all viewers, removes unused images -- Disables dark mode in IE -- [lucid import] Fixes issues with group ordering and freehand stencils -- Removes double click handling in tags dialog - -09-SEP-2021: 15.1.4 - -- Fixes spacing and sizes in tags dialog -- Adds tags to viewer, SVG icons to layers dialog -- [vsdx import] Fixes invalid attribute error when input data is not suitable for html -- Fixes text overflow in dialogs -- Uses static viewer with no dynamic loading - -08-SEP-2021: 15.1.3 - -- Internal release - -08-SEP-2021: 15.1.2 - -- Adds tags option for export to lightbox -- Adds SVG icons for some markers -- Ignores ghosted waypoints in context menu -- Fixes edge context menu on some devices DID-3284 -- Adds tags in view menu -- Makes tags case-sensitive -- Moves tag click handler to table cell -- Moves tag double click handler to table cell -- Shows all tags after double click or shift click -- Fixes initial dialog size -- Fixes scrollbar in dialog - -07-SEP-2021: 15.1.1 - -- Uses SVG for large toolbar icons -- Adds createTagsDialog and double click handler -- Uses dbl click for selection or highlight -- Adds tags URL parameter for lightbox (beta) -- Disables sketch style for specific shapes by default -- Adds support for tags in lightbox -- [o365] Updates Office.ui.messageParent with targetOrigin -- Fixes possible duplicate cells, event names -- Fixes tags in custom actions https://github.com/jgraph/drawio/issues/2228 - -06-SEP-2021: 15.1.0 - -- Fixes link handling in viewer https://github.com/jgraph/drawio/issues/2220 -- Improvements to tags dialog https://github.com/jgraph/drawio/issues/2208 -- Fixes missing background page dropdown -- Removes link if graph disabled or no cells selected -- Highlights selection cells in disabled graphs -- Fixes placeholders in PDF export -- Fixes background pages and clipping https://github.com/jgraph/drawio/issues/2223 -- Adds tags custom action -- Adds checks for valid tags -- Fixes ignored background image bounds in lightbox - -02-SEP-2021: 15.0.6 - -- Fixes NPE for PDF export with single page https://github.com/jgraph/drawio/issues/2221 -- Fixes padding for buttons in CustomDialog -- Adds zoomWheel config option https://github.com/jgraph/drawio-desktop/issues/175 - -01-SEP-2021: 15.0.5 - -- Adds hover handler for blue arrows -- Fixes PDF export with background pages -- Adds page range for PDF export -- Fixes possible charAt is not a function - -31-AUG-2021: 15.0.4 - -- Fixes offset for background pages -- Fixes dash color for sketch theme in dark mode -- Adds .drawio.xyz extension to embedded files -- Adds includeDiagram config option -- Adds app icon click handler, removes debug output -- Adds support for background pages in PDF export - -27-AUG-2021: 15.0.3 - -- Fixes missing background images in thumbnails -- [conf cloud] Adds page edit comment when a diagram is saved from direct edit -- Fixes issue with application of constraints -- Updates background image after relevant events - -26-AUG-2021: 15.0.2 - -- Fixes special cases for default page format https://github.com/jgraph/drawio/issues/2202 -- Adds type check to avoid charAt is not a function in format panel color -- [teams] Fixes auth error and upgraded manifest and JS sdk -- [teams] disable EditorUi.nativeFileSupport in teams - -26-AUG-2021: 15.0.1 - -- Adds configuration for page format https://github.com/jgraph/drawio/issues/2202 -- Fixes background page image offset - -26-AUG-2021: 15.0.0 - -- Adds file properties dialog to sketch mode -- Adds Shift+Click for color button -- Adds ability to include page(s) as background to other pages on diagrams - -24-AUG-2021: 14.9.9 - -- Updates AWS stencils to latest set -- Reports curved edges as not fully supported in Lucidchart import -- Updates ru translations. Thanks to Ash Ed. - -18-AUG-2021: 14.9.8 - -- Fixes preview domain in trello powerup -- [conf cloud] Undo check name fix to consider 404 error as success - -16-AUG-2021: 14.9.7 - -- Prevents NPE in style format dialog -- Fixes new attachment download auth errors in Trello power up -- [conf cloud] Fixes an error when checkName api returns 404 when list of attachments are requested - -10-AUG-2021: 14.9.6 - -- [jira cloud] Adds Metrics publish API to log app load time or failure -- [conf cloud] Adds Metrics publish API to log app load time or failure -- Fixes possible NPE in StyleFormatPanel (colorset.title) - -06-AUG-2021: 14.9.5 - -- Adds shift/alt to extract data on copy data button -- Adds barrier for parallel async custom actions -- Adds background page support -- Fixes ignored background image size for image export -- Adds colorNames and titles for color schemes -- Adds edit geometry in sketch theme context menu -- Fixes inconsistent cut and delete actions https://github.com/jgraph/drawio/issues/1978 -- Uses shift+click to paste data with label -- Adds edit submenu in min and sketch themes -- Adds popup for additonal color models https://github.com/jgraph/drawio/issues/2150 -- Handles page links in background image dialog - -03-AUG-2021: 14.9.4 - -- Executes actions in sequence, adds animation custom actions https://github.com/jgraph/drawio/issues/1861 -- Fixes update of cell IDs in style actions -- Adds stopping for custom action sequences -- Fixes naming for parallel animations -- [conf cloud] Adds timeout config -- Updates it translations. Thanks to Vincenzo Reale -- Fixes cloning for actions, final animation state -- [jira cloud] Adds back Confluence embed using new API -- Fixes update of custom actions for copy, duplicate and recursion -- Hides tooltip if mouse enters link hint -- Fixes loading SVG from OneDrive https://github.com/jgraph/drawio/issues/2161 -- Adds data extraction to props plugin - -28-JUL-2021: 14.9.3 - -- Fixes pointer events for table cells in sketch theme -- Adds title and container option for insert table drop down -- Fixes possible cropping in SVG export https://github.com/jgraph/drawio/issues/1216 -- Fixes e.data.indexOf is not a function in OneDrive client -- Adds edit tooltip in context menu for sketch mode -- Adds dash line jump style https://github.com/jgraph/drawio/issues/1852 -- Fixes rough URL parameter, possible missing sidebar preview -- [conf cloud] Fixes multiple embedded diagrams with the same name editing issue -- Disables plugins action for plugins=0 https://github.com/jgraph/drawio/issues/2148 -- [conf cloud] Adds a fallback for AP is undefined error -- Updates it tranlsations. Thanks to Vincenzo Reale -- Updates el tranlsations. Thanks to Io Papadimitriou - -22-JUL-2021: 14.9.2 - -- [conf cloud] Fixes scroll bars with hidden toolbar -- [conf cloud] Fixes incorrect height of simple viewer -- Adds DRAWIO_LIGHTBOX_URL https://github.com/jgraph/drawio/issues/2149 -- Creates draft while saving local file to fix possible data loss -- Adds support for radial gradients https://github.com/jgraph/drawio/issues/1472 - -21-JUL-2021: 14.9.1 - -- [conf cloud] Fixes pending updates of embedded macros -- Fixes autosize for wrapped text, ignored aspect - -16-JUL-2021: 14.9.0 - -- Adds support for se.diagrams.net domain -- Fixes clipping in viewer with initial hidden layers https://github.com/jgraph/drawio/issues/DID-2617 -- Adds autoOrigin option https://github.com/jgraph/drawio/issues/DID-2617 -- Updates cs translations. Thanks to Pavel Borecki -- Updates el tranlsations. Thanks to Io Papadimitriou -- [conf cloud] Improves viewer load time - -12-JUL-2021: 14.8.6 - -- Disables pointerEvents style for images https://github.com/jgraph/drawio/issues/2121 -- [jira cloud] Disables Confluence embed option due to changes in auth token valdation -- Improvements to Lucidchart import - -07-JUL-2021: 14.8.5 - -- Fixes XSS attack on GoogleGadgetServlet. Thanks to Alfred Berg for report. -- Updates to cs translations - -02-JUL-2021: 14.8.4 - -- Fixes drag and drop for edge labels with selected parents -- [conf cloud] Fixes recent and search in embed diagrams - -30-JUN-2021: 14.8.3 - -- [conf cloud] Fixes save settings with current viewer status -- Adds function for image export in viewer -- Fixes possible NPE https://github.com/jgraph/drawio/issues/2115 - - -25-JUN-2021: 14.8.2 - -- [conf cloud] Adds lightbox to simple viewer -- [conf+jira cloud] Fixes export downloads https://github.com/jgraph/drawio/issues/2107 -- [conf cloud] Updates self import to support data:confluence/id and links - -24-JUN-2021: 14.8.1 - -- Clones existing SVG for outline rendering -- Fixes possible ignored gesture end in outline -- Fixes unconnected edges z-index order in vsdx import -- Fixes line jump handling in vsdx import -- Improves locking https://github.com/jgraph/drawio/issues/2069 -- Fixes action states and cursors for locked cells -- Fixes selection in locked layers -- Updates French translations - -17-JUN-2021: 14.8.0 - -- Adds bringForward and sendBackward actions -- Fixes GraphViewer toolbar and border hiding in FF - -16-JUN-2021: 14.7.10 - -- [jira cloud] Adds support for uploading zipped format diagrams -- Fixes ignored locked layers, hover icons, shape picker clipping - -15-JUN-2021: 14.7.9 - -- Adds minimize to shape picker in sketch theme -- Fixes unicode char to HTML entity on some JVMs from Gliffy - -14-JUN-2021: 14.7.8 - -- [conf cloud] Adds custom templates to sketch macro add template dialog -- [conf cloud] Fixes minor issues with templates dialog -- Prevents showing an empty viewer when configured layers are incorrect -- [conf cloud] Fixes template and new dialog bugs and added no file type option -- [conf cloud] Fixes Link dialog attachment links -- [conf cloud] Fixes centering with hidden toolbar or simple viewer -- Adds preview button in templates dialog -- Adds pinch to zoom CSS preview for iOS (beta) -- Prevents scrollbars on PDF and Image Export -- [conf cloud] Fixes settings dialog hidden buttons with certain diagram height - -09-JUN-2021: 14.7.7 - -- Fixes event handling for template previews -- Adds modified check for open browser file in standalone mode -- Adds select edges option in context menu -- Adds delay for double tap edit trigger before context menu -- Hides template preview when dialog is closed -- Adds padding for touch events on window controls -- Fixes status bar partially visible behind buttons -- Fixes fit icon in minimal theme -- Fixes window position constraints in sketch theme -- Fixes ghost cells after resume in outline -- Fixes event timing after freehand insert -- Fixes initial stroke width and folding for outline -- Adds context menu options for sketch theme on touch devices -- Reduces use of formatted text in swimlane titles -- Fixes background page and dark mode toggle in outline -- Fixes zOrder after dialog click in sketch theme -- Fixes order of graph relative to dialogs -- Fixes in-place editor width after markup toggle -- Fixes panning with freehand on touch in minimal theme - -04-JUN-2021: 14.7.6 - -- Adds delete button in sketch theme - -03-JUN-2021: 14.7.5 - -- Removes padding in outline -- Enables decimal stokewidths -- Fixes delayed preview issue -- Adds outline option in sketch theme -- Hides tooltip on scroll wheel events -- Shift+tab stops editing with no selection -- Fixes inconsistent mouse down handling for template preview -- Fixes inconsistent gesture start for blank template entry -- Fixes minor style issues for sketch theme -- Adds previews for templates -- Fixes picker toolbar overlap on small screens for sketch theme -- Adds padding for window controls in sketch and minimal theme -- Uses tab key to insert tabs in labels -- Handles tab key based on text selection while editing - -02-JUN-2021: 14.7.4 - -- Sets fonts color for note shape in sketch theme -- Consistent freehand defaults for all themes -- Escape stops freehand drawing -- Fixes timeout error when UI fonts are overwritten in PDF export -- Fixes overridden indent keystroke, uses alt+tab for tab -- Fixes tab to stop editing - -29-MAY-2021: 14.7.3 - -- Updates layer dot after model changes -- Adds 4 spaces for shift+tab while editing labels -- Adds shift+tab to insert tab -- Fixes for sketch and dark theme -- Adds support for additional OrgChart type in Lucidchart import -- Adds dot to layer for selected cells [2027] -- Fixes issues with live preview [2257] -- Fixes rounding errors in segment connector [2257] -- Updates ja translations - -26-MAY-2021: 14.7.2 - -- [conf cloud] Enables sketch macro - -25-MAY-2021: 14.7.1 - -- Fixes edges with zero height/width src/trg cell in vsdx import - -20-MAY-2021: 14.7.0 - -- Updates RoughJS to 4.4.1 with preserveVertices option -- Sets template backgrounds to transparent, except where it is set to an explicit non-white color -- Adds support for Lucidchart OrgBlock -- [conf cloud] Adds support for attached images in label (in page Ids import) -- Fixes NPE in Lucidchart import -- Fixes default user picture -- [conf cloud] Removes draft check error of zero byte files -- Updates Mermaid to 8.10.1 -- Updates es translations - -13-MAY-2021: 14.6.13 - -- Updates to latest Azure stencils -- [conf cloud] Improves error handling around draft load failing -- [conf cloud] Fixes lib import without config space - -11-MAY-2021: 14.6.12 - -- Fixes sidebar preview for sketch theme -- Disables handwritten fonts in sketch theme with rough=0 -- Fixes inconsistent pointer event handling -- Fixes ignored comic style for rectangle shape -- Adds modifier keys for wheel scrolling in sketch theme -- Disables page view after page format change with sketch theme -- Updates ar and ru translations - -07-MAY-2021: 14.6.11 - -- Fixes Dropbox client in dev mode -- Adds iconsearch CF worker -- Updates Gliffy translations for BPMN 2.0 -- Removes JSON2 usage. Required for IE7- which doesn't work since VML support removed. -- Reverts parameters for sidebar so default style is not applied. -- Adds gitflow examples -- Additional Spanish translations - -04-MAY-2021: 14.6.10 - -- Adds zoomFactor config option -- Fixes links on custom shapes in Lucid import -- Adds ctrl/cmd+dblclick to change cell ID -- Adds containers to general sidebar -- Fixes pointer events for text shapes -- Fixes selected style in dark mode -- Moves Dropbox auth from implicit grant to server-side flow -- Adds XML option to import menu in minimal and sketch theme -- Adds Shift+Click on clear waypoints button to clear fixed anchor points -- Fixes overridden default font in sidebar thumbnails -- Fixes ignored default styles for shapes dialog and inserted templates -- Fixes NPE for sketch UI in embed mode -- Adds enabledChanged event to graph -- Separates clear waypoints and clear anchor points -- Disables file API in Opera -- Fixes anchor points behavior for Choreography shapes in BPMN - -29-APR-2021: 14.6.9 - -- Corrects GitHub app ID - -29-APR-2021: 14.6.8 - -- Refactors GitHub paths - -28-APR-2021: 14.6.7 - -- Switches to server flow for GitHub and Gitlab auth - -22-APR-2021: 14.6.6 - -- Adds dark mode for minimal theme - -21-APR-2021: 14.6.5 - -- Versions shapes minified JS - -21-APR-2021: 14.6.4 - -- Restores BPMN 2.0 shapes - -19-APR-2021: 14.6.3 - -- Fixes for dark mode and sketch theme - -19-APR-2021: 14.6.2 - -- Fixes private Gitlab instance URL parsing - -15-APR-2021: 14.6.1 - -- Improvements to sketch theme - -13-APR-2021: 14.6.0 - -- Updates to workbox 6.1.2 - -09-APR-2021: 14.5.10 - -- Internal release - -09-APR-2021: 14.5.9 - -- Improvement to sketch theme - -06-APR-2021: 14.5.8 - -- Fixes Confluence Cloud saving issue - -03-APR-2021: 14.5.7 - -- Add various shapes - -02-APR-2021: 14.5.6 - -- Removes BPMN 2 changes - -01-APR-2021: 14.5.5 - -- Improves BPMN symbols to 2.0 spec - -31-MAR-2021: 14.5.4 - -- Fixes for vsdx export -- Adds re-tries on cache write failures - -26-MAR-2021: 14.5.3 - -- Internal release - -26-MAR-2021: 14.5.2 - -- Disables copy as image in iframes -- Fixes find/replace dialog in minimal theme https://github.com/jgraph/drawio/issues/1896 -- Fixes ignored grid for polygon shapes https://github.com/jgraph/drawio/issues/1891 - -23-MAR-2021: 14.5.1 - -- Fixes for Electron 12 - -22-MAR-2021: 14.5.0 - -- Improves Lucidchart import - -17-MAR-2021: 14.4.9 - -- Adds copy as image option -- Makes find and replace dialog the default - -12-MAR-2021: 14.4.8 - -- Fixes segment router removing control hints at specific zooms - -10-MAR-2021: 14.4.7 - -- Adds upload option back in embed conf cloud - -09-MAR-2021: 14.4.6 - -- Adds support for linkTarget property - -08-MAR-2021: 14.4.5 - -- Changes find dialog to replace and find - -03-MAR-2021: 14.4.4 - -- Improves Lucidchart import - -24-FEB-2021: 14.4.3 - -- Adds notifications - -18-FEB-2021: 14.4.2 - -- More fixes for aj.draw.io and ac.draw.io lightbox - -18-FEB-2021: 14.4.1 - -- Fixes lightbox for aj.draw.io and ac.draw.io - -17-FEB-2021: 14.4.0 - -- Removes VML support -- Adds Persian language -- Forces ac.draw.io and aj.draw.io to embed mode - -15-FEB-2021: 14.3.2 - -- Adds flow animation style -- Makes grid steps configurable -- Adds ctrl+drop to insert dropped content as new page -- Uses app.diagrams.net for editing [DID-1717] -- Fixes drag and drop for SVG+XML files - -11-FEB-2021: 14.3.1 - -- Adds support for regional direction to back-ends -- Adds grid option to export dialog - -08-FEB-2021: 14.3.0 - -- Fixes external fonts in PDF export -- Fixes drag and drop for shapes with shadow -- Renames page for import into blank diagram -- Fixes export triggers autosave in embed mode - -29-JAN-2021: 14.2.9 - -- Fixes NPE in minimal mode - -29-JAN-2021: 14.2.8 - -- Adds data governance config - -22-JAN-2021: 14.2.7 - -- Improves Lucidchart import - -20-JAN-2021: 14.2.6 - -- Fixes for OneDrive client flow - -19-JAN-2021: 14.2.5 - -- Add client-side clipping of SVG - -15-JAN-2021: 14.2.4 - -- Improves Lucidchart import - -14-JAN-2021: 14.2.3 - -- Fixes pako encoding issues - -13-JAN-2021: 14.2.2 - -- Fixes decoding of compressed shape files - -13-JAN-2021: 14.2.1 - -- Fixes UInt8Array call stack size exception - -13-JAN-2021: 14.2.0 - -- Disables Trello by default -- Updates pako to 2.0.3 - -09-JAN-2021: 14.1.9 - -- AWS stencil update - -02-JAN-2021: 14.1.8 - -- Internal release - -01-JAN-2021: 14.1.7 - -- Fixes NPE for single point edges - -31-DEC-2020: 14.1.6 - -- Internal release for conf/jira cloud changes - -31-DEC-2020: 14.1.5 - -- Desktop fixes for File API clash - -30-DEC-2020: 14.1.4 - -- Fixes marker rounding errors - -28-DEC-2020: 14.1.3 - -- Internal release - -23-DEC-2020: 14.1.2 - -- Adds UML 2.5 library - -18-DEC-2020: 14.1.1 - -- Fixes Math config - -18-DEC-2020: 14.1.0 - -- Fixes multiple Math initialization - -17-DEC-2020: 14.0.5 - -- Fixes ignored hidden toolbar [1627], settings icon -- Uses combined configuration file for MathJax - -16-DEC-2020: 14.0.4 - -- Fixes images paths - -15-DEC-2020: 14.0.3 - -- Fixes NPE - -15-DEC-2020: 14.0.2 - -- Improves Lucidchart import - -10-DEC-2020: 14.0.1 - -- Uses minimal UI on iPad Mini and smaller -- Adds clear.html for clearing caches - -09-DEC-2020: 14.0.0 - -- Internal refactoring of source code - -07-DEC-2020: 13.11.0 - -- Fixes for Confluence Cloud - -04-DEC-2020: 13.10.9 - -- Hardens servlets - -03-DEC-2020: 13.10.8 - -- Reverts UML 2.5 release - -03-DEC-2020: 13.10.7 - -- Improves Lucidchart import - -02-DEC-2020: 13.10.6 - -- Adds auto-crop, origin for visible layers [688] -- Improves Lucidchart import - -01-DEC-2020: 13.10.5 - -- Uses mxGraph 4.2.3 beta 6 -- Adds page size export option - -26-NOV-2020: 13.10.4 - -- Adds compare button in revision history dialog - -25-NOV-2020: 13.10.3 - -- Uses mxGraph 4.2.3 beta 5 - -24-NOV-2020: 13.10.2 - -- Fixes specific synchronize operations - -22-NOV-2020: 13.10.1 - -- Adds File, Embed, Notion - -18-NOV-2020: 13.10.0 - -- Internal release for Github actions testing -- Conf Cloud: Viewer settings direct from the viewer -- Conf Cloud: Adds custom libraries to more shapes dialog - -15-NOV-2020: 13.9.9 - -- Improves Lucidchart import - -13-NOV-2020: 13.9.8 - -- Improves Lucidchart import - -12-NOV-2020: 13.9.7 - -- Allows null in init load message - -11-NOV-2020: 13.9.6 - -- Uses GitHub for help and FAQ - -11-NOV-2020: 13.9.5 - -- Fixes license check in Confluence Cloud - -11-NOV-2020: 13.9.4 - -- Adds descriptor to JSON load message -- Uses mxGraph 4.2.3 beta 4 - -10-NOV-2020: 13.9.3 - -- Internal release to update conf cloud manifest - -04-NOV-2020: 13.9.2 - -- Improves Lucidchart import -- Uses mxGraph 4.2.3 beta 3 - -04-NOV-2020: 13.9.1 - -- Improves Lucidchart import - -04-NOV-2020: 13.9.0 - -- Disables Trello in IE11 -- Uses mxGraph 4.2.3 beta 2 - -03-NOV-2020: 13.8.9 - -- Adds block overflow cell style -- Uses mxGraph 4.2.3 beta 1 - -30-OCT-2020: 13.8.8 - -- Fixes for teams integration -- Fixes conf cloud caching issue when 3rd party cookies are disabled - -29-OCT-2020: 13.8.7 - -- Fixes hideDialog order issue on pressing OK -- Fixes native files in Chrome 86 - -28-OCT-2020: 13.8.6 - -- Uses mxGraph 4.2.2 -- Performance improvements for Jira Cloud -- MS teams integration - -27-OCT-2020: 13.8.5 - -- Fixes possible NPE in Confluence Cloud - -27-OCT-2020: 13.8.4 - -- Performance improvements for Confluence Cloud - -26-OCT-2020: 13.8.3 - -- Gliffy import improvements -- Updates Spanish translations - -24-OCT-2020: 13.8.2 - -- Lucidchart import improvements -- Fixes ungrouping action -- Uses mxGraph 4.2.1 beta 22 - -20-OCT-2020: 13.8.1 - -- Lucidchart import improvements -- Gliffy import improvements -- Uses mxGraph 4.2.1 beta 21 - -14-OCT-2020: 13.8.0 - -- App Engine configuration changes -- Uses mxGraph 4.2.1 beta 20 - -08-OCT-2020: 13.7.9 - -- Fixes script load order for electron - -07-OCT-2020: 13.7.8 - -- Uses mxGraph 4.2.1 beta 19 -- Uses MathJax 2.7.9 - -30-SEP-2020: 13.7.7 - -- Updates Finnish translations, credit Arttu Ylhävuori, github.com/areee -- Updates native File API tokens -- Lucidchart import improvements -- Fixes gradient issues in FF -- Uses mxGraph 4.2.1 beta 18 - -28-SEP-2020: 13.7.6 - -- Updates Azure icons - -23-SEP-2020: 13.7.5 - -- Removes document.write for modern browsers - -22-SEP-2020: 13.7.4 - -- Appends splash dialog libs to configured libs - -17-SEP-2020: 13.7.3 - -- Moves viewer to viewer.diagrams.net -- Improves shape picker position -- Uses mxGraph 4.2.1 beta 17 - -16-SEP-2020: 13.7.2 - -- Removes PWA on draw.io domains - -14-SEP-2020: 13.7.1 - -- Improves Gliffy import - -14-SEP-2020: 13.7.0 - -- Adds conf cloud change notifications for collab -- Adds Cmd+Click for blue arrow on macOS -- Uses mxGraph 4.2.1 beta 17 - -11-SEP-2020: 13.6.10 - -- Adds Shift+Delete/Backsapce to clear labels -- Uses mxGraph 4.2.1 beta 16 - -08-SEP-2020: 13.6.9 - -- Fixes inline images in cell styles - -08-SEP-2020: 13.6.8 - -- Fixes use of unsupported function in IE - -08-SEP-2020: 13.6.7 - -- Normalizes spaces in uncompressed XML output -- Adds context menu for shape search results -- Minor fixes for custom fonts -- Uses mxGraph 4.2.1 beta 15 - -31-AUG-2020: 13.6.6 - -- Removes PWA for www.draw.io -- Improves Gliffy import - -24-AUG-2020: 13.6.5 - -- Corrects classpath for CacheFacade - -20-AUG-2020: 13.6.4 - -- Adds Shift/Ctrl+Cursor to move/select pages -- Fixes orientation of screen page formats -- Adds allowZoomOut switch in GraphViewer - -18-AUG-2020: 13.6.3 - -- Handles extra HTML content on Sharepoint -- Fixes origin after folding in viewer - -08-AUG-2020: 13.6.2 - -- Fixes origin for online PDF export - -07-AUG-2020: 13.6.1 - -- Improves Lucidchart importer -- GAE stub fixes - -05-AUG-2020: 13.6.0 - -- Uses mxGraph 4.2.1 beta 14 -- Fixes mouse zoom bug - -03-AUG-2020: 13.5.9 - -- Adds pinch to zoom on Windows and Android -- Uses mxGraph 4.2.1 beta 13 - -31-JUL-2020: 13.5.8 - -- Fixes tooltip for rotation handle -- Fixes edit as blank in lightbox -- Lucidchart import improvements -- Uses mxGraph 4.2.1 beta 12 -- Improves shape picker - -30-JUL-2020: 13.5.7 - -- Faster autosave in Google Drive - -30-JUL-2020: 13.5.6 - -- Uses mxGraph 4.2.1 beta 11 -- Performance improvements - -29-JUL-2020: 13.5.5 - -- Uses mxGraph 4.2.1 beta 10 -- Enables links in tooltips -- Adds layout JSON action - -28-JUL-2020: 13.5.4 - -- Adds handle for cube and cylinder shape -- Adds metadata to C4 shapes -- Uses mxGraph 4.2.1 beta 9 - -24-JUL-2020: 13.5.3 - -- Fixes print in static viewer - -24-JUL-2020: 13.5.2 - -- Fixes viewer links -- Uses mxGraph 4.2.1 beta 8 - -22-JUL-2020: 13.5.1 - -- Removes official Azure icons for licensing reasons - -22-JUL-2020: 13.5.0 - -- Restores cloning of rows with blue arrows -- Fixes ungroup for multiple groups -- Uses mxGraph 4.2.1 beta 7 - -20-JUL-2020: 13.4.9 - -- Fixes handling of built-in plugins -- Uses mxGraph 4.2.1 beta 6 - -19-JUL-2020: 13.4.8 - -- Fixes SHA for inline script - -19-JUL-2020: 13.4.7 - -- Improves target detection for blue arrows -- Improves shape selection on touch devices -- Uses mxGraph 4.2.1 beta 5 - -17-JUL-2020: 13.4.6 - -- Simplified Start Screen - -16-JUL-2020: 13.4.5 - -- Fixes ignored right meta key on macOS - -15-JUL-2020: 13.4.4 - -- Fixes shape picker container insert -- Adds diagram styles - -14-JUL-2020: 13.4.3 - -- Adds shape selection on blue arrow click - -10-JUL-2020: 13.4.2 - -- Adds shape selection on double click -- Fixes browser storage dialog - -09-JUL-2020: 13.4.1 - -- Disables eval in HTML embed code - -08-JUL-2020: 13.4.0 - -- Adds border for lightbox export -- Uses mxGraph 4.2.1 beta 4 -- Adds Diagram Style panel - -04-JUL-2020: 13.3.9 - -- Fixes ignored autosave for native files - -03-JUL-2020: 13.3.8 - -- Adds experimental file system support - -02-JUL-2020: 13.3.7 - -- Fixes image export with sketch style -- Uses mxGraph 4.2.1 beta 3 - -01-JUL-2020: 13.3.6 - -- Fixes transparent background event handling for sketch style -- Moves row for dragging selected table cell -- Fixes inconsistent cursors for tables -- Adds drag and drop for tables -- Uses mxGraph 4.2.1 beta 2 -- Adds new basic templates -- Adds rows in ER sidebar -- Adds edit dialog style - -25-JUN-2020: 13.3.5 - -- Fixes minor bugs - -24-JUN-2020: 13.3.4 - -- Fixes minor bugs - -24-JUN-2020: 13.3.3 - -- Fixes move for tables with selected rows -- Fixes flex arrow custom handle preview -- Fixes ignored zoom for step perimeter -- Uses mxGraph 4.2.1 beta 1 - -24-JUN-2020: 13.3.2 - -- Fixes sketch style for partial rectangles -- No longer replaces comic style - -23-JUN-2020: 13.3.1 - -- Adds rough style and URL parameter -- Adds support for viewbox in link actions -- Adds hide-pages, viewbox URL parameters -- Uses mxGraph 4.2.1 - -19-JUN-2020: 13.3.0 - -- Adds ok for prompt JSON message -- Adds prompt-cancel JSON event -- Uses mxGraph 4.2.0 - -17-JUN-2020: 13.2.6 - -- Fixes caching issues for Confluence Cloud - -17-JUN-2020: 13.2.5 - -- Adds embed.diagrams.net for embed mode -- Adds Alt+Shift to toggle child cells -- Fixes toggle selection for groups -- Uses mxGraph 4.2.0 beta 10 - -13-JUN-2020: 13.2.4 - -- Uses tables in Misc and ER sidebar -- Adds table size in Arrange panel -- Uses mxGraph 4.2.0 beta 9 - -11-JUN-2020: 13.2.3 - -- Uses base for fonts in SVG export -- Fixes font URL trimming - -11-JUN-2020: 13.2.2 - -- Fixes relative fonts in SVG export -- Uses mxGraph 4.2.0 beta 8 -- Parsing improvements -- Adds table shape - -09-JUN-2020: 13.2.1 - -- Fixes bug when pasting HTML -- Parsing improvements - -09-JUN-2020: 13.2.0 - -- Fixes WebKitBlobResource on iOS -- Parsing improvements - -03-JUN-2020: 13.1.14 - -- Fixes math font weight for PDF export -- Stability improvements - -02-JUN-2020: 13.1.13 - -- Fixes caching for HTML embed code -- Fixes copy paste from other apps -- Fixes math client-side printing -- Adds math-output URL parameter -- Adds custom table properties -- Uses mxGraph 4.2.0 beta 7 - -01-JUN-2020: 13.1.12 - -- Uses mxGraph 4.2.0 beta 6 -- Adds tables to Misc sidebar -- Fixes OS clipboard in Firefox - -31-MAY-2020: 13.1.11 - -- Stability improvements and bug fixes - -31-MAY-2020: 13.1.10 - -- Fixes minor bugs for tables - -30-MAY-2020: 13.1.9 - -- Fixes insert tables on touch devices -- Adds Feature-Policy header - -29-MAY-2020: 13.1.8 - -- Removes CSP from GAE config - -29-MAY-2020: 13.1.7 - -- Adds multiple edge labels in CSV import -- Adds experimental support for tables -- Adds Content-Security-Policy header -- Adds link button in library dialog -- Uses mxGraph 4.2.0 beta 5 - -27-MAY-2020: 13.1.6 - -- Fixes Gliffy popup issue - -27-MAY-2020: 13.1.5 - -- Adds CSP restrictions - -27-MAY-2020: 13.1.4 - -- Adds dark export option in dark mode -- Adds Euskadi translations -- Uses mxGraph 4.2.0 beta 4 -- Adds openLink JSON event -- Adds %id% placeholder - -19-MAY-2020: 13.1.3 - -- Adds merge JSON message - -15-MAY-2020: 13.1.2 - -- Fixes ignored compressXml for empty embed data -- Fixes encoded XML in export JSON event -- Adds XML in JSON load event -- Uses mxGraph 4.2.0 beta 3 - -12-MAY-2020: 13.1.1 - -- Adds noExitBtn option for embed mode -- Fixes group selection model -- Uses mxGraph 4.2.0 beta 2 - -11-MAY-2020: 13.1.0 - -- Adds support for pointer events in swimlanes -- Adds message in export/template response -- Adds grid to certain custom handles -- Changes to the selection model -- Uses mxGraph 4.2.0 beta 1 - -07-MAY-2020: 13.0.9 - -- Adds patch chain validation for real time - -05-MAY-2020: 13.0.8 - -- Adds ctrl+enter for table cells - -05-MAY-2020: 13.0.7 - -- Uses mxGraph 4.1.2 beta 6 - -03-MAY-2020: 13.0.6 - -- Disables deltas for OneDrive real time -- Adds token for Google Drive real time - -01-MAY-2020: 13.0.5 - -- Import Extension code updated - -30-APR-2020: 13.0.4 - -- Adds support for vss(x) via clibs parameter -- Fixes inserting file to empty GitLab repo -- Fixes drop vss file into library dialog -- Fixes event handling for iPadOS 13.4.1 -- Uses mxGraph 4.1.2 beta 5 - -29-APR-2020: 13.0.3 - -- Lucidchart import improvements - -27-APR-2020: 13.0.2 - -- Fixes print output in dark mode -- Preserves pasted text colors -- Adds math-font URL parameter - -21-APR-2020: 13.0.1 - -- Replaces HTML-CSS MathJax output files -- Forces loading MathJS locally in export server/Desktop - -21-APR-2020: 13.0.0 - -- Redirects old desktop versions -- Fixes Edit menu in Chrome app -- Uses SVG for math typesetting -- Uses mxGraph 4.1.2 beta 4 - -16-APR-2020: 12.9.14 - -- Renamed jscolor to mxJSColor to avoid clash - -15-APR-2020: 12.9.13 - -- Adds file properties dialog - -14-APR-2020: 12.9.12 - -- Adds edit style to context menu -- Fixes moving cells in stacks - -11-APR-2020: 12.9.11 - -- Fixes edge label default style -- Improves Lucidchart import - -08-APR-2020: 12.9.10 - -- Fixes toggle selection for cells in containers -- Fixes copy paste of cells in Firefox -- Improvements for Lucidchart import -- Uses mxGraph 4.1.2 beta 3 - -07-APR-2020: 12.9.9 - -- Uses mxGraph 4.1.2 beta 2 -- Removes Google image search -- Removes photos URL parameter -- Fixes pasting links and data URIs -- Fixes Sharepoint sites in OneDrive picker -- Workaround for lightbox in Jira Service desk -- Adds center option for Confluence Cloud viewer -- Replaces Home with Shift+Home, Ctrl+H with Home - -05-APR-2020: 12.9.8 - -- Fixes formatting for pasted text -- Uses mxGraph 4.1.2 beta 1 - -03-APR-2020: 12.9.7 - -- Optional size, position and angle panels -- Improvements for Lucidchart import -- Adds combo box for extensions -- Uses mxGraph 4.1.2 beta 1 - -31-MAR-2020: 12.9.6 - -- Improvements for Lucidchart import -- Fixes CORS errors for some icons -- Fixes ER shapes for dark mode -- Uses mxGraph 4.1.1 - -30-MAR-2020: 12.9.5 - -- Uses mxGraph 4.1.1 beta 16 -- Fixes some shapes - -29-MAR-2020: 12.9.4 - -- Adds delegating connector and half circle markers -- Improvements for Lucidchart import -- Enables cloud storage in PWA -- Uses mxGraph 4.1.1 beta 15 - -25-MAR-2020: 12.9.3 - -- Fixes update of filename placeholder -- Improvements for Lucidchart import -- Fixes minor issues with layouts - -24-MAR-2020: 12.9.2 - -- Adds filename placeholder -- Fixes Gliffy import - -24-MAR-2020: 12.9.1 - -- Fixes insert HTML table from text panel - -23-MAR-2020: 12.9.0 - -- Fixes encoding errors in stencils.min.js -- Moves resize live preview to front -- Adds Threat Modeling shapes -- Uses mxGraph 4.1.1 beta 14 - -23-MAR-2020: 12.8.9 - -- Adds Lucidchart import feedback -- Adds search for all pages -- Adds new polygon shapes - -18-MAR-2020: 12.8.8 - -- Improvements to localStorage migration -- Improvements to AWS shapes - -17-MAR-2020: 12.8.7 - -- Improvements to localStorage migration -- Fixes align and distribute buttons in Arrange panel -- Improvements for Lucidchart import - -17-MAR-2020: 12.8.6 - -- Migrates localStorage from draw.io to diagrams.net -- Fixes XML embedding within PDFs - -14-MAR-2020: 12.8.5 - -- Fixes drag and drop of images to containers in Firefox -- Adds (Alt+)Shift+Tab for outdent/indent while editing -- No longer selects moved cells after undo/redo -- Reduces number of automatic layout runs -- Merges PWA into online app -- Uses mxGraph 4.1.1 beta 13 - -11-MAR-2020: 12.8.4 - -- Changes canonical URL to app.diagrams.net - -11-MAR-2020: 12.8.3 - -- Switches to PlantUML build 1.2020.2 -- Adds app.diagrams.net support for onedrive and cache responses -- Fixes infinite resizing of viewer in conf cloud -- Uses all layers for drop target selection -- Uses mxGraph 4.1.1 beta 12 - -09-MAR-2020: 12.8.2 - -- Fixes Confluence Cloud lightbox and Jira Cloud editor iFrame resize - -05-MAR-2020: 12.8.1 - -- Fixes Confluence Cloud editor iFrame resize - -05-MAR-2020: 12.8.0 - -- Fixes PDF export for multiple page formats -- Fixes PDF export page variable placeholder -- Disables drop shadow in Safari browser -- Changes name to diagrams.net - -27-FEB-2020: 12.7.9 - -- Fixes update of indicator shapes -- Uses mxGraph 4.1.1 beta 11 -- Adds diagrams.net banner - -26-FEB-2020: 12.7.8 - -- Adds logging for Confluence cloud errors -- Adds global error dialog - -26-FEB-2020: 12.7.7 - -- Adds error logging for Confluence and Jira cloud - -25-FEB-2020: 12.7.6 - -- Fixes NPE in viewer - -25-FEB-2020: 12.7.5 - -- Fixes removed contentID macro parameter in Confluence cloud -- Adds recursive resize for size change in Arrange panel -- Disables drop target for composite BPMN/UML shapes -- Fixes missing tree move icon - -21-FEB-2020: 12.7.4 - -- Changes Google picker to support team drives -- Fixes crop for imported files - -21-FEB-2020: 12.7.3 - -- Fixes caching of Google fonts - -19-FEB-2020: 12.7.2 - -- Removes HTML 5 application cache -- Adds Alt+Click for sidebar items -- Fixes rounding for page guides -- Adds language support for PWA -- Uses mxGraph 4.1.1 beta 10 - -17-FEB-2020: 12.7.1 - -- DropTarget style has precedence over container -- Replaces UML module shape -- Uses mxGraph 4.1.1 beta 9 - -13-FEB-2020: 12.7.0 - -- Adds dropTarget style property -- Adds Insert, Advanced, Mermaid - -12-FEB-2020: 12.6.8 - -- Ignores drafts with mode parameter -- Adds Arrange, Layout, Org Chart -- Fixes GitLab authentication -- Uses mxGraph 4.1.1 beta 8 - -10-FEB-2020: 12.6.7 - -- Fixes clipping for edge labels in PDF output -- Uses mxGraph 4.1.1 beta 7 -- Adds draft states - -07-FEB-2020: 12.6.6 - -- Searches collapsed custom libraries -- Fixes configured default libraries -- Adds tags to configured libraries -- Uses auth header for Google Drive -- Uses mxGraph 4.1.1 beta 6 - -04-FEB-2020: 12.6.5 - -- Adds expand style for containers -- Adds warning for fallback labels -- Improvements for CSV import -- Uses mxGraph 4.1.1 beta 5 -- Adds new AWS 19 shapes - -02-FEB-2020: 12.6.4 - -- Uses mxGraph 4.1.1 beta 4 -- Fixes possible NPE - -02-FEB-2020: 12.6.3 - -- Updates move preview after key events -- Fixes rounding errors for routing -- Uses mxGraph 4.1.1 beta 3 - -30-JAN-2020: 12.6.2 - -- Fixes WebKitBlobResource error on iOS -- Adds layers for VSDX export -- Uses mxGraph 4.1.1 beta 2 - -28-JAN-2020: 12.6.1 - -- Adds new Veeam shapes - -28-JAN-2020: 12.6.0 - -- Fixes aspect dialog incorrect layers - -25-JAN-2020: 12.5.8 - -- Fixes possible NPE in OneDrive client - -25-JAN-2020: 12.5.7 - -- Fixes access to OneDrive Sharepoint folders -- Creates fewer revisions in Google Drive -- Uses mxGraph 4.1.1 beta 1 -- Uses PlantUML 2019.7 - -22-JAN-2020: 12.5.6 - -- Fixes offline download for mobile Safari -- Fixes newlines in custom shape editor -- Uses mxGraph 4.1.0 pre 6 -- Adds movableLabel style - -16-JAN-2020: 12.5.5 - -- Fixes inconsistent label wrapping -- Uses mxGraph 4.1.0 pre 5 - -15-JAN-2020: 12.5.4 - -- Adds PWA install prompt handler - -14-JAN-2020: 12.5.3 - -- Fixes line height in labels -- Uses mxGraph 4.1.0 pre 4 - -14-JAN-2020: 12.5.2 - -- Adds option to include XML in PDF -- Replaces app cache with PWA -- Uses mxGraph 4.1.0 pre 3 - -09-JAN-2020: 12.5.1 - -- Fixes label offsets in viewer -- Uses mxGraph 4.1.0 pre 2 - -07-JAN-2020: 12.5.0 - -- Enables reflow in HTML output -- Fixes text rendering issues -- Uses mxGraph 4.1.0 pre 1 -- Adds Galician language - -06-JAN-2020: 12.4.9 - -- Adds support for multiple redirect URLs in token-based-auth - -31-DEC-2019: 12.4.8 - -- Adds referrer policy header -- Uses mxGraph 4.0.6 beta 16 - -27-DEC-2019: 12.4.7 - -- Fixes bug for loading viewer in Confluence Cloud - -27-DEC-2019: 12.4.6 - -- Fixes mobile Safari in desktop mode -- Uses mxGraph 4.0.6 beta 15 - -27-DEC-2019: 12.4.5 - -- Uses mxGraph 4.0.6 beta 14 -- Fixes possible NPE - -27-DEC-2019: 12.4.4 - -- Fixes proxy URL for Confluence Cloud lightbox -- Fixes possible text wrapping for SVG export -- Adds custom fonts for embedded SVG files -- Pass-through OTF fonts in proxy servlet -- Adds basic diagram templates -- Uses mxGraph 4.0.6 beta 13 - -17-DEC-2019: 12.4.3 - -- Uses fast zoom preview on iOS -- Uses mxGraph 4.0.6 beta 12 - -14-DEC-2019: 12.4.2 - -- Improves move/resize preview and guides -- Adds pinch to zoom for macOS trackpad -- Disables drop style for swimlanes -- Adds anchor points for corners -- Fixes edge label move preview -- Uses mxGraph 4.0.6 beta 11 - -12-DEC-2019: 12.4.1 - -- Fixes initial key state for cloning -- Uses mxGraph 4.0.6 beta 11 - -12-DEC-2019: 12.4.0 - -- Adds Catalan translations, credit Pere Orga pere@orga.cat -- Fixes drag cells to library, subtree moving live preview -- Fixes conf cloud gliffy mass import paging bug -- Uses mxGraph 4.0.6 beta 10 - -09-DEC-2019: 12.3.9 - -- Fixes NPE in Lucidchart import -- Adds check for empty layerID array in GraphViewer - -06-DEC-2019: 12.3.8 - -- Improves Gliffy import of nested links -- Adds pageID target export selection in Confluence Cloud - -05-DEC-2019: 12.3.7 - -- Fixes handling of clipboard data -- Uses mxGraph 4.0.6 beta 9 - -03-DEC-2019: 12.3.6 - -- Moves rotation handle to top right corner -- Adds faster mouse wheel zoom -- Uses mxGraph 4.0.6 beta 8 - -02-DEC-2019: 12.3.5 - -- Fixes deletion bugs causing search incorrect results in Jira Cloud -- Fixes text alignment for block elements - -02-DEC-2019: 12.3.4 - -- Fixes Gliffy global text size setting on import -- Fixes settings override with configuration -- Adds custom fonts in print output - -28-NOV-2019: 12.3.3 - -- Adds more ERD shapes - -27-NOV-2019: 12.3.2 - -- Fixes moving and resizing on iOS 13 -- Uses mxGraph 4.0.6 beta 8 - -26-NOV-2019: 12.3.1 - -- Fixes PDF export with math typesetting - -25-NOV-2019: 12.3.0 - -- Fixes client-side math export in Firefox -- Uses mxGraph 4.0.6 beta 7 - -21-NOV-2019: 12.2.9 - -- Fixes autosize for font size and style changes -- Adds PDF extension check in save dialog -- Fixes callback error in embed mode -- Uses mxGraph 4.0.6 beta 6 - -21-NOV-2019: 12.2.8 - -- Removes state URL parameter - -19-NOV-2019: 12.2.7 - -- Adds #_CONFIG_ hash property for configuration via URL -- Fixes for external font support -- Adds Extras, draw.io Configuration menu -- Adds Link item in page context menu - -13-NOV-2019: 12.2.6 - -- Reverts Google auth change in 12.2.5 - -13-NOV-2019: 12.2.5 - -- Add external font support -- Adds configuration option in local storage - -12-NOV-2019: 12.2.4 - -- Updates IBM stencils -- Fixes Lucidchart import NPE -- Adds pools and lanes in BPMN General library -- Adds client-side SVG and PNG export for math - -08-NOV-2019: 12.2.3 - -- Improves stencils in dark mode -- Removes electron useragent check -- Fixes shifted text labels in PDF with math -- Adds clipping for print output -- Uses mxGraph 4.0.6 beta 5 - -06-NOV-2019: 12.2.2 - -- Fixes NPE in pasteCells - -06-NOV-2019: 12.2.1 - -- Fixes slow paste from clipboard in modern browsers -- Improves handling of timeouts in Google Drive -- Fixes event handling on iOS -- Uses mxGraph 4.0.6 beta 4 - -04-NOV-2019: 12.2.0 - -- Fixes Google auth after hibernate on Windows -- Fixes print in lightbox for some file types -- Fixes extension for command line export -- Open file asks for new or same window -- Handles trashed state in Google Drive -- Fixes links in labels for SVG export -- Appends tab name for image export - -30-OCT-2019: 12.1.9 - -- Fixes anchor points for certain shape styles -- Adds connection points for document shape -- Fixes handling of SVG with relative size -- Adds custom data import for Lucidchart -- Fixes timing issue in tooltips plugin -- Uses mxGraph 4.0.6 beta 3 - -28-OCT-2019: 12.1.8 - -- Fixes ignored height in viewer - -25-OCT-2019: 12.1.7 - -- Minor fix for graph viewer - -25-OCT-2019: 12.1.6 - -- Fixes missing center guides for certain cases -- Fixes lightbox in Trello -- Adds moveCells style -- Uses mxGraph 4.0.6 beta 2 - -24-OCT-2019: 12.1.5 - -- Fixes scopes for Google Drive Connector for Confluence Cloud -- Fixes opening libraries from GitLab - -23-OCT-2019: 12.1.4 - -- Fixes scrollbars in Confluence Diagram Viewer -- Fixes embed dialog for Google Shared Drives -- Fixes snap to grid while panning -- Adds paging for GitLab picker -- Uses mxGraph 4.0.6 beta 1 - -17-OCT-2019: 12.1.3 - -- Fixes Google Drive auth in Office plugin -- Uses mxGraph 4.0.5 - -16-OCT-2019: 12.1.2 - -- Fixes scrollbars in Confluence Cloud and Jira Cloud -- Fixes export of uncompressed XML files to PDF -- Uses mxGraph 4.0.3 beta 7 - -14-OCT-2019: 12.1.1 - -- Uses uncompressed XML files in GitLab and GitHub -- Fixes background color for cropped PDF export -- Improves logic for hiding cell moving guides -- Fixes token override in Google Drive viewer -- Adds roundtrip editing for PlantUML images -- Uses mxGraph 4.0.3 beta 6 - -09-OCT-2019: 12.1.0 - -- Escape no longer starts editing in Safari and IE 11 -- Uses revision IDs for realtime in Google Drive -- Fixes ignored alignment for autosize cells -- Switches to manual sync on cache timeout -- Disables resize live preview for groups -- Fixes test URL parameter for logging -- Adds live preview for moving cells -- Uses mxGraph 4.0.3 beta 5 -- Uses quirks mode in IE 9 - -08-OCT-2019: 12.0.3 - -- Fixes vertical label position of Data shape -- Handles changed etag in Google Drive after save -- Fixes page reorder for Chrome on Windows 10 in embed mode - -02-OCT-2019: 12.0.2 - -- Updates pako to 1.0.10 -- Fixes VSS naming problem -- Restores folder support to Confluence Cloud diagram viewer - -01-OCT-2019: 12.0.1 - -- Adds testing for new pako version - -27-SEP-2019: 12.0.0 - -- Fixes Google auth for multiple users -- Fixes default grid color in dark mode - -26-SEP-2019: 11.3.2 - -- Updates Dell rack server stencils -- Docker image build process improvements - -24-SEP-2019: 11.3.1 - -- Fixes uncompressed XML in SVG -- Fixes offset for ruler - -20-SEP-2019: 11.3.0 - -- Updates Google Cloud Platform stencils -- Gliffy import improvements -- Uses uncompressed XML to fix search in Confluence Cloud -- Adds global compressXml switch -- Fixes print output in dark mode - -18-SEP-2019: 11.2.9 - -- Adds pre and post config JS files -- Fixes page numbers in PDF export -- Adds globalVars to configuration -- Adds DRAWIO_CONFIG variable - -08-SEP-2019: 11.2.8 - -- Fixes bugs in PlantUML for Confluence Cloud - -07-SEP-2019: 11.2.7 - -- Fixes minor bugs - -06-SEP-2019: 11.2.6 - -- Enables ruler by default -- Fixes clipart export in Chrome app -- Adds File, Embed, Google Sheets -- Updated CSS styles - -03-SEP-2019: 11.2.5 - -- Updates MSCAE stencils - -29-AUG-2019: 11.2.4 - -- Fixes segment connector rounding issue -- Updates AWS icons -- Fixes partial concentric ellipse -- Fixes search for custom libraries -- Adds pagecount placeholder - -26-AUG-2019: 11.2.3 - -- Fit window zoom no longer ignores selection -- Updates page IDs in custom links on import -- Updates link hint after selection change -- Updates cell IDs in custom links - -23-AUG-2019: 11.2.2 - -- Add support for loading zipped draw.io and Gliffy formats - -20-AUG-2019: 11.2.1 - -- Fixes possible NPEs - -20-AUG-2019: 11.2.0 - -- Adds ruler and units - -19-AUG-2019: 11.1.5 - -- Fixes ignored background for multipage PDF export -- Adds Lollipop Notation shape in UML section -- Fixes export for global placeholders -- Adds XML declaration for SVG export -- Enables block alignment for text -- Adds allowArrows style - -08-AUG-2019: 11.1.4 - -- Fixes grid NPE in export dialog - -08-AUG-2019: 11.1.3 - -- Adds export option to include grid -- Fixes last Gitlab project used in group -- Adds custom Gitlab parameters -- Fixes compressed XML export option - -05-AUG-2019: 11.1.2 - -- Fixes encoding of embedded PNG data -- Adds custom Gitlab URL option - -02-AUG-2019: 11.1.1 - -- Forces in-place electron users to upgrade page - -02-AUG-2019: 11.1.0 - -- Fixes for Electron 6 -- Uses dark theme on desktop by default in dark mode -- Changes Conf Cloud to leave draft attachments empty - -01-AUG-2019: 11.0.9 - -- Fixes window.app undefined check -- Adds desktop command line vsdx export -- Fixes Confluence Cloud custom content direct edit macro replacment - -30-JUL-2019: 11.0.8 - -- Fixes for dialogs when no services available -- Fixes comment window refresh error - -26-JUL-2019: 11.0.7 - -- Fixes for MS Office Add-in - -26-JUL-2019: 11.0.6 - -- Improves error handling for exportToCanvas - -24-JUL-2019: 11.0.5 - -- Adds timeout for Office Add-in server fallback -- Fixes incorrect zTXt header for PNG+XML files -- Fixes rounding of ellipse positions in SVG -- Fixes rounding for fixed connection points -- Uses mxGraph 4.0.3 beta 4 - -23-JUL-2019: 11.0.4 - -- Adds timeout handler for Google Drive thumb generation - -23-JUL-2019: 11.0.3 - -- Fixes handling of repository paths in GitLab -- Ignores hidden cells for selectAll -- Uses mxGraph 4.0.3 beta 3 - -22-JUL-2019: 11.0.2 - -- Replaces alt+click with shift+click in ChromeOS -- Uses draw.io Viewer app for lightbox mode -- Uses mxGraph 4.0.3 beta 2 - -20-JUL-2019: 11.0.1 - -- Fixes math typesetting in legacy embed script -- Fixes encoding issues for GitHub and GitLab -- Fixes file handling issues for GitLab - -19-JUL-2019: 11.0.0 - -- Adds Show more option in splash screen -- Adds uncompressed XML support (beta) -- Adds support for GitLab (beta) -- Uses mxGraph 4.0.3 beta 1 - -16-JUL-2019: 10.9.8 - -- Adds Extras, Insert, Freehand -- Moves create shape to insert menu -- Adds named labels for CSV import - -15-JUL-2019: 10.9.7 - -- Adds validation for label border and background colors -- Uses mxGraph 4.0.2 - -12-JUL-2019: 10.9.6 - -- Adds local files, Google Drive in Office Add-in - -11-JUL-2019: 10.9.5 - -- Improves error handling for saving files -- Fixes desktop startup - -11-JUL-2019: 10.9.4 - -- Adds named styles for CSV import - -10-JUL-2019: 10.9.3 - -- Fixes trailing newline in plain text labels -- Allows inserting multiple lists from text -- Adds treeMoving style for moving subtrees -- Fixes table cell align and color editing -- Uses mxGraph 4.0.2 beta 4 - -09-JUL-2019: 10.9.2 - -- Fixes reset of handles after remote style changes -- Fixes background color for rotated text editing -- Improves command line export in Electron -- Uses mxGraph 4.0.2 beta 3 - -09-JUL-2019: 10.9.1 - -- Fixes NPE in Electron and ChromeOS apps - -08-JUL-2019: 10.9.0 - -- Fixes custom link execution for visibility changes -- Fixes format panel CSS in Firefox for Linux -- Fixes inconsistent text editing alignment -- Uses mxGraph 4.0.2 beta 2 - -04-JUL-2019: 10.8.9 - -- Uses mxGraph 4.0.2 beta 1 -- Adds fill-/strokealpha for stencils -- Setting autosave to true triggers save - -03-JUL-2019: 10.8.8 - -- Adds timer to check for unsaved changes -- Fixes lightbox height for Confluence Cloud viewer - -02-JUL-2019: 10.8.7 - -- Fixes PlantUML connect add attachment call - -02-JUL-2019: 10.8.6 - -- Fixes ignored properties for child cells in CSV -- Logs file idle states -- Uses mxGraph 4.0.1 - -02-JUL-2019: 10.8.5 - -- Removed RPC calls in Confluence Connect -- Adds support for digrams in Confluence Cloud comments -- Fixes handling of move in rounded paths -- Uses mxGraph 4.0.1 beta 11 - -29-JUN-2019: 10.8.4 - -- No longer selects parent after delete of child -- Updates in-place editor after window resize -- Uses mxGraph 4.0.1 beta 10 - -28-JUN-2019: 10.8.3 - -- Embed diagrams from URL in Jira Cloud -- Makes custom fonts persistent -- Uses mxGraph 4.0.1 beta 9 - -27-JUN-2019: 10.8.2 - -- Fixes handling of special font names -- Shows warning if file copy is loaded -- Smaller sidebar entries -- Adds tags plugin - -26-JUN-2019: 10.8.1 - -- Fixed preview image aspect ratio in Confluence Cloud -- Increases preview image export quality in Confluence Cloud -- Uses default picker for loading files in IE11 - -21-JUN-2019: 10.8.0 - -- Removes unsafe-eval CSP for desktop app -- Fixes plugins in desktop app - -19-JUN-2019: 10.7.9 - -- Ignores refs and manage columns in CSV example - -19-JUN-2019: 10.7.8 - -- Fixes double click handling with pen and touch on Windows -- Fixes ignored transparent background in viewer -- Adds optional custom labels for IC pins -- Uses mxGraph 4.0.1 beta 8 -- Fixes UI inconsistencies - -12-JUN-2019: 10.7.7 - -- Adds validation of color picker input to fix XSS vulnerability - -11-JUN-2019: 10.7.6 - -- Removes fallback to print dialog if offline in Electron -- Fixes broken link if Google Drive is not loading - -04-JUN-2019: 10.7.5 - -- Fixes Math rendering in graph viewer - -03-JUN-2019: 10.7.4 - -- Adds MathJax codebase - -31-MAY-2019: 10.7.3 - -- Enabling saving diagrams when the associated custom content is deleted or not found - -31-MAY-2019: 10.7.2 - -- Fixes loading custom plugins in embed mode with configure URL parameter -- Fixes math rendering with no scrollbars - -29-MAY-2019: 10.7.1 - -- Adds JSON string for layouts in CSV import -- Fixes zoomed position for data store label -- Fixes changing of link colors in Firefox -- Fixes limitations for Google docs add-on - -28-MAY-2019: 10.7.0 - -- Replaces octet-stream with vnd.jgraph.mxfile in Drive -- Fixes opaque background for server-side PNG export -- Fixes line jump rendering with child edge labels -- Fixes loading of large images via Insert dialog -- Adds support to show/hide layers via tags -- Adds edge flow to animation plugin -- Fixes saving of OneDrive libraries - -25-MAY-2019: 10.6.9 - -- Fixes missing VSDX import in stealth mode - -22-MAY-2019: 10.6.8 - -- Add VMware stencils -- VSDX import improvements - -07-MAY-2019: 10.6.7 - -- Fixes first input element not firing change event - -02-MAY-2019: 10.6.6 - -- Adds MS Active Directory stencils -- Improvements to GCP stencils -- Adds Confluence Cloud translations - -24-APR-2019: 10.6.5 - -- Fixes style variation logic in VSDX import - -24-APR-2019: 10.6.4 - -- Adds VSDX import improvements -- Adds new IBM stencils and template -- Add Cumulus stencils - -16-APR-2019: 10.6.3 - -- Fixes handling of Infinity in geometries and points -- Uses mxGraph 4.0.1 beta 7 - -15-APR-2019: 10.6.2 - -- Adds generic layout menu item - -10-APR-2019: 10.6.1 - -- Fixes issues with CSV import -- Adds pointerEvents style for stencils and AWS groups -- Uses new language locale API in Confluence cloud -- Uses mxGraph 4.0.1 beta 6 - -01-APR-2019: 10.6.0 - -- Adds configuration section for Confluence for cloud -- Free GDrive/OneDrive connector for Confluence cloud -- Adds show with draw.io option in OneDrive connector -- Improves handling of files with no extensions in GDrive connector - -27-MAR-2019: 10.5.9 - -- Change to connection points and arrows trigger autosave -- Adds style options for edge labels in Arrange panel -- Fixes scroll during Alt+mouse wheel in Chrome -- Uses mxGraph 4.0.1 beta 5 - -26-MAR-2019: 10.5.8 - -- Hides icon in Confluence cloud for resolved comments -- Uses mxGraph 4.0.1 beta 4 - -26-MAR-2019: 10.5.7 - -- Adds comments in Confluence cloud viewer -- Improves Google file not found dialog - -25-MAR-2019: 10.5.6 - -- Adds file ID and mime type in GDriveConnector macro editor -- Removes convert warning, cache alive check in lightbox -- Improves handling of redirects and invalid responses -- Removes connection arrows for edge labels - -25-MAR-2019: 10.5.5 - -- Improvements for Gliffy import -- Uses mxGraph 4.0.1 beta 3 - -22-MAR-2019: 10.5.4 - -- Adds custom libraries for Confluence cloud - -21-MAR-2019: 10.5.3 - -- Fixes timing issue in graph viewer -- Fixes date formats in VSDX import -- Fixes possible cropping for PDF export - -20-MAR-2019: 10.5.2 - -- Fixes bug for comments in Confluence cloud - -19-MAR-2019: 10.5.1 - -- Adds comments for Confluence cloud - -18-MAR-2019: 10.5.0 - -- Uses .drawio extension in desktop app -- Removes spacers for rack layouts -- Uses mxGraph 4.0.1 beta 2 - -17-MAR-2019: 10.4.9 - -- Adds comments for Google Drive (beta) - -15-MAR-2019: 10.4.8 - -- Adds autosaveDelay and defaultEdgeLength to drawio-config - -15-MAR-2019: 10.4.7 - -- Realtime warning can be permanently closed -- Ignores read-only files in auto conversion -- Adds new issue viewer for Jira cloud -- Fixes Atlas theme in Safari - -14-MAR-2019: 10.4.6 - -- Adds warning dialog for failed autosave after 10 minutes -- Improves error logging in Google Drive client -- Improves error handling for auto conversion -- Fixes shadow for PNG export in dark mode - -13-MAR-2019: 10.4.5 - -- Fixes bug in Confluence cloud -- Fixes error handling -- Improves logging - -12-MAR-2019: 10.4.4 - -- Adds blob.core.windows.net to known CORS urls -- Fixes loading of Visio templates via proxy - -12-MAR-2019: 10.4.3 - -- Uses mxGraph 4.0.1 beta 1 - -11-MAR-2019: 10.4.2 - -- Adds logging - -09-MAR-2019: 10.4.1 - -- Uses mxGraph 3.9.13 beta 18 - -09-MAR-2019: 10.4.0 - -- Handles timeouts in realtime convert tool -- Fixes bugs for older versions of IE - -08-MAR-2019: 10.3.9 - -- Adds warning for Google Drive legacy files -- Adds language menu in Atlas theme - -08-MAR-2019: 10.3.8 - -- Fixes possible NPEs -- Fixes possible clipping bugs -- Uses mxGraph 3.9.13 beta 17 - -08-MAR-2019: 10.3.7 - -- Creates revision for every autosave in Google Drive -- Fixes new Confluence editor issues - -07-MAR-2019: 10.3.6 - -- Improves error handling for Google Drive -- Adds realtime file conversion tool - -05-MAR-2019: 10.3.5 - -- Reduces possible number 403 errors in Drive - -05-MAR-2019: 10.3.4 - -- Fixes possible NPE in plugin error handler - -05-MAR-2019: 10.3.3 - -- Changes default extension to .drawio -- Updated UI styles - -04-MAR-2019: 10.3.2 - -- Fixes Confluence Cloud Direct Edit Saving - -02-MAR-2019: 10.3.1 - -- Fixes loading spinner for Trello -- Uses magic numbers for templates - -01-MAR-2019: 10.3.0 - -- Adds validation step for Google file saving -- Adds last saved delay to status bar -- Adds page-id URL parameter - -28-FEB-2019: 10.2.9 - -- Moves Confluence Cloud viewer settings to format panel -- Allows all content from docs.google.com via proxy -- Adds menu for moving selection to other layers -- Adds simple viewer option for Confluence Cloud -- Fixes bad CRC in PNG exports - -25-FEB-2019: 10.2.8 - -- Fixes import of multiple pages into empty file -- Fixes macro shortcut handling in Confluence cloud - -25-FEB-2019: 10.2.7 - -- Adds orthogonal loop, no jump property for edges -- Fixes default stylesheet for export in dark mode -- Fixes events for transparent swimlane titles -- Uses mxGraph 3.9.13 beta 16 - -22-FEB-2019: 10.2.6 - -- Adds page ID export for Confluence Cloud -- Fixes colored AWS19 icons library ID - -20-FEB-2019: 10.2.5 - -- Adds fallback for unavailable sharing in Google Drive -- Fixes possible timing issues with open URL parameter -- Fixes link handling in legacy embedded diagrams - -18-FEB-2019: 10.2.4 - -- Adds Microsoft Office add-ins -- Adds open URL parameter - -15-FEB-2019: 10.2.3 - -- Adds interactive help for file name input fields -- Fixes handling of revisions for PNG files in Drive -- Adds shift click for Drive file details on app icon -- Adds Embed, Live image for public PNG files on Drive and GitHub -- Uses mxGraph 3.9.13 beta 15 - -11-FEB-2019: 10.2.2 - -- Adds refresh, new window in Confluence Cloud connector toolbars -- App icon links to file preview for Google Drive - -09-FEB-2019: 10.2.1 - -- Fixes loading of configuration for confluence cloud -- Adds template-filename URL parameter for binary templates -- Fixes browser refresh for converted lightbox files - -08-FEB-2019: 10.2.0 - -- Adds vsd(x) and gliffy support in GDrive Connector - -07-FEB-2019: 10.1.9 - -- Renames load event for configuration to configure - -05-FEB-2019: 10.1.8 - -- Fixes property focus after save -- Updated AWS 2019 icon colors - -04-FEB-2019: 10.1.7 - -- Adds auto-resolution for Google add-ons -- Fixes minimum height for empty viewer -- Fixes shadow in SVG export/embed -- Fixes possible 404 in GitHub - -29-JAN-2019: 10.1.6 - -- Removes alert for link errors -- Removes sync button - -28-JAN-2019: 10.1.5 - -- Uses mxGraph 3.9.13 beta 14 - -25-JAN-2019: 10.1.4 - -- Adds download button in save dialog -- Adds shift to ignore current style -- Uses mxGraph 3.9.13 beta 13 - -21-JAN-2019: 10.1.3 - -- Fixes possible NPEs -- Uses mxGraph 3.9.13 beta 12 - -18-JAN-2019: 10.1.2 - -- Adds debug output - -18-JAN-2019: 10.1.1 - -- Fixes possible NPEs - -17-JAN-2019: 10.1.0 - -- Adds auth token refresh for OneDrive - -16-JAN-2019: 10.0.43 - -- Fixes possible NPE in hashValue - -16-JAN-2019: 10.0.42 - -- Fixes handling of invalid files -- Uses mxGraph 3.9.13 beta 11 - -15-JAN-2019: 10.0.41 - -- Adds ignored page size in checksum - -15-JAN-2019: 10.0.40 - -- Fixes possible use of undefined variable - -15-JAN-2019: 10.0.39 - -- Fixes shadow change check - -15-JAN-2019: 10.0.38 - -- Fixes inconsistency in collaborative editing -- Handles possible call stack errors -- Uses mxGraph 3.9.13 beta 10 -- Adds IC shapes - -14-JAN-2019: 10.0.37 - -- Improves error logging - -14-JAN-2019: 10.0.36 - -- Uses mxGraph 3.9.13 beta 9 -- Adds debug output - -13-JAN-2019: 10.0.35 - -- Fixes device option in splash -- Adds Insert Template - -12-JAN-2019: 10.0.34 - -- Fixes save dialog icon CSS flow - -12-JAN-2019: 10.0.33 - -- Adds support for strikeThrough style (beta) -- Adds dark opacity styles for note and cube -- Enables device storage on iOS - -11-JAN-2019: 10.0.32 - -- Adds page view in format panel for read-only files -- Minor fixes for collaborative editing -- Uses mxGraph 3.9.13 beta 8 - -11-JAN-2019: 10.0.31 - -- Fixes critical bug for cell lookups -- Ignores page size in checksum -- Uses mxGraph 3.9.13 beta 7 - -10-JAN-2019: 10.0.30 - -- Ignores page width in checksum -- Uses mxGraph 3.9.13 beta 6 - -10-JAN-2019: 10.0.29 - -- Improved error handling for CSV import -- Uses mxGraph 3.9.13 beta 5 - -10-JAN-2019: 10.0.28 - -- Uses mxGraph 3.9.13 beta 4 -- Fixes root folder dialog - -10-JAN-2019: 10.0.27 - -- Ignores mxObjectId in diffsync - -09-JAN-2019: 10.0.26 - -- Uses mxGraph 3.9.13 beta 3 - -08-JAN-2019: 10.0.25 - -- Ignores previous attribute in checksum - -08-JAN-2019: 10.0.24 - -- Fixes critical bug with collaborative editing - -08-JAN-2019: 10.0.23 - -- Adds debug output for checksum errors -- Adds custom properties in diffsync -- Fixes possible ReferenceError -- Fixes for Jira cloud plugin - -05-JAN-2019: 10.0.22 - -- Adds initial change check in sync protocol -- Ignores numeric JS errors in checksum -- Fixes pending sync on inactive window - -04-JAN-2019: 10.0.21 - -- Adds debug output for checksum errors - -04-JAN-2019: 10.0.20 - -- Adds debug output for checksum errors - -04-JAN-2019: 10.0.19 - -- Adds debug output for checksum errors - -04-JAN-2019: 10.0.18 - -- Fixes checksum errors in lightbox mode - -03-JAN-2019: 10.0.17 - -- Fixes sync for PNG files in desktop app -- Fixes handling of auth error in Drive -- Uses main app ID for Drive viewer -- Fixes clipping in Google add-ons -- Uses mxGraph 3.9.13 beta 2 -- Fixes redo button state -- Removes debug output - -02-JAN-2019: 10.0.16 - -- Handles shadow change during catchup - -01-JAN-2019: 10.0.15 - -- Fixes error logging - -01-JAN-2019: 10.0.14 - -- Fixes possible timing issue - -29-DEC-2018: 10.0.13 - -- Improved error handling for collaborative editing - -28-DEC-2018: 10.0.12 - -- Fixes possible select of deleted page - -28-DEC-2018: 10.0.11 - -- Adds parameter check for connect apps - -28-DEC-2018: 10.0.10 - -- Fixes for error logging - -27-DEC-2018: 10.0.9 - -- Fixes sync for unsaved files in Desktop -- Adds Google Slides to Embed menu -- Ignores page names in checksum -- Fixes handling of lost pages - -21-DEC-2018: 10.0.8 - -- Ignores undefined page names in diffsync - -21-DEC-2018: 10.0.7 - -- Fixes checksum handling in desktop -- Uses mxGraph 3.9.13 beta 1 - -20-DEC-2018: 10.0.6 - -- Performance fixes for collaborative editing -- Fixes collaboration conflict errors - -19-DEC-2018: 10.0.5 - -- Fixes for collaborative editing - -19-DEC-2018: 10.0.4 - -- Fixes for night mode and responsive UI - -18-DEC-2018: 10.0.3 - -- Disables sync in Chrome OS -- Fixes CSS issues - -17-DEC-2018: 10.0.2 - -- Adds inactivity timeout for collaborative editing - -17-DEC-2018: 10.0.1 - -- Fixes Google auth for OneDrive files - -17-DEC-2018: 10.0.0 - -- Enables collaborative editing -- Hides footer - -16-DEC-2018: 9.6.6 - -- Adds darker stroke colors for metro palettes - -15-DEC-2018: 9.6.5 - -- Fixes for collaborative editing (beta) - -14-DEC-2018: 9.6.4 - -- Uses mxGraph 3.9.12 - -13-DEC-2018: 9.6.3 - -- Uses mxGraph 3.9.11 beta 10 - -12-DEC-2018: 9.6.2 - -- Uses mxGraph 3.9.11 beta 9 - -11-DEC-2018: 9.6.1 - -- Adds source-/targetPerimeterSpacing to default style -- Fixes font style button states in Edge, FF and IE -- Removes Google realtime API -- Fixes focus handling on iOS - -10-DEC-2018: 9.6.0 - -- Fixes for collaborative editing (beta) -- Fixes minor bugs - -06-DEC-2018: 9.5.9 - -- Uses PlantUML build 4 - -04-DEC-2018: 9.5.8 - -- Fixes focus handling in format panel - -04-DEC-2018: 9.5.7 - -- Removes dummy href attributes - -04-DEC-2018: 9.5.6 - -- Uses mxGraph 3.9.11 beta 8 - -03-DEC-2018: 9.5.5 - -- Adds unsaved status for new files in Desktop -- Fixes minor CSS issues - -03-DEC-2018: 9.5.4 - -- Fixes possible NPE in Desktop - -03-DEC-2018: 9.5.3 - -- Uses mxGraph 3.9.11 beta 7 - -02-DEC-2018: 9.5.2 - -- Fixes caching issue with GitHub file sync - -30-NOV-2018: 9.5.1 - -- Fixes Gliffy import alignment issue -- Fixes properties panel focus issue - -30-NOV-2018: 9.5.0 - -- Fixes tolerance for distance guides -- Adds collaborative editing (beta) -- Restores libraries after login -- Uses mxGraph 3.9.11 beta 6 - -28-NOV-2018: 9.4.7 - -- Adds multiple page PDF export option -- GraphML import improvements -- Adds addition IBM cloud stencils -- Adds Data Flow Diagram stencils - -21-NOV-2018: 9.4.6 - -- Fixes corrupted chars in XML from JSON backup import - -20-NOV-2018: 9.4.5 - -- Adds 2018 AWS icons -- Uses mxGraph 3.9.11 beta 5 - -16-NOV-2018: 9.4.4 - -- Adds GraphML import - -15-NOV-2018: 9.4.3 - -- Internal release - -12-NOV-2018: 9.4.2 - -- Fixes undoable edit when expanding Advanced sidebar -- Fixes handling of initial default background color -- Fixes shadow in client-side image and SVG export -- Adds realtime import and export in test mode -- Adds refresh menu item for all file types -- Removes static page text in lightbox mode -- Fixes keyboard shortcut for refresh file -- Restores view state after refresh file -- Adds distance guides - -09-NOV-2018: 9.4.1 - -- Fixes links to revision history from status -- Hides static page text in embed mode -- Enables import from device on iOS - -08-NOV-2018: 9.4.0 - -- Disables Google realtime on 11/12/2018 at 9:00am (UTC) - -06-NOV-2018: 9.3.4 - -- Improves sanity check for Google Drive files -- Uses mxGraph 3.9.11 beta 4 - -02-NOV-2018: 9.3.2 - -- Adds sanity check for Google Drive files - -26-OCT-2018: 9.3.1 - -- Adds current page index to JSON protocol -- Adds viewBox, target _top for SVG export -- Fixes selectDescendants keystroke -- Minor fixes for dark mode styles -- Uses mxGraph 3.9.11 beta 2 - -22-OCT-2018: 9.3.0 - -- Adds write permission in OneDrive client -- Adds link option in SVG export dialog -- Adds link to save status message - -19-OCT-2018: 9.2.9 - -- Adds OneDrive for Business and Sharepoint integration - -19-OCT-2018: 9.2.8 - -- Improves various Gliffy import issues -- Fixes inverted MovePage state after decoding - -15-OCT-2018: 9.2.7 - -- Fixes local templates path - -14-OCT-2018: 9.2.6 - -- Fixes possible NPE during delayed loading of plugins - -14-OCT-2018: 9.2.5 - -- Adds customPresetColors, override config option -- Adds enabledLibraries, libraries config option -- Adds templateFile config option -- Uses mxGraph 3.9.11 beta 1 - -11-OCT-2018: 9.2.4 - -- Adds font, customFonts and -ColorSchemes config options -- Adds open page in Confluence Cloud lightbox toolbar -- Fixes property editing in minimal UI - -08-OCT-2018: 9.2.3 - -- Adds shape properties panel (beta) -- Uses mxGraph 3.9.10 - -05-OCT-2018: 9.2.2 - -- Embed mode loads all supported formats -- Uses mxGraph 3.9.10 beta 2 -- Adds vars URL parameter - -03-OCT-2018: 9.2.1 - -- Ignores mode in Google Drive fallback - -03-OCT-2018: 9.2.0 - -- Configurable ui and plugins for Confluence Cloud -- Fixes fallback for public Google Drive URLs -- Adds configure=1 URL parameter and protocol -- Ctrl+Shift connect sets source constraint -- Removes #C configuration switch - -21-SEP-2018: 9.1.8 - -- Fixes minor constraint check bug for new connections -- Uses mxGraph 3.9.10 beta 1 - -21-SEP-2018: 9.1.7 - -- Adds flow plugin -- Uses mxGraph 3.9.9 -- Adds metro color palette -- Fixes VSDX export in IE11 -- Adds plugins menu in embed mode - -18-SEP-2018: 9.1.6 - -- Updates connection arrows and handle colors - -17-SEP-2018: 9.1.5 - -- Fixes folder picker callback - -17-SEP-2018: 9.1.4 - -- Adds root option before Google folder dialog -- Adds arrows=new URL parameter for feedback -- Adds data-attributes in svgdata plugin - -12-SEP-2018: 9.1.3 - -- Improvements to GCP stencils -- Fixes Gliffy import of UML frames - -31-AUG-2018: 9.1.2 - -- Allows empty referer for proxy requests - -30-AUG-2018: 9.1.1 - -- Simpler provided/required interface shapes -- Fixes comic style for filled swimlanes -- Fixes preview for general sidebar -- Uses mxGraph 3.9.9 beta 9 - -29-AUG-2018: 9.1.0 - -- Adds content inspection in proxy server -- Uses minimal UI for small screens - -27-AUG-2018: 9.0.9 - -- Uses mxGraph 3.9.9 beta 8 -- Adds new color palette -- GCP stencil updates - -23-AUG-2018: 9.0.8 - -- Fixes XSS vulnerability in Trello Power-Up -- Fixes GCP service cards icon set - -22-AUG-2018: 9.0.7 - -- Add expanded product and service cards to GCP icon set - -17-AUG-2018: 9.0.6 - -- Changes to GCP icon set - -14-AUG-2018: 9.0.5 - -- Fixes NPE in VSDX export -- Improves vsdx import layer support -- Improves GraphML import support - -10-AUG-2018: 9.0.4 - -- Add filter to proxy servlet - -01-AUG-2018: 9.0.2 - -- Adds missing rounded format option -- Fixes tolerance for connect arrows -- Uses mxGraph 3.9.9 beta 7 -- Fixes docker build - -31-JUL-2018: 9.0.1 - -- Fixes insert to GitHub with URL parameter - -28-JUL-2018: 9.0.0 - -- Disables persisted default styles -- Fixes inserting files to GitHub - -26-JUL-2018: 8.9.9 - -- Adds support for hierarchies in CSV import -- Updates colors for Atlas theme -- Uses mxGraph 3.9.9 beta 6 - -23-JUL-2018: 8.9.8 - -- Changes PlantUML autosize parameter to default to true -- Improves error handling, imports -- Uses mxGraph 3.9.9 beta 5 - -18-JUL-2018: 8.9.7 - -- Uses new PlantUML version - -18-JUL-2018: 8.9.6 - -- Fixes vertical offset for text editing with small fonts -- Fixes repaint of placeholders in text for custom shapes -- Fixes lost cursor after certain keyboard shortcuts -- Fixes clipboard state after cut keyboard shortcut -- Fixes minor issues for Confluence Cloud -- Adds draft state for Trello attachments -- Uses mxGraph 3.9.9 beta 4 - -13-JUL-2018: 8.9.5 - -- Fixes clipping for MathJax print preview in Safari -- Uses mxGraph 3.9.9 beta 3 -- Fixes minor memory leak - -11-JUL-2018: 8.9.4 - -- Removes foreignObjects for MathJax -- Fixes adding rows to tables -- Uses mxGraph 3.9.9 beta 2 - -09-JUL-2018: 8.9.3 - -- Fixes rounded style option for containers -- Moves webcola plugin to layout menu -- Fixes minor errors in print preview -- Uses mxGraph 3.9.9 beta 1 - -06-JUL-2018: 8.9.2 - -- Enables tags dialog in read-only files -- Fixes cell detection in fast preview -- Fixes improved shape search index -- Fixes undo for webcola plugin - -04-JUL-2018: 8.9.1 - -- Fixes initial scroll offset in minimal UI -- Fixes possible invalid height for viewer - -04-JUL-2018: 8.9.0 - -- Faster preview in Chrome, Firefox and Edge (beta) -- Adds responsive menubar in minimal UI -- Add tickets and webcola plugins -- Adds #C configuration switch -- Uses mxGraph 3.9.8 beta 1 - -26-JUN-2018: 8.8.7 - -- Fixes custom content view in Confluence Cloud -- Disables click sidebar collapse -- Uses inline window for text plugin -- Adds showStartScreen in Chrome App -- Disables plantUML when offline - -21-JUN-2018: 8.8.6 - -- Improves detection of gliffy macro in conf cloud -- Fixes inconsistent menus - -21-JUN-2018: 8.8.5 - -- Fixes delete property in data dialog -- Improvements for Lucidchart import -- Improvements for minimal UI -- Uses mxGraph 3.9.7 beta 4 - -20-JUN-2018: 8.8.4 - -- Fixes plugins for minimal UI -- Fixes relative links in Confluence Cloud - -19-JUN-2018: 8.8.3 - -- Fixes typo for Allied Telesis - -19-JUN-2018: 8.8.2 - -- Adds Allied Telesys sidebar -- Removes clipart from default cache -- Adds copy/paste size in Arrange panel -- Adds support for tags in link actions -- Adds support for custom link actions - -14-JUN-2018: 8.8.1 - -- Adds detection of object type in link action - -14-JUN-2018: 8.8.0 - -- Fixes label link detection cases in Firefox - -13-JUN-2018: 8.7.10 - -- Fixes possible NPE in Electron - -13-JUN-2018: 8.7.9 - -- Fixes possible NPE - -13-JUN-2018: 8.7.8 - -- Fixes scroll wheel zoom while panning -- Fixes print of white text in Chrome -- Adds cell ID in metadata dialog -- Adds support for custom links -- Uses mxGraph 3.9.7 beta 3 - -11-JUN-2018: 8.7.7 - -- Fixes editing nested links in Firefox after Gliffy import [7098] - -06-JUN-2018: 8.7.6 - -- Fixes proxy servlet response headers -- Ignores invalid Iconfinder response -- Adds email in Google user info - -05-JUN-2018: 8.7.5 - -- Uses mxGraph 3.9.7 beta 2 -- Uses mxgraph-core 3.9.6 - -03-JUN-2018: 8.7.4 - -- Fixes possible SSRF in proxy servlet - -02-JUN-2018: 8.7.3 - -- Fixes overridden layout menu -- Uses mxGraph 3.9.7 beta 1 - -01-JUN-2018: 8.7.2 - -- Changes to Confluence Cloud image servlet - -01-JUN-2018: 8.7.1 - -- Moves import CSV to insert menu - -31-MAY-2018: 8.7.0 - -- Adds editableCssRules style -- Uses mxGraph 3.9.6 - -29-MAY-2018: 8.6.9 - -- Adds enableCustomLibraries switch -- Fixes math rendering timing bug -- Uses mxGraph 3.9.6 beta 1 -- Uses MathJax 2.7.4 - -24-MAY-2018: 8.6.8 - -- Fixes math typesetting in PDF export -- Fixes NPE in minimal UI -- Uses mxGraph 3.9.5 - -23-MAY-2018: 8.6.7 - -- Adds #S parameter for loading from CSV source -- Adds support for VSD files in cloud storage -- Adds Lucidchart support for #U parameter - -22-MAY-2018: 8.6.6 - -- Fixes enabled state for some menu items -- Moves SQL and PlantUML to insert menu -- Fixes loading libraries from OneDrive -- Adds reverse edge to context menu - -17-MAY-2018: 8.6.5 - -- Fixes timing error for export in Safari -- Fixes change UI font size bug -- Uses mxGraph 3.9.4 -- Fixes minor bugs - -14-MAY-2018: 8.6.4 - -- Improvements to electron build - -11-MAY-2018: 8.6.3 - -- Adds F5 icons plugin - -09-MAY-2018: 8.6.2 - -- Replaces domain apex redirect - -08-MAY-2018: 8.6.1 - -- Fixes links for transparent groups in viewer -- Fixes minimal UI for small screens -- Uses mxGraph 3.9.4 beta 6 - -06-MAY-2018: 8.6.0 - -- Fixes outline connect for BPMN shapes -- Adds opacity to default style -- Uses mxGraph 3.9.4 beta 5 -- Adds minimal UI - -01-MAY-2018: 8.5.15 - -- Fixes showing device when no other storage options available -- Fixes indexing with multiple diagrams on page in Confluence Cloud - -30-APR-2018: 8.5.14 - -- Fixes XSS vulnerability in Trello Power-Up - -27-APR-2018: 8.5.13 - -- Adds infographic library -- Adds device option in export dialogs - -20-APR-2018: 8.5.12 - -- Adds test case for Google auth errors - -20-APR-2018: 8.5.11 - -- Fixes plantuml insert -- Fixes PDF export size -- Uses mxGraph 3.9.4 beta 4 - -17-APR-2018: 8.5.10 - -- Disables autosave for realtime connect errors -- Fixes format panel background in dark theme -- Adds click on export option labels -- Adds namespace for CSV import -- Changes help links in dialogs - -10-APR-2018: 8.5.9 - -- Reverts macro inconsistency check for Confluence Cloud - -08-APR-2018: 8.5.8 - -- Adds logging for disconnect error - -07-APR-2018: 8.5.7 - -- Improved handling for Google disconnect error - -05-APR-2018: 8.5.6 - -- Revert export server for Desktop version to phantom until full fix found - -05-APR-2018: 8.5.5 - -- Changes Plant export URL -- Adds JS redirect from http to https - -05-APR-2018: 8.5.4 - -- Works around Chrome 65 bug with echo downloads - -04-APR-2018: 8.5.3 - -- Gliffy import improvement -- Fix for anchor download issue in Chrome 65 - -31-MAR-2018: 8.5.2 - -- Add mass gliffy import in Confluence Cloud -- Fixes importing Gliffy sitemap stencils -- Adds workaround for Confluence Cloud saveMacro problem - -28-MAR-2018: 8.5.1 - -- Confluence Cloud integration improvements - -23-MAR-2018: 8.5.0 - -- Adds shapes in Basic sidebar - -21-MAR-2018: 8.4.8 - -- Gliffy import improvements -- Adds Cisco Safe Stencils -- Adds top, left for CSV import -- Uses mxGraph 3.9.4 beta 3 - -15-MAR-2018: 8.4.7 - -- Improves Gliffy import - -13-MAR-2018: 8.4.6 - -- Fixes adding of clones with new index - -13-MAR-2018: 8.4.5 - -- Fixes Confluence Cloud page includes -- Removes default empty layer in Gliffy import - -12-MAR-2018: 8.4.4 - -- Uses mxGraph 3.9.4 beta 2 - -11-MAR-2018: 8.4.3 - -- Adds Alt+Shift+L keyboard shortcut to edit links - -09-MAR-2018: 8.4.2 - -- Fixes checkboxes in format panel -- Uses mxGraph 3.9.4 beta 1 -- Enables links and tooltips in locked layers - -09-MAR-2018: 8.4.1 - -- Adds Alt+Shift+T keyboard shortcut to edit tooltips -- Minor improvements for Gliffy import - -08-MAR-2018: 8.4.0 - -- Uses mxGraph 3.9.2 beta 11 - -07-MAR-2018: 8.3.7 - -- Improvements for Gliffy import - -05-MAR-2018: 8.3.6 - -- Use mxGraph 3.9.3 for post is not a function fix - -01-MAR-2018: 8.3.5 - -- Adds recent and search to Confluence Cloud splash dialog -- Adds iconfinder to URLs with CORS -- Adds support for cross-origin images -- Fixes bug for vssx shapes with double quotes in labels -- Add line-height CSS to simulate quirks box sizing [5289] - -27-FEB-2018: 8.3.4 - -- Fixes license debug in Confluence Cloud - -27-FEB-2108: 8.3.3 - -- Fixes iconfinder 451 return - -25-FEB-2018: 8.3.2 - -- Remove Google Drive login response checks, caused issues - -20-FEB-2018: 8.3.1 - -- Internal revert to 8.2.3 minus Confluence Cloud changes - -19-FEB-2018: 8.3.0 - -- Internal revert to 8.2.2 minus Confluence Cloud changes - -18-FEB-2018: 8.2.3 - -- Adds optional parameter - -17-FEB-2018: 8.2.2 - -- Fixes inconsistency in child change codec -- Allows for 0.5px steps when moving cells -- Uses mxGraph 3.9.2 beta 10 - -16-FEB-2018: 8.2.1 - -- Adds shape group in Misc section, outline connect -- Fixes line wrapping, hides icons while editing -- Preserves library order for clibs parameter -- Uses mxGraph 3.9.2 beta 9 - -16-FEB-2018: 8.2.0 - -- Confluence Cloud attachment fixes - -16-FEB-2018: 8.1.9 - -- Fixes Google API load timing issues -- Fixes attachment write calls for IE and Edge in Confluence Cloud - -14-FEB-2018: 8.1.8 - -- Fixes saving diagram to Confluence Cloud draft pages - -14-FEB-2018: 8.1.7 - -- Fixes custom style path for atlas.css - -14-FEB-2018: 8.1.6 - -- Fixes block resize in graph viewer -- Disables fix for block alignment -- Uses mxGraph 3.9.2 beta 8 - -13-FEB-2018: 8.1.5 - -- Uses mxGraph 3.9.2 beta 7 - -12-FEB-2018: 8.1.4 - -- Fixes sidebar tooltip - -12-FEB-2018: 8.1.3 - -- Fixes dynamic loading for VSDX export -- Fixes possible NPEs in VSDX export - -12-FEB-2018: 8.1.2 - -- Adds resize option in image dialog -- Uses mxGraph 3.9.2 beta 6 - -11-FEB-2018: 8.1.1 - -- Handles markup is invalid XML - -11-FEB-2018: 8.1.0 - -- Adds VSDX/VSSX import/export for Electron -- Fixes access denied for Dropbox import -- Fixes escaping in SVG alternate text -- Uses mxGraph 3.9.2 beta 5 - -09-FEB-2018: 8.0.9 - -- Fixes block alignment for in-place editor -- Uses mxGraph 3.9.2 beta 4 - -08-FEB-2018: 8.0.8 - -- Fixes plantUML SVG insert in IE11 -- Adds cors URL parameter - -06-FEB-2018: 8.0.7 - -- Adds recent/search in Confluence connect -- Fixes various bugs - -02-FEB-2018: 8.0.6 - -- Fixes Ctrl+connect of orthogonal edges -- Fixes CSS for metadata dialog -- Uses mxGraph 3.9.2 beta 3 - -01-FEB-2018: 8.0.5 - -- Fixes possible NPE for cache invalidation -- Fixes in-place change of graph model -- Uses mxGraph 3.9.2 beta 2 - -31-JAN-2018: 8.0.4 - -- Reverts to using headless mxgraph -- Fixes swap icon for shapes with fill color -- Adds gradient and background in UML frame -- Adds edge labels in text, CSV import - -30-JAN-2018: 8.0.3 - -- Reverts to using previously GAE blacklisted classes -- Uses mxGraph 3.9.2 beta 1 - -23-JAN-2018: 8.0.2 - -- Fixes constrained size change in arrange panel -- Removes Dropbox and GitHub from splash screen -- Handles empty string for image style -- Adds workaround for dialog clipping -- Uses mxGraph 3.9.1 beta 1 - -19-JAN-2018: 8.0.1 - -- Fixes ChangePageSetup -- Uses mxGraph 3.9.0 - -17-JAN-2018: 8.0.0 - -- New Google repository structure -- Uses Java 1.8 - -16-JAN-2018: 7.9.8 - -- Adds dark theme (beta) -- Uses mxGraph 3.8.1 beta 11 - -12-JAN-2018: 7.9.7 - -- Disables http/https redirects - -12-JAN-2018: 7.9.6 - -- Gliffy import improvements -- Adds fontCss configuration to SVG export -- Uses mxGraph 3.8.1 beta 10 - -04-JAN-2018: 7.9.5 - -- Fixes bug with current desktop app launcher - -04-JAN-2018: 7.9.4 - -- Adds Extras, Plugins in desktop app -- Adds command line arguments in desktop app -- Fixes images in SVG export preview -- Uses mxGraph 3.8.1 beta 8 -- Adds table option in insert text dialog -- Fixes text formatting for input selection - -02-JAN-2018: 7.9.3 - -- Workaround for null variable in Jira Connect -- Uses mxGraph 3.8.1 beta 6 - -31-DEC-2017: 7.9.2 - -- Improves app icons for Android - -31-DEC-2017: 7.9.1 - -- Uses round app icon for Android -- Applies editing value before selecting page - -29-DEC-2017: 7.9.0 - -- Removes search.xml from offline manifest - -29-DEC-2017: 7.8.9 - -- Replaces search.xml with inline data - -21-DEC-2017: 7.8.8 - -- Deletes transparent groups with no remaining cells -- Fixes refresh of straight edge handles -- Adds terminal points in Arrange tab -- Uses mxGraph 3.8.1 beta 5 - -19-DEC-2017: 7.8.7 - -- Uses mxGraph 3.8.1 beta 4 - -15-DEC-2017: 7.8.6 - -- Internal translation update - -14-DEC-2017: 7.8.5 - -- Uses mxGraph 3.8.1 beta 3 -- Uses relative path for templates -- Adds configVersion to force reset of configuration - -05-DEC-2017: 7.8.4 - -- Fixes font rendering in library dialog -- Adds move subtree handle for tree containers -- Fixes special cases for font size changes -- Adds fixes for older versions of IE - -04-DEC-2017: 7.8.3 - -- Improves handling of fontsize in format panel -- Hides link hint for edges while moving points -- Improves loop routing with control points -- Adds remove option for links -- Uses mxGraph 3.8.1 beta 2 - -03-DEC-2017: 7.8.2 - -- Adds select descendants for cells with outgoing edges -- Adds defaults for insert from custom library -- Adds search of metadata in find dialog -- Enables export URL for external domains -- Adds custom libraries to shape search index -- Uses mxGraph 3.8.1 beta 1 - -01-DEC-2017: 7.8.1 - -- Fixes Confluence Cloud revision history diagram display - -30-NOV-2017: 7.8.0 - -- Uses mxGraph 3.8.0 - -29-NOV-2017: 7.7.8 - -- Removes dashed borders for editing paragraphs - -28-NOV-2017: 7.7.7 - -- Adds Sitemap sidebar -- Moves double border shapes to Misc sidebar -- Enables custom libraries in Trello Power-Up -- Fixes resize vertex with touch events -- Uses mxGraph 3.7.7 beta 2 - -27-NOV-2017: 7.7.6 - -- Removes Trello option from splash screen (use Power-Up) -- Fixes import of SVG with no width, height and viewbox -- Adds undo for global shadow switch -- Uses mxGraph 3.7.7 beta 1 -- Fixes select after paste - -24-NOV-2017: 7.7.5 - -- Even faster startup time for offline app -- Fixes cache manifest for offline app - -24-NOV-2017: 7.7.4 - -- Uses mxGraph 3.7.6 -- Checks existing filename in Trello Power-Up -- Adds root dialog for cancel in Google picker -- Faster startup time for offline app -- Validates page format input - -22-NOV-2017: 7.7.3 - -- Improves Gliffy importer - -20-NOV-2017: 7.7.2 - -- Fixes stack layout and adds styles -- Uses mxGraph 3.7.6 beta 10 - -16-NOV-2017: 7.7.1 - -- Adds switches for SVG shadow -- Fixes tags dialog size -- Fixes action states - -15-NOV-2017: 7.7.0 - -- Fixes alt+mousewheel in lightbox mode - -15-NOV-2017: 7.6.9 - -- Adds predefined filters for Trello picker -- Fixes picker for GDriveConnector and Google Docs Add-on -- Fixes UTF8 strings in imported SVG images -- Adds context menu for links in hints - -13-NOV-2017: 7.6.8 - -- Updates to latest AWS stencils - -30-OCT-2017: 7.6.7 - -- Ignores invalid sources in embed mode -- Fixes auth flow in Trello Power-Up - -30-OCT-2017: 7.6.6 - -- Uses mxGraph 3.7.6 beta 9 -- Always shows Google folder dialog - -28-OCT-2017: 7.6.5 - -- Fixes possible NPE in legacy embed mode - -28-OCT-2017: 7.6.4 - -- Adds vector handles -- Fixes text style combo in Firefox -- Fixes text flow after word wrap change -- Uses mxGraph 3.7.6 beta 8 - -26-OCT-2017: 7.6.3 - -- Adds current style to CSV and text -- Uses mxGraph 3.7.6 beta 7 - -25-OCT-2017: 7.6.2 - -- Adds optional arguments for subclassers - -25-OCT-2017: 7.6.1 - -- Fixes Google picker for certain file types -- Fixes text entries in general sidebar -- Uses mxGraph 3.7.6 beta 6 - -24-OCT-2017: 7.6.0 - -- Uses mxGraph 3.7.6 beta 5 - -24-OCT-2017: 7.5.9 - -- Uses mxGraph 3.7.6 beta 4 - -23-OCT-2017: 7.5.8 - -- Adds Team Drives support in GDriveConnector -- Fixes bug in mockups sidebar - -22-OCT-2017: 7.5.7 - -- Adds support for team drives in google picker -- Removes image export after closing lightbox - -16-OCT-2017: 7.5.6 - -- Adds IBM icons -- Disables Confluence Cloud revision checks due to saveMacro bug - -10-OCT-2017: 7.5.5 - -- Hides tooltips for page links -- Fixes scrollwheel zooming with no scrollbars in chromeless mode -- Uses mxGraph 3.7.6 beta 3 - -09-OCT-2017: 7.5.4 - -- Adds missing page option in insert link dialog -- Fixes viewer event handling for links in labels - -06-OCT-2017: 7.5.3 - -- Fixes Trello integration -- Fixes image cropping dialog - -05-OCT-2017: 7.5.2 - -- Ready for new Trello integration -- Fixes for embed mode - -04-OCT-2017: 7.5.1 - -- Updates Atlassian icons - -03-OCT-2017: 7.5.0 - -- Updates Atlassian icons -- Improvements for Lucidchart import -- Adds toolbar and border URL parameter for chromeless mode - -29-SEP-2017: 7.4.9 - -- Fixes ignored current page in window lightbox -- Fixes cross-origin frame access in fallback - -28-SEP-2017: 7.4.8 - -- Adds #P for URL parameters (beta) -- Bypasses caches for proxy servlet -- Uses mxGraph 3.7.6 beta 2 -- Checks existing storage file before rename - -26-SEP-2017: 7.4.7 - -- Adds components for Trello Power-Up - -25-SEP-2017: 7.4.6 - -- Improves Gliffy import -- Removes drag and drop handlers in lightbox -- Fixes selection state in Chrome after closing dialogs - -25-SEP-2017: 7.4.5 - -- Improves Gliffy import - -22-SEP-2017: 7.4.4 - -- Restores latest Dropbox SDK -- Improves CORS headers configuration -- Fixes ignored nav, highlight and page in tabbed lightbox for viewer - -19-SEP-2017: 7.4.3 - -- Improvements for Trello integration - -19-SEP-2017: 7.4.2 - -- Hard codes Dropbox SDK version to work around their bug - -18-SEP-2017: 7.4.1 - -- Hides footer in embed mode -- Restores feedback form in help menu - -18-SEP-2017: 7.4.0 - -- Removes feedback form in help menu -- Adds client-side image export in lightbox - -13-SEP-2017: 7.3.9 - -- Fixes missing insert page tab - -12-SEP-2017: 7.3.8 - -- Improvements to Gliffy import - -08-SEP-2017: 7.3.7 - -- Uses mxGraph 3.7.6 beta 1 -- Fixes links on shapes in print output - -07-SEP-2017: 7.3.6 - -- Fixes overridden paths for folding icons -- Fixes subtree folding in viewer -- Fixes disabled state for edit data action -- Fixes footer plugin in chromeless mode -- Adds CSS style for read-only status -- Fixes possible editing for read-only files - -01-SEP-2017: 7.3.5 - -- Improvements for Lucidchart import -- Hides move icon in tree and flow layouts -- Fixes collapsible action for multiple selection cells - -31-AUG-2017: 7.3.4 - -- Adds event handling for tree and flow layouts - -31-AUG-2017: 7.3.3 - -- Removes footer in Chrome App -- Improvements for Lucidchart import -- Fixes timing issue in number plugin - -31-AUG-2017: 7.3.2 - -- Fixes special cases for line jumps - -30-AUG-2017: 7.3.1 - -- Fixes folder dialog for inserting new Google Drive files -- Adds support for PNG+XML files in Chrome, Firefox and Edge -- Fixes tolerance for connection arrows on touch devices - -28-AUG-2017: 7.3.0 - -- Fixes event handling for page links in labels -- Fixes label for page links on shapes -- Fixes folding in tree containers -- Uses mxGraph 3.7.5 - -25-AUG-2017: 7.2.9 - -- Moves clickable label links to tooltip in edit mode - -25-AUG-2017: 7.2.8 - -- Fixes open in new window for local exports -- Fixes collapse/expand for containers -- Uses mxGraph 3.7.5 beta 14 - -24-AUG-2017: 7.2.7 - -- Fixes file usage stats - -24-AUG-2017: 7.2.6 - -- Improvements for Lucidchart import -- Fixes possible NPEs - -24-AUG-2017: 7.2.5 - -- Fixes possible NPE - -24-AUG-2017: 7.2.4 - -- Adds mindmaps and orgcharts in Advanced sidebar (beta) -- Fixes page ID after import in Confluence Cloud add-on - -24-AUG-2017: 7.2.3 - -- Fixes reset of current styles - -24-AUG-2017: 7.2.2 - -- Adds autosave for Trello files - -23-AUG-2017: 7.2.1 - -- Adds support for Trello attachments - -23-AUG-2017: 7.2.0 - -- Adds support for line jumps (beta) -- Improvements for Lucidchart import -- Adds usage stats for actions -- Uses mxGraph 3.7.5 beta 13 - -22-AUG-2017: 7.1.10 - -- Fixes transistor icon set - -21-AUG-2017: 7.1.9 - -- Adds persistent autosave setting in Electron App -- Adds File, Page Setup and Publish in Electron/Chrome App -- Fixes keyboard shortcut labels on Mac -- Changes keyboard shortcuts for connection points/arrows - -18-AUG-2017: 7.1.8 - -- Fixes bounding box margins for vertical labels -- Uses mxGraph 3.7.5 beta 12 - -18-AUG-2017: 7.1.7 - -- Webapp opens local files in new window -- Fixes flipped, non-projected anchors -- Uses mxGraph 3.7.5 beta 11 -- Changes download links - -17-AUG-2017: 7.1.6 - -- Improvements for Lucidchart import -- Uses mxGraph 3.7.5 beta 11 -- Fixes possible NPE in custom handles - -17-AUG-2017: 7.1.5 - -- Uses mxGraph 3.7.5 beta 10 -- Fixes custom handle positions for turned shapes -- Fixes image export for clipart in Electron App -- Adds close in file menu for Electron/Chrome App -- Repositions inline dialogs if window is resized -- Removes indirection for saving PDF in Electron App -- Adds export in library dialog for Chrome App - -16-AUG-2017: 7.1.4 - -- Adds footer for Desktop Apps Facebook post - -16-AUG-2017: 7.1.3 - -- Uses mxGraph 3.7.5 beta 9 -- Uses retina icons for social media footers - -16-AUG-2017: 7.1.2 - -- Fixes possible NPE in mxShapeBasicRectCallout shape - -16-AUG-2017: 7.1.1 - -- Disables drafts in Confluence Cloud add-on -- Uses mxGraph 3.7.5 beta 9 -- Fixes label positions, adds callout shape in general sidebar - -14-AUG-2017: 7.1.0 - -- Improves Lucidchart import -- Improves Gliffy import -- Uses mxGraph 3.7.5 beta 8 -- Fixes ignored horizontal/vertical flip for connection points - -11-AUG-2017: 7.0.9 - -- Fixes path to clipart images for SVG export in Chrome App -- Adds perimeter for parallelogram, trapezoid, step and hexagon - -11-AUG-2017: 7.0.8 - -- Fixes error handling in Confluence Cloud add-on - -10-AUG-2017: 7.0.7 - -- Adds anonymize plugin (p=anon) - -09-AUG-2017: 7.0.6 - -- Conf Cloud license changes -- Fixes for Perimeters - -09-AUG-2017: 7.0.5 - -- Uses mxGraph 3.7.5 beta 7 -- Fixes pen events for Chrome on Windows -- Adds preview for clipboard in save image dialog -- Enables drafts in Confluence Cloud add-on - -08-AUG-2017: 7.0.4 - -- Improvements to Gliffy import -- Fixes remember option for image resize dialog - -07-AUG-2017: 7.0.3 - -- Adds cropping for data URIs in edit image dialog -- Uses mxGraph 3.7.5 beta 6 -- Adds filled edge shape in basic sidebar -- Fixes possible NPE, undefined function in Lucidchart Import -- Fixes error handling in PlantUML add-on - -06-AUG-2017: 7.0.2 - -- Improvements to Gliffy import -- Uses filename for print preview title - -04-AUG-2017: 7.0.1 - -- Improvements to Gliffy import -- Improvements to Lucidchart import -- Fixes PlantUML macro dialog - -03-AUG-2017: 7.0.0 - -- Improvements to Gliffy import -- Improvements to Lucidchart import -- Sent semantic versioning on holiday - -02-AUG-2017: 6.9.9 - -- Fixes paste from Lucidchart - -31-JUL-2017: 6.9.8 - -- Gliffy import improvements - -27-JUL-2017: 6.9.7 - -- Adds links to reviews in free add-ons -- Fixes preview in PlantUML add-on - -26-JUL-2017: 6.9.6 - -- Switches to Google Cloud SDK -- Adds fishbone diagram templates in business section - -24-JUL-2017: 6.9.5 - -- Fixes anchor links in lightbox for viewer -- Fixes event state for page links in labels - -24-JUL-2017: 6.9.4 - -- Fixes hyperlinks in viewer - -24-JUL-2017: 6.9.3 - -- Uses mxGraph 3.7.5 beta 5 -- Add experimental support for bridges in dev mode only - -24-JUL-2017: 6.9.2 - -- Add experimental support for bridges -- Adds fixes to VSDX export -- Minor UI fixes - -19-JUL-2017: 6.9.1 - -- Adds open button for spreadsheets, videos, photos, maps in GDriveConnector -- Fixes import of multiple pages in Lucidchart files - -18-JUL-2017: 6.9.0 - -- Adds import tile in splash screen -- Adds social media sharing in footer -- Uses mxGraph 3.7.5 beta 4 -- Fixes Extras, Tags and Autosave in Embed mode - -18-JUL-2017: 6.8.18 - -- Ctrl+drop for images shows size dialog to reset default -- Adds dialog before unloading modified page in embed mode - -17-JUL-2017: 6.8.17 - -- Adds dialog for importing large images -- Fixes sorting of properties in metadata dialog for IE 11 -- Fixes handling of lineHeight in IE 11 - -16-JUL-2017: 6.8.16 - -- Makes ref optional in value dialog for GitHub -- Adds undoable background color, image and page format changes -- Uses mxGraph 3.7.5 beta 3 - -12-JUL-2017: 6.8.15 - -- Fixes deleted transparent labels with spaces -- Enables resize of containers with stack layout -- Adds links option in Confluence Cloud add-on - -11-JUL-2017: 6.8.14 - -- Fixes VSDX export for non-numeric IDs -- Fixes drag and drop to splash screen - -10-JUL-2017: 6.8.13 - -- Adds Alt+Click to select cells behind cells -- Uses mxGraph 3.7.5 beta 2 - -07-JUL-2017: 6.8.12 - -- Updated translations -- Fixes minor bugs in Connect add-ons - -06-JUL-2017: 6.8.11 - -- Changes initial footer link to video - -03-JUL-2017: 6.8.10 - -- Uses mxGraph 3.7.5 beta 1 - -29-JUN-2017: 6.8.9 - -- Fixes execution order and ignored state parameter - -29-JUN-2017: 6.8.8 - -- Updates translations -- Disables VSDX export in IE11- -- Fixes VSDX export in Safari -- Adds larger thumbnails for Google Drive -- Adds VSDX export (beta) in Chrome App - -28-JUN-2017: 6.8.7 - -- Updates translations -- Uses mxGraph 3.7.4 - -26-JUN-2017: 6.8.6 - -- Fixes save servlet, local file save in MS Edge -- Removes echo request for save of local data to cloud - -21-JUN-2017: 6.8.5 - -- Removes max-height for Confluence Cloud viewer - -20-JUN-2017: 6.8.4 - -- Adds crossbar shape -- Adds edit button configuration -- Uses new quick start video -- Fixes print dialog for lightbox in scrolled document -- Uses mxGraph 3.7.3 beta 13 - -16-JUN-2017: 6.8.3 - -- Minor VSDX export menu change - -15-JUN-2017: 6.8.2 - -- Fixes VSDX export to cloud - -15-JUN-2017: 6.8.1 - -- Adds page formats, uses inch units -- Fixes logout for OneDrive picker -- Uses mxGraph 3.7.3 beta 12 - -14-JUN-2017: 6.8.0 - -- Adds support for OneDrive for Business - -13-JUN-2017: 6.7.11 - -- Fixes possible NPE in DriveFile -- Fixes Document Read-Only error in Google Drive -- Fixes OneDrive button in LinkDialog -- Adds more UML relation notations -- Inserts custom libraries after scratchpad - -12-JUN-2017: 6.7.10 - -- Fixes Java compliance issue in Gliffy import - -12-JUN-2017: 6.7.9 - -- Adds css, default styles, libraries to Editor.configure -- Moves persistent settings to EditorUi.init -- Fixes image export for (var)phi in ASCIIMathML - -08-JUN-2017: 6.7.8 - -- Fixes saving local files in MS Edge -- Fixes binary after text export in Safari -- Fixes title for offline iOS homescreen app - -06-JUN-2017: 6.7.7 - -- Fixes broken links in cache.manifest - -06-JUN-2017: 6.7.6 - -- Adds VSDX export in online webapp - -06-JUN-2017: 6.7.5 - -- Fixes links in labels for lightbox on touch devices -- Adds links to pages -- Adds zoom option for viewer in Confluence Connect - -05-JUN-2017: 6.7.4 - -- Fixes overridden rounded style for non-rounded shapes -- Adds defaultVertexStyle/defaultEdgeStyle in Editor.configure -- Adds replay plugin - -03-JUN-2017: 6.7.3 - -- Updates Gliffy translations to add Flowchart v2 library -- Adds edge group support to vsdx export -- Updates Google Cloud Platform icons - -31-MAY-2017: 6.7.2 - -- Adds Atlassian shapes - -30-MAY-2017: 6.7.1 - -- Adds viewer lightbox option in Confluence Connect -- Uses mxGraph 3.7.3 beta 9 - -29-MAY-2017: 6.7.0 - -- Adds viewer toolbar config for Confluence Connect -- Enables video and source tags in labels and tooltips -- Fixes reset of edge styles in CSV import -- Uses mxGraph 3.7.3 beta 8 - -25-MAY-2017: 6.6.5 - -- Adds print option in lightbox -- Moves insert to arrange menu - -24-MAY-2017: 6.6.4 - -- Fixes possible data loss for back button -- Enables OneDrive support on iOS - -22-MAY-2017: 6.6.3 - -- vsdx export improvements - -19-MAY-2017: 6.6.2 - -- Adds trees plugin -- Fixes text preview, custom handles with math -- Uses mxGraph 3.7.3 beta 7 - -17-MAY-2017: 6.6.1 - -- Fixes libs=aws2 URL parameter -- Uses mxGraph 3.7.3 beta 6 - -16-MAY-2017: 6.6.0 - -- Adds Venn diagram templates -- Starts .vsdx export functionality -- Improvements and bug fixes for Electron build -- Fixes for Gliffy importer -- Adds autosave for libraries in Chrome App - -13-MAY-2017: 6.5.10 - -- Fixes case sensitivity issue for template names and folders - -12-MAY-2017: 6.5.9 - -- Adds export as URL in Chrome App -- Adds drag and drop for all file formats in Sidebar and Library dialog -- Fixes handling of invalid files after close with realtime -- Adds offline app status icon for cached state -- Removes standalone mode to fix offline iOS home screen apps -- Redirects PDF export to print action when offline -- Fixes text preview for resize with custom handles -- Improvements for small mobile screens -- Forces HTTPS for offline app -- Fixes partial rectangles in Basic palette -- Uses mxGraph 3.7.3 beta 5 - -08-MAY-2017: 6.5.8 - -- Adds .vssx stencil import -- Adds square, circle, partial rectangles in sidebar -- Adds identity configuration for CSV import -- Uses mxGraph 3.7.3 beta 4 - -29-APR-2017: 6.5.7 - -- Fixes default and button labels for lost changes dialog -- Fixes event handling for overlapping edge handles -- Adds library export to local storage -- Ignores auth files in local storage picker -- Uses mxGraph 3.7.3 beta 3 - -27-APR-2017: 6.5.6 - -- Adds arrows and textbox to general sidebar -- Fixes possible data loss when opening local files -- Removes minimum of 120% for line height in format panel -- Fixes highlight for scaled, selected arrows in realtime -- Removes fix for cloned start/end arrow when splitting edge -- Fixes touch events in Chrome for hiding modal dialogs -- Uses mxGraph 3.7.3 beta 2 - -24-APR-2017: 6.5.5 - -- Fixes OneDrive file picker -- Uses mxGraph 3.7.3 beta 1 -- Adds error handling in Google Docs add-on auth callback -- Fixes cancel for access denied dialog in GitHub client -- Adds sign out option for backends in splash screen -- Fixes changes lost warning when saving draft -- Removes clipart icons due to complaints -- Fixes close icon in Chrome app footer - -20-APR-2017: 6.5.4 - -- Updates Sandstorm build -- Fixes download for exported PNG in Microsoft Edge -- Fixes possible NPE in embed mode -- Disables "Include a copy of my diagram" for PNG export by default - -14-APR-2017: 6.5.3 - -- Disables hacked Dropbox client JS - -13-APR-2017: 6.5.2 - -- Adds missing supercall in Editor.resetGraph override - -13-APR-2017: 6.5.1 - -- Fixes dependency on mxSettings in viewer.min.js - -13-APR-2017: 6.5.0 - -- Fixes extension for exported files with dots -- Fixes lost changes after create or open file in same window -- Fixes ignored default page size for Google Drive files -- Adds Alt+Shift+C for clear waypoints -- Adds toFront/Back context menu for multiple cells -- Adds arc size for copy/paste style -- Fixes rounded swimlane boundary cases -- Uses Cloudflare CDN for loading MathJax -- Adds clear waypoints for vertices with connections -- Adds error handling for saving macro in Confluence Cloud -- Fixes cloned start/end arrow when splitting edge -- Adds support for global shadow in PDF export -- Fixes special characters in branch names for GitHub client -- Fixes missing arc handle for unknown shapes -- Fixes hightlight size for arrows -- Uses mxGraph 3.7.2 - -06-APR-2017: 6.4.6 - -- Works around page counter loop condition in FF - -05-APR-2017: 6.4.5 - -- .vsdx import improvements - -03-APR-2017: 6.4.4 - -- Increases black header title in Conf Cloud to push tick and cross out of visible area - -03-APR-2017: 6.4.3 - -- Improvements to theming support for vsdx import -- Fixes for grouped rotations in vsdx import - -28-MAR-2017: 6.4.2 - -- Fixes embedded sheets in Google Drive Connector -- Updates Russian translations -- Improvements to theming support for vsdx import - -24-MAR-2017: 6.4.1 - -- Initial .vsdx theming support - -21-MAR-2017: 6.4.0 - -- Fixes scaling on .vsdx import -- Adds Google Cloud Platform cards - -18-MAR-2017: 6.3.8 - -- Changes display on marker pull-down for no marker in use - -17-MAR-2017: 6.3.7 - -- Adds locale information to drive user - -16-MAR-2017: 6.3.6 - -- Fixes selection of deleted parents after delete actions -- Fixes missing XML for PNG export event in error case -- Fixes timeout for PDF export with invalid images - -16-MAR-2017: 6.3.5 - -- Disables tooltip in GraphViewer via showTitleAsTooltip -- Fixes error handling for export message in embed mode -- Fixes export of empty diagram in Graph.getSvg - -15-MAR-2017: 6.3.4 - -- Fixes NPE in FF - -14-MAR-2017: 6.3.3 - -- Fixes use of undefined variable in DriveClient - -14-MAR-2017: 6.3.2 - -- Updates AWS icons -- Added update plugin -- Fixes update of thumbnail if page not visible - -12-MAR-2017: 6.3.1 - -- Sorts properties in metadata dialog -- Adds animation plugin - -11-MAR-2017: 6.3.0 - -- Fixes slashes in branch names for GitHub client -- Fixes order for add selected cells to library -- Fixes order, missing shapes for export selected cells - -09-MAR-2017: 6.2.9 - -- Fixes label offset for export of selected edges -- Uses temporary file for drag and drop data -- Uses mxGraph 3.7.2 beta 1 - -09-MAR-2017: 6.2.8 - -- Fixes ignored user ID in state URL parameter - -08-MAR-2017: 6.2.7 - -- Fixes insert, copy, rename and move for Google Team Drives - -07-MAR-2017: 6.2.6 - -- Adds support for Google Team Drives - -07-MAR-2017: 6.2.5 - -- Adds remote JPEG export option -- Fixes OneDrive, adds GitHub in Edit Link dialog -- Fixes import of JPG and GIF from GitHub and URL - -01-MAR-2017: 6.2.4 - -- Uses mxGraph 3.7.1 -- Fixes inserting files in OneDrive -- Hides folder picker if no folders in Drive -- Fixes possible NPE in retry error handling - -28-FEB-2017: 6.2.3 - -- Fixes label for turn action -- Fixes use of undefined function in Dropbox client - -28-FEB-2017: 6.2.2 - -- Handles expired oauth tokens -- Handles blocked Dropbox client API -- Fixes autosave for libraries and scratchpad -- Fixes spinner for template dialog in embed mode - -22-FEB-2017: 6.2.1 - -- Faster read, fixes possible NPE in Dropbox - -22-FEB-2017: 6.2.0 - -- Fixes encoding errors in GitHub client -- Checks size in GitHub and Dropbox -- Fixes initial SVG file contents -- Adds target=frame URL parameter -- Moves cookies to local storage -- Adds recent files in splash -- Uses mxGraph 3.7.0.2 beta 5 -- Uses Dropbox API v2 - -17-FEB-2017: 6.1.2 - -- Uses semantic versioning -- Fixes possible NPE in format panel - -16-FEB-2017: 6.1.1.0 - -- Uses mxGraph 3.7.0.2 beta 4 -- Adds import for SVG and JPG images from backends -- Adds VSDX/Gliffy/PNG+XML import/open from backends -- Adds border option for image export -- Adds timeout handlers for Atlassian cloud -- Fixes ignored crop in JPEG export - -15-FEB-2017: 6.1.0.3 - -- Fixes possible NPE in OneDriveClient -- Adds client-side JPG export option - -14-FEB-2017: 6.1.0.2 - -- Adds picker for GitHub -- Uses mxGraph 3.7.0.2 beta 3 -- Changes dialog title for PDF export in Chrome app -- Adds pages option in image and SVG export dialog -- Fixes cancel in message dialog for GitHub insert - -11-FEB-2017: 6.1.0.1 - -- Fixes overwrite of GitHub files -- Fixes default values in GitHub dialog -- Fixes initial save for graphics formats - -11-FEB-2017: 6.1.0.0 - -- Fixes HTML export -- Adds GitHub support -- Fixes processing order in CSV import -- Fixes checks for valid HTTP responses - -08-FEB-2017: 6.0.3.7 - -- Fixes preview for Embed HTML dialog - -08-FEB-2017: 6.0.3.6 - -- Adds help button in publish link dialog -- Uses desk.draw.io for searching help -- Adds export HTML dialog - -07-FEB-2017: 6.0.3.5 - -- Fixes hidden image in Chrome for image export to new window -- Fixes fallback for non-public Google Drive files -- Fixes blurred image for client-side image export in Chrome -- Uses mxGraph 3.7.0.2 beta 2 - -07-FEB-2017: 6.0.3.4 - -- Shows related articles in help links -- Adds link options in HTML and URL dialogs - -06-FEB-2017: 6.0.3.3 - -- Uses mxGraph 3.7.0.2 beta 1 -- Fixes conversion for plain and formatted text -- Adds Ctrl+Enter for newlines in Safari -- Replaces ?url URL parameter with #U hash value -- Uses public diagram URL in Google Drive Connector - -03-FEB-2017: 6.0.3.2 - -- Fixes Embed dialogs -- Moves Insert to Extras, CSV to File, Import -- Adds fallback for Publish Link action -- Removes Imgur and Github publish options - -03-FEB-2017: 6.0.3.1 - -- Updates Dutch translations -- Fixes lost value when cloning page while editing -- Fixes possible NPE when removing images from custom libraries -- Fixes unicode page name character in vsdx import - -31-JAN-2017: 6.0.3.0 - -- Hides plugin warning for all local plugins -- Adds prefetched URLs in embed to fix CORS issue -- Fixes public URL for shared Google Drive files -- Adds Export, URL and #R raw file types - -30-JAN-2017: 6.0.2.16 - -- Adds CSV import plugin - -29-JAN-2017: 6.0.2.15 - -- Uses mxGraph 3.7.0.1 - -27-JAN-2017: 6.0.2.14 - -- Fixes status bar in Firefox in Atlas theme - -26-JAN-2017: 6.0.2.13 - -- Updates Arrange tab after remove from group -- Faster image and SVG export -- Uses mxGraph 3.7.0.1 beta 1 - -18-JAN-2017: 6.0.2.12 - -- Adds width, height in advanced export dialog - -18-JAN-2017: 6.0.2.11 - -- Adds crop option for SVG and image export -- Fixes PDF crop export option -- Adds text extraction plugin -- Uses mxGraph 3.7.0.0 - -13-JAN-2017: 6.0.2.10 - -- Removes green background from server-side image export -- Ignores convention of not using double digit release numbers - -13-JAN-2017: 6.0.2.9 - -- Adds Google Cloud icons -- Removes lightbox link for Imgur files -- Uses mxGraph 3.7.0.0 beta 13 - -09-JAN-2017: 6.0.2.8 - -- Adds props plugin -- Uses mxGraph 3.7.0.0 beta 12 -- Adds help button in print dialog - -28-DEC-2016: 6.0.2.7 - -- Adds dialog for selecting pages in docs add-on -- Fixes update all for generic links in docs add-on -- Adds open in new window, data URI import while offline -- Adds import for Lucidchart files - -26-DEC-2016: 6.0.2.6 - -- Fixes lazy loading of clients in chromeless mode -- Fixes export of arbitrary pages with advanced dialog - -23-DEC-2016: 6.0.2.5 - -- Adds PlantUML option in text dialog -- Uses mxGraph 3.7.0.0 beta 11 - -14-DEC-2016: 6.0.2.4 - -- Adds text field support for .vsdx import - -13-DEC-2016: 6.0.2.3 - -- Improves .vsdx import text handling - -12-DEC-2016: 6.0.2.2 - -- Improves .vsdx import - -08-DEC-2016: 6.0.2.1 - -- Adds edit option in HTML and SVG embed dialog -- Moves tags, find plugins to editor -- Uses mxGraph 3.7.0.0 beta 11 -- Fixes ignored width in viewer after page change -- Adds number plugin for numbering shapes - -06-DEC-2016: 6.0.2.0 - -- Stops allowing diagrams on new Conf Cloud pages -- Fixes URL encoding for Conf Connect diagram names -- Fixes page breaks, blank pages in PDF export -- Fixes viewer in hidden containers for IE9- -- Uses mxGraph 3.7.0.0 beta 10 - -02-DEC-2016: 6.0.1.9 - -- Adds context path to URL for Connect Rendermode - -01-DEC-2016: 6.0.1.8 - -- Removes blocking DIV while inserting files -- Adds marker styles for copy/paste style - -23-NOV-2016: 6.0.1.7 - -- Fixes links to same domain for viewer in iframes -- Fixes automatic loading of libraries -- Fixes sidebar title overlap with buttons -- Fixes lost names, delete order in library dialog - -21-NOV-2016: 6.0.1.6 - -- Fixes missing auth header in Google client API - -18-NOV-2016: 6.0.1.5 - -- Replaces prompts in Atlassian cloud plugins -- Fixes save of scratchpad in embed mode -- Enables paste of images while editing labels -- Adds support for title attribute in mxlibrary - -16-NOV-2016: 6.0.1.4 - -- Defaults to using F2 GAE instances -- Fixes no element error for selecting page in Firefox -- Fixes drag and drop for pages in Firefox - -09-NOV-2016: 6.0.1.3 - -- Shift+Drop ignores embedded XML in images -- Alt+Drop ignores highlighted drop target - -07-NOV-2016: 6.0.1.2 - -- Adds new electrical shapes -- Minor improvements for find plugin - -04-NOV-2016: 6.0.1.1 - -- Adds consistent location for insert and sidebar -- Adds support for pages in publish actions -- Adds search for metadata in find plugin -- Uses lightbox for Imgur redirects -- Fixes HTML export for multiple pages -- Fixes shape detection for multiple pages - -02-NOV-2016: 6.0.1.0 - -- Updates shapes in embed servlet -- Uses new Iconfinder API -- Uses mxGraph 3.7.0.0 beta 9 -- Uses first unlocked layer for all diagrams - -31-OCT-2016: 6.0.0.0 - -- Adds multiple pages per file - -31-OCT-2016: 5.7.2.5 - -- Makes recent colors persistent -- Uses first unlocked layer for multiple pages - -28-OCT-2016: 5.7.2.4 - -- Fixes Gliffy line imports with less than 2 waypoints - -28-OCT-2016: 5.7.2.3 - -- Prepares multiple pages per file -- Simplifies UX for tags plugin - -27-OCT-2016: 5.7.2.2 - -- Adds page view state to realtime -- Uses mxGraph 3.7.0.0 beta 8 -- Adds diagram option in From Text dialog -- Adds incremental find plugin - -26-OCT-2016: 5.7.2.1 - -- Uses mxGraph 3.7.0.0 beta 7 -- Adds page format option in print dialog -- Shift+alt+rubberband removes selection cells -- Shift+click adds edges for delete in toolbar - -18-OCT-2016: 5.7.2.0 - -- Uses mxGraph 3.7.0.0 beta 6 -- Adds experimental sql plugin - -13-OCT-2016: 5.7.1.3 - -- Fixes mxFile import with page disabled - -07-OCT-2016: 5.7.1.2 - -- Adds import for multiple pages -- Fixes german spelling errors - -06-OCT-2016: 5.7.1.1 - -- Adds warning for model size limit exceeded error - -05-OCT-2016: 5.7.1.0 - -- Adds support for pages in embed mode -- Embed save uses mxFile rather than GraphModel in pages mode - -04-OCT-2016: 5.7.0.9 - -- Adds experimental tags plugin -- Fixes page scale in print preview -- Adds new colorset - -03-OCT-2016: 5.7.0.8.2 - -- Adds tolerance, uses fewer cells in scissors tool - -27-SEP-2016: 5.7.0.7 - -- Adds filename for editors in Atlassian cloud plugins -- Fixes encoding of filenames in Atlassian cloud plugins -- Adds optional title parameter to load message -- Uses mxGraph 3.7.0.0 beta 5 -- Fixes possible empty pages in PDF export - -27-SEP-2016: 5.7.0.6 - -- Fixes redirect error in IE - -26-SEP-2016: 5.7.0.5 - -- Adds publish to Facebook, Twitter - -21-SEP-2016: 5.7.0.4 - -- Minor logging changes - -21-SEP-2016: 5.7.0.3 - -- Uses mxGraph 3.7.0.0 beta 4 -- Logging changes to use standard Java logging - -21-SEP-2016: 5.7.0.2 - -- Uses mxGraph 3.7.0.0 beta 3 -- Fixes possible NPE for markup editor - -20-SEP-2016: 5.7.0.1 - -- Fixes minor bug with autosave -- Uses mxGraph 3.7.0.0 beta 2 - -20-SEP-2016: 5.7.0.0 - -- Sets initial state of sidebar to invisible -- Adds support for scratchpad in Chrome App -- Disables default value for exporting selection only -- Adds square and circle shapes, hints for special searches -- Uses mxGraph 3.7.0.0 beta 1 -- Creates temporary blank diagram if splash dialog is closed -- Removes "all changes saved" message for device files -- Adds snapToPoint custom attribute -- Fixes enabled state of publish menu and link item -- Adds scope to set and get placeholder variable -- Fixes current revision in dialog during autosave - -13-SEP-2016: 5.6.0.5 - -- Adds multiple (previous) predefined color sets -- Adds Alt+(Shift+)Tab for select parent/child - -12-SEP-2016: 5.6.0.4 - -- Uses mxGraph 3.6.0.1 beta 1 -- Adds reset for undo history of in-place editor -- Fixes inconsistent selection check for cursor keys -- Adds hash listener for pages with url parameters -- Fixes PDF, image with XML export for multiple pages -- File ID has precedence over create, url parameters -- Adds validation for grid size in page setup dialog -- Fixes fullscreen toggle in embed mode for Kennedy -- Adds keyboard shortcuts in toolbar tooltips -- Uses mxfile wrapper for embedded HTML files -- Adds optional callback argument in App.main - -07-SEP-2016: 5.6.0.3 - -- Uses mxGraph 3.6 -- Fixes authentication error in Dropbox -- Adds workaround for Confluence cloud expand macro in Chrome - -06-SEP-2016: 5.6.0.2 - -- Fixes Confluence Cloud plugin - -06-SEP-2016: 5.6.0.1 - -- Uses mxGraph 3.5.1.6 beta 6 - -06-SEP-2016: 5.6.0.0 - -- Fixes cursor scrolling for empty selection -- Adds Alt+Shift+Cursor to connect and clone -- Adds placeholders for custom shape text -- Ctrl+A selects all cells recursively -- Uses new (de)compression algorithm -- Adds language option in Chrome App -- Enables relative links in labels -- Shift+Escape cancels editing -- Uses mxGraph 3.5.1.6 beta 5 -- Pre-loads custom libraries -- Fixes object error in IE6 - -01-SEP-2016: 5.5.6.2 - -- Adds new predefined color schemes - -30-AUG-2016: 5.5.6.1 - -- Uses mxGraph 3.5.1.6 beta 4 -- Escape while editing applies new text value -- Fixes bounds for zoomed markup in-place editor -- Fixes JIRA cloud integration for Safari - -25-AUG-2016: 5.5.6.0 - -- Uses mxGraph 3.5.1.6 beta 3 -- Ignores scale for guides -- Fixes ignored background image in realtime -- Removes clipping for general text in grapheditor example -- Adds workaround for image printing in Chrome -- Fixes cropped labels in sidebar tooltips -- Adds entries argument in MoreShapes dialog -- Removes unused code and resources -- Simplified licensing check -- Adds new office, archimate3 shapes -- Finnish translation improvements -- Persian translation improvements - -12-AUG-2016: 5.5.5.8 - -- i18n updates - -10-AUG-2016: 5.5.5.7 - -- Minor changes - -08-AUG-2016: 5.5.5.6 - -- Fixes malformed XHTML meta element used in HTML save - -07-AUG-2016: 5.5.5.5 - -- Adds encoding for new HTML file format - -04-AUG-2016: 5.5.5.4 - -- Marketing text changes - -02-AUG-2016: 5.5.5.3 - -- Fixes export via Advanced dialog - -29-JUL-2016: 5.5.5.2 - -- Fixes cloud export for UTF characters - -29-JUL-2016: 5.5.5.1 - -- Mousewheel zoom centered around mouse cursor - -28-JUL-2016: 5.5.5.0 - -- Adds embedded image support for .vsdx import -- Adds File, Publish submenu, GitHub option -- Fixes capitalized keys in tooltips -- Uses mxGraph 3.5.1.6 beta 2 - -26-JUL-2016: 5.5.4.0 - -- Adds placeholder metadata variable - -25-JUL-2016: 5.5.3.8 - -- Fixes templates for new HTML file format -- Fixes image export for new HTML file format -- Uses mxGraph 3.5.1.6 beta 1 - -23-JUL-2016: 5.5.3.7 - -- Uses Ctrl+Shift+Z for redo on Linux -- Adds Ctrl+,/. for subscript/superscript -- Uses new embed code for HTML files and export -- Fixes embed iframe dialog - -21-JUL-2016: 5.5.3.6 - -- Fixes lazy loading of shapes in Chrome App - -21-JUL-2016: 5.5.3.5 - -- Simplifies footer - -20-JUL-2016: 5.5.3.4 - -- Adds Contact Us link in footer - -20-JUL-2016: 5.5.3.3 - -- Uses mxGraph 3.5.1.5 -- Adds browser in splash for offline mode -- Fixes splash screen in offline mode -- Adds padding for pages in print preview -- Removes voice assistant in Extras menu - -15-JUL-2016: 5.5.3.2 - -- Uses mxGraph 3.5.1.5 beta 2 -- Fixes waiting for clients in Create dialog - -11-JUL-2016: 5.5.3.1 - -- Adds tag for RSS feed -- Adds page scale to realtime model -- Page scale change triggers autosave - -09-JUL-2016: 5.5.3.0 - -- Adds elbow and isometric edge styles -- Uses single redirect for non-SSL apex domain -- Adds View, Page scale option -- Uses letter paper size in US, Canada and Mexico - -08-JUL-2016: 5.5.2.8 - -- Adds timeout for clients in splash screen -- Fixes loading of JS shapes in new embed mode -- Fixes loading of unused clients in chromeless mode -- Adds embed link dialog, simplifies embed html dialog -- Renames responsive to fit in embed dialogs -- Removes image, adds retina option in embed image dialog -- Updates French, Taiwanese translations -- Fixes enterGroup action for normal groups - -06-JUL-2016: 5.5.2.7 - -- Fixes selection of child cells in groups - -06-JUL-2016: 5.5.2.6 - -- Adds navigation for all groups -- Fixes spinner for unsupported clients -- Adds redirect for cdn.draw.io in splash screen - -06-JUL-2016: 5.5.2.5 - -- Adds lazy loading for clients with splash screen - -04-JUL-2016: 5.5.2.4 - -- Fixes to .vsdx import - -23-JUN-2016: 5.5.2.3 - -- Fixes loading of Drive files with disabled splash screen - -23-JUN-2016: 5.5.2.2 - -- Improves startup time for Chrome App - -23-JUN-2016: 5.5.2.1 - -- Adds Citrix networking shapes -- Fixes possible loop for autosize in graph viewer -- Removes zoom buttons in viewer for JIRA Cloud add-on -- Fixes inline hover state, position for toolbar in graph viewer -- Removes open image button in Confluence Cloud add-on toolbar - -19-JUN-2016: 5.5.2.0 - -- Adds open image button in Confluence Cloud add-on toolbar -- Adds links for selected label text in P2 add-on -- Adds fullscreen toggle in P2 add-on -- Fixes default storage for make copy in Google Drive -- Adds template json message, dialogs in connect plugins -- Fixes ignored grid for image drop location -- Adds new templates dialog for creating diagrams -- Fixes image export if math enabled in Chrome App -- Fixes drag preview in library dialog for Google Chrome -- Fixes paste for images from Lucidchart -- Adds Ctrl+N, Ctrl+O in Chrome App -- Adds new print dialog with custom zoom - -08-JUN-2016: 5.5.1.6 - -- Fixes horizontal/vertical flip in mxText -- Fixes handling of fill/stroke with no shape -- Fixes version string in about dialog -- Uses mxGraph 3.5.1.5 beta 1 - -07-JUN-2016: 5.5.1.5 - -- Moves grid color from Extras menu to format panel -- Fixes gradients for print/PDF output in Chrome App - -06-JUN-2016: 5.5.1.4 - -- Fixes loading of client libraries in atlas.min.js -- Simplifies build for Chrome App, app.min.js - -05-JUN-2016: 5.5.1.3 - -- Fixes insert of diagram via {drawio} macro name -- Fixes utf8 characters in Confluence cloud add-on - -02-JUN-2016: 5.5.1.2 - -- Disables revision parsing in Confluence Cloud -- Uses mxGraph 3.5.1.4 - -01-JUN-2016: 5.5.1.1 - -- Fixes Confluence cloud expand macro integration - -01-JUN-2016: 5.5.1.0 - -- Adds fullscreen button, persistent libraries in embed mode -- Adds new viewer for JIRA cloud integration -- Removes collapse/expand option in HTML embed dialog -- Adds filename in toolbar for Confluence cloud viewer -- Enables folding in Confluence cloud integration - -31-MAY-2016: 5.5.0.2 - -- Fixes layers button in Confluence cloud lightbox toolbar -- Fixes custom protocol absolute links in embedded HTML -- Lightbox no longer shows layers button for single layer -- Fixes click handling for embedded HTML on touch devices - -13-MAY-2016: 5.5.0.1 - -- Fixes dynamic shape loading in Confluence Cloud viewer -- Enables Extras, Edit Diagram in embed mode -- Add shift-hover in chromeless mode to hide toolbar -- Adds highlight, target URL params for chromeless mode -- Adds link handling in chromeless mode - -12-MAY-2016: 5.5.0.0 - -- Uses new HTML embed code and dialog -- Adds viewer for Confluence cloud -- Adds fullscreen and format switch in Atlas theme -- Adds transparency for layers dialog in embedded and lightbox mode -- Uses mxfile in PNG/SVG+XML file formats -- Adds parsing for new embedded HTML files -- Fixes lightbox click for links in embedded SVG -- Fixes relative images in new HTML embed -- Uses mxGraph 3.5.1.4 beta 1 - -09-MAY-2016: 5.4.4.5 - -- Adds fullscreen button -- Blocks possible javascript: shape links -- Fixes handling of edit URL parameter -- Uses mxGraph 3.5.1.3 - -06-MAY-2016: 5.4.4.4 - -- Fixes UI language in Chrome App -- Fixes File, Make Copy in IE9- -- Allows non-integer font sizes -- Uses mxGraph 3.5.1.3 beta 6 - -04-MAY-2016: 5.4.4.3 - -- Fixes persistence of current libraries - -04-MAY-2016: 5.4.4.2 - -- Removes debug output - -04-MAY-2016: 5.4.4.1 - -- Fixes binary file export in Chrome App -- Fixes SVG namespace for groups in svgdata plugin - -02-MAY-2016: 5.4.4.0 - -- Writing files in Chrome app replaces existing content -- Adds layers option in iframe/SVG/image embed dialogs -- Adds layers URL parameter in chromeless mode -- Adds ctrl+shift+connect to disable connections -- Uses mxGraph 3.5.1.3 beta 5 - -30-APR-2016: 5.4.3.9 - -- Moves application code to JS files -- Adds icon for help link in menus - -29-APR-2016: 5.4.3.8 - -- Removes gridcolor attribute in file, URL parameter -- Adds peristent grid color option in Extras menu -- Fixes resize of background page in outline dialog -- Disables context menu on touch devices on folding icon -- Fixes hover icons for overlapping cell in all directions -- Adds logging for file loading errors -- Uses mxGraph 3.5.1.3 beta 4 - -27-APR-2016: 5.4.3.7 - -- Switches JIRA Cloud to attachment writes via client -- Fixes ignored config in embed script -- Renames File to DrawioFile -- Uses mxGraph 3.5.1.3 beta 3 - -26-APR-2016: 5.4.3.6 - -- Fixes version in about dialog - -26-APR-2016: 5.4.3.5 - -- Fixes possible bug with cached JS and uncached HTML - -25-APR-2016: 5.4.3.4 - -- Removes old stylesheet -- Fixes bug for edges between layers -- Fixes embedding with custom shapes -- Fixes logging of domains with database entry -- Moves createSpinner, setFileData to EditorUi -- Adds lightbox parameter for chromeless mode -- Uses single click for lightbox in embed - -22-APR-2016: 5.4.3.3 - -- Fixes naming issues in PlantUML render mode - -22-APR-2016: 5.4.3.2 - -- Adds render mode to PlantUML - -18-APR-2016: 5.4.3.1 - -- Fixes Confluence Cloud new page diagram insertion -- Uses mxGraph 3.5.1.3 beta 2 - -17-APR-2016: 5.4.3.0 - -- Removes macro parameter from plantUML - -17-APR-2016: 5.4.2.5 - -- Adds previous UML shapes - -15-APR-2016: 5.4.2.4 - -- Fixes double click on layer to rename -- Uses mxGraph 3.5.1.2 - -13-APR-2016: 5.4.2.3 - -- Changes plant export URL to https - -13-APR-2016: 5.4.2.2 - -- Changes baseURL of plantUML to plant.draw.io - -13-APR-2016: 5.4.2.1 - -- Changes baseURL of plantUML to https - -13-APR-2016: 5.4.2.0 - -- Adds tooltips, svgdata plugin (p=tips;svgdata) -- Uses standard print dialog in Chrome App -- No longer repaints label while editing -- Uses mxGraph 3.5.1.1 - -11-APR-2016: 5.4.1.8 - -- Adds line height in text format panel -- Fixes possible NPE when updating shapes -- Uses mxGraph 3.5.1.1 beta 4 - -11-APR-2016: 5.4.1.7 - -- Fixes font size change with no text selection -- Fixes isConsumed not defined in MS Edge -- Fixes change of text opacity -- Uses mxGraph 3.5.1.1 beta 3 - -09-APR-2016: 5.4.1.6 - -- Changes default edge length to 80 -- Fixes anchor links for embedded HTML and SVG -- Adds expiry to license logging -- Adds Alt+/Shift+/Ctrl+Click in sidebar - -08-APR-2016: 5.4.1.5 - -- Adds imgur redirect servlet -- Fixes offline mode -- Fixes reset of comic style in connect preview - -08-APR-2016: 5.4.1.4 - -- Fixes global spacing ignored if overridden -- Adds logging in JIRA servlet to avoid data loss -- Fixes click on unselected edge label moves label -- Fixes thumbnail for disabled autosave in Drive -- Adds recovery from backup in revision history -- Uses mxGraph 3.5.1.1 beta 2 - -06-APR-2016: 5.4.1.3 - -- Uses mxGraph 3.5.1.1 beta 1 -- Fixes File, Publish menu item -- Fixes iOS app icons - -06-APR-2016: 5.4.1.2 - -- Uses mxGraph 3.5.1.0 -- Uses new logo with no black bar -- Fixes export for certain AWS 3D shapes -- Fixes action states for read-only and restricted files - -05-APR-2016: 5.4.1.1 - -- Adds comic, text background color to default style -- Adds outline keyboard shortcut in chromeless mode -- Adds labelMovable style for vertex labels -- Uses mxGraph 3.5.1.0 beta 6 -- Adds selection only option for XML export -- Adds persistent settings for Chrome App - -03-APR-2016: 5.4.1.0 - -- Removes certain AWS 3D shapes - -01-APR-2016: 5.4.0.9 - -- Adds isometric AWS shapes - -01-APR-2016: 5.4.0.8 - -- Adds more dotted line styles -- Adds isometric shapes and connectors (beta) -- Updates handler after style change of cell -- Uses mxGraph 3.5.1.0 beta 5 - -31-MAR-2016: 5.4.0.7 - -- Hides toolbar after mouse move in chromeless mode -- Adds keyboard shortcuts in read-only and chromeless mode -- Fixes highlight in realtime for large strokewidths -- Fixes update of text shape after change of overflow style -- Uses mxGraph 3.5.1.0 beta 5 -- Fixes vertical alignment for Component shape -- Enables comic style for various shapes -- Uses filename for dropped files in libraries - -26-MAR-2016: 5.4.0.6 - -- Removes shadow URL parameter -- Smaller jiggle effect for diamond shapes -- Adds global shadow option in View menu (beta) -- Removes bug tracking code for MS Edge - -25-MAR-2016: 5.4.0.5 - -- Adds image option in embed SVG dialog -- Fixes embedded images in HTML labels - -24-MAR-2016: 5.4.0.4 - -- Restores bug tracking code for Edge -- Adds app icons for various devices - -24-MAR-2016: 5.4.0.3 - -- Uses mxGraph 3.5.1.0 beta 4 -- Fixes word wrap change for existing text -- Removes bug tracking code for MS Edge - -23-MAR-2016: 5.4.0.2 - -- Fixes possible NPE for import -- Removes crc32 for email logging -- Adds bug tracking code for MS Edge - -23-MAR-2016: 5.4.0.1 - -- Adds Extras, Show Start Screen option -- Uses mxGraph 3.5.1.0 beta 3 -- Resets text shape state before using new style -- Removes extension from published diagram title -- Fixes rendering of comic rectangles in VML -- Fixes expand of Misc sidebar in IE6/8 - -22-MAR-2016: 5.4.0.0 - -- Uses XML to convert from old realtime -- Fixes gradients for certain URLs in IE11/Edge -- Adds comic style and shapes -- Fixes move preview offset -- Uses mxGraph 3.5.1.0 beta 2 -- Fixes library title editing on iOS -- Makes autosave optional in Chrome App - -18-MAR-2016: 5.3.5.2 - -- Adds delete URL to publish confirmation -- Adds warning dialog before Publish -- Adds File, Embed, Image menu option -- Adds Email address to Drive user info -- Click on app icon opens Drive folder - -17-MAR-2016: 5.3.5.1 - -- Simplifies status messages for saving -- Adds UI for editing sidebar titles -- Disables publish action in IE9- -- Fixes possible infinite loop in Drive client - -17-MAR-2016: 5.3.5.0 - -- Adds File, Publish for uploading to Imgur -- Moves moreShapes from File to View menu -- Moves createShape from File to Extras menu -- Removes create shape option from sidebar -- Adds confirmation after copy in SVG embed -- Adds copy button in embed iframe dialog - -16-MAR-2016: 5.3.4.3 - -- Enables licensing for Confluence Cloud -- Removes second macro for GDrive Connector -- Fixes custom shapes for embedded diagrams -- Updates MS Azure, Cloud + Enterprise icons - -15-MAR-2016: 5.3.4.2 - -- Adds File, Embed, SVG menu option -- Uses client mode for making a copy -- Hash has precedence over client parameter - -14-MAR-2016: 5.3.4.1 - -- Adds support for embedded PNG data URI in client mode -- Fixes ignored grid for XML drag and drop -- Fixes decoding of base64 encoded embedded SVG -- Fixes embedded PNG character encoding in Safari - -10-MAR-2016: 5.3.4.0 - -- Uses mxGraph 3.5.1.0 beta 1 - -09-MAR-2016: 5.3.3.9 - -- Uses mxGraph 3.5.0.1 beta 3 - -09-MAR-2016: 5.3.3.8 - -- Fixes double encoding for PNG+XML in embed mode - -08-MAR-2016: 5.3.3.7 - -- Uses mxGraph 3.5.0.1 beta 2 - -04-MAR-2016: 5.3.3.6 - -- Fixes insertTextAt call in importFile() - -04-MAR-2016: 5.3.3.5 - -- Uses mxGraph 3.5.0.1 beta 1 -- Redirects apex domain to www.draw.io -- Fixes loading spinner for converted Dropbox files - -03-MAR-2016: 5.3.3.4 - -- Fixes offset of imports with no mouse event -- Adds configurable edit button in chromeless mode -- Ignores public URL for Drive files in public folders -- Adds upload tab in Google picker dialog -- Makes hierarchical folder picker default -- Puts new Google files into root folder -- Adds folder picker for new libraries - -03-MAR-2016: 5.3.3.3 - -- Changes BaseURL for Google Drive Connector - -02-MAR-2016: 5.3.3.2 - -- Adds responsive UI for small screens -- Adds voice assistance for text input - -01-MAR-2016: 5.3.3.1 - -- Fixes grid rounding errors for common cases - -01-MAR-2016: 5.3.3.0 - -- Uses mxGraph 3.5.0.0 -- Adds voice assistant in Extras menu -- Adds experimental shadow URL parameter -- Ignores transparent stroke color for default style - -29-FEB-2016: 5.3.2.3 - -- Adds Ctrl+Shift+Drag to create/remove space -- Fixes licensing in chromeless mode -- Fixes bug in reset graph - -28-FEB-2016: 5.3.2.2 - -- Uses mxGraph 3.4.1.3 beta 9 -- Removes Export PNG+XML menu item -- Uses MathJax from CDN, lighter config -- Adds selection option for remote export -- Fixes timing problem for printing with math -- Adds text fallback for SVG export (experimental) -- Improved text rendering for image and SVG export -- Fixes artifacts for embedded math diagrams in Chrome -- Fixes Open in new window for IE10/11, MS Edge, Safari - -26-FEB-2016: 5.3.2.1 - -- Uses MathJax 2.6 to fix artifacts in Chrome -- Fixes import of edges in separate layers -- Import of file appends multiple layers -- Changes logging for Google accounts -- Fixes drop of file URL into editor -- Uses mxGraph 3.4.1.3 beta 8 - -25-FEB-2016: 5.3.2.0 - -- Adds licensing server and client - -25-FEB-2016: 5.3.1.0 - -- Uses mxGraph 3.4.1.3 beta 7 -- Adds gridcolor URL parameter -- Adds scaled grid, replaces grid dots with grid lines -- Fixes anchors open in same page for embedded diagrams -- Moves Search, Scratchpad from Extras menu to View menu - -22-FEB-2016: 5.3.0.6 - -- Updates Confluence Connect to use new page context mechanism -- Uses mxGraph 3.4.1.3 beta 6 -- Adds rt, grid parameters for chromeless mode -- Fixes export dialog width, adds help button -- Detects data URI with XML in drag source -- Enables embed image menu in test mode - -07-FEB-2016: 5.3.0.5 - -- Fixes direction, align, distribute menu states -- Adds tap and hold to add to selection - -06-FEB-2016: 5.3.0.4 - -- Fixes possible NPE in plugins warning dialog - -06-FEB-2016: 5.3.0.3 - -- Adds delayed quick start footer ad -- Removes voice assistant from help menu -- Moves ctrl+shift+j shortcut to two pages -- Disables hover icons while space is pressed -- Adds tooltips for buttons in format panel -- Fixes button label overflow in sidebar - -05-FEB-2016: 5.3.0.2 - -- Replaces numeric keyboard shortcuts - -05-FEB-2016: 5.3.0.1 - -- Fixes asynchronous loading of plugins - -05-FEB-2016: 5.3.0.0 - -- Adds optional converter argument for canvas export -- Adds asynchronous loading for resources -- Uses mxGraph 3.4.1.3 beta 5 - -03-FEB-2016: 5.2.9.1 - -- Changes Confluence Cloud footer - -03-FEB-2016: 5.2.9.0 - -- Ignores panning trigger to change edges -- Fixes sidebar rendering in math mode -- Uses mxGraph 3.4.1.3 beta 4 - -01-FEB-2016: 5.2.8.9 - -- Updates AWS icons - -01-FEB-2016: 5.2.8.8 - -- Fixes offset for drag and drop of diagram data -- Fixes drop of SVG data URI with embedded XML -- Fixes download and export SVG to new window in Safari -- Fixes SVG export in older versions of IE -- Fixes drop shadow in SVG export for Safari -- Adds control-resize for centered resize of vertices -- Fixes import of SVG with embedded XML graph model -- Adds selection, transparent background for SVG export -- Adds include diagram option for image and SVG export -- Fixes open library file as diagram in Google Drive -- Adds pseudo-hierarchical view in Google library picker - -29-JAN-2016: 5.2.8.7 - -- Fixes ignored background color for image export -- Fixes update of outline after changing page format -- Fixes edit shape button after insert of new shape - -27-JAN-2016: 5.2.8.6 - -- Adds shadow option for image and SVG export - -26-JAN-2016: 5.2.8.5 - -- Adds pseudo-hierarchical view in Google file picker -- Adds fallback for failed local image export -- Fixes lost connect preview after remote change -- Uses mxGraph 3.4.1.3 beta 3 - -25-JAN-2016: 5.2.8.4 - -- Fixes disabled transparent background export option -- Adds touch support for Microsoft Edge -- Adds pseudo-hierarchical view in Google folder picker -- Clean up for templates and more shapes dialog -- Adds selection only option in image export dialog -- Ungroup no longer deletes non-transparent groups -- Fixes paste via menu after ctrl/cmd+c -- Fixes hiding of all sidebar entries -- Uses mxGraph 3.4.1.3 beta 2 - -19-JAN-2016: 5.2.8.3 - -- Fixes collapse/expand for sidebars - -19-JAN-2016: 5.2.8.2 - -- Fixes concurrent loading of custom libraries -- Improves initial sidebar rendering speed - -18-JAN-2016: 5.2.8.1 - -- Uses mxGraph 3.4.1.4 beta 1 -- Adds File, Move to Folder for OneDrive files -- Adds File, Rename menu item for all files -- Fixes spinner status for create revision -- Fixes edit as new for remote embedded diagrams -- Fixes minor bugs in search sidebar -- Fixes open in new window for save dialog -- Fixes edit diagram, search in Chrome app menubar -- Adds support for HTML tooltips in embedded diagrams -- Adds transparent background option for image export - -15-JAN-2016: 5.2.8.0 - -- Uses mxGraph 3.4.1.3 beta 1 -- Adds timeout for save revision in Drive -- Fixes spinner for retry after error -- Fixes handling of leading # in color dialog -- Increases size limit for background image -- Fixes minor bugs in library dialog -- Fixes image size for scratchpad - -14-JAN-2016: 5.2.7.9 - -- Changes Connect footer text for Conf/JIRA - -14-JAN-2016: 5.2.7.8 - -- Removes remote condition check in JIRA cloud -- Fixes outline connect for backbone, lifeline shapes - -12-JAN-2016: 5.2.7.7 - -- Updates Polish translation -- Removes incorrect header from Confluence Connect [DS-249] -- Fixes encoding of filename in JIRA Connect [DFJC-3] - -08-JAN-2016: 5.2.7.6 - -- Uses mxGraph 3.4.1.2 -- Fixes inconsistent loop routing -- Fixes possible page scroll for embedded iframe -- Restores spacer in UML sidebar -- Uses UML 2.5 interface notation - -06-JAN-2016: 5.2.7.5 - -- Uses mxGraph 3.4.1.1 -- Adds interface in UML sidebar -- Adds fit page in print dialog -- Adds crop option for PDF export -- Merges image export menu items - -02-JAN-2016: 5.2.7.4 - -- Adds support for title attribute in library files -- Adds optional sidebar search in Extras, Search -- Adds custom client-side image export option - -31-DEC-2015: 5.2.7.3 - -- Adds new spinner while autosaving files -- Uses simplified UI for search sidebar -- Adds library file menu items on iOS - -28-DEC-2015: 5.2.7.2 - -- Inserts new auto-layouted diagrams into current page -- Disables pinch to zoom, ctrl+wheel for Chrome on Mac -- Uses shorter delay for showing hover icons -- Shows hover icons after drop from sidebar -- Adds status after save from draft state -- Fixes default extension in create dialog -- Fixes save after change of storage file extension -- Fixes menubar height in atlas UI -- Uses parser for checking XML strings -- Shows spinner while sending feedback - -22-DEC-2015: 5.2.7.1 - -- Adds automatic jetty size for orthogonal edges -- Fixes loop routing for fixed connection points -- Labels for locked cells are no longer editable -- Fixes auto-delete for empty non-deletable text -- Handles oversize labels on buttons in sidebars -- Fixes clipping in dropdown menu with scrollbars -- Uses mxGraph 3.4.1.1 beta 1 - -11-DEC-2015: 5.2.7.0 - -- Fixes encoding for JIRA Connect -- Ignores ancestor collisions for connection arrows -- Uses mxGraph 3.4.1.0 - -09-DEC-2015: 5.2.6.9 - -- Opens PNG+XML data uri via drag and drop -- Adds thin open, async open markers -- Updates UML sidebar, adds cross marker -- Fixes markers in connect preview -- Uses smaller hover icons -- Uses mxGraph 3.4.0.4 beta 10 - -08-DEC-2015: 5.2.6.8 - -- Adds all markers to edge format panel -- Adds thin block and thin classic markers -- Adds async, circle, circlePlus markers -- Hides overlapping connection arrows - -07-DEC-2015: 5.2.6.7 - -- Uses mxGraph 3.4.0.4 beta 9 -- Adds vsdx support for unconnected edges -- Adds entity relation shapes and connectors -- Adds default styles in connect preview -- Fixes dynamic loading for registered default shapes -- Hides disabled connection points while connecting -- Uses dotted highlight border for active drop targets -- Adds dropzone with description in editable sidebars -- Adds app identifier and current version in mxfile -- Fixes sidebar button event handling for IE8/quirks -- Fixes library dialog for quirks mode - -03-DEC-2015: 5.2.6.6 - -- Fixes possible scroll to origin after paste in FF -- Fixes copy/paste in older versions of IE -- Adds export image to new window in IE -- Adds storage dialog for export in IE -- Uses mxGraph 3.4.0.4 beta 8 - -02-DEC-2015: 5.2.6.5 - -- Updates AWS icons to latest set -- Adds delay for connection arrows - -02-DEC-2015: 5.2.6.4 - -- Fixes select all after paste of large amounts of text -- Fixes update of label preview during vertical resize -- Fixes click on resize handles while editing label -- Fixes certain label positions and sizes -- Fixes menubar style in atlas UI -- Uses mxGraph 3.4.0.4 beta 7 - -27-NOV-2015: 5.2.6.3 - -- Fixes IME input for i18n in FF -- Uses mxGraph 3.4.0.4 beta 6 -- Adds experimental doors plugin - -25-NOV-2015: 5.2.6.2 - -- Fixes edge move preview for scaled tolerance -- Fixes new waypoint for drag of edges with bends -- Fixes ignored folder for new OneDrive files -- Fixes download, adds options in Save dialog -- Adds padding to handles while editing -- Adds spacing to copied styles -- Enables glass effect switch for process shape -- Migrates Docs add-on to new API -- Adds dblclick in more shapes dialog -- Fixes color dialog for font (background) color -- Uses mxGraph 3.4.0.4 beta 5 - -20-NOV-2015: 5.2.6.1 - -- Adds link to scratchpad FAQ entry -- Handles possible missing root cell in realtime - -20-NOV-2015: 5.2.6.0 - -- Removes local storage option from splash screen -- Adds browser=1 URL parameter for local storage -- Adds double click to keyboard shortcuts - -19-NOV-2015: 5.2.5.8 - -- Adds US-Legal paper size -- Handles file not found for local storage -- Handles domain policy errors in Drive client -- Restores timer for fixed connection points with mouse - -17-NOV-2015: 5.2.5.7 - -- Removes page reload after create from Drive -- Hash has precedence over state URL parameter -- Handles removed App folder in Dropbox -- Fixes handling of existing mxfile node -- Redirects 5% of reviews to Docs Add-on -- Adds support for extracting diagram nodes -- Adds spinner action in JSON protocol -- Fixes click and drag on edges in groups -- Fixes ignored scale for connect live preview -- Removes unused image files from Chrome App -- Resets constraint focus after root change -- Adds repaint of hover icons after root change -- Fixes offset for terminal point in VML -- Uses mxGraph 3.4.0.4 beta 4 - -17-NOV-2015: 5.2.5.6 - -- Uses mxGraph 3.4.0.4 beta 2 -- Uses new draw.io logo and colors -- Fixes hit detection for outline connect and grid -- Removes timer for fixed points with non-touch devices -- Adds live preview for new connections -- Fixes replacement of PNG extension in IE -- Adds autosave if gridsize is changed -- Removes Draw.io for Work action and menu item -- Fixes loading of plugins from mxSettings - -13-NOV-2015: 5.2.5.5 - -- Fixes new diagram creation in Chrome Packaged App -- Fixes delete operation (DELETE verb changed to POST) - -12-NOV-2015: 5.2.5.4 - -- Fixes context path for JIRA Connect - -11-NOV-2015: 5.2.5.3 - -- Fixes mxUtils.getFunctionName() - -11-NOV-2015: 5.2.5.2 - -- Fixes creating blank diagram files in createFile - -11-NOV-2015: 5.2.5.1 - -- Adds error handling for invalid diagram files - -10-NOV-2015: 5.2.5.0 - -- Fixes embed preview in Microsoft Edge -- Adds default connections for backbone shape -- Adds number checks for custom zoom dialog - -05-NOV-2015: 5.2.4.4 - -- Reverts Connect viewer - -05-NOV-2015: 5.2.4.3 - -- Improvements for JIRA Connect - -05-NOV-2015: 5.2.4.2 - -- Improvements for JIRA Connect - -04-NOV-2015: 5.2.4.1 - -- Adds workaround for NS_ERROR_FAILURE in FF -- Adds network shapes library -- Fixes editorUi is not defined for help link -- Uses mxGraph 3.4.0.4 beta 1 - -04-NOV-2015: 5.2.4.0 - -- Changes items in format panel and menubar -- Renames editFile, editMetadata, connect actions -- Handles invalid image bounds in Graph.getSvg - -03-NOV-2015: 5.2.3.9 - -- Fixes possible NPE - -03-NOV-2015: 5.2.3.8 - -- Adds separate switch to disable connection points -- Uses mxGraph 3.4.0.2 - -02-NOV-2015: 5.2.3.7 - -- Corrects JIRA connect plugin key in descriptor - -02-NOV-2015: 5.2.3.6 - -- Fixes ads in footer after Google login - -02-NOV-2015: 5.2.3.5 - -- Fixes possible NPE - -02-NOV-2015: 5.2.3.4 - -- Splits edges for drop from sidebar (shift to disable) -- Uses mxGraph 3.4.0.2 beta 13 - -28-OCT-2015: 5.2.3.3 - -- Adds missing function for Confluence OnDemand -- Adds refresh in format panel after root change -- Changes page size units from px to pt - -28-OCT-2015: 5.2.3.2 - -- Fixes shape search for non-existing tags -- Removes GMDL library from default sidebars -- Adds link to user manual in help menu -- Removes click to speak button in header - -25-OCT-2015: 5.2.3.1 - -- Adds separate files for GMDL, SysML sidebars -- Creates Drive revisions with autosave disabled -- Fixes scrollbar for fit page (width) actions -- Fixes delayed reset of scrollbar positions -- Fixes background page shadow color in VML -- Fixes terminal handle transparency in VML -- Uses Metarial Design for GMDL library title -- Uses mxGraph 3.4.0.2 beta 12 - -23-OCT-2015: 5.2.3.0 - -- Adds GMDL (Google Media Design Library) sidebar -- Fixes offset for repeated copy paste in Safari -- Fixes download after creating new device file -- Fixes keyboard shortcut ctrl+0 for reset view -- Fixes div has no click in more shapes dialog -- Adds horizontal/vertical page center guides -- Hides word wrap option for autosize labels -- Fixes initial size of new text labels -- Uses mxGraph 3.4.0.2 beta 11 - -21-OCT-2015: 5.2.2.2 - -- Fixes flow in voice plugin -- Fixes title collapse/expand icon color -- Fixes sidebar title font size - -20-OCT-2015: 5.2.2.1 - -- Fixes dialog for read-only realtime files - -19-OCT-2015: 5.2.2.0 - -- Improves voice recognition in plugin -- Fixes print output in Microsoft Edge -- Uses mxGraph 3.4.0.2 beta 10 - -18-OCT-2015: 5.2.1.9 - -- Fixes unlink in label with edit dialog -- Fixes html and svg URLs for embedding -- Intercepts links that change page URL -- Fixes remote selection highlight color -- Uses mxGraph 3.4.0.2 beta 9 - -18-OCT-2015: 5.2.1.8 - -- Adds dynamic loading for lucid chart import -- Adds voice label for missing speech input - -17-OCT-2015: 5.2.1.7 - -- Fixes dynamic loading of voice plugin -- Fixes overflow for voice button - -17-OCT-2015: 5.2.1.6 - -- Prepares Extensions.js for refactoring into dynamic plugins -- Adds share button for drive files, voice assistant button -- Adds transaction for connecting dangling edge in voice plugin - -17-OCT-2015: 5.2.1.5 - -- Adds select, select source/target in voice plugin -- Insert shape connects connecting dangling edge -- Adds connect vs clone command in voice plugin - -16-OCT-2015: 5.2.1.4 - -- Adds persistent current voice setting for plugin -- Adds autostart option item in voice menu for plugin -- Adds voice assistant item in main help menu -- Hides voice assistant footer if not supported -- Fixes edge clipping in print and PDF export -- Uses mxGraph 3.4.0.2 beta 8 - -15-OCT-2015: 5.2.1.3 - -- Fixes possible NPE in graph.connectVertex -- Uses levenshtein distance in voice plugin -- Next/previous moved to select prefix in voice - -15-OCT-2015: 5.2.1.2 - -- Adds variable and timestamp in Misc sidebar -- Adds voice commands in voice plugin -- Fixes segment offsets after change of parent -- Uses mxGraph 3.4.0.2 beta 7 - -14-OCT-2015: 5.2.1.1 - -- Fixes bugs, adds commands, uses footer in voice plugin -- Adds promo link to voice assistant (beta) in Chrome - -14-OCT-2015: 5.2.1.0 - -- Removes enable/disable command in voice plugin -- Fixes possible duplicate connection inserted -- Fixes lifeline perimeter for undefined strokewidths -- Improved tags for standard shapes - -13-OCT-2015: 5.2.0.9 - -- Adds continuous speech input in voice plugin -- Adds scrollbars in voice type menu -- Fixes duplicate insert of same plugin -- Fixes drop for PNG+XML data URIs -- Adds help link in voice plugin menu - -13-OCT-2015: 5.2.0.8 - -- Adds menu for voice plugin -- Fixes keyboard shortcuts for voice plugin on Windows -- Adds hello, help and quick start for voice plugin -- Fixes hover icon focus for touch devices - -12-OCT-2015: 5.2.0.7 - -- Adds experimental voice plugin (id voice) -- Fixes hover icon click for relative cells -- Fixes local save of large client-side export -- Adds recently used colors in color dialogs -- Fixes dragging labels for unselected edges -- Fixes pending timer after drop from sidebar -- Adds insert for new edges before source cell -- Changes label position and background for images -- Fixes drop of images with invalid file extension -- Uses mxGraph 3.4.0.2 beta 6 - -10-OCT-2015: 5.2.0.6 - -- Fixes sidebar tooltip after drop cells to library -- Allows 1px move of start segment in edge style -- Restores moving of selected container via child -- Fixes padding for new rows in UML table shape -- Clones west hover icon in stack before source cell -- Fixes click on hover icon in stack with near cell -- Allows group/ungroup to (de)containerize vertices -- Fixes 1px handle offset, adds terminal handle with dot -- Adds backbone shape, fixes lifeline perimeter -- Fixes drop resize if source smaller than 45px -- Adds Draw.io for Work link in Help menu -- Adds modified, saveAndExit in load JSON message -- Avoids unnecessary image resampling -- Uses mxGraph 3.4.0.2 beta 5 - -09-OCT-2015: 5.2.0.5 - -- Changes image resize condition to over 100K -- Fixes font size stepper for multiple values -- Adds edit metadata to context menu -- Adds date{format} placeholder option -- Adds link to file extensions FAQ entry - -08-OCT-2015: 5.2.0.4 - -- Fixes vertical alignment for footer - -08-OCT-2015: 5.2.0.3 - -- Adds Draw.io for Work link in footer -- Fixes update of child placeholders after undo -- Replaces PNG extension for url parameter with XML -- Adds shift for keeping original image size -- Adds edit metadata option in format panel - -08-OCT-2015: 5.2.0.2 - -- Fixes change of font size on multiple cells -- Fixes Ctrl+B/U/I while editing in FF/Safari -- Ignores default style for copy via hover icon -- Applies only basic text styles for new labels -- Ignores default style for custom library entries -- Fixes repaint performance after metadata change -- Improves speed for deleting large number of cells -- Removes page unload warning for url parameter -- Uses mxGraph 3.4.0.2 beta 4 - -08-OCT-2015: 5.2.0.1 - -- Fixes copy-paste in non-Chrome browsers - -07-OCT-2015: 5.2.0.0 - -- Adds link from Chrome App to online app -- Fixes inconsistent child selection for selected swimlanes -- Fixes PDF export for math without page view -- Increases size of metadata dialog -- Adds placeholders for labels and tooltips -- Fixes encoding for cross-platform clipboard -- Improves repaint performance for text labels -- Improves drag and drop for links and images -- Uses mxGraph 3.4.0.2 beta 3 - -06-OCT-2015: 5.1.1.1 - -- Fixes math PDF export - -06-OCT-2015: 5.1.1.0 - -- Fixes filename, advanced export to new window -- Renames main macro for Confluence Connect -- Adds error handling for invalid PDF export -- Adds timer for grouping cursor operations -- Hover icon click ignores locked layers -- Locked cells are no longer connectable -- Fixes change of fontSize for certain nodes -- Fixes paste for large diagrams -- Shows link tooltip only for single selection -- Fixes print offset for negative origins -- Fixes remote parsing for paste of ASCII 160 -- Adds GraphML import (beta) -- Adds Cmd+Drag on Mac for cloning -- Improves client-side print performance -- Uses mxGraph 3.4.0.2 beta 2 - -05-OCT-2015: 5.1.0.3 - -- Enables drag and drop and open for library files -- Constrains proportions for images in libraries -- Adds drop of library files to sidebar, dialog -- Fixes template not found error message -- Fixes mouse cursor for entity relation -- Uses custom handles only for single selection -- Adds notitle URL parameter -- Removes extension for url parameter filename -- Adds logging for help search via menu -- Uses mxGraph 3.4.0.2 beta 1 - -02-OCT-2015: 5.1.0.2 - -- Checks leading dots for storage files -- Maintains sidebar order after save of library -- Removes remoteAlert, uses version for scratchpad -- Adds drag and drop of files to custom libraries -- Fixes preview and drag to library in IE11/10 -- Adds folder picker for new files - -01-OCT-2015: 5.1.0.1 - -- Fixes possible NPE for chromeless mode -- Fixes restore of scratchpad if empty - -01-OCT-2015: 5.1.0.0 - -- Adds scratchpad option in Extras menu -- Adds tooltip, dblclick for custom libraries -- Adds drag and drop to custom libraries -- Edge drag uses handles if edge selected -- Uses mxGraph 3.4.0.1 - -30-SEP-2015: 5.0.6.4 - -- Adds small, closable footer in Chrome App -- Adds client status message in File menu -- Adds previously selected in Google picker -- Click on background closes Google picker -- Fixes possible 401 in Google picker -- Adds improved error logging - -29-SEP-2015: 5.0.6.3 - -- Fixes connecting edges with elbow edge style - -29-SEP-2015: 5.0.6.2 - -- Persists page format as default for new diagrams -- Fixes connecting edges with entity edge style -- Adds ctrl+drag to move and clone edges -- Uses mxGraph 3.4.0.1 beta 13 - -29-SEP-2015: 5.0.6.1 - -- Fixes cursor for edges with entity edge style -- Adds link, link color and tooltip option in embed dialog -- Adds mxClientOnCreate callback for embedded diagrams -- Fixes atomic undo for new waypoints when dragging edge -- Adds labels for cloud option buttons in save dialog -- Removes open in new window for edit file in Chrome App -- Adds help menu items, FAQ search in Chrome App -- Redirect exportPdf to print action in Chrome App - -27-SEP-2015: 5.0.6.0 - -- Fixes hover icon focus for mouse and touch events -- Fixes move of edge label with selected parent edge -- Drag connected edge adds waypoint (shift+drag moves) -- Disables loading of draft files from local storage - -26-SEP-2015: 5.0.5.8 - -- Uses mxGraph 3.4.0.1 beta 12 - -26-SEP-2015: 5.0.5.7 - -- Fixes ensureDataSaved in chromeless mode -- Adds experimental connect edge mode - -26-SEP-2015: 5.0.5.6 - -- Adds save dialog for Google Drive and OneDrive -- Adds storage buttons in Save dialogs -- Adds Open in new window option for PDF export -- Changes default background to white -- Fixes attempt to load realtime after export - -26-SEP-2015: 5.0.5.5 - -- Adds print support in Chrome App (beta) -- Fixes PROXY_URL not defined in Chrome App -- Fixes click on links after panning -- Uses mxGraph 3.4.0.1 beta 11 - -25-SEP-2015: 5.0.5.4 - -- Adds export for selection cells -- Fixes possible 404 for default-style2 when switching files -- Fixes reset of background image when switching files -- Adds pagination in PDF export -- Updates zoom in toolbar after edit file dialog -- Fixes background color in print output -- Uses mxGraph 3.4.0.1 beta 10 -- Waits for images in HTML labels in export -- Fixes background image for PDF export -- Connectable style overrides connectable property -- Adds nowarn URL parameter for local files -- Fixes possible NPE In HoverIcons.drag -- Added support for links in Gliffy diagrams - -23-SEP-2015: 5.0.5.3 - -- Removes preferred mode based on domain - -23-SEP-2015: 5.0.5.2 - -- Uses www for new, legacy for old Google Drive app -- Ignores quota exceeded errors in mxSettings -- Uses mxGraph 3.4.0.1 beta 9 - -23-SEP-2015: 5.0.5.1 - -- Adds connectable style -- Persists current edge and vertex style, copy on connect -- Fixes partial rectangle in VML -- Adds review link in Chrome App splash screen -- Fixes import of VDX files from Google Drive -- Adds File, Close menu item -- Fixes member not found in IE8- after paste -- Disables move, resize and delete of locked cells -- Adds delete protection for locked cells -- Removes preview for embed iframe in IE8- -- Fixes possible NPE in HoverIcons.drag - -22-SEP-2015: 5.0.5.0 - -- Adds paste for images from clipboard in Chrome -- Fixes paste from Word, Excel while editing labels -- Fixes VDX/Gliffy conversion for read-only folders in Drive -- Fixes paste from Lucidchart in modern browsers -- Uses mxGraph 3.4.0.1 beta 8 - -21-SEP-2015: 5.0.4.6 - -- Replaces connectionPoints with global connect switch -- Deletes empty text cells with no fill/stroke color -- Adds select none menu item and keyboard shortcut -- Increases/checks max size for imported images -- Fixes background image aspect for SVG export -- Fixes mouse event handling errors -- Removes rounded toolbar button -- Uses mxGraph 3.4.0.1 beta 7 - -20-SEP-2015: 5.0.4.5 - -- Changes autosave delay for local storage files to 2s -- Restores hover icons after cancel drag from sidebar -- Adds hover icons after panning, drop from sidebar -- Fixes hover icons for overlapping cells, adds timer -- Selects edge under hover icon only if connected to vertex -- Scrolls to new vertex after click on hover icon -- Uses mxGraph 3.4.0.1 beta 6 - -19-SEP-2015: 5.0.4.4 - -- Exports files to same folder in Google Drive -- Adds format panel toggle button in toolbar -- Cursor keys move child cells in stack layouts -- Selects edges under hover icon on single click -- Scrolls cells to visible after shift+click in sidebar -- Hover icon click no longer connects in stack layouts -- Hides hover icons with shift/meta, keeps with ctrl -- Hides hover icons after shift/meta/ctrl+click -- Selects new target vertex after hover icon click - -18-SEP-2015: 5.0.4.3 - -- Uses transparent shadows -- Hides hover icons during drag from sidebar -- Fixes connect to ancestors for hover icon click -- Adds shift+click in sidebar to change selection -- Hover icons ignore popup menu trigger events -- Uses ctrl+click for clone, shift+click for connect -- Adds lazy loading for state URL parameter - -18-SEP-2015: 5.0.4.2 - -- Fixes dialog for automatic layout -- Fixes hover icons not reachable with nearby cells -- Adds hover icons for dangling edges -- Fixes possible NPE for dragging hover icons - -18-SEP-2015: 5.0.4.1 - -- Fixes possible NS_ERROR_FAILURE in Firefox -- Fixes shadow color for embedded diagrams -- Fixes selection of images after drop -- Adds more aggressive image resizing -- Uses mxGraph 3.4.0.1 beta 5 - -18-SEP-2015: 5.0.4.0 - -- Fixes deleting cells with loops, terminals in groups -- Increases size for local storage open dialog -- Fixes mouse event on scrollbar after rubberband in IE 11 -- Fixes image dialog size for older browsers -- Fixes possible parseRequestText is not a function in OneDrive -- Fixes handling of linefeeds in non-formatted labels -- Makes import and replace faster in Edit file dialog -- Autosize sets height for cells with word wrapping -- Adds link to open via Drive UI if file not found -- Uses label background while editing edge labels -- Fixes right/bottom padding for scaled page view -- Adds Ctrl+Shift-Mouse wheel for zoom on Mac -- Adds fallback to server for image export -- Parser errors are now handled separately -- Adds Ctrl+Shift+Click on connect handles -- Replaces connect icon with arrow icons -- Disables word wrap option for edges -- Fixes spelling of English resources -- Improves error handling for export -- Renames actual size to reset view -- Uses mxGraph 3.4.0.1 beta 4 - -12-SEP-2015: 5.0.3.7 - -- Handles permission change during collaboration -- Adds toggle selection in shortcuts.svg -- Adds Shift+Click to toggle selection state - -11-SEP-2015: 5.0.3.6 - -- Fixes language in Confluence Connect -- Removes shadow and glass in quick styles -- Fixes possible URL undefined error -- Fixes possible DocumentClosedErrors -- Fixes foreignObjects in shortcuts.svg - -11-SEP-2015: 5.0.3.5 - -- Improves error handling for realtime collaboration -- Fixes switch to custom from landscape in format panel -- Fixes paper size for print output -- Removes shapeeditor.html -- Fixes update of page size after edit file -- Fixes drop of XML into empty diagram creates new file -- Restores xml default extension for files in Chrome App -- Fixes spinner after cancel of library save in Chrome App -- Fixes extension for libraries in Chrome App -- Fixes status after autosave in Chrome App -- Removes foreignObjects in shortcuts.svg - -10-SEP-2015: 5.0.3.4 - -- Fixes translations in Connect -- Adds mxReader.js to atlas.min.js -- Adds dropbox client to app.min.js -- Adds error message for busy state -- Fixes cursor in viewer for Connnect -- Handles modifications while saving -- Uses common mxProperties in Connect -- Fixes modified check for local files - -09-SEP-2015: 5.0.3.3 - -- Fixes label for recent OneDrive files -- Adds common resources from Confluence -- Fixes toolbar for viewer in Connect -- Adds support for expand macro in Connect -- Fixes Google Drive client API in Opera -- Adds lazy loading for OneDrive client API -- Fixes startup in quirks and IE8 standards - -07-SEP-2015: 5.0.3.2 - -- Makes autosave optional in Google Drive -- Adds adaptive autosave delay in Google Drive -- Fixes relative URLs in Confluence connect -- Moves atlas.min.js to war/js, uses in connect -- Adds lazy loading for sidebar search index - -05-SEP-2015: 5.0.3.1 - -- Fixes single click on connector handle - -05-SEP-2015: 5.0.3.0 - -- Fixes import from Dropbox, import for images -- Adds backlink to keyboard-shortcuts file -- Adds error handling for invalid URL parameter - -05-SEP-2015: 5.0.2.11 - -- Updates atlas.min to 5.0.2.11 in Confluence connect -- Fixes handling of utf8 chars in Confluence connect -- Updates search index to include new built-in shapes -- Save dialog no longer overrides existing extension -- Use URL for filename with url and no title parameter -- Adds diagram data to shortcuts.svg, moves to root -- Uses mxGraph 3.4.0.1 beta 3 - -04-SEP-2015: 5.0.2.10 - -- Adds SVG version for keyboard shortcuts -- Adds ctrl+(shift+)cursor keys for resize -- Uses oauth2 token in sharing dialog -- Removes sharing error handling -- Uses mxGraph 3.4.0.1 beta 2 - -04-SEP-2015: 5.0.2.9 - -- Uses capability check for client-side export - -03-SEP-2015: 5.0.2.8 - -- Fixes sharing timeout error handling - -03-SEP-2015: 5.0.2.7 - -- Fix save diagram for new page in Confluence connect -- Shows error message if sharing dialog times out - -03-SEP-2015: 5.0.2.6 - -- Adds clearWaypoints for multiple selection cells -- Removes wire-compression in proxy servlet -- Uses mxGraph 3.4.0.1 beta 1 - -31-AUG-2015: 5.0.2.5 - -- Fixes directory name for keybase.io auth - -31-AUG-2015: 5.0.2.4 - -- Uses PNG+XML as default for Chrome App -- Adds PNG+XML export in Chrome App -- Uses client-side PNG+XML export in embed mode -- Fixes ctrl+drag on connector handle in FF -- Adds client-side PNG+XML file format -- Fixes possible NPE in Sidebar - -28-AUG-2015: 5.0.2.3 - -- Increases max zoom to 160x -- Fixes possible overwrite for storage file after DnD -- Uses base64 encoding for SVG data URIs -- URI encoded content attribute for SVG+XML files -- Adds faster startup for loading with url parameter -- Fixes App.loadUrl for binary files in IE9/10 - -27-AUG-2015: 5.0.2.2 - -- Restores format for export JSON protocol event - -27-AUG-2015: 5.0.2.1 - -- Fixes possible NPE in App.saveLibrary, createFile -- Uses utf8 for imported SVG files -- Moves canvas export to EditorUi -- Fixes click method missing on div -- Uses mxGraph 3.4 beta 12 - -27-AUG-2015: 5.0.2.0 - -- Fixes possible graph.createCurrentEdgeStyle undefined -- Fixes possible gapi.load is undefined error -- Changes color of normal unsaved status message -- Fixes possible NPE in OneDrive error handling -- Uses Youtube icon for quick start video link -- Uses numeric width and height for inserted text -- Fixes possible NPE in App.convertImages -- Fixes possible unsanitized HTML output -- Uses mxGraph 3.4 beta 11 - -26-AUG-2015: 5.0.1.5 - -- Uses client-side export for PNG in embed mode -- Fixes character encoding for PNG export in embed mode -- Adds error handling in App.saveRequest, saveLocalFile -- Adds open in new window button in export dialog -- Fixes initialization for Dropbox client -- Updates keyboard shortcuts -- Uses mxGraph 3.4 beta 10 - -25-AUG-2015: 5.0.1.4 - -- Uses mxGraph 3.4 beta 9 - -25-AUG-2015: 5.0.1.3 - -- Fix ctrl+drag of container with selected children -- Fix move of edge label with selected terminals -- Adds tooltip for sidebar sections -- Uses mxGraph 3.4 beta 8 - -24-AUG-2015: 5.0.1.2 - -- Fixes label for recent Google Drive files -- Uses mxGraph 3.4 beta 7 - -24-AUG-2015: 5.0.1.1 - -- Adds open recent menu -- Removes debugging output in open.html -- Adds lazy loading for Dropbox client API - -23-AUG-2015: 5.0.1.0 - -- Keeps state URL parameter after open from Google Drive -- Fixes default window bounds for new files in Chrome App - -23-AUG-2015: 5.0.0.9 - -- Adds lazy loading for Google Drive client API -- Adds open in new window option for local export - -23-AUG-2015: 5.0.0.8 - -- Disables paste of empty string via keyboard shortcut -- Fixes slow ctrl-key handling with large clipboard data -- Sets default for adding plugins to p URL parameter -- Adds short key, handles escape in explore plugin - -21-AUG-2015: 5.0.0.7 - -- Ignores shape for default vertex styles -- Hides background image option in Chrome App -- Removes background image option in Chrome App -- Minor fix for logo in Chrome App - -21-AUG-2015: 5.0.0.6 - -- Fixes possible flickering for connector target drop -- Fixes logo position in Chrome App -- Fixes initial Chrome App window position -- Uses mxGraph 3.4 beta 6 - -21-AUG-2015: 5.0.0.5 - -- Uses case insensitive sorting for browser file list -- Shows drop targets for drag on connector handle -- Fixes timer for shape drop target updates -- Fixes default window size and position for Chrome App -- Uses mxGraph 3.4 beta 6 - -20-AUG-2015: 5.0.0.4 - -- Adds timer for update of shape drop targets -- Adds tooltips for shape drop targets -- Uses mxGraph 3.4 beta 5 - -19-AUG-2015: 5.0.0.3 - -- Opens dropped XML in same window for empty diagram -- Fixes import of non-PNG images in Chrome App -- Improves error messages for OneDrive -- Merges view and options section in format panel -- Removes copy on connect option in format panel -- Fixes menus and action states in Chrome App - -19-AUG-2015: 5.0.0.2 - -- Fixes XML via drag and drop overwrites local storage file -- Fixes client-side export in Firefox, disables in Edge -- Fixes SVG for embed mode in Safari and Firefox -- Uses mxGraph 3.4 beta 4 - -18-AUG-2015: 5.0.0.1 - -- Disables client-side image export in Firefox -- Fixes invalid characters for image export in Chrome - -18-AUG-2015: 5.0.0.0 - -- Uses mxGraph 3.4 beta 3 -- Adds embedImages switch (default true) for SVG and SVG+XML in JSON protocol -- Changes autosave interval in Drive to 6 seconds -- Adds text labels for Google Drive previews in Firefox and Chrome -- Disables Google Drive in Opera -- Fixes export of binary files to cloud in IE 10 -- Adds download button in revision history dialog -- Uses client-side PNG export in Firefox, Chrome and Opera -- Adds PNG image export in Chrome App -- Removes JPG export option -- Adds handling for invalid characters in Dropbox -- Fixes encoding of XML files in IE 9 -- Adds error handling for large image export -- Cuts shapes and connections separately -- Deletes layers and connections separately -- Enables connections for text labels -- Fixes restore button state in revision dialog -- Uses untitled layer as name for new layers -- Adds rename layer button in layers window toolbar - -06-AUG-2015: 4.9.0.9 - -- Moves copy on connect option to after background -- Fixes initial value of foldingEnabled in realtime -- No longer hides handles while editing label - -06-AUG-2015: 4.9.0.8 - -- Improvements to Confluence connect functionality - -06-AUG-2015: 4.9.0.7 - -- Improvements to Confluence connect functionality - -06-AUG-2015: 4.9.0.6 - -- Improves error handling in Chrome App -- Adds top/bottom+left/right label position -- Adds import for local images in Chrome App -- More image resizing to reduce file size -- Chrome app no longer enforces file extension -- Adds handling for storage quota exceeded error - -05-AUG-2015: 4.9.0.5 - -- Fixes binary base64 data in JSON protocol for IE10 -- Fixes handling of 403 error in Google client -- Adds legacy.draw.io for old drive app -- Ignores errors for native undo/redo - -05-AUG-2015: 4.9.0.4 - -- Improvements to Confluence connect functionality - -04-AUG-2015: 4.9.0.3 - -- Adds connect plugin -- Improvements to Confluence connect functionality -- Fixes possible NPE, handles table action errors - -04-AUG-2015: 4.9.0.2 - -- Uses mxGraph 3.4 beta 2 -- Adds p URL parameter for app customization plugin IDs -- Fixes unexpected end of input, CSS in save status message -- Adds ctrl+backspace to delete shape with connections - -03-AUG-2015: 4.9.0.1 - -- Fixes initial char for immediate editing -- Fixes text size drop down in toolbar - -03-AUG-2015: 4.9.0.0 - -- Uses mxGraph 3.4 beta 1 -- Adds xml to export event in JSON protocol -- Fixes rendering of trailing newlines in HTML labels -- Fixes repaint for in-place editor while zooming -- Fixes font size in format panel for zoomed text -- Adds rounded to copy style and default style -- Fixes paste into active layer and locked layers -- Adds ctrl+connect to copy source terminal -- Adds ctrl+mouse wheel to zoom on Windows and Linux -- Adds ctrl+delete to delete shape with connections -- Deletes shapes and connections separately -- Changes connect (plus) icon to arrow icon -- Copy on connect is now disabled by default -- Adds cross-browser Ctrl-/Cmd+B/I/U for bold, italic, underline -- Adds shift in keyboard shortcut for ungroup, toBack -- Fixes update of page view option in format panel -- Adds message with save link for new unsaved files -- Fixes math rendering while editing and zooming -- Adds splash=0 URL parameter to bypass splash screen -- Fixes reset while entering URL in background image dialog -- Adds link to unsaved data status message for saving - -27-JUL-2015: 4.8.5.14 - -- Improvements to Confluence connect functionality - -24-JUL-2015: 4.8.5.13 - -- Improvements to Confluence connect functionality - -24-JUL-2015: 4.8.5.12 - -- Adds autosave option to load message in JSON protocol -- Adds randomized Chrome App and Docs Add-on link in footer -- Removes link to WordPress plugin in footer - -23-JUL-2015: 4.8.5.11 - -- Removes development code for in-place editing - -23-JUL-2015: 4.8.5.10 - -- Corrects Hebrew and Arabic resources base directions - -22-JUL-2015: 4.8.5.9 - -- Replaces technology with wordpress plugin in footer -- Fixes saving of local library files to device -- Changes alignment of social icons in footer -- Removes debugging output in More Shapes dialog - -21-JUL-2015: 4.8.5.8 - -- Adds html export format option in JSON protocol -- Fixes exporting in embed mode -- Fixes splash screen after cancel import from browser in embed mode -- Restores social icons in footer -- Disables import menu for read-only files -- Fixes enabled state of grid menu item -- Fixes enabled state of view toolbar items in embed mode - -20-JUL-2015: 4.8.5.7 - -- Uses new more shapes dialog in quirks mode -- Fixes special characters for filename in OpenServlet -- Adds error message for invalid file encoding in OpenServlet -- Fixes enabled state of Extras menu if no file open -- Adds fileId for redirect to realtime if no file open -- Removes Google file menu items if no file is open - -18-JUL-2015: 4.8.5.6 - -- Adds filter for license checks - -18-JUL-2015: 4.8.5.5 - -- Fixes initial state for toolbar items, share action -- Adds local URL parameter for device app mode -- Remember me in auth dialog is now checked by default - -18-JUL-2015: 4.8.5.4 - -- Fixes lost Google authentication cookie -- Adds error handler in JS response from OpenServlet - -17-JUL-2015: 4.8.5.3 - -- Restores i18n resources in Chrome App - -16-JUL-2015: 4.8.5.2 - -- Restores lost arrange menus - -16-JUL-2015: 4.8.5.1 - -- Adds error message for import of local images in Chrome App -- Fixes width of filename element in header -- Adds xmlsvg format, xml for all formats in export message -- Adds support for disabled export options in Google Drive -- Improves error handling in DropboxClient and DriveClient -- Fixes various actions and menus for read-only files -- Uses new more shapes dialog in Chrome App -- Removes unused files from Chrome App package - -15-JUL-2015: 4.8.5.0 - -- Fixes timing issue in revision dialog after restore -- Reduces size of keyboard-shortcuts.png -- Adds new more shapes dialog with preview in online mode -- Moves actual size action from toolbar to zoom dropdown -- Uses mxGraph 3.3.1.2 beta 5 - -13-JUL-2015: 4.8.4.2 - -- Removes gradient, adds connection type in toolbar - -13-JUL-2015: 4.8.4.1 - -- Adds PNG export for offline mode in Google Chrome -- Fixes creating files via create button in Drive -- Changes footer, moves social links to help menu - -11-JUL-2015: 4.8.4.0 - -- Avoids closing closed document in DriveRealtime -- Uses mxGraph 3.3.1.2 beta 4 -- Fixes possible NPE in mxEdgeStyle.SegmentConnector -- Moves handling of decideLater to callback - -11-JUL-2015: 4.8.3.9 - -- Fixes handling of decide later in create dialog -- Click on collaborator in realtime shows last selection -- Ignores empty selection to reduce history size in realtime -- Ignores possible quota exceeded in DriveClient.setUserId -- Fixes possible NPE in StorageDialog, local file save - -10-JUL-2015: 4.8.3.8 - -- Updates keyboard shortcuts for touch devices -- Fixes translation for copyOf in RTL languages -- Fixes DIV for embedded diagrams in quirks, IE8 standards mode -- Ignores User cancelled errors in Chrome App -- Uses mxGraph 3.3.1.2 beta 3 -- Fixes accidental inserts of labels with double click -- Fixes initial value, clear icon in shape search for IE8 -- Removes Azure from default sidebars -- Adds networkshapes URL parameter for testing -- Fixes insert location for created shapes -- Adds styled table, title in misc section -- Replaces circles with ellipses in general section - -08-JUL-2015: 4.8.3.7 - -- Fixes file extensions for saving via servlet -- Fixes save of browser file as device file -- Disables local save in FF11, IE6, IE7, IE8 -- Fixes handling of invalid state args -- Fixes encoding for cross-browser use of OpenServlet -- Fixes navigate dialog for click on filename in IE8 -- Fixes ignored bottom and right border for export -- Disables vertical scroll for fit page width -- Disables insert, layout menu for locked layers -- Disables insert, paste for locked layers -- Adds keyboard shortcuts in help menu - -06-JUL-2015: 4.8.3.6 - -- Updates French and Arabic i18n - -02-JUL-2015: 4.8.3.5 - -- Fixes NPE in insert menu - -02-JUL-2015: 4.8.3.4 - -- Fixes possible NPE for insert dropdown in toolbar - -02-JUL-2015: 4.8.3.3 - -- Uses simple menu, toolbar and sidebar -- Rearranges various menus - -30-JUN-2015: 4.8.3.2 - -- Disables cleanup of selection state in realtime -- Allows decimal values for size and position in arrange panel -- Changes search label in Help menu to English -- Fixes swimlane selection on mouse up -- Adds tooltip for small spinner in Google Drive -- Fixes double click text insert in locked layers -- Fixes position for user element -- Adds fallback for moving layers on touch devices - -30-JUN-2015: 4.8.3.1 - -- Removes Computer Networks from More shapes dialog - -30-JUN-2015: 4.8.3.0 - -- Fixes save action in non-embedded mode -- Adds locking for layers, updates dialog -- Enables edit metadata for diagram -- Moves small file spinner to menubar -- Improves various labels in the UI -- Adds view menu in simple mode -- Improves German translation - -29-JUN-2015: 4.8.2.5 - -- Aligns language menu with UI elements -- Moves formatPanel in normal view menu -- Adds toBack/toFront in simple toolbar -- Fixes anti aliasing for rounded icon - -27-JUN-2015: 4.8.2.4 - -- Fixes embed buttons in text toolbar mode -- Fixes dropdown location for toolbar in normal mode -- Fixes update of font and size after toolbar switch - -27-JUN-2015: 4.8.2.3 - -- Fixes font name and size in toolbar -- Adds text format toolbar in simple mode -- Adds gradient, toggle rounded for toolbar in simple mode -- Adds special i18n language bundle -- Removes GIF image export option - -26-JUN-2015: 4.8.2.2 - -- Add embedded image support for .vsdx import -- Rearranges help menu, changes 10 tips video - -25-JUN-2015: 4.8.2.1 - -- Fixes cursor for menubar, toolbar, sidebar items -- Uses current mouse location for Ctrl(+Shift)+K -- Adds shift+tab to select previous cell -- Adds zoom, format toolbar buttons in simple mode -- Moves layout from advanced to main menubar in simple mode -- Uses Atlas 5.7 CSS style for toolbar items -- Uses mxGraph 3.3.1.2 beta 2 - -24-JUN-2015: 4.8.2.0 - -- Moves language menu to top, right corner -- Adds insert text, rectangle, ellipse -- Fixes location for single click inserts -- Adds simple=1 URL parameter (experimental) -- Fixes numeric key shortcuts for numeric keypad -- Fixes minimum height for exported images -- Fixes zoom button mouse clicks in embedded diagrams on touchscreens -- Adds space+drag for panning, handles tab while editing -- Uses mxGraph 3.3.1.2 beta 1 - -23-JUN-2015: 4.8.1.4 - -- Adds saveAndExit, modified URL parameters for embed mode -- Adds status messages, modified flags, resource keys -- Fixes SVG export via messages -- Uses mxGraph 3.3.1.1 - -19-JUN-2015: 4.8.1.3 - -- Improves Atlassian Connect integration - -18-JUN-2015: 4.8.1.2 - -- Improves Atlassian Connect integration - -18-JUN-2015: 4.8.1.1 - -- Shows embed buttons after loading diagram -- Adds xmlpng format for export and load message -- Adds modified parameter in exit event message - -18-JUN-2015: 4.8.1.0 - -- Adds export messages in JSON protocol, png export -- Fixes loading HTML files with ampersand in title -- Uses mxGraph 3.3.1.0 - -18-JUN-2015: 4.8.0.6 - -- Adds proto, spin URL parameters for embed mode -- Fixes import of Gliffy files - -17-JUN-2015: 4.8.0.5 - -- Renames image export servlet - -16-JUN-2015: 4.8.0.4 - -- Click on plus icon in stack does no longer connect to clone -- Fixes import of VSDX files via drag and drop -- Fixes broken images, hardcoded delay for image export -- Fixes child order for moving selected cells in stacks -- Fixes demo mode, decide later option for iOS devices -- Uses mxGraph 3.3.1.0 beta 6 - -15-JUN-2015: 4.8.0.3 - -- Uses (shift) click on plus icon to (connect and) clone -- Click on selected child in swimlane selects swimlane -- Uses chooser for exporting files in Chrome App -- Fixes demo mode for persistent backend choice -- Fixes size of replace shape for touch devices -- Removes decide later option in Splash screen -- Reduces file size for dummy PNG images -- Fixes Google Drive, OneDrive in IE11 -- Enter key starts editing like F2 key -- Uses move cursor for sidebar items -- Click on sidebar stops editing -- Adds logging for shape search -- Uses mxGraph 3.3.1.0 beta 5 - -08-JUN-2015: 4.8.0.2 - -- Uses new export servlet URL -- Fixes font for math export -- Updates Hungarian and Russian translation -- Limits zoom to 20x -- Sets initial state of general sidebar to expanded -- Fixes delete action during interactive operation -- Remember in splash defaults to true -- Fixes scaled drop connect to edge - -05-JUN-2015: 4.8.0.1 - -- Improves mousewheel zoom performance -- Fixes orthogonal edge router -- Uses mxGraph 3.3.1.0 beta 4 - -03-JUN-2015: 4.8.0.0 - -- Adds caching for formatted text labels and math -- Fixes initial svg/html save in undefined mode -- Uses mxGraph 3.3.1.0 beta 3 -- Fixes printing with math - -02-JUN-2015: 4.7.0.4 - -- No longer sends local save to server if supported -- Adds status pass-through for proxied requests -- Fixes ignored filenames for bitmap export -- Adds export for SVG with embedded XML -- Fixes import of files in Chrome App -- Adds support for embedded SVG files - -01-JUN-2015: 4.7.0.3 - -- Adds cloud support in advanced export dialog -- Hides toolbar for print in chromeless mode -- Fixes modified state in embed mode -- Fixes row drop location on lists -- Adds returnbounds URL parameter -- Adds ER schema row shapes - -30-MAY-2015: 4.7.0.2 - -- Fixes click required for connect on iOS -- Fixes replace shape delay for images -- Fixes i18n Dropbox app folder check - -29-MAY-2015: 4.7.0.1 - -- Adds export to Google Drive, Dropbox and OneDrive -- Fixes paste of Gliffy data into diagram -- Fixes lost connections for duplicate cells -- Fixes changing points in unconnectable groups -- Runs layouts for groups and finds tree roots -- Adds edit link in arrange format panel -- Adds Dropbox and OneDrive options in Link Dialog -- Fixes moved edge labels when zoom is changed -- Changes initial mode to undefined in client mode -- Updates format panel state in embed mode -- Tidies up format panel in Atlas theme -- Adds tooltip for rightclick pan -- Uses mxGraph 3.3.1.0 beta 2 - -28-MAY-2015: 4.7.0.0 - -- Uses mxGraph 3.3.1.0 beta 1 -- Adds list, dimension, collate and sort in advanced sidebar -- Moves text shapes from Advanced to General sidebar -- Shift-click on plus icon creates new connection -- Adds 'clear waypoints' in arrange format panel -- Fixes incremental selection of cell hierarchies -- Fixes NS_ERROR_NOT_IMPLEMENTED in Firefox 3.6 -- Sets orthogonal direction for fields and rows -- Drop on lifelines replaces participant shape -- Direct child selection for UML and ER shapes -- Fixes text rendering with overflow=fill -- Adds delay for replace shape icon -- Adds schema row in ER sidebar - -22-MAY-2015: 4.6.1.2 - -- Improves local shape search, adds tags - -22-MAY-2015: 4.6.1.1 - -- Fixes name encoding when moving files to Dropbox apps folder - -21-MAY-2015: 4.6.1.0 - -- Fixes loading files from non-app folder in Dropbox -- Handles 404 status codes when loading Dropbox files -- Fixes loading of libraries files as diagrams -- Fixes ignored background in advanced image export -- Fixes paste here menu for chromeless mode -- Makes toolbar for chromeless mode transparent - -20-MAY-2015: 4.6.0.11 - -- Fixes possible NPE in searchEntries - -20-MAY-2015: 4.6.0.10 - -- Fixes move of parent after click on child connect icon on touch devices -- Fixes last result page in search -- Fixes possible NPE in Revision dialog -- Fixes detection of file types in URLs with parameters -- Catches decoding errors in extractGraphModelFromPng -- Fixes appIcon link for current file -- Fixes possible NPE in New dialog - -19-MAY-2015: 4.6.0.9 - -- Uses mxGraph 3.3.0.1 -- Fixes second click on 1:1 for chromeless mode with no page view -- Fixes flow for picking Dropbox files -- Adds paste here action in context menu -- Enables math typesetting in demo mode -- No longer sets initial mode for demo=1 - -18-MAY-2015: 4.6.0.8 - -- Uses mxGraph 3.3.0.1 beta 3 -- Fixes forward references in FF ESR -- Fixes moving and selection for parts and groups - -18-MAY-2015: 4.6.0.7 - -- Disables Dropbox in IE9 -- Uses mxGraph 3.3.0.1 beta 2 -- Keeps page title before loading file -- Fixes possible NPE in mxShape.destroyCanvas -- Fixes loading from URL in old versions of IE - -16-MAY-2015: 4.6.0.6 - -- Opens and imports all .vsdx, Gliffy and PNG+XML files -- Adds Ctrl+connect to disable copy of source -- Fixes composite drop connect offset - -14-MAY-2015: 4.6.0.5 - -- Adds timer for drop connect target switching -- Fixes handling of "new" action in draft mode -- Adds storage option in save and copy dialog -- Adds support for libraries in Chrome App -- Replaces "Ask later" with "Decide later" -- Fixes composite drop connect location -- Removes UML shapes with HTML labels -- Allows for compressed XML templates - -11-MAY-2015: 4.6.0.4 - -- Fixes offset for drop connect edge on stack child -- Adds support for undefined mode in save action -- Adds ask later option in splash screen -- Changes initial mode to undefined for url parameter -- Adds ask later option in create dialog -- Allows PNGs for create and url URL parameters -- Fixes handling of extra spaces in search box -- Fixes double click on disabled graphs - -08-MAY-2015: 4.6.0.3 - -- Uses mxGraph 3.3.0.1 beta 1 -- Improves Japanese and Danish translations -- Fixes DOM error when opening files in IE9 -- Fixes handling of libs parameter -- Improves metadata and image dialog -- Fixes accidental loss of meta data -- Fixes handling of clicks in layers dialog for Chrome dev channel - -05-MAY-2015: 4.6.0.2 - -- Fix for IE echo open - -04-MAY-2015: 4.6.0.1 - -- NPE fix for Gliffy import - -03-MAY-2015: 4.6.0.0 - -- First iteration of new .vsdx importer - -23-APR-2015: 4.5.0.5 - -- Uses mxGraph 3.3.0.0 -- Improves Japanese translations -- Adds rounded and glass format options for UML lifelines -- Fixes replace shape icon in older IE versions - -23-APR-2015: 4.5.0.4 - -- Adds global mxLoadSettings switch, Sidebar.prototype.searchFileUrl -- Fixes folding icons for embedded diagrams -- Adds orthogonalPerimeter for UML activation -- Adds UML sequence diagram building blocks -- Adds timer for replace shape and connect - -22-APR-2015: 4.5.0.3 - -- Limits revision history preview default scale -- Limits drive thumbnail sizes -- Adds timer-based outline connect -- Fixes accidental loss of modified shape data -- Fixes horizontal tree layout -- Fixes scaled rendering of UML frames -- Fixes shadow for UML destroy shape - -21-APR-2015: 4.5.0.2 - -- Fixes search UI for atlas theme -- Uses mxGraph 3.2.0.1 beta 7 -- Fixes search button state in offline mode - -21-APR-2015: 4.5.0.1 - -- Maps iconfinder search to global search - -21-APR-2015: 4.5.0.0 - -- Adds shape search -- Uses mxGraph 3.2.0.1 beta 6 -- Fixes click on paper size radio button labels -- Improves Japanese and Danish translations -- Fixes image action if no cells are selected -- Adds UML boundary, entity and control shapes and lifelines -- Uses data URIs for various images - -15-APR-2015: 4.4.1.5 - -- Adds plus click handling for child cells -- Fixes Russian, Danish and Spanish translations - -13-APR-2015: 4.4.1.4 - -- Fixes CORS for MathJax in embedded diagrams - -13-APR-2015: 4.4.1.3 - -- Uses mxGraph 3.2.0.1 beta 5 -- Fixes possible invisible buttons in more shapes dialog -- Enables local file saving for non-Safari browsers -- Scales data URIs above 1M (hold Ctrl to bypass) -- Uses local copy of MathJax -- Uses static JS for embedding with no custom shapes -- Fixes edges in revision dialog preview -- Adds support for composite cells -- Fixes conversion of some numeric text labels -- Fixes shadow for transparent ellipses in Firefox -- Adds handle for hexagon shape -- Fixes duplicate extension in create dialog -- Fixes make copy of HTML files for Dropbox and OneDrive - -10-APR-2015: 4.4.1.2 - -- Fixes NPE in OpenServlet - -09-APR-2015: 4.4.1.1 - -- Fixes caching of images for Google Drive thumbnails - -09-APR-2015: 4.4.1.0 - -- Uses mxGraph 3.2.0.1 beta 4 -- Fixes undo for text editing and insert labels -- Uses Ctrl+Shift+Z for redo on Mac -- Changes keyboard shortcut for autosize to Ctrl+Shift+Y -- Inserts new cell after editing shape in createShape -- Uses orthogonal edge style in activity and sequence diagrams -- Uses grid for lifline and UML frame handle -- Fixes roundtrip for numeric labels with 0 prefix -- Adds UML frame shape and handle, participant style for lifeline -- Disables recursive resize for UML lifelines -- Pre-selects first entry in revision dialog, shows full timestamp -- Ignores pointer events for transparent groups -- Fixes removing cells from selected parents -- Adds arc handle for rounded hexagon shape - -25-MAR-2015: 4.4.0.9 - -- Uses mxGraph 3.2.0.1 beta 3 -- Fixes selection state after enter and exit group -- Fixes update of unchanged geometries in stack layouts -- Renames navigation switch, moves to advanced menu - -18-MAR-2015: 4.4.0.8 - -- Uses mxGraph 3.2.0.1 beta 2 -- Fixes possible NPE in restore - -18-MAR-2015: 4.4.0.7 - -- Fixes format sidebar, buttons in embed mode -- Fixes canvas state for certain shapes - -17-MAR-2015: 4.4.0.6 - -- Fixes missing restore in mxgraph.aws2.sdks.nodejs - -14-MAR-2015: 4.4.0.5 - -- Uses mxGraph 3.2.0.1 beta 1 -- Hides inactive custom handles for edges if custom handle is active -- Adds header for SVG, declaration for XML exports - -13-MAR-2015: 4.4.0.4 - -- Uses mxGraph 3.2.0.0 -- Fixes HTML embed dialog size and preview in IE -- Adds arcSize handle -- Adds tooltips for plus and rotate handle -- Hides tooltip when editing starts - -12-MAR-2015: 4.4.0.3 - -- Uses mxGraph 3.2.0.0 beta 4 -- Fixes autosave, makes files read-only in chromeless mode -- Fixes embedded iframe height, timing problems in embed preview -- Fixes fit, resize and autosize for chromeless and embed mode -- Fixes error handling, adds console output for errors in embed -- Trims data for embedded diagrams to fix inflate in IE - -11-MAR-2015: 4.4.0.2 - -- Uses mxGraph 3.2.0.0 beta 3 -- Adds keyboard shortcuts for zoom actions -- Adds Or-, Sum- and LineEllipse in Advanced sidebar -- Fixes escape for all custom handles -- Fixes rounding for edge arrow sizes -- Makes flow layout settings available via cell style -- Sets interRankCellSpacing to 50 in flow layouts -- Shows/hides link hint if link changes -- Removes text format change for edit link action -- Fixes renaming of storage files and libraries -- Fixes conversion of newlines for formattedText action -- Fixes rounding for drop connect of groups with edges -- Fixes drop connect location for child cell in container -- Adds rounding in mxConnectionHandler.createTargetVertex -- Add rounding for offset after Shift+collapse/expand -- Fix duplicate action for cells and descendants - -10-MAR-2015: 4.4.0.1 - -- Uses mxGraph 3.2.0.0 beta 2 -- Selects parents after deleting cells -- Fixes delayed selection after folding -- Enables navigation in chromeless mode -- Uses Graph subclass in embedded diagrams -- Adds nav parameter for embedded diagrams -- Adds Ctrl+Enter for cloning cells "in-place" -- Adds autosave for change of navigation switch -- Fixes focus after stop editing with Ctrl+Enter -- Disables extending parents with stack layouts on add -- Shift+expand/collapse moves siblings cells (experimental) -- Expand/collapse resizes parent stack (press alt to disable) -- Collapsed swimlane in horizontal stack has vertical label -- Ignores previous width/height for collapse/expand in stack -- Fixes position of close icon in format panel for quirks, FF -- Changes key shortcuts for expand and collapse (Ctrl+Home/End) -- Changes key shortcuts for edit and enter group (Ctrl+Shift+Home/End) -- Adds key shortcuts for select next/previous/parent/child (Ctrl+Tab/Ctrl+Shift+Tab) - -07-MAR-2015: 4.4.0.0 - -- Uses mxGraph 3.2.0.0 beta 1 -- Fixes size handles for locked shape -- Collapsed swimlane in vertical stack has horizontal label -- Fixes nested container layout -- Adds swimlaneFillColor to copied styles -- Changes UML lifeline container state -- Adds new UML and ER elements in UML sidebar -- Fixes replace shape applies marker styles for edges -- Fixes drop on container from sidebar, stops editing -- Adds table elements in entity relation sidebar -- Adds alt-shift to only highlight drop target - -06-MAR-2015: 4.3.0.2 - -- Changes default edge style to entity relation in ER sidebar -- Adds table, row and 1 mandatory to 1 optional relation in ER sidebar -- Adds edit shape option in format menu and style panel -- Changes title and size of edit style dialog -- Adds create shape option in sidebar footer - -05-MAR-2015: 4.3.0.1 - -- Adds Options, Advanced, Custom shapes menu -- Adds control key to apply arrow handle to opposite side -- Fixes arrow handles to appear on same side -- Fixes custom shapes in embedded diagrams -- Uses mxGraph 3.1.3.1 beta 2 - -05-MAR-2015: 4.3.0.0 - -- Adds shapeeditor.html for implementing custom shapes -- Invokes turn (rotate 90 degrees) for click on rotate handle -- Adds experimental support for custom stencils via shape=stencil(value) -- Uses mxGraph 3.1.3.1 beta 1 - -04-MAR-2015: 4.2.3.2 - -- Fixes zoom buttons for chromeless mode -- Adds link to 10 tips video in help menu -- Adds and removes a number of styles in copy/paste style -- Fixes undefined not a function in autosave on error -- Shows 100 revisions in Dropbox revision history dialog -- Fixes handling of rev URL parameter in Dropbox client - -03-MAR-2015: 4.2.3.1 - -- Fixes modified flag update after save response -- Adds revision history dialog for Dropbox files -- Shows timestamp for same day, current revision in revision history -- Does no longer show layers/restore libraries in chromeless mode -- Adds hover style for images in sidebar titles -- Fixes wrapping in sidebar titles with icons -- Fixes copy paste of orphaned relative child cells -- Shows small spinner while updating Drive thumbnails -- Shows small spinner for autosave of libraries and files - -02-MAR-2015: 4.2.3.0 - -- Adds cells in libraries - -01-MAR-2015: 4.2.2.0 - -- Makes html extension default for cloud files -- Adds xhtml namespace in html files -- Fixes autosize icon in Arrange panel - -01-MAR-2015: 4.2.1.5 - -- Disabes OneDrive in demo and stealth mode -- Changes html files to redirect to edit URL - -28-FEB-2015: 4.2.1.2 - -- Fixes refresh of outline window after hiding -- Disables OneDrive on iOS -- Keeps html extension for open via drag and drop -- Fixes file extensions for download of html files -- Centers buttons in confirm dialog -- Adds immediate save for change from html to other extension - -27-FEB-2015: 4.2.1.1 - -- Fixes download as XML, embedded PNG with XML for html files -- Rename file to html creates revision and saves -- Edit in local HTML files creates copy -- Fixes possible NPE - -27-FEB-2015: 4.2.1.0 - -- Saves html files as embedded HTML with edit link - -27-FEB-2015: 4.2.0.1 - -- Fixes URL for windows live API - -27-FEB-2015: 4.2.0.0 - -- Adds snapping for custom arrow handles -- Fixes background image in image and PDF export -- Adds support for OneDrive -- Fixes extensions for library files -- Adds xml extension for files in Google Drive -- Adds snapping for new vertical/horizontal connections -- Adds shift to disable adding waypoints, custom handles -- Adds orange color style, uses in format panel -- Adds clibs URL parameter for custom libraries -- Fixes URL decoding for libs URL parameter -- Resets revision timer after create revision -- Simplified edge entries for general sidebar -- Fixes russian translations -- Uses mxGraph 3.1.2.3 beta 8 - -21-FEB-2015: 4.1.0.5 - -- Adds edge shape/style toolbar items -- Adds vertical text option -- Adds simple arrow shape -- Uses mxGraph 3.1.2.3 beta 7 - -20-FEB-2015: 4.1.0.4 - -- Changes thumbnail size in Google Drive to 480px -- Disables zoom with mousewheel if dialogs are open -- Adds zoom controls for chromeless mode -- Adds version in about dialog -- Adds preview in revision history dialog -- Uses mxGraph 3.1.2.3 beta 6 - -19-FEB-2015: 4.1.0.3 - -- Uses mxGraph 3.1.2.3 beta 5 -- Fixes possible NPE in arrow shape -- Adds preview dialog for revision history -- Adds preview in iframe embed dialog - -19-FEB-2015: 4.1.0.2 - -- Adds preview in embed dialog -- Fixes possible NPE in arrow shape -- Fixes invalid argument error for drag and drop of text in IE10 -- Uses mxGraph 3.1.2.3 beta 4 - -19-FEB-2015: 4.1.0.1 - -- Fixes NPE in embed dialog - -19-FEB-2015: 4.1.0.0 - -- Adds waypoints for arrows and links -- Adds glass effect to current style -- Fixes gradient color action state -- Adds arrows to advanced sidebar -- Adds connections to general sidebar -- Removes edge styles from toolbar -- Separates waypoints and connection in style panel -- Adds edge width option in arrange panel -- Changes replace existing diagram to open in this window -- Fixes connection points for tee and corner shape -- Fixes iconfinder search client for GitHub domain -- Adds thumb=0 URL parameter to disable thumbnails in Drive -- Adds autosize option in embed dialog for responsive pages -- Adds rounded support for single- and doubleArrow vertices -- Disables splitting edges with edges -- Removes waypoints for straight segments -- Inverts order of lineend/-start options in format panel -- Removes dos.xml -- Uses mxGraph 3.1.2.3 beta 3 - -13-FEB-2015: 4.0.1.2 - -- Safeguards Dropbox client -- Changes error reporting to 2x2.png - -13-FEB-2015: 4.0.1.1 - -- Fixes sidebar entry for device libraries after save -- Fixes object is not a function in File.autosave -- Makes creation of thumbnails safer -- Disables writingDirection for no selection - -13-FEB-2015: 4.0.1.0 - -- Fixes vertical center for default text size -- Fixes update of XML in Drive before unload -- Allows negative spacing values in format panel -- Uses webViewLink metadata in getPublicUrl -- Disables Google Drive for IE9 -- Adds thumbnails for Google Drive files -- Fixes possible localStorage undefined error -- Adds writing direction in menu and format panel -- Changes labels in feedback dialog and emails -- Fixes clipboard for selected cells and descendants -- Uses mxGraph 3.1.2.3 beta 2 - -10-FEB-2015: 4.0.0.1 - -- Fixes broken arrow shape - -10-FEB-2015: 4.0.0.0 - -- Adds library files for device, local storage and dropbox -- Fixes change of open libraries from different tabs -- Fixes summing junction and or shape in Flowcharts -- Adds drag and drop in URL and filename dialogs -- Adds drag and drop for opening files from URL -- Adds download option in library dialog -- Fixes ctrl/cmd removes focus for input -- Adds recursive rubberband selection -- Adds decimal values for angles -- Fixes z-index for subdialogs -- Adds open library from URL -- Fixes possible NPEs -- Uses mxGraph 3.1.2.3 beta 1 - -09-FEB-2015: 3.8.0.5 - -- Fixes drag and drop for Gliffy data and HTML markup -- Fixes possible arguments error in FF 13 -- Fixes possible value outside range error -- Fixes no click on DIV in KHTML -- Fixes possible NPEs -- Uses mxGraph 3.1.2.2 - -07-FEB-2015: 3.8.0.4 - -- Fixes gradient option with no fill color -- Adds rotation for edge labels -- Fixes default size for double click on background -- Uses mxGraph 3.1.2.2 beta 6 - -07-FEB-2015: 3.8.0.3 - -- Chrome App reads PNG+XML files -- Adds drag and drop for text editor -- Adds drag and drop for image and link dialogs -- Fixes NPE in older versions of Chrome -- Uses mxGraph 3.1.2.2 beta 5 - -05-FEB-2015: 3.8.0.2 - -- Fixes parsing of PNG+XML files in non-IE browsers -- Double click on background adds autosize textbox -- Fixes possible NPE for autosize -- Fixes possible NaN for stepper with empty input - -04-FEB-2015: 3.8.0.1 - -- Adds keyboard shortcut, buffer for autosize -- Fixes SVG export for some HTML entities in IE8 and IE11 -- Adds close button in format panel -- Moves dialogs on top of footer -- Uses mxGraph 3.1.2.2 beta 4 - -31-JAN-2015: 3.8.0.0 - -- Adds revision history dialog in Drive mode -- Fixes renaming of libraries -- Allows XML files to be loaded as libraries -- Fixes overridden mime type of libraries -- Fixes import of Google Drive files -- Improves open and import of .vsdx and Gliffy files -- Fixes possible document closed errors -- Uses mxGraph 3.1.2.2 beta 3 - -09-JAN-2015: 3.7.7.8 - -- Adds Rack/F5 stencils -- Adds photos=1 URL parameter -- Removes photos scopes in Drive -- Enlarges Text item in sidebar - -08-JAN-2015: 3.7.7.7 - -- Handles paste for Gliffy data -- Fixes size of pasted data URI images -- Fixes copy from Lucidchart in Firefox -- Fixes extensions for VDX and Gliffy files -- Shows spinner for asynchronous datatransfer - -08-JAN-2015: 3.7.7.6 - -- Fixes images in PDF export with math -- Handles VDX/Gliffy files via DnD -- Adds import for Gliffy files -- Handles paste from Lucidchart -- Adds edit style in format panel -- Uses mxGraph 3.1.2.2 beta 2 - -06-JAN-2015: 3.7.7.5 - -- Adds page scale in print dialog -- Fixes enter in dialogs for IE8-10 -- Fixes CSS for IE8 standards mode -- Fixes help menu for quirks, IE8, iOS -- Fixes font size control for IE8/11 -- Fixes public URL filename encoding -- Uses mxGraph 3.1.2.2 beta 1 - -04-JAN-2015: 3.7.7.4 - -- Fixes typo in splash screen - -04-JAN-2015: 3.7.7.3 - -- Normalizes page layout, adds rounding in PDF export -- Adds search box in help menu -- Adds support for data URI in image dialog and clipboard - -31-DEC-2014: 3.7.7.2 - -- Fixes toolbar button for format panel - -31-DEC-2014: 3.7.7.0 - -- Adds format panel -- Fixes scrollbars in IE8 standards -- Uses mxGraph 3.1.2.1 beta 13 - -22-DEC-2014: 3.7.6.2 - -- Removes dashed line style for guides -- Improves Russian translation -- Fixes use of iOS devices in Android sidebar -- Adds public Drive file URL in embed dialogs -- Uses mxGraph 3.1.2.1 beta 12 - -19-DEC-2014: 3.7.6.1 - -- Adds Enterprise Integration Patterns (EIP) shapes -- Adds stealth=1 URL parameter for offline mode -- Removes downloadify, adds save=local URL parameter -- Fixes text opacity in quirks, HTML with NO_FO -- EditorUi.showImageDialog invokes callback with null -- Uses mxGraph 3.1.2.1 beta 11 - -16-DEC-2014: 3.7.6.0 - -- Fixes possible artifacts for selection boxes -- Makes connection icons smaller -- Fixes drag and drop for image links -- Uses mxGraph 3.1.2.1 beta 10 - -12-DEC-2014: 3.7.5.10 - -- Fixes menu states in embed mode - -12-DEC-2014: 3.7.5.9 - -- Unifies code for copy/paste and drag and drop -- Removes mxClipboard.stringToCells -- Enables drag and drop of XML text for open and import -- Applies pending edits in save and apply action -- Assigns Ctrl+Shift+R to clearDefaultStyle -- Renames reset- to clearDefaultStyle, reset- to clearWaypoints -- Hides ungroup for containers and edges with labels -- Fixes size in background image dialog -- Removes menubar padding in compact, embed view -- Adds highlights for drop targets -- Removes page and local storage clipboard -- Fixes errors for strong security settings in FF -- Uses mxGraph 3.1.2.1 beta 9 - -09-DEC-2014: 3.7.5.8 - -- Fixes file extensions for PNG and HTML files -- Open XML, PNG and HTML files by dropping anywhere -- Removes iframe for opening local files (except IE) -- Adds alt key to import dropped files at origin -- Adds switch shape in Advanced sidebar -- Uses mxGraph 3.1.2.1 beta 8 - -09-DEC-2014: 3.7.5.7 - -- Fixes update of parent highlight if parent changes -- Fixes fuzzy images in image export, Docs add-on -- Uses mxGraph 3.1.2.1 beta 7 - -09-DEC-2014: 3.7.5.6 - -- Removes debugging output in image and PDF export -- Fixes timeout for chromeless mode with non public URLs -- Fixes error handling if realtime client API does not load -- Adds alt key to disable drop into groups for existing cells -- Uses mxGraph 3.1.2.1 beta 6 - -08-DEC-2014: 3.7.5.5 - -- Shows error if realtime API cannot be loaded -- Fixes segment edge handler -- Limits size for diagrams in feedback -- Fixes dragging existing cells into containers -- Adds disabled button states in CSS -- Fixes black JPG background for older diagrams -- Uses mxGraph 3.1.2.1 beta 5 - -05-DEC-2014: 3.7.5.4 - -- Fixes possible NPEs in SegmentConnector -- Fixes background color in cropped PDF exports -- Fixes PDF export size via export dialog -- Uses mxGraph 3.1.2.1 beta 4 - -04-DEC-2014: 3.7.5.3 - -- Fixes possible NPEs -- Uses mxGraph 3.1.2.1 beta 3 - -04-DEC-2014: 3.7.5.2 - -- Fixes possible text clipping in image and PDF export -- Replaces labels with previews in Format, Style menu -- Changes shortcuts for zoomin, zoomout to ctrl+plus/minus -- Fixes arrow directions in SegmentConnector -- Improves Chinese, Spanish translations -- Adds rounding in OrthConnector -- Uses mxGraph 3.1.2.1 beta 2 - -01-DEC-2014: 3.7.5.1 - -- Shows connect icon with control instead of shift, for selected cells -- Renames switchDirection action to turn -- Inverts constraints when turning edges -- Selects cells in groups when editing starts -- Fixes select all edges for edges with labels -- Fixes moving of edge labels in groups -- Adds shift key to keep connection points visible -- Keeps connection points visible while over cell -- Improves Chinese translation -- Uses mxGraph 3.1.2.1 beta 1 - -25-NOV-2014: 3.7.5.0 - -- Changes background color of sidebar to white -- Undo in text editor stops editing after last change -- Fixes focus rectangle for edge label editing in IE -- Fixes gradients with no fill color in VML -- Fixes autoscroll after click on scrollbar in IE11 -- Uses Helvetica Neue as default font in CSS -- Fixes ignored styles after style classnames -- Uses 240px sidebar, 46x46px for entries in atlas -- Adds nl2Br style to disable conversion of linefeeds -- Fixes HTML source mode editor size for edges -- Hides handles while editing cell labels -- Automatically removes empty edge labels -- Double click on edge adds new label -- Uses TLS for image and PDF export -- Uses mxGraph 3.1.2.0 beta 4 - -25-NOV-2014: 3.7.4.5 - -- Fixes italic rich text editing -- Fixes HTML source mode editor size -- Fixes possible NPE in mxEdgeSegmentHandler.start -- Fixes bug in mxCellEditor.resize for edge labels - -24-NOV-2014: 3.7.4.4 - -- Fixes typo in offline cache file - -24-NOV-2014: 3.7.4.3 - -- Adds word wrapping, formatted labels to various shapes -- Adds larger buttons, CSS styles for all buttons -- Click on background closes modal dialogs -- Makes color dialogs closable, checkbox labels clickable -- Adds special handle for fixed connection points -- Adds Vertical/Horizontal Flow Layout in advanced sidebar -- Fixes chromeless autoscale for multiple pages -- Fixes page count for cells at page borders -- Improves bounding box for in-place editor -- Improves hit detection on fixed connection points -- Fixes handling of special cases in segment edges -- Uses mxGraph 3.1.2.0 beta 3 - -17-NOV-2014: 3.7.4.2 - -- Adds word wrapping, formatted labels in various sidebar shapes -- Handles conversion to draw.io pro while file is open - -14-NOV-2014: 3.7.4.1 - -- Stored mode wins over preferred mode in draw.io pro -- Adds data store, activity markers and task types for BPMN -- Fixes loading for mxgraph.mockup.anchor shape -- Uses realtime for all Google Drive files -- Fixes center for custom handles with zoom -- Adds remote alerts for important notifications -- Keeps footer visible when modal dialogs are shown -- Clears points for drop and connect from sidebar -- Fixes PID valve shapes in offline + Chrome app -- Adds update style for edges from sidebar -- Adds shift to update style for containers -- Fixes offset after tree layout in container -- Fixes edge styles in tree layout shapes -- Adds elbow direction to current edge style -- Uses mxGraph 3.1.2.0 beta 2 - -10-NOV-2014: 3.7.4.0 - -- Fixes merging of 2 segments in mxEdgeSegmentHandler -- Fixes rendering, glass effect for ext shape -- Uses mxGraph 3.1.2.0 beta 1 - -07-NOV-2014: 3.7.3.6 - -- Fixes perimeter of (Call) Conversation shape in BPMN sidebar -- Fixes edge style toolbar always updates current style -- Fixes current text style, colors for text shape -- Fixes vertical offset for empty initial label -- Fixes current edge style for shape/edgeStyle -- Uses mxGraph 3.1.1.1 beta 3 - -06-NOV-2014: 3.7.3.5 - -- Uses mxGraph 3.1.1.1 beta 2 -- Adds Curly Bracket in General, Parallel Marker in BPMN sidebar -- Adds Corner, Tee, Vertical/Horizontal Tree in Advanced sidebar -- Merges tilt and reverseEdge into switchDirection -- Fixes ID attributes in SVG for URLs with brackets -- Replaces alt-drag from sidebar with refresh icon -- Alt-/shift-drag from sidebar disables actions -- Adds formatted text state for new connections -- Moves collapsible item to Navigation submenu -- Shows focus rectangle for edge label editing -- Makes formatted text default for all cells -- Rearranges general shapes based on usage -- Hides custom handles for locked cells -- Adds resizing for rich text editing -- Adds reset default style menu item -- Removes Text & Images sidebar - -01-NOV-2014: 3.7.3.4 - -- Fixes image and PDF export for math typesetting (beta) -- Fixes tolerance check in mxPopupMenuHandler for touch events -- Uses mxGraph 3.1.1.1 beta 1 -- Disables MathJax context menu - -29-OCT-2014: 3.7.3.3 - -- Fixes dblclick on edge handles in quirks mode -- Merges intersecting waypoints into single waypoint -- Adds virtual waypoints in straight edges -- Single click on plus button duplicates cell -- Double click on waypoint removes it -- Uses mxGraph 3.1.0.2 beta 3 - -28-OCT-2014: 3.7.3.2 - -- Uses mxGraph 3.1.0.2 beta 3 -- Fixes offset for drop targets in containers -- Fixes relative geometries for edges in sidebar -- Highlights parent group for selected child vertex -- Centers handle shape in custom handles -- Fixes vertical offset for text editing on edges - -27-OCT-2014: 3.7.3.1 - -- Uses mxGraph 3.1.0.2 beta 2 -- Adds curved, straight format menu item -- Sets current edge style, markers regardless of selection -- Adds support for margin style in ext shape -- Fixes label bounds for shapes with double borders -- Replaces some shapes in ER with standard shapes -- Adds %today%, %filename% variables in p1 plugin -- Fixes rhombus perimeter for "has" shapes in ER -- Fixes outline connect, edge handles in IE8 standards -- Fixes focus handling, size for dropdown menus in IE -- Adds alt-shift to disable connect to outline -- Fixes connections sidebar for libs URL param - -22-OCT-2014: 3.7.3.0 - -- Adds bootstrap sidebar -- Uses mxGraph 3.1.0.2 beta 1 -- Improves error handling and authorization flow -- Handles escape in color dialogs -- Change to edge style no longer resets label positions -- Improves drop handling for edges, groups from sidebar -- Removes deprecation warnings for use of nodeValue -- Adds support for rounded style in various shapes -- Adds Required Interface shape in UML sidebar - -09-OCT-2014: 3.7.2.6 - -- Fixes link to Docs add-on -- Uses mxGraph 3.1.0.1 - -09-OCT-2014: 3.7.2.5 - -- Fixes grid size handling after document properties dialog -- Adds spacing for drop target arrows -- Removes rounded from initial edge style -- Adds setAsDefaultStyle action - -08-OCT-2014: 3.7.2.4 - -- Fixes NPE in chromeless mode - -08-OCT-2014: 3.7.2.3 - -- Fixes copy-/pasteStyle for value none -- Adds reverse edge action -- Adds title in feedback form -- Fixes gradient toolbar item - -08-OCT-2014: 3.7.2.2 - -- Fixes link shape for different stroke widths -- Adds text toolbar state for current selection -- Adds Youtube videos via insert link -- Fixes z-index for Google picker -- Adds Format, Dotted and Plain menu items -- Improves email check, status message for feedback form -- Removes scrollbar position, scale from files -- Adds rounded to current edge style -- Restores connection sidebar -- Uses mxGraph 3.1.0.1 beta 3 - -07-OCT-2014: 3.7.2.1 - -- Removes connection palette -- Uses groups for compound shapes -- Fixes possible undefined label in edges after edit link -- Resets waypoints, label if edge style is changed -- Cleanup edge style options from menu, toolbar -- Fixes copyStyle, global style, alt-click in sidebar -- Fixes arrow drop geometries for relative targets -- Maintains parent for duplicated cells -- Uses mxGraph 3.1.0.1 beta 2 - -06-OCT-2014: 3.7.2.0 - -- Adds drop target arrows for drag from sidebar -- Stores current scale and scrollbar positions -- Remove setDefaultEdge function -- Adds current style for edges -- Uses mxGraph 3.1.0.1 beta 1 -- Adds Feedback in Help menu -- Fixes Text, Position menu - -01-OCT-2014: 3.7.1.4 - -- Uses mxGraph 3.1.0.0 beta 5 - -29-SEP-2014: 3.7.1.3 - -- Uses mxGraph 3.1.0.0 beta 4 - -24-SEP-2014: 3.7.1.2 - -- Enables target="_blank" in sanitized HTML -- Uses mxGraph 3.1.0.0 beta 3 - -22-SEP-2014: 3.7.1.1 - -- Uses mxGraph 3.1.0.0 beta 2 - -22-SEP-2014: 3.7.1.0 - -- Uses mxGraph 3.1.0.0 beta 1 - -21-SEP-2014: 3.7.0.9 - -- Improves sanitization for HTML labels -- Uses mxGraph 3.0.1.2 beta 5 - -20-SEP-2014: 3.7.0.8 - -- Adds sanitization for HTML labels -- Uses mxGraph 3.0.1.2 beta 4 - -20-SEP-2014: 3.7.0.7 - -- Uses mxGraph 3.0.1.2 beta 3 - -19-SEP-2014: 3.7.0.6 - -- Uses mxGraph 3.0.1.2 beta 2 - -12-SEP-2014: 3.7.0.5 - -- Uses mxGraph 3.0.1.2 beta 1 -- Uses GAE SDK 1.9.11 -- Fixes s param for embedded markers -- Adds dynamic loading for markers - -11-SEP-2014: 3.7.0.4 - -- Removes Ports and Flows from sidebar -- Uses mxGraph 3.0.1.1 - -10-SEP-2014: 3.7.0.3 - -- Uses mxGraph 3.0.1.0 -- Fixes image size in advanced export dialog if page not visible - -08-SEP-2014: 3.7.0.2 - -- Adds workaround for invalid file descriptors in Dropbox - -27-AUG-2014: 3.7.0.1 - -- Fixes bugs in realtime diagrams -- Fixes recursive resize of relative child cells -- Uses mxGraph 3.0.0.0 beta 2 - -26-AUG-2014: 3.7.0.0 - -- Uses mxGraph 3.0.0.0 beta 1 - -05-AUG-2014: 3.6.1.5.2 - -- Another footer change - -05-AUG-2014: 3.6.1.5.1 - -- Footer change - -04-AUG-2014: 3.6.1.5 - -- Fixes SVG export in IE -- Uses mxGraph 2.9.0.2 beta 1 - -31-JUL-2014: 3.6.1.4 - -- Fixes transparent gradients in FF -- Fixes redirect to HTTPS in Firefox -- Uses document size for PDF export in page view - -31-JUL-2014: 3.6.1.3 - -- Uses mxGraph 2.9.0.1 -- Adds ff=1 URL parameter for bug hunting -- Removes empty hash tag for local files -- Removes empty hash tag in initial state - -29-JUL-2014: 3.6.1.2 - -- Makes refresh of new local file with template blank -- Fixes handling of blocked popups in Chrome -- Uses Universal Analytics -- Adds blogger icon in footer -- Fixes possible NPE in mxEdgeHandler.mouseMove -- Uses mxGraph 2.9.0.1 beta 1 - -28-JUL-2014: 3.6.1.1 - -- Fixes arrange, distribute -- Fixes embedded diagrams in all IE versions -- Enables paste, drop for graph model snippets -- Fixes edit geometry to work with multiple vertices - -25-JUL-2014: 3.6.1.0 - -- Uses mxGraph 2.9 -- Adds collapsible action - -23-JUL-2014: 3.6.0.8 - -- Uses mxGraph 2.9 beta 5 -- Resets mode after Google sign out - -20-JUL-2014: 3.6.0.7 - -- Replaces connect with connection points option -- Fixes resize for current root - -19-JUL-2014: 3.6.0.6 - -- Fixes overlapping wrapped labels in IE8, quirks -- Fixes rotated resize - -19-JUL-2014: 3.6.0.5 - -- Fixes automatic layouts in sidebar previews -- Adds part style for moving cells as parts of groups -- Improves Entity shape in Entity Relation sidebar -- Imports diagram files with no extensions via drag and drop -- Adds part style for moving cells as parts of other cells -- Adds waypoints to automatic line in sidebar -- Fixes resize preview for changed parents -- Shows connector handles on containers -- Uses mxGraph 2.9 beta 4 - -16-JUL-2014: 3.6.0.4 - -- Fixes resize preview inside groups -- Adds radial tree layout - -16-JUL-2014: 3.6.0.3 - -- Fixes scaled resize rounding errors -- Fixes creation of scaled connections -- Fixes ui parameter in redirected URLs -- Uses mxGraph 2.9 beta 3 - -14-JUL-2014: 3.6.0.2 - -- Removes ui=null in redirected URLs -- Shift cursor moves by gridSize -- Uses white preview for black background -- Fixes distribute action -- Fixes initial undo in embed mode -- Resizes pool in stack layouts - -11-JUL-2014: 3.6.0.1 - -- Fixes toggle selection on touch devices with mouse -- Empty postMessage creates new file in embed mode -- Disables custom dashed edges in outline shapes -- Uses Ctrl-Click for context menu only on Macs -- Makes hit detection for new edges consistent -- Fixes alignment of cloned source terminals -- Uses mxGraph 2.9 beta 2 - -11-JUL-2014: 3.6.0.0 - -- Adds Azure shapes -- Uses mxGraph 2.9 beta 1 -- Fixes edge preview to use actual shape -- Uses image for edge label handles -- Avoids overlap of label and edge handles -- Adds snap to waypoints for edges handles -- Adds connect to outline for all shapes -- Adds alt for connecting to anywhere in a shape -- Adds shift for horizontal/vertical edge segments -- Adds Options, Advanced, Theme menu -- Uses Ctrl-Click for context menu in all browsers -- Remove fixedPoints style, adds points style -- Fixes special handle for new arrow shapes - -26-JUN-2014: 3.5.3.5 - -- Uses mxGraph 2.8.2.1 beta 3 -- Fixes minor bugs - -24-JUN-2014: 3.5.3.4 - -- Hides special handles for disabled graphs -- Fixes minor bugs for realtime collaboration -- Fixes cell order for native copy paste -- Truncates existing files in Chrome App -- Fixes clipboard state after ctrl+x (cut) -- Adds import all file types for Google Drive -- Fixes move cursor for entries in library dialog - -21-JUN-2014: 3.5.3.3 - -- Adds shortcut for edit geometry, initial focus -- Fixes grid size for moving cells in scaled graphs -- Adds grid size in document properties dialog -- Does no longer scroll to cells after move -- Fixes minor bug in a floorplan shape - -18-JUN-2014: 3.5.3.2 - -- Adds new shapes in general, advanced -- Shift-cursor key moves by 10 pixels -- Uses mxGraph 2.8.2.1 beta 2 -- Fixes initial scroll position on iOS -- Fixes font family, size combo width in quirks mode -- Fixes document properties in standalone mode for iOS - -16-JUN-2014: 3.5.3.1 - -- Adds explore plugin -- Add social icons in footer -- Adds Embed, Google Docs menu item -- Adds ready, ui=atlas URL parameters -- Adds alt-drop from sidebar to override shape -- Uses automatic force constant for organic layout -- Uses mxGraph 2.8.2.1 beta 1 - -11-JUN-2014: 3.5.3.0 - -- Uses OS clipboard for cut, copy and paste shortcuts -- Adds shortcuts for edit-, copy- and paste style -- Makes layer visible after insert of new cell -- Uses mxGraph 2.8.2.0 - -09-JUN-2014: 3.5.2.0 - -- Style changes trigger layout -- Control enter stops editing -- Uses mxGraph 2.8.1.1 beta 1 -- Uses last font, alignment for new cells -- Adds validation for filenames - -02-JUN-2014: 3.5.1.2 - -- Adds SVG transformation to image export via XML - -02-JUN-2014: 3.5.1.1 - -- Uses mxGraph 2.8.1.0 -- Shows layers dialog for files with layers -- Fixes links for transparent shapes in SVG export -- Adds import from URL option - -27-MAY-2014: 3.5.1.0 - -- Adds remove attribute option in metadata dialog -- Adds larger open dialog -- Fixes grid clipping bug in webkit -- Fixes handle states after model change -- Fixes hyperlinks in SVG export -- Adds hexagon perimeter for hexagon shape -- Uses mxGraph 2.8.0.0 beta 2 - -14-MAY-2014: 3.5.0.0 - -- Adds tooltips for links -- Adds rotation in edit geometry dialog -- Unifies mobile and desktop UI -- Adds reset waypoints -- Uses mxGraph 2.7.0.1 beta 2 - -12-MAY-2014: 3.4.0.8 - -- Adds client app mode -- Adds edit as new embed option -- Adds support for compressed data in embed, client mode - -12-MAY-2014: 3.4.0.7 - -- Adds immediate editing -- Uses mxGraph 2.7.0.1 beta - -11-MAY-2014: 3.4.0.6 - -- Calls resetGraphView after loading realtime model -- Adds placeholder in link dialog -- Reads HTML embedded files -- Uses mxGraph 2.6.0.1 beta 5 - -10-MAY-2014: 3.4.0.5 - -- Adds rounding to move, resize, rotate -- Compacts About dialog -- Adds offline menu item -- Adds open from template URL -- Adds open from URL option -- Shows connect icon if shift is pressed -- Adds tooltips for rotate, resize and move -- Adds edit tooltip action -- Improves metadata dialog -- Uses mxGraph 2.6.0.1 beta 4 - -08-MAY-2014: 3.4.0.4 - -- Fixes zoom, footer in chromeless mode -- Adds image item in toolbar -- Uses mxGraph 2.6.0.1 beta 3 - -07-MAY-2014: 3.4.0.3 - -- Fixes pinch to zoom on iOS -- Uses mxGraph 2.6.0.1 beta 2 - -06-MAY-2014: 3.4.0.2 - -- Uses mxGraph 2.6.0.1 beta -- Fixes handling of empty files -- Fixes new library function - -06-MAY-2014: 3.4.0.1 - -- Adds custom font sizes in toolbar -- Fixes pinch gesture in iOS -- Fixes offline mode in Firefox - -05-MAY-2014: 3.4.0.0 - -- Uses mxGraph 2.6.0.0 -- Moves outline into separate dialog -- Adds document properties dialog -- Uses alt-wheel for zoom (shift for horizontal scroll) -- Uses right mouse button for panning -- Adds scaled page buffer with scrollbars -- Adds initial centering of diagram -- Adds local storage in IE8 quirks mode -- Enables drag and drop in library dialog -- Uses touch UI in Firefox only on Windows -- Adds toggle state for grid/guides buttons -- Adds license option in images sidebar - -17-APR-2014: 3.3.0.0 - -- Adds custom libraries for Drive files -- Adds persistence for visible libraries -- Hides labels in sidebar - -15-APR-2014: 3.2.1.5 - -- Fixes autosave for grid and page view changes -- Uses mxGraph 2.5.1.2 beta - -13-APR-2014: 3.2.1.4 - -- Uses mxGraph 2.5.1.1 -- Fixes import offset for new layers - -11-APR-2014: 3.2.1.3 - -- Adds pools with lanes and stack child layouts -- Splits general to text, connection and advanced sidebars -- Fixes import for local and storage files -- Adds stackLayout childLayout, stackHorizontal style -- Fixes import XML for multiple layers -- Adds grid/guides toolbar button -- Fixes dialog event handling on iPad - -11-APR-2014: 3.2.1.2 - -- Adds mime type filter in Google picker -- Removes extension for Google Chrome - -10-APR-2014: 3.2.1.1 - -- Adds recursive resize for groups -- Uses mxGraph 2.5.1.1 beta - -10-APR-2014: 3.2.1.0 - -- Replaces Open with Open from in file menu -- Adds click handling for split bars -- Removes folding icon in XML image export -- Adds file extensions for Google Drive files -- Adds embed iframe option -- Adds import from menu - -07-APR-2014: 3.2.0.5 - -- Adds Options, Advanced, Open from menu -- Removes old storage item after rename -- Disables user scaling on mobile devices - -02-APR-2014: 3.2.0.4 - -- Adds viewbox to imported SVG files for FF, IE - -02-APR-2014: 3.2.0.3 - -- Handles s=* parameter in embed servlet -- Fixes Edit Image, Insert Image dialogs -- Fixes Edit Link, Insert Link dialogs -- Uses mxGraph 2.5.1.0 - -29-MAR-2014: 3.2.0.2 - -- Handles enter key in text input dialog -- Uses "diagram name" for Google files -- Transparent use of zlib compression - -28-MAR-2014: 3.2.0.1 - -- Adds Options, Advanced, Export option - -27-MAR-2014: 3.2.0.0 - -- Uses viewer in Google gadget for embedding -- Adds chrome-less read-only viewer mode - -26-MAR-2014: 3.1.0.2 - -- Adds storage logo in storage dialog -- Adds help link in splash dialog -- Adds distribute menu from core example - -24-MAR-2014: 3.1.0.1 - -- Uses layers dialog from core example - -21-MAR-2014: 3.1.0.0 - -- Removes profile.email scope in Google Drive -- Shows local storage option on desktop -- Adds XML+PNG file format (open and save) -- Changes order of cancel, approval buttons in dialogs -- Fixes insert Google Drive image (adds photo scopes) -- Fixes special link action, adds photo, album links -- Fixes colors for logos and app icons -- Adds Google Sites dialog -- Adds chrome=0 URL parameter -- Adds advanced menu in options -- Improves Google Gadget servlet -- Removes mockups from default sidebars - -14-MAR-2014: 3.0.0.6 - -- Reduces time between revisions to 0.5h -- Adds consistency checks in realtime -- Uses mxGraph 2.5.0.3 - -13-MAR-2014: 3.0.0.5 - -- Adds floorplan shapes -- Adds upload (offline), makeCopy actions -- Adds support for embed mode in new tab - -10-MAR-2014: 3.0.0.4 - -- Disables iconfinder sidebar in offline mode -- Adds cache status to Chrome/iOS in offline mode - -09-MAR-2014: 3.0.0.3 - -- Disables print function in iOS standalone mode -- Fixes general.xml shapes in offline mode -- Adds mime-type for cache.manifest in web.xml -- Uses text context menu for text downloads in iOS -- Disables binary downloads in iOS standalone mode - -07-MAR-2014: 3.0.0.2 - -- Adds mobile web app tags -- Adds demo=1 URL parameter -- Adds new templates with categories -- Adds /app shortcut for offline mode -- Adds online features in offline mode for Chrome -- Warns if Google Drive is blocked - -03-MAR-2014: 3.0.0.1 - -- Adds apple app icons to offline cache -- Disables device storage for offline mode on IOS -- Adds storage=browser/device URL params -- Fixes alternate FO text for bitmap exports - -28-FEB-2014: 3.0.0.0 - -- Adds support for offline mode - -27-FEB-2014: 2.9.0.0 - -- Replaces RawDeflate.deflate with Zlib -- Adds lazy loading for MathJax -- Uses mxGraph 2.5.0.2 -- Adds shared clipboard -- Adds drop handler for images, text and XML files -- Disables Dropbox/Drive in embed mode by default -- Adds global mxClientOnLoad callback in embed -- Adds edit geometry, copy/paste style actions -- Uses mxGraph 2.5.0.1 - -17-FEB-2014: 2.8.0.0 - -- Fixes possible NPE in DriveRealtime.highlight, App.defineCustomObjects -- Uses mxGraph 2.5.0.0 beta -- Adds HTML5 doctype in HTML export - -10-FEB-2014: 2.7.0.8 - -- Uses mxGraph 2.4.1.0 -- Adds support for background images - -31-JAN-2014: 2.7.0.7 - -- Embed does no longer use eval -- Tests zlib for file compression -- Uses mxGraph 2.4.0.4 - -29-JAN-2014: 2.7.0.6 - -- Adds create, title URL parameters - -28-JAN-2014: 2.7.0.5 - -- Fixes embedded diagrams with math -- Adds Mathematical typesetting option - -27-JAN-2014: 2.7.0.4 - -- Adds Android shapes for embedded diagrams -- Cleanup embed dialog - -27-JAN-2014: 2.7.0.3 - -- Uses mxGraph 2.4.0.4 beta -- Handles invalid characters in input files -- Adds Google Gadget URL in embed dialog -- Adds GoogleSitesServlet at /gadget.xml - -22-JAN-2014: 2.7.0.2 - -- Uses mxGraph 2.4.0.3 -- Creates revision every hour and on load -- Adds checks for realtime connection -- Adds userAgent to file format -- Adds Android shapes - -17-JAN-2014: 2.7.0.1 - -- Uses mxGraph 2.4.0.2 -- Fixes table editing for FF/IE quirks -- Fixes decoding error in Firefox -- Adds retry option for timeout errors -- Fixes title word wrap for long filenames -- Adds math parameter for MathJax support (experimental) -- Adds table support in HTML editor - -08-JAN-2014: 2.7.0.0 - -- Adds custom HTML in-place editor -- Adds Arrange, Insert and Format, Style menus -- Uses mxGraph 2.4.0.0 -- Adds splash screen -- Adds Google Doc style header -- Rewrites remote storage integrations - -11-DEC-2013: 2.6.4.1 - -- Add option to lock resize aspect using shift key - -04-DEC-2013: 2.6.4.0 - -- Fixes PID path issues - -27-NOV-2013: 2.6.3.0/1 - -- Add iOS 7 stencils -- Fixes Drive RT copying issues - -19-NOV-2013: 2.6.2.0/1 - -- Improvements to PID stencils - -18-NOV-2013: 2.6.1.0 - -- Improvements to rack stencils - -11-NOV-2013: 2.6.0.2 - -- Add same domain test plugin -- Minor changes to rack stencils - -11-NOV-2013: 2.6.0.1 - -- Updates mxClient.js to 2.3.0.2 - -09-NOV-2013: 2.6.0.0 - -- Adds Dropbox autosave -- Uses image export v3 (PhantomJS) -- Uses world icon for language menu - -17-OCT-2013: 2.5.2.1 - -- Corrects path error in mockups.misc.statusbar - -16-OCT-2013: 2.5.2.0 - -- Merges vdx importer back into base -- Updates mxClient.js to 2.2.0.3 -- Fixes CSS float for IE - -10-OCT-2013: 2.5.1.3 - -- Adds CORS headers for JGraph CMS -- Adds new Vdxio - -08-OCT-2013: 2.5.1.2 - -- Added embed mode -- Restores legacy clipart pathnames -- Updates mxclient.js 2.2.0.2 - -23-SEP-2013: 2.5.1.1 - -- Reverted scope change - -19-SEP-2013: 2.5.1.0 - -- Uses mxGraph 2.2.0.0 -- Reduces access to Google user profile info. - -09-SEP-2013: 2.5.0.0 - -- Forces refresh when Drive save fails -- Uses mxGraph 2.1.1.2 -- Adds Dropbox support on db.draw.io - -31-JUL-2013: 2.4.1.0 - -- Uses mxGraph 2.1.0.7 -- Adds menu item to toggle chat window -- Fixes handling of special filenames for export -- Adds support for XML user objects in Realtime files -- Adds button to hide footer -- Changes collaborative chat to list -- Moves autosaving to DriveRealTime -- Adds clipboard, https URL parameters -- Shows filename in document title - -24-JUN-2013: 2.4.0.0 - -- Fixes real-time re-auth issue -- Updates touch support code - -20-JUN-2013: 2.3.2.2 - -- Fixes reader file excludes - -31-MAY-2013: 2.3.2.1 - -- Cosmetic adjustments - -30-MAY-2013: 2.3.2.0 - -- Adds plugins, plugin dialogs - -22-MAY-2013: 2.3.1.0 - -- Fixes vertical label export offset bug -- Fixes MT bugs in .vsdx import - -11-MAY-2013: 2.3.0.1 - -- Minor changes to language menu - -07-MAY-2013: 2.3.0.0 - -- Makes labels of mockup, ER shapes editable -- Replaces width and height checks with area check in export -- Adds language configuration in local storage -- Ignores "dot" files in local storage open dialog -- Fixes handling of nested default edges -- Adds live preview for vertex resizing, edge handling -- Adds process, document, parallelograph and trapezoid shapes -- Adds layers, language menu and resources - -12-APR-2013: 2.2.2.5 - -- Adds debugging - -11-APR-2013: 2.2.2.4 - -- Minor bug fixes - -10-APR-2013: 2.2.2.3 - -- Fixes shape deletion whilst dragging connection issue - -09-APR-2013: 2.2.2.2 - -- Adds shape locking, Mac backspace delete and a changelog entry that has multiple items on one line and is more than 80 characters - -07-APR-2013: 2.2.2.1 - -- Adds rack stencils -- Fix for Safari save problem - -04-APR-2013: 2.2.2.0 - -- Fix for Firefox 20 save problem - -27-MAR-2013: 2.2.1.0 - -- Google Drive workflow changes - -23-MAR-2013: 2.2.0.3 - -- Moves ER markers to side to avoid dynamic load issues - -19-MAR-2013: 2.2.0.2 - -- Adds File->Rename for Google Drive file - -18-MAR-2013: 2.2.0.0 - -- Adds mockup stencils - -28-FEB-2013: 2.1.1.2 - -- Uses latest mxGraph -- Switch XML stencil labels back on -- Enables word wrapping for some basic shapes -- Improves Drive authentication after timeout - -16-FEB-2013: 2.1.1.1 - -- Uses latest mxGraph - -08-FEB-2013: 2.1.1.0 - -- Added iOS and ER stencils - -06-FEB-2013: 2.1.0.2 - -- Patch for IE 9 Google Drive communications -- Added Cisco stencils - -05-FEB-2013: 2.1.0.1 - -- Fixes 7 second repeating Google auth dialog bug - -04-FEB-2013: 2.1.0.0 - -- Removes old sharing -- Fixes relative images in embedded diagrams -- Uses App Engne SDK 1.7.4 -- Uses mxGraph 2.0.0.0 - -16-JAN-2013: 2.0.1.7 - -- Uses mxGraph 1.10.4.2 -- Adds curved format menu item -- Uses extended image picker if logged into Google -- Removes devhost URL parameter - -20-DEC-2012: 2.0.1.6 - -- Fixes issue with Google Drive files retaining file name - -19-DEC-2012: 2.0.1.5 - -- Enabled .vdx open/importing (alpha) - -19-DEC-2012: 2.0.1.4 - -- Shows spinner while loading url URL parameter -- Fixes alignment of SVG sidebar entries in IE -- Fixes flickering of sidebar entries in FF -- Adds spinner to minified diagramly - -18-DEC-2012: 2.0.1.3 - -- Uses mxGraph 1.10.4.1 -- Fixes handling of url URL parameter - -14-DEC-2012: 2.0.1.2 - -- Removes plugins feature - -13-DEC-2012: 2.0.1.1 - -- Adds security alert when loading plugins -- Fixes clipping bug - -12-DEC-2012: 2.0.1.0 - -- Fixes session expiry issue in Google Drive - -12-DEC-2012: 2.0.0.4 - -- Adds plugins via URL parameter -- Fixes toolbar size -- Fixes browser context menu -- Adds colors in color dialog - -06-DEC-2012: 2.0.0.1 - -- Switches to using JS client library for Google Drive calls - -08-NOV-2012: 1.6.10.0 - -- Adds Korean, Japanese, Russian, Bosnian and Ukrainian translations -- Switches to port 80 for image export server - -31-OCT-2012: 1.6.9.2 - -- Removed data nucleus libraries -- Adds rawdeflate, base64 to diagramly.min.js -- Changes color of social icons to gray - -30-OCT-2012: 1.6.9.1 - -- Removes social JS -- Uses mxGraph 1.10.4.0 - -25-OCT-2012: 1.6.9.0 - -- Adds Google Drive install scope -- Updates libraries used for Google Drive integration - -19-OCT-2012: 1.6.8.1 - -- Fixes handling of file positioning in Drive - -16-OCT-2012: 1.6.8.0 - -- Fixes using multiple accounts with Google Drive - -24-SEP-2012: 1.6.7.4 - -- Changes diagram.ly to draw.io in dialogs -- Minor formatting fixes - -21-SEP-2012: 1.6.7.3 - -- Add session tidying cron job for GAE - -14-SEP-2012: 1.6.7.2 - -- Removes Facebook footer in IE6 -- Adds layout options via grapheditor example - -13-SEP-2012: 1.6.7.1 - -- Fixes use of custom handlers with closure compiler - -31-AUG-2012: 1.6.7.0 - -- Uses mxGraph 1.10.3.1 -- Fixes background color for SVG export in quirks mode -- Enables Google image picker on Mac/iPad -- Adds GitHub menu item in help menu - -29-AUG-2012: 1.6.1.9 - -- Fixes GitHub deployment Ant task -- Fixes German Facebook button (changes to English) -- Fixes touch-based panning for embedded diagrams -- Uses mxGraph 1.10.3.0 - -22-AUG-2012: 1.6.1.8 - -- Adds Facebook like button - -21-AUG-2012: 1.6.1.7 - -- Adds compression for embedded diagrams - -02-AUG-2012: 1.6.1.6 - -- Adds fixes for null user objects in link handling - -02-AUG-2012: 1.6.1.5 - -- Adds transparency option for PNG image, SVG export - -01-AUG-2012: 1.6.1.4 - -- Fixes for filepicker.io - -31-JUL-2012: 1.6.1.3 - -- Uses mxClient.js, mxgraph-core.jar 1.10.2.1 -- Adds social, analytics URL parameters -- Adds persistent stats for embedding -- Adds save for filepicker.io - -28-JUL-2012: 1.6.1.2 - -- Fixes embedding of international characters and newlines -- Changes image export URL to http://shr.diagramly.com:8080/ImageExport/export -- Changes lastModified header creation in EmbedServlet -- Fixes infinite recursion in Embed.js for convertValueToString - -27-JUL-2012: 1.6.1.1 - -- Adds support for hyperlinks - -23-JUL-2012: 1.6.1.0 - -- Uses mxGraph 1.10.2.0 -- Adds embed feature -- Fixes errors if tinyMCE not available -- Fixes syntax of dash patterns in shapes - -30-JUN-2012: 1.6.0.2 - -- Renames Init.js to Devel.js -- Adds link to "Did you know..." topic in help menu -- Removes previous diagramly link from help menu -- Adds url URL parameter handling in client -- Adds proxy servlet for loading files from URLs - -22-JUN-2012: 1.6.0.1 - -- Fixes minor bugs -- Uses mxGraph 1.10.1.3 - -19-JUN-2012: 1.6.0.0 - -- Adds real-time collaboration (experimental) -- Adds handling for App not installed error in Google Drive -- Uses mxGraph 1.10.1.2 - -06-JUN-2012: 1.5.0.7 - -- Uses mxGraph 1.10.1.1 -- Adds workaround for focus repaint bug in IE9/10 -- Adds fixed connection points for custom shapes -- Adds closure compiler pre-deploy step -- Puts all JS in a single minified file - -25-MAY-2012: 1.5.0.6 - -- Uses static mxGraph 1.10.0.6 -- Fixes "Save as" in Google Drive -- Fixes page view, default pageScale -- Adds new items in file menu -- Adds options in file edit dialog -- Adds import action -- Adds extra handle for custom shapes - -17-MAY-2012: 1.5.0.5 - -- Removes .mxe default file extension -- Changes mime type to application/mxe - -16-MAY-2012: 1.5.0.4 - -- Uses current protocol to load picker API -- Adds CSS3 transitions for hover styles -- Simplifies tinyMCE toolbar, uses main toolbar (non-IE only) -- Adds "Use as default edge" action - -14-MAY-2012: 1.5.0.3 - -- Adds border in export dialog -- Adds resources for Google Drive integration -- Fixes use of optional flash for saving in savedialog - -05-MAY-2012: 1.5.0.2 - -- Handles requests for non-existent script versions -- Handles DeadlineExceededException - -03-MAY-2012: 1.5.0.1 - -- Adds XML export option -- Fixes unicode character encoding in files -- Adds status information for Google Drive operations -- Adds spinner during Google Drive operations -- Adds reconnect for lost session after save -- Fixes illegal state exceptions in servlet - -02-MAY-2012: 1.5.0.0 - -- Adds working Google Drive integration - -01-MAY-2012: 1.4.0.7 - -- Adds initial Google Drive integration - -29-APR-2012: 1.4.0.6 - -- Uses mxGraph 1.10.0.2 -- Adds BPMN shapes, markers and custom edges -- Fixes Downloadify integration - -19-APR-2012: 1.4.0.5 - -- Adds editFile action from grapheditor -- Adds fromText action and ParseDialog -- Adds forum link in help menu -- Adds more shapes sidebar entry -- Adds iconfinder library - -29-MAR-2012: 1.4.0.2 - -- Adds UML library -- Adds experimental group selection -- Adds persistent UI settings -- Adds templates, file, new... menu -- Adds HTML labels with editing -- Adds aa URL parameter to disable anti aliasing -- Adds PDF export via backend with limited HTML support -- Adds context menu in sidebar -- Various fixes from bug reports, disabled Flash - -16-FEB-2012: 1.4.0.0 - -- First release of new codebase - -24-JAN-2012: 1.3.2.2 - -- Fixes for brix - -13-JAN-2012: 1.3.2.0 - -- Enables .vdx importing for GAE - -25-DEC-2011: 1.3.1.2 - -- Avoids passing null version parameter onto primary client server - -23-DEC-2011: 1.3.1.1 - -- Adds AWS icons -- Updates core to 1.8.0.6 - -15-DEC-2011: 1.3.1.0 - -- Adds local SVG generation -- Adds client servlet for cached mxclient delivery - -17-NOV-2011: 1.3.0.1 - -- mxgraph.mockuop.form_elements stencil set name typo corrected - -11-NOV-2011: 1.3.0.0 - -- Addition stencil based shapes added - -14-JUL-2011: 1.2.0.1 - -- Collaboration integrated - -11-JUL-2011: 1.2.0.0 - -- Deployed to GAE by default - -24-JUN-2011: 1.1.1.0 - -- Sprited toolbar icons -- Local open for file API enabled browsers - -26-MAY-2011: 1.1.0.0 - -- Switches most content to static serving -- New iPad interface - -12-MAY-2011: 1.0.11.0 - -- Adds simplified default stylesheet for new diagrams -- Adds UI for transparency, user-defined colors and images - -02-MAY-2011: 1.0.10.1 - -- Additional static gzipping of resources -- Adds lazy loading of images in collapsed palettes - -05-APR-2011: 1.0.10.0 - -- Fixes string escaping parse errors on open -- Add show/parse XML options - -17-MAR-2011: 1.0.9.0 - -- Adds duplicate context menu item, ctrl-D -- Adds optional navigation context menu -- Adds optional navigation icons -- Adds support for cursor keys -- Adds guides - -05-MAR-2011: 1.0.8.0 - -- Adds connect preview -- Adds splash screens -- Adds import of VDX files - -02-MAR-2011: 1.0.7.0 - -- Uses connect image for new connections -- Changes save, export, print, open dialogs -- Changes toolbars, toolbar icons - -25-FEB-2011: 1.0.6.0 - -- Corrected title to diagram.ly -- Adds sv, pl, ar translations. - -15-FEB-2011: 1.0.5.0 - -- Adds footer -- i18n for library text. -- Adds it, fr, zh, pt, ja, es, ru, nl translations. - -02-FEB-2011: 1.0.4.0 - -- Uses mxGraph core 1.5.1.5 to fix IE 6 dialogs. - -30-JAN-2011: 1.0.3.1 - -- Sets svgCanvas variable of ExportServlet to null on each request. Previously, - making an SVG export request then broke the other image exports. - -30-JAN-2011: 1.0.3.0 - -- Fixes forwarding to site using Firefox diff --git a/DIALOG_STYLE_GUIDE.md b/DIALOG_STYLE_GUIDE.md deleted file mode 100644 index 70a7c41..0000000 --- a/DIALOG_STYLE_GUIDE.md +++ /dev/null @@ -1,172 +0,0 @@ -# Dialog Style Guide - -All new dialogs using `CustomDialog` should follow these patterns for consistent -appearance. CSS classes are defined in `/src/main/webapp/styles/grapheditor.css`. - -## Auto-Height - -Pass `null` for the height parameter in `showDialog()`. The `Dialog` constructor -measures `elt.scrollHeight` after the element is in the DOM and sizes the dialog -automatically. Never compute dialog heights manually with `height += N` increments. - -```javascript -var dlg = new CustomDialog(this, div, okFn, null, mxResources.get('export'), helpLink); -this.showDialog(dlg.container, 360, null, true, true); -``` - -## Spacing (handled by CustomDialog and Dialog) - -- **Dialog padding**: 24px on all sides (`.geDialog` CSS) -- **Buttons margin-top**: 34px (default in `CustomDialog`) -- **Container padding-bottom**: 10px (`CustomDialog` adds this to prevent margin collapse) -- **Dialog chrome**: `Dialog` constructor adds 48px to both width and height for padding - -These produce equal visual spacing above (34px) and below (34px = 10px + 24px) the -button row. Do not override these values in individual dialogs. - -## Sections (`geDialogSection`) - -Group related controls in rounded section containers: - -```javascript -var section = document.createElement('div'); -section.className = 'geDialogSection'; -// ... add rows to section ... -div.appendChild(section); -``` - -## Form Rows (`geDialogFormRow`) - -Use for label + input pairs (text fields, selects): - -```javascript -var row = document.createElement('div'); -row.className = 'geDialogFormRow'; - -var lbl = document.createElement('span'); -lbl.className = 'geDialogFormLabel'; -mxUtils.write(lbl, mxResources.get('zoom') + ':'); -row.appendChild(lbl); - -var input = document.createElement('input'); -input.setAttribute('type', 'text'); -row.appendChild(input); - -section.appendChild(row); -``` - -## Checkbox Rows (`geDialogCheckRow`) - -Use `addCheckbox` with `useCheckRow=true` (9th parameter) for consistent checkbox -layout with flex alignment: - -```javascript -var cb = this.addCheckbox(section, mxResources.get('shadow'), - false, null, null, null, null, null, true); -``` - -For indented sub-options (e.g., "Layers" under "Lightbox"): - -```javascript -cb.checkRow.style.paddingLeft = '24px'; -``` - -## Inline Fields (`geDialogInlineFields` / `geDialogInlineField`) - -Use for side-by-side fields (e.g., Width + Height): - -```javascript -var row = document.createElement('div'); -row.className = 'geDialogInlineFields'; - -var field = document.createElement('div'); -field.className = 'geDialogInlineField'; -// ... add label + input to field ... -row.appendChild(field); - -section.appendChild(row); -``` - -## Dialog Title - -Center-aligned `

` with standard margins: - -```javascript -var hd = document.createElement('h3'); -mxUtils.write(hd, title); -hd.style.cssText = 'width:100%;text-align:center;margin-top:0px;margin-bottom:10px'; -div.appendChild(hd); -``` - -## Edit Button (Lightbox Dialogs) - -Use `addEditButton` which creates a `geDialogCheckRow` with an indented select: - -```javascript -var editSection = this.addEditButton(optSection, lightbox); -var edit = editSection.getEditInput(); -``` - -## Alignment of Dialog Items - -Radio/checkbox rows (`geDialogCheckRow`) use flexbox with `align-items: center`. -When a radio button is followed by an input or select, both elements sit after -the radio's right margin (8px). The CSS rule `.geDialogCheckRow select` adds -`margin-left: 8px` by default — this is intended for selects that follow a -checkbox + label. When a select sits directly after a radio button (same position -as a text input in another row), reset the margin so both align: - -```javascript -pageSelect.style.marginLeft = '0'; -``` - -For `geDialogFormRow`, the `geDialogFormLabel` span provides a fixed-width left -column (`min-width: 100px`). All inputs and selects use `flex: 1` to fill the -remaining space. If labels in a specific dialog are longer (e.g. German -translations), increase the dialog width rather than overriding `min-width` on -individual labels. - -## Non-Resizable Dialogs - -Most dialogs are non-resizable. Do **not** pass a `minSize` parameter to -`showDialog()` — this avoids adding a resize handler. Use `null` for the height -parameter so the dialog auto-sizes to its content: - -```javascript -this.showDialog(dlg.container, 360, null, true, true); -``` - -Only pass `minSize` (a `mxRectangle`) when the dialog content is scrollable or -has a variable-height area that benefits from user resizing. - -## Button Spacing (Manual Buttons) - -When using `CustomDialog`, button spacing is handled automatically (34px -margin-top, 10px padding-bottom on the content wrapper). When building buttons -manually (e.g., dialogs with custom button arrangements like Reset + Open), -replicate the same values: - -```javascript -// Content wrapper needs padding-bottom to prevent margin collapse -div.style.paddingBottom = '10px'; - -// Button row -var btns = document.createElement('div'); -btns.style.marginTop = '34px'; -btns.style.textAlign = 'right'; -``` - -This produces equal visual spacing above (34px) and below (34px = 10px + 24px -dialog padding) the button row, matching `CustomDialog` exactly. Never use -other margin values (16px, 20px, 30px) for button rows. - -## Dark Mode - -All CSS uses `light-dark()` for color values. Never hardcode colors in JS — use -the CSS classes which handle both modes automatically. - -## Testing Dialogs - -Use `?dev=1&ui=classic` to keep the menubar visible regardless of window size. -Test with both single-page and multi-page diagrams, as extra controls appear -when multiple pages exist. diff --git a/LICENSE b/LICENSE deleted file mode 100644 index f49a4e1..0000000 --- a/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file diff --git a/README.md b/README.md index 2342bd8..025b595 100644 --- a/README.md +++ b/README.md @@ -1,51 +1,44 @@ -# draw.io +# Planer -## About +Planer is a fast, local-first visual planning workspace for Windows. It combines a focused desktop shell with the Excalidraw canvas engine and a project model that supports multiple boards. -draw.io is a configurable diagramming and whiteboarding application, jointly owned and developed by draw.io Ltd (previously named JGraph) and draw.io AG. We also run a production deployment at https://app.diagrams.net. +## Stack -## License - -The source code in this repository is licensed under the [Apache License 2.0](LICENSE). - -The icon sets, stencil libraries, and diagram templates are provided under the following terms: - -> The icon sets and stencil libraries included in this software, and any derivatives thereof (including conversions to other formats, traced reproductions, substantially similar visual representations, or AI-generated images created using these icons as reference or training input), may not be used as software assets in, distributed for use with, or incorporated into Atlassian products or products distributed through the Atlassian marketplace or plugin ecosystem, without explicit written permission. -> -> This restriction does not apply to end-user diagram output (such as exported images or documents) created using this software. - -Some icons are originally defined by third-party copyright holders; we have verified that all original licenses permit use in this project. Additional third-party JavaScript libraries are included, all with licenses compatible with Apache 2.0 (no GPL or AGPL). +- Tauri v2 +- React + TypeScript + Vite +- `@excalidraw/excalidraw` +- Zustand +- Lucide -We make no copyright claim on diagrams you create with this software. +## Development -## Contributions +```bash +npm install +npm run dev +``` -We do not accept pull requests. The project is developed entirely by the core team. +Quality gates: -## Scope +```bash +npm run lint +npm run build +``` -draw.io is a diagramming and whiteboarding application. It is not an SVG editor. SVG export is intended for embedding in web pages, not for editing in other tools. +Desktop development requires the Rust and Tauri system prerequisites: -Note that draw.io does not support real-time collaborative editing in this version, currently. +```bash +npm run tauri dev +``` -For issues or questions about the editor in any draw.io product, the issue tracker and discussions here are a good starting point. +## Branches -## Running +- `develop` is the source of truth for active development. +- `main` contains stable releases only. -Options for running draw.io: +## Product scope -- Fork this repository and [publish to GitHub Pages](https://help.github.com/categories/github-pages-basics/) for a [fully functional editor](https://jgraph.github.io/drawio/src/main/webapp/index.html) (without integrations) -- Use the [official Docker image](https://github.com/jgraph/docker-drawio) -- Download [draw.io Desktop](https://get.diagrams.net) +See [`docs/PLANER_PRODUCT_BLUEPRINT_V1.md`](docs/PLANER_PRODUCT_BLUEPRINT_V1.md). -Packaged .war files are available on the [releases page](https://github.com/jgraph/draw.io/releases). - -## Supported Browsers - -Chrome 123+, Firefox 120+, Safari 17.5+, Opera 109+, Edge 123+, WebView Android 137+, Safari iOS 18.5+. - -## Trademark - -draw.io is a registered EU trademark (#018062448). +## License -Do not use the draw.io name or logo in ways that suggest affiliation with, endorsement by, or sponsorship by draw.io. Do not use draw.io logos for your own business, product, project, domain, or social media presence. Do not modify the draw.io logos. Use of draw.io trademarks requires prior written permission. \ No newline at end of file +Planer licensing is pending a project-owner decision. Legacy draw.io licensing and citation files were removed with the legacy scaffold. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 2862079..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,14 +0,0 @@ -# Security Policy - -## Supported Versions - -We only accept security reports against the latest version in this repo or the version deployed to app.diagrams.net, if different. - -## Reporting a Vulnerability - -Report at https://huntr.dev/bounties/disclose?target=https%3A%2F%2Fgithub.com%2Fjgraph%2Fdrawio&validSearch=true. There is a bug bounty program in place there. - -## Out of scope - -- Issues relating to the PlantUML integration. -- Issues relating to the www.drawio.com web site. \ No newline at end of file diff --git a/VERSION b/VERSION deleted file mode 100644 index bf8ffbd..0000000 --- a/VERSION +++ /dev/null @@ -1 +0,0 @@ -30.0.4 \ No newline at end of file diff --git a/app-icon.svg b/app-icon.svg new file mode 100644 index 0000000..c07e8e4 --- /dev/null +++ b/app-icon.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/docs/PLANER_PRODUCT_BLUEPRINT_V1.md b/docs/PLANER_PRODUCT_BLUEPRINT_V1.md index 994c24c..fd87bf8 100644 --- a/docs/PLANER_PRODUCT_BLUEPRINT_V1.md +++ b/docs/PLANER_PRODUCT_BLUEPRINT_V1.md @@ -1,6 +1,6 @@ # Planer — Product Blueprint V1 -Status: Planning / Pre-Prototype +Status: Implementation / V0.1 baseline Branch: `develop` ## 1. Product Definition @@ -388,11 +388,11 @@ The implementation must follow these gates: 2. Architecture Blueprint — complete 3. Information Architecture — complete 4. Wireframe — complete -5. Visual Mockup / Prototype — pending approval -6. AppShell implementation — blocked until prototype approval -7. Data + project/board CRUD -8. Local persistence -9. Canvas integration +5. Visual Mockup / Prototype — approved +6. AppShell implementation — complete for V0.1 baseline +7. Data + project/board CRUD — baseline complete +8. Local persistence — IndexedDB baseline complete +9. Canvas integration — baseline complete 10. Export 11. CI / build stabilization 12. Packaging @@ -408,17 +408,10 @@ No production implementation should begin before the visual prototype is explici ## 17. Next Required Step -Create the Visual Mockup / Prototype for the following two screens only: +Stabilize the V0.1 desktop baseline on Windows: -1. Home / Project Launcher -2. Main Workspace / Canvas - -The prototype must validate: -- information hierarchy -- canvas dominance -- toolbar density -- board navigation -- contextual properties -- overall visual language - -No feature expansion before this prototype is approved. +1. Run the Windows installer workflow. +2. Install and launch the generated package. +3. Verify project creation, board CRUD, autosave, reopen, and canvas editing. +4. Confirm `.planer` and `.excalidraw` exports. +5. Address only baseline defects before adding advanced planning features. diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..957a2c2 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,25 @@ +import js from "@eslint/js"; +import globals from "globals"; +import reactHooks from "eslint-plugin-react-hooks"; +import reactRefresh from "eslint-plugin-react-refresh"; +import tseslint from "typescript-eslint"; + +export default tseslint.config( + { ignores: ["dist", "src-tauri/target"] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ["**/*.{ts,tsx}"], + languageOptions: { + ecmaVersion: 2022, + globals: globals.browser + }, + plugins: { + "react-hooks": reactHooks, + "react-refresh": reactRefresh + }, + rules: { + ...reactHooks.configs.recommended.rules, + "react-refresh/only-export-components": ["warn", { "allowConstantExport": true }] + } + } +); diff --git a/index.html b/index.html new file mode 100644 index 0000000..39109af --- /dev/null +++ b/index.html @@ -0,0 +1,14 @@ + + + + + + + + Planer + + +
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..44f2b6d --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6334 @@ +{ + "name": "planer", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "planer", + "version": "0.1.0", + "dependencies": { + "@excalidraw/excalidraw": "0.18.1", + "@tauri-apps/api": "2.11.1", + "lucide-react": "1.30.0", + "react": "18.3.1", + "react-dom": "18.3.1", + "zustand": "5.0.14" + }, + "devDependencies": { + "@eslint/js": "9.39.1", + "@tauri-apps/cli": "2.11.4", + "@types/node": "24.10.1", + "@types/react": "18.3.31", + "@types/react-dom": "18.3.7", + "@vitejs/plugin-react": "5.1.4", + "eslint": "9.39.1", + "eslint-plugin-react-hooks": "7.0.1", + "eslint-plugin-react-refresh": "0.4.26", + "globals": "17.3.0", + "typescript": "5.9.3", + "typescript-eslint": "8.56.1", + "vite": "7.3.6" + } + }, + "node_modules/@antfu/install-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", + "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", + "license": "MIT", + "dependencies": { + "package-manager-detector": "^1.3.0", + "tinyexec": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz", + "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.8", + "@babel/types": "^7.29.8", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz", + "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.8" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz", + "integrity": "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz", + "integrity": "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", + "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz", + "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.8", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.8", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.8", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@braintree/sanitize-url": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.2.tgz", + "integrity": "sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg==", + "license": "MIT" + }, + "node_modules/@chevrotain/cst-dts-gen": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", + "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/gast": "11.0.3", + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/@chevrotain/gast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", + "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/@chevrotain/regexp-to-ast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz", + "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==", + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/types": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", + "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==", + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/utils": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", + "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==", + "license": "Apache-2.0" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", + "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", + "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", + "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", + "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", + "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", + "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", + "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", + "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", + "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", + "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", + "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", + "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", + "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", + "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", + "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", + "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", + "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", + "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", + "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", + "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", + "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", + "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", + "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", + "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", + "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", + "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.10.1.tgz", + "integrity": "sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.5" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.6.tgz", + "integrity": "sha512-l2Ul9PrHsPCKcEY/ac7VgFj9D80C7S68sOKc618SyHDPK36s1XcFebXY0iTzUVn4Yq+YbwvSnDmCz9yxjX+QrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.14.0", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.3.0", + "minimatch": "^3.1.5", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", + "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@excalidraw/excalidraw": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/@excalidraw/excalidraw/-/excalidraw-0.18.1.tgz", + "integrity": "sha512-6i5Gt7IDTOH//qa0Z315Ly5iVRhjWpu2whrlQFqkuwrkKUWgRsMk0P5qdE7bpyDpai7jeLeWYkyj1eVAfni1lw==", + "license": "MIT", + "dependencies": { + "@braintree/sanitize-url": "6.0.2", + "@excalidraw/laser-pointer": "1.3.1", + "@excalidraw/mermaid-to-excalidraw": "2.2.2", + "@excalidraw/random-username": "1.1.0", + "@radix-ui/react-popover": "1.1.6", + "@radix-ui/react-tabs": "1.0.2", + "browser-fs-access": "0.29.1", + "canvas-roundrect-polyfill": "0.0.1", + "clsx": "1.1.1", + "cross-env": "7.0.3", + "es6-promise-pool": "2.5.0", + "fractional-indexing": "3.2.0", + "fuzzy": "0.1.3", + "image-blob-reduce": "3.0.1", + "jotai": "2.11.0", + "jotai-scope": "0.7.2", + "lodash.debounce": "4.0.8", + "lodash.throttle": "4.1.1", + "nanoid": "3.3.3", + "open-color": "1.9.1", + "pako": "2.0.3", + "perfect-freehand": "1.2.0", + "pica": "7.1.1", + "png-chunk-text": "1.0.0", + "png-chunks-encode": "1.0.0", + "png-chunks-extract": "1.0.0", + "points-on-curve": "1.0.1", + "pwacompat": "2.0.17", + "roughjs": "4.6.4", + "sass": "1.51.0", + "tunnel-rat": "0.1.2" + }, + "peerDependencies": { + "react": "^17.0.2 || ^18.2.0 || ^19.0.0", + "react-dom": "^17.0.2 || ^18.2.0 || ^19.0.0" + } + }, + "node_modules/@excalidraw/excalidraw/node_modules/@radix-ui/primitive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.0.tgz", + "integrity": "sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@excalidraw/excalidraw/node_modules/@radix-ui/react-tabs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.0.2.tgz", + "integrity": "sha512-gOUwh+HbjCuL0UCo8kZ+kdUEG8QtpdO4sMQduJ34ZEz0r4922g9REOBM+vIsfwtGxSug4Yb1msJMJYN2Bk8TpQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-direction": "1.0.0", + "@radix-ui/react-id": "1.0.0", + "@radix-ui/react-presence": "1.0.0", + "@radix-ui/react-primitive": "1.0.1", + "@radix-ui/react-roving-focus": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@excalidraw/excalidraw/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-context": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz", + "integrity": "sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@excalidraw/excalidraw/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-direction": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.0.tgz", + "integrity": "sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@excalidraw/excalidraw/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.0.tgz", + "integrity": "sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@excalidraw/excalidraw/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-id/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz", + "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@excalidraw/excalidraw/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-presence": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz", + "integrity": "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-use-layout-effect": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@excalidraw/excalidraw/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-presence/node_modules/@radix-ui/react-compose-refs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz", + "integrity": "sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@excalidraw/excalidraw/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-presence/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz", + "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@excalidraw/excalidraw/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz", + "integrity": "sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.1" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@excalidraw/excalidraw/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.1.tgz", + "integrity": "sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@excalidraw/excalidraw/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/node_modules/@radix-ui/react-compose-refs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz", + "integrity": "sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@excalidraw/excalidraw/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-roving-focus": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.2.tgz", + "integrity": "sha512-HLK+CqD/8pN6GfJm3U+cqpqhSKYAWiOJDe+A+8MfxBnOue39QEeMa43csUn2CXCHQT0/mewh1LrrG4tfkM9DMA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-collection": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-direction": "1.0.0", + "@radix-ui/react-id": "1.0.0", + "@radix-ui/react-primitive": "1.0.1", + "@radix-ui/react-use-callback-ref": "1.0.0", + "@radix-ui/react-use-controllable-state": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@excalidraw/excalidraw/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.1.tgz", + "integrity": "sha512-uuiFbs+YCKjn3X1DTSx9G7BHApu4GHbi3kgiwsnFUbOKCrwejAJv4eE4Vc8C0Oaxt9T0aV4ox0WCOdx+39Xo+g==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-primitive": "1.0.1", + "@radix-ui/react-slot": "1.0.1" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@excalidraw/excalidraw/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.1.tgz", + "integrity": "sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@excalidraw/excalidraw/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-compose-refs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz", + "integrity": "sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@excalidraw/excalidraw/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz", + "integrity": "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@excalidraw/excalidraw/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.0.tgz", + "integrity": "sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@excalidraw/excalidraw/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-use-controllable-state/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz", + "integrity": "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@excalidraw/excalidraw/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "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/@excalidraw/excalidraw/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==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@excalidraw/excalidraw/node_modules/immutable": { + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.9.tgz", + "integrity": "sha512-ObHy4YN7ycwZOUCLI1/6svfyAFu7vL8RhAvVu/bh/RZW9EPlOyDaQ9jDQWCtdqzaXUjgXZCW1migtHE7YI7UGQ==", + "license": "MIT" + }, + "node_modules/@excalidraw/excalidraw/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@excalidraw/excalidraw/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/@excalidraw/excalidraw/node_modules/sass": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.51.0.tgz", + "integrity": "sha512-haGdpTgywJTvHC2b91GSq+clTKGbtkkZmVAb82jZQN/wTy6qs8DdFm2lhEQbEwrY0QDRgSQ3xDurqM977C3noA==", + "license": "MIT", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@excalidraw/laser-pointer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@excalidraw/laser-pointer/-/laser-pointer-1.3.1.tgz", + "integrity": "sha512-psA1z1N2qeAfsORdXc9JmD2y4CmDwmuMRxnNdJHZexIcPwaNEyIpNcelw+QkL9rz9tosaN9krXuKaRqYpRAR6g==", + "license": "MIT" + }, + "node_modules/@excalidraw/markdown-to-text": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@excalidraw/markdown-to-text/-/markdown-to-text-0.1.2.tgz", + "integrity": "sha512-1nDXBNAojfi3oSFwJswKREkFm5wrSjqay81QlyRv2pkITG/XYB5v+oChENVBQLcxQwX4IUATWvXM5BcaNhPiIg==", + "license": "MIT" + }, + "node_modules/@excalidraw/mermaid-to-excalidraw": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@excalidraw/mermaid-to-excalidraw/-/mermaid-to-excalidraw-2.2.2.tgz", + "integrity": "sha512-5VKQq5CdRocC82vOIUpQ5ufJOVV9FpBTdHGA+ULqazeIVV+cr299877omQCibsdS3Bpitz2fsnTwnIXEmLVDSg==", + "license": "MIT", + "dependencies": { + "@excalidraw/markdown-to-text": "0.1.2", + "@mermaid-js/parser": "^0.6.3", + "mermaid": "^11.12.1", + "nanoid": "4.0.2" + } + }, + "node_modules/@excalidraw/mermaid-to-excalidraw/node_modules/nanoid": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", + "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^14 || ^16 || >=18" + } + }, + "node_modules/@excalidraw/random-username": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@excalidraw/random-username/-/random-username-1.1.0.tgz", + "integrity": "sha512-nULYsQxkWHnbmHvcs+efMkJ4/9TtvNyFeLyHdeGxW0zHs6P+jYVqcRff9A6Vq9w9JXeDRnRh2VKvTtS19GW2qA==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.8.0.tgz", + "integrity": "sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.12" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.8.0.tgz", + "integrity": "sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.8.0", + "@floating-ui/utils": "^0.2.12" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.9.tgz", + "integrity": "sha512-JDjEFGCpImxDCA7JJKviA0M9+RtmJdj0m/NVU5IMgBK+AmZouAQQ7/+2GLH0GXXY0YMw9oXPB8hKdbPYg5QLYg==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.8.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.12.tgz", + "integrity": "sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==", + "license": "MIT" + }, + "node_modules/@humanfs/core": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", + "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/types": "^0.15.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz", + "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.2", + "@humanfs/types": "^0.15.0", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/types": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz", + "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "license": "MIT" + }, + "node_modules/@iconify/utils": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.1.4.tgz", + "integrity": "sha512-b1S7B1k9ohZ+iNTi2ATxbRYG9fTrJmUT0rc46bvVnNxqNRGW7dyo/vRREwyniI5IRN2RSJHDcm+s3BjWrSAjHw==", + "license": "MIT", + "dependencies": { + "@antfu/install-pkg": "^1.1.0", + "@iconify/types": "^2.0.0", + "import-meta-resolve": "^4.2.0" + } + }, + "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/@mermaid-js/parser": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.6.3.tgz", + "integrity": "sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA==", + "license": "MIT", + "dependencies": { + "langium": "3.3.1" + } + }, + "node_modules/@napi-rs/lzma-linux-x64-gnu": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz", + "integrity": "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^22.20 || ^24.12 || >=25" + } + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.1.tgz", + "integrity": "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.2.tgz", + "integrity": "sha512-G+KcpzXHq24iH0uGG/pF8LyzpFJYGD4RfLjCIBfGdSLXvjLHST31RUiRVrupIBMvIppMgSzQ6l66iAxl03tdlg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.1.tgz", + "integrity": "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz", + "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.5.tgz", + "integrity": "sha512-E4TywXY6UsXNRhFrECa5HAvE5/4BFcGyfTyK36gP+pAW1ed7UTK4vKwdr53gAJYwqbfCWC6ATvJa3J3R/9+Qrg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-escape-keydown": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", + "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.2.tgz", + "integrity": "sha512-zxwE80FCU7lcXUGWkdt6XpTTCKPitG1XKOwViTxHVKIJhZl9MvIl2dVHeZENCWD9+EdWv05wlaEkRXUykU27RA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", + "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.6.tgz", + "integrity": "sha512-NQouW0x4/GnkFJ/pRqsIS3rM/k97VzKnVb2jB7Gq7VEGPy5g7uNV1ykySFt7eWSp3i2uSGFwaJcvIRJBAHmmFg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.5", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.2", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.2", + "@radix-ui/react-portal": "1.1.4", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-slot": "1.1.2", + "@radix-ui/react-use-controllable-state": "1.1.0", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.2.tgz", + "integrity": "sha512-Rvqc3nOpwseCyj/rgjlJDYAgyfw7OC1tTkKn2ivhaMGcYt8FSBlahHOZak2i3QwkRXUXgGgzeEe2RuqeEHuHgA==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-rect": "1.1.0", + "@radix-ui/react-use-size": "1.1.0", + "@radix-ui/rect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.4.tgz", + "integrity": "sha512-sn2O9k1rPFYVyKd5LAJfo96JlSGVFpa1fS6UuBJfrZadudiw5tAmru+n1x7aMRQ84qDM71Zh1+SzK5QwU0tJfA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.2.tgz", + "integrity": "sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.2.tgz", + "integrity": "sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.2.tgz", + "integrity": "sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", + "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", + "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/rect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", + "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", + "license": "MIT" + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.3.tgz", + "integrity": "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.4.tgz", + "integrity": "sha512-RrPokAb7dmbxFoeO3TloqHyOjgye8RkBhSqmp4aJMIex4c9r46ZstPnleDQOq1t46VOVjwIuwNogIqbodV1Vvg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.4.tgz", + "integrity": "sha512-JKuJc+pnpks2pjy7L/N3v/cAkZxYlnmuZoD840ldbMI5KDbC4iO9NKwPKYdjYFCMAIIlBzYSFHxIJVYzRo2/8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.4.tgz", + "integrity": "sha512-krw5uS2STmvJ02x0uTXHbqQNuz+9eZ1iw+qXk9dmW2gvV4jV7O2hEoOnuhFrpOPiel1mBFtqbxYZZtC46hXLOw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.4.tgz", + "integrity": "sha512-wsTxtgApb4PrOsNJIm0FZ1h3WvCC+k9uxLJ4ad75hgoS4NiRes2SoJFlDAyMwiUY8IssDqGcHbXuN0sx1tfF1A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.4.tgz", + "integrity": "sha512-GUOnQlyZe3yAXhWOtOMsn5Qkrv5E5mZXa0thbARWi5Ei2szlVXJFQhddZ4HbAzh8q92w5twp+CQvs/eFanz9YQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.4.tgz", + "integrity": "sha512-/Y7f3QuxjzPKsjA/rfEDa3+0vXqyjmJ50Ln8dPpCmWkKTrUoWHG1cWhTqaAMLob2m2nESWuC7yGrREz019Ztqg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.4.tgz", + "integrity": "sha512-81wiiX3v7aqy+T+bT61TJ78yJjRquqFFTTbAPt08imfQQzkPIW8t6aJbkTagtCCrXMNc9D66+geqlK7ydLPNqA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.4.tgz", + "integrity": "sha512-9kmDIvNZqdoHOBZgNtpTBeLWYO/LVipM3H/j62P8848/l/VPEQL6N3uxU9pvP1oZAsXyC2MEnFP3ovRjo7WYNQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.4.tgz", + "integrity": "sha512-CcnXHWnXg69g+DX5VWL3FHts3qMRN2uVEHX+BZvGLdd07/gXkn3ePjYtO1LDJvxkGKVHMclKBRa1QUTH+6toYQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.4.tgz", + "integrity": "sha512-iFOibiHnTRuhrWLlRsOQFdZJJIa7S8OwkneJr4ocALP16u5yk6lWLINFwhHaEqBFMsKDUZofLkGos7+CPzGB3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.4.tgz", + "integrity": "sha512-XnWYMI7euHlb5a871xPja+Gm7DRCFU+FGRrtS2sMq9N8FvqtpagUy6gD4YOemC5MRk9xbh8+jYMEJbigFQwsgA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.4.tgz", + "integrity": "sha512-qGDAlO0U8xedCcsdRm9oaoQY8DAx/QT7uIxJWhCdx0ceIWX783UC9QSYkdpzAe29wNiVfp24+bZdQmn49o45SQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.4.tgz", + "integrity": "sha512-ru4H6ezD7ysA5EiEK6qkkaEb4modH8CTej6kUy/gQi20u3kB3G7Zn8snXXkeJSCOFKG/rbPPtM/+9Wgas1961w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.4.tgz", + "integrity": "sha512-2W4MO5WQVJnbJaZdvDb9rhBDuFU1nKIepPFpJUBsTh2k1YY2g+ODViaWuyOAjQ5cOP7NvrvLzt3wvHOoiAvc7w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.4.tgz", + "integrity": "sha512-+fxjfuoAmVMCYV5QyjoIpu0cp5DOiOTeqYFk1AVaxGr+/ravWLX89XfQmptsoWcaVy/TGf2hexzbUOrCQIL1CQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.4.tgz", + "integrity": "sha512-jTn8JfHGL4djjFxPuM06LmNUJDsst2jeVlsd9OmIH6zc5sC9K6rIuO4YajXatLUpBmBKl6b35ro1QZocLi+tcA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.4.tgz", + "integrity": "sha512-oCJCJL4pXsoDcP2QZ+JVlPTIRc6266zsIaeJJsWImmF7HO0W8nb6HuSgZlMWxJwaPf8ehbSw8yo0EUw925hKsA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.4.tgz", + "integrity": "sha512-W69hukhZ3KKNRCaMIEzKvcFye42hh0FE1+YoYaf5+Ikacuftoco6yO/xouz0hc5d5W/s3yBro5jRiuEE/Q5vUw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.4.tgz", + "integrity": "sha512-qiXbGG2jkjXhzXpsFZSR2Xpb8DN/UaxYsbb/STbuR/6fpaDgRmmaq1B/LmtF2wQFOFOSsK2jdE0RZ3a0zHn4QA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.4.tgz", + "integrity": "sha512-nWeM//hxv8mIo6jD7Hu4o48DVmV9pbV6gsKaWU+4NFyqHoPKwrkRiZGLKUhOBk8qNmDmpwFtPKg80Bo/Tn4xiQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.4.tgz", + "integrity": "sha512-s62SQ/vgsRSvMwDkOEfTqfgASF0f26ZNaQuTA6Aok5lrikf89yI2W0gFHvZb2Jpgc6N8JnOKZgCK2iciO3CsxQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.4.tgz", + "integrity": "sha512-J6wGf8TVGbXJq+HH+ttTvrcfNKPbuZecV6KT1B8I18BC5IURUh5kl4Yl5OEP5eFIUoI5BWxCsyYMhFsDx8kekw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.4.tgz", + "integrity": "sha512-zmfrQd/0wu6oJs8Vq8KwY/YtsKSsLtKe/HwAP4Wqy8LhWjeT55fHRAkOhYQ12wI3ayS4Tt12d5CDRD7N96SAYQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.4.tgz", + "integrity": "sha512-qPzHqdj9rfUD+w79dtE07zi/kFwKyCJqplp5K5ygeLTp7jLpAoc16OAH39HSmRC9UpozaecsleI8uAdEj6v2yw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.4.tgz", + "integrity": "sha512-zD6NdeWEByGE9QF9vCrlJ5YQB4oq9q91kPZS37Jwj5hOkvR1lTBSpsKhKDw4IJtbQ35LsTS1HD9DZYGKIshU1Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@tauri-apps/api": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.11.1.tgz", + "integrity": "sha512-M2FPuYND2m+wh5hfW9ZpSdxMPdEJovPBWwoHJmwUpysTYNHaOkVFN419m/K0LIgjb/7KU2vBgsUepJWugQCvAA==", + "license": "Apache-2.0 OR MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/tauri" + } + }, + "node_modules/@tauri-apps/cli": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-2.11.4.tgz", + "integrity": "sha512-R8xGtMpwyetawSqm9kYOuMmEqkhUbvcUy8n0aNXIxollKBLESUu5f4Fx+64hgASYm1H+jSWq6jCW6zqTnH6hqQ==", + "dev": true, + "license": "Apache-2.0 OR MIT", + "bin": { + "tauri": "tauri.js" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/tauri" + }, + "optionalDependencies": { + "@tauri-apps/cli-darwin-arm64": "2.11.4", + "@tauri-apps/cli-darwin-x64": "2.11.4", + "@tauri-apps/cli-linux-arm-gnueabihf": "2.11.4", + "@tauri-apps/cli-linux-arm64-gnu": "2.11.4", + "@tauri-apps/cli-linux-arm64-musl": "2.11.4", + "@tauri-apps/cli-linux-riscv64-gnu": "2.11.4", + "@tauri-apps/cli-linux-x64-gnu": "2.11.4", + "@tauri-apps/cli-linux-x64-musl": "2.11.4", + "@tauri-apps/cli-win32-arm64-msvc": "2.11.4", + "@tauri-apps/cli-win32-ia32-msvc": "2.11.4", + "@tauri-apps/cli-win32-x64-msvc": "2.11.4" + } + }, + "node_modules/@tauri-apps/cli-darwin-arm64": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-2.11.4.tgz", + "integrity": "sha512-1ryOF3ZhpZ/nemHV5zVwBQBz9jDGKmKPvWPADOhc83ig0P4bMc2iER4NbC6r9sjeIZ6RVQ4g3RZIYvezhcl4TQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-darwin-x64": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-2.11.4.tgz", + "integrity": "sha512-uFsGQAAfuyz1k/yGLmkWfkBlgKAqZfxqlHmLWx81QU27RJWfmbNHCIq8T8w1e+VClleIuZUjpHWfoE4E3DLo3A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm-gnueabihf": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-2.11.4.tgz", + "integrity": "sha512-IaHZn5CdBL21oUmjiVOS1ctw6Ip1O0pjp70FwOWmYz1myWe0SY96ZIj2FYf7pT0m8bI2h/hrs5ZbEXXh44/MkQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm64-gnu": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-2.11.4.tgz", + "integrity": "sha512-N41/ukTRVe6XSuUTESuFdGeOW2i7k62tK+6gHK5Kd5/q5RPvvi19GaWAVPPb9u95HSGmTChSolBfzynUsssFaA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm64-musl": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.11.4.tgz", + "integrity": "sha512-v277UnT/fB64xAfSroL5N3Km3tLmvATWqJJw/wRI+g6o+HkeD0slyE7gOhNs1MbjE41R7bQOTxMVoL3aomUJmw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-riscv64-gnu": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-riscv64-gnu/-/cli-linux-riscv64-gnu-2.11.4.tgz", + "integrity": "sha512-qqgNkQ2u1yZHxjhxsZaxUtRDW8dIqIYm33rx/mzwQv0SfY9x1B+iraj8vWeFiXjjSVVhEMepXSOts1TqPzvXNQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-x64-gnu": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-2.11.4.tgz", + "integrity": "sha512-2VRNWl84FOH0m2giiDkO2h0QXlcMJeX+zJDpI5kDIQAx6s+geF3v48F4DXfJez4GS/FdoDGnPnw1C2iYGbQ7bQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-x64-musl": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-2.11.4.tgz", + "integrity": "sha512-o9GyhYor/nc7xarmwDE3ka2szuW3uuZzXjHWh64Q8YX5AtSgxdQkFWzrY4O8KiGtVNvFBI14H3Q49Qj5TOIP/A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-win32-arm64-msvc": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-2.11.4.tgz", + "integrity": "sha512-ld5Ehb598m0VkYyylRPNeCFsBe/km0jxis6KgMpl3IGY6I/i1RwQXO05I1AsXUXO2WC6AvB/Lw4qTf/asiuEiQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-win32-ia32-msvc": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-2.11.4.tgz", + "integrity": "sha512-12Hxi0XX/H5VFxO/bGgHkFWhml9VMgEOu9CidjeCeTNQ1l6fpUlbiGgSP7CLI3PFtW9/FfbeHieZ+kyWK5H7CA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-win32-x64-msvc": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-2.11.4.tgz", + "integrity": "sha512-+vDiqBIU5dMISg/wNvX3sF+ZHfgJGJ5T0AcO+EHNXV9GGAG+P5fzodlDXD3QdKCRgZxMoCm5PPvj3BqLNjBthw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "license": "MIT" + }, + "node_modules/@types/d3-axis": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", + "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-brush": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", + "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-chord": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-contour": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", + "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", + "license": "MIT" + }, + "node_modules/@types/d3-dispatch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz", + "integrity": "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==", + "license": "MIT" + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", + "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", + "license": "MIT", + "dependencies": { + "@types/d3-dsv": "*" + } + }, + "node_modules/@types/d3-force": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", + "license": "MIT" + }, + "node_modules/@types/d3-format": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "license": "MIT" + }, + "node_modules/@types/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-65Emv9fQiQQqphLlRkuQ5ypPsOmWPhtBGCMv61JDPEPMvsx+gzhGf74yw1a78xFKPj6zw4AgQICJoQv0vK9M2w==", + "license": "MIT", + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-hierarchy": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-polygon": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", + "license": "MIT" + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "license": "MIT" + }, + "node_modules/@types/d3-random": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.4.tgz", + "integrity": "sha512-UHYId5WTCx4L4YNel7NU00XUXXgvgpgZOvp10PuvsQENjMDXhh2RyFc0KBjO7B45ne4Ha1yVH7ii0vnzKkuzWA==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", + "license": "MIT" + }, + "node_modules/@types/d3-selection": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "license": "MIT" + }, + "node_modules/@types/d3-shape": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz", + "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-time-format": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, + "node_modules/@types/d3-transition": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "license": "MIT", + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "24.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", + "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.31", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.31.tgz", + "integrity": "sha512-vfEqpXTvwT91yhmwdfouStN2hSKwTvyRs8qpLfADyrq/kxDw0hZM7Wk9Ug1FELj8hIby+S/+kQCSRFF32nv2Qw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", + "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", + "devOptional": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^18.0.0" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.1.tgz", + "integrity": "sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.56.1", + "@typescript-eslint/type-utils": "8.56.1", + "@typescript-eslint/utils": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.56.1", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.6.tgz", + "integrity": "sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.1.tgz", + "integrity": "sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.56.1", + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/typescript-estree": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.1.tgz", + "integrity": "sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.56.1", + "@typescript-eslint/types": "^8.56.1", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", + "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz", + "integrity": "sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz", + "integrity": "sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/typescript-estree": "8.56.1", + "@typescript-eslint/utils": "8.56.1", + "debug": "^4.4.3", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", + "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", + "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.56.1", + "@typescript-eslint/tsconfig-utils": "8.56.1", + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", + "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.8" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz", + "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.56.1", + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/typescript-estree": "8.56.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", + "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.56.1", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@upsetjs/venn.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@upsetjs/venn.js/-/venn.js-2.0.0.tgz", + "integrity": "sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==", + "license": "MIT", + "optionalDependencies": { + "d3-selection": "^3.0.0", + "d3-transition": "^3.0.1" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.4.tgz", + "integrity": "sha512-VIcFLdRi/VYRU8OL/puL7QXMYafHmqOnwTZY50U1JPlCNj30PxCMx65c494b1K9be9hX83KVt0+gTEwTWLqToA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.29.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-rc.3", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.18.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/acorn": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz", + "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "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==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.11.12", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.12.tgz", + "integrity": "sha512-r7WnVImvVCeFpf2DOXfy41aPWzeNg3H/A2X4dKmy1QL0MSyyk/e7z8ihJ3N6Nn2PsdhkVlqnEfnUE4a05P2aTA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", + "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-fs-access": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/browser-fs-access/-/browser-fs-access-0.29.1.tgz", + "integrity": "sha512-LSvVX5e21LRrXqVMhqtAwj5xPgDb+fXAIH80NsnCQ9xuZPs2xWsOREi24RKgZa1XOiQRbcmVrv87+ulOKsgjxw==", + "license": "Apache-2.0" + }, + "node_modules/browserslist": { + "version": "4.28.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.7.tgz", + "integrity": "sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.44", + "caniuse-lite": "^1.0.30001806", + "electron-to-chromium": "^1.5.393", + "node-releases": "^2.0.51", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001809", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001809.tgz", + "integrity": "sha512-xxWVywk6a6Arlk+hymeycyn/VgqEfLDxupvhH/xiY5SJ/18kmi9o6MiO320DCUzypORHLtvh0I4i04tUhCNHNQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/canvas-roundrect-polyfill": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/canvas-roundrect-polyfill/-/canvas-roundrect-polyfill-0.0.1.tgz", + "integrity": "sha512-yWq+R3U3jE+coOeEb3a3GgE2j/0MMiDKM/QpLb6h9ihf5fGY9UXtvK9o4vNqjWXoZz7/3EaSVU3IX53TvFFUOw==", + "license": "MIT" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chevrotain": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", + "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/cst-dts-gen": "11.0.3", + "@chevrotain/gast": "11.0.3", + "@chevrotain/regexp-to-ast": "11.0.3", + "@chevrotain/types": "11.0.3", + "@chevrotain/utils": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/chevrotain-allstar": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", + "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", + "license": "MIT", + "dependencies": { + "lodash-es": "^4.17.21" + }, + "peerDependencies": { + "chevrotain": "^11.0.0" + } + }, + "node_modules/clsx": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", + "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==", + "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/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "license": "MIT", + "dependencies": { + "layout-base": "^1.0.0" + } + }, + "node_modules/crc-32": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-0.3.0.tgz", + "integrity": "sha512-kucVIjOmMc1f0tv53BJ/5WIX+MGLcKuoBhnGqQrgKJNqLByb/sVMWfW/Aw6hw0jgcqjJ2pi9E5y32zOIpaUlsA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "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==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/cytoscape": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.34.0.tgz", + "integrity": "sha512-62rNSrioXw93uliKFBwjukeQyeWwH2PqDrTac31r2P6464u3AUvTk0xS4LVvT251g7IgkFunrI48ZEZGjywSOg==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "license": "MIT", + "dependencies": { + "cose-base": "^1.0.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "license": "MIT", + "dependencies": { + "cose-base": "^2.2.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "license": "MIT", + "dependencies": { + "layout-base": "^2.0.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/layout-base": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", + "license": "MIT" + }, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "license": "ISC", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "license": "ISC", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "license": "ISC", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "license": "ISC", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "license": "ISC", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz", + "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "license": "BSD-3-Clause", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "license": "BSD-3-Clause" + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "license": "ISC" + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dagre-d3-es": { + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.14.tgz", + "integrity": "sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==", + "license": "MIT", + "dependencies": { + "d3": "^7.9.0", + "lodash-es": "^4.17.21" + } + }, + "node_modules/dayjs": { + "version": "1.11.21", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.21.tgz", + "integrity": "sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/delaunator": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.1.0.tgz", + "integrity": "sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==", + "license": "ISC", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, + "node_modules/dompurify": { + "version": "3.4.13", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.13.tgz", + "integrity": "sha512-2vmYIoqjze2d+kakP8S/nS5shfsl587kzwEjcGlTdiksUVgFHnFCsLYDVj/JNqJVOQZGSYBTmuycv0PodwmnMQ==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.402", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.402.tgz", + "integrity": "sha512-/oOpMaPT6Yg+6/1XQhyIPlzgj7Ye9zf+nNM2Uh6OcE2G2oNptWazFa+qB2Pdqqbsc9KnIDzgAntoYN0dbwOXwA==", + "dev": true, + "license": "ISC" + }, + "node_modules/es-toolkit": { + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.50.0.tgz", + "integrity": "sha512-OyZKhUVvEep9ITEiwHn8GKnMRQIVqoSIX7WnRbkWgJkllCujilqP2rD0u979tkl8wqyc8ICwlc1UBVv/Sl1G6w==", + "license": "MIT", + "workspaces": [ + "docs", + "benchmarks", + "tests/types" + ] + }, + "node_modules/es6-promise-pool": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/es6-promise-pool/-/es6-promise-pool-2.5.0.tgz", + "integrity": "sha512-VHErXfzR/6r/+yyzPKeBvO0lgjfC5cbDCQWjWwMZWSb6YU39TGIl51OUmCfWCq4ylMdJSB8zkz2vIuIeIxXApA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/esbuild": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", + "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.28.1", + "@esbuild/android-arm": "0.28.1", + "@esbuild/android-arm64": "0.28.1", + "@esbuild/android-x64": "0.28.1", + "@esbuild/darwin-arm64": "0.28.1", + "@esbuild/darwin-x64": "0.28.1", + "@esbuild/freebsd-arm64": "0.28.1", + "@esbuild/freebsd-x64": "0.28.1", + "@esbuild/linux-arm": "0.28.1", + "@esbuild/linux-arm64": "0.28.1", + "@esbuild/linux-ia32": "0.28.1", + "@esbuild/linux-loong64": "0.28.1", + "@esbuild/linux-mips64el": "0.28.1", + "@esbuild/linux-ppc64": "0.28.1", + "@esbuild/linux-riscv64": "0.28.1", + "@esbuild/linux-s390x": "0.28.1", + "@esbuild/linux-x64": "0.28.1", + "@esbuild/netbsd-arm64": "0.28.1", + "@esbuild/netbsd-x64": "0.28.1", + "@esbuild/openbsd-arm64": "0.28.1", + "@esbuild/openbsd-x64": "0.28.1", + "@esbuild/openharmony-arm64": "0.28.1", + "@esbuild/sunos-x64": "0.28.1", + "@esbuild/win32-arm64": "0.28.1", + "@esbuild/win32-ia32": "0.28.1", + "@esbuild/win32-x64": "0.28.1" + } + }, + "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/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", + "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.1", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", + "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.26", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.26.tgz", + "integrity": "sha512-1RETEylht2O6FM/MvgnyvT+8K21wLqDNg4qD51Zj3guhjt433XbnnkVttHMyaVyAFD03QSV4LPS5iE3VQmO7XQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=8.40" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.4.tgz", + "integrity": "sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==", + "dev": true, + "license": "ISC" + }, + "node_modules/fractional-indexing": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fractional-indexing/-/fractional-indexing-3.2.0.tgz", + "integrity": "sha512-PcOxmqwYCW7O2ovKRU8OoQQj2yqTfEB/yeTYk4gPid6dN5ODRfU1hXd9tTVZzax/0NkO7AxpHykvZnT1aYp/BQ==", + "license": "CC0-1.0", + "engines": { + "node": "^14.13.1 || >=16.0.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/fuzzy": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/fuzzy/-/fuzzy-0.1.3.tgz", + "integrity": "sha512-/gZffu4ykarLrCiP3Ygsa86UAo1E5vEVlvTrpkKywXSbP9Xhln3oSp9QSV57gEq3JFFpGJ4GZ+5zdEp3FcUh4w==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.3.0.tgz", + "integrity": "sha512-yMqGUQVVCkD4tqjOJf3TnrvaaHDMYp4VlUSObbkIiuCPe/ofdMBFIAcBbCSRFWOnos6qRiTVStDwqPLUclaxIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glur": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/glur/-/glur-1.1.2.tgz", + "integrity": "sha512-l+8esYHTKOx2G/Aao4lEQ0bnHWg4fWtJbVoZZT9Knxi01pB8C80BR85nONLFwkkQoFRCmXY+BUcGZN3yZ2QsRA==", + "license": "MIT" + }, + "node_modules/hachure-fill": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", + "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-blob-reduce": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/image-blob-reduce/-/image-blob-reduce-3.0.1.tgz", + "integrity": "sha512-/VmmWgIryG/wcn4TVrV7cC4mlfUC/oyiKIfSg5eVM3Ten/c1c34RJhMYKCWTnoSMHSqXLt3tsrBR4Q2HInvN+Q==", + "license": "MIT", + "dependencies": { + "pica": "^7.1.0" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/jotai": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/jotai/-/jotai-2.11.0.tgz", + "integrity": "sha512-zKfoBBD1uDw3rljwHkt0fWuja1B76R7CjznuBO+mSX6jpsO1EBeWNRKpeaQho9yPI/pvCv4recGfgOXGxwPZvQ==", + "license": "MIT", + "engines": { + "node": ">=12.20.0" + }, + "peerDependencies": { + "@types/react": ">=17.0.0", + "react": ">=17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + } + } + }, + "node_modules/jotai-scope": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/jotai-scope/-/jotai-scope-0.7.2.tgz", + "integrity": "sha512-Gwed97f3dDObrO43++2lRcgOqw4O2sdr4JCjP/7eHK1oPACDJ7xKHGScpJX9XaflU+KBHXF+VhwECnzcaQiShg==", + "license": "MIT", + "peerDependencies": { + "jotai": ">=2.9.2", + "react": ">=17.0.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz", + "integrity": "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/katex": { + "version": "0.16.47", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.47.tgz", + "integrity": "sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/khroma": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", + "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" + }, + "node_modules/langium": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/langium/-/langium-3.3.1.tgz", + "integrity": "sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==", + "license": "MIT", + "dependencies": { + "chevrotain": "~11.0.3", + "chevrotain-allstar": "~0.3.0", + "vscode-languageserver": "~9.0.1", + "vscode-languageserver-textdocument": "~1.0.11", + "vscode-uri": "~3.0.8" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/layout-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", + "license": "MIT" + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lucide-react": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.30.0.tgz", + "integrity": "sha512-tUIr2jXLbWpCkdtH8XP7P7YppM9ueWgTky99lpWDY6z5REs6B+O6ZQ3U5tHkUUY59ANyOv/PBcs8E4Fe3KO3eA==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/marked": { + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.2.tgz", + "integrity": "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/mermaid": { + "version": "11.16.1", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.16.1.tgz", + "integrity": "sha512-TQsq6u22fAn3rek5VOubrhKPo1g5hwC3FXUN9hiyupTckcYiGuuKGkNQrKYwGJkXUxZdojwRG46gsSCFZMDp4g==", + "license": "MIT", + "dependencies": { + "@braintree/sanitize-url": "^7.1.2", + "@iconify/utils": "^3.0.2", + "@mermaid-js/parser": "^1.2.0", + "@types/d3": "^7.4.3", + "@upsetjs/venn.js": "^2.0.0", + "cytoscape": "^3.33.3", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.2.0", + "d3": "^7.9.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.14", + "dayjs": "^1.11.20", + "dompurify": "^3.3.3", + "es-toolkit": "^1.45.1", + "katex": "^0.16.45", + "khroma": "^2.1.0", + "marked": "^16.3.0", + "roughjs": "^4.6.6", + "stylis": "^4.3.6", + "ts-dedent": "^2.2.0", + "uuid": "^11.1.0 || ^12 || ^13 || ^14.0.0" + } + }, + "node_modules/mermaid/node_modules/@braintree/sanitize-url": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.2.tgz", + "integrity": "sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==", + "license": "MIT" + }, + "node_modules/mermaid/node_modules/@chevrotain/types": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.1.2.tgz", + "integrity": "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==", + "license": "Apache-2.0" + }, + "node_modules/mermaid/node_modules/@mermaid-js/parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-1.2.0.tgz", + "integrity": "sha512-oYPyv8A4As1yH5Bx+04iQEQxXuIQDe0GKCNSRgao6z8AM9jixXIfP0vsppRLvGf+nKIOb9/LdpWA4YuJiVvESA==", + "license": "MIT", + "dependencies": { + "@chevrotain/types": "~11.1.2" + } + }, + "node_modules/mermaid/node_modules/points-on-curve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", + "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==", + "license": "MIT" + }, + "node_modules/mermaid/node_modules/roughjs": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", + "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", + "license": "MIT", + "dependencies": { + "hachure-fill": "^0.5.2", + "path-data-parser": "^0.1.0", + "points-on-curve": "^0.2.0", + "points-on-path": "^0.2.1" + } + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/multimath": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/multimath/-/multimath-2.0.0.tgz", + "integrity": "sha512-toRx66cAMJ+Ccz7pMIg38xSIrtnbozk0dchXezwQDMgQmbGpfxjtv68H+L00iFL8hxDaVjrmwAFSb3I6bg8Q2g==", + "license": "MIT", + "dependencies": { + "glur": "^1.1.2", + "object-assign": "^4.1.1" + } + }, + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.53.tgz", + "integrity": "sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/open-color": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/open-color/-/open-color-1.9.1.tgz", + "integrity": "sha512-vCseG/EQ6/RcvxhUcGJiHViOgrtz4x0XbZepXvKik66TMGkvbmjeJrKFyBEx6daG5rNyyd14zYXhz0hZVwQFOw==", + "license": "MIT" + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-manager-detector": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.8.0.tgz", + "integrity": "sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A==", + "license": "MIT" + }, + "node_modules/pako": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.0.3.tgz", + "integrity": "sha512-WjR1hOeg+kki3ZIOjaf4b5WVcay1jaliKSYiEaB1XzwhMQZJxRdQRv0V31EKBYlxb4T7SK3hjfc/jxyU64BoSw==", + "license": "(MIT AND Zlib)" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-data-parser": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", + "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==", + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/perfect-freehand": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/perfect-freehand/-/perfect-freehand-1.2.0.tgz", + "integrity": "sha512-h/0ikF1M3phW7CwpZ5MMvKnfpHficWoOEyr//KVNTxV4F6deRK1eYMtHyBKEAKFK0aXIEUK9oBvlF6PNXMDsAw==", + "license": "MIT" + }, + "node_modules/pica": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/pica/-/pica-7.1.1.tgz", + "integrity": "sha512-WY73tMvNzXWEld2LicT9Y260L43isrZ85tPuqRyvtkljSDLmnNFQmZICt4xUJMVulmcc6L9O7jbBrtx3DOz/YQ==", + "license": "MIT", + "dependencies": { + "glur": "^1.1.2", + "inherits": "^2.0.3", + "multimath": "^2.0.0", + "object-assign": "^4.1.1", + "webworkify": "^1.5.0" + } + }, + "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": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/png-chunk-text": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/png-chunk-text/-/png-chunk-text-1.0.0.tgz", + "integrity": "sha512-DEROKU3SkkLGWNMzru3xPVgxyd48UGuMSZvioErCure6yhOc/pRH2ZV+SEn7nmaf7WNf3NdIpH+UTrRdKyq9Lw==", + "license": "MIT" + }, + "node_modules/png-chunks-encode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/png-chunks-encode/-/png-chunks-encode-1.0.0.tgz", + "integrity": "sha512-J1jcHgbQRsIIgx5wxW9UmCymV3wwn4qCCJl6KYgEU/yHCh/L2Mwq/nMOkRPtmV79TLxRZj5w3tH69pvygFkDqA==", + "license": "MIT", + "dependencies": { + "crc-32": "^0.3.0", + "sliced": "^1.0.1" + } + }, + "node_modules/png-chunks-extract": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/png-chunks-extract/-/png-chunks-extract-1.0.0.tgz", + "integrity": "sha512-ZiVwF5EJ0DNZyzAqld8BP1qyJBaGOFaq9zl579qfbkcmOwWLLO4I9L8i2O4j3HkI6/35i0nKG2n+dZplxiT89Q==", + "license": "MIT", + "dependencies": { + "crc-32": "^0.3.0" + } + }, + "node_modules/points-on-curve": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-1.0.1.tgz", + "integrity": "sha512-3nmX4/LIiyuwGLwuUrfhTlDeQFlAhi7lyK/zcRNGhalwapDWgAGR82bUpmn2mA03vII3fvNCG8jAONzKXwpxAg==", + "license": "MIT" + }, + "node_modules/points-on-path": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", + "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", + "license": "MIT", + "dependencies": { + "path-data-parser": "0.1.0", + "points-on-curve": "0.2.0" + } + }, + "node_modules/points-on-path/node_modules/points-on-curve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", + "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==", + "license": "MIT" + }, + "node_modules/postcss": { + "version": "8.5.26", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.26.tgz", + "integrity": "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==", + "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", + "dependencies": { + "nanoid": "^3.3.17", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss/node_modules/nanoid": { + "version": "3.3.18", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz", + "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", + "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/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pwacompat": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/pwacompat/-/pwacompat-2.0.17.tgz", + "integrity": "sha512-6Du7IZdIy7cHiv7AhtDy4X2QRM8IAD5DII69mt5qWibC2d15ZU8DmBG1WdZKekG11cChSu4zkSUGPF9sweOl6w==", + "license": "Apache-2.0" + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-refresh": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", + "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz", + "integrity": "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", + "integrity": "sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==", + "license": "Unlicense" + }, + "node_modules/rollup": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.4.tgz", + "integrity": "sha512-RXOqwaPsBGjMNMa4sQjDjHieHEZDFoj/Rdr46l2MU5DfEs16wHJPC2RPTPHWhNl+M3aI472LLqFkFKut4SblOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.9" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@napi-rs/lzma-linux-x64-gnu": "1.5.1", + "@rollup/rollup-android-arm-eabi": "4.62.4", + "@rollup/rollup-android-arm64": "4.62.4", + "@rollup/rollup-darwin-arm64": "4.62.4", + "@rollup/rollup-darwin-x64": "4.62.4", + "@rollup/rollup-freebsd-arm64": "4.62.4", + "@rollup/rollup-freebsd-x64": "4.62.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.62.4", + "@rollup/rollup-linux-arm-musleabihf": "4.62.4", + "@rollup/rollup-linux-arm64-gnu": "4.62.4", + "@rollup/rollup-linux-arm64-musl": "4.62.4", + "@rollup/rollup-linux-loong64-gnu": "4.62.4", + "@rollup/rollup-linux-loong64-musl": "4.62.4", + "@rollup/rollup-linux-ppc64-gnu": "4.62.4", + "@rollup/rollup-linux-ppc64-musl": "4.62.4", + "@rollup/rollup-linux-riscv64-gnu": "4.62.4", + "@rollup/rollup-linux-riscv64-musl": "4.62.4", + "@rollup/rollup-linux-s390x-gnu": "4.62.4", + "@rollup/rollup-linux-x64-gnu": "4.62.4", + "@rollup/rollup-linux-x64-musl": "4.62.4", + "@rollup/rollup-openbsd-x64": "4.62.4", + "@rollup/rollup-openharmony-arm64": "4.62.4", + "@rollup/rollup-win32-arm64-msvc": "4.62.4", + "@rollup/rollup-win32-ia32-msvc": "4.62.4", + "@rollup/rollup-win32-x64-gnu": "4.62.4", + "@rollup/rollup-win32-x64-msvc": "4.62.4", + "fsevents": "~2.3.2" + } + }, + "node_modules/roughjs": { + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.4.tgz", + "integrity": "sha512-s6EZ0BntezkFYMf/9mGn7M8XGIoaav9QQBCnJROWB3brUWQ683Q2LbRD/hq0Z3bAJ/9NVpU/5LpiTWvQMyLDhw==", + "license": "MIT", + "dependencies": { + "hachure-fill": "^0.5.2", + "path-data-parser": "^0.1.0", + "points-on-curve": "^0.2.0", + "points-on-path": "^0.2.1" + } + }, + "node_modules/roughjs/node_modules/points-on-curve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", + "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==", + "license": "MIT" + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/sliced": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", + "integrity": "sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==", + "deprecated": "Unsupported", + "license": "MIT" + }, + "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==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylis": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.4.0.tgz", + "integrity": "sha512-5Z9ZpRzfuH6l/UAvCPAPUo3665Nk2wLaZU3x+TLHKVzIz33+sbJqbtrYoC3KD4/uVOr2Zp+L0LySezP9OHV9yA==", + "license": "MIT" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tinyexec": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.3.0.tgz", + "integrity": "sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "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/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==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-dedent": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.3.0.tgz", + "integrity": "sha512-JfJeIHke7y2egdGGgRAvpCwYFUsHlM2gPcrVOxFkznt/4uzQ7HFmvE63iFHVLBJNDuyDOQgijDK/tXH/f6Msjg==", + "license": "MIT", + "engines": { + "node": ">=6.10" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tunnel-rat": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/tunnel-rat/-/tunnel-rat-0.1.2.tgz", + "integrity": "sha512-lR5VHmkPhzdhrM092lI2nACsLO4QubF0/yoOhzX7c+wIpbN1GjHNzCc91QlpxBi+cnx8vVJ+Ur6vL5cEoQPFpQ==", + "license": "MIT", + "dependencies": { + "zustand": "^4.3.2" + } + }, + "node_modules/tunnel-rat/node_modules/zustand": { + "version": "4.5.7", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.7.tgz", + "integrity": "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==", + "license": "MIT", + "dependencies": { + "use-sync-external-store": "^1.2.2" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "@types/react": ">=16.8", + "immer": ">=9.0.6", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.1.tgz", + "integrity": "sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.56.1", + "@typescript-eslint/parser": "8.56.1", + "@typescript-eslint/typescript-estree": "8.56.1", + "@typescript-eslint/utils": "8.56.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true, + "license": "MIT" + }, + "node_modules/update-browserslist-db": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.0.tgz", + "integrity": "sha512-x/M6q3w4Ybp91CNaS4S69UnliqR3BzRpOT6LWbksjth0S/+jhfaPJsWjt/TewpT8j9eLIojUf5jr29WextHroA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/uuid": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-14.0.1.tgz", + "integrity": "sha512-6ZxzVpzDXDa3bJWaHilVayA+BH/1zmxCJoVgvmqJnid/gPoKHxUrS/aC/T6LGQtNHT+XHG9fXPJB4d+IrU30Ew==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist-node/bin/uuid" + } + }, + "node_modules/vite": { + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.6.tgz", + "integrity": "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0 || ^0.28.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite/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/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", + "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "license": "MIT", + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "license": "MIT", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", + "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", + "license": "MIT" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "license": "MIT" + }, + "node_modules/vscode-uri": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", + "license": "MIT" + }, + "node_modules/webworkify": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/webworkify/-/webworkify-1.5.0.tgz", + "integrity": "sha512-AMcUeyXAhbACL8S2hqqdqOLqvJ8ylmIbNwUIqQujRSouf4+eUFaXbG6F1Rbu+srlJMmxQWsiU7mOJi0nMBfM1g==", + "license": "MIT" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-validation-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + } + }, + "node_modules/zustand": { + "version": "5.0.14", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.14.tgz", + "integrity": "sha512-/8tAspM5LMPr28b3fwLYrtdj77ECpfZviaP75CMTnwO8ISyaE4GDIG/9rDDYq/cH9D2Xw2A2RXglLInmVBQB/g==", + "license": "MIT", + "engines": { + "node": ">=12.20.0" + }, + "peerDependencies": { + "@types/react": ">=18.0.0", + "immer": ">=9.0.6", + "react": ">=18.0.0", + "use-sync-external-store": ">=1.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + }, + "use-sync-external-store": { + "optional": true + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..1d33d66 --- /dev/null +++ b/package.json @@ -0,0 +1,36 @@ +{ + "name": "planer", + "private": true, + "version": "0.1.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint . --max-warnings 0", + "preview": "vite preview", + "tauri": "tauri" + }, + "dependencies": { + "@excalidraw/excalidraw": "0.18.1", + "@tauri-apps/api": "2.11.1", + "lucide-react": "1.30.0", + "react": "18.3.1", + "react-dom": "18.3.1", + "zustand": "5.0.14" + }, + "devDependencies": { + "@eslint/js": "9.39.1", + "@tauri-apps/cli": "2.11.4", + "@types/node": "24.10.1", + "@types/react": "18.3.31", + "@types/react-dom": "18.3.7", + "@vitejs/plugin-react": "5.1.4", + "eslint": "9.39.1", + "eslint-plugin-react-hooks": "7.0.1", + "eslint-plugin-react-refresh": "0.4.26", + "globals": "17.3.0", + "typescript": "5.9.3", + "typescript-eslint": "8.56.1", + "vite": "7.3.6" + } +} diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml new file mode 100644 index 0000000..7c689d4 --- /dev/null +++ b/src-tauri/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "planer" +version = "0.1.0" +description = "A fast, local-first visual planning workspace" +authors = ["Sufyan Nasser Ali"] +edition = "2021" + +[lib] +name = "planer_lib" +crate-type = ["staticlib", "cdylib", "rlib"] + +[build-dependencies] +tauri-build = { version = "2", features = [] } + +[dependencies] +serde = { version = "1", features = ["derive"] } +serde_json = "1" +tauri = { version = "2", features = [] } + diff --git a/src-tauri/build.rs b/src-tauri/build.rs new file mode 100644 index 0000000..d860e1e --- /dev/null +++ b/src-tauri/build.rs @@ -0,0 +1,3 @@ +fn main() { + tauri_build::build() +} diff --git a/src-tauri/icons/128x128.png b/src-tauri/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..9b040a6d5a0a02d697698d121d114651be7a39ef GIT binary patch literal 4116 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 SqYhI50000^0 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/128x128@2x.png b/src-tauri/icons/128x128@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9d22cd66a48a5ec4001e780d92d5b477979be661 GIT binary patch literal 8517 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/64x64.png b/src-tauri/icons/64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..abe006c106d18c58db4e7b62a22268e3c7f3e2a8 GIT binary patch literal 1955 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

F8(Me9gD(9XCp&ZmfJLQfdw=PFCb3Dq$L) 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 literal 0 HcmV?d00001 diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs new file mode 100644 index 0000000..c035c1c --- /dev/null +++ b/src-tauri/src/lib.rs @@ -0,0 +1,6 @@ +#[cfg_attr(mobile, tauri::mobile_entry_point)] +pub fn run() { + tauri::Builder::default() + .run(tauri::generate_context!()) + .expect("error while running Planer"); +} diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs new file mode 100644 index 0000000..05b0929 --- /dev/null +++ b/src-tauri/src/main.rs @@ -0,0 +1,5 @@ +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] + +fn main() { + planer_lib::run(); +} diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json new file mode 100644 index 0000000..61ea6e3 --- /dev/null +++ b/src-tauri/tauri.conf.json @@ -0,0 +1,48 @@ +{ + "$schema": "https://schema.tauri.app/config/2", + "productName": "Planer", + "version": "0.1.0", + "identifier": "com.nas.planer", + "build": { + "beforeDevCommand": "npm run dev", + "devUrl": "http://localhost:1420", + "beforeBuildCommand": "npm run build", + "frontendDist": "../dist" + }, + "app": { + "windows": [ + { + "title": "Planer", + "width": 1440, + "height": 900, + "minWidth": 900, + "minHeight": 600, + "resizable": true, + "fullscreen": false, + "center": true + } + ], + "security": { + "csp": null + } + }, + "bundle": { + "active": true, + "targets": ["nsis", "msi"], + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/128x128@2x.png", + "icons/icon.icns", + "icons/icon.ico" + ], + "category": "Productivity", + "shortDescription": "Visual planning workspace", + "longDescription": "Plan systems, map workflows, and explain projects in a fast local-first canvas.", + "windows": { + "nsis": { + "installMode": "perMachine" + } + } + } +} diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..f073fd5 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,17 @@ +import { useEffect } from "react"; +import { Launcher } from "./components/Launcher"; +import { Workspace } from "./components/Workspace"; +import { usePlanerStore } from "./store/usePlanerStore"; + +export function App() { + const view = usePlanerStore((state) => state.view); + const hydrated = usePlanerStore((state) => state.hydrated); + const hydrate = usePlanerStore((state) => state.hydrate); + + useEffect(() => { + void hydrate(); + }, [hydrate]); + + if (!hydrated) return

; + return view === "workspace" ? : ; +} diff --git a/src/components/BoardBar.tsx b/src/components/BoardBar.tsx new file mode 100644 index 0000000..4938dc4 --- /dev/null +++ b/src/components/BoardBar.tsx @@ -0,0 +1,44 @@ +import { Copy, MoreHorizontal, Plus, Trash2 } from "lucide-react"; +import type { PlanerProject } from "../types"; +import { usePlanerStore } from "../store/usePlanerStore"; + +export function BoardBar({ project }: { project: PlanerProject }) { + const setActiveBoard = usePlanerStore((state) => state.setActiveBoard); + const addBoard = usePlanerStore((state) => state.addBoard); + const renameBoard = usePlanerStore((state) => state.renameBoard); + const duplicateBoard = usePlanerStore((state) => state.duplicateBoard); + const deleteBoard = usePlanerStore((state) => state.deleteBoard); + + return ( +
+ Boards +
+ {project.boards.map((board) => ( +
+ + {board.id === project.activeBoardId && ( +
+ +
+ + +
+
+ )} +
+ ))} + +
+ Saved locally +
+ ); +} diff --git a/src/components/BrandMark.tsx b/src/components/BrandMark.tsx new file mode 100644 index 0000000..4853ac3 --- /dev/null +++ b/src/components/BrandMark.tsx @@ -0,0 +1,9 @@ +export function BrandMark() { + return ( +
+ ); +} + +function formatRelativeDate(iso: string) { + const date = new Date(iso); + const seconds = Math.round((date.getTime() - Date.now()) / 1000); + const formatter = new Intl.RelativeTimeFormat(undefined, { numeric: "auto" }); + if (Math.abs(seconds) < 60) return "just now"; + const minutes = Math.round(seconds / 60); + if (Math.abs(minutes) < 60) return formatter.format(minutes, "minute"); + const hours = Math.round(minutes / 60); + if (Math.abs(hours) < 24) return formatter.format(hours, "hour"); + return formatter.format(Math.round(hours / 24), "day"); +} diff --git a/src/components/Workspace.tsx b/src/components/Workspace.tsx new file mode 100644 index 0000000..3582ec6 --- /dev/null +++ b/src/components/Workspace.tsx @@ -0,0 +1,73 @@ +import { ChevronLeft, Download, FileJson, Moon, MoreHorizontal, Sun } from "lucide-react"; +import { BoardBar } from "./BoardBar"; +import { BrandMark } from "./BrandMark"; +import { Canvas } from "./Canvas"; +import { downloadJson, safeFilename } from "../services/persistence"; +import { usePlanerStore } from "../store/usePlanerStore"; + +export function Workspace() { + const activeProjectId = usePlanerStore((state) => state.activeProjectId); + const project = usePlanerStore((state) => state.projects.find((item) => item.id === activeProjectId)); + const closeProject = usePlanerStore((state) => state.closeProject); + const renameProject = usePlanerStore((state) => state.renameProject); + const setTheme = usePlanerStore((state) => state.setTheme); + + if (!project) { + closeProject(); + return null; + } + + const board = project.boards.find((item) => item.id === project.activeBoardId) ?? project.boards[0]; + const filename = safeFilename(project.name); + + return ( +
+
+
+ + { event.preventDefault(); closeProject(); }}> + Planer + + + +
+ +
+ +
+ Export +
+ + +
+
+ +
+
+ + + +
+ ); +} diff --git a/src/main.tsx b/src/main.tsx new file mode 100644 index 0000000..bdf6f76 --- /dev/null +++ b/src/main.tsx @@ -0,0 +1,11 @@ +import { StrictMode } from "react"; +import { createRoot } from "react-dom/client"; +import "@excalidraw/excalidraw/index.css"; +import "./styles/index.css"; +import { App } from "./App"; + +createRoot(document.getElementById("root")!).render( + + + +); diff --git a/src/services/persistence.ts b/src/services/persistence.ts new file mode 100644 index 0000000..c8c2c0b --- /dev/null +++ b/src/services/persistence.ts @@ -0,0 +1,84 @@ +import type { PlanerProject } from "../types"; + +const DB_NAME = "planer-local"; +const DB_VERSION = 1; +const STORE_NAME = "workspace"; +const PROJECTS_KEY = "projects.v1"; +const LEGACY_STORAGE_KEY = "planer.projects.v1"; + +export async function loadProjects(): Promise { + try { + const database = await openDatabase(); + const stored = await new Promise((resolve, reject) => { + const request = database.transaction(STORE_NAME, "readonly").objectStore(STORE_NAME).get(PROJECTS_KEY); + request.onsuccess = () => resolve(request.result); + request.onerror = () => reject(request.error); + }); + if (Array.isArray(stored)) return stored.filter(isPlanerProject); + } catch { + // Fall through to the localStorage migration path. + } + + const legacy = localStorage.getItem(LEGACY_STORAGE_KEY); + if (!legacy) return []; + try { + const parsed: unknown = JSON.parse(legacy); + const projects = Array.isArray(parsed) ? parsed.filter(isPlanerProject) : []; + if (projects.length) void saveProjects(projects); + return projects; + } catch { + return []; + } +} + +export async function saveProjects(projects: PlanerProject[]) { + const database = await openDatabase(); + await new Promise((resolve, reject) => { + const transaction = database.transaction(STORE_NAME, "readwrite"); + transaction.objectStore(STORE_NAME).put(projects, PROJECTS_KEY); + transaction.oncomplete = () => resolve(); + transaction.onerror = () => reject(transaction.error); + transaction.onabort = () => reject(transaction.error); + }); +} + +function openDatabase() { + return new Promise((resolve, reject) => { + const request = indexedDB.open(DB_NAME, DB_VERSION); + request.onupgradeneeded = () => { + if (!request.result.objectStoreNames.contains(STORE_NAME)) { + request.result.createObjectStore(STORE_NAME); + } + }; + request.onsuccess = () => resolve(request.result); + request.onerror = () => reject(request.error); + }); +} + +function isPlanerProject(value: unknown): value is PlanerProject { + if (!value || typeof value !== "object") return false; + const project = value as Partial; + return ( + project.format === "planer" && + project.version === 1 && + typeof project.id === "string" && + typeof project.name === "string" && + Array.isArray(project.boards) + ); +} + +export function downloadJson(filename: string, data: unknown) { + const blob = new Blob([JSON.stringify(data, null, 2)], { + type: "application/json;charset=utf-8" + }); + const url = URL.createObjectURL(blob); + const anchor = document.createElement("a"); + anchor.href = url; + anchor.download = filename; + anchor.click(); + URL.revokeObjectURL(url); +} + +export function safeFilename(value: string) { + return value.trim().replace(/[<>:"/\\|?*]+/g, "-").replace(/\s+/g, " ") || "Untitled"; +} diff --git a/src/services/project.ts b/src/services/project.ts new file mode 100644 index 0000000..e564266 --- /dev/null +++ b/src/services/project.ts @@ -0,0 +1,31 @@ +import type { PlanerBoard, PlanerProject } from "../types"; + +export const createId = () => crypto.randomUUID(); + +export const createBoard = (name: string, order = 0): PlanerBoard => ({ + id: createId(), + name, + order, + scene: { + elements: [], + appState: { viewBackgroundColor: "#f8f9fc" }, + files: {} + } +}); + +export const createProject = (name: string): PlanerProject => { + const now = new Date().toISOString(); + const board = createBoard("Overview"); + + return { + format: "planer", + version: 1, + id: createId(), + name: name.trim() || "Untitled Project", + createdAt: now, + updatedAt: now, + activeBoardId: board.id, + settings: { theme: "light", gridEnabled: false }, + boards: [board] + }; +}; diff --git a/src/store/usePlanerStore.ts b/src/store/usePlanerStore.ts new file mode 100644 index 0000000..98385d9 --- /dev/null +++ b/src/store/usePlanerStore.ts @@ -0,0 +1,157 @@ +import { create } from "zustand"; +import { createBoard, createProject } from "../services/project"; +import { loadProjects, saveProjects } from "../services/persistence"; +import type { BoardScene, PlanerProject, PlanerTheme } from "../types"; + +type View = "launcher" | "workspace"; + +interface PlanerState { + projects: PlanerProject[]; + activeProjectId: string | null; + view: View; + hydrated: boolean; + hydrate: () => Promise; + createProject: (name: string) => void; + openProject: (projectId: string) => void; + closeProject: () => void; + deleteProject: (projectId: string) => void; + renameProject: (name: string) => void; + setTheme: (theme: PlanerTheme) => void; + setActiveBoard: (boardId: string) => void; + addBoard: () => void; + renameBoard: (boardId: string, name: string) => void; + duplicateBoard: (boardId: string) => void; + deleteBoard: (boardId: string) => void; + updateBoardScene: (boardId: string, scene: BoardScene) => void; +} + +let saveTimer: number | undefined; + +const persistSoon = (projects: PlanerProject[]) => { + window.clearTimeout(saveTimer); + saveTimer = window.setTimeout(() => void saveProjects(projects), 350); +}; + +const updateActiveProject = ( + state: PlanerState, + updater: (project: PlanerProject) => PlanerProject +) => { + if (!state.activeProjectId) return state.projects; + const projects = state.projects.map((project) => + project.id === state.activeProjectId + ? { ...updater(project), updatedAt: new Date().toISOString() } + : project + ); + persistSoon(projects); + return projects; +}; + +export const usePlanerStore = create((set) => ({ + projects: [], + activeProjectId: null, + view: "launcher", + hydrated: false, + + hydrate: async () => { + const projects = await loadProjects(); + set({ projects, hydrated: true }); + }, + + createProject: (name) => + set((state) => { + const project = createProject(name); + const projects = [project, ...state.projects]; + void saveProjects(projects); + return { projects, activeProjectId: project.id, view: "workspace" }; + }), + + openProject: (projectId) => set({ activeProjectId: projectId, view: "workspace" }), + closeProject: () => set({ activeProjectId: null, view: "launcher" }), + + deleteProject: (projectId) => + set((state) => { + const projects = state.projects.filter((project) => project.id !== projectId); + void saveProjects(projects); + return { projects }; + }), + + renameProject: (name) => + set((state) => ({ + projects: updateActiveProject(state, (project) => ({ + ...project, + name: name.trim() || project.name + })) + })), + + setTheme: (theme) => + set((state) => ({ + projects: updateActiveProject(state, (project) => ({ + ...project, + settings: { ...project.settings, theme } + })) + })), + + setActiveBoard: (boardId) => + set((state) => ({ + projects: updateActiveProject(state, (project) => ({ ...project, activeBoardId: boardId })) + })), + + addBoard: () => + set((state) => ({ + projects: updateActiveProject(state, (project) => { + const board = createBoard(`Board ${project.boards.length + 1}`, project.boards.length); + return { ...project, activeBoardId: board.id, boards: [...project.boards, board] }; + }) + })), + + renameBoard: (boardId, name) => + set((state) => ({ + projects: updateActiveProject(state, (project) => ({ + ...project, + boards: project.boards.map((board) => + board.id === boardId ? { ...board, name: name.trim() || board.name } : board + ) + })) + })), + + duplicateBoard: (boardId) => + set((state) => ({ + projects: updateActiveProject(state, (project) => { + const source = project.boards.find((board) => board.id === boardId); + if (!source) return project; + const board = { + ...source, + id: crypto.randomUUID(), + name: `${source.name} Copy`, + order: project.boards.length, + scene: structuredClone(source.scene) + }; + return { ...project, activeBoardId: board.id, boards: [...project.boards, board] }; + }) + })), + + deleteBoard: (boardId) => + set((state) => ({ + projects: updateActiveProject(state, (project) => { + if (project.boards.length === 1) return project; + const boards = project.boards + .filter((board) => board.id !== boardId) + .map((board, order) => ({ ...board, order })); + return { + ...project, + boards, + activeBoardId: project.activeBoardId === boardId ? boards[0].id : project.activeBoardId + }; + }) + })), + + updateBoardScene: (boardId, scene) => + set((state) => ({ + projects: updateActiveProject(state, (project) => ({ + ...project, + boards: project.boards.map((board) => + board.id === boardId ? { ...board, scene } : board + ) + })) + })) +})); diff --git a/src/styles/index.css b/src/styles/index.css new file mode 100644 index 0000000..67564b1 --- /dev/null +++ b/src/styles/index.css @@ -0,0 +1,134 @@ +:root { + font-family: Inter, "Segoe UI Variable", "Segoe UI", system-ui, sans-serif; + color: #17213a; + background: #f7f8fb; + font-synthesis: none; + text-rendering: optimizeLegibility; +} + +* { box-sizing: border-box; } +html, body, #root { width: 100%; height: 100%; margin: 0; overflow: hidden; } +button, input { font: inherit; } +button { color: inherit; } + +.app-loading { + height: 100%; display: grid; place-items: center; color: #667085; background: #f7f8fb; +} + +.brand { display: inline-flex; align-items: center; gap: 10px; color: #182039; text-decoration: none; font: 700 20px/1 Inter, "Segoe UI", sans-serif; } +.brand-mark { width: 25px; height: 25px; position: relative; display: inline-block; flex: none; } +.brand-mark span { position: absolute; display: block; background: #625cf6; border-radius: 3px; transform: rotate(-16deg); } +.brand-mark span:nth-child(1) { width: 6px; height: 19px; left: 3px; top: 3px; } +.brand-mark span:nth-child(2) { width: 6px; height: 14px; left: 10px; top: 5px; background: #8d87ff; } +.brand-mark span:nth-child(3) { width: 6px; height: 10px; left: 17px; top: 7px; background: #bab7ff; } + +.launcher { height: 100%; overflow: auto; background: radial-gradient(circle at 50% -20%, #ebeaff 0, transparent 40%), #f8f9fc; } +.launcher-header { height: 76px; max-width: 1180px; margin: 0 auto; padding: 0 34px; display: flex; align-items: center; justify-content: space-between; } +.version-badge { color: #7a8298; font-size: 12px; border: 1px solid #e1e3eb; background: rgba(255,255,255,.74); border-radius: 999px; padding: 7px 11px; } +.launcher-hero { max-width: 760px; margin: 78px auto 92px; padding: 0 28px; text-align: center; } +.eyebrow { display: inline-flex; align-items: center; gap: 7px; padding: 7px 12px; border: 1px solid #dad8ff; background: #f0efff; color: #5a54de; border-radius: 999px; font-size: 13px; font-weight: 600; } +.launcher-hero h1 { margin: 24px 0 18px; color: #141a2d; font: 700 clamp(40px, 6vw, 66px)/1.07 Inter, "Segoe UI", sans-serif; letter-spacing: -3.4px; } +.launcher-hero h1 span { color: #6863ed; } +.launcher-hero p { max-width: 620px; margin: 0 auto 30px; color: #626a80; font-size: 18px; line-height: 1.65; } +.primary-button, .secondary-button, .export-button { border: 0; border-radius: 10px; padding: 11px 16px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; cursor: pointer; font-weight: 600; } +.primary-button { color: white; background: #625cf6; box-shadow: 0 8px 24px rgba(98,92,246,.24); } +.primary-button:hover { background: #554fe8; transform: translateY(-1px); } +.secondary-button { color: #465067; background: #f1f2f6; } + +.recent-section { max-width: 1180px; margin: 0 auto; padding: 0 34px 80px; } +.section-heading { display: flex; align-items: end; justify-content: space-between; margin-bottom: 20px; } +.section-kicker { color: #8b92a4; font-size: 12px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; } +.section-heading h2 { margin: 5px 0 0; color: #20283d; font: 700 24px/1.3 Inter, "Segoe UI", sans-serif; } +.project-count { color: #8b92a4; font-size: 13px; } +.project-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; } +.new-project-card, .project-card { min-height: 184px; border: 1px solid #e3e5ed; border-radius: 16px; background: rgba(255,255,255,.85); box-shadow: 0 8px 30px rgba(28,36,63,.045); } +.new-project-card { padding: 26px; display: flex; flex-direction: column; justify-content: center; align-items: center; cursor: pointer; border-style: dashed; } +.new-project-card:hover, .project-card:hover { border-color: #bbb8ff; box-shadow: 0 12px 32px rgba(82,77,190,.10); transform: translateY(-2px); } +.new-card-icon { width: 48px; height: 48px; display: grid; place-items: center; margin-bottom: 15px; color: #615bf1; background: #efefff; border-radius: 14px; } +.new-project-card strong { font-size: 15px; } +.new-project-card small { margin-top: 5px; color: #9298aa; } +.project-card { position: relative; overflow: hidden; } +.project-open-area { width: 100%; height: 100%; padding: 18px; border: 0; background: transparent; display: grid; grid-template-columns: 105px 1fr 24px; gap: 16px; align-items: center; text-align: left; cursor: pointer; } +.project-thumbnail { height: 118px; border: 1px solid #e8e8f0; border-radius: 12px; background-color: #f9f9fd; background-image: radial-gradient(#d9dbe6 .8px, transparent .8px); background-size: 10px 10px; position: relative; } +.mini-node { position: absolute; width: 38px; height: 24px; border: 2px solid #7974f4; border-radius: 5px; background: white; } +.node-a { left: 13px; top: 24px; }.node-b { right: 12px; bottom: 22px; } +.mini-line { position: absolute; width: 46px; border-top: 2px solid #a9a6f8; left: 31px; top: 59px; transform: rotate(34deg); } +.project-info { min-width: 0; display: flex; flex-direction: column; } +.project-info strong { margin-bottom: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 16px; } +.project-info small { display: flex; align-items: center; gap: 6px; margin: 3px 0; color: #8b92a4; } +.open-arrow { color: #a2a8b7; } +.icon-button { width: 36px; height: 36px; border: 0; border-radius: 9px; display: grid; place-items: center; color: #667085; background: transparent; cursor: pointer; } +.icon-button:hover { color: #403bd0; background: #eeedff; } +.delete-project { position: absolute; right: 10px; top: 10px; opacity: 0; } +.project-card:hover .delete-project { opacity: 1; } +.delete-project:hover { color: #c4364d; background: #fff0f2; } + +.modal-backdrop { position: fixed; inset: 0; z-index: 1000; display: grid; place-items: center; padding: 22px; background: rgba(24,28,43,.38); backdrop-filter: blur(8px); } +.create-dialog { width: min(440px, 100%); padding: 34px; border: 1px solid rgba(255,255,255,.65); border-radius: 20px; background: white; box-shadow: 0 28px 80px rgba(20,24,44,.22); } +.dialog-icon { width: 46px; height: 46px; display: grid; place-items: center; margin-bottom: 20px; background: #f0efff; border-radius: 13px; } +.create-dialog h2 { margin: 0 0 8px; font: 700 24px Inter, "Segoe UI", sans-serif; } +.create-dialog p { margin: 0 0 24px; color: #737b8e; line-height: 1.5; } +.create-dialog label { display: block; margin-bottom: 8px; font-size: 13px; font-weight: 600; } +.create-dialog input { width: 100%; padding: 12px 13px; border: 1px solid #d9dce6; outline: none; border-radius: 10px; color: #20283d; } +.create-dialog input:focus { border-color: #7772f4; box-shadow: 0 0 0 3px #eeedff; } +.dialog-actions { margin-top: 24px; display: flex; justify-content: flex-end; gap: 10px; } + +.workspace { --shell: #fff; --shell-border: #e4e6ed; --shell-text: #20273a; --muted: #7a8295; height: 100%; display: grid; grid-template-rows: 58px 1fr 46px; color: var(--shell-text); background: #f8f9fc; } +.workspace[data-theme="dark"] { --shell: #23242a; --shell-border: #393a42; --shell-text: #f1f2f6; --muted: #a5a8b3; background: #191a1f; } +.workspace-topbar { z-index: 20; min-width: 0; padding: 0 14px; border-bottom: 1px solid var(--shell-border); display: flex; align-items: center; justify-content: space-between; background: var(--shell); } +.workspace-left, .workspace-actions { display: flex; align-items: center; gap: 8px; min-width: 0; } +.brand.compact { font-size: 17px; color: var(--shell-text); }.brand.compact .brand-mark { transform: scale(.82); } +.back-button { display: none; } +.topbar-divider { width: 1px; height: 24px; margin: 0 5px; background: var(--shell-border); } +.project-title-button { min-width: 0; border: 0; border-radius: 8px; padding: 7px 9px; display: flex; align-items: center; gap: 7px; color: var(--muted); background: transparent; cursor: pointer; } +.project-title-button strong { max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--shell-text); } +.project-title-button:hover { background: rgba(125,125,150,.1); } +.export-menu, .board-menu { position: relative; } +.export-menu summary, .board-menu summary { list-style: none; }.export-menu summary::-webkit-details-marker, .board-menu summary::-webkit-details-marker { display: none; } +.export-button { padding: 8px 13px; color: white; background: #625cf6; font-size: 13px; } +.menu-popover { position: absolute; z-index: 100; right: 0; top: calc(100% + 8px); width: 190px; padding: 6px; border: 1px solid var(--shell-border); border-radius: 11px; background: var(--shell); box-shadow: 0 14px 35px rgba(20,24,40,.16); } +.menu-popover button { width: 100%; border: 0; border-radius: 7px; padding: 9px 10px; display: flex; align-items: center; gap: 9px; color: var(--shell-text); background: transparent; cursor: pointer; text-align: left; font-size: 13px; } +.menu-popover button:hover { background: rgba(125,125,150,.12); } +.menu-popover .brand-mark { width: 16px; height: 16px; transform: scale(.62); transform-origin: left center; margin-right: -4px; } + +.canvas-host { position: relative; min-height: 0; overflow: hidden; } +.canvas-host .excalidraw { --color-primary: #625cf6; --color-primary-darker: #514bdd; --color-primary-darkest: #403ac4; } +.canvas-host .excalidraw .App-menu_top { top: 10px; } + +.board-bar { z-index: 20; min-width: 0; padding: 0 15px; border-top: 1px solid var(--shell-border); display: flex; align-items: center; gap: 13px; background: var(--shell); } +.board-label { color: var(--muted); font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; } +.board-tabs { min-width: 0; flex: 1; display: flex; align-items: center; gap: 4px; overflow-x: auto; scrollbar-width: none; } +.board-tabs::-webkit-scrollbar { display: none; } +.board-tab-wrap { height: 33px; flex: none; border-radius: 8px; display: flex; align-items: center; } +.board-tab-wrap.active { background: #eeedff; }.workspace[data-theme="dark"] .board-tab-wrap.active { background: #39364f; } +.board-tab { border: 0; padding: 8px 11px; color: var(--muted); background: transparent; cursor: pointer; font-size: 13px; } +.board-tab-wrap.active .board-tab { color: #554fe8; font-weight: 600; }.workspace[data-theme="dark"] .board-tab-wrap.active .board-tab { color: #bbb8ff; } +.board-menu summary { width: 26px; height: 28px; display: grid; place-items: center; color: var(--muted); cursor: pointer; } +.board-menu-popover { right: -5px; bottom: 35px; top: auto; width: 140px; } +.menu-popover .danger-item { color: #cf4158; }.menu-popover button:disabled { opacity: .35; pointer-events: none; } +.add-board { width: 29px; height: 29px; flex: none; border: 1px solid var(--shell-border); border-radius: 8px; display: grid; place-items: center; color: var(--muted); background: transparent; cursor: pointer; } +.add-board:hover { color: #5b55ec; border-color: #aaa6ff; background: #eeedff; } +.autosave-status { flex: none; display: flex; align-items: center; gap: 7px; color: var(--muted); font-size: 11px; } +.autosave-status span { width: 6px; height: 6px; border-radius: 50%; background: #3eb489; box-shadow: 0 0 0 3px rgba(62,180,137,.12); } + +@media (max-width: 900px) { + .project-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } + .launcher-hero { margin-top: 48px; } +} + +@media (max-width: 640px) { + .launcher-header, .recent-section { padding-left: 18px; padding-right: 18px; } + .version-badge { display: none; } + .launcher-hero { margin-bottom: 58px; } + .launcher-hero h1 { letter-spacing: -2px; } + .project-grid { grid-template-columns: 1fr; } + .back-button { display: grid; } + .workspace-topbar { padding: 0 8px; } + .brand.compact, .topbar-divider, .project-title-button span { display: none; } + .project-title-button strong { max-width: 145px; } + .autosave-status, .board-label { display: none; } +} + +@media (prefers-reduced-motion: no-preference) { + button, .project-card, .new-project-card { transition: color .16s ease, background .16s ease, border-color .16s ease, box-shadow .16s ease, transform .16s ease, opacity .16s ease; } +} diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..2bbc1cc --- /dev/null +++ b/src/types.ts @@ -0,0 +1,32 @@ +import type { AppState, BinaryFiles } from "@excalidraw/excalidraw/types"; +import type { ExcalidrawElement } from "@excalidraw/excalidraw/element/types"; + +export type PlanerTheme = "light" | "dark"; + +export interface BoardScene { + elements: readonly ExcalidrawElement[]; + appState: Partial; + files: BinaryFiles; +} + +export interface PlanerBoard { + id: string; + name: string; + order: number; + scene: BoardScene; +} + +export interface PlanerProject { + format: "planer"; + version: 1; + id: string; + name: string; + createdAt: string; + updatedAt: string; + activeBoardId: string; + settings: { + theme: PlanerTheme; + gridEnabled: boolean; + }; + boards: PlanerBoard[]; +} diff --git a/teams.html b/teams.html deleted file mode 100644 index 421376d..0000000 --- a/teams.html +++ /dev/null @@ -1 +0,0 @@ -dummy diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 0000000..a520e1a --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2022", + "useDefineForClassFields": true, + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "moduleResolution": "Bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + "noUnusedLocals": true, + "noUnusedParameters": true + }, + "include": ["src"] +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..1ffef60 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..2eb3184 --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2023", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + "moduleResolution": "Bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "types": ["node"], + "noEmit": true, + "strict": true + }, + "include": ["vite.config.ts", "eslint.config.js"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..551590f --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,16 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; + +const host = process.env.TAURI_DEV_HOST; + +export default defineConfig({ + plugins: [react()], + clearScreen: false, + server: { + port: 1420, + strictPort: true, + host: host || false, + hmr: host ? { protocol: "ws", host, port: 1421 } : undefined, + watch: { ignored: ["**/src-tauri/**"] } + } +}); From b3558fcc6b0c72e80a25b23d6bd02abeaba78efb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=AAsufian=20nasser=E2=80=AC=E2=80=8F?= <166199800+sufyanaser@users.noreply.github.com> Date: Sat, 8 Aug 2026 06:01:15 +0300 Subject: [PATCH 2/3] chore(repo): prepare Planer 0.1.0 release Version: 0.1.0 - Added manual CI dispatch and concurrency protection - Added Planer security and conduct policies - Expanded the README with product highlights and release status - Verified npm ci, lint, production build, and workflow YAML --- .github/workflows/ci.yml | 5 +++++ CHANGELOG.md | 1 + CODE_OF_CONDUCT.md | 17 +++++++++++++++++ README.md | 18 +++++++++++++++++- SECURITY.md | 25 +++++++++++++++++++++++++ 5 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 CODE_OF_CONDUCT.md create mode 100644 SECURITY.md diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 26906df..1c76b71 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,6 +1,7 @@ name: Planer CI on: + workflow_dispatch: push: branches: [develop, main] pull_request: @@ -9,6 +10,10 @@ on: permissions: contents: read +concurrency: + group: planer-ci-${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: quality: runs-on: ubuntu-latest diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e31d48..b043e9f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ All notable changes to Planer are documented here. - Light and dark appearance support. - `.planer` and `.excalidraw` JSON exports. - Windows CI workflow for lint, web build, and Tauri installer artifacts. +- Manual CI dispatch, concurrency protection, and repository governance documents. ### Removed diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..c01deda --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,17 @@ +# Code of Conduct + +## Our standard + +Planer welcomes constructive participation. Contributors are expected to communicate professionally, critique ideas rather than people, respect differing experience and viewpoints, and keep technical discussions focused on improving the project. + +Unacceptable behavior includes harassment, discrimination, threats, deliberate disruption, publication of private information, or sustained personal attacks. + +## Scope + +This policy applies to repository issues, pull requests, reviews, discussions, and other spaces where a participant represents the Planer project. + +## Enforcement + +Report conduct concerns privately to the repository owner through their GitHub profile. Reports will be reviewed in confidence. Project maintainers may edit or remove content, reject contributions, restrict participation, or ban participants when behavior conflicts with this policy. + +Enforcement decisions will consider context, severity, recurrence, and impact on the community and project. diff --git a/README.md b/README.md index 025b595..0cff1ba 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,17 @@ # Planer -Planer is a fast, local-first visual planning workspace for Windows. It combines a focused desktop shell with the Excalidraw canvas engine and a project model that supports multiple boards. +Planer is a fast, local-first visual planning workspace for Windows. Open, draw, connect, organize, explain, and export without an account or cloud dependency. + +> **Status:** `0.1.0` baseline. Active development happens on `develop`; stable desktop releases are promoted to `main` after verification. + +## Highlights + +- Infinite canvas powered by the Excalidraw engine. +- Multiple boards inside one visual-planning project. +- Local IndexedDB persistence with automatic saving. +- `.planer` and `.excalidraw` exports. +- Light and dark appearance modes. +- Native Windows packaging through Tauri v2. ## Stack @@ -42,3 +53,8 @@ See [`docs/PLANER_PRODUCT_BLUEPRINT_V1.md`](docs/PLANER_PRODUCT_BLUEPRINT_V1.md) ## License Planer licensing is pending a project-owner decision. Legacy draw.io licensing and citation files were removed with the legacy scaffold. + +## Security and conduct + +- Report vulnerabilities privately using [GitHub Security Advisories](../../security/advisories/new). +- Participation is governed by the [Code of Conduct](CODE_OF_CONDUCT.md). diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..745bd3f --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,25 @@ +# Security Policy + +## Supported versions + +Planer is currently in its initial development phase. Security fixes are applied to the latest published version only. + +| Version | Supported | +| --- | --- | +| 0.1.x | Yes | +| Earlier versions | No | + +## Reporting a vulnerability + +Please do not disclose suspected vulnerabilities in public issues or discussions. + +Use the repository's **Security** tab to open a private vulnerability report through GitHub Security Advisories. Include: + +- the affected Planer version; +- operating system and architecture; +- clear reproduction steps; +- the expected and observed behavior; +- impact and any suggested mitigation; +- supporting logs, screenshots, or proof of concept where appropriate. + +The maintainer will acknowledge a complete report as soon as practical, assess its impact, and coordinate remediation and disclosure. Do not access data that is not yours, degrade services, or perform destructive testing while investigating. From b4f01ea4d7429a2a7a24b1f43b526ca25b55e2d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=AAsufian=20nasser=E2=80=AC=E2=80=8F?= <166199800+sufyanaser@users.noreply.github.com> Date: Sat, 8 Aug 2026 06:09:53 +0300 Subject: [PATCH 3/3] docs: rewrite Planer README --- README.md | 263 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 234 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 0cff1ba..6736cec 100644 --- a/README.md +++ b/README.md @@ -1,60 +1,265 @@ +
+ # Planer -Planer is a fast, local-first visual planning workspace for Windows. Open, draw, connect, organize, explain, and export without an account or cloud dependency. +**A focused, local-first visual planning workspace for Windows.** + +Open → Draw → Connect → Organize → Explain → Export + +![Version](https://img.shields.io/badge/version-0.1.0-2563eb) +![Platform](https://img.shields.io/badge/platform-Windows-0f172a) +![Tauri](https://img.shields.io/badge/Tauri-v2-24c8db) +![Development](https://img.shields.io/badge/status-active%20development-f59e0b) + +
+ +> [!IMPORTANT] +> Planer is currently an early `0.1.0` baseline. The core workspace is functional, but the application is not yet a stable public release. Active development happens on `develop`; verified releases are promoted to `main`. + +## What is Planer? + +Planer is a lightweight desktop application for visual thinking, diagramming, and workflow planning. It combines the Excalidraw canvas engine with a dedicated project and multi-board workspace while keeping data on the user's device. + +It is designed for work such as: + +- flowcharts, mind maps, and concept maps; +- system, API, database, and user-flow diagrams; +- broadcast, studio, and production workflows; +- project architecture and feature planning; +- visual notes and technical explanations. + +Planer is inspired by the speed and directness of modern infinite-canvas tools, but it is being developed as an independent product rather than an Excalidraw fork or a draw.io derivative. + +## Available in `0.1.0` + +### Workspace + +- Infinite canvas powered by `@excalidraw/excalidraw`. +- Standard drawing, text, connector, selection, grouping, alignment, zoom, and editing tools provided by the canvas engine. +- Focused desktop shell with light and dark appearance modes. +- Project and active-board identity in the workspace header. + +### Projects and boards + +- Local project launcher with recent projects. +- Create, open, rename, and delete projects. +- Multiple boards inside each project. +- Create, switch, rename, duplicate, and delete boards. +- Independent scene data for every board. + +### Local data and export -> **Status:** `0.1.0` baseline. Active development happens on `develop`; stable desktop releases are promoted to `main` after verification. +- Automatic local persistence through IndexedDB. +- Debounced autosave while editing. +- Export an entire project as `.planer` JSON. +- Export the active board as `.excalidraw` JSON. +- No account, login, cloud service, or network dependency for normal workspace use. -## Highlights +## Product model -- Infinite canvas powered by the Excalidraw engine. -- Multiple boards inside one visual-planning project. -- Local IndexedDB persistence with automatic saving. -- `.planer` and `.excalidraw` exports. -- Light and dark appearance modes. -- Native Windows packaging through Tauri v2. +A Planer project is a portable visual workspace containing its metadata, settings, and boards: -## Stack +```text +NAS APP.planer +├── Overview +├── Architecture +├── User Flow +├── Database +└── Notes +``` + +The current `.planer` export is JSON-based. Import, packaged assets, migration guarantees, and a finalized public file specification remain future work; do not treat the `0.1.0` structure as a stable interchange contract yet. + +## Privacy and offline behavior + +Planer follows a local-first model: + +- project state is stored in the application's local IndexedDB database; +- canvas changes are saved automatically on the device; +- no telemetry, analytics, account system, or cloud synchronization is implemented; +- deleting application data or browser/WebView storage may remove locally saved projects. + +Until native file import and backup workflows are completed, export important projects regularly as `.planer` files. + +## Installation + +Planer targets Windows through Tauri v2. The repository includes CI configuration for NSIS and MSI installers, but `0.1.0` should be considered development software until a verified installer is published under [Releases](../../releases). -- Tauri v2 -- React + TypeScript + Vite -- `@excalidraw/excalidraw` -- Zustand -- Lucide +For development builds, follow the setup below. -## Development +## Development setup + +### Requirements + +- Node.js 20 or newer +- npm 10 or newer +- Rust stable toolchain +- Tauri v2 Windows prerequisites, including Microsoft C++ Build Tools and WebView2 + +See the official [Tauri prerequisites](https://v2.tauri.app/start/prerequisites/) for platform-specific setup. + +### Run the web workspace ```bash -npm install +git clone https://github.com/sufyanaser/Planer.git +cd Planer +git switch develop +npm ci npm run dev ``` -Quality gates: +Vite serves the application at `http://localhost:1420` by default. + +### Run the desktop application + +```bash +npm run tauri dev +``` + +### Quality gates + +Every meaningful change must pass both checks before it is committed or pushed: ```bash npm run lint npm run build ``` -Desktop development requires the Rust and Tauri system prerequisites: +### Build Windows installers + +On a configured Windows development machine: ```bash -npm run tauri dev +npm run tauri build +``` + +Tauri produces the configured NSIS and MSI bundles under `src-tauri/target/release/bundle/`. + +## Scripts + +| Command | Purpose | +| --- | --- | +| `npm run dev` | Start the Vite development server | +| `npm run build` | Type-check and build the production web bundle | +| `npm run lint` | Run ESLint with zero warnings allowed | +| `npm run preview` | Preview the production web build | +| `npm run tauri dev` | Run Planer in the Tauri desktop shell | +| `npm run tauri build` | Build native desktop installers | + +## Architecture + +```mermaid +flowchart TD + A[Planer AppShell] --> B[Project Launcher] + A --> C[Workspace] + C --> D[Board Management] + C --> E[Excalidraw Canvas] + D --> F[Zustand Store] + E --> F + F --> G[IndexedDB Persistence] + F --> H[Planer / Excalidraw Export] +``` + +| Layer | Technology | Responsibility | +| --- | --- | --- | +| Desktop shell | Tauri v2 | Native Windows window and installer packaging | +| Interface | React 18 + TypeScript | Launcher, workspace, board bar, and contextual actions | +| Build system | Vite 7 | Development server and production frontend bundle | +| Canvas | Excalidraw 0.18 | Drawing and scene interaction engine | +| State | Zustand 5 | Project, board, theme, and active-view state | +| Persistence | IndexedDB | Local project storage and autosave | +| Icons | Lucide React | Application interface icons | + +## Repository structure + +```text +Planer/ +├── .github/workflows/ # Quality checks and Windows packaging +├── docs/ # Product and architecture documents +├── src/ +│ ├── components/ # Launcher, workspace, canvas, and board UI +│ ├── services/ # Project creation and local persistence +│ ├── store/ # Zustand application state +│ ├── styles/ # Application styles +│ └── types.ts # Project and board data contracts +├── src-tauri/ # Tauri configuration, Rust shell, and icons +├── CHANGELOG.md +└── package.json ``` -## Branches +## Development workflow + +| Branch | Role | +| --- | --- | +| `develop` | Source of truth for active development | +| `main` | Verified stable versions only | -- `develop` is the source of truth for active development. -- `main` contains stable releases only. +The project is developed in small operational phases: -## Product scope +1. make a focused change on `develop`; +2. run `npm run lint`; +3. run `npm run build`; +4. inspect Git status and the final diff; +5. bump the version when the change produces a new installed build; +6. update `CHANGELOG.md`; +7. commit and push only after all gates pass; +8. build and verify the Windows installer before promoting a release. -See [`docs/PLANER_PRODUCT_BLUEPRINT_V1.md`](docs/PLANER_PRODUCT_BLUEPRINT_V1.md). +## Roadmap + +### Foundation + +- [x] Tauri, React, TypeScript, and Vite baseline +- [x] Project launcher and workspace shell +- [x] Excalidraw canvas integration +- [x] Project and multi-board state model +- [x] IndexedDB autosave baseline +- [x] `.planer` and `.excalidraw` export +- [ ] Verified Windows installer release +- [ ] Native project open/import and backup workflow + +### Core product layer + +- [ ] Stable `.planer` file specification and migrations +- [ ] Native filesystem persistence through Tauri +- [ ] Board reordering and project-level search +- [ ] PNG, SVG, PDF, and clipboard export workflows +- [ ] Grid and snap controls integrated into the Planer shell +- [ ] Automated tests and end-to-end desktop verification + +### Structured planning + +- [ ] Smart planning nodes +- [ ] Quick Connect +- [ ] Auto Layout +- [ ] Templates +- [ ] Search across boards + +The complete product definition is documented in [`docs/PLANER_PRODUCT_BLUEPRINT_V1.md`](docs/PLANER_PRODUCT_BLUEPRINT_V1.md). + +## Deliberate V1 boundaries + +To protect speed and stability, V1 does not include accounts, cloud sync, team workspaces, real-time collaboration, chat, video, AI, a plugin marketplace, Kanban management, 3D, animation, or a presentation engine. + +## Contributing + +Planer is in active foundational development. Before proposing a large feature, open an issue to confirm that it fits the product scope and current phase. Keep pull requests focused and include the validation commands used. + +Security issues must not be reported through a public issue. Use [GitHub's private vulnerability reporting](https://github.com/sufyanaser/Planer/security/advisories/new) instead. + +## Changelog + +Release history and notable changes are recorded in [`CHANGELOG.md`](CHANGELOG.md). ## License -Planer licensing is pending a project-owner decision. Legacy draw.io licensing and citation files were removed with the legacy scaffold. +No open-source license has been selected yet. Until a license is added, the repository is **not** implicitly open source and no permission is granted to copy, modify, or redistribute the code beyond rights provided by applicable law. + +Legacy draw.io files and licensing metadata were removed when the current Planer architecture replaced the previous scaffold. -## Security and conduct +--- -- Report vulnerabilities privately using [GitHub Security Advisories](../../security/advisories/new). -- Participation is governed by the [Code of Conduct](CODE_OF_CONDUCT.md). +
+ Planer
+ Visual planning that stays focused and stays local. +
+
+ + + Planer + + Local workspace · v0.1.0 +
+ +
+
Visual thinking, without the friction
+

Make complex ideas
clear and connected.

+

Plan systems, map workflows, and explain projects on a focused canvas that stays on your device.

+ +
+ +
+
+
+ Your workspace +

Recent projects

+
+ {projects.length} {projects.length === 1 ? "project" : "projects"} +
+ +
+ + + {projects.map((project) => ( +
+ + +
+ ))} +
+
+ + {showCreate && ( +
setShowCreate(false)}> +
event.stopPropagation()}> + +

Create a project

+

Give the workspace a clear name. You can rename it anytime.

+ + setProjectName(event.target.value)} + placeholder="e.g. NAS APP Architecture" + maxLength={80} + /> +
+ + +
+
+
+ )} +