Skip to content

Release Next v3.0.0-next.19

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Oct 11:54
· 145 commits to main since this release
0606e98

@cloudpdf/contract@3.0.0-next.19

Minor Changes

  • #918 by @bobsingor – Share links are grants. The operations are grants.* under
    /v1/tenants/{tenantId}/grants, the scope is grants.manage, and the public
    exchange is POST /v1/grant-sessions with { grant, passphrase }. Answers say
    grant/grants, the record says passphraseProtected, and create and update
    take passphrase. A grant has a name (1 to 100 characters, trimmed, or null).
    New grants are grt_…; shr_… ids keep working. The errors are
    GrantPassphraseRequired and GrantExpired, a layer names its grantId, and
    every Share* schema and type is Grant*.

@cloudpdf/engine@3.0.0-next.19

Minor Changes

  • #918 by @bobsingor – Opens a grant with open({ kind: 'grant', grant, passphrase }), and the
    document's grant is doc.grant. The client half is exchangeGrant,
    grantSessionSource, GrantSessionSource and GrantExchangeError, and it
    exchanges at /v1/grant-sessions.

@cloudpdf/sdk@3.0.0-next.19

Minor Changes

  • #918 by @bobsingor – client.shares is client.grants, with a grant's name and passphrase.

@cloudpdf/server@3.0.0-next.19

Minor Changes

  • #918 by @bobsingor – Share links are grants: routes under /v1/tenants/{tenantId}/grants, the
    grants.manage scope, and the public exchange at POST /v1/grant-sessions,
    which takes { grant, passphrase }. Migration 047 renames share_grants to
    grants and share_visitors to grant_visitors with their indexes and
    constraints, renames password_hash to passphrase_hash, and adds a grant's
    name. New grants are grt_…, and shr_… grants keep working. Session tokens
    name grant:<id>, and security_events records grant.created,
    grant.updated, grant.archived and grant.revoked.

@cloudpdf/viewer-angular@3.0.0-next.19

Minor Changes

  • #918 by @bobsingor – A document from a grant is src: { grant, passphrase, restart }; password
    stays the PDF's own. The exchange helpers are exchangeGrant,
    grantSessionSource and GrantExchangeError.

@cloudpdf/viewer@3.0.0-next.19

Minor Changes

  • #918 by @bobsingor – A document from a grant is src: { grant, passphrase, restart }; password
    stays the PDF's own. The exchange helpers are exchangeGrant,
    grantSessionSource and GrantExchangeError.

@cloudpdf/viewer-react@3.0.0-next.19

Minor Changes

  • #918 by @bobsingor – A document from a grant is src: { grant, passphrase, restart }; password
    stays the PDF's own. The exchange helpers are exchangeGrant,
    grantSessionSource and GrantExchangeError.

@cloudpdf/viewer-svelte@3.0.0-next.19

Minor Changes

  • #918 by @bobsingor – A document from a grant is src: { grant, passphrase, restart }; password
    stays the PDF's own. The exchange helpers are exchangeGrant,
    grantSessionSource and GrantExchangeError.

@cloudpdf/viewer-vue@3.0.0-next.19

Minor Changes

  • #918 by @bobsingor – A document from a grant is src: { grant, passphrase, restart }; password
    stays the PDF's own. The exchange helpers are exchangeGrant,
    grantSessionSource and GrantExchangeError.

@embedpdf/core@3.0.0-next.19

Minor Changes

  • #918 by @bobsingor – A document opened with a grant reports what it waits for as grantRequest, and
    retry() takes the grant's passphrase.

  • #923 by @bobsingor – createKernel({ fetch }) takes your own fetch for { kind: 'url' } documents, to add headers or cookies; it gets the URL and an init with the document's cancel signal, and retry() calls it again. A { kind: 'url' } source takes an id of its own. A download the server refuses with 401 or 403 fails as permission-denied, and one that isn't a PDF (a sign-in page, say) as invalid-input. New exports: the HostFetch type and isPdf(bytes).

