@segnavia/react 0.20.0 → 0.21.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.
@@ -1,7 +1,7 @@
1
- import { CaptionProps, CaptionsProps, CounterProps, DocumentProps, FullscreenProps, MuteProps, NotesProps, PageProps, PaperProps, PlayProps, PlayerProps, RailProps, StageProps, StepProps, ThumbnailProps, TimeProps, TrackProps } from "./props.js";
1
+ import { CaptionProps, CaptionsProps, CounterProps, DocumentProps, FullscreenProps, MuteProps, NotesProps, PageProps, PaperPickerProps, PaperProps, PlayProps, PlayerProps, RailProps, StageProps, StepProps, ThumbnailProps, TimeProps, TrackProps } from "./props.js";
2
2
  import { SegnaviaPlayer } from "@segnavia/frame/player";
3
3
  import { SegnaviaDocument, SegnaviaPage, SegnaviaPaper, SegnaviaStage, SegnaviaThumbnail } from "@segnavia/frame";
4
- import { SegnaviaCaption, SegnaviaCaptions, SegnaviaCounter, SegnaviaFullscreen, SegnaviaMute, SegnaviaNotes, SegnaviaPlay, SegnaviaRail, SegnaviaStep, SegnaviaTime, SegnaviaTrack } from "@segnavia/frame/controls";
4
+ import { SegnaviaCaption, SegnaviaCaptions, SegnaviaCounter, SegnaviaFullscreen, SegnaviaMute, SegnaviaNotes, SegnaviaPaperPicker, SegnaviaPlay, SegnaviaRail, SegnaviaStep, SegnaviaTime, SegnaviaTrack } from "@segnavia/frame/controls";
5
5
  //#region src/elements.d.ts
