@clipwright/core 0.39.0 → 0.41.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/account-actors.d.ts +94 -2
- package/dist/account-actors.js +151 -34
- package/dist/account-actors.js.map +1 -1
- package/dist/actor-bounds.d.ts +3 -3
- package/dist/actor-bounds.js +3 -3
- package/dist/actor-bounds.js.map +1 -1
- package/dist/actors.d.ts +24 -2
- package/dist/actors.js +30 -9
- package/dist/actors.js.map +1 -1
- package/dist/ad-pause-trim.d.ts +21 -0
- package/dist/ad-pause-trim.js +16 -0
- package/dist/ad-pause-trim.js.map +1 -0
- package/dist/aspect.d.ts +5 -0
- package/dist/aspect.js +7 -0
- package/dist/aspect.js.map +1 -1
- package/dist/assets.d.ts +2 -1
- package/dist/assets.js +10 -11
- package/dist/assets.js.map +1 -1
- package/dist/billing-terms.d.ts +8 -0
- package/dist/broll-policy.js +2 -3
- package/dist/broll-policy.js.map +1 -1
- package/dist/caption-geometry.js +10 -8
- package/dist/caption-geometry.js.map +1 -1
- package/dist/contract-dispositions.d.ts +1575 -100
- package/dist/contract-dispositions.js +100 -14
- package/dist/contract-dispositions.js.map +1 -1
- package/dist/contracts/v1/workflow-brief.d.ts +10764 -2790
- package/dist/contracts/v1/workflow-brief.js +19 -1
- package/dist/contracts/v1/workflow-brief.js.map +1 -1
- package/dist/contracts/v1/workflow-catalog.d.ts +11612 -3536
- package/dist/contracts/v1/workflow-client.d.ts +5429 -1187
- package/dist/contracts/v1/workflow-client.js +9 -5
- package/dist/contracts/v1/workflow-client.js.map +1 -1
- package/dist/contracts/v1/workflow-execution.d.ts +242 -0
- package/dist/contracts/v1/workflow-execution.js +2 -2
- package/dist/contracts/v1/workflow-execution.js.map +1 -1
- package/dist/contracts/v1/workflow-next.d.ts +225 -0
- package/dist/contracts/v1/workflow-next.js +21 -0
- package/dist/contracts/v1/workflow-next.js.map +1 -0
- package/dist/contracts/v1/workflow-plan.d.ts +18556 -6429
- package/dist/contracts/v1/workflow-plan.js +2 -1
- package/dist/contracts/v1/workflow-plan.js.map +1 -1
- package/dist/contracts/v1/workflow-primitives.d.ts +20 -1
- package/dist/contracts/v1/workflow-primitives.js +8 -2
- package/dist/contracts/v1/workflow-primitives.js.map +1 -1
- package/dist/contracts/v1/workflow-run-read.d.ts +50 -0
- package/dist/creator-profile.d.ts +1 -0
- package/dist/creator-profile.js +13 -7
- package/dist/creator-profile.js.map +1 -1
- package/dist/design.d.ts +921 -0
- package/dist/design.js +183 -0
- package/dist/design.js.map +1 -0
- package/dist/edit-candidate.d.ts +2 -0
- package/dist/edit-candidate.js +3 -0
- package/dist/edit-candidate.js.map +1 -1
- package/dist/edit-faceless.js +2 -1
- package/dist/edit-faceless.js.map +1 -1
- package/dist/endpoint-notes.js +19 -0
- package/dist/endpoint-notes.js.map +1 -1
- package/dist/endpoints.js +21 -4
- package/dist/endpoints.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.js +7 -0
- package/dist/errors.js.map +1 -1
- package/dist/face-billing.d.ts +39 -0
- package/dist/face-billing.js +11 -1
- package/dist/face-billing.js.map +1 -1
- package/dist/faceless-action-shots.d.ts +31 -0
- package/dist/faceless-action-shots.js +51 -0
- package/dist/faceless-action-shots.js.map +1 -0
- package/dist/faceless-media-record.d.ts +56 -0
- package/dist/faceless-media-record.js +6 -2
- package/dist/faceless-media-record.js.map +1 -1
- package/dist/faceless-price.d.ts +22 -0
- package/dist/faceless-price.js +27 -3
- package/dist/faceless-price.js.map +1 -1
- package/dist/faceless-public-plan.d.ts +10 -1
- package/dist/faceless-public-plan.js +4 -0
- package/dist/faceless-public-plan.js.map +1 -1
- package/dist/faceless-public.d.ts +5583 -184
- package/dist/faceless-public.js +114 -16
- package/dist/faceless-public.js.map +1 -1
- package/dist/feedback.js +1 -1
- package/dist/feedback.js.map +1 -1
- package/dist/generations-output.js +1 -1
- package/dist/generations-output.js.map +1 -1
- package/dist/generations.d.ts +1 -1
- package/dist/generations.js +2 -2
- package/dist/index.d.ts +10 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/live-shot-kinds.d.ts +22 -0
- package/dist/live-shot-kinds.js +17 -0
- package/dist/live-shot-kinds.js.map +1 -0
- package/dist/long-form-profile.d.ts +1 -1
- package/dist/long-form-profile.js +1 -1
- package/dist/mcp-ugc-descriptions.d.ts +32 -0
- package/dist/mcp-ugc-descriptions.js +112 -0
- package/dist/mcp-ugc-descriptions.js.map +1 -0
- package/dist/motion-styles.d.ts +54 -0
- package/dist/motion-styles.js +67 -0
- package/dist/motion-styles.js.map +1 -0
- package/dist/moves.d.ts +222 -0
- package/dist/moves.js +81 -0
- package/dist/moves.js.map +1 -0
- package/dist/music.d.ts +18 -0
- package/dist/music.js +29 -0
- package/dist/music.js.map +1 -0
- package/dist/openapi.d.ts +3 -1
- package/dist/openapi.js +32 -5
- package/dist/openapi.js.map +1 -1
- package/dist/parts-pricing.d.ts +14 -3
- package/dist/parts-pricing.js +23 -5
- package/dist/parts-pricing.js.map +1 -1
- package/dist/prices.d.ts +6 -1
- package/dist/prices.js +56 -17
- package/dist/prices.js.map +1 -1
- package/dist/reference-analysis.d.ts +134 -0
- package/dist/reference-analysis.js +45 -33
- package/dist/reference-analysis.js.map +1 -1
- package/dist/reference-display.js +3 -0
- package/dist/reference-display.js.map +1 -1
- package/dist/reference-kinds.d.ts +3 -2
- package/dist/reference-kinds.js +2 -1
- package/dist/reference-kinds.js.map +1 -1
- package/dist/reference-profile.d.ts +437 -0
- package/dist/reference-profile.js +46 -5
- package/dist/reference-profile.js.map +1 -1
- package/dist/reference-staging.d.ts +54 -2
- package/dist/reference-staging.js +28 -5
- package/dist/reference-staging.js.map +1 -1
- package/dist/reference-text-spans.d.ts +26 -0
- package/dist/reference-text-spans.js +76 -0
- package/dist/reference-text-spans.js.map +1 -0
- package/dist/resolved-timeline.d.ts +173 -0
- package/dist/resolved-timeline.js +16 -5
- package/dist/resolved-timeline.js.map +1 -1
- package/dist/run-media.d.ts +5 -0
- package/dist/run-media.js +17 -0
- package/dist/run-media.js.map +1 -0
- package/dist/run-static-warnings.js +12 -3
- package/dist/run-static-warnings.js.map +1 -1
- package/dist/runs.d.ts +49 -0
- package/dist/runs.js +5 -0
- package/dist/runs.js.map +1 -1
- package/dist/scene-graph.d.ts +547 -0
- package/dist/scene-graph.js +296 -0
- package/dist/scene-graph.js.map +1 -0
- package/dist/scene-place.d.ts +2 -0
- package/dist/scene-place.js +6 -0
- package/dist/scene-place.js.map +1 -1
- package/dist/semantic-inserts.d.ts +2 -1
- package/dist/semantic-inserts.js +4 -4
- package/dist/semantic-inserts.js.map +1 -1
- package/dist/skills.d.ts +11743 -5428
- package/dist/skills.js +248 -59
- package/dist/skills.js.map +1 -1
- package/dist/templates/chart.d.ts +35 -0
- package/dist/templates/chart.js +38 -0
- package/dist/templates/chart.js.map +1 -0
- package/dist/templates/chat-window.d.ts +58 -0
- package/dist/templates/chat-window.js +57 -0
- package/dist/templates/chat-window.js.map +1 -0
- package/dist/templates/compare.d.ts +10 -2
- package/dist/templates/compare.js +13 -9
- package/dist/templates/compare.js.map +1 -1
- package/dist/templates/hand-title.d.ts +32 -0
- package/dist/templates/hand-title.js +47 -0
- package/dist/templates/hand-title.js.map +1 -0
- package/dist/templates/index.d.ts +33 -7
- package/dist/templates/index.js +95 -51
- package/dist/templates/index.js.map +1 -1
- package/dist/templates/lower-third.d.ts +11 -0
- package/dist/templates/lower-third.js +8 -3
- package/dist/templates/lower-third.js.map +1 -1
- package/dist/templates/notification.d.ts +24 -2
- package/dist/templates/notification.js +21 -12
- package/dist/templates/notification.js.map +1 -1
- package/dist/templates/phone-screen.d.ts +37 -0
- package/dist/templates/phone-screen.js +41 -0
- package/dist/templates/phone-screen.js.map +1 -0
- package/dist/templates/pointer-chips.d.ts +40 -0
- package/dist/templates/pointer-chips.js +53 -0
- package/dist/templates/pointer-chips.js.map +1 -0
- package/dist/templates/quote.d.ts +2 -2
- package/dist/templates/quote.js +5 -5
- package/dist/templates/quote.js.map +1 -1
- package/dist/templates/race.d.ts +32 -0
- package/dist/templates/race.js +43 -0
- package/dist/templates/race.js.map +1 -0
- package/dist/templates/size.d.ts +20 -0
- package/dist/templates/size.js +14 -0
- package/dist/templates/size.js.map +1 -1
- package/dist/templates/slot.js +1 -1
- package/dist/templates/slot.js.map +1 -1
- package/dist/templates/sounds.d.ts +221 -4
- package/dist/templates/sounds.js +40 -10
- package/dist/templates/sounds.js.map +1 -1
- package/dist/templates/terminal.d.ts +46 -0
- package/dist/templates/terminal.js +46 -0
- package/dist/templates/terminal.js.map +1 -0
- package/dist/templates/video-grid.d.ts +52 -0
- package/dist/templates/video-grid.js +50 -0
- package/dist/templates/video-grid.js.map +1 -0
- package/dist/templates/word-fill.d.ts +22 -0
- package/dist/templates/word-fill.js +29 -0
- package/dist/templates/word-fill.js.map +1 -0
- package/dist/templates/word-title.d.ts +24 -0
- package/dist/templates/word-title.js +33 -0
- package/dist/templates/word-title.js.map +1 -0
- package/dist/trend-search.d.ts +336 -0
- package/dist/trend-search.js +307 -0
- package/dist/trend-search.js.map +1 -0
- package/dist/ugc-call.d.ts +4 -4
- package/dist/ugc-call.js +4 -4
- package/dist/ugc-call.js.map +1 -1
- package/dist/ugc-framing.d.ts +3 -2
- package/dist/ugc-framing.js +4 -3
- package/dist/ugc-framing.js.map +1 -1
- package/dist/ugc-interview.d.ts +3 -3
- package/dist/ugc-interview.js +3 -3
- package/dist/ugc-interview.js.map +1 -1
- package/dist/ugc-layers.d.ts +43 -7
- package/dist/ugc-layers.js +43 -11
- package/dist/ugc-layers.js.map +1 -1
- package/dist/ugc-scenes.d.ts +40 -0
- package/dist/ugc-scenes.js +35 -0
- package/dist/ugc-scenes.js.map +1 -0
- package/dist/uploads.d.ts +1 -1
- package/dist/uploads.js +9 -9
- package/dist/uploads.js.map +1 -1
- package/dist/voice-admission.d.ts +4767 -836
- package/dist/voice-catalog-data.d.ts +1 -0
- package/dist/voice-catalog.d.ts +2 -0
- package/dist/voice-catalog.generated.json +286 -0
- package/dist/voice-catalog.js +1 -0
- package/dist/voice-catalog.js.map +1 -1
- package/dist/voice-pace.generated.json +65 -0
- package/dist/voices.d.ts +1 -0
- package/dist/voices.js +2 -1
- package/dist/voices.js.map +1 -1
- package/dist/workflows/index.d.ts +2 -0
- package/dist/workflows/index.js +1 -0
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/methods/faceless-explainer.d.ts +2275 -188
- package/dist/workflows/methods/kinetic-launch.d.ts +2275 -188
- package/dist/workflows/methods/product-image-story.d.ts +2275 -188
- package/dist/workflows/methods/reference-remake.d.ts +2275 -188
- package/dist/workflows/methods/shared.d.ts +2275 -188
- package/dist/workflows/methods/ugc-faq-answer.d.ts +2275 -188
- package/dist/workflows/methods/ugc-product-intro.d.ts +2275 -188
- package/dist/workflows/methods/website-proof-demo.d.ts +2275 -188
- package/dist/workflows/motion-director.d.ts +59 -0
- package/dist/workflows/motion-director.js +118 -0
- package/dist/workflows/motion-director.js.map +1 -0
- package/dist/workflows/reference-remake.d.ts +1172 -2
- package/dist/workflows/reference-remake.js +940 -115
- package/dist/workflows/reference-remake.js.map +1 -1
- package/dist/workflows/remake-chooser.d.ts +16 -0
- package/dist/workflows/remake-chooser.js +10 -0
- package/dist/workflows/remake-chooser.js.map +1 -0
- package/dist/workflows/remake-motion.d.ts +100 -0
- package/dist/workflows/remake-motion.js +237 -0
- package/dist/workflows/remake-motion.js.map +1 -0
- package/dist/workflows/validate.js +1 -1
- package/dist/workflows/validate.js.map +1 -1
- package/package.json +5 -1
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/** Two devices the director adds are at least this far apart. */
|
|
2
|
+
export declare const DEVICE_GAP_S = 1.5;
|
|
3
|
+
/** A sentence of at most this many words is a punch line. */
|
|
4
|
+
export declare const PUNCH_LINE_WORDS = 4;
|
|
5
|
+
export type DirectorOwner = 'presenter' | 'picture' | 'clip' | 'card' | 'window';
|
|
6
|
+
export type DirectorDevice = 'pull_back' | 'stat' | 'sequence' | 'punch' | 'transition';
|
|
7
|
+
export type DirectorWord = {
|
|
8
|
+
token: string;
|
|
9
|
+
stop?: 'sentence' | 'clause';
|
|
10
|
+
question?: boolean;
|
|
11
|
+
};
|
|
12
|
+
export interface DirectorBeat {
|
|
13
|
+
role?: string;
|
|
14
|
+
/** What fills the beat; absent where nothing of ours may move (a graphic over the presenter). */
|
|
15
|
+
owner?: DirectorOwner;
|
|
16
|
+
/** The beat's words, end exclusive, and when the first is spoken. */
|
|
17
|
+
from: number;
|
|
18
|
+
to: number;
|
|
19
|
+
start_s: number;
|
|
20
|
+
/** The reference's own device here: drawn, or a transition nothing draws (lost). */
|
|
21
|
+
reference?: {
|
|
22
|
+
look: string;
|
|
23
|
+
drawn: boolean;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export interface DirectorInput {
|
|
27
|
+
words: readonly DirectorWord[];
|
|
28
|
+
beats: readonly DirectorBeat[];
|
|
29
|
+
/** Seconds per spoken word. */
|
|
30
|
+
word_s: number;
|
|
31
|
+
/** What each fill draws: the devices it takes and its transition looks, in order of preference. */
|
|
32
|
+
draws: Partial<Record<DirectorOwner, {
|
|
33
|
+
devices: readonly DirectorDevice[];
|
|
34
|
+
looks?: readonly string[];
|
|
35
|
+
}>>;
|
|
36
|
+
/** Words the plan stresses already, such as caption emphasis. */
|
|
37
|
+
emphasis?: readonly {
|
|
38
|
+
from: number;
|
|
39
|
+
count: number;
|
|
40
|
+
}[];
|
|
41
|
+
/** The skill's last word on a choice: false sends the director to the beat's next meaning. */
|
|
42
|
+
accepts?: (choice: DirectorChoice) => boolean;
|
|
43
|
+
/** Reorders a beat's transition looks, already rotated, before they are tried; absent, the rotation stands. */
|
|
44
|
+
order?: (beat: number, owner: DirectorOwner, looks: readonly string[]) => readonly string[];
|
|
45
|
+
}
|
|
46
|
+
export interface DirectorChoice {
|
|
47
|
+
beat: number;
|
|
48
|
+
device: DirectorDevice;
|
|
49
|
+
look: string;
|
|
50
|
+
/** The words each part of the device holds: a punch's line, a list's items, a pull-back's lead-in. */
|
|
51
|
+
cuts: {
|
|
52
|
+
from: number;
|
|
53
|
+
count: number;
|
|
54
|
+
}[];
|
|
55
|
+
at_s: number;
|
|
56
|
+
reason: string;
|
|
57
|
+
}
|
|
58
|
+
export declare const lookName: (look: string) => string;
|
|
59
|
+
export declare function directBeats({ words, beats, word_s, draws, emphasis, accepts, order }: DirectorInput): DirectorChoice[];
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
// The director (#1051 S5): our own devices on the beats the reference leaves plain, chosen by what each beat says. Pure and deterministic;
|
|
2
|
+
// a beat is words, what fills it and a start, so make_faceless scenes take the same director with their own fills (#1067).
|
|
3
|
+
/** Two devices the director adds are at least this far apart. */
|
|
4
|
+
export const DEVICE_GAP_S = 1.5;
|
|
5
|
+
/** A sentence of at most this many words is a punch line. */
|
|
6
|
+
export const PUNCH_LINE_WORDS = 4;
|
|
7
|
+
/** A list item shorter than this gets no cut of its own: a cut every word reads as jitter. */
|
|
8
|
+
const ITEM_WORDS = 2;
|
|
9
|
+
/** Words that open a new part when the source names no roles. */
|
|
10
|
+
const TURNS = new Set(['but', 'then', 'now', 'so', 'next', 'finally', 'however', 'instead']);
|
|
11
|
+
const LOOK_NAMES = { light_leak: 'a light leak', slide: 'a slide in', wipe: 'a wipe', zoom: 'a zoom', flash: 'a flash',
|
|
12
|
+
punch: 'a cut in close' };
|
|
13
|
+
export const lookName = (look) => LOOK_NAMES[look] ?? look.replaceAll('_', ' ');
|
|
14
|
+
export function directBeats({ words, beats, word_s, draws, emphasis = [], accepts = () => true, order = (_, __, looks) => looks }) {
|
|
15
|
+
const sentences = [];
|
|
16
|
+
words.forEach((word, at) => {
|
|
17
|
+
if (word.stop === 'sentence' || at === words.length - 1)
|
|
18
|
+
sentences.push({ from: sentences.at(-1)?.to ?? 0, to: at + 1, question: word.question === true });
|
|
19
|
+
});
|
|
20
|
+
const worded = beats.flatMap((beat, at) => beat.from < beat.to ? [at] : []);
|
|
21
|
+
const closing = sentences.findLast(sentence => sentence.question);
|
|
22
|
+
const finale = closing && worded.slice(-2).some(at => beats[at].from <= closing.from && closing.from < beats[at].to) ? closing : undefined;
|
|
23
|
+
/** The look each beat shows, the reference's or ours, by beat. */
|
|
24
|
+
const placed = new Map(beats.flatMap((beat, at) => beat.reference?.drawn ? [[at, beat.reference.look]] : []));
|
|
25
|
+
const ours = [], choices = [];
|
|
26
|
+
const timeOf = (beat, word) => beat.start_s + (word - beat.from) * word_s;
|
|
27
|
+
/** A look the worded beat before or after this one shows would repeat back to back. */
|
|
28
|
+
const repeats = (look, at) => {
|
|
29
|
+
const position = worded.indexOf(at);
|
|
30
|
+
return [worded[position - 1], worded[position + 1]].some(next => next !== undefined && placed.get(next) === look);
|
|
31
|
+
};
|
|
32
|
+
worded.forEach((at, position) => {
|
|
33
|
+
const beat = beats[at], can = beat.owner && draws[beat.owner];
|
|
34
|
+
if (!can || beat.reference?.drawn)
|
|
35
|
+
return;
|
|
36
|
+
const inBeat = (from) => beat.from <= from && from < beat.to;
|
|
37
|
+
const previous = position > 0 ? beats[worded[position - 1]] : undefined;
|
|
38
|
+
const candidates = [];
|
|
39
|
+
const turn = previous && (beat.role && previous.role ? beat.role !== previous.role : TURNS.has(words[beat.from].token.toLowerCase()));
|
|
40
|
+
const lost = beat.reference && !beat.reference.drawn ? beat.reference.look : undefined;
|
|
41
|
+
const transition = { device: 'transition', cuts: [{ from: beat.from, count: beat.to - beat.from }],
|
|
42
|
+
reason: lost ? `the reference's ${lost} into it` : turn && beat.role && previous.role ? `a new part (${beat.role} after ${previous.role})` : 'a new part' };
|
|
43
|
+
// A transition the reference has here and nothing draws comes first: ours stands in for it.
|
|
44
|
+
if (lost)
|
|
45
|
+
candidates.push(transition);
|
|
46
|
+
if (finale && inBeat(finale.from) && (beat.owner !== 'presenter' || finale.from - beat.from >= ITEM_WORDS)) {
|
|
47
|
+
candidates.push({ device: 'pull_back', cuts: [{ from: beat.from, count: finale.from - beat.from }], reason: 'the closing question' });
|
|
48
|
+
}
|
|
49
|
+
const number = words.slice(beat.from, beat.to).findIndex(word => /^\d+(?:[.,]\d+)?$/.test(word.token));
|
|
50
|
+
if (number >= 0)
|
|
51
|
+
candidates.push({ device: 'stat', cuts: [{ from: beat.from + number, count: 1 }], reason: `the number ${words[beat.from + number].token}` });
|
|
52
|
+
for (const sentence of sentences.filter(entry => inBeat(entry.from) && entry.to <= beat.to)) {
|
|
53
|
+
const items = itemsOf(words, sentence);
|
|
54
|
+
if (items.length >= 3 && items.every(item => item.count >= ITEM_WORDS)) {
|
|
55
|
+
candidates.push({ device: 'sequence', cuts: items.filter((_, index) => index % 2 === 0), reason: `a list of ${items.length}` });
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const stressed = emphasis.find(entry => inBeat(entry.from));
|
|
60
|
+
const line = sentences.find(entry => inBeat(entry.from) && entry.to <= beat.to && !entry.question && entry.to - entry.from <= PUNCH_LINE_WORDS);
|
|
61
|
+
if (stressed)
|
|
62
|
+
candidates.push({ device: 'punch', cuts: [stressed], reason: 'its stressed words' });
|
|
63
|
+
else if (line)
|
|
64
|
+
candidates.push({ device: 'punch', cuts: [{ from: line.from, count: line.to - line.from }], reason: 'a short line' });
|
|
65
|
+
if (turn && !candidates.includes(transition))
|
|
66
|
+
candidates.push(transition);
|
|
67
|
+
for (const candidate of candidates.filter(entry => can.devices.includes(entry.device))) {
|
|
68
|
+
const at_s = timeOf(beat, candidate.device === 'pull_back' ? finale.from : candidate.cuts[0].from);
|
|
69
|
+
if (ours.some(other => Math.abs(other - at_s) < DEVICE_GAP_S))
|
|
70
|
+
continue;
|
|
71
|
+
for (const look of candidate.device === 'transition' ? order(at, beat.owner, rotate(can.looks ?? [], at)) : [candidate.device]) {
|
|
72
|
+
if (repeats(look, at))
|
|
73
|
+
continue;
|
|
74
|
+
const choice = { ...candidate, beat: at, look, at_s, reason: `beat ${at + 1}: ${candidate.reason}, so ${shownAs(candidate.device, look, beat.owner)}` };
|
|
75
|
+
if (!accepts(choice))
|
|
76
|
+
continue;
|
|
77
|
+
choices.push(choice);
|
|
78
|
+
ours.push(at_s);
|
|
79
|
+
placed.set(at, look);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
return choices;
|
|
85
|
+
}
|
|
86
|
+
/** A sentence's list items: the parts between its commas, the last split at its final "and" or "or". */
|
|
87
|
+
function itemsOf(words, sentence) {
|
|
88
|
+
const items = [];
|
|
89
|
+
let from = sentence.from;
|
|
90
|
+
for (let at = sentence.from; at < sentence.to; at++) {
|
|
91
|
+
if (words[at].stop || at === sentence.to - 1) {
|
|
92
|
+
items.push({ from, count: at + 1 - from });
|
|
93
|
+
from = at + 1;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (items.length < 2)
|
|
97
|
+
return [];
|
|
98
|
+
const last = items.at(-1), joint = words.slice(last.from, last.from + last.count).findLastIndex(word => ['and', 'or'].includes(word.token.toLowerCase()));
|
|
99
|
+
if (joint <= 0)
|
|
100
|
+
return items;
|
|
101
|
+
return [...items.slice(0, -1), { from: last.from, count: joint }, { from: last.from + joint, count: last.count - joint }];
|
|
102
|
+
}
|
|
103
|
+
const rotate = (looks, at) => looks.map((_, index) => looks[(at + index) % looks.length]);
|
|
104
|
+
function shownAs(device, look, owner) {
|
|
105
|
+
switch (device) {
|
|
106
|
+
case 'punch': return 'the presenter cuts in close on it';
|
|
107
|
+
case 'sequence': return 'its items cut close and back in turn';
|
|
108
|
+
case 'pull_back': return owner === 'presenter' ? 'the presenter is framed close, then pulls back as it is asked' : 'the picture zooms out as it is asked';
|
|
109
|
+
case 'stat': return 'it counts up on a card below the face';
|
|
110
|
+
case 'transition':
|
|
111
|
+
if (look === 'slide')
|
|
112
|
+
return 'the split slides in';
|
|
113
|
+
if (look === 'punch')
|
|
114
|
+
return 'the presenter cuts in close';
|
|
115
|
+
return owner === 'presenter' ? `${lookName(look)} plays on the cut` : `the ${owner === 'card' ? 'card' : 'picture'} comes in with ${lookName(look)}`;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=motion-director.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motion-director.js","sourceRoot":"","sources":["../../src/workflows/motion-director.ts"],"names":[],"mappings":"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"}
|