@embedpdf/core-stage@3.0.0-next.19

Minor Changes

  • #923 by @bobsingor – Zoom limits: ZoomLimits is a view's zoom range, resolveZoomLimits(minZoom, maxZoom) makes one inside ZOOM_MIN and ZOOM_MAX (a minZoom above maxZoom counts as maxZoom), and clampZoom(zoom, limits) keeps a zoom inside it. resolveZoom() and zoomAround() take the limits as a last argument; without it they keep the full range.

@embedpdf/core-ui@3.0.0-next.19

Minor Changes

  • #923 by @bobsingor – A bar can go at the top of a panel, under its title: the place { panel: id }, beside an edge, { float }, { with } and { at }. A panel's bars stack in the order they were added. barsInPanel(data, panel) lists them and panelOf(place) reads the panel a place names, and validateLayout() names a panel the layout doesn't have, with the closest one that exists.

Patch Changes

  • #923 by @bobsingor – An item without its own importance has its group's, as the docs say, instead of 3. group('annotate', items, { importance: 2 }) now moves those items into the "More" menu before the rest of the bar, and every item of a group at 5 stays in the bar. An item's own importance still wins, and a custom item without a command is still pinned.

@embedpdf/engine-core@3.0.0-next.19

Minor Changes

  • #918 by @bobsingor – The open input for a CloudPDF grant is { kind: 'grant', grant, passphrase?, restart? } (OpenInputGrant), and a document opened with one has doc.grant
    (DocumentGrant), whose resume() takes passphrase. ShareOpenRequest is
    GrantOpenRequest, with passphraseProvided, and SharePasswordRequired is
    GrantPassphraseRequired.

@embedpdf/angular@3.0.0-next.19

Minor Changes

  • #920 by @bobsingor – The Stage draws the zoom tool's box while you drag, dashed in the accent color (the stage's zoomBox setting, or the --epdf-zoom-box-* variables). With interaction on, it registers the tool's handler for its own view only.

  • #923 by @bobsingor – provideEmbedPdf({ fetch }): your own fetch for documents at a URL, to add headers or cookies.

  • #923 by @bobsingor – EpdfStageRef (and so the <epdf-stage> component) has canZoomIn() and canZoomOut(), whether the zoom is below the Stage's maxZoom or above its minZoom.

@embedpdf/react@3.0.0-next.19

Minor Changes

  • #920 by @bobsingor – The Stage draws the zoom tool's box while you drag, dashed in the accent color (the stage's zoomBox setting, or the --epdf-zoom-box-* variables). With interaction on, it registers the tool's handler for its own view only.

  • #923 by @bobsingor – <Viewer fetch>: your own fetch for documents at a URL, to add headers or cookies. Each download calls the latest prop.

@embedpdf/svelte@3.0.0-next.19

Minor Changes

  • #920 by @bobsingor – The Stage draws the zoom tool's box while you drag, dashed in the accent color (the stage's zoomBox setting, or the --epdf-zoom-box-* variables). With interaction on, it registers the tool's handler for its own view only.

  • #923 by @bobsingor – <Viewer fetch>: your own fetch for documents at a URL, to add headers or cookies. Each download calls the latest prop.

@embedpdf/vue@3.0.0-next.19

Minor Changes

  • #920 by @bobsingor – The Stage draws the zoom tool's box while you drag, dashed in the accent color (the stage's zoomBox setting, or the --epdf-zoom-box-* variables). With interaction on, it registers the tool's handler for its own view only.

  • #923 by @bobsingor – <Viewer :fetch>: your own fetch for documents at a URL, to add headers or cookies. Each download calls the latest prop.

@embedpdf/web@3.0.0-next.19

Minor Changes

  • #920 by @bobsingor – Theming for the zoom tool's box: --epdf-zoom-box-fill and --epdf-zoom-box-stroke, which win over the stage's zoomBox setting, plus zoomBoxPaint(colors, accent) and ZOOM_BOX_DASH to draw it.

  • #923 by @bobsingor – Export isFromTextField(event), which tells a key or a copy typed in a text field (an input, a text area, a select or editable content, inside a shadow root too) from one meant for the viewer around it.