6
6
  export interface RuntimeElementDescriptor {
7
7
  tag: `segnavia-${string}`;
@@ -19,6 +19,7 @@ export declare const ELEMENTS: {
19
19
  readonly player: ElementDescriptor<SegnaviaPlayer, PlayerProps, "segnavia-player">;
20
20
  readonly stage: ElementDescriptor<SegnaviaStage, StageProps, "segnavia-stage">;
21
21
  readonly thumbnail: ElementDescriptor<SegnaviaThumbnail, ThumbnailProps, "segnavia-thumbnail">;
22
+ readonly paperPicker: ElementDescriptor<SegnaviaPaperPicker, PaperPickerProps, "segnavia-paper-picker">;
22
23
  readonly page: ElementDescriptor<SegnaviaPage, PageProps, "segnavia-page">;
23
24
  readonly paper: ElementDescriptor<SegnaviaPaper, PaperProps, "segnavia-paper">;
24
25
  readonly document: ElementDescriptor<SegnaviaDocument, DocumentProps, "segnavia-document">;
package/dist/elements.js CHANGED
@@ -38,6 +38,7 @@ const ELEMENTS = {
38
38
  "css",
39
39
  "mountMargin"
40
40
  ], { onSegnaviaThumbnailError: "segnavia-thumbnail-error" }),
41
+ paperPicker: element(STYLED_ELEMENTS.paperPicker, ["value", "labels"], { onChange: "change" }),
41
42
  page: element(HEADLESS_ELEMENTS.page, [
42
43
  "page",
43
44
  "css",
package/dist/index.d.ts CHANGED
@@ -1,10 +1,11 @@
1
- import { CaptionProps, CaptionsProps, CounterProps, DocumentProps, FullscreenProps, MuteProps, NotesProps, PageProps, PaperProps, PlayProps, PlayerProps, RailProps, StageProps, StepProps, ThumbnailProps, TimeProps, TrackProps } from "./props.js";
1
+ import { CaptionProps, CaptionsProps, CounterProps, DocumentProps, FullscreenProps, MuteProps, NotesProps, PageProps, PaperPickerProps, PaperProps, PlayProps, PlayerProps, RailProps, StageProps, StepProps, ThumbnailProps, TimeProps, TrackProps } from "./props.js";
2
2
  import { AnyElementDescriptor, ElementFor, PropsFor } from "./elements.js";
3
3
  import { SegnaviaIntrinsicElements } from "./jsx.js";
4
4
  import { AuthoringController, AuthoringController as AuthoringController$1, AuthoringErrorDetail, AuthoringHandlers, AuthoringHandlers as AuthoringHandlers$1, AuthoringOptions, AuthoringOptions as AuthoringOptions$1, DirtyChangeDetail, SaveNotesInput, SavePrintMomentInput } from "@segnavia/frame/authoring";
5
+ import { DocumentAuthoringController, DocumentAuthoringController as DocumentAuthoringController$1, DocumentAuthoringErrorDetail, DocumentAuthoringHandlers, DocumentAuthoringHandlers as DocumentAuthoringHandlers$1, MovePageHandler, MovePageInput } from "@segnavia/frame/document-authoring";
5
6
  import { SegnaviaPlayer } from "@segnavia/frame/player";
6
7
  import { ReactNode } from "react";
7
- import { DeckController } from "@segnavia/frame";
8
+ import { DeckController, SegnaviaDocument } from "@segnavia/frame";
8
9
  //#region src/index.d.ts
9
10
  type ElementWithController = HTMLElement & {
10
11
  controller?: DeckController | null;
@@ -21,6 +22,22 @@ export declare const Stage: import("react").ForwardRefExoticComponent<StageProps
21
22
  export declare const Thumbnail: import("react").ForwardRefExoticComponent<ThumbnailProps & {
22
23
  children?: ReactNode;
23
24
  } & import("react").RefAttributes<import("@segnavia/frame").SegnaviaThumbnail>>;
25
+ export declare const PaperPicker: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").HTMLAttributes<import("@segnavia/frame/controls").SegnaviaPaperPicker>, "children"> & {
26
+ children?: ReactNode;
27
+ }, "onChange"> & {
28
+ value?: import("@segnavia/frame/controls").SegnaviaPaperPicker["value"];
29
+ labels?: import("@segnavia/frame/controls").PaperPickerLabelOverrides;
30
+ onChange?: (event: CustomEvent<{
31
+ paper: "dl" | "letter" | "legal" | "tabloid" | "a3" | "a4" | "a5" | "business-card-us" | "business-card-eu" | "business-card-square-us" | "business-card-slim-us" | "postcard-4x6" | "postcard-5x7" | "postcard-6x9" | "postcard-6x11" | "card-square-4in" | "half-letter" | "a6" | "rack-card-4x9" | "rack-card-3.5x8.5" | "poster-12x18" | "poster-16x20" | "poster-18x24" | "poster-24x36" | "a2" | "a1" | "a0" | {
32
+ width: number;
33
+ height: number;
34
+ unit: "mm" | "in" | "pt";
35
+ };
36
+ orientation: "portrait" | "landscape";
37
+ }>) => void;
38
+ } & {
39
+ children?: ReactNode;
40
+ } & import("react").RefAttributes<import("@segnavia/frame/controls").SegnaviaPaperPicker>>;
24
41
  export declare const Page: import("react").ForwardRefExoticComponent<PageProps & {
25
42
  children?: ReactNode;
26
43
  } & import("react").RefAttributes<import("@segnavia/frame").SegnaviaPage>>;
@@ -29,7 +46,7 @@ export declare const Paper: import("react").ForwardRefExoticComponent<PaperProps
29
46
  } & import("react").RefAttributes<import("@segnavia/frame").SegnaviaPaper>>;
30
47
  export declare const Document: import("react").ForwardRefExoticComponent<DocumentProps & {
31
48
  children?: ReactNode;
32
- } & import("react").RefAttributes<import("@segnavia/frame").SegnaviaDocument>>;
49
+ } & import("react").RefAttributes<SegnaviaDocument>>;
33
50
  export declare const Play: import("react").ForwardRefExoticComponent<Omit<import("react").HTMLAttributes<import("@segnavia/frame/controls").SegnaviaPlay>, "children"> & {
34
51
  children?: ReactNode;
35
52
  } & {
@@ -139,5 +156,6 @@ export declare const Rail: import("react").ForwardRefExoticComponent<Omit<import
139
156
  } & import("react").RefAttributes<import("@segnavia/frame/controls").SegnaviaRail>>;
140
157
  export declare function useDeckController(element: ElementWithController | null): DeckController | null;
141
158
  export declare function useAuthoring(player: SegnaviaPlayer | null, handlers: AuthoringHandlers$1, options?: AuthoringOptions$1): AuthoringController$1 | null;
159
+ export declare function useDocumentAuthoring(document: SegnaviaDocument | null, handlers: DocumentAuthoringHandlers$1): DocumentAuthoringController$1 | null;
142
160
  //#endregion
143
- export type { AuthoringController, AuthoringErrorDetail, AuthoringHandlers, AuthoringOptions, CaptionProps, CaptionsProps, CounterProps, DirtyChangeDetail, DocumentProps, FullscreenProps, MuteProps, NotesProps, PageProps, PaperProps, PlayProps, PlayerProps, RailProps, SaveNotesInput, SavePrintMomentInput, SegnaviaIntrinsicElements, StageProps, StepProps, ThumbnailProps, TimeProps, TrackProps };
161
+ export type { AuthoringController, AuthoringErrorDetail, AuthoringHandlers, AuthoringOptions, CaptionProps, CaptionsProps, CounterProps, DirtyChangeDetail, DocumentAuthoringController, DocumentAuthoringErrorDetail, DocumentAuthoringHandlers, DocumentProps, FullscreenProps, MovePageHandler, MovePageInput, MuteProps, NotesProps, PageProps, PaperPickerProps, PaperProps, PlayProps, PlayerProps, RailProps, SaveNotesInput, SavePrintMomentInput, SegnaviaIntrinsicElements, StageProps, StepProps, ThumbnailProps, TimeProps, TrackProps };
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { ELEMENTS } from "./elements.js";
2
2
  import { syncElementProps } from "./react-props.js";
3
3
  import { attachAuthoring } from "@segnavia/frame/authoring";
4
+ import { attachDocumentAuthoring } from "@segnavia/frame/document-authoring";
4
5
  import "@segnavia/frame/player";
5
6
  import { createElement, forwardRef, useCallback, useEffect, useRef, useState } from "react";
6
7
  //#region src/index.ts
@@ -37,6 +38,7 @@ function createComponent(descriptor) {
37
38
  const Player = createComponent(ELEMENTS.player);
38
39
  const Stage = createComponent(ELEMENTS.stage);
39
40
  const Thumbnail = createComponent(ELEMENTS.thumbnail);
41
+ const PaperPicker = createComponent(ELEMENTS.paperPicker);
40
42
  const Page = createComponent(ELEMENTS.page);
41
43
  const Paper = createComponent(ELEMENTS.paper);
42
44
  const Document = createComponent(ELEMENTS.document);
@@ -88,5 +90,21 @@ function useAuthoring(player, handlers, options) {
88
90
  ]);
89
91
  return controller;
90
92
  }
