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/Csv.js
ADDED
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
.pragma library
|
|
2
|
+
|
|
3
|
+
.import "Format.js" as Format
|
|
4
|
+
|
|
5
|
+
// The rows a CSV or TSV preview reads its records from, and the words its count line uses.
|
|
6
|
+
var ROW_ONE = "1 row"
|
|
7
|
+
var ROW_MANY = "%1 rows"
|
|
8
|
+
|
|
9
|
+
// The field separator for a table by extension, in any case; "" for any other name. Sample input: "/home/gm/bench.csv" gives ",", "/home/gm/DATA.Tsv" gives a tab, "notes.txt" gives "".
|
|
10
|
+
function delimiter(path) {
|
|
11
|
+
var name = String(path)
|
|
12
|
+
var dot = name.lastIndexOf(".")
|
|
13
|
+
if (dot < 0)
|
|
14
|
+
return ""
|
|
15
|
+
var ext = name.substring(dot + 1).toLowerCase()
|
|
16
|
+
if (isSheet(name))
|
|
17
|
+
return ","
|
|
18
|
+
return ext === "csv" ? "," : ext === "tsv" ? "\t" : ""
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// A workbook the backend answers as the CSV of its first sheet (src/office.js). Sample input: "budget.xlsx" and "Plan.ODS" are true, "bench.csv" is false.
|
|
22
|
+
function isSheet(path) {
|
|
23
|
+
return /\.(xlsx|xlsm|ods)$/i.test(String(path))
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Whether a path draws as a table: a CSV or TSV under the text gate, or a workbook when the backend reads it (its own bytes are a zip, never a table).
|
|
27
|
+
function tabular(path, size, maxBytes, fromFile) {
|
|
28
|
+
if (delimiter(path) === "")
|
|
29
|
+
return false
|
|
30
|
+
return isSheet(path) ? !fromFile : size <= maxBytes
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Records of whole lines, each {cells, span, open}. Sample input: ["h", "1,\"two", "lines\""] with "," gives two records.
|
|
34
|
+
function records(lines, delim) {
|
|
35
|
+
var out = []
|
|
36
|
+
var at = 0
|
|
37
|
+
while (at < lines.length) {
|
|
38
|
+
var rec = record(lines, at, delim)
|
|
39
|
+
out.push(rec)
|
|
40
|
+
at += rec.span
|
|
41
|
+
}
|
|
42
|
+
return out
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// One record from lines[at]. A quoted field may run on into the next line, its line end kept as a newline. Sample input: ["1,\"two", "lines\",3"] gives cells ["1", "two\nlines", "3"] over span 2, and open true when the quote never closes.
|
|
46
|
+
function record(lines, at, delim) {
|
|
47
|
+
var cells = []
|
|
48
|
+
var field = ""
|
|
49
|
+
var quoting = false
|
|
50
|
+
var fieldStart = true
|
|
51
|
+
var i = at
|
|
52
|
+
while (true) {
|
|
53
|
+
var text = lines[i]
|
|
54
|
+
for (var p = 0; p < text.length; p++) {
|
|
55
|
+
var c = text.charAt(p)
|
|
56
|
+
if (quoting) {
|
|
57
|
+
if (c !== "\"")
|
|
58
|
+
field += c
|
|
59
|
+
else if (text.charAt(p + 1) === "\"") {
|
|
60
|
+
field += "\""
|
|
61
|
+
p += 1
|
|
62
|
+
} else
|
|
63
|
+
quoting = false
|
|
64
|
+
} else if (c === delim) {
|
|
65
|
+
cells.push(field)
|
|
66
|
+
field = ""
|
|
67
|
+
fieldStart = true
|
|
68
|
+
continue
|
|
69
|
+
} else if (c === "\"" && fieldStart) {
|
|
70
|
+
quoting = true
|
|
71
|
+
} else {
|
|
72
|
+
field += c
|
|
73
|
+
}
|
|
74
|
+
fieldStart = false
|
|
75
|
+
}
|
|
76
|
+
if (!quoting) {
|
|
77
|
+
cells.push(field)
|
|
78
|
+
return { cells: cells, span: i - at + 1, open: false }
|
|
79
|
+
}
|
|
80
|
+
i += 1
|
|
81
|
+
if (i >= lines.length)
|
|
82
|
+
return { cells: cells.concat([field]), span: i - at, open: true }
|
|
83
|
+
field += "\n"
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// The row padded with empty cells to the table's width; a longer row keeps every cell. Sample input: padded(["c"], 3) gives ["c", "", ""].
|
|
88
|
+
function padded(cells, width) {
|
|
89
|
+
var out = cells.slice()
|
|
90
|
+
while (out.length < width)
|
|
91
|
+
out.push("")
|
|
92
|
+
return out
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// The widest row's cell count, which is the table's column count.
|
|
96
|
+
function columnCount(rows) {
|
|
97
|
+
var n = 0
|
|
98
|
+
for (var i = 0; i < rows.length; i++)
|
|
99
|
+
n = Math.max(n, rows[i].length)
|
|
100
|
+
return n
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// A non-empty cell that parses as a finite number once its spaces are trimmed.
|
|
104
|
+
function isNumber(text) {
|
|
105
|
+
var value = String(text).trim()
|
|
106
|
+
return value !== "" && isFinite(Number(value))
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// Whether each column is right-aligned: every non-empty body cell in it is a number. Rows[0] is the header and is not read. Sample input: [["a", "n"], ["x", "1"], ["y", ""]] with 2 columns gives [false, true].
|
|
110
|
+
function numericColumns(rows, columns) {
|
|
111
|
+
var out = []
|
|
112
|
+
for (var c = 0; c < columns; c++) {
|
|
113
|
+
var seen = false
|
|
114
|
+
var numeric = true
|
|
115
|
+
for (var r = 1; r < rows.length && numeric; r++) {
|
|
116
|
+
var text = rows[r][c] === undefined ? "" : String(rows[r][c])
|
|
117
|
+
if (text.trim() === "")
|
|
118
|
+
continue
|
|
119
|
+
seen = true
|
|
120
|
+
numeric = isNumber(text)
|
|
121
|
+
}
|
|
122
|
+
out.push(seen && numeric)
|
|
123
|
+
}
|
|
124
|
+
return out
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// Each whole-record block carries its starting ordinal. Sample input: {1:{t:"h"},5:{t:"5",record:3}} keeps record 3 at line 5.
|
|
128
|
+
function table(held, total, delim) {
|
|
129
|
+
var last = 0
|
|
130
|
+
for (var k in held)
|
|
131
|
+
last = Math.max(last, Number(k))
|
|
132
|
+
var all = []
|
|
133
|
+
var open = []
|
|
134
|
+
var i = 1
|
|
135
|
+
while (i <= last) {
|
|
136
|
+
if (!held[i]) {
|
|
137
|
+
i += 1
|
|
138
|
+
continue
|
|
139
|
+
}
|
|
140
|
+
var start = i
|
|
141
|
+
var lines = []
|
|
142
|
+
while (i <= last && held[i])
|
|
143
|
+
lines.push(held[i++].t)
|
|
144
|
+
if (start !== 1 && held[start].record === undefined)
|
|
145
|
+
continue
|
|
146
|
+
var at = start
|
|
147
|
+
var ordinal = held[start].record || 1
|
|
148
|
+
var recs = records(lines, delim)
|
|
149
|
+
for (var r = 0; r < recs.length; r++) {
|
|
150
|
+
if (recs[r].open && start + lines.length - 1 < total) {
|
|
151
|
+
open.push({ line: at, to: start + lines.length - 1, record: ordinal })
|
|
152
|
+
break
|
|
153
|
+
}
|
|
154
|
+
all.push({ line: at, record: ordinal++, span: recs[r].span, cells: recs[r].cells })
|
|
155
|
+
at += recs[r].span
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (all.length === 0 || all[0].line !== 1)
|
|
159
|
+
return { header: null, rows: [], byLine: {}, byRecord: {}, cols: 0, open: open }
|
|
160
|
+
var cols = columnCount(all.map(function (rec) { return rec.cells }))
|
|
161
|
+
var rows = all.slice(1).map(function (rec) { return { line: rec.line, record: rec.record, span: rec.span, cells: padded(rec.cells, cols) } })
|
|
162
|
+
var byLine = {}
|
|
163
|
+
var byRecord = {}
|
|
164
|
+
for (var j = 0; j < rows.length; j++) {
|
|
165
|
+
byLine[rows[j].line] = rows[j]
|
|
166
|
+
byRecord[rows[j].record] = rows[j]
|
|
167
|
+
}
|
|
168
|
+
return { header: padded(all[0].cells, cols), rows: rows, byLine: byLine, byRecord: byRecord, cols: cols, open: open }
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// First-screen readiness rejects any unfinished record that overlaps its ordinals; whole aligned replies leave open empty.
|
|
172
|
+
function ready(t, to) {
|
|
173
|
+
return t.open.every(function (rec) { return rec.record > to })
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// Match the backend's raw lines: "a,b\n1,2\n" has two lines, and a trailing CR is removed from each.
|
|
177
|
+
function plainLines(text) {
|
|
178
|
+
var lines = text.length > 0 ? text.split("\n") : []
|
|
179
|
+
if (lines.length > 0 && lines[lines.length - 1] === "")
|
|
180
|
+
lines.pop()
|
|
181
|
+
return lines.map(function (line) { return line.endsWith("\r") ? line.slice(0, -1) : line })
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// A cell drawn on one line: a quoted newline shows as a space, so the row keeps its height. Sample input: oneLine("two\nlines") gives "two lines".
|
|
185
|
+
function oneLine(text) {
|
|
186
|
+
return String(text).split("\n").join(" ")
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// The column's drawn boxes, each {x, w, right}: the first flexes to fill the frame, or to its header when the columns do not fit, and a column past the frame's right edge is not drawn while the last drawn one elides. Sample input: widths [40, 30], heads [20, 10], rights [false, true], gap 6, avail 100 gives x 0 w 64, then x 70 w 30.
|
|
190
|
+
function fit(widths, heads, rights, gap, avail) {
|
|
191
|
+
var n = widths.length
|
|
192
|
+
var out = []
|
|
193
|
+
if (n === 0)
|
|
194
|
+
return out
|
|
195
|
+
var total = widths.reduce(function (sum, w) { return sum + w }, 0) + gap * (n - 1)
|
|
196
|
+
var first = total <= avail ? widths[0] + (avail - total) : Math.min(widths[0], heads[0])
|
|
197
|
+
var x = 0
|
|
198
|
+
for (var c = 0; c < n && x < avail; c++) {
|
|
199
|
+
var w = c === 0 ? first : widths[c]
|
|
200
|
+
out.push({ x: x, w: Math.min(w, avail - x), right: rights[c] })
|
|
201
|
+
x += w + gap
|
|
202
|
+
}
|
|
203
|
+
return out
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// Quick Look's boxes: each column is its widest cell plus the padding on both sides, after the row numbers. Sample input: grid([40], [false], 42, 14) gives [{x: 42, w: 68, right: false}].
|
|
207
|
+
function grid(widths, rights, numberWidth, pad) {
|
|
208
|
+
var out = []
|
|
209
|
+
var x = numberWidth
|
|
210
|
+
for (var c = 0; c < widths.length; c++) {
|
|
211
|
+
var w = widths[c] + 2 * pad
|
|
212
|
+
out.push({ x: x, w: w, right: rights[c] })
|
|
213
|
+
x += w
|
|
214
|
+
}
|
|
215
|
+
return out
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// Records after the header, used by the model and count line. Sample input: dataRows(25) gives 24, and dataRows(0) gives 0.
|
|
219
|
+
function dataRows(total) {
|
|
220
|
+
return Math.max(0, total - 1)
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// The count line in the bar. Sample input: rowCount(24) gives "24 rows" and rowCount(1) gives "1 row".
|
|
224
|
+
function rowCount(n) {
|
|
225
|
+
return n === 1 ? ROW_ONE : Format.fill(ROW_MANY, Format.count(n))
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
// The data row number is its record ordinal less the header. Sample input: rowNumber(2) gives 1.
|
|
229
|
+
function rowNumber(record) {
|
|
230
|
+
return record - 1
|
|
231
|
+
}
|
package/ui/js/Density.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
.pragma library
|
|
2
|
+
|
|
3
|
+
// One job: the numbers every surface draws from, so tests/js/density.js pins them.
|
|
4
|
+
|
|
5
|
+
// The four stops in the board's own order, Tight first as the opt-in below Compact.
|
|
6
|
+
var STOPS = ["tight", "compact", "normal", "comfortable"]
|
|
7
|
+
var LABELS = ["Tight", "Compact", "Normal", "Comfortable"]
|
|
8
|
+
|
|
9
|
+
// Tight drops the padding, Compact keeps half, Normal keeps all, Comfortable one half more.
|
|
10
|
+
var RATIOS = ({ tight: 0, compact: 0.5, normal: 1, comfortable: 1.5 })
|
|
11
|
+
|
|
12
|
+
// Sample input: ratioFor("tight") is 0, ratioFor("nope") is 0.5.
|
|
13
|
+
function ratioFor(density) {
|
|
14
|
+
return RATIOS[density] !== undefined ? RATIOS[density] : 0.5
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// Sample input: rowHeight(23, 7, "tight") is 23, the line box with no padding.
|
|
18
|
+
function rowHeight(lineBox, rowPaddingY, density) {
|
|
19
|
+
return lineBox + 2 * Math.round(rowPaddingY * ratioFor(density))
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// The six thumbnail stops in the board's walk order, Small 48 to Largest 256.
|
|
23
|
+
var THUMB_SIZES = ({ small: 48, medium: 64, large: 96, xlarge: 128, huge: 192, largest: 256 })
|
|
24
|
+
|
|
25
|
+
// Sample input: thumbPixelsFor("huge") is 192, thumbPixelsFor("nope") is 64.
|
|
26
|
+
function thumbPixelsFor(size) {
|
|
27
|
+
return THUMB_SIZES[size] !== undefined ? THUMB_SIZES[size] : 64
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// A folder mark never grows past its 128 px size, centred in the larger slots.
|
|
31
|
+
var GLYPH_CAP = 128
|
|
32
|
+
|
|
33
|
+
// Sample input: glyphCap(192) is 128, glyphCap(48) is 48.
|
|
34
|
+
function glyphCap(pixels) {
|
|
35
|
+
return Math.min(pixels, GLYPH_CAP)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// The grid's vertical pad tracks density with Compact anchored at today's pad.
|
|
39
|
+
var GRID_BASE = 0.5
|
|
40
|
+
|
|
41
|
+
// Sample input: gridPadY(14, "compact") is 14, gridPadY(14, "tight") is 7.
|
|
42
|
+
function gridPadY(padX, density) {
|
|
43
|
+
return Math.round(padX * (GRID_BASE + ratioFor(density)))
|
|
44
|
+
}
|