@embedpdf/plugin-commands@3.0.0-next.19

Minor Changes

  • #920 by @bobsingor – The standard commands have tool:zoom, the marquee zoom tool, on Z (Acrobat's key), next to tool:pointer (V) and tool:pan (H).

Patch Changes

  • #923 by @bobsingor – The standard zoom:in and zoom:out commands are off at the Stage's maxZoom and minZoom.

@embedpdf/plugin-i18n@3.0.0-next.19

Minor Changes

  • #920 by @bobsingor – Labels for the tool:zoom command (commands.tool.zoom) in all eight languages.

@embedpdf/plugin-interaction@3.0.0-next.19

Minor Changes

  • #920 by @bobsingor – A third built-in tool, zoom: drag a box to zoom to it, or click to zoom in a step (Alt-click zooms out), like Acrobat's Marquee Zoom. Its cursor is zoom-in on the pages and between them, one finger draws the box on a touch screen, and it neither follows links nor fills forms. The stage draws the box and does the zooming. listTools() now starts ['pointer', 'pan', 'zoom'].

@embedpdf/plugin-stage@3.0.0-next.19

Minor Changes

  • #920 by @bobsingor – The zoom tool's box. On the host lens, beginZoomDrag, moveZoomDrag, endZoomDrag({ zoomOut }) and cancelZoomDrag run the drag, and getZoomBox() gives the box in viewport pixels for an adapter to draw. A box zooms straight in, about the one point that stays put, until it fills the view, centered; it glides with scrollBehavior. A click (under 4 pixels) zooms one step around the point. createZoomDragHandler(stage, interaction) connects it to the interaction hub. The new zoomBox setting ({ fill, stroke }, null follows the accent) colors the box. zoomIn() and zoomOut() take { around }, like zoomTo and zoomBy. reveal() with a fit now stops at the zoom limit (64×) instead of zooming past it on a tiny rect. Under a tool with a gapCursor (pan, zoom), the pan fallback no longer takes drags between pages. A fit mode, a level or resetSettings() asked for again now applies after a zoom the user made: before, fitAutomatic() after a zoom step, pinch, double-tap or zoomed reveal did nothing when automatic was already the setting, and so did zoomTo() with the last level set.

  • #923 by @bobsingor – The Stage has zoom limits: the minZoom and maxZoom settings, 0.05 and 64 by default (5% to 6400%). Nothing zooms past them: not zoomIn(), a pinch or Ctrl+wheel, zoomTo(), zoomBy(), setCamera(), a reveal or a destination, and not a fit mode, which stops at the limit. When the limits change, a zoom outside them moves to the nearest one; a minZoom above maxZoom counts as maxZoom. canZoomIn() and canZoomOut() say whether the zoom is below maxZoom or above minZoom, for disabling your buttons.

    zoomIn() and zoomOut() step through round levels (100%, 125%, 150%, 200%, 300% and so on) in place of ×1.2. From a level in between, such as a fit, they go to the next one, and a level within 5% of a round one steps past it.

@embedpdf/viewer-angular@3.0.0-next.19

Minor Changes

  • #923 by @bobsingor – <epdf-pdf-viewer [fetch]>: your own fetch for documents at a URL, to add headers or cookies. It follows its input, like src.

@embedpdf/viewer-chrome@3.0.0-next.19