93
+ function useDocumentAuthoring(document, handlers) {
94
+ const [controller, setController] = useState(null);
95
+ const latestHandlers = useRef(handlers);
96
+ latestHandlers.current = handlers;
97
+ useEffect(() => {
98
+ if (!document) return;
99
+ const attached = attachDocumentAuthoring(document, latestHandlers.current);
100
+ setController(attached);
101
+ return () => {
102
+ attached.detach();
103
+ setController(null);
104
+ };
105
+ }, [document]);
106
+ useEffect(() => controller?.update(handlers), [controller, handlers]);
107
+ return controller;
108
+ }
91
109
  //#endregion
92
- export { Caption, Captions, Counter, Document, Fullscreen, Mute, Notes, Page, Paper, Play, Player, Rail, Stage, Step, Thumbnail, Time, Track, createComponent, useAuthoring, useDeckController };
110
+ export { Caption, Captions, Counter, Document, Fullscreen, Mute, Notes, Page, Paper, PaperPicker, Play, Player, Rail, Stage, Step, Thumbnail, Time, Track, createComponent, useAuthoring, useDeckController, useDocumentAuthoring };
package/dist/props.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { PlayerControls, PlayerFit, SegnaviaPlayer } from "@segnavia/frame/player";
2
2
  import { HTMLAttributes, ReactNode } from "react";
3
3
  import { ControllerOptions, DeckController, FittedSize, HostTransition, PageInput, PrintInput, SegnaviaDocument, SegnaviaPage, SegnaviaPaper, SegnaviaStage, SegnaviaThumbnail, StageReserve } from "@segnavia/frame";
4
- import { PlayerLabels, SegnaviaCaption, SegnaviaCaptions, SegnaviaCounter, SegnaviaFullscreen, SegnaviaMute, SegnaviaNotes, SegnaviaPlay, SegnaviaRail, SegnaviaStep, SegnaviaTime, SegnaviaTrack } from "@segnavia/frame/controls";
4
+ import { PaperPickerLabelOverrides, PlayerLabels, SegnaviaCaption, SegnaviaCaptions, SegnaviaCounter, SegnaviaFullscreen, SegnaviaMute, SegnaviaNotes, SegnaviaPaperPicker, SegnaviaPlay, SegnaviaRail, SegnaviaStep, SegnaviaTime, SegnaviaTrack } from "@segnavia/frame/controls";
5
5
  //#region src/props.d.ts
6
6
  type ElementProps<E extends HTMLElement> = Omit<HTMLAttributes<E>, 'children'> & {
7
7
  children?: ReactNode;
@@ -60,6 +60,11 @@ export interface ThumbnailProps extends ElementProps<SegnaviaThumbnail> {
60
60
  mountMargin?: number;
61
61
  onSegnaviaThumbnailError?: CustomEventProp<unknown>;
62
62
  }
63
+ export type PaperPickerProps = Omit<ElementProps<SegnaviaPaperPicker>, 'onChange'> & {
64
+ value?: SegnaviaPaperPicker['value'];
65
+ labels?: PaperPickerLabelOverrides;
66
+ onChange?: CustomEventProp<SegnaviaPaperPicker['value']>;
67
+ };
63
68
  export interface PageProps extends ElementProps<SegnaviaPage> {
64
69
  page?: PageInput | null;
65
70
  css?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@segnavia/react",
3
- "version": "0.20.0",
3
+ "version": "0.21.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -26,7 +26,7 @@
26
26
  }
27
27
  },
28
28
  "dependencies": {
29
- "@segnavia/frame": "0.20.0"
29
+ "@segnavia/frame": "0.21.0"
30
30
  },
31
31
  "peerDependencies": {
32
32
  "react": "^18.0.0 || ^19.0.0",