flea-qml 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +511 -2
- package/THIRD-PARTY-NOTICES.md +29 -0
- package/demos/App.java +5 -0
- package/demos/Dockerfile +4 -0
- package/demos/Main.kt +3 -0
- package/demos/Program.cs +1 -0
- package/demos/README.md +12 -0
- package/demos/app.dart +3 -0
- package/demos/app.deb +0 -0
- package/demos/app.js +1 -0
- package/demos/backup.tar +0 -0
- package/demos/budget.xlsx +0 -0
- package/demos/build.sh +2 -0
- package/demos/bundle.zip +0 -0
- package/demos/clip.mp4 +0 -0
- package/demos/data.sqlite +0 -0
- package/demos/disk.iso +0 -0
- package/demos/engine.cpp +5 -0
- package/demos/firmware.bin +0 -0
- package/demos/flake.nix +4 -0
- package/demos/folder/inside.txt +1 -0
- package/demos/font.ttf +0 -0
- package/demos/index.html +5 -0
- package/demos/index.php +2 -0
- package/demos/init.lua +1 -0
- package/demos/letter.docx +0 -0
- package/demos/lib.rs +3 -0
- package/demos/main.c +6 -0
- package/demos/main.h +3 -0
- package/demos/math-and-diagrams.md +200 -0
- package/demos/notes.tar.gz +0 -0
- package/demos/notes.txt +3 -0
- package/demos/photo.png +0 -0
- package/demos/program +2 -0
- package/demos/report.pdf +32 -0
- package/demos/script.py +1 -0
- package/demos/server.go +7 -0
- package/demos/settings.json +4 -0
- package/demos/slides.pptx +0 -0
- package/demos/song.mp3 +0 -0
- package/demos/style.css +4 -0
- package/demos/tool.rb +1 -0
- package/demos/types.ts +2 -0
- package/docs/pele.md +23 -0
- package/docs/protocol.md +3420 -0
- package/docs/temml.md +63 -0
- package/index.js +107 -0
- package/package.json +34 -4
- package/src/archive.js +407 -0
- package/src/archiveops.js +728 -0
- package/src/backend.js +369 -0
- package/src/bulkrename.js +95 -0
- package/src/clip-host.js +76 -0
- package/src/clip.js +462 -0
- package/src/code.js +168 -0
- package/src/compare.js +74 -0
- package/src/create.js +128 -0
- package/src/dirsize.js +147 -0
- package/src/figure-svg.js +530 -0
- package/src/figure-thread.js +23 -0
- package/src/figure.js +132 -0
- package/src/find.js +55 -0
- package/src/flea.js +39 -0
- package/src/fsinfo.js +39 -0
- package/src/highlight.js +141 -0
- package/src/html.js +52 -0
- package/src/kinds.js +89 -0
- package/src/listing.js +130 -0
- package/src/markdown-html.js +317 -0
- package/src/mathml.js +186 -0
- package/src/menu.js +180 -0
- package/src/meta.js +135 -0
- package/src/office.js +810 -0
- package/src/order.js +100 -0
- package/src/peek.js +49 -0
- package/src/pele-wrapper.js +695 -0
- package/src/permissions.js +180 -0
- package/src/places.js +313 -0
- package/src/preview-language.js +10 -0
- package/src/terminal-server.js +95 -0
- package/src/terminal-shell.js +26 -0
- package/src/transfer.js +669 -0
- package/src/trash-record.js +41 -0
- package/src/trash.js +210 -0
- package/src/trashbrowse.js +327 -0
- package/src/uistate.js +393 -0
- package/src/uistore.js +168 -0
- package/src/vendor/LICENSES/Apache-2.0.txt +202 -0
- package/src/vendor/LICENSES/MIT-katex-2015.txt +27 -0
- package/src/vendor/LICENSES/MIT-katex.txt +21 -0
- package/src/vendor/LICENSES/MIT-mermaid.txt +21 -0
- package/src/vendor/LICENSES/MIT-pele.txt +40 -0
- package/src/vendor/LICENSES/MIT-perseus.txt +18 -0
- package/src/vendor/LICENSES/MIT-temml.txt +21 -0
- package/src/vendor/pele.js +145 -0
- package/src/vendor/temml.mjs +14708 -0
- package/src/watch.js +98 -0
- package/src/wayland/client.js +109 -0
- package/src/wayland/protocol.js +55 -0
- package/src/wayland/protocols/ext-data-control-v1.xml +276 -0
- package/src/wayland/protocols/wayland.xml +3248 -0
- package/src/wayland/protocols/wlr-data-control-unstable-v1.xml +278 -0
- package/src/wayland/resource-io.js +6 -0
- package/src/wayland/socket-discovery.js +26 -0
- package/src/wayland/transport-posix.js +120 -0
- package/src/wayland/transport-win32.js +11 -0
- package/src/wayland/transport.js +3 -0
- package/src/wayland/win32-resources.js +80 -0
- package/src/wayland/win32-wire.js +62 -0
- package/test/archive.test.js +80 -0
- package/test/bench-markdown-scroll.mjs +190 -0
- package/test/clip-host.test.js +113 -0
- package/test/code-preview.test.js +35 -0
- package/test/compare-ui-paths.test.js +24 -0
- package/test/compare.test.js +54 -0
- package/test/delete-trash.test.js +67 -0
- package/test/dirsize.test.js +138 -0
- package/test/file-ops.test.js +307 -0
- package/test/file-url.test.js +24 -0
- package/test/find-contents.test.js +161 -0
- package/test/find-input.test.js +66 -0
- package/test/fixtures/pele-parity.json +1006 -0
- package/test/highlight-launcher.test.js +35 -0
- package/test/html-preview.test.js +22 -0
- package/test/input.test.js +15 -0
- package/test/keymap.test.js +26 -0
- package/test/language-icons.test.js +36 -0
- package/test/launcher.test.js +51 -0
- package/test/manual-archive-here-ui.mjs +47 -0
- package/test/manual-code-scroll.mjs +28 -0
- package/test/manual-column-scroll.mjs +24 -0
- package/test/manual-compare-ui.mjs +20 -0
- package/test/manual-find-status.mjs +37 -0
- package/test/manual-folder-focus.mjs +63 -0
- package/test/manual-html-security.mjs +23 -0
- package/test/manual-html-ui.mjs +30 -0
- package/test/manual-syntax-preview.mjs +26 -0
- package/test/manual-terminal-lifecycle.mjs +42 -0
- package/test/manual-terminal-navigation.mjs +48 -0
- package/test/manual-terminal-ui.mjs +47 -0
- package/test/manual-trash-ui.mjs +86 -0
- package/test/markdown-diagrams.test.js +93 -0
- package/test/markdown-html.test.js +105 -0
- package/test/mathml.test.js +92 -0
- package/test/menu-transfer.test.js +57 -0
- package/test/office-preview.test.js +154 -0
- package/test/pele-parity.test.js +28 -0
- package/test/places.test.js +134 -0
- package/test/preview-keys.test.js +60 -0
- package/test/preview-language.test.js +22 -0
- package/test/status-filename.test.js +20 -0
- package/test/transfer-replace-merge.test.js +187 -0
- package/test/trash-address.test.js +23 -0
- package/test/trash-view.test.js +37 -0
- package/test/trashbrowse.test.js +135 -0
- package/ui/AboutFacts.qml +78 -0
- package/ui/ArchiveCards.qml +95 -0
- package/ui/ArchiveCompressDialog.qml +378 -0
- package/ui/ArchiveHereConfirm.qml +127 -0
- package/ui/ArchivePasswordDialog.qml +257 -0
- package/ui/Backend.qml +775 -0
- package/ui/BulkOldNames.qml +47 -0
- package/ui/BulkRenameDialog.qml +380 -0
- package/ui/CardFrame.qml +67 -0
- package/ui/CardScroll.qml +79 -0
- package/ui/CheckBox.qml +73 -0
- package/ui/ChromeBar.qml +360 -0
- package/ui/ChromeButton.qml +131 -0
- package/ui/ChromeModes.qml +43 -0
- package/ui/CodeLines.qml +256 -0
- package/ui/CodeRefusal.qml +52 -0
- package/ui/CollideConfirm.qml +147 -0
- package/ui/CollideHost.qml +167 -0
- package/ui/ColumnPane.qml +525 -0
- package/ui/ColumnRow.qml +380 -0
- package/ui/ColumnsArea.qml +594 -0
- package/ui/ColumnsLanding.qml +147 -0
- package/ui/CompareView.qml +321 -0
- package/ui/ContextMenu.qml +743 -0
- package/ui/ConvertDialog.qml +456 -0
- package/ui/CountedWorker.qml +7 -0
- package/ui/Crumb.qml +64 -0
- package/ui/CrumbDrop.qml +25 -0
- package/ui/CsvTable.qml +394 -0
- package/ui/CursorMark.qml +41 -0
- package/ui/DefaultClaim.qml +130 -0
- package/ui/DeviceLock.qml +47 -0
- package/ui/DeviceMounts.qml +540 -0
- package/ui/DialogButton.qml +150 -0
- package/ui/DialogField.qml +147 -0
- package/ui/DialogHeader.qml +31 -0
- package/ui/DialogScrim.qml +20 -0
- package/ui/DialogTitle.qml +37 -0
- package/ui/Divider.qml +9 -0
- package/ui/DropInto.qml +126 -0
- package/ui/DropTarget.qml +35 -0
- package/ui/DropboxMark.qml +60 -0
- package/ui/EmptyState.qml +150 -0
- package/ui/EscapeHint.qml +11 -0
- package/ui/FactsTable.qml +54 -0
- package/ui/FastScrollHandler.qml +476 -0
- package/ui/FatNamesConfirm.qml +157 -0
- package/ui/Favourites.qml +143 -0
- package/ui/FigureService.qml +120 -0
- package/ui/FileDrag.qml +267 -0
- package/ui/FilterStrip.qml +133 -0
- package/ui/FitMetrics.qml +22 -0
- package/ui/FlashDriveRows.qml +137 -0
- package/ui/FlashHost.qml +72 -0
- package/ui/FlashImageRow.qml +104 -0
- package/ui/FlashRunner.qml +119 -0
- package/ui/FlashStepRow.qml +172 -0
- package/ui/FlashStrip.qml +38 -0
- package/ui/FlashView.qml +397 -0
- package/ui/FleaMark.qml +88 -0
- package/ui/FlyoutFade.qml +23 -0
- package/ui/FontPane.qml +170 -0
- package/ui/Glass.qml +114 -0
- package/ui/GlassTagger.qml +59 -0
- package/ui/Glyph.qml +64 -0
- package/ui/GlyphSolid.qml +22 -0
- package/ui/GridArea.qml +664 -0
- package/ui/GridTile.qml +325 -0
- package/ui/GvfsBridge.qml +164 -0
- package/ui/Header.qml +433 -0
- package/ui/HoverTimers.qml +39 -0
- package/ui/HtmlClip.qml +30 -0
- package/ui/HtmlPane.qml +63 -0
- package/ui/HyprlandMark.qml +45 -0
- package/ui/Ipc.qml +1005 -0
- package/ui/IpcControls.qml +7 -0
- package/ui/IpcMenuState.qml +48 -0
- package/ui/IpcPreviewState.qml +185 -0
- package/ui/JumpPath.qml +51 -0
- package/ui/KeymapSheet.qml +561 -0
- package/ui/KeymapSheetResult.qml +89 -0
- package/ui/KindStack.qml +40 -0
- package/ui/LangMark.qml +51 -0
- package/ui/LangMarkLoader.qml +26 -0
- package/ui/List.qml +480 -0
- package/ui/LoadingState.qml +54 -0
- package/ui/LocalSend.qml +56 -0
- package/ui/LocalSendMark.qml +73 -0
- package/ui/MarkdownBlockView.qml +311 -0
- package/ui/MarkdownBlocks.qml +35 -0
- package/ui/MarkdownFigure.qml +254 -0
- package/ui/MarkdownImages.qml +72 -0
- package/ui/MarkdownList.qml +81 -0
- package/ui/MarkdownMathsText.qml +97 -0
- package/ui/MarkdownPane.qml +83 -0
- package/ui/MarkdownPictures.qml +41 -0
- package/ui/MarkdownQuote.qml +52 -0
- package/ui/MarkdownRemote.qml +82 -0
- package/ui/MarkdownSource.qml +155 -0
- package/ui/MarkdownTable.qml +222 -0
- package/ui/MarkdownTableScroll.qml +64 -0
- package/ui/MarkdownTableWheel.qml +126 -0
- package/ui/MarkdownText.qml +87 -0
- package/ui/MarkdownWorker.js +132 -0
- package/ui/MatchText.qml +99 -0
- package/ui/MediaSession.qml +38 -0
- package/ui/MediaSound.qml +26 -0
- package/ui/MediaStrip.qml +191 -0
- package/ui/MediaTrack.qml +36 -0
- package/ui/MediaVolume.qml +54 -0
- package/ui/MenuActionDialog.qml +396 -0
- package/ui/MenuEdgeFade.qml +24 -0
- package/ui/MenuHost.qml +227 -0
- package/ui/MenuRow.qml +351 -0
- package/ui/MountListing.qml +100 -0
- package/ui/NetworkDialog.qml +435 -0
- package/ui/NetworkForm.qml +426 -0
- package/ui/NetworkMounts.qml +913 -0
- package/ui/NetworkPlaces.qml +127 -0
- package/ui/OpenWithDialog.qml +613 -0
- package/ui/Opener.qml +95 -0
- package/ui/Pane.qml +1320 -0
- package/ui/PaneMenuActions.qml +527 -0
- package/ui/PanePath.qml +90 -0
- package/ui/PaneRail.qml +268 -0
- package/ui/PaneStates.qml +88 -0
- package/ui/PaneSwap.qml +339 -0
- package/ui/PaneWire.qml +601 -0
- package/ui/ParkedWait.qml +9 -0
- package/ui/PathEntry.qml +186 -0
- package/ui/PathJump.qml +400 -0
- package/ui/PdfViewer.qml +297 -0
- package/ui/PermissionsDialog.qml +658 -0
- package/ui/PermissionsHeadings.qml +31 -0
- package/ui/PhoneMounts.qml +67 -0
- package/ui/PickerAnswers.qml +75 -0
- package/ui/PickerBox.qml +26 -0
- package/ui/PickerChrome.qml +295 -0
- package/ui/PickerFilter.qml +97 -0
- package/ui/PickerGrid.qml +308 -0
- package/ui/PickerHeader.qml +28 -0
- package/ui/PickerLifecycle.qml +27 -0
- package/ui/PickerList.qml +218 -0
- package/ui/PickerListing.qml +149 -0
- package/ui/PickerPathBar.qml +127 -0
- package/ui/PickerPlaces.qml +189 -0
- package/ui/PickerRecent.qml +92 -0
- package/ui/PickerSave.qml +101 -0
- package/ui/PickerSelection.qml +155 -0
- package/ui/PickerWindow.qml +846 -0
- package/ui/PowerSectorsReader.qml +10 -0
- package/ui/PrebuildDriver.qml +146 -0
- package/ui/Preview.qml +1005 -0
- package/ui/PreviewAnimation.qml +24 -0
- package/ui/PreviewArchive.qml +91 -0
- package/ui/PreviewColumn.qml +553 -0
- package/ui/PreviewEdge.qml +63 -0
- package/ui/PreviewFacts.qml +30 -0
- package/ui/PreviewFactsLine.qml +34 -0
- package/ui/PreviewHtml.qml +233 -0
- package/ui/PreviewImage.qml +253 -0
- package/ui/PreviewImagePan.qml +13 -0
- package/ui/PreviewImageSharp.qml +32 -0
- package/ui/PreviewLines.qml +106 -0
- package/ui/PreviewMarkdown.qml +706 -0
- package/ui/PreviewMedia.qml +250 -0
- package/ui/PreviewPdf.qml +482 -0
- package/ui/PreviewScroll.qml +201 -0
- package/ui/PreviewSwap.qml +335 -0
- package/ui/PreviewText.qml +149 -0
- package/ui/ProtocolChip.qml +18 -0
- package/ui/QuickLookArchive.qml +41 -0
- package/ui/QuickLookBar.qml +103 -0
- package/ui/QuickLookPrepare.qml +355 -0
- package/ui/QuickLookSwap.qml +10 -0
- package/ui/QuickLookWarm.qml +65 -0
- package/ui/RailDrop.qml +155 -0
- package/ui/RailHeading.qml +19 -0
- package/ui/RailPlaces.qml +38 -0
- package/ui/RailTrashRow.qml +67 -0
- package/ui/RenameField.qml +353 -0
- package/ui/RendererRetry.qml +11 -0
- package/ui/ResizeHandle.qml +52 -0
- package/ui/Reveal.qml +54 -0
- package/ui/Row.qml +476 -0
- package/ui/RowDrag.qml +213 -0
- package/ui/RowDropTarget.qml +27 -0
- package/ui/RunCard.qml +286 -0
- package/ui/Scripts.qml +65 -0
- package/ui/SearchStrip.qml +232 -0
- package/ui/SelectionBand.qml +140 -0
- package/ui/SelectionPreview.qml +370 -0
- package/ui/SettingsFavourite.qml +122 -0
- package/ui/SettingsGroup.qml +96 -0
- package/ui/SettingsHint.qml +12 -0
- package/ui/SettingsMetrics.qml +29 -0
- package/ui/SettingsPane.qml +178 -0
- package/ui/SettingsPanel.qml +547 -0
- package/ui/SettingsRail.qml +128 -0
- package/ui/SettingsRow.qml +409 -0
- package/ui/SettingsRuler.qml +85 -0
- package/ui/SettingsSegment.qml +85 -0
- package/ui/ShareBrowser.qml +113 -0
- package/ui/ShareLink.qml +67 -0
- package/ui/ShelfPins.qml +101 -0
- package/ui/Sidebar.qml +728 -0
- package/ui/SidebarRow.qml +358 -0
- package/ui/Spinner.qml +60 -0
- package/ui/StableModel.qml +89 -0
- package/ui/StateMessage.qml +84 -0
- package/ui/StatusBar.qml +512 -0
- package/ui/StatusFileName.qml +27 -0
- package/ui/TabBar.qml +673 -0
- package/ui/TabDragGeometry.qml +60 -0
- package/ui/TagMenuMark.qml +52 -0
- package/ui/TagRailSection.qml +53 -0
- package/ui/TagSlot.qml +40 -0
- package/ui/TagState.qml +150 -0
- package/ui/TagSwatch.qml +28 -0
- package/ui/Taildrop.qml +86 -0
- package/ui/TailscaleMark.qml +50 -0
- package/ui/TerminalService.qml +69 -0
- package/ui/TerminalTab.qml +48 -0
- package/ui/TerminalTabs.qml +27 -0
- package/ui/Theme.qml +460 -0
- package/ui/ThemeColors.qml +43 -0
- package/ui/TransferCard.qml +239 -0
- package/ui/TrashConfirm.qml +129 -0
- package/ui/TrashDropHandler.qml +11 -0
- package/ui/TrashHost.qml +202 -0
- package/ui/TrashMonitor.qml +30 -0
- package/ui/TrashToolbar.qml +19 -0
- package/ui/TrashView.qml +492 -0
- package/ui/UnlockDialog.qml +450 -0
- package/ui/UnlockHost.qml +206 -0
- package/ui/UpdateCheck.qml +97 -0
- package/ui/UserDirs.qml +25 -0
- package/ui/ViewState.qml +565 -0
- package/ui/ViewportScrollBar.qml +195 -0
- package/ui/ViewportScrollBars.qml +25 -0
- package/ui/WebPreview.qml +33 -0
- package/ui/WebPreviewView.qml +26 -0
- package/ui/WindowBody.qml +829 -0
- package/ui/WindowDrag.qml +35 -0
- package/ui/boot/Commons/AudioNodes.qml +50 -0
- package/ui/boot/Commons/AudioNodesModel.js +96 -0
- package/ui/boot/Commons/Border.qml +243 -0
- package/ui/boot/Commons/BorderGeometry.js +373 -0
- package/ui/boot/Commons/Color.qml +258 -0
- package/ui/boot/Commons/I18n.qml +118 -0
- package/ui/boot/Commons/InputDevices.qml +112 -0
- package/ui/boot/Commons/InputMethodState.qml +38 -0
- package/ui/boot/Commons/IpcRegistry.qml +77 -0
- package/ui/boot/Commons/Numbers.js +19 -0
- package/ui/boot/Commons/Plural.js +91 -0
- package/ui/boot/Commons/ShellIpc.qml +12 -0
- package/ui/boot/Commons/Style.qml +561 -0
- package/ui/boot/Commons/Translations.qml +100 -0
- package/ui/boot/Commons/UntypedInput.qml +152 -0
- package/ui/boot/Commons/Util.qml +188 -0
- package/ui/boot/Commons/qmldir +13 -0
- package/ui/boot/LICENSE-omarchy +20 -0
- package/ui/boot/Ui/BackgroundMedia.qml +49 -0
- package/ui/boot/Ui/BarIconButton.qml +106 -0
- package/ui/boot/Ui/BarIconContent.qml +38 -0
- package/ui/boot/Ui/BarIndicator.qml +53 -0
- package/ui/boot/Ui/BarWidget.qml +50 -0
- package/ui/boot/Ui/BorderOverlay.qml +54 -0
- package/ui/boot/Ui/BorderSurface.qml +40 -0
- package/ui/boot/Ui/Button.qml +224 -0
- package/ui/boot/Ui/ButtonGroup.qml +131 -0
- package/ui/boot/Ui/ConfirmDialog.qml +134 -0
- package/ui/boot/Ui/CursorSurface.qml +42 -0
- package/ui/boot/Ui/Dropdown.qml +245 -0
- package/ui/boot/Ui/FilterInput.qml +26 -0
- package/ui/boot/Ui/IconContentBounds.qml +141 -0
- package/ui/boot/Ui/KeyboardPanel.qml +453 -0
- package/ui/boot/Ui/MultiSelect.qml +624 -0
- package/ui/boot/Ui/NumberField.qml +86 -0
- package/ui/boot/Ui/OpticalGlyph.qml +68 -0
- package/ui/boot/Ui/OverlayWindow.qml +102 -0
- package/ui/boot/Ui/Panel.qml +60 -0
- package/ui/boot/Ui/PanelActionButton.qml +105 -0
- package/ui/boot/Ui/PanelController.qml +16 -0
- package/ui/boot/Ui/PanelHero.qml +112 -0
- package/ui/boot/Ui/PanelKeyCatcher.qml +100 -0
- package/ui/boot/Ui/PanelSectionHeader.qml +31 -0
- package/ui/boot/Ui/PanelSeparator.qml +19 -0
- package/ui/boot/Ui/PanelSlider.qml +156 -0
- package/ui/boot/Ui/PanelToolTip.qml +50 -0
- package/ui/boot/Ui/PluginBarApi.qml +89 -0
- package/ui/boot/Ui/PointerMoveGate.qml +54 -0
- package/ui/boot/Ui/PopupCard.qml +181 -0
- package/ui/boot/Ui/ScreenMoveRemap.qml +43 -0
- package/ui/boot/Ui/SearchableDropdown.qml +354 -0
- package/ui/boot/Ui/SizedImage.qml +125 -0
- package/ui/boot/Ui/SpeedTestOverlay.qml +412 -0
- package/ui/boot/Ui/TextField.qml +58 -0
- package/ui/boot/Ui/Toggle.qml +118 -0
- package/ui/boot/Ui/ToggleSwitch.qml +115 -0
- package/ui/boot/Ui/WidgetButton.qml +172 -0
- package/ui/boot/Ui/qmldir +41 -0
- package/ui/boot/fleatab.qml +50 -0
- package/ui/boot/picker.qml +39 -0
- package/ui/boot/shell.qml +131 -0
- package/ui/boot/tabtearoff.qml +51 -0
- package/ui/js/Anchor.js +379 -0
- package/ui/js/AnchorHold.js +162 -0
- package/ui/js/Archive.js +157 -0
- package/ui/js/ArchiveCard.js +44 -0
- package/ui/js/ArchiveOps.js +44 -0
- package/ui/js/BackReturn.js +118 -0
- package/ui/js/BulkRename.js +100 -0
- package/ui/js/Buttons.js +54 -0
- package/ui/js/ChromeKeys.js +116 -0
- package/ui/js/ClipMarks.js +73 -0
- package/ui/js/ClipSelection.js +67 -0
- package/ui/js/Clipboard.js +179 -0
- package/ui/js/Cloud.js +97 -0
- package/ui/js/CodeRuns.js +72 -0
- package/ui/js/Collide.js +212 -0
- package/ui/js/ColumnFit.js +28 -0
- package/ui/js/ColumnMenu.js +111 -0
- package/ui/js/Columns.js +298 -0
- package/ui/js/ColumnsCarry.js +103 -0
- package/ui/js/Compare.js +74 -0
- package/ui/js/Contrast.js +157 -0
- package/ui/js/ControlReader.js +42 -0
- package/ui/js/Convert.js +52 -0
- package/ui/js/CopyAs.js +52 -0
- package/ui/js/Crumbs.js +178 -0
- package/ui/js/Csv.js +231 -0
- package/ui/js/Density.js +44 -0
- package/ui/js/Devices.js +440 -0
- package/ui/js/DirSizes.js +180 -0
- package/ui/js/Drag.js +360 -0
- package/ui/js/DragOut.js +166 -0
- package/ui/js/DropDev.js +52 -0
- package/ui/js/Dropbox.js +41 -0
- package/ui/js/Eject.js +217 -0
- package/ui/js/Errors.js +188 -0
- package/ui/js/ExtThumbs.js +115 -0
- package/ui/js/Facts.js +402 -0
- package/ui/js/FigureDate.js +14 -0
- package/ui/js/Filter.js +285 -0
- package/ui/js/Find.js +46 -0
- package/ui/js/Flash.js +184 -0
- package/ui/js/FlashCard.js +79 -0
- package/ui/js/FlashEndings.js +125 -0
- package/ui/js/FlashPane.js +116 -0
- package/ui/js/FleaBin.js +12 -0
- package/ui/js/Focus.js +504 -0
- package/ui/js/FolderSorts.js +108 -0
- package/ui/js/FolderViews.js +44 -0
- package/ui/js/Format.js +314 -0
- package/ui/js/Fuzzy.js +141 -0
- package/ui/js/GlassTag.js +72 -0
- package/ui/js/Grid.js +33 -0
- package/ui/js/GridGeometry.js +90 -0
- package/ui/js/GridNames.js +153 -0
- package/ui/js/GvfsBridge.js +200 -0
- package/ui/js/HostClipboard.js +29 -0
- package/ui/js/Icons.js +218 -0
- package/ui/js/Input.js +50 -0
- package/ui/js/Jump.js +200 -0
- package/ui/js/KeyName.js +64 -0
- package/ui/js/Keymap.js +401 -0
- package/ui/js/Kinds.js +164 -0
- package/ui/js/LICENSES/ISC-lucide.txt +43 -0
- package/ui/js/LangMarkPaths.js +47 -0
- package/ui/js/LangMarks.js +120 -0
- package/ui/js/Lists.js +11 -0
- package/ui/js/LocalSend.js +39 -0
- package/ui/js/LockedMenu.js +63 -0
- package/ui/js/MakeDefault.js +186 -0
- package/ui/js/MarkBox.js +7 -0
- package/ui/js/Markdown.js +119 -0
- package/ui/js/MarkdownLists.js +86 -0
- package/ui/js/MarkdownMaths.js +58 -0
- package/ui/js/MarkdownPictures.js +32 -0
- package/ui/js/MarkdownPrepared.js +139 -0
- package/ui/js/MarkdownTableFit.js +34 -0
- package/ui/js/Marks.js +148 -0
- package/ui/js/Marquee.js +96 -0
- package/ui/js/Match.js +93 -0
- package/ui/js/Material.js +109 -0
- package/ui/js/MdBlocks.js +437 -0
- package/ui/js/MdBreak.js +71 -0
- package/ui/js/MdChunks.js +70 -0
- package/ui/js/MdContainer.js +137 -0
- package/ui/js/MdDocument.js +337 -0
- package/ui/js/MdEmph.js +97 -0
- package/ui/js/MdEntity.js +108 -0
- package/ui/js/MdEntityTable.js +223 -0
- package/ui/js/MdEscape.js +59 -0
- package/ui/js/MdFront.js +37 -0
- package/ui/js/MdHold.js +32 -0
- package/ui/js/MdHtml.js +307 -0
- package/ui/js/MdHtmlBlock.js +290 -0
- package/ui/js/MdHtmlHeading.js +53 -0
- package/ui/js/MdHtmlImage.js +179 -0
- package/ui/js/MdInline.js +154 -0
- package/ui/js/MdItems.js +212 -0
- package/ui/js/MdLeaf.js +309 -0
- package/ui/js/MdLink.js +196 -0
- package/ui/js/MdMath.js +67 -0
- package/ui/js/MdParagraphs.js +138 -0
- package/ui/js/MdRefs.js +232 -0
- package/ui/js/MdResolve.js +226 -0
- package/ui/js/MdRun.js +300 -0
- package/ui/js/MdUrl.js +226 -0
- package/ui/js/Menu.js +514 -0
- package/ui/js/MenuContext.js +85 -0
- package/ui/js/MenuFit.js +13 -0
- package/ui/js/MenuRefresh.js +74 -0
- package/ui/js/MenuWheel.js +35 -0
- package/ui/js/Messages.js +186 -0
- package/ui/js/Motion.js +16 -0
- package/ui/js/Mounts.js +320 -0
- package/ui/js/MouseNav.js +13 -0
- package/ui/js/Nav.js +329 -0
- package/ui/js/NetFs.js +26 -0
- package/ui/js/OpenWith.js +83 -0
- package/ui/js/Ops.js +585 -0
- package/ui/js/Palette.js +33 -0
- package/ui/js/PathBar.js +260 -0
- package/ui/js/Permissions.js +179 -0
- package/ui/js/Phones.js +112 -0
- package/ui/js/Picker.js +353 -0
- package/ui/js/PlaceMenu.js +96 -0
- package/ui/js/Places.js +265 -0
- package/ui/js/PreviewAsk.js +21 -0
- package/ui/js/PreviewKeys.js +155 -0
- package/ui/js/PreviewSettle.js +29 -0
- package/ui/js/PreviewSwap.js +101 -0
- package/ui/js/PropertyFacts.js +144 -0
- package/ui/js/Protocols.js +296 -0
- package/ui/js/QuickLookKinds.js +27 -0
- package/ui/js/QuickLookRect.js +24 -0
- package/ui/js/RailDrop.js +51 -0
- package/ui/js/RailKeys.js +87 -0
- package/ui/js/RailMenu.js +133 -0
- package/ui/js/Recent.js +135 -0
- package/ui/js/RecentMode.js +156 -0
- package/ui/js/Reload.js +60 -0
- package/ui/js/Renderer.js +9 -0
- package/ui/js/RunFile.js +143 -0
- package/ui/js/Scripts.js +28 -0
- package/ui/js/Scroll.js +304 -0
- package/ui/js/ScrollOff.js +69 -0
- package/ui/js/Search.js +478 -0
- package/ui/js/Selection.js +97 -0
- package/ui/js/Settings.js +476 -0
- package/ui/js/SettingsAbout.js +97 -0
- package/ui/js/SettingsShelf.js +52 -0
- package/ui/js/SheetKeys.js +42 -0
- package/ui/js/SheetQuery.js +281 -0
- package/ui/js/ShelfPile.js +27 -0
- package/ui/js/SlowClick.js +53 -0
- package/ui/js/SlowOp.js +6 -0
- package/ui/js/Sort.js +134 -0
- package/ui/js/Startup.js +63 -0
- package/ui/js/StateWords.js +17 -0
- package/ui/js/Status.js +238 -0
- package/ui/js/Swap.js +166 -0
- package/ui/js/TabMove.js +39 -0
- package/ui/js/Tabs.js +751 -0
- package/ui/js/Tags.js +134 -0
- package/ui/js/Taildrop.js +128 -0
- package/ui/js/Tap.js +180 -0
- package/ui/js/TextSize.js +107 -0
- package/ui/js/Thumbs.js +158 -0
- package/ui/js/Transfer.js +172 -0
- package/ui/js/Trash.js +84 -0
- package/ui/js/TrashDates.js +47 -0
- package/ui/js/TrashDrop.js +64 -0
- package/ui/js/UiState.js +438 -0
- package/ui/js/Unlock.js +152 -0
- package/ui/js/Update.js +130 -0
- package/ui/js/UserDirs.js +56 -0
- package/ui/qmldir +230 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import QtQuick
|
|
2
|
+
import "js/ControlReader.js" as ControlReader
|
|
3
|
+
|
|
4
|
+
// The cohesion captures' reader, built by each cohesionControls call so no first frame compiles ControlReader.js.
|
|
5
|
+
QtObject {
|
|
6
|
+
function read(quick, top, kinds, alias): string { return ControlReader.read(quick, top, kinds, alias) }
|
|
7
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import QtQuick
|
|
2
|
+
import "js/Permissions.js" as Permissions
|
|
3
|
+
|
|
4
|
+
// Read-only menu observations: a retained asked path is not a pending read, so record the backend's receipt.
|
|
5
|
+
QtObject {
|
|
6
|
+
id: root
|
|
7
|
+
property var pane: null
|
|
8
|
+
property var fleaWindow: null
|
|
9
|
+
property var shebangReply: ({})
|
|
10
|
+
property var shebangLastReply: ({})
|
|
11
|
+
onPaneChanged: root.shebangReply = ({})
|
|
12
|
+
|
|
13
|
+
property Connections replies: Connections {
|
|
14
|
+
target: root.pane ? root.pane.backend : null
|
|
15
|
+
function onShebang(path, hasShebang, id) {
|
|
16
|
+
var reply = {pane: String(root.pane), path: path, hasShebang: hasShebang, id: id}
|
|
17
|
+
root.shebangLastReply = reply
|
|
18
|
+
if (Permissions.landsShebang(path, id, root.pane.shebangAsked, root.pane.shebangId))
|
|
19
|
+
root.shebangReply = reply
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// What each main-frame row laid out for itself (ui/MenuRow.qml parts), null for a row not built; never widestRow's answer.
|
|
24
|
+
function menuRows(menu) {
|
|
25
|
+
var rows = []
|
|
26
|
+
for (var i = 0; i < menu.entries.length; i++) { var it = menu.itemFor(i); rows.push(it ? it.parts() : null) }
|
|
27
|
+
return rows
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function state() {
|
|
31
|
+
var menu = root.pane.contextMenu()
|
|
32
|
+
var marked = root.pane.selectedIndices().map(function (index) {
|
|
33
|
+
var row = root.pane.rowFor(index)
|
|
34
|
+
return { index: index, name: row ? row.n : null, p: row ? row.p : null }
|
|
35
|
+
})
|
|
36
|
+
return JSON.stringify({pane: String(root.pane), opened: menu.opened, entries: menu.entries, cursor: menu.cursor,
|
|
37
|
+
snapshotReady: root.pane.menuActions.ready, snapshotId: root.pane.menuActions.requestId,
|
|
38
|
+
compareKinds: menu.compareKinds, snapshotKinds: root.pane.menuActions.selectedKinds,
|
|
39
|
+
snapshotIdentity: root.pane.menuActions.identity, menuSelectionIdentity: root.pane.menuSelectionIdentity(),
|
|
40
|
+
markedRows: marked,
|
|
41
|
+
shebangAsked: root.pane.shebangAsked, shebangHas: root.pane.rowHasShebang,
|
|
42
|
+
shebangId: root.pane.shebangId, shebangReply: root.shebangReply, shebangLastReply: root.shebangLastReply,
|
|
43
|
+
submenu: menu.submenuOpen, submenuCursor: menu.submenuCursor, submenuEntries: menu.submenuEntries,
|
|
44
|
+
frame: root.fleaWindow.rectOf(menu.frameItem), flyout: root.fleaWindow.rectOf(menu.submenuFrameItem),
|
|
45
|
+
workArea: menu.workArea, forHeader: menu.forHeader, forRail: menu.forRail, hasRow: menu.hasRow,
|
|
46
|
+
rows: root.menuRows(menu)})
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import QtQuick
|
|
2
|
+
import "." as Flea
|
|
3
|
+
import "js/Scroll.js" as Scroll
|
|
4
|
+
|
|
5
|
+
// Quick Look and its shared PDF readers report the surfaces already built by the pane.
|
|
6
|
+
QtObject {
|
|
7
|
+
id: root
|
|
8
|
+
|
|
9
|
+
property var fleaWindow: null
|
|
10
|
+
property var pane: null
|
|
11
|
+
readonly property var columns: root.pane ? root.pane.columnsArea : null
|
|
12
|
+
readonly property int textTailLimit: 4096
|
|
13
|
+
// Quick Look is built by its first open, so until then every reader answers the closed overlay's own values.
|
|
14
|
+
readonly property var look: root.pane && root.pane.preview ? root.pane.preview : root.idle
|
|
15
|
+
readonly property var idle: QtObject {
|
|
16
|
+
readonly property bool active: false
|
|
17
|
+
readonly property bool visible: false
|
|
18
|
+
readonly property bool isImage: false
|
|
19
|
+
readonly property bool isMedia: false
|
|
20
|
+
readonly property bool stripVisible: false
|
|
21
|
+
readonly property bool muted: Flea.MediaSound.muted
|
|
22
|
+
readonly property string kind: ""
|
|
23
|
+
readonly property string status: ""
|
|
24
|
+
readonly property int position: 0
|
|
25
|
+
readonly property int duration: 0
|
|
26
|
+
readonly property var muteMark: null
|
|
27
|
+
readonly property var seekSlider: null
|
|
28
|
+
readonly property var pdfItem: null
|
|
29
|
+
readonly property var markdownItem: null
|
|
30
|
+
function swapState() {
|
|
31
|
+
return { holding: false, capturing: false, fellBack: false, holds: 0, fallbacks: 0,
|
|
32
|
+
bursts: 0, heldFrames: 0, midFrames: 0, loadingFrames: 0, last: { ms: 0, end: "" } }
|
|
33
|
+
}
|
|
34
|
+
function openState() {
|
|
35
|
+
return { revealed: false, revealedEarly: false, landed: false, lookEmptyFrames: 0, revealCaps: 0 }
|
|
36
|
+
}
|
|
37
|
+
function surfaceItem() { return null }
|
|
38
|
+
function mediaLoaded() { return false }
|
|
39
|
+
function textShown() { return "" }
|
|
40
|
+
function markdownView() { return "" }
|
|
41
|
+
function markdownCloseState() { return "{}" }
|
|
42
|
+
function markdownEndGap() { return -1 }
|
|
43
|
+
function markdownScrollY() { return -1 }
|
|
44
|
+
function archiveNames() { return "" }
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// PaneSwap already exposes its wire; read that wire's actual floor without adding a pane alias.
|
|
48
|
+
function listingDropActive(): bool {
|
|
49
|
+
var wire = root.pane && root.pane.swap ? root.pane.swap.wire : null
|
|
50
|
+
if (!wire) return false
|
|
51
|
+
for (var i = 0; i < wire.children.length; i++) {
|
|
52
|
+
var floor = wire.children[i]
|
|
53
|
+
if (floor.enabled && floor.dest === root.pane.dropPath && floor.containsDrag === true) return true
|
|
54
|
+
}
|
|
55
|
+
return false
|
|
56
|
+
}
|
|
57
|
+
function previewOpen(): bool { return root.look.active }
|
|
58
|
+
// Read the column's mounted Markdown view, empty until its document is ready.
|
|
59
|
+
function columnMarkdownView(): string {
|
|
60
|
+
var column = root.pane.previewColumnItem
|
|
61
|
+
var markdown = column ? column.markdown : null
|
|
62
|
+
return column && column.visible && markdown && markdown.active && markdown.contentReady ? markdown.shownView : ""
|
|
63
|
+
}
|
|
64
|
+
function previewKind(): string { return root.look.kind }
|
|
65
|
+
function previewState(): string { return root.look.status }
|
|
66
|
+
function htmlState(column: bool): string {
|
|
67
|
+
var c = column && root.pane ? root.pane.previewColumnItem : null
|
|
68
|
+
var pane = column ? (c && c.isHtmlRow ? c.markdown : null)
|
|
69
|
+
: root.look.kind === "text" && root.look.isHtml ? root.look.markdownShown : null
|
|
70
|
+
var doc = pane ? (column ? pane : pane.document) : null
|
|
71
|
+
if (!doc) return "{}"
|
|
72
|
+
return doc.captureState(root.fleaWindow, column ? c : root.look, pane, column)
|
|
73
|
+
}
|
|
74
|
+
// Read the Compare pane and its real controls only after Quick Look has built it.
|
|
75
|
+
function compareState(): string {
|
|
76
|
+
var look = root.look
|
|
77
|
+
var compare = look.kind === "compare" ? look.surfaceItem() : null
|
|
78
|
+
if (!compare) return JSON.stringify({ opened: false })
|
|
79
|
+
var bar = compare.barGeometry()
|
|
80
|
+
var sentence = ""
|
|
81
|
+
for (var i = 0; i < compare.children.length; i++) {
|
|
82
|
+
var child = compare.children[i]
|
|
83
|
+
if (child.text !== undefined && child.visible) sentence = child.text
|
|
84
|
+
}
|
|
85
|
+
return JSON.stringify({ opened: look.active, visible: look.visible, landed: look.openState().landed,
|
|
86
|
+
ready: bar.ready, answer: compare.answer, title: bar.title.text, sentence: sentence,
|
|
87
|
+
patch: compare.patch, rows: compare.rows, mark: bar.markName,
|
|
88
|
+
titleCentre: root.fleaWindow.centreOf(bar.title), rect: root.fleaWindow.rectOf(compare),
|
|
89
|
+
controls: [bar.copy, bar.close].map(function (control, index) {
|
|
90
|
+
return { name: index === 0 ? "copy" : "close", label: index === 0 ? control.label : control.accessName,
|
|
91
|
+
visible: control.visible, enabled: control.enabled,
|
|
92
|
+
focused: control.activeFocus, hovered: control.hovered, pressed: control.pressed,
|
|
93
|
+
ring: index === 0 ? control.focusShown : control.ringItem.visible,
|
|
94
|
+
centre: root.fleaWindow.centreOf(control), rect: root.fleaWindow.rectOf(control) }
|
|
95
|
+
}) })
|
|
96
|
+
}
|
|
97
|
+
// Both code surfaces expose their live viewport; absent or unbuilt text answers an empty object.
|
|
98
|
+
function previewTextState(column: bool): string {
|
|
99
|
+
var surface = column ? (root.pane ? root.pane.previewColumnItem : null) : root.look.kind === "text" ? root.look.surfaceItem() : null
|
|
100
|
+
var code = surface ? (column ? surface.linesItem.code : surface) : null
|
|
101
|
+
var viewport = surface ? (column ? surface.linesItem.viewport : surface.viewport) : null
|
|
102
|
+
if (!code || !viewport) return "{}"
|
|
103
|
+
var bounds = Scroll.limitsY(viewport)
|
|
104
|
+
var swap = column ? surface.swap : root.look.swapState()
|
|
105
|
+
var ready = code.firstScreen && !(swap && (swap.holding || swap.capturing))
|
|
106
|
+
return JSON.stringify({ path: surface.path, visible: surface.visible,
|
|
107
|
+
ready: ready && (column ? !surface.textLoading : root.look.openState().landed),
|
|
108
|
+
focused: surface.activeFocus, wrap: code.wrap === undefined ? null : code.wrap, y: viewport.contentY,
|
|
109
|
+
minY: bounds.min, maxY: bounds.max, height: viewport.height, total: code.total })
|
|
110
|
+
}
|
|
111
|
+
// One entry per figure block; "" while no Markdown body is mounted, so a case keeps polling.
|
|
112
|
+
function previewFigures(): string {
|
|
113
|
+
var m = root.look.markdownItem
|
|
114
|
+
if (!m || !m.contentReady || m.blockList === undefined)
|
|
115
|
+
return ""
|
|
116
|
+
var out = []
|
|
117
|
+
for (var i = 0; i < m.blockList.length; i++) {
|
|
118
|
+
if (m.blockList[i].type !== "figure")
|
|
119
|
+
continue
|
|
120
|
+
var info = m.figureInfo(i)
|
|
121
|
+
out.push(i + "=" + (info === null ? "deferred"
|
|
122
|
+
: info.failed ? "failed" : info.ready ? "ready" : info.working ? "working" : "idle"))
|
|
123
|
+
}
|
|
124
|
+
return out.join(",")
|
|
125
|
+
}
|
|
126
|
+
// Sample output: "fence:rust", "list[run,fence]"; a fence shows its info tag and a quote or list its nested parts in brackets.
|
|
127
|
+
function kindOf(block: var): string {
|
|
128
|
+
var inner = block.parts === undefined ? [] : block.type === "list" ? [].concat.apply([], block.parts.filter(Boolean)) : block.parts
|
|
129
|
+
return inner.length > 0 ? block.type + "[" + inner.map(function (part) { return root.kindOf(part) }).join(",") + "]"
|
|
130
|
+
: block.type === "fence" && block.info ? "fence:" + block.info : block.type
|
|
131
|
+
}
|
|
132
|
+
// The top-level block kinds a Markdown pane built, as a JSON array; "" until its document is ready. column picks the preview column over Quick Look.
|
|
133
|
+
function previewBlockKinds(column: bool): string {
|
|
134
|
+
var c = root.pane.previewColumnItem
|
|
135
|
+
var m = column ? (c && c.visible ? c.markdown : null) : root.look.markdownItem
|
|
136
|
+
return m && m.contentReady && m.blockList !== undefined ? JSON.stringify(m.blockList.map(function (block) { return root.kindOf(block) })) : ""
|
|
137
|
+
}
|
|
138
|
+
function previewPosition(): int { return root.look.position }
|
|
139
|
+
function previewDuration(): int { return root.look.duration }
|
|
140
|
+
// Fix round 1: what the strip actually draws, not a re-derived guess at its visible: expression.
|
|
141
|
+
function previewStrip(): string { return JSON.stringify({ visible: root.look.stripVisible, muted: root.look.muted, mute: root.fleaWindow.centreOf(root.look.muteMark) }) }
|
|
142
|
+
// "" means no PDF is loaded, rather than zoom 1 or expanded false.
|
|
143
|
+
function previewPdfPage(): int { var p = root.look.pdfItem; return p ? p.page : -1 }
|
|
144
|
+
function previewPdfZoom(): string { var p = root.look.pdfItem; return p ? String(p.zoom) : "" }
|
|
145
|
+
function previewPdfFocus(): int { var p = root.look.pdfItem; return p ? p.pdfControlIndex : -1 }
|
|
146
|
+
function pdfState(overlay: bool): string {
|
|
147
|
+
var p = overlay ? root.look.pdfItem : root.pane.previewColumnItem
|
|
148
|
+
if (!p) return "null"
|
|
149
|
+
if (!overlay)
|
|
150
|
+
return JSON.stringify({ page: p.pdfPage(), pages: p.pdfPages, frame: root.fleaWindow.rectOf(p.pdfFrameItem),
|
|
151
|
+
scrollY: p.pdfScrollY, lastPage: root.fleaWindow.rectOf(p.pdfPageItem(p.pdfPages - 1)), focused: p.activeFocus, landed: p.pdfLanded() })
|
|
152
|
+
return JSON.stringify({ page: p.page, pages: p.pageCount, zoom: p.zoom, scrollY: p.pdfScrollY, focused: p.activeFocus, control: p.pdfControlIndex,
|
|
153
|
+
controls: p.pdfControls.map(function (control) { return { name: control.accessName, enabled: control.enabled,
|
|
154
|
+
visible: control.visible, centre: root.fleaWindow.centreOf(control),
|
|
155
|
+
hovered: control.hovered, pressed: control.pressed, ring: control.ringItem.visible } }) })
|
|
156
|
+
}
|
|
157
|
+
function previewExpanded(): string { var p = root.look.pdfItem; return p ? String(p.expanded) : "" }
|
|
158
|
+
function previewSwapState(): string { return JSON.stringify({ column: root.columns ? root.columns.swapState() : null, look: root.look.swapState(), lookOpen: root.look.openState(), lookVisible: root.look.visible }) }
|
|
159
|
+
function previewSurfaceRect(): string { return root.fleaWindow.rectOf(root.look.surfaceItem()) }
|
|
160
|
+
function previewPictureRect(): string { var p = root.look; if (!p) return ""; if (p.isImage) { var im = p.surfaceItem(); return im ? root.fleaWindow.rectOf(im.pictureItem) : "" } if (p.isMedia) { var me = p.surfaceItem(); return me ? root.fleaWindow.rectOf(me.contentItem) : "" } return "" }
|
|
161
|
+
function previewMediaLoaded(): bool { return root.look.mediaLoaded() }
|
|
162
|
+
function previewText(): string { return root.look.textShown() }
|
|
163
|
+
function previewMarkdownView(): string { return root.look.markdownView() }
|
|
164
|
+
function previewCloseState(): string { return root.look.markdownCloseState() }
|
|
165
|
+
function previewEndGap(): int { return root.look.markdownEndGap() }
|
|
166
|
+
function previewScrollY(): int { return root.look.markdownScrollY() }
|
|
167
|
+
// The sideways table of the open Markdown: its scroll position, the rect it draws in and its first body row's, or {} when none overflows.
|
|
168
|
+
function previewTable(): string {
|
|
169
|
+
var m = root.look.markdownItem
|
|
170
|
+
var s = m ? m.tableScroller() : null
|
|
171
|
+
return JSON.stringify(s ? { scrollX: Math.round(s.contentX), view: root.fleaWindow.rectOf(s), row: root.fleaWindow.rectOf(s.table.firstRow()) } : {})
|
|
172
|
+
}
|
|
173
|
+
// Length is in UTF-16 code units; the sweep's ASCII fixture has the same byte count.
|
|
174
|
+
function previewTextLength(): int { return root.look.textShown().length }
|
|
175
|
+
// Keep the reply bounded even if a caller asks for the entire file, including zero and negative counts.
|
|
176
|
+
function previewTextTail(n: int): string {
|
|
177
|
+
var count = Math.max(0, Math.min(n, root.textTailLimit))
|
|
178
|
+
return count > 0 ? root.look.textShown().slice(-count) : ""
|
|
179
|
+
}
|
|
180
|
+
function previewArchiveNames(): string { return root.look.archiveNames() }
|
|
181
|
+
// The slider centre lets a test wheel over the preview's seek slider without guessing its layout.
|
|
182
|
+
function previewSliderCentre(): string {
|
|
183
|
+
return root.look.active && root.look.isMedia ? root.fleaWindow.centreOf(root.look.seekSlider) : ""
|
|
184
|
+
}
|
|
185
|
+
}
|
package/ui/JumpPath.qml
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import QtQuick
|
|
2
|
+
import "js/Jump.js" as Jump
|
|
3
|
+
|
|
4
|
+
// One jump row's label: the path split as the chrome splits it, a muted parent and a foreground leaf,
|
|
5
|
+
// with the scorer's one match run on the accent wash ui/MatchText.qml draws behind a search match.
|
|
6
|
+
// Each piece is PlainText, because a folder name is arbitrary text. A path too long for the slot
|
|
7
|
+
// slides left inside it, the chrome's own left elision, because the tail is what names the folder.
|
|
8
|
+
Item {
|
|
9
|
+
id: root
|
|
10
|
+
|
|
11
|
+
// One entry of ui/js/Jump.js rows: { text, leafStart, washStart, washLength }.
|
|
12
|
+
property var entry: ({})
|
|
13
|
+
readonly property var pieces: Jump.segments(root.entry)
|
|
14
|
+
// The cuts behind segments() are [0, leafStart, length] plus at most the wash's two edges,
|
|
15
|
+
// so no row ever splits into more than four pieces: four standing Texts rebind per keystroke
|
|
16
|
+
// instead of rebuilding, the way the dropdown's own rows do.
|
|
17
|
+
readonly property int maxPieces: 4
|
|
18
|
+
|
|
19
|
+
implicitHeight: line.height
|
|
20
|
+
clip: true
|
|
21
|
+
|
|
22
|
+
Row {
|
|
23
|
+
id: line
|
|
24
|
+
x: Math.min(0, root.width - line.width)
|
|
25
|
+
anchors.verticalCenter: parent.verticalCenter
|
|
26
|
+
|
|
27
|
+
Repeater {
|
|
28
|
+
model: root.maxPieces
|
|
29
|
+
|
|
30
|
+
delegate: Text {
|
|
31
|
+
id: piece
|
|
32
|
+
required property int index
|
|
33
|
+
readonly property var part: piece.index < root.pieces.length ? root.pieces[piece.index] : null
|
|
34
|
+
visible: piece.part !== null
|
|
35
|
+
text: piece.part ? piece.part.text : ""
|
|
36
|
+
color: piece.part && piece.part.leaf ? Theme.color.foreground : Theme.color.muted
|
|
37
|
+
font.family: Theme.font.family
|
|
38
|
+
font.pixelSize: Theme.font.body
|
|
39
|
+
textFormat: Text.PlainText
|
|
40
|
+
|
|
41
|
+
// Behind the ink, which keeps its own colour: accent on foreground is unreadable on some palettes.
|
|
42
|
+
Rectangle {
|
|
43
|
+
z: -1
|
|
44
|
+
anchors.fill: parent
|
|
45
|
+
visible: piece.part ? piece.part.wash : false
|
|
46
|
+
color: Qt.alpha(Theme.color.accent, Theme.washActive)
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|