Minor Changes

  • #923 by @bobsingor – Comment cards show what their thread has and offer what comes next. A mark with nothing said yet shows one box to write the comment, which becomes the annotation's own text where it may change, and a reply where it may not. A thread shows its comment, its replies and a box to reply; the box shows on the selected card, and stays while it holds a draft. A thread's status shows as a chip by its date once one is set. A check on the card marks the thread completed, and the card's menu (its ⋯ button, or a right-click on the card) sets any review status and deletes the thread. A page's count says how many comments are written on it. New commands comment:status-accepted, comment:status-rejected, comment:status-cancelled, comment:status-completed, comment:status-none, comment:delete-thread and the comment-item menu, and the icons circleCheck and send.

  • #918 by @bobsingor – The grant prompt (grantPrompt in every locale) asks for a grant's passphrase
    or its questions.

  • #920 by @bobsingor – Marquee Zoom in the zoom menu: the tool:zoom command switches to the zoom tool. Drag a box to zoom to it, or click to zoom in (Alt-click: out). It has labels in every built-in language.

  • #923 by @bobsingor – The rows of buttons at the top of the thumbnails, outline and attachments panels are bars of the layout, named after their panel: thumbnails (groups edit, more, history), outline (filter, items) and attachments (count, files). They fit the panel's width like any bar, with what doesn't fit in a "More" menu, so a narrow panel no longer cuts off undo and redo, and add, remove and replace change them. The thumbnails bar also has insert from a file, duplicate and extract where there's room, in place of the page menu's button. The outline's filter and the attachments' count are { custom: 'outline-filter' } and { custom: 'attachments-count' }. Any panel, your own too, draws the bars placed in it with place: { panel: id }.

  • #923 by @bobsingor – FullViewer takes a fetch prop, which every document at a URL downloads with.

  • #923 by @bobsingor – The viewer speaks Swedish (sv) and Traditional Chinese (zh-TW), for fifteen languages. Readers of Traditional Chinese (zh-TW, zh-HK, zh-MO, zh-Hant) now see it instead of English. Both are machine-translated in the terms Adobe Acrobat uses in each language, are waiting for a native speaker's review, and load the first time the viewer shows them. strings an app gives for sv or zh-TW now change the built-in language's words, and the words it leaves out show in that language instead of English.

Patch Changes

  • #923 by @bobsingor – The bar for selected annotations sits below them, and above them when there's no room below. Its menus and the link editor open on the same side.

  • #923 by @bobsingor – The default bars make room in the order their groups say, now that a group's importance is its items' too. In a narrow main bar, pan and pointer are the first buttons to go into the "More" menu, then the View menu and zoom, and the document menu, thumbnails, search and comments never do. So a phone keeps the mode tabs, folded behind a chevron, beside search and comments. In the annotate, shapes and form bars, the text tools, polygons and the less common fields go before undo and redo. The measuring tools, and delete in the annotation bar, stay in their bars. An item you add with layout.add(item, { group }) takes that group's importance unless you give it its own.

  • #923 by @bobsingor – The thumbnails panel has a scrollbar like the pages', and room above the first thumbnail: 20 px around the thumbnails, where the panel's narrow width used to give them the 4 px phone gutter. plugins.thumbnails can still set padding and responsive.

  • #923 by @bobsingor – Full Screen (view:fullscreen) fills the screen with the viewer's own box instead of the whole page, and leaves the page's own full screen alone. The viewer stays where the page put it, and nothing on the page moves or changes. In a frame without allow="fullscreen" the button isn't there, since the browser lets nothing in such a frame go full screen. Where the browser has no full screen for elements (Safari on iPhone) or refuses it, the viewer covers the whole window instead, until the button or Escape ends it; a viewer that already is the whole window there has no Full Screen. The button follows Escape and the page's own requestFullscreen() on the <embedpdf-viewer> element, shows the fullscreenExit icon while the viewer fills the screen, and dialogs and sheets open in the viewer stay on top as it goes full screen.

  • #923 by @bobsingor – The zoom:in and zoom:out commands are off at the zoom limits, and the toolbar's − and + buttons show it: they grey out at maxZoom and minZoom, set under plugins.stage. Zooming in and out steps through round levels (100%, 125%, 150%, 200% and so on).

@embedpdf/viewer@3.0.0-next.19

