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
package/ui/js/Jump.js
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
.pragma library
|
|
2
|
+
.import "Fuzzy.js" as Fuzzy
|
|
3
|
+
|
|
4
|
+
// The path bar's folder jump, and nothing about the field or the dropdown that draw it: ui/ChromeBar.qml
|
|
5
|
+
// owns the field and ui/PathJump.qml the dropdown. Pure, so tests/js/jump.js drives all of it with no
|
|
6
|
+
// window. The backend answers the three sources once per open (docs/protocol.md "jump"); everything a
|
|
7
|
+
// keystroke changes is worked out here, in the window's own thread and with no round trip.
|
|
8
|
+
|
|
9
|
+
// The sources, each one a field of the backend's "jumped" line, in the order a tie between them goes.
|
|
10
|
+
var SOURCES = ["favourites", "zoxide", "recent"]
|
|
11
|
+
|
|
12
|
+
// A source past its fifth match is a query one letter short, and the next keystroke narrows it; the cap
|
|
13
|
+
// also keeps the list inside a window's height, where every row stays a few arrow presses away.
|
|
14
|
+
var SOURCE_ROWS = 5
|
|
15
|
+
|
|
16
|
+
// Past its first character a match has to earn, on average, what one character of a folder's own name
|
|
17
|
+
// earns. A run or a word start anywhere clears it, and "src" scattered through ~/Documents/claude/omarchy
|
|
18
|
+
// does not, so a folder the name only scatters through is not listed at all. One
|
|
19
|
+
// character always clears it, which keeps the board's query o listing every folder with an o in it.
|
|
20
|
+
var MIN_SCORE_PER_CHARACTER = Fuzzy.BONUS_BASENAME
|
|
21
|
+
|
|
22
|
+
// A line with a slash in it, one that starts at home, and "." and ".." are typed as a path, exactly as
|
|
23
|
+
// before the jump: Enter resolves it and Tab completes it. The bar opens holding the whole path, and a Tab
|
|
24
|
+
// that completes one name ends the line in a slash, so "Wo", Tab, Enter still opens ./Work. A dotted name
|
|
25
|
+
// such as ".config" is a name like any other.
|
|
26
|
+
// Sample input: "o", "flea" and ".config" are queries; "/usr/share", "Work/", "~", "..", "../x" and "file:///etc" are paths.
|
|
27
|
+
function isQuery(text) {
|
|
28
|
+
var line = String(text).trim()
|
|
29
|
+
if (line.length === 0 || line.indexOf("/") >= 0 || line === "." || line === "..") {
|
|
30
|
+
return false
|
|
31
|
+
}
|
|
32
|
+
return line.charAt(0) !== "~"
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// The path as the chrome writes it, a tilde for the home directory; this is also the text the query matches.
|
|
36
|
+
function display(path, home) {
|
|
37
|
+
var text = String(path)
|
|
38
|
+
var root = String(home || "")
|
|
39
|
+
if (root.length > 0 && (text === root || text.indexOf(root + "/") === 0)) {
|
|
40
|
+
return "~" + text.substring(root.length)
|
|
41
|
+
}
|
|
42
|
+
return text
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Where the leaf starts, the character after the last slash; "~" is all leaf and "/" is all parent.
|
|
46
|
+
function leafStart(text) {
|
|
47
|
+
return String(text).lastIndexOf("/") + 1
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// How many separate runs a match is made of: 1 is the query typed as one unbroken stretch.
|
|
51
|
+
function runsIn(positions) {
|
|
52
|
+
var runs = positions.length > 0 ? 1 : 0
|
|
53
|
+
for (var i = 1; i < positions.length; i++) {
|
|
54
|
+
if (positions[i] !== positions[i - 1] + 1) {
|
|
55
|
+
runs++
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return runs
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// One open's candidates folded once, so a keystroke never displays, folds or lowers anything per
|
|
62
|
+
// candidate. The dropdown prepares once per answer; rows() below is the same work in one call.
|
|
63
|
+
// Sample sources: { favourites: ["/home/gm/Projects"], zoxide: ["/home/gm/Documents"], recent: [],
|
|
64
|
+
// frecency: { "/home/gm/Documents": 80 } }
|
|
65
|
+
function prepare(sources, home) {
|
|
66
|
+
var given = sources || {}
|
|
67
|
+
var frecency = given.frecency || {}
|
|
68
|
+
var entries = []
|
|
69
|
+
for (var s = 0; s < SOURCES.length; s++) {
|
|
70
|
+
var paths = given[SOURCES[s]] || []
|
|
71
|
+
for (var i = 0; i < paths.length; i++) {
|
|
72
|
+
var path = String(paths[i])
|
|
73
|
+
var text = display(path, home)
|
|
74
|
+
var leaf = leafStart(text)
|
|
75
|
+
var whole = Fuzzy.fold(text)
|
|
76
|
+
var leafFold = whole.slice(leaf)
|
|
77
|
+
entries.push({ path: path, text: text, leaf: leaf, whole: whole,
|
|
78
|
+
baseWhole: Fuzzy.baseStart(whole), leafFold: leafFold,
|
|
79
|
+
baseLeaf: Fuzzy.baseStart(leafFold),
|
|
80
|
+
source: s, at: i, frecency: Number(frecency[path]) || 0 })
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return { entries: entries }
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// One folder's row out of prepared candidates, or null when the query misses it or only scatters
|
|
87
|
+
// through it below the floor. The runs read off the leaf-relative positions, whose offset keeps
|
|
88
|
+
// adjacency, and only the wash moves by the leaf.
|
|
89
|
+
function rankedPrepared(entry, needle, floor) {
|
|
90
|
+
// A candidate shorter than the needle cannot hold it as a subsequence.
|
|
91
|
+
if (entry.text.length < needle.length) {
|
|
92
|
+
return null
|
|
93
|
+
}
|
|
94
|
+
var whole = Fuzzy.matchFolded(entry.whole, entry.baseWhole, needle)
|
|
95
|
+
if (whole === null || whole.score < floor) {
|
|
96
|
+
return null
|
|
97
|
+
}
|
|
98
|
+
var named = Fuzzy.matchFolded(entry.leafFold, entry.baseLeaf, needle)
|
|
99
|
+
var positions = whole.positions
|
|
100
|
+
if (named !== null) {
|
|
101
|
+
positions = named.positions
|
|
102
|
+
}
|
|
103
|
+
var wash = Fuzzy.run(positions)
|
|
104
|
+
if (named !== null) {
|
|
105
|
+
wash = { start: wash.start + entry.leaf, length: wash.length }
|
|
106
|
+
}
|
|
107
|
+
return { path: entry.path, text: entry.text, leafStart: entry.leaf,
|
|
108
|
+
washStart: wash.start, washLength: wash.length,
|
|
109
|
+
own: named !== null, runs: runsIn(positions),
|
|
110
|
+
source: entry.source, at: entry.at, frecency: entry.frecency }
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// The order, in sequence: the folder's own name, then contiguity, then frecency, then a favourite
|
|
114
|
+
// over the others, and the sources' own orders last so one answer always draws in one order.
|
|
115
|
+
function before(a, b) {
|
|
116
|
+
if (a.own !== b.own) {
|
|
117
|
+
return a.own ? -1 : 1
|
|
118
|
+
}
|
|
119
|
+
if (a.runs !== b.runs) {
|
|
120
|
+
return a.runs - b.runs
|
|
121
|
+
}
|
|
122
|
+
if (a.frecency !== b.frecency) {
|
|
123
|
+
return b.frecency - a.frecency
|
|
124
|
+
}
|
|
125
|
+
if (a.source !== b.source) {
|
|
126
|
+
return a.source - b.source
|
|
127
|
+
}
|
|
128
|
+
return a.at - b.at
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// The dropdown's rows out of prepared candidates: every source's matches in one ranked list, a
|
|
132
|
+
// source giving at most SOURCE_ROWS of its best.
|
|
133
|
+
function rowsPrepared(prepared, line) {
|
|
134
|
+
if (!isQuery(line)) {
|
|
135
|
+
return []
|
|
136
|
+
}
|
|
137
|
+
var query = String(line).trim()
|
|
138
|
+
var needle = query.toLowerCase()
|
|
139
|
+
var floor = (query.length - 1) * MIN_SCORE_PER_CHARACTER
|
|
140
|
+
var entries = (prepared && prepared.entries) || []
|
|
141
|
+
var found = []
|
|
142
|
+
for (var e = 0; e < entries.length; e++) {
|
|
143
|
+
var row = rankedPrepared(entries[e], needle, floor)
|
|
144
|
+
if (row !== null) {
|
|
145
|
+
found.push(row)
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
found.sort(before)
|
|
149
|
+
var out = []
|
|
150
|
+
var taken = [0, 0, 0]
|
|
151
|
+
for (var j = 0; j < found.length; j++) {
|
|
152
|
+
if (taken[found[j].source] < SOURCE_ROWS) {
|
|
153
|
+
taken[found[j].source]++
|
|
154
|
+
out.push(found[j])
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return out
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// The dropdown's rows: prepare's work in one call, for the callers that rank once.
|
|
161
|
+
function rows(sources, line, home) {
|
|
162
|
+
if (!isQuery(line)) {
|
|
163
|
+
return []
|
|
164
|
+
}
|
|
165
|
+
return rowsPrepared(prepare(sources, home), String(line))
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// A row's label in drawing order: the text cut where the leaf starts and where the wash starts and ends,
|
|
169
|
+
// each piece saying whether it is leaf ink and whether it sits on the wash.
|
|
170
|
+
function segments(row) {
|
|
171
|
+
var text = String(row.text || "")
|
|
172
|
+
if (text.length === 0) {
|
|
173
|
+
return []
|
|
174
|
+
}
|
|
175
|
+
var cuts = [0, row.leafStart, text.length]
|
|
176
|
+
if (row.washLength > 0) {
|
|
177
|
+
cuts.push(row.washStart, row.washStart + row.washLength)
|
|
178
|
+
}
|
|
179
|
+
cuts.sort(function (a, b) { return a - b })
|
|
180
|
+
var out = []
|
|
181
|
+
for (var i = 0; i + 1 < cuts.length; i++) {
|
|
182
|
+
var from = cuts[i]
|
|
183
|
+
var to = cuts[i + 1]
|
|
184
|
+
if (to <= from) {
|
|
185
|
+
continue
|
|
186
|
+
}
|
|
187
|
+
out.push({ text: text.substring(from, to), leaf: from >= row.leafStart,
|
|
188
|
+
wash: row.washLength > 0 && from >= row.washStart && to <= row.washStart + row.washLength })
|
|
189
|
+
}
|
|
190
|
+
return out
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// The cursor's next row, staying put at either end as the menu's own cursor does; step(rows, -1, 1) is the
|
|
194
|
+
// first row, and -1 when there is none.
|
|
195
|
+
function step(entries, from, delta) {
|
|
196
|
+
if (entries.length === 0) {
|
|
197
|
+
return -1
|
|
198
|
+
}
|
|
199
|
+
return Math.max(0, Math.min(entries.length - 1, from + delta))
|
|
200
|
+
}
|
package/ui/js/KeyName.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
.pragma library
|
|
2
|
+
|
|
3
|
+
.import "Keymap.js" as Keymap
|
|
4
|
+
.import "Format.js" as Format
|
|
5
|
+
|
|
6
|
+
// A key the way the running preset binds it, spelled for a sentence; the sentences stay in their own modules with a "%1" for the key.
|
|
7
|
+
|
|
8
|
+
// The names keys.toml gives a key that a person would write as a mark.
|
|
9
|
+
var MARKS = { plus: "+", minus: "-", equal: "=", underscore: "_", greater: ">", less: "<", slash: "/", period: ".", comma: "," }
|
|
10
|
+
var MODIFIERS = { ctrl: "Ctrl", shift: "Shift", alt: "Alt", super: "Super" }
|
|
11
|
+
|
|
12
|
+
// Sample input: "ctrl-shift-n" answers "Ctrl+Shift+N"; "delete" answers "Delete"; "ctrl-shift-plus" answers "Ctrl+Shift++".
|
|
13
|
+
function spelled(keys) {
|
|
14
|
+
var parts = String(keys).split("-")
|
|
15
|
+
var out = []
|
|
16
|
+
for (var i = 0; i < parts.length; i++) {
|
|
17
|
+
var part = parts[i]
|
|
18
|
+
if (i < parts.length - 1 && MODIFIERS[part] !== undefined) { out.push(MODIFIERS[part]); continue }
|
|
19
|
+
if (MARKS[part] !== undefined) out.push(MARKS[part])
|
|
20
|
+
else if (part.length === 1) out.push(out.length > 0 ? part.toUpperCase() : part)
|
|
21
|
+
else out.push(part.charAt(0).toUpperCase() + part.substring(1))
|
|
22
|
+
}
|
|
23
|
+
return out.join("+")
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// The row the running preset binds to an action in the listing, the first of the given modifier kind when one is asked for.
|
|
27
|
+
function rowFor(action, mods) {
|
|
28
|
+
var rows = Keymap.bindingRows(Keymap.preset, "gui", Keymap.actionGroup(action))
|
|
29
|
+
for (var i = 0; i < rows.length; i++) {
|
|
30
|
+
if (rows[i].action === action && (mods === undefined || rows[i].mods === mods)) return rows[i]
|
|
31
|
+
}
|
|
32
|
+
return null
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// The key to press for an action: the plain key the menus draw, else the first chord. "" when the preset binds none.
|
|
36
|
+
function keyFor(action) {
|
|
37
|
+
var plain = Keymap.hintFor(action)
|
|
38
|
+
if (plain.length > 0) return plain
|
|
39
|
+
var row = rowFor(action)
|
|
40
|
+
return row === null ? "" : spelled(row.keys)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// The key of one modifier kind ("none" for a key pressed alone), "" when the preset binds none.
|
|
44
|
+
function keyOf(action, mods) {
|
|
45
|
+
var row = rowFor(action, mods)
|
|
46
|
+
return row === null ? "" : spelled(row.keys)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// A whole sentence with "%1" for the key bound to an action, "" when the preset binds none so no hint names a missing key.
|
|
50
|
+
function hinted(template, action) {
|
|
51
|
+
var key = keyFor(action)
|
|
52
|
+
return key.length > 0 ? Format.fill(template, key) : ""
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// The same with "%1", "%2" and on for the keys bound to several actions, "" when the preset leaves any one of them unbound.
|
|
56
|
+
function hintedAll(template, actions) {
|
|
57
|
+
var keys = [template]
|
|
58
|
+
for (var i = 0; i < actions.length; i++) {
|
|
59
|
+
var key = keyFor(actions[i])
|
|
60
|
+
if (key.length === 0) return ""
|
|
61
|
+
keys.push(key)
|
|
62
|
+
}
|
|
63
|
+
return Format.fill.apply(null, keys)
|
|
64
|
+
}
|