@segnavia/format 0.13.0 → 0.15.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/dist/board-sections.d.ts +18 -0
- package/dist/board-sections.js +210 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/package.json +1 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Board, BoardSection } from "./board.js";
|
|
2
|
+
import { Point } from "./deck.js";
|
|
3
|
+
import { BoardShapes } from "./board-geometry.js";
|
|
4
|
+
//#region src/board-sections.d.ts
|
|
5
|
+
export declare const SECTION_PADDING = 24;
|
|
6
|
+
export declare const SECTION_TITLE_ROOM = 32;
|
|
7
|
+
export declare const SECTION_MIN_SIZE: {
|
|
8
|
+
readonly width: 240;
|
|
9
|
+
readonly height: 160;
|
|
10
|
+
};
|
|
11
|
+
export declare const SECTION_GAP = 16;
|
|
12
|
+
export declare const MAKE_ROOM_LIMIT = 50;
|
|
13
|
+
export declare function fitSection(board: Board, shapes: BoardShapes, sectionId: string): Board;
|
|
14
|
+
export declare function assignMembership(board: Board, shapes: BoardShapes, ids: readonly string[], point: Point, startingSections?: readonly BoardSection[]): Board;
|
|
15
|
+
export declare function makeRoom(board: Board, shapes: BoardShapes, changed: readonly string[]): Board;
|
|
16
|
+
export declare function fitTouchedSections(previous: Board, board: Board, shapes: BoardShapes, touched: readonly string[]): Board;
|
|
17
|
+
export declare function settleBoard(previous: Board, board: Board, shapes: BoardShapes, touched: readonly string[]): Board;
|
|
18
|
+
//#endregion
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import { moveItems, moveSection } from "./board-edit.js";
|
|
2
|
+
import { itemHeight } from "./board-geometry.js";
|
|
3
|
+
//#region src/board-sections.ts
|
|
4
|
+
const SECTION_PADDING = 24;
|
|
5
|
+
const SECTION_TITLE_ROOM = 32;
|
|
6
|
+
const SECTION_MIN_SIZE = {
|
|
7
|
+
width: 240,
|
|
8
|
+
height: 160
|
|
9
|
+
};
|
|
10
|
+
const SECTION_GAP = 16;
|
|
11
|
+
const MAKE_ROOM_LIMIT = 50;
|
|
12
|
+
function itemRectangle(board, shapes, id) {
|
|
13
|
+
const item = board.items.find((entry) => entry.id === id);
|
|
14
|
+
if (!item) return void 0;
|
|
15
|
+
const shape = shapes.items[id];
|
|
16
|
+
if (!shape) throw new Error(`item "${id}" has no supplied shape; supply shapes.items["${id}"]`);
|
|
17
|
+
return {
|
|
18
|
+
x: item.x,
|
|
19
|
+
y: item.y,
|
|
20
|
+
width: item.width,
|
|
21
|
+
height: itemHeight(item, shape)
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function fittedRectangle(board, shapes, sectionId, excluded = /* @__PURE__ */ new Set()) {
|
|
25
|
+
const section = board.sections.find((entry) => entry.id === sectionId);
|
|
26
|
+
if (!section) return void 0;
|
|
27
|
+
const members = section.items.filter((id) => !excluded.has(id)).map((id) => itemRectangle(board, shapes, id)).filter((rectangle) => rectangle !== void 0);
|
|
28
|
+
if (members.length === 0) return {
|
|
29
|
+
x: section.rectangle.x,
|
|
30
|
+
y: section.rectangle.y,
|
|
31
|
+
...SECTION_MIN_SIZE
|
|
32
|
+
};
|
|
33
|
+
const left = Math.min(...members.map((rectangle) => rectangle.x));
|
|
34
|
+
const top = Math.min(...members.map((rectangle) => rectangle.y));
|
|
35
|
+
const right = Math.max(...members.map((rectangle) => rectangle.x + rectangle.width));
|
|
36
|
+
const bottom = Math.max(...members.map((rectangle) => rectangle.y + rectangle.height));
|
|
37
|
+
return {
|
|
38
|
+
x: left - 24,
|
|
39
|
+
y: top - 24 - 32,
|
|
40
|
+
width: right - left + 48,
|
|
41
|
+
height: bottom - top + 48 + 32
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function fitSection(board, shapes, sectionId) {
|
|
45
|
+
const rectangle = fittedRectangle(board, shapes, sectionId);
|
|
46
|
+
if (!rectangle) return board;
|
|
47
|
+
return {
|
|
48
|
+
...board,
|
|
49
|
+
sections: board.sections.map((section) => section.id === sectionId ? {
|
|
50
|
+
...section,
|
|
51
|
+
rectangle
|
|
52
|
+
} : section)
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function contains(rectangle, point) {
|
|
56
|
+
return point.x >= rectangle.x && point.x <= rectangle.x + rectangle.width && point.y >= rectangle.y && point.y <= rectangle.y + rectangle.height;
|
|
57
|
+
}
|
|
58
|
+
function assignMembership(board, shapes, ids, point, startingSections = []) {
|
|
59
|
+
const moved = new Set(ids.filter((id) => board.items.some((item) => item.id === id)));
|
|
60
|
+
let target;
|
|
61
|
+
for (const section of board.sections) {
|
|
62
|
+
const rectangle = fittedRectangle(board, shapes, section.id, moved);
|
|
63
|
+
if (rectangle && contains(rectangle, point)) target = section.id;
|
|
64
|
+
}
|
|
65
|
+
const assignments = /* @__PURE__ */ new Map();
|
|
66
|
+
for (const id of moved) {
|
|
67
|
+
const starting = startingSections.find((section) => section.items.includes(id));
|
|
68
|
+
assignments.set(id, starting && contains(starting.rectangle, point) ? starting.id : target);
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
...board,
|
|
72
|
+
sections: board.sections.map((section) => {
|
|
73
|
+
const items = section.items.filter((id) => !moved.has(id) || assignments.get(id) === section.id);
|
|
74
|
+
const existing = new Set(items);
|
|
75
|
+
const appended = ids.filter((id, index) => moved.has(id) && assignments.get(id) === section.id && !existing.has(id) && ids.indexOf(id) === index);
|
|
76
|
+
return {
|
|
77
|
+
...section,
|
|
78
|
+
items: [...items, ...appended]
|
|
79
|
+
};
|
|
80
|
+
})
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
function overlaps(a, b) {
|
|
84
|
+
return a.x < b.x + b.width && a.x + a.width > b.x && a.y < b.y + b.height && a.y + a.height > b.y;
|
|
85
|
+
}
|
|
86
|
+
function clearingDelta(anchor, neighbor) {
|
|
87
|
+
return [
|
|
88
|
+
{
|
|
89
|
+
x: anchor.x - 16 - (neighbor.x + neighbor.width),
|
|
90
|
+
y: 0
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
x: anchor.x + anchor.width + 16 - neighbor.x,
|
|
94
|
+
y: 0
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
x: 0,
|
|
98
|
+
y: anchor.y - 16 - (neighbor.y + neighbor.height)
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
x: 0,
|
|
102
|
+
y: anchor.y + anchor.height + 16 - neighbor.y
|
|
103
|
+
}
|
|
104
|
+
].reduce((best, candidate) => Math.abs(candidate.x) + Math.abs(candidate.y) < Math.abs(best.x) + Math.abs(best.y) ? candidate : best);
|
|
105
|
+
}
|
|
106
|
+
function entityRectangle(board, shapes, entity) {
|
|
107
|
+
if (entity.kind === "section") return board.sections.find((section) => section.id === entity.id)?.rectangle;
|
|
108
|
+
if (entity.kind === "item") return itemRectangle(board, shapes, entity.id);
|
|
109
|
+
const label = board.labels.find((entry) => entry.id === entity.id);
|
|
110
|
+
if (!label) return void 0;
|
|
111
|
+
const shape = shapes.labels[entity.id];
|
|
112
|
+
if (!shape) throw new Error(`label "${entity.id}" has no supplied shape; supply shapes.labels["${entity.id}"]`);
|
|
113
|
+
return {
|
|
114
|
+
x: label.x,
|
|
115
|
+
y: label.y,
|
|
116
|
+
...shape
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
function moveEntity(board, entity, delta) {
|
|
120
|
+
if (entity.kind === "item") return moveItems(board, [entity.id], delta);
|
|
121
|
+
if (entity.kind === "label") return {
|
|
122
|
+
...board,
|
|
123
|
+
labels: board.labels.map((label) => label.id === entity.id ? {
|
|
124
|
+
...label,
|
|
125
|
+
x: label.x + delta.x,
|
|
126
|
+
y: label.y + delta.y
|
|
127
|
+
} : label)
|
|
128
|
+
};
|
|
129
|
+
return moveSection(board, entity.id, delta);
|
|
130
|
+
}
|
|
131
|
+
function neighbors(board) {
|
|
132
|
+
return [
|
|
133
|
+
...board.sections.map((section) => ({
|
|
134
|
+
kind: "section",
|
|
135
|
+
id: section.id
|
|
136
|
+
})),
|
|
137
|
+
...board.items.map((item) => ({
|
|
138
|
+
kind: "item",
|
|
139
|
+
id: item.id
|
|
140
|
+
})),
|
|
141
|
+
...board.labels.map((label) => ({
|
|
142
|
+
kind: "label",
|
|
143
|
+
id: label.id
|
|
144
|
+
}))
|
|
145
|
+
];
|
|
146
|
+
}
|
|
147
|
+
function clearAround(board, shapes, anchor, context) {
|
|
148
|
+
const anchorRectangle = entityRectangle(board, shapes, anchor);
|
|
149
|
+
if (!anchorRectangle) return {
|
|
150
|
+
board,
|
|
151
|
+
moved: []
|
|
152
|
+
};
|
|
153
|
+
const anchorMembers = new Set(anchor.kind === "section" ? board.sections.find((section) => section.id === anchor.id)?.items : []);
|
|
154
|
+
let next = board;
|
|
155
|
+
const moved = [];
|
|
156
|
+
for (const neighbor of neighbors(board)) {
|
|
157
|
+
if (neighbor.kind === anchor.kind && neighbor.id === anchor.id) continue;
|
|
158
|
+
if (neighbor.kind === "section" && context.changedSections.has(neighbor.id)) continue;
|
|
159
|
+
if (neighbor.kind === "item" && (context.protectedItems.has(neighbor.id) || anchorMembers.has(neighbor.id))) continue;
|
|
160
|
+
const rectangle = entityRectangle(next, shapes, neighbor);
|
|
161
|
+
if (!rectangle || !overlaps(anchorRectangle, rectangle)) continue;
|
|
162
|
+
next = moveEntity(next, neighbor, clearingDelta(anchorRectangle, rectangle));
|
|
163
|
+
moved.push(neighbor);
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
board: next,
|
|
167
|
+
moved
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
function makeRoom(board, shapes, changed) {
|
|
171
|
+
const changedSections = new Set(changed.filter((id) => board.sections.some((section) => section.id === id)));
|
|
172
|
+
const context = {
|
|
173
|
+
changedSections,
|
|
174
|
+
protectedItems: new Set(board.sections.filter((section) => changedSections.has(section.id)).flatMap((section) => section.items))
|
|
175
|
+
};
|
|
176
|
+
let next = board;
|
|
177
|
+
let frontier = [...changedSections].map((id) => ({
|
|
178
|
+
kind: "section",
|
|
179
|
+
id
|
|
180
|
+
}));
|
|
181
|
+
for (let pass = 0; pass < 50 && frontier.length > 0; pass += 1) {
|
|
182
|
+
const following = [];
|
|
183
|
+
for (const anchor of frontier) {
|
|
184
|
+
const cleared = clearAround(next, shapes, anchor, context);
|
|
185
|
+
next = cleared.board;
|
|
186
|
+
following.push(...cleared.moved);
|
|
187
|
+
}
|
|
188
|
+
frontier = following.length > 0 ? [...[...changedSections].map((id) => ({
|
|
189
|
+
kind: "section",
|
|
190
|
+
id
|
|
191
|
+
})), ...following] : [];
|
|
192
|
+
}
|
|
193
|
+
return next;
|
|
194
|
+
}
|
|
195
|
+
function touchedSections(previous, board, touched) {
|
|
196
|
+
const touchedIds = new Set(touched);
|
|
197
|
+
return [...previous.sections, ...board.sections].filter((section) => touchedIds.has(section.id) || section.items.some((id) => touchedIds.has(id))).map((section) => section.id).filter((id, index, ids) => ids.indexOf(id) === index);
|
|
198
|
+
}
|
|
199
|
+
function fitSections(board, shapes, sectionIds) {
|
|
200
|
+
return sectionIds.reduce((value, id) => fitSection(value, shapes, id), board);
|
|
201
|
+
}
|
|
202
|
+
function fitTouchedSections(previous, board, shapes, touched) {
|
|
203
|
+
return fitSections(board, shapes, touchedSections(previous, board, touched));
|
|
204
|
+
}
|
|
205
|
+
function settleBoard(previous, board, shapes, touched) {
|
|
206
|
+
const sectionIds = touchedSections(previous, board, touched);
|
|
207
|
+
return makeRoom(fitSections(board, shapes, sectionIds), shapes, sectionIds);
|
|
208
|
+
}
|
|
209
|
+
//#endregion
|
|
210
|
+
export { MAKE_ROOM_LIMIT, SECTION_GAP, SECTION_MIN_SIZE, SECTION_PADDING, SECTION_TITLE_ROOM, assignMembership, fitSection, fitTouchedSections, makeRoom, settleBoard };
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { Annotation, Box, Cue, DECK_SIZE, Deck, DeckInput, DeckLimits, ImageFit,
|
|
|
3
3
|
import { BoardItemAnchor, MIN_BOARD_ITEM_WIDTH, addItem, moveItems, moveSection, removeItems, resizeItem } from "./board-edit.js";
|
|
4
4
|
import { ArrangeOptions, BoardShapes, BoardView, MAX_BOARD_ZOOM, MIN_BOARD_ZOOM, ZoomBounds, arrange, boardBounds, boardToScreen, itemAt, itemHeight, revealView, screenToBoard, visibleItems, zoomAt, zoomToFit } from "./board-geometry.js";
|
|
5
5
|
import { BoardListingGroup, boardListing, boardListingIsEmpty, foldForSearch, nameMatches } from "./board-listing.js";
|
|
6
|
+
import { MAKE_ROOM_LIMIT, SECTION_GAP, SECTION_MIN_SIZE, SECTION_PADDING, SECTION_TITLE_ROOM, assignMembership, fitSection, fitTouchedSections, makeRoom, settleBoard } from "./board-sections.js";
|
|
6
7
|
import { Book, BookContents, BookFrontMatterEntry, BookInput, BookMode, BookPage, BookSection, BookView, BookViewInput, Chapter, isBookContents, isHebrew, noteMarkerIssues } from "./book.js";
|
|
7
8
|
import { DeckFromSlidesOptions, SlideRow, deckFromSlides } from "./deck-from-slides.js";
|
|
8
9
|
import { Direction, TextDirection, firstStrongDirection, languageDirection, resolveDirection } from "./direction.js";
|
|
@@ -721,4 +722,4 @@ export declare function jsonSchemas(): {
|
|
|
721
722
|
}, z.core.$strip>>;
|
|
722
723
|
};
|
|
723
724
|
//#endregion
|
|
724
|
-
export { Annotation, type ArrangeOptions, Board, type BoardInput, BoardItem, type BoardItemAnchor, BoardLabel, type BoardListingGroup, BoardSection, type BoardShapes, type BoardView, Book, BookContents, BookFrontMatterEntry, type BookInput, BookMode, BookPage, BookSection, BookView, type BookViewInput, Box, Chapter, Cue, DECK_SIZE, DEFAULT_TRANSITION_DURATION_MS, Deck, type DeckFromSlidesOptions, type DeckInput, type DeckLimits, Direction, ImageFit, type Imposed, Lexicon, MARK_GAP_MM, MARK_LENGTH_MM, MAX_BOARD_ZOOM, MAX_SLIDE_TIMING_MS, MAX_TRANSITION_DURATION_MS, MIN_BOARD_ITEM_WIDTH, MIN_BOARD_ZOOM, MIN_TRANSITION_DURATION_MS, MM_PER_PT, Manifest, type MillimeterEdges, NAMED_PAPERS, Narration, NoteMarker, NumberSystem, PAPER_MM, PX_PER_MM, type PageFit, type PagePlacementKind, type PagePlacementLayout, Paper, type PaperBox, type Placement, Point, PronunciationEntry, PublishedShot, SHOT_KEY, Scripts, Shot, type ShotUse, Size, Slide, SlideContent, type SlideRow, TextDirection, Transition, TransitionInput, Word, type ZoomBounds, addItem, annotationCueIssues, arrange, boardBounds, boardListing, boardListingIsEmpty, boardToScreen, deckFromSlides, exceedsLimits, firstStrongDirection, fitPage, foldForSearch, formatNumber, impose, isBookContents, isHebrew, itemAt, itemHeight, languageDirection, lexiconVersion, mirrorPlacement, moveItems, moveSection, nameMatches, noteMarker, noteMarkerIssues, pagePlacementLayout, printBoxes, printPadding, printProperties, removeItems, resizeItem, resolveDirection, revealView, roundMillimeters, screenToBoard, sheetMm, shotsUsed, toMillimeters, visibleItems, zoomAt, zoomToFit };
|
|
725
|
+
export { Annotation, type ArrangeOptions, Board, type BoardInput, BoardItem, type BoardItemAnchor, BoardLabel, type BoardListingGroup, BoardSection, type BoardShapes, type BoardView, Book, BookContents, BookFrontMatterEntry, type BookInput, BookMode, BookPage, BookSection, BookView, type BookViewInput, Box, Chapter, Cue, DECK_SIZE, DEFAULT_TRANSITION_DURATION_MS, Deck, type DeckFromSlidesOptions, type DeckInput, type DeckLimits, Direction, ImageFit, type Imposed, Lexicon, MAKE_ROOM_LIMIT, MARK_GAP_MM, MARK_LENGTH_MM, MAX_BOARD_ZOOM, MAX_SLIDE_TIMING_MS, MAX_TRANSITION_DURATION_MS, MIN_BOARD_ITEM_WIDTH, MIN_BOARD_ZOOM, MIN_TRANSITION_DURATION_MS, MM_PER_PT, Manifest, type MillimeterEdges, NAMED_PAPERS, Narration, NoteMarker, NumberSystem, PAPER_MM, PX_PER_MM, type PageFit, type PagePlacementKind, type PagePlacementLayout, Paper, type PaperBox, type Placement, Point, PronunciationEntry, PublishedShot, SECTION_GAP, SECTION_MIN_SIZE, SECTION_PADDING, SECTION_TITLE_ROOM, SHOT_KEY, Scripts, Shot, type ShotUse, Size, Slide, SlideContent, type SlideRow, TextDirection, Transition, TransitionInput, Word, type ZoomBounds, addItem, annotationCueIssues, arrange, assignMembership, boardBounds, boardListing, boardListingIsEmpty, boardToScreen, deckFromSlides, exceedsLimits, firstStrongDirection, fitPage, fitSection, fitTouchedSections, foldForSearch, formatNumber, impose, isBookContents, isHebrew, itemAt, itemHeight, languageDirection, lexiconVersion, makeRoom, mirrorPlacement, moveItems, moveSection, nameMatches, noteMarker, noteMarkerIssues, pagePlacementLayout, printBoxes, printPadding, printProperties, removeItems, resizeItem, resolveDirection, revealView, roundMillimeters, screenToBoard, settleBoard, sheetMm, shotsUsed, toMillimeters, visibleItems, zoomAt, zoomToFit };
|
package/dist/index.js
CHANGED
|
@@ -11,6 +11,7 @@ import { Lexicon, PronunciationEntry, lexiconVersion } from "./lexicon.js";
|
|
|
11
11
|
import { MIN_BOARD_ITEM_WIDTH, addItem, moveItems, moveSection, removeItems, resizeItem } from "./board-edit.js";
|
|
12
12
|
import { MAX_BOARD_ZOOM, MIN_BOARD_ZOOM, arrange, boardBounds, boardToScreen, itemAt, itemHeight, revealView, screenToBoard, visibleItems, zoomAt, zoomToFit } from "./board-geometry.js";
|
|
13
13
|
import { boardListing, boardListingIsEmpty, foldForSearch, nameMatches } from "./board-listing.js";
|
|
14
|
+
import { MAKE_ROOM_LIMIT, SECTION_GAP, SECTION_MIN_SIZE, SECTION_PADDING, SECTION_TITLE_ROOM, assignMembership, fitSection, fitTouchedSections, makeRoom, settleBoard } from "./board-sections.js";
|
|
14
15
|
import { deckFromSlides } from "./deck-from-slides.js";
|
|
15
16
|
import { fitPage, impose, mirrorPlacement, pagePlacementLayout } from "./imposition.js";
|
|
16
17
|
import { shotsUsed } from "./shots-used.js";
|
|
@@ -156,4 +157,4 @@ function jsonSchemas() {
|
|
|
156
157
|
};
|
|
157
158
|
}
|
|
158
159
|
//#endregion
|
|
159
|
-
export { Annotation, Board, BoardItem, BoardLabel, BoardSection, Book, BookContents, BookFrontMatterEntry, BookMode, BookPage, BookSection, BookView, Box, Chapter, Cue, DECK_SIZE, DEFAULT_TRANSITION_DURATION_MS, Deck, Direction, ImageFit, Imposition, Lexicon, MARK_GAP_MM, MARK_LENGTH_MM, MAX_BOARD_ZOOM, MAX_IMPOSITION_CELLS, MAX_SLIDE_TIMING_MS, MAX_TRANSITION_DURATION_MS, MIN_BOARD_ITEM_WIDTH, MIN_BOARD_ZOOM, MIN_TRANSITION_DURATION_MS, MM_PER_PT, Manifest, Margin, NAMED_PAPERS, Narration, NoteMarker, NumberSystem, PAPER_MM, PX_PER_MM, Page, PageSize, Paper, Point, Print, PronunciationEntry, PublishedShot, SHOT_KEY, Scripts, Shot, Size, Slide, SlideContent, TextDirection, Transition, Word, addItem, annotationCueIssues, arrange, boardBounds, boardListing, boardListingIsEmpty, boardToScreen, deckFromSlides, exceedsLimits, firstStrongDirection, fitPage, foldForSearch, formatNumber, impose, isBookContents, isHebrew, itemAt, itemHeight, jsonSchemas, languageDirection, lexiconVersion, mirrorPlacement, moveItems, moveSection, nameMatches, noteMarker, noteMarkerIssues, pagePlacementLayout, printBoxes, printPadding, printProperties, removeItems, resizeItem, resolveDirection, revealView, roundMillimeters, screenToBoard, sheetMm, shotsUsed, toMillimeters, visibleItems, zoomAt, zoomToFit };
|
|
160
|
+
export { Annotation, Board, BoardItem, BoardLabel, BoardSection, Book, BookContents, BookFrontMatterEntry, BookMode, BookPage, BookSection, BookView, Box, Chapter, Cue, DECK_SIZE, DEFAULT_TRANSITION_DURATION_MS, Deck, Direction, ImageFit, Imposition, Lexicon, MAKE_ROOM_LIMIT, MARK_GAP_MM, MARK_LENGTH_MM, MAX_BOARD_ZOOM, MAX_IMPOSITION_CELLS, MAX_SLIDE_TIMING_MS, MAX_TRANSITION_DURATION_MS, MIN_BOARD_ITEM_WIDTH, MIN_BOARD_ZOOM, MIN_TRANSITION_DURATION_MS, MM_PER_PT, Manifest, Margin, NAMED_PAPERS, Narration, NoteMarker, NumberSystem, PAPER_MM, PX_PER_MM, Page, PageSize, Paper, Point, Print, PronunciationEntry, PublishedShot, SECTION_GAP, SECTION_MIN_SIZE, SECTION_PADDING, SECTION_TITLE_ROOM, SHOT_KEY, Scripts, Shot, Size, Slide, SlideContent, TextDirection, Transition, Word, addItem, annotationCueIssues, arrange, assignMembership, boardBounds, boardListing, boardListingIsEmpty, boardToScreen, deckFromSlides, exceedsLimits, firstStrongDirection, fitPage, fitSection, fitTouchedSections, foldForSearch, formatNumber, impose, isBookContents, isHebrew, itemAt, itemHeight, jsonSchemas, languageDirection, lexiconVersion, makeRoom, mirrorPlacement, moveItems, moveSection, nameMatches, noteMarker, noteMarkerIssues, pagePlacementLayout, printBoxes, printPadding, printProperties, removeItems, resizeItem, resolveDirection, revealView, roundMillimeters, screenToBoard, settleBoard, sheetMm, shotsUsed, toMillimeters, visibleItems, zoomAt, zoomToFit };
|