Minor Changes

  • #923 by @bobsingor – The fetch config key: your own fetch for every document at a URL (src, documents and { kind: 'url' } in code), to add headers or cookies. It follows its prop, as element.fetch too: the next download uses a new one, and the viewer stays. A server that answers 401 or 403 shows in the tab as not allowed, and Try again calls fetch again.

@embedpdf/viewer-react@3.0.0-next.19

Minor Changes

  • #923 by @bobsingor – <PDFViewer fetch>: your own fetch for documents at a URL, to add headers or cookies. It follows its prop, like src.

@embedpdf/viewer-svelte@3.0.0-next.19

Minor Changes

  • #923 by @bobsingor – <PDFViewer fetch>: your own fetch for documents at a URL, to add headers or cookies. It follows its prop, like src.

@embedpdf/viewer-vue@3.0.0-next.19

Minor Changes

  • #923 by @bobsingor – <PDFViewer :fetch>: your own fetch for documents at a URL, to add headers or cookies. It follows its prop, like src.

@embedpdf/plugin-annotation@3.0.0-next.19

Patch Changes

  • #923 by @bobsingor – canDelete() answers for everything a delete takes. Deleting an annotation deletes its replies, review states, grouped parts and popups with it, and canDelete() (on the plugin and on comments) now checks each of them: the annotation as before, and what goes with it by its locked flag and the permission to delete it. A delete button no longer offers a delete the engine refuses (a reply someone else wrote, under a grant that deletes only your own), or deletes a locked reply along with its parent. comments.canDeleteThread() and comments.deleteThread() use the same check, so a thread with a review status can be deleted again: the hidden annotation a status is stored in no longer blocks it.

@embedpdf/core-acrojs@3.0.0-next.19

@embedpdf/core-annotation@3.0.0-next.19

@embedpdf/core-fonts@3.0.0-next.19

@embedpdf/core-form@3.0.0-next.19

@embedpdf/core-geometry@3.0.0-next.19

@embedpdf/core-js-sandbox@3.0.0-next.19

@embedpdf/core-signature@3.0.0-next.19

@embedpdf/engine@3.0.0-next.19

@embedpdf/engine-runtime@3.0.0-next.19

@embedpdf/engine-runtime-darwin-arm64@3.0.0-next.19

@embedpdf/engine-runtime-darwin-x64@3.0.0-next.19

@embedpdf/engine-runtime-linux-arm64@3.0.0-next.19

@embedpdf/engine-runtime-linux-x64@3.0.0-next.19

@embedpdf/engine-runtime-linuxmusl-arm64@3.0.0-next.19

@embedpdf/engine-runtime-linuxmusl-x64@3.0.0-next.19

@embedpdf/engine-runtime-wasm32@3.0.0-next.19

@embedpdf/engine-runtime-win32-arm64@3.0.0-next.19

@embedpdf/engine-runtime-win32-x64@3.0.0-next.19

@embedpdf/engine-services@3.0.0-next.19

@embedpdf/plugin-actions@3.0.0-next.19

@embedpdf/plugin-attachment@3.0.0-next.19

@embedpdf/plugin-form@3.0.0-next.19

@embedpdf/plugin-history@3.0.0-next.19

@embedpdf/plugin-link@3.0.0-next.19

@embedpdf/plugin-measurement@3.0.0-next.19

@embedpdf/plugin-metadata@3.0.0-next.19

@embedpdf/plugin-outline@3.0.0-next.19

@embedpdf/plugin-page-edit@3.0.0-next.19

@embedpdf/plugin-redaction@3.0.0-next.19

@embedpdf/plugin-render@3.0.0-next.19

@embedpdf/plugin-search@3.0.0-next.19

@embedpdf/plugin-selection@3.0.0-next.19

@embedpdf/plugin-shell@3.0.0-next.19

@embedpdf/plugin-signature@3.0.0-next.19

@embedpdf/plugin-stamp@3.0.0-next.19

@embedpdf/plugin-view-manager@3.0.0-next.19