gitextract_4kyu4h7x/ ├── .dockerignore ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ └── feature_request.yml │ ├── PULL_REQUEST_TEMPLATE.md │ ├── dependabot.yml │ └── workflows/ │ ├── dependabot-automerge.yml │ ├── docker.yml │ ├── e2e-tests.yml │ ├── e2e-tests.yml.backup │ ├── ethicalcheck.yml │ ├── pages.yml │ ├── release.yml │ └── test.yml ├── .gitignore ├── .npmignore ├── .nvmrc ├── .prettierrc ├── .releaserc.json ├── CHANGELOG.md ├── CONTRIBUTING.md ├── Dockerfile ├── FOSSFLOW_ENCYCLOPEDIA.md ├── LICENSE ├── README.md ├── compose.dev.yml ├── compose.yml ├── docker-entrypoint.sh ├── docs/ │ ├── README.bn.md │ ├── README.cn.md │ ├── README.de.md │ ├── README.es.md │ ├── README.fr.md │ ├── README.hi.md │ ├── README.id.md │ ├── README.pt.md │ ├── README.ru.md │ └── SEMANTIC_RELEASE.md ├── e2e-tests/ │ ├── .gitignore │ ├── README.md │ ├── SETUP.md │ ├── get-docker.sh │ ├── pytest.ini │ ├── requirements.txt │ ├── run-tests.sh │ ├── test-base-paths.sh │ ├── test-diagram.json │ └── tests/ │ ├── test_base_path_routing.py │ ├── test_basic_load.py │ ├── test_connector_undo.py │ ├── test_export_svg.py │ ├── test_import_diagram.py │ ├── test_multi_node_undo.py │ ├── test_node_placement.py │ ├── test_rect_text_undo.py │ └── test_store_debug.py ├── nginx.conf ├── package.json ├── packages/ │ ├── fossflow-app/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── public/ │ │ │ ├── i18n/ │ │ │ │ └── app/ │ │ │ │ ├── bn-BD.json │ │ │ │ ├── de-DE.json │ │ │ │ ├── en-US.json │ │ │ │ ├── es-ES.json │ │ │ │ ├── fr-FR.json │ │ │ │ ├── hi-IN.json │ │ │ │ ├── id-ID.json │ │ │ │ ├── it-IT.json │ │ │ │ ├── pt-BR.json │ │ │ │ ├── ru-RU.json │ │ │ │ ├── tr-TR.json │ │ │ │ └── zh-CN.json │ │ │ ├── index.html │ │ │ ├── manifest.json │ │ │ ├── robots.txt │ │ │ └── service-worker.js │ │ ├── rsbuild.config.ts │ │ ├── src/ │ │ │ ├── App.css │ │ │ ├── App.tsx │ │ │ ├── EditorPage.tsx │ │ │ ├── StorageManager.tsx │ │ │ ├── components/ │ │ │ │ ├── ChangeLanguage/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── styles.css │ │ │ │ ├── DiagramManager.css │ │ │ │ ├── DiagramManager.tsx │ │ │ │ ├── ErrorBoundary.css │ │ │ │ └── ErrorBoundary.tsx │ │ │ ├── diagramUtils.ts │ │ │ ├── env.d.ts │ │ │ ├── i18n/ │ │ │ │ ├── bn-BD.json │ │ │ │ ├── en-US.json │ │ │ │ ├── es-ES.json │ │ │ │ ├── fr-FR.json │ │ │ │ ├── hi-IN.json │ │ │ │ ├── it-IT.json │ │ │ │ ├── pl-PL.json │ │ │ │ ├── pt-BR.json │ │ │ │ ├── ru-RU.json │ │ │ │ ├── tr-TR.json │ │ │ │ └── zh-CN.json │ │ │ ├── i18n.ts │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── minimalIcons.ts │ │ │ ├── paymentFlowExample.json │ │ │ ├── reportWebVitals.ts │ │ │ ├── serviceWorkerRegistration.ts │ │ │ ├── services/ │ │ │ │ ├── iconPackManager.ts │ │ │ │ └── storageService.ts │ │ │ └── usePersistedDiagram.ts │ │ └── tsconfig.json │ ├── fossflow-backend/ │ │ ├── package.json │ │ └── server.js │ └── fossflow-lib/ │ ├── .gitignore │ ├── LICENSE │ ├── docs/ │ │ ├── .gitignore │ │ ├── next-env.d.ts │ │ ├── next.config.js │ │ ├── package.json │ │ ├── pages/ │ │ │ ├── _meta.json │ │ │ ├── docs/ │ │ │ │ ├── _meta.json │ │ │ │ ├── api/ │ │ │ │ │ ├── _meta.json │ │ │ │ │ ├── index.mdx │ │ │ │ │ └── initialData.mdx │ │ │ │ ├── contributing.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── installation.mdx │ │ │ │ ├── isopacks.mdx │ │ │ │ └── quickstart.mdx │ │ │ └── index.tsx │ │ ├── theme.config.tsx │ │ └── tsconfig.json │ ├── jest.config.js │ ├── jest.setup.js │ ├── package.json │ ├── rslib.config.ts │ ├── src/ │ │ ├── Isoflow.tsx │ │ ├── components/ │ │ │ ├── Circle/ │ │ │ │ └── Circle.tsx │ │ │ ├── ColorSelector/ │ │ │ │ ├── ColorPicker.tsx │ │ │ │ ├── ColorSelector.tsx │ │ │ │ ├── ColorSwatch.tsx │ │ │ │ ├── CustomColorInput.tsx │ │ │ │ └── __tests__/ │ │ │ │ ├── ColorSelector.test.tsx │ │ │ │ └── CustomColorInput.test.tsx │ │ │ ├── ConnectorEmptySpaceTooltip/ │ │ │ │ └── ConnectorEmptySpaceTooltip.tsx │ │ │ ├── ConnectorHintTooltip/ │ │ │ │ └── ConnectorHintTooltip.tsx │ │ │ ├── ConnectorRerouteTooltip/ │ │ │ │ └── ConnectorRerouteTooltip.tsx │ │ │ ├── ConnectorSettings/ │ │ │ │ └── ConnectorSettings.tsx │ │ │ ├── ContextMenu/ │ │ │ │ ├── ContextMenu.tsx │ │ │ │ └── ContextMenuManager.tsx │ │ │ ├── Cursor/ │ │ │ │ └── Cursor.tsx │ │ │ ├── DOMErrorBoundary/ │ │ │ │ ├── DOMErrorBoundary.tsx │ │ │ │ └── index.ts │ │ │ ├── DebugUtils/ │ │ │ │ ├── DebugUtils.tsx │ │ │ │ ├── LineItem.tsx │ │ │ │ ├── SizeIndicator.tsx │ │ │ │ ├── Value.tsx │ │ │ │ └── __tests__/ │ │ │ │ ├── DebugUtils.test.tsx │ │ │ │ ├── LineItem.test.tsx │ │ │ │ ├── SizeIndicator.test.tsx │ │ │ │ └── Value.test.tsx │ │ │ ├── DragAndDrop/ │ │ │ │ └── DragAndDrop.tsx │ │ │ ├── ExportImageDialog/ │ │ │ │ └── ExportImageDialog.tsx │ │ │ ├── FreehandLasso/ │ │ │ │ └── FreehandLasso.tsx │ │ │ ├── Gradient/ │ │ │ │ └── Gradient.tsx │ │ │ ├── Grid/ │ │ │ │ └── Grid.tsx │ │ │ ├── HelpDialog/ │ │ │ │ └── HelpDialog.tsx │ │ │ ├── HotkeySettings/ │ │ │ │ └── HotkeySettings.tsx │ │ │ ├── IconButton/ │ │ │ │ └── IconButton.tsx │ │ │ ├── IconPackSettings/ │ │ │ │ └── IconPackSettings.tsx │ │ │ ├── ImportHintTooltip/ │ │ │ │ └── ImportHintTooltip.tsx │ │ │ ├── IsoTileArea/ │ │ │ │ └── IsoTileArea.tsx │ │ │ ├── ItemControls/ │ │ │ │ ├── ConnectorControls/ │ │ │ │ │ └── ConnectorControls.tsx │ │ │ │ ├── IconSelectionControls/ │ │ │ │ │ ├── Icon.tsx │ │ │ │ │ ├── IconCollection.tsx │ │ │ │ │ ├── IconGrid.tsx │ │ │ │ │ ├── IconSelectionControls.tsx │ │ │ │ │ ├── Icons.tsx │ │ │ │ │ ├── Searchbox.tsx │ │ │ │ │ └── __tests__/ │ │ │ │ │ └── Icon.test.tsx │ │ │ │ ├── ItemControlsManager.tsx │ │ │ │ ├── NodeControls/ │ │ │ │ │ ├── NodeControls.tsx │ │ │ │ │ ├── NodeSettings/ │ │ │ │ │ │ └── NodeSettings.tsx │ │ │ │ │ └── QuickIconSelector.tsx │ │ │ │ ├── RectangleControls/ │ │ │ │ │ └── RectangleControls.tsx │ │ │ │ ├── TextBoxControls/ │ │ │ │ │ └── TextBoxControls.tsx │ │ │ │ └── components/ │ │ │ │ ├── ControlsContainer.tsx │ │ │ │ ├── DeleteButton.tsx │ │ │ │ ├── Header.tsx │ │ │ │ └── Section.tsx │ │ │ ├── Label/ │ │ │ │ ├── ExpandButton.tsx │ │ │ │ ├── ExpandableLabel.tsx │ │ │ │ ├── Label.tsx │ │ │ │ └── __tests__/ │ │ │ │ └── Label.test.tsx │ │ │ ├── LabelSettings/ │ │ │ │ └── LabelSettings.tsx │ │ │ ├── Lasso/ │ │ │ │ └── Lasso.tsx │ │ │ ├── LassoHintTooltip/ │ │ │ │ └── LassoHintTooltip.tsx │ │ │ ├── LazyLoadingWelcomeNotification/ │ │ │ │ └── LazyLoadingWelcomeNotification.tsx │ │ │ ├── Loader/ │ │ │ │ └── Loader.tsx │ │ │ ├── MainMenu/ │ │ │ │ ├── MainMenu.tsx │ │ │ │ └── MenuItem.tsx │ │ │ ├── PanSettings/ │ │ │ │ └── PanSettings.tsx │ │ │ ├── Renderer/ │ │ │ │ └── Renderer.tsx │ │ │ ├── RichTextEditor/ │ │ │ │ ├── RichTextEditor.tsx │ │ │ │ ├── RichTextEditorErrorBoundary.tsx │ │ │ │ └── index.ts │ │ │ ├── SceneLayer/ │ │ │ │ └── SceneLayer.tsx │ │ │ ├── SceneLayers/ │ │ │ │ ├── ConnectorLabels/ │ │ │ │ │ ├── ConnectorLabel.tsx │ │ │ │ │ └── ConnectorLabels.tsx │ │ │ │ ├── Connectors/ │ │ │ │ │ ├── Connector.tsx │ │ │ │ │ └── Connectors.tsx │ │ │ │ ├── Nodes/ │ │ │ │ │ ├── Node/ │ │ │ │ │ │ ├── IconTypes/ │ │ │ │ │ │ │ ├── IsometricIcon.tsx │ │ │ │ │ │ │ └── NonIsometricIcon.tsx │ │ │ │ │ │ └── Node.tsx │ │ │ │ │ └── Nodes.tsx │ │ │ │ ├── Rectangles/ │ │ │ │ │ ├── Rectangle.tsx │ │ │ │ │ └── Rectangles.tsx │ │ │ │ └── TextBoxes/ │ │ │ │ ├── TextBox.tsx │ │ │ │ └── TextBoxes.tsx │ │ │ ├── SettingsDialog/ │ │ │ │ └── SettingsDialog.tsx │ │ │ ├── Svg/ │ │ │ │ └── Svg.tsx │ │ │ ├── ToolMenu/ │ │ │ │ └── ToolMenu.tsx │ │ │ ├── TransformControlsManager/ │ │ │ │ ├── NodeTransformControls.tsx │ │ │ │ ├── RectangleTransformControls.tsx │ │ │ │ ├── TextBoxTransformControls.tsx │ │ │ │ ├── TransformAnchor.tsx │ │ │ │ ├── TransformControls.tsx │ │ │ │ └── TransformControlsManager.tsx │ │ │ ├── UiElement/ │ │ │ │ └── UiElement.tsx │ │ │ ├── UiOverlay/ │ │ │ │ └── UiOverlay.tsx │ │ │ ├── ZoomControls/ │ │ │ │ └── ZoomControls.tsx │ │ │ └── ZoomSettings/ │ │ │ └── ZoomSettings.tsx │ │ ├── config/ │ │ │ ├── hotkeys.ts │ │ │ ├── labelSettings.ts │ │ │ ├── panSettings.ts │ │ │ └── zoomSettings.ts │ │ ├── config.ts │ │ ├── examples/ │ │ │ ├── BasicEditor/ │ │ │ │ └── BasicEditor.tsx │ │ │ ├── DebugTools/ │ │ │ │ └── DebugTools.tsx │ │ │ ├── ReadonlyMode/ │ │ │ │ └── ReadonlyMode.tsx │ │ │ ├── index.tsx │ │ │ └── initialData.ts │ │ ├── fixtures/ │ │ │ ├── colors.ts │ │ │ ├── icons.ts │ │ │ ├── model.ts │ │ │ ├── modelItems.ts │ │ │ └── views.ts │ │ ├── global.d.ts │ │ ├── hooks/ │ │ │ ├── __tests__/ │ │ │ │ ├── useHistory.test.tsx │ │ │ │ └── useInitialDataManager.test.tsx │ │ │ ├── useColor.ts │ │ │ ├── useConnector.ts │ │ │ ├── useDiagramUtils.ts │ │ │ ├── useHistory.ts │ │ │ ├── useIcon.tsx │ │ │ ├── useIconCategories.ts │ │ │ ├── useIconFiltering.ts │ │ │ ├── useInitialDataManager.ts │ │ │ ├── useIsoProjection.ts │ │ │ ├── useModelItem.ts │ │ │ ├── useRectangle.ts │ │ │ ├── useResizeObserver.ts │ │ │ ├── useScene.ts │ │ │ ├── useTextBox.ts │ │ │ ├── useTextBoxProps.ts │ │ │ ├── useView.ts │ │ │ ├── useViewItem.ts │ │ │ └── useWindowUtils.ts │ │ ├── i18n/ │ │ │ ├── bn-BD.ts │ │ │ ├── en-US.ts │ │ │ ├── es-ES.ts │ │ │ ├── fr-FR.ts │ │ │ ├── hi-IN.ts │ │ │ ├── id-ID.ts │ │ │ ├── index.ts │ │ │ ├── it-IT.ts │ │ │ ├── pl-PL.ts │ │ │ ├── pt-BR.ts │ │ │ ├── ru-RU.ts │ │ │ ├── tr-TR.ts │ │ │ └── zh-CN.ts │ │ ├── index-docker.tsx │ │ ├── index.html │ │ ├── index.ts │ │ ├── index.tsx │ │ ├── interaction/ │ │ │ ├── modes/ │ │ │ │ ├── Connector.ts │ │ │ │ ├── Cursor.ts │ │ │ │ ├── DragItems.ts │ │ │ │ ├── FreehandLasso.ts │ │ │ │ ├── Lasso.ts │ │ │ │ ├── Pan.ts │ │ │ │ ├── PlaceIcon.ts │ │ │ │ ├── Rectangle/ │ │ │ │ │ ├── DrawRectangle.ts │ │ │ │ │ └── TransformRectangle.ts │ │ │ │ └── TextBox.ts │ │ │ ├── useInteractionManager.ts │ │ │ └── usePanHandlers.ts │ │ ├── module.d.ts │ │ ├── schemas/ │ │ │ ├── __tests__/ │ │ │ │ ├── colors.test.ts │ │ │ │ ├── connector.test.ts │ │ │ │ ├── icons.test.ts │ │ │ │ ├── modelItems.test.ts │ │ │ │ ├── rectangle.test.ts │ │ │ │ ├── textBox.test.ts │ │ │ │ ├── validation.test.ts │ │ │ │ └── views.test.ts │ │ │ ├── colors.ts │ │ │ ├── common.ts │ │ │ ├── connector.ts │ │ │ ├── icons.ts │ │ │ ├── index.ts │ │ │ ├── model.ts │ │ │ ├── modelItems.ts │ │ │ ├── rectangle.ts │ │ │ ├── textBox.ts │ │ │ ├── validation.ts │ │ │ └── views.ts │ │ ├── standaloneExports.ts │ │ ├── stores/ │ │ │ ├── localeStore.tsx │ │ │ ├── modelStore.tsx │ │ │ ├── reducers/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── connector.test.ts │ │ │ │ │ ├── modelItem.test.ts │ │ │ │ │ ├── rectangle.test.ts │ │ │ │ │ ├── textBox.test.ts │ │ │ │ │ └── viewItem.test.ts │ │ │ │ ├── connector.ts │ │ │ │ ├── index.ts │ │ │ │ ├── modelItem.ts │ │ │ │ ├── rectangle.ts │ │ │ │ ├── textBox.ts │ │ │ │ ├── types.ts │ │ │ │ ├── view.ts │ │ │ │ └── viewItem.ts │ │ │ ├── sceneStore.tsx │ │ │ └── uiStateStore.tsx │ │ ├── styles/ │ │ │ ├── GlobalStyles.tsx │ │ │ └── theme.ts │ │ ├── types/ │ │ │ ├── common.ts │ │ │ ├── dom-to-image-more.d.ts │ │ │ ├── index.ts │ │ │ ├── interactions.ts │ │ │ ├── isoflowProps.ts │ │ │ ├── model.ts │ │ │ ├── rendererProps.ts │ │ │ ├── scene.ts │ │ │ └── ui.ts │ │ └── utils/ │ │ ├── CoordsUtils.ts │ │ ├── SizeUtils.ts │ │ ├── __tests__/ │ │ │ ├── common.test.ts │ │ │ ├── immer.test.ts │ │ │ └── renderer.test.ts │ │ ├── common.ts │ │ ├── connectorLabels.ts │ │ ├── exportOptions.ts │ │ ├── findNearestUnoccupiedTile.ts │ │ ├── index.ts │ │ ├── model.ts │ │ ├── pathfinder.ts │ │ ├── pointInPolygon.ts │ │ └── renderer.ts │ ├── tsconfig.declaration.json │ ├── tsconfig.dev.json │ └── tsconfig.json ├── scripts/ │ └── update-version.js ├── test-app.html ├── test-base-paths.sh └── tsconfig.base.json