@popcraft/cli 0.12.0 → 0.13.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.
Files changed (2) hide show
  1. package/dist/popcraft.mjs +274 -45
  2. package/package.json +2 -2
package/dist/popcraft.mjs CHANGED
@@ -1186,7 +1186,7 @@ function operations(spec = openapi) {
1186
1186
  }
1187
1187
  async function call(target2, method, path, opts = {}) {
1188
1188
  const qs = new URLSearchParams(opts.query ?? {}).toString();
1189
- const headers = { "user-agent": `popcraft-cli/${"0.12.0"}`, ...opts.headers };
1189
+ const headers = { "user-agent": `popcraft-cli/${"0.13.0"}`, ...opts.headers };
1190
1190
  if (target2.token) headers.authorization = `Bearer ${target2.token}`;
1191
1191
  if (opts.contentType) headers["content-type"] = opts.contentType;
1192
1192
  try {
@@ -3479,7 +3479,7 @@ function newLight(type, scene2, w, h) {
3479
3479
  const used = new Set((scene2.lights ?? []).map((l) => l.id));
3480
3480
  let n = 1;
3481
3481
  while (used.has(`l${n}`)) n++;
3482
- const reach = zoomPx(scene2.camera.focalLength, w) * 0.6;
3482
+ const reach2 = zoomPx(scene2.camera.focalLength, w) * 0.6;
3483
3483
  return {
3484
3484
  id: `l${n}`,
3485
3485
  type,
@@ -3487,7 +3487,7 @@ function newLight(type, scene2, w, h) {
3487
3487
  intensity: type === "AMBIENT" ? 0.3 : 1,
3488
3488
  x: type === "DIRECTIONAL" ? w * 0.25 : w / 2,
3489
3489
  y: type === "DIRECTIONAL" ? h * 0.25 : h / 2,
3490
- z: reach,
3490
+ z: reach2,
3491
3491
  targetX: w / 2,
3492
3492
  targetY: h / 2,
3493
3493
  targetZ: 0,
@@ -8196,8 +8196,8 @@ function getWorldRenderBounds(document2, nodeId2) {
8196
8196
  }
8197
8197
  for (const sh of shadowsOf(scene2, document2.styles)) {
8198
8198
  if (sh.type !== "DROP_SHADOW") continue;
8199
- const reach = Math.max(Math.abs(sh.offset.x), Math.abs(sh.offset.y)) + sh.blur + sh.spread;
8200
- bleed = Math.max(bleed, reach);
8199
+ const reach2 = Math.max(Math.abs(sh.offset.x), Math.abs(sh.offset.y)) + sh.blur + sh.spread;
8200
+ bleed = Math.max(bleed, reach2);
8201
8201
  }
8202
8202
  for (const bl of blursOf(scene2, document2.styles)) {
8203
8203
  if (bl.type === "LAYER") bleed = Math.max(bleed, bl.radius);
@@ -32174,6 +32174,8 @@ var init_en2 = __esm({
32174
32174
  "audioLanes.keyTheGainAtThe": "Key the gain at the playhead",
32175
32175
  "audioLanes.linear": "Linear",
32176
32176
  "audioLanes.listening": "Listening\u2026",
32177
+ "audioLanes.loop": "Loop",
32178
+ "audioLanes.loopHint": "Play it again back to back for as long as the timeline or the shown screen plays (background music)",
32177
32179
  "audioLanes.muteThisClip": "Mute this clip",
32178
32180
  "audioLanes.noSound": " \xB7 no sound",
32179
32181
  "audioLanes.out": "Out",
@@ -32546,6 +32548,7 @@ var init_en2 = __esm({
32546
32548
  "command:generate.video": "Generate video",
32547
32549
  "command:history.redo": "Redo",
32548
32550
  "command:history.undo": "Undo",
32551
+ "command:media.download": "Download",
32549
32552
  "command:motion.addAudio": "Add audio",
32550
32553
  "command:motion.applyPreset": "Animate",
32551
32554
  "command:motion.applyPreset#blur-in": "Animate: Blur in",
@@ -33575,6 +33578,7 @@ var init_en2 = __esm({
33575
33578
  "generateAudioDialog.generateAudio": "Generate audio",
33576
33579
  "generateAudioDialog.landsAtThePlayheadAs": "Lands at the playhead as an audio clip.",
33577
33580
  "generateAudioDialog.length": "Length",
33581
+ "generateAudioDialog.loop": "Loop it for as long as the screen shows (background music)",
33578
33582
  "generateAudioDialog.model": "Model",
33579
33583
  "generateAudioDialog.needsAFrame": "Add a frame first: generated sound goes on a frame\u2019s timeline (or a composition\u2019s), where you can trim, fade and level it in Animate.",
33580
33584
  "generateAudioDialog.noModelServed": "Your Hypery serves no model for this yet.",
@@ -34122,13 +34126,18 @@ var init_en2 = __esm({
34122
34126
  "mediaLibraryBrowser.allProjects": "All projects",
34123
34127
  "mediaLibraryBrowser.allSources": "All sources",
34124
34128
  "mediaLibraryBrowser.audio": "Audio",
34129
+ "mediaLibraryBrowser.couldNotDelete": "Could not delete that.",
34125
34130
  "mediaLibraryBrowser.couldNotLoadTheLibrary": "Could not load the library. Try again.",
34126
34131
  "mediaLibraryBrowser.couldNotLoadYourTeams": "Could not load your teams.",
34127
34132
  "mediaLibraryBrowser.couldNotUseThat": "Could not use that.",
34133
+ "mediaLibraryBrowser.delete": "Delete from the library\u2026",
34134
+ "mediaLibraryBrowser.deleteConfirm": "Delete this from the team library? {count, plural, one {The file using it loses it.} other {All # files using it lose it.}} This cannot be undone.",
34135
+ "mediaLibraryBrowser.download": "Download",
34128
34136
  "mediaLibraryBrowser.file": "File",
34129
34137
  "mediaLibraryBrowser.fromFile": "From {name}",
34130
34138
  "mediaLibraryBrowser.generated": "Generated",
34131
34139
  "mediaLibraryBrowser.images": "Images",
34140
+ "mediaLibraryBrowser.itemMenu": "Media item",
34132
34141
  "mediaLibraryBrowser.loading": "Loading\u2026",
34133
34142
  "mediaLibraryBrowser.loadingMore": "Loading more\u2026",
34134
34143
  "mediaLibraryBrowser.noProject": "No project",
@@ -36641,6 +36650,8 @@ var require_es = __commonJS({
36641
36650
  "audioLanes.keyTheGainAtThe": "Establecer clave de ganancia en el cabezal de reproducci\xF3n",
36642
36651
  "audioLanes.linear": "Lineal",
36643
36652
  "audioLanes.listening": "Escuchando\u2026",
36653
+ "audioLanes.loop": "Repetir",
36654
+ "audioLanes.loopHint": "Reproducirlo una y otra vez mientras la l\xEDnea de tiempo o la pantalla mostrada se reproduzca (m\xFAsica de fondo)",
36644
36655
  "audioLanes.muteThisClip": "Silenciar este clip",
36645
36656
  "audioLanes.noSound": " \xB7 sin sonido",
36646
36657
  "audioLanes.out": "Salida",
@@ -37013,6 +37024,7 @@ var require_es = __commonJS({
37013
37024
  "command:generate.video": "Generar video",
37014
37025
  "command:history.redo": "Rehacer",
37015
37026
  "command:history.undo": "Deshacer",
37027
+ "command:media.download": "Descargar",
37016
37028
  "command:motion.addAudio": "A\xF1adir audio",
37017
37029
  "command:motion.applyPreset": "Animar",
37018
37030
  "command:motion.applyPreset#blur-in": "Animar: Desenfocar entrada",
@@ -38042,6 +38054,7 @@ var require_es = __commonJS({
38042
38054
  "generateAudioDialog.generateAudio": "Generar audio",
38043
38055
  "generateAudioDialog.landsAtThePlayheadAs": "Aterriza en el cabezal de reproducci\xF3n como un clip de audio.",
38044
38056
  "generateAudioDialog.length": "Duraci\xF3n",
38057
+ "generateAudioDialog.loop": "Repetirlo mientras la pantalla se muestre (m\xFAsica de fondo)",
38045
38058
  "generateAudioDialog.model": "Modelo",
38046
38059
  "generateAudioDialog.needsAFrame": "A\xF1ade primero un fotograma: el sonido generado se a\xF1ade a la l\xEDnea de tiempo de un fotograma (o de una composici\xF3n), donde puedes recortarlo, atenuarlo y nivelarlo en Animate.",
38047
38060
  "generateAudioDialog.noModelServed": "Tu Hypery a\xFAn no ofrece ning\xFAn modelo para esto.",
@@ -38589,13 +38602,18 @@ var require_es = __commonJS({
38589
38602
  "mediaLibraryBrowser.allProjects": "Todos los proyectos",
38590
38603
  "mediaLibraryBrowser.allSources": "Todas las fuentes",
38591
38604
  "mediaLibraryBrowser.audio": "Audio",
38605
+ "mediaLibraryBrowser.couldNotDelete": "No se pudo eliminar.",
38592
38606
  "mediaLibraryBrowser.couldNotLoadTheLibrary": "No se pudo cargar la biblioteca. Int\xE9ntalo de nuevo.",
38593
38607
  "mediaLibraryBrowser.couldNotLoadYourTeams": "No se pudieron cargar tus equipos.",
38594
38608
  "mediaLibraryBrowser.couldNotUseThat": "No se pudo usar eso.",
38609
+ "mediaLibraryBrowser.delete": "Eliminar de la biblioteca\u2026",
38610
+ "mediaLibraryBrowser.deleteConfirm": "\xBFEliminar esto de la biblioteca del equipo? {count, plural, one {El archivo que lo usa lo perder\xE1.} other {Todos los # archivos que lo usan lo perder\xE1n.}} Esto no se puede deshacer.",
38611
+ "mediaLibraryBrowser.download": "Descargar",
38595
38612
  "mediaLibraryBrowser.file": "Archivo",
38596
38613
  "mediaLibraryBrowser.fromFile": "De {name}",
38597
38614
  "mediaLibraryBrowser.generated": "Generado",
38598
38615
  "mediaLibraryBrowser.images": "Im\xE1genes",
38616
+ "mediaLibraryBrowser.itemMenu": "Elemento multimedia",
38599
38617
  "mediaLibraryBrowser.loading": "Cargando\u2026",
38600
38618
  "mediaLibraryBrowser.loadingMore": "Cargando m\xE1s\u2026",
38601
38619
  "mediaLibraryBrowser.noProject": "Ning\xFAn proyecto",
@@ -41108,6 +41126,8 @@ var require_fr = __commonJS({
41108
41126
  "audioLanes.keyTheGainAtThe": "D\xE9finir une cl\xE9 de gain \xE0 la t\xEAte de lecture",
41109
41127
  "audioLanes.linear": "Lin\xE9aire",
41110
41128
  "audioLanes.listening": "\xC9coute en cours\u2026",
41129
+ "audioLanes.loop": "Boucle",
41130
+ "audioLanes.loopHint": "Le lire en continu tant que la chronologie ou l\u2019\xE9cran affich\xE9 est en lecture (musique de fond)",
41111
41131
  "audioLanes.muteThisClip": "Couper le son de ce clip",
41112
41132
  "audioLanes.noSound": " \xB7 pas de son",
41113
41133
  "audioLanes.out": "Fin",
@@ -41480,6 +41500,7 @@ var require_fr = __commonJS({
41480
41500
  "command:generate.video": "G\xE9n\xE9rer une vid\xE9o",
41481
41501
  "command:history.redo": "R\xE9tablir",
41482
41502
  "command:history.undo": "Annuler",
41503
+ "command:media.download": "T\xE9l\xE9charger",
41483
41504
  "command:motion.addAudio": "Ajouter un audio",
41484
41505
  "command:motion.applyPreset": "Animer",
41485
41506
  "command:motion.applyPreset#blur-in": "Animer : Flou entrant",
@@ -42509,6 +42530,7 @@ var require_fr = __commonJS({
42509
42530
  "generateAudioDialog.generateAudio": "G\xE9n\xE9rer l\u2019audio",
42510
42531
  "generateAudioDialog.landsAtThePlayheadAs": "Appara\xEEt \xE0 la t\xEAte de lecture comme un clip audio.",
42511
42532
  "generateAudioDialog.length": "Dur\xE9e",
42533
+ "generateAudioDialog.loop": "Le lire en boucle tant que l\u2019\xE9cran est affich\xE9 (musique de fond)",
42512
42534
  "generateAudioDialog.model": "Mod\xE8le",
42513
42535
  "generateAudioDialog.needsAFrame": "Ajoutez d\u2019abord un cadre : le son g\xE9n\xE9r\xE9 est plac\xE9 sur la timeline d\u2019un cadre (ou d\u2019une composition), o\xF9 vous pouvez le couper, l\u2019estomper et en ajuster le niveau dans Animate.",
42514
42536
  "generateAudioDialog.noModelServed": "Votre Hypery ne propose pas encore de mod\xE8le pour cela.",
@@ -43056,13 +43078,18 @@ var require_fr = __commonJS({
43056
43078
  "mediaLibraryBrowser.allProjects": "Tous les projets",
43057
43079
  "mediaLibraryBrowser.allSources": "Toutes les sources",
43058
43080
  "mediaLibraryBrowser.audio": "Audio",
43081
+ "mediaLibraryBrowser.couldNotDelete": "Impossible de supprimer cet \xE9l\xE9ment.",
43059
43082
  "mediaLibraryBrowser.couldNotLoadTheLibrary": "Impossible de charger la biblioth\xE8que. R\xE9essayez.",
43060
43083
  "mediaLibraryBrowser.couldNotLoadYourTeams": "Impossible de charger vos \xE9quipes.",
43061
43084
  "mediaLibraryBrowser.couldNotUseThat": "Impossible d\u2019utiliser cela.",
43085
+ "mediaLibraryBrowser.delete": "Supprimer de la biblioth\xE8que\u2026",
43086
+ "mediaLibraryBrowser.deleteConfirm": "Supprimer cet \xE9l\xE9ment de la biblioth\xE8que d\u2019\xE9quipe ? {count, plural, one {Le fichier qui l\u2019utilise le perdra.} other {Tous les # fichiers qui l\u2019utilisent le perdront.}} Cette action est irr\xE9versible.",
43087
+ "mediaLibraryBrowser.download": "T\xE9l\xE9charger",
43062
43088
  "mediaLibraryBrowser.file": "Fichier",
43063
43089
  "mediaLibraryBrowser.fromFile": "De {name}",
43064
43090
  "mediaLibraryBrowser.generated": "G\xE9n\xE9r\xE9",
43065
43091
  "mediaLibraryBrowser.images": "Images",
43092
+ "mediaLibraryBrowser.itemMenu": "\xC9l\xE9ment multim\xE9dia",
43066
43093
  "mediaLibraryBrowser.loading": "Chargement\u2026",
43067
43094
  "mediaLibraryBrowser.loadingMore": "Chargement de plus\u2026",
43068
43095
  "mediaLibraryBrowser.noProject": "Aucun projet",
@@ -45575,6 +45602,8 @@ var require_de = __commonJS({
45575
45602
  "audioLanes.keyTheGainAtThe": "Verst\xE4rkung am Abspielkopf keyen",
45576
45603
  "audioLanes.linear": "Linear",
45577
45604
  "audioLanes.listening": "H\xF6ren\u2026",
45605
+ "audioLanes.loop": "Schleife",
45606
+ "audioLanes.loopHint": "Wird wiederholt abgespielt, solange die Zeitleiste oder der angezeigte Bildschirm l\xE4uft (Hintergrundmusik)",
45578
45607
  "audioLanes.muteThisClip": "Diesen Clip stummschalten",
45579
45608
  "audioLanes.noSound": " \xB7 kein Ton",
45580
45609
  "audioLanes.out": "Ende",
@@ -45947,6 +45976,7 @@ var require_de = __commonJS({
45947
45976
  "command:generate.video": "Video generieren",
45948
45977
  "command:history.redo": "Wiederholen",
45949
45978
  "command:history.undo": "R\xFCckg\xE4ngig machen",
45979
+ "command:media.download": "Herunterladen",
45950
45980
  "command:motion.addAudio": "Audio hinzuf\xFCgen",
45951
45981
  "command:motion.applyPreset": "Animieren",
45952
45982
  "command:motion.applyPreset#blur-in": "Animieren: Weich einblenden",
@@ -46976,6 +47006,7 @@ var require_de = __commonJS({
46976
47006
  "generateAudioDialog.generateAudio": "Audio generieren",
46977
47007
  "generateAudioDialog.landsAtThePlayheadAs": "Wird an der Abspielposition als Audioclip eingef\xFCgt.",
46978
47008
  "generateAudioDialog.length": "L\xE4nge",
47009
+ "generateAudioDialog.loop": "Wiederhole es, solange der Bildschirm angezeigt wird (Hintergrundmusik)",
46979
47010
  "generateAudioDialog.model": "Modell",
46980
47011
  "generateAudioDialog.needsAFrame": "F\xFCge zuerst einen Frame hinzu: Generierter Sound wird auf der Zeitleiste eines Frames (oder einer Komposition) platziert, wo du ihn in Animate zuschneiden, ein- und ausblenden und den Pegel anpassen kannst.",
46981
47012
  "generateAudioDialog.noModelServed": "Dein Hypery stellt daf\xFCr noch kein Modell bereit.",
@@ -47523,13 +47554,18 @@ var require_de = __commonJS({
47523
47554
  "mediaLibraryBrowser.allProjects": "Alle Projekte",
47524
47555
  "mediaLibraryBrowser.allSources": "Alle Quellen",
47525
47556
  "mediaLibraryBrowser.audio": "Audio",
47557
+ "mediaLibraryBrowser.couldNotDelete": "Das konnte nicht gel\xF6scht werden.",
47526
47558
  "mediaLibraryBrowser.couldNotLoadTheLibrary": "Bibliothek konnte nicht geladen werden. Versuche es erneut.",
47527
47559
  "mediaLibraryBrowser.couldNotLoadYourTeams": "Deine Teams konnten nicht geladen werden.",
47528
47560
  "mediaLibraryBrowser.couldNotUseThat": "Das konnte nicht verwendet werden.",
47561
+ "mediaLibraryBrowser.delete": "Aus der Bibliothek l\xF6schen\u2026",
47562
+ "mediaLibraryBrowser.deleteConfirm": "Dies aus der Team-Bibliothek l\xF6schen? {count, plural, one {Die Datei, die es verwendet, verliert es.} other {Alle # Dateien, die es verwenden, verlieren es.}} Dies kann nicht r\xFCckg\xE4ngig gemacht werden.",
47563
+ "mediaLibraryBrowser.download": "Herunterladen",
47529
47564
  "mediaLibraryBrowser.file": "Datei",
47530
47565
  "mediaLibraryBrowser.fromFile": "Aus {name}",
47531
47566
  "mediaLibraryBrowser.generated": "Generiert",
47532
47567
  "mediaLibraryBrowser.images": "Bilder",
47568
+ "mediaLibraryBrowser.itemMenu": "Medienelement",
47533
47569
  "mediaLibraryBrowser.loading": "Wird geladen\u2026",
47534
47570
  "mediaLibraryBrowser.loadingMore": "Mehr laden\u2026",
47535
47571
  "mediaLibraryBrowser.noProject": "Kein Projekt",
@@ -50042,6 +50078,8 @@ var require_it = __commonJS({
50042
50078
  "audioLanes.keyTheGainAtThe": "Imposta il guadagno alla testina di riproduzione",
50043
50079
  "audioLanes.linear": "Lineare",
50044
50080
  "audioLanes.listening": "In ascolto\u2026",
50081
+ "audioLanes.loop": "Ripeti",
50082
+ "audioLanes.loopHint": "Riproducilo ripetutamente per tutta la durata della timeline o della schermata visualizzata (musica di sottofondo)",
50045
50083
  "audioLanes.muteThisClip": "Silenzia questa clip",
50046
50084
  "audioLanes.noSound": " \xB7 nessun suono",
50047
50085
  "audioLanes.out": "Fine",
@@ -50414,6 +50452,7 @@ var require_it = __commonJS({
50414
50452
  "command:generate.video": "Genera video",
50415
50453
  "command:history.redo": "Ripeti",
50416
50454
  "command:history.undo": "Annulla",
50455
+ "command:media.download": "Scarica",
50417
50456
  "command:motion.addAudio": "Aggiungi audio",
50418
50457
  "command:motion.applyPreset": "Anima",
50419
50458
  "command:motion.applyPreset#blur-in": "Anima: Sfocatura in entrata",
@@ -51443,6 +51482,7 @@ var require_it = __commonJS({
51443
51482
  "generateAudioDialog.generateAudio": "Genera audio",
51444
51483
  "generateAudioDialog.landsAtThePlayheadAs": "Viene inserito nella testina di riproduzione come clip audio.",
51445
51484
  "generateAudioDialog.length": "Durata",
51485
+ "generateAudioDialog.loop": "Ripetilo per tutta la durata della schermata (musica di sottofondo)",
51446
51486
  "generateAudioDialog.model": "Modello",
51447
51487
  "generateAudioDialog.needsAFrame": "Aggiungi prima un fotogramma: il suono generato va sulla timeline di un fotogramma (o di una composizione), dove puoi tagliarlo, sfumarlo e regolarne il livello in Animate.",
51448
51488
  "generateAudioDialog.noModelServed": "Il tuo Hypery non serve ancora alcun modello per questo.",
@@ -51990,13 +52030,18 @@ var require_it = __commonJS({
51990
52030
  "mediaLibraryBrowser.allProjects": "Tutti i progetti",
51991
52031
  "mediaLibraryBrowser.allSources": "Tutte le sorgenti",
51992
52032
  "mediaLibraryBrowser.audio": "Audio",
52033
+ "mediaLibraryBrowser.couldNotDelete": "Impossibile eliminare l\u2019elemento.",
51993
52034
  "mediaLibraryBrowser.couldNotLoadTheLibrary": "Impossibile caricare la libreria. Riprova.",
51994
52035
  "mediaLibraryBrowser.couldNotLoadYourTeams": "Impossibile caricare i tuoi team.",
51995
52036
  "mediaLibraryBrowser.couldNotUseThat": "Impossibile usarlo.",
52037
+ "mediaLibraryBrowser.delete": "Elimina dalla libreria\u2026",
52038
+ "mediaLibraryBrowser.deleteConfirm": "Eliminare questo elemento dalla libreria del team? {count, plural, one {Il file che lo utilizza lo perder\xE0.} other {Tutti i # file che lo utilizzano lo perderanno.}} Questa azione non pu\xF2 essere annullata.",
52039
+ "mediaLibraryBrowser.download": "Scarica",
51996
52040
  "mediaLibraryBrowser.file": "File",
51997
52041
  "mediaLibraryBrowser.fromFile": "Da {name}",
51998
52042
  "mediaLibraryBrowser.generated": "Generato",
51999
52043
  "mediaLibraryBrowser.images": "Immagini",
52044
+ "mediaLibraryBrowser.itemMenu": "Elemento multimediale",
52000
52045
  "mediaLibraryBrowser.loading": "Caricamento\u2026",
52001
52046
  "mediaLibraryBrowser.loadingMore": "Caricamento di altro\u2026",
52002
52047
  "mediaLibraryBrowser.noProject": "Nessun progetto",
@@ -54509,6 +54554,8 @@ var require_pt_BR = __commonJS({
54509
54554
  "audioLanes.keyTheGainAtThe": "Definir o ganho no cursor de reprodu\xE7\xE3o",
54510
54555
  "audioLanes.linear": "Linear",
54511
54556
  "audioLanes.listening": "Ouvindo\u2026",
54557
+ "audioLanes.loop": "Repetir",
54558
+ "audioLanes.loopHint": "Reproduzir repetidamente enquanto a linha do tempo ou a tela exibida estiverem ativas (m\xFAsica de fundo)",
54512
54559
  "audioLanes.muteThisClip": "Silenciar este clipe",
54513
54560
  "audioLanes.noSound": " \xB7 sem som",
54514
54561
  "audioLanes.out": "Sa\xEDda",
@@ -54881,6 +54928,7 @@ var require_pt_BR = __commonJS({
54881
54928
  "command:generate.video": "Gerar v\xEDdeo",
54882
54929
  "command:history.redo": "Refazer",
54883
54930
  "command:history.undo": "Desfazer",
54931
+ "command:media.download": "Baixar",
54884
54932
  "command:motion.addAudio": "Adicionar \xE1udio",
54885
54933
  "command:motion.applyPreset": "Animar",
54886
54934
  "command:motion.applyPreset#blur-in": "Animar: Desfoque de entrada",
@@ -55910,6 +55958,7 @@ var require_pt_BR = __commonJS({
55910
55958
  "generateAudioDialog.generateAudio": "Gerar \xE1udio",
55911
55959
  "generateAudioDialog.landsAtThePlayheadAs": "Aparece na linha do tempo como um clipe de \xE1udio.",
55912
55960
  "generateAudioDialog.length": "Dura\xE7\xE3o",
55961
+ "generateAudioDialog.loop": "Repetir enquanto a tela estiver sendo exibida (m\xFAsica de fundo)",
55913
55962
  "generateAudioDialog.model": "Modelo",
55914
55963
  "generateAudioDialog.needsAFrame": "Adicione um quadro primeiro: o som gerado vai para a linha do tempo de um quadro (ou de uma composi\xE7\xE3o), onde voc\xEA pode cortar, esmaecer e ajustar o n\xEDvel no Animate.",
55915
55964
  "generateAudioDialog.noModelServed": "Seu Hypery ainda n\xE3o oferece nenhum modelo para isso.",
@@ -56457,13 +56506,18 @@ var require_pt_BR = __commonJS({
56457
56506
  "mediaLibraryBrowser.allProjects": "Todos os projetos",
56458
56507
  "mediaLibraryBrowser.allSources": "Todas as fontes",
56459
56508
  "mediaLibraryBrowser.audio": "\xC1udio",
56509
+ "mediaLibraryBrowser.couldNotDelete": "N\xE3o foi poss\xEDvel excluir.",
56460
56510
  "mediaLibraryBrowser.couldNotLoadTheLibrary": "N\xE3o foi poss\xEDvel carregar a biblioteca. Tente novamente.",
56461
56511
  "mediaLibraryBrowser.couldNotLoadYourTeams": "N\xE3o foi poss\xEDvel carregar suas equipes.",
56462
56512
  "mediaLibraryBrowser.couldNotUseThat": "N\xE3o foi poss\xEDvel usar isso.",
56513
+ "mediaLibraryBrowser.delete": "Excluir da biblioteca\u2026",
56514
+ "mediaLibraryBrowser.deleteConfirm": "Excluir este item da biblioteca da equipe? {count, plural, one {O arquivo que o utiliza o perder\xE1.} other {Todos os # arquivos que o utilizam o perder\xE3o.}} Esta a\xE7\xE3o n\xE3o pode ser desfeita.",
56515
+ "mediaLibraryBrowser.download": "Baixar",
56463
56516
  "mediaLibraryBrowser.file": "Arquivo",
56464
56517
  "mediaLibraryBrowser.fromFile": "De {name}",
56465
56518
  "mediaLibraryBrowser.generated": "Gerado",
56466
56519
  "mediaLibraryBrowser.images": "Imagens",
56520
+ "mediaLibraryBrowser.itemMenu": "Item de m\xEDdia",
56467
56521
  "mediaLibraryBrowser.loading": "Carregando\u2026",
56468
56522
  "mediaLibraryBrowser.loadingMore": "Carregando mais\u2026",
56469
56523
  "mediaLibraryBrowser.noProject": "Nenhum projeto",
@@ -58976,6 +59030,8 @@ var require_ja = __commonJS({
58976
59030
  "audioLanes.keyTheGainAtThe": "\u518D\u751F\u30D8\u30C3\u30C9\u3067\u30B2\u30A4\u30F3\u3092\u30AD\u30FC\u30D5\u30EC\u30FC\u30E0\u8A2D\u5B9A",
58977
59031
  "audioLanes.linear": "\u30EA\u30CB\u30A2",
58978
59032
  "audioLanes.listening": "\u8074\u53D6\u4E2D\u2026",
59033
+ "audioLanes.loop": "\u30EB\u30FC\u30D7",
59034
+ "audioLanes.loopHint": "\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u307E\u305F\u306F\u8868\u793A\u4E2D\u306E\u753B\u9762\u304C\u518D\u751F\u3055\u308C\u3066\u3044\u308B\u9593\u3001\u7E70\u308A\u8FD4\u3057\u518D\u751F\u3057\u307E\u3059\uFF08BGM\uFF09\u3002",
58979
59035
  "audioLanes.muteThisClip": "\u3053\u306E\u30AF\u30EA\u30C3\u30D7\u3092\u30DF\u30E5\u30FC\u30C8",
58980
59036
  "audioLanes.noSound": "\u30FB\u30B5\u30A6\u30F3\u30C9\u306A\u3057",
58981
59037
  "audioLanes.out": "\u30A2\u30A6\u30C8",
@@ -59348,6 +59404,7 @@ var require_ja = __commonJS({
59348
59404
  "command:generate.video": "\u30D3\u30C7\u30AA\u3092\u751F\u6210",
59349
59405
  "command:history.redo": "\u3084\u308A\u76F4\u3057",
59350
59406
  "command:history.undo": "\u5143\u306B\u623B\u3059",
59407
+ "command:media.download": "\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9",
59351
59408
  "command:motion.addAudio": "\u30AA\u30FC\u30C7\u30A3\u30AA\u3092\u8FFD\u52A0",
59352
59409
  "command:motion.applyPreset": "\u30A2\u30CB\u30E1\u30FC\u30C8",
59353
59410
  "command:motion.applyPreset#blur-in": "\u30A2\u30CB\u30E1\u30FC\u30C8: \u307C\u304B\u3057\u30A4\u30F3",
@@ -60377,6 +60434,7 @@ var require_ja = __commonJS({
60377
60434
  "generateAudioDialog.generateAudio": "\u97F3\u58F0\u3092\u751F\u6210",
60378
60435
  "generateAudioDialog.landsAtThePlayheadAs": "\u518D\u751F\u30D8\u30C3\u30C9\u306B\u30AA\u30FC\u30C7\u30A3\u30AA\u30AF\u30EA\u30C3\u30D7\u3068\u3057\u3066\u914D\u7F6E\u3055\u308C\u307E\u3059\u3002",
60379
60436
  "generateAudioDialog.length": "\u9577\u3055",
60437
+ "generateAudioDialog.loop": "\u753B\u9762\u304C\u8868\u793A\u3055\u308C\u3066\u3044\u308B\u9593\u3001\u7E70\u308A\u8FD4\u3057\u518D\u751F\u3057\u307E\u3059\uFF08BGM\uFF09\u3002",
60380
60438
  "generateAudioDialog.model": "\u30E2\u30C7\u30EB",
60381
60439
  "generateAudioDialog.needsAFrame": "\u307E\u305A\u30D5\u30EC\u30FC\u30E0\u3092\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u751F\u6210\u3055\u308C\u305F\u30B5\u30A6\u30F3\u30C9\u306F\u30D5\u30EC\u30FC\u30E0\u306E\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\uFF08\u307E\u305F\u306F\u30B3\u30F3\u30DD\u30B8\u30B7\u30E7\u30F3\u306E\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\uFF09\u306B\u914D\u7F6E\u3055\u308C\u3001\u305D\u3053\u3067Animate\u3092\u4F7F\u3063\u3066\u30C8\u30EA\u30DF\u30F3\u30B0\u3001\u30D5\u30A7\u30FC\u30C9\u3001\u30EC\u30D9\u30EB\u8ABF\u6574\u304C\u3067\u304D\u307E\u3059\u3002",
60382
60440
  "generateAudioDialog.noModelServed": "\u304A\u4F7F\u3044\u306EHypery\u3067\u306F\u3001\u307E\u3060\u3053\u306E\u30E2\u30C7\u30EB\u304C\u63D0\u4F9B\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002",
@@ -60924,13 +60982,18 @@ var require_ja = __commonJS({
60924
60982
  "mediaLibraryBrowser.allProjects": "\u3059\u3079\u3066\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8",
60925
60983
  "mediaLibraryBrowser.allSources": "\u3059\u3079\u3066\u306E\u30BD\u30FC\u30B9",
60926
60984
  "mediaLibraryBrowser.audio": "\u30AA\u30FC\u30C7\u30A3\u30AA",
60985
+ "mediaLibraryBrowser.couldNotDelete": "\u524A\u9664\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002",
60927
60986
  "mediaLibraryBrowser.couldNotLoadTheLibrary": "\u30E9\u30A4\u30D6\u30E9\u30EA\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u3082\u3046\u4E00\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002",
60928
60987
  "mediaLibraryBrowser.couldNotLoadYourTeams": "\u30C1\u30FC\u30E0\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F\u3002",
60929
60988
  "mediaLibraryBrowser.couldNotUseThat": "\u305D\u308C\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002",
60989
+ "mediaLibraryBrowser.delete": "\u30E9\u30A4\u30D6\u30E9\u30EA\u304B\u3089\u524A\u9664\u2026",
60990
+ "mediaLibraryBrowser.deleteConfirm": "\u3053\u308C\u3092\u30C1\u30FC\u30E0\u30E9\u30A4\u30D6\u30E9\u30EA\u304B\u3089\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F {count, plural, other {\u3053\u306E\u30A2\u30BB\u30C3\u30C8\u3092\u4F7F\u7528\u3057\u3066\u3044\u308B{count}\u500B\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u3001\u3053\u306E\u30A2\u30BB\u30C3\u30C8\u3092\u5931\u3044\u307E\u3059\u3002}} \u3053\u306E\u64CD\u4F5C\u306F\u5143\u306B\u623B\u305B\u307E\u305B\u3093\u3002",
60991
+ "mediaLibraryBrowser.download": "\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9",
60930
60992
  "mediaLibraryBrowser.file": "\u30D5\u30A1\u30A4\u30EB",
60931
60993
  "mediaLibraryBrowser.fromFile": "{name} \u304B\u3089",
60932
60994
  "mediaLibraryBrowser.generated": "\u751F\u6210\u6E08\u307F",
60933
60995
  "mediaLibraryBrowser.images": "\u753B\u50CF",
60996
+ "mediaLibraryBrowser.itemMenu": "\u30E1\u30C7\u30A3\u30A2\u30A2\u30A4\u30C6\u30E0",
60934
60997
  "mediaLibraryBrowser.loading": "\u8AAD\u307F\u8FBC\u307F\u4E2D\u2026",
60935
60998
  "mediaLibraryBrowser.loadingMore": "\u3055\u3089\u306B\u8AAD\u307F\u8FBC\u307F\u4E2D\u2026",
60936
60999
  "mediaLibraryBrowser.noProject": "\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306A\u3057",
@@ -63443,6 +63506,8 @@ var require_ko = __commonJS({
63443
63506
  "audioLanes.keyTheGainAtThe": "\uC7AC\uC0DD \uD5E4\uB4DC\uC5D0\uC11C \uAC8C\uC778 \uD0A4 \uC124\uC815",
63444
63507
  "audioLanes.linear": "\uC120\uD615",
63445
63508
  "audioLanes.listening": "\uB4E3\uB294 \uC911\u2026",
63509
+ "audioLanes.loop": "\uBC18\uBCF5",
63510
+ "audioLanes.loopHint": "\uD0C0\uC784\uB77C\uC778 \uB610\uB294 \uD654\uBA74\uC774 \uC7AC\uC0DD\uB418\uB294 \uB3D9\uC548 \uACC4\uC18D \uBC18\uBCF5 \uC7AC\uC0DD\uD569\uB2C8\uB2E4 (\uBC30\uACBD \uC74C\uC545).",
63446
63511
  "audioLanes.muteThisClip": "\uC774 \uD074\uB9BD \uC74C\uC18C\uAC70",
63447
63512
  "audioLanes.noSound": " \xB7 \uC18C\uB9AC \uC5C6\uC74C",
63448
63513
  "audioLanes.out": "\uC544\uC6C3",
@@ -63815,6 +63880,7 @@ var require_ko = __commonJS({
63815
63880
  "command:generate.video": "\uBE44\uB514\uC624 \uC0DD\uC131",
63816
63881
  "command:history.redo": "\uB2E4\uC2DC \uC2E4\uD589",
63817
63882
  "command:history.undo": "\uC2E4\uD589 \uCDE8\uC18C",
63883
+ "command:media.download": "\uB2E4\uC6B4\uB85C\uB4DC",
63818
63884
  "command:motion.addAudio": "\uC624\uB514\uC624 \uCD94\uAC00",
63819
63885
  "command:motion.applyPreset": "\uC560\uB2C8\uBA54\uC774\uC158 \uC801\uC6A9",
63820
63886
  "command:motion.applyPreset#blur-in": "\uC560\uB2C8\uBA54\uC774\uC158: \uD750\uB9AC\uAC8C \uB098\uD0C0\uB098\uAE30",
@@ -64844,6 +64910,7 @@ var require_ko = __commonJS({
64844
64910
  "generateAudioDialog.generateAudio": "\uC624\uB514\uC624 \uC0DD\uC131",
64845
64911
  "generateAudioDialog.landsAtThePlayheadAs": "\uC7AC\uC0DD \uD5E4\uB4DC\uC5D0 \uC624\uB514\uC624 \uD074\uB9BD\uC73C\uB85C \uBC30\uCE58\uB429\uB2C8\uB2E4.",
64846
64912
  "generateAudioDialog.length": "\uAE38\uC774",
64913
+ "generateAudioDialog.loop": "\uD654\uBA74\uC774 \uD45C\uC2DC\uB418\uB294 \uB3D9\uC548 \uBC18\uBCF5 \uC7AC\uC0DD\uD569\uB2C8\uB2E4 (\uBC30\uACBD \uC74C\uC545).",
64847
64914
  "generateAudioDialog.model": "\uBAA8\uB378",
64848
64915
  "generateAudioDialog.needsAFrame": "\uBA3C\uC800 \uD504\uB808\uC784\uC744 \uCD94\uAC00\uD558\uC138\uC694. \uC0DD\uC131\uB41C \uC0AC\uC6B4\uB4DC\uB294 \uD504\uB808\uC784\uC758 \uD0C0\uC784\uB77C\uC778(\uB610\uB294 \uCEF4\uD3EC\uC9C0\uC158)\uC5D0 \uCD94\uAC00\uB418\uBA70, Animate\uC5D0\uC11C \uC790\uB974\uAE30, \uD398\uC774\uB4DC \uBC0F \uB808\uBCA8 \uC870\uC815\uC744 \uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.",
64849
64916
  "generateAudioDialog.noModelServed": "Hypery\uC5D0\uC11C \uC544\uC9C1 \uC774 \uAE30\uB2A5\uC5D0 \uB300\uD55C \uBAA8\uB378\uC744 \uC81C\uACF5\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.",
@@ -65391,13 +65458,18 @@ var require_ko = __commonJS({
65391
65458
  "mediaLibraryBrowser.allProjects": "\uBAA8\uB4E0 \uD504\uB85C\uC81D\uD2B8",
65392
65459
  "mediaLibraryBrowser.allSources": "\uBAA8\uB4E0 \uC18C\uC2A4",
65393
65460
  "mediaLibraryBrowser.audio": "\uC624\uB514\uC624",
65461
+ "mediaLibraryBrowser.couldNotDelete": "\uC0AD\uC81C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.",
65394
65462
  "mediaLibraryBrowser.couldNotLoadTheLibrary": "\uB77C\uC774\uBE0C\uB7EC\uB9AC\uB97C \uBD88\uB7EC\uC62C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC138\uC694.",
65395
65463
  "mediaLibraryBrowser.couldNotLoadYourTeams": "\uD300\uC744 \uBD88\uB7EC\uC62C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.",
65396
65464
  "mediaLibraryBrowser.couldNotUseThat": "\uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.",
65465
+ "mediaLibraryBrowser.delete": "\uB77C\uC774\uBE0C\uB7EC\uB9AC\uC5D0\uC11C \uC0AD\uC81C\u2026",
65466
+ "mediaLibraryBrowser.deleteConfirm": "\uD300 \uB77C\uC774\uBE0C\uB7EC\uB9AC\uC5D0\uC11C \uC774 \uD56D\uBAA9\uC744 \uC0AD\uC81C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C? {count, plural, one {\uC774 \uD56D\uBAA9\uC744 \uC0AC\uC6A9\uD558\uB294 \uD30C\uC77C\uC774 \uC190\uC2E4\uB429\uB2C8\uB2E4.} other {\uC774 \uD56D\uBAA9\uC744 \uC0AC\uC6A9\uD558\uB294 \uD30C\uC77C #\uAC1C\uAC00 \uBAA8\uB450 \uC190\uC2E4\uB429\uB2C8\uB2E4.}} \uC774 \uC791\uC5C5\uC740 \uB418\uB3CC\uB9B4 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.",
65467
+ "mediaLibraryBrowser.download": "\uB2E4\uC6B4\uB85C\uB4DC",
65397
65468
  "mediaLibraryBrowser.file": "\uD30C\uC77C",
65398
65469
  "mediaLibraryBrowser.fromFile": "{name}\uC5D0\uC11C",
65399
65470
  "mediaLibraryBrowser.generated": "\uC0DD\uC131\uB428",
65400
65471
  "mediaLibraryBrowser.images": "\uC774\uBBF8\uC9C0",
65472
+ "mediaLibraryBrowser.itemMenu": "\uBBF8\uB514\uC5B4 \uD56D\uBAA9",
65401
65473
  "mediaLibraryBrowser.loading": "\uBD88\uB7EC\uC624\uB294 \uC911\u2026",
65402
65474
  "mediaLibraryBrowser.loadingMore": "\uB354 \uBD88\uB7EC\uC624\uB294 \uC911\u2026",
65403
65475
  "mediaLibraryBrowser.noProject": "\uD504\uB85C\uC81D\uD2B8 \uC5C6\uC74C",
@@ -67910,6 +67982,8 @@ var require_zh_CN = __commonJS({
67910
67982
  "audioLanes.keyTheGainAtThe": "\u5728\u64AD\u653E\u5934\u5904\u8BBE\u7F6E\u589E\u76CA\u5173\u952E\u5E27",
67911
67983
  "audioLanes.linear": "\u7EBF\u6027",
67912
67984
  "audioLanes.listening": "\u6B63\u5728\u76D1\u542C\u2026",
67985
+ "audioLanes.loop": "\u5FAA\u73AF",
67986
+ "audioLanes.loopHint": "\u5728\u65F6\u95F4\u8F74\u6216\u5C4F\u5E55\u64AD\u653E\u671F\u95F4\u91CD\u590D\u64AD\u653E\uFF08\u80CC\u666F\u97F3\u4E50\uFF09",
67913
67987
  "audioLanes.muteThisClip": "\u9759\u97F3\u6B64\u526A\u8F91",
67914
67988
  "audioLanes.noSound": " \xB7 \u65E0\u58F0\u97F3",
67915
67989
  "audioLanes.out": "\u51FA\u70B9",
@@ -68282,6 +68356,7 @@ var require_zh_CN = __commonJS({
68282
68356
  "command:generate.video": "\u751F\u6210\u89C6\u9891",
68283
68357
  "command:history.redo": "\u91CD\u505A",
68284
68358
  "command:history.undo": "\u64A4\u9500",
68359
+ "command:media.download": "\u4E0B\u8F7D",
68285
68360
  "command:motion.addAudio": "\u6DFB\u52A0\u97F3\u9891",
68286
68361
  "command:motion.applyPreset": "\u52A8\u753B",
68287
68362
  "command:motion.applyPreset#blur-in": "\u52A8\u753B\uFF1A\u6A21\u7CCA\u5165",
@@ -69311,6 +69386,7 @@ var require_zh_CN = __commonJS({
69311
69386
  "generateAudioDialog.generateAudio": "\u751F\u6210\u97F3\u9891",
69312
69387
  "generateAudioDialog.landsAtThePlayheadAs": "\u4F5C\u4E3A\u97F3\u9891\u526A\u8F91\u843D\u5728\u64AD\u653E\u5934\u5904\u3002",
69313
69388
  "generateAudioDialog.length": "\u957F\u5EA6",
69389
+ "generateAudioDialog.loop": "\u5728\u5C4F\u5E55\u663E\u793A\u671F\u95F4\u91CD\u590D\u64AD\u653E\uFF08\u80CC\u666F\u97F3\u4E50\uFF09",
69314
69390
  "generateAudioDialog.model": "\u6A21\u578B",
69315
69391
  "generateAudioDialog.needsAFrame": "\u8BF7\u5148\u6DFB\u52A0\u4E00\u4E2A\u5E27\uFF1A\u751F\u6210\u7684\u97F3\u9891\u4F1A\u6DFB\u52A0\u5230\u5E27\u7684\u65F6\u95F4\u8F74\u4E0A\uFF08\u6216\u5408\u6210\u7684\u65F6\u95F4\u8F74\u4E0A\uFF09\uFF0C\u60A8\u53EF\u4EE5\u5728 Animate \u4E2D\u5BF9\u5176\u8FDB\u884C\u526A\u8F91\u3001\u6DE1\u5165\u6DE1\u51FA\u548C\u8C03\u6574\u97F3\u91CF\u3002",
69316
69392
  "generateAudioDialog.noModelServed": "\u4F60\u7684 Hypery \u5C1A\u672A\u4E3A\u6B64\u63D0\u4F9B\u6A21\u578B\u3002",
@@ -69858,13 +69934,18 @@ var require_zh_CN = __commonJS({
69858
69934
  "mediaLibraryBrowser.allProjects": "\u6240\u6709\u9879\u76EE",
69859
69935
  "mediaLibraryBrowser.allSources": "\u6240\u6709\u6765\u6E90",
69860
69936
  "mediaLibraryBrowser.audio": "\u97F3\u9891",
69937
+ "mediaLibraryBrowser.couldNotDelete": "\u65E0\u6CD5\u5220\u9664\u3002",
69861
69938
  "mediaLibraryBrowser.couldNotLoadTheLibrary": "\u65E0\u6CD5\u52A0\u8F7D\u5E93\u3002\u8BF7\u91CD\u8BD5\u3002",
69862
69939
  "mediaLibraryBrowser.couldNotLoadYourTeams": "\u65E0\u6CD5\u52A0\u8F7D\u60A8\u7684\u56E2\u961F\u3002",
69863
69940
  "mediaLibraryBrowser.couldNotUseThat": "\u65E0\u6CD5\u4F7F\u7528\u8BE5\u9879\u3002",
69941
+ "mediaLibraryBrowser.delete": "\u4ECE\u5E93\u4E2D\u5220\u9664\u2026",
69942
+ "mediaLibraryBrowser.deleteConfirm": "\u4ECE\u56E2\u961F\u5E93\u4E2D\u5220\u9664\u6B64\u9879\uFF1F{count, plural, one {\u4F7F\u7528\u5B83\u7684\u6587\u4EF6\u5C06\u4E22\u5931\u5B83\u3002} other {\u6240\u6709 # \u4E2A\u4F7F\u7528\u5B83\u7684\u6587\u4EF6\u90FD\u5C06\u4E22\u5931\u5B83\u3002}} \u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u6D88\u3002",
69943
+ "mediaLibraryBrowser.download": "\u4E0B\u8F7D",
69864
69944
  "mediaLibraryBrowser.file": "\u6587\u4EF6",
69865
69945
  "mediaLibraryBrowser.fromFile": "\u6765\u81EA {name}",
69866
69946
  "mediaLibraryBrowser.generated": "\u5DF2\u751F\u6210",
69867
69947
  "mediaLibraryBrowser.images": "\u56FE\u50CF",
69948
+ "mediaLibraryBrowser.itemMenu": "\u5A92\u4F53\u9879",
69868
69949
  "mediaLibraryBrowser.loading": "\u6B63\u5728\u52A0\u8F7D\u2026",
69869
69950
  "mediaLibraryBrowser.loadingMore": "\u6B63\u5728\u52A0\u8F7D\u66F4\u591A\u2026",
69870
69951
  "mediaLibraryBrowser.noProject": "\u65E0\u9879\u76EE",
@@ -72377,6 +72458,8 @@ var require_zh_TW = __commonJS({
72377
72458
  "audioLanes.keyTheGainAtThe": "\u5728\u64AD\u653E\u982D\u8655\u8A2D\u5B9A\u589E\u76CA\u95DC\u9375\u5F71\u683C",
72378
72459
  "audioLanes.linear": "\u7DDA\u6027",
72379
72460
  "audioLanes.listening": "\u6B63\u5728\u8046\u807D\u2026",
72461
+ "audioLanes.loop": "\u5FAA\u74B0",
72462
+ "audioLanes.loopHint": "\u5728\u6642\u9593\u8EF8\u6216\u756B\u9762\u64AD\u653E\u671F\u9593\u91CD\u8907\u64AD\u653E (\u80CC\u666F\u97F3\u6A02)",
72380
72463
  "audioLanes.muteThisClip": "\u5C07\u6B64\u7247\u6BB5\u975C\u97F3",
72381
72464
  "audioLanes.noSound": " \xB7 \u7121\u8072\u97F3",
72382
72465
  "audioLanes.out": "\u51FA\u9EDE",
@@ -72749,6 +72832,7 @@ var require_zh_TW = __commonJS({
72749
72832
  "command:generate.video": "\u7522\u751F\u5F71\u7247",
72750
72833
  "command:history.redo": "\u91CD\u505A",
72751
72834
  "command:history.undo": "\u5FA9\u539F",
72835
+ "command:media.download": "\u4E0B\u8F09",
72752
72836
  "command:motion.addAudio": "\u65B0\u589E\u97F3\u8A0A",
72753
72837
  "command:motion.applyPreset": "\u52D5\u756B",
72754
72838
  "command:motion.applyPreset#blur-in": "\u52D5\u756B\uFF1A\u6A21\u7CCA\u6DE1\u5165",
@@ -73778,6 +73862,7 @@ var require_zh_TW = __commonJS({
73778
73862
  "generateAudioDialog.generateAudio": "\u7522\u751F\u97F3\u8A0A",
73779
73863
  "generateAudioDialog.landsAtThePlayheadAs": "\u5C07\u97F3\u8A0A\u7247\u6BB5\u653E\u7F6E\u65BC\u64AD\u653E\u982D\u3002",
73780
73864
  "generateAudioDialog.length": "\u9577\u5EA6",
73865
+ "generateAudioDialog.loop": "\u5728\u756B\u9762\u986F\u793A\u671F\u9593\u91CD\u8907\u64AD\u653E (\u80CC\u666F\u97F3\u6A02)",
73781
73866
  "generateAudioDialog.model": "\u6A21\u578B",
73782
73867
  "generateAudioDialog.needsAFrame": "\u8ACB\u5148\u65B0\u589E\u4E00\u500B\u5F71\u683C\uFF1A\u7522\u751F\u7684\u8072\u97F3\u6703\u653E\u5728\u5F71\u683C\uFF08\u6216\u5408\u6210\uFF09\u7684\u6642\u9593\u8EF8\u4E0A\uFF0C\u60A8\u53EF\u4EE5\u5728 Animate \u4E2D\u4FEE\u526A\u3001\u6DE1\u5165\u6DE1\u51FA\u4E26\u8ABF\u6574\u97F3\u91CF\u3002",
73783
73868
  "generateAudioDialog.noModelServed": "\u60A8\u7684 Hypery \u5C1A\u672A\u63D0\u4F9B\u6B64\u529F\u80FD\u6240\u9700\u6A21\u578B\u3002",
@@ -74325,13 +74410,18 @@ var require_zh_TW = __commonJS({
74325
74410
  "mediaLibraryBrowser.allProjects": "\u6240\u6709\u5C08\u6848",
74326
74411
  "mediaLibraryBrowser.allSources": "\u6240\u6709\u4F86\u6E90",
74327
74412
  "mediaLibraryBrowser.audio": "\u97F3\u8A0A",
74413
+ "mediaLibraryBrowser.couldNotDelete": "\u7121\u6CD5\u522A\u9664\u8A72\u9805\u76EE\u3002",
74328
74414
  "mediaLibraryBrowser.couldNotLoadTheLibrary": "\u7121\u6CD5\u8F09\u5165\u7A0B\u5F0F\u5EAB\u3002\u8ACB\u518D\u8A66\u4E00\u6B21\u3002",
74329
74415
  "mediaLibraryBrowser.couldNotLoadYourTeams": "\u7121\u6CD5\u8F09\u5165\u60A8\u7684\u5718\u968A\u3002",
74330
74416
  "mediaLibraryBrowser.couldNotUseThat": "\u7121\u6CD5\u4F7F\u7528\u8A72\u9805\u76EE\u3002",
74417
+ "mediaLibraryBrowser.delete": "\u5F9E\u5A92\u9AD4\u5EAB\u522A\u9664\u2026",
74418
+ "mediaLibraryBrowser.deleteConfirm": "\u8981\u5F9E\u5718\u968A\u5A92\u9AD4\u5EAB\u4E2D\u522A\u9664\u6B64\u9805\u76EE\u55CE\uFF1F {count, plural, one {\u4F7F\u7528\u5B83\u7684\u6A94\u6848\u5C07\u6703\u907A\u5931\u5B83\u3002} other {\u6240\u6709 # \u500B\u4F7F\u7528\u5B83\u7684\u6A94\u6848\u90FD\u5C07\u907A\u5931\u5B83\u3002}} \u6B64\u64CD\u4F5C\u7121\u6CD5\u5FA9\u539F\u3002",
74419
+ "mediaLibraryBrowser.download": "\u4E0B\u8F09",
74331
74420
  "mediaLibraryBrowser.file": "\u6A94\u6848",
74332
74421
  "mediaLibraryBrowser.fromFile": "\u4F86\u81EA {name}",
74333
74422
  "mediaLibraryBrowser.generated": "\u5DF2\u7522\u751F",
74334
74423
  "mediaLibraryBrowser.images": "\u5F71\u50CF",
74424
+ "mediaLibraryBrowser.itemMenu": "\u5A92\u9AD4\u9805\u76EE",
74335
74425
  "mediaLibraryBrowser.loading": "\u8F09\u5165\u4E2D\u2026",
74336
74426
  "mediaLibraryBrowser.loadingMore": "\u8F09\u5165\u66F4\u591A\u2026",
74337
74427
  "mediaLibraryBrowser.noProject": "\u7121\u5C08\u6848",
@@ -76844,6 +76934,8 @@ var require_ru = __commonJS({
76844
76934
  "audioLanes.keyTheGainAtThe": "\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u043A\u043B\u044E\u0447\u0435\u0432\u043E\u0439 \u043A\u0430\u0434\u0440 \u0443\u0441\u0438\u043B\u0435\u043D\u0438\u044F \u043D\u0430 \u043F\u043E\u0437\u0438\u0446\u0438\u0438 \u0432\u043E\u0441\u043F\u0440\u043E\u0438\u0437\u0432\u0435\u0434\u0435\u043D\u0438\u044F",
76845
76935
  "audioLanes.linear": "\u041B\u0438\u043D\u0435\u0439\u043D\u044B\u0439",
76846
76936
  "audioLanes.listening": "\u041F\u0440\u043E\u0441\u043B\u0443\u0448\u0438\u0432\u0430\u043D\u0438\u0435\u2026",
76937
+ "audioLanes.loop": "\u041F\u043E\u0432\u0442\u043E\u0440",
76938
+ "audioLanes.loopHint": "\u0412\u043E\u0441\u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u044C \u0441\u043D\u043E\u0432\u0430 \u0438 \u0441\u043D\u043E\u0432\u0430, \u043F\u043E\u043A\u0430 \u0432\u043E\u0441\u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0441\u044F \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u0430\u044F \u0448\u043A\u0430\u043B\u0430 \u0438\u043B\u0438 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044F \u044D\u043A\u0440\u0430\u043D (\u0444\u043E\u043D\u043E\u0432\u0430\u044F \u043C\u0443\u0437\u044B\u043A\u0430)",
76847
76939
  "audioLanes.muteThisClip": "\u0412\u044B\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0437\u0432\u0443\u043A \u044D\u0442\u043E\u0433\u043E \u043A\u043B\u0438\u043F\u0430",
76848
76940
  "audioLanes.noSound": " \xB7 \u043D\u0435\u0442 \u0437\u0432\u0443\u043A\u0430",
76849
76941
  "audioLanes.out": "\u041A\u043E\u043D\u0435\u0446",
@@ -77216,6 +77308,7 @@ var require_ru = __commonJS({
77216
77308
  "command:generate.video": "\u0421\u0433\u0435\u043D\u0435\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u0438\u0434\u0435\u043E",
77217
77309
  "command:history.redo": "\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C",
77218
77310
  "command:history.undo": "\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C",
77311
+ "command:media.download": "\u0421\u043A\u0430\u0447\u0430\u0442\u044C",
77219
77312
  "command:motion.addAudio": "\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0430\u0443\u0434\u0438\u043E",
77220
77313
  "command:motion.applyPreset": "\u0410\u043D\u0438\u043C\u0438\u0440\u043E\u0432\u0430\u0442\u044C",
77221
77314
  "command:motion.applyPreset#blur-in": "\u0410\u043D\u0438\u043C\u0438\u0440\u043E\u0432\u0430\u0442\u044C: \u0420\u0430\u0437\u043C\u044B\u0442\u0438\u0435 \u043F\u0440\u0438 \u043F\u043E\u044F\u0432\u043B\u0435\u043D\u0438\u0438",
@@ -78245,6 +78338,7 @@ var require_ru = __commonJS({
78245
78338
  "generateAudioDialog.generateAudio": "\u0421\u0433\u0435\u043D\u0435\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0430\u0443\u0434\u0438\u043E",
78246
78339
  "generateAudioDialog.landsAtThePlayheadAs": "\u041F\u043E\u043C\u0435\u0449\u0430\u0435\u0442\u0441\u044F \u043D\u0430 \u043F\u043E\u043B\u0437\u0443\u043D\u043E\u043A \u0432\u043E\u0441\u043F\u0440\u043E\u0438\u0437\u0432\u0435\u0434\u0435\u043D\u0438\u044F \u043A\u0430\u043A \u0430\u0443\u0434\u0438\u043E\u043A\u043B\u0438\u043F.",
78247
78340
  "generateAudioDialog.length": "\u0414\u043B\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C",
78341
+ "generateAudioDialog.loop": "\u0417\u0430\u0446\u0438\u043A\u043B\u0438\u0442\u044C \u043D\u0430 \u0432\u0441\u0451 \u0432\u0440\u0435\u043C\u044F \u043F\u043E\u043A\u0430\u0437\u0430 \u044D\u043A\u0440\u0430\u043D\u0430 (\u0444\u043E\u043D\u043E\u0432\u0430\u044F \u043C\u0443\u0437\u044B\u043A\u0430)",
78248
78342
  "generateAudioDialog.model": "\u041C\u043E\u0434\u0435\u043B\u044C",
78249
78343
  "generateAudioDialog.needsAFrame": "\u0421\u043D\u0430\u0447\u0430\u043B\u0430 \u0434\u043E\u0431\u0430\u0432\u044C\u0442\u0435 \u043A\u0430\u0434\u0440: \u0441\u0433\u0435\u043D\u0435\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0439 \u0437\u0432\u0443\u043A \u043F\u043E\u043C\u0435\u0449\u0430\u0435\u0442\u0441\u044F \u043D\u0430 \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u0443\u044E \u0448\u043A\u0430\u043B\u0443 \u043A\u0430\u0434\u0440\u0430 (\u0438\u043B\u0438 \u043A\u043E\u043C\u043F\u043E\u0437\u0438\u0446\u0438\u0438), \u0433\u0434\u0435 \u0432\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u043E\u0431\u0440\u0435\u0437\u0430\u0442\u044C, \u0437\u0430\u0442\u0443\u0448\u0435\u0432\u0430\u0442\u044C \u0438 \u043D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0435\u0433\u043E \u0443\u0440\u043E\u0432\u0435\u043D\u044C \u0432 Animate.",
78250
78344
  "generateAudioDialog.noModelServed": "\u0412\u0430\u0448 Hypery \u043F\u043E\u043A\u0430 \u043D\u0435 \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u0442 \u043C\u043E\u0434\u0435\u043B\u044C \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E.",
@@ -78792,13 +78886,18 @@ var require_ru = __commonJS({
78792
78886
  "mediaLibraryBrowser.allProjects": "\u0412\u0441\u0435 \u043F\u0440\u043E\u0435\u043A\u0442\u044B",
78793
78887
  "mediaLibraryBrowser.allSources": "\u0412\u0441\u0435 \u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u0438",
78794
78888
  "mediaLibraryBrowser.audio": "\u0410\u0443\u0434\u0438\u043E",
78889
+ "mediaLibraryBrowser.couldNotDelete": "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0443\u0434\u0430\u043B\u0438\u0442\u044C.",
78795
78890
  "mediaLibraryBrowser.couldNotLoadTheLibrary": "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0431\u0438\u0431\u043B\u0438\u043E\u0442\u0435\u043A\u0443. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0441\u043D\u043E\u0432\u0430.",
78796
78891
  "mediaLibraryBrowser.couldNotLoadYourTeams": "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0432\u0430\u0448\u0438 \u043A\u043E\u043C\u0430\u043D\u0434\u044B.",
78797
78892
  "mediaLibraryBrowser.couldNotUseThat": "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u044D\u0442\u043E.",
78893
+ "mediaLibraryBrowser.delete": "\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0438\u0437 \u0431\u0438\u0431\u043B\u0438\u043E\u0442\u0435\u043A\u0438\u2026",
78894
+ "mediaLibraryBrowser.deleteConfirm": "\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u044D\u0442\u043E \u0438\u0437 \u0431\u0438\u0431\u043B\u0438\u043E\u0442\u0435\u043A\u0438 \u043A\u043E\u043C\u0430\u043D\u0434\u044B? {count, plural, one {\u0424\u0430\u0439\u043B, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0449\u0438\u0439 \u0435\u0433\u043E, \u043F\u043E\u0442\u0435\u0440\u044F\u0435\u0442 \u0435\u0433\u043E.} few {\u0412\u0441\u0435 # \u0444\u0430\u0439\u043B\u0430, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0449\u0438\u0435 \u0435\u0433\u043E, \u043F\u043E\u0442\u0435\u0440\u044F\u044E\u0442 \u0435\u0433\u043E.} many {\u0412\u0441\u0435 # \u0444\u0430\u0439\u043B\u043E\u0432, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0449\u0438\u0435 \u0435\u0433\u043E, \u043F\u043E\u0442\u0435\u0440\u044F\u044E\u0442 \u0435\u0433\u043E.} other {\u0412\u0441\u0435 # \u0444\u0430\u0439\u043B\u043E\u0432, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0449\u0438\u0435 \u0435\u0433\u043E, \u043F\u043E\u0442\u0435\u0440\u044F\u044E\u0442 \u0435\u0433\u043E.}} \u042D\u0442\u043E \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u043E\u0442\u043C\u0435\u043D\u0438\u0442\u044C.",
78895
+ "mediaLibraryBrowser.download": "\u0421\u043A\u0430\u0447\u0430\u0442\u044C",
78798
78896
  "mediaLibraryBrowser.file": "\u0424\u0430\u0439\u043B",
78799
78897
  "mediaLibraryBrowser.fromFile": "\u0418\u0437 {name}",
78800
78898
  "mediaLibraryBrowser.generated": "\u0421\u0433\u0435\u043D\u0435\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u043E",
78801
78899
  "mediaLibraryBrowser.images": "\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F",
78900
+ "mediaLibraryBrowser.itemMenu": "\u041C\u0435\u0434\u0438\u0430\u044D\u043B\u0435\u043C\u0435\u043D\u0442",
78802
78901
  "mediaLibraryBrowser.loading": "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430\u2026",
78803
78902
  "mediaLibraryBrowser.loadingMore": "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0435\u0449\u0451\u2026",
78804
78903
  "mediaLibraryBrowser.noProject": "\u041D\u0435\u0442 \u043F\u0440\u043E\u0435\u043A\u0442\u0430",
@@ -81311,6 +81410,8 @@ var require_ar = __commonJS({
81311
81410
  "audioLanes.keyTheGainAtThe": "\u0636\u0639 \u0645\u0641\u062A\u0627\u062D \u0627\u0644\u0643\u0633\u0628 \u0639\u0646\u062F \u0645\u0624\u0634\u0631 \u0627\u0644\u062A\u0634\u063A\u064A\u0644",
81312
81411
  "audioLanes.linear": "\u062E\u0637\u064A",
81313
81412
  "audioLanes.listening": "\u062C\u0627\u0631\u064A \u0627\u0644\u0627\u0633\u062A\u0645\u0627\u0639\u2026",
81413
+ "audioLanes.loop": "\u062A\u0643\u0631\u0627\u0631",
81414
+ "audioLanes.loopHint": "\u062A\u0634\u063A\u064A\u0644\u0647 \u0645\u0631\u0627\u0631\u064B\u0627 \u0648\u062A\u0643\u0631\u0627\u0631\u064B\u0627 \u0637\u0648\u0627\u0644 \u0645\u062F\u0629 \u062A\u0634\u063A\u064A\u0644 \u0627\u0644\u0645\u062E\u0637\u0637 \u0627\u0644\u0632\u0645\u0646\u064A \u0623\u0648 \u0627\u0644\u0634\u0627\u0634\u0629 \u0627\u0644\u0645\u0639\u0631\u0648\u0636\u0629 (\u0645\u0648\u0633\u064A\u0642\u0649 \u062E\u0644\u0641\u064A\u0629)",
81314
81415
  "audioLanes.muteThisClip": "\u0643\u062A\u0645 \u0647\u0630\u0627 \u0627\u0644\u0645\u0642\u0637\u0639",
81315
81416
  "audioLanes.noSound": " \xB7 \u0644\u0627 \u064A\u0648\u062C\u062F \u0635\u0648\u062A",
81316
81417
  "audioLanes.out": "\u062E\u0627\u0631\u062C",
@@ -81683,6 +81784,7 @@ var require_ar = __commonJS({
81683
81784
  "command:generate.video": "\u0625\u0646\u0634\u0627\u0621 \u0641\u064A\u062F\u064A\u0648",
81684
81785
  "command:history.redo": "\u0625\u0639\u0627\u062F\u0629",
81685
81786
  "command:history.undo": "\u062A\u0631\u0627\u062C\u0639",
81787
+ "command:media.download": "\u062A\u0646\u0632\u064A\u0644",
81686
81788
  "command:motion.addAudio": "\u0625\u0636\u0627\u0641\u0629 \u0635\u0648\u062A",
81687
81789
  "command:motion.applyPreset": "\u062A\u062D\u0631\u064A\u0643",
81688
81790
  "command:motion.applyPreset#blur-in": "\u062A\u062D\u0631\u064A\u0643: \u062A\u0645\u0648\u064A\u0647 \u0644\u0644\u062F\u0627\u062E\u0644",
@@ -82712,6 +82814,7 @@ var require_ar = __commonJS({
82712
82814
  "generateAudioDialog.generateAudio": "\u062A\u0648\u0644\u064A\u062F \u0635\u0648\u062A",
82713
82815
  "generateAudioDialog.landsAtThePlayheadAs": "\u064A\u0647\u0628\u0637 \u0639\u0646\u062F \u0631\u0623\u0633 \u0627\u0644\u062A\u0634\u063A\u064A\u0644 \u0643\u0645\u0642\u0637\u0639 \u0635\u0648\u062A\u064A.",
82714
82816
  "generateAudioDialog.length": "\u0627\u0644\u0645\u062F\u0629",
82817
+ "generateAudioDialog.loop": "\u062A\u0643\u0631\u0627\u0631\u0647 \u0637\u0648\u0627\u0644 \u0645\u062F\u0629 \u0639\u0631\u0636 \u0627\u0644\u0634\u0627\u0634\u0629 (\u0645\u0648\u0633\u064A\u0642\u0649 \u062E\u0644\u0641\u064A\u0629)",
82715
82818
  "generateAudioDialog.model": "\u0627\u0644\u0646\u0645\u0648\u0630\u062C",
82716
82819
  "generateAudioDialog.needsAFrame": "\u0623\u0636\u0641 \u0625\u0637\u0627\u0631\u064B\u0627 \u0623\u0648\u0644\u0627\u064B: \u0627\u0644\u0635\u0648\u062A \u0627\u0644\u0645\u064F\u0648\u0644\u0651\u062F \u064A\u0648\u0636\u0639 \u0639\u0644\u0649 \u0627\u0644\u0645\u062E\u0637\u0637 \u0627\u0644\u0632\u0645\u0646\u064A \u0644\u0644\u0625\u0637\u0627\u0631 (\u0623\u0648 \u0644\u0644\u062A\u0643\u0648\u064A\u0646)\u060C \u062D\u064A\u062B \u064A\u0645\u0643\u0646\u0643 \u0642\u0635\u0647 \u0648\u062A\u0644\u0627\u0634\u064A\u0647 \u0648\u062A\u0639\u062F\u064A\u0644 \u0645\u0633\u062A\u0648\u0627\u0647 \u0641\u064A Animate.",
82717
82820
  "generateAudioDialog.noModelServed": "\u0644\u0627 \u064A\u0642\u062F\u0645 Hypery \u0627\u0644\u062E\u0627\u0635 \u0628\u0643 \u0623\u064A \u0646\u0645\u0648\u0630\u062C \u0644\u0647\u0630\u0627 \u0628\u0639\u062F.",
@@ -83259,13 +83362,18 @@ var require_ar = __commonJS({
83259
83362
  "mediaLibraryBrowser.allProjects": "\u062C\u0645\u064A\u0639 \u0627\u0644\u0645\u0634\u0627\u0631\u064A\u0639",
83260
83363
  "mediaLibraryBrowser.allSources": "\u062C\u0645\u064A\u0639 \u0627\u0644\u0645\u0635\u0627\u062F\u0631",
83261
83364
  "mediaLibraryBrowser.audio": "\u0635\u0648\u062A",
83365
+ "mediaLibraryBrowser.couldNotDelete": "\u062A\u0639\u0630\u0631 \u062D\u0630\u0641 \u0630\u0644\u0643.",
83262
83366
  "mediaLibraryBrowser.couldNotLoadTheLibrary": "\u062A\u0639\u0630\u0631 \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0645\u0643\u062A\u0628\u0629. \u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649.",
83263
83367
  "mediaLibraryBrowser.couldNotLoadYourTeams": "\u062A\u0639\u0630\u0631 \u062A\u062D\u0645\u064A\u0644 \u0641\u0631\u0642\u0643.",
83264
83368
  "mediaLibraryBrowser.couldNotUseThat": "\u062A\u0639\u0630\u0631 \u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0630\u0644\u0643.",
83369
+ "mediaLibraryBrowser.delete": "\u062D\u0630\u0641 \u0645\u0646 \u0627\u0644\u0645\u0643\u062A\u0628\u0629\u2026",
83370
+ "mediaLibraryBrowser.deleteConfirm": "\u0647\u0644 \u062A\u0631\u064A\u062F \u062D\u0630\u0641 \u0647\u0630\u0627 \u0645\u0646 \u0645\u0643\u062A\u0628\u0629 \u0627\u0644\u0641\u0631\u064A\u0642\u061F {count, plural, zero {\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u0644\u0641\u0627\u062A \u062A\u0633\u062A\u062E\u062F\u0645\u0647.} one {\u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0630\u064A \u064A\u0633\u062A\u062E\u062F\u0645\u0647 \u0633\u064A\u0641\u0642\u062F\u0647.} two {\u0627\u0644\u0645\u0644\u0641\u0627\u0646 \u0627\u0644\u0644\u0630\u0627\u0646 \u064A\u0633\u062A\u062E\u062F\u0645\u0627\u0646\u0647 \u0633\u064A\u0641\u0642\u062F\u0627\u0646\u0647.} few {\u062C\u0645\u064A\u0639 # \u0645\u0644\u0641\u0627\u062A \u062A\u0633\u062A\u062E\u062F\u0645\u0647 \u0633\u062A\u0641\u0642\u062F\u0647.} many {\u062C\u0645\u064A\u0639 # \u0645\u0644\u0641\u0627\u062A \u062A\u0633\u062A\u062E\u062F\u0645\u0647 \u0633\u062A\u0641\u0642\u062F\u0647.} other {\u062C\u0645\u064A\u0639 # \u0645\u0644\u0641\u0627\u062A \u062A\u0633\u062A\u062E\u062F\u0645\u0647 \u0633\u062A\u0641\u0642\u062F\u0647.}} \u0644\u0627 \u064A\u0645\u0643\u0646 \u0627\u0644\u062A\u0631\u0627\u062C\u0639 \u0639\u0646 \u0647\u0630\u0627 \u0627\u0644\u0625\u062C\u0631\u0627\u0621.",
83371
+ "mediaLibraryBrowser.download": "\u062A\u0646\u0632\u064A\u0644",
83265
83372
  "mediaLibraryBrowser.file": "\u0645\u0644\u0641",
83266
83373
  "mediaLibraryBrowser.fromFile": "\u0645\u0646 {name}",
83267
83374
  "mediaLibraryBrowser.generated": "\u062A\u0645 \u0625\u0646\u0634\u0627\u0624\u0647",
83268
83375
  "mediaLibraryBrowser.images": "\u0635\u0648\u0631",
83376
+ "mediaLibraryBrowser.itemMenu": "\u0639\u0646\u0635\u0631 \u0648\u0633\u0627\u0626\u0637",
83269
83377
  "mediaLibraryBrowser.loading": "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644\u2026",
83270
83378
  "mediaLibraryBrowser.loadingMore": "\u062C\u0627\u0631\u064D \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0645\u0632\u064A\u062F\u2026",
83271
83379
  "mediaLibraryBrowser.noProject": "\u0644\u0627 \u064A\u0648\u062C\u062F \u0645\u0634\u0631\u0648\u0639",
@@ -85778,6 +85886,8 @@ var require_hi = __commonJS({
85778
85886
  "audioLanes.keyTheGainAtThe": "\u092A\u094D\u0932\u0947\u0939\u0947\u0921 \u092A\u0930 \u0917\u0947\u0928 \u0915\u094B \u0915\u0940 \u0915\u0930\u0947\u0902",
85779
85887
  "audioLanes.linear": "\u0930\u0947\u0916\u0940\u092F",
85780
85888
  "audioLanes.listening": "\u0938\u0941\u0928 \u0930\u0939\u093E \u0939\u0948\u2026",
85889
+ "audioLanes.loop": "\u0932\u0942\u092A",
85890
+ "audioLanes.loopHint": "\u091C\u092C \u0924\u0915 \u091F\u093E\u0907\u092E\u0932\u093E\u0907\u0928 \u092F\u093E \u0926\u093F\u0916\u093E\u0908 \u0917\u0908 \u0938\u094D\u0915\u094D\u0930\u0940\u0928 \u091A\u0932\u0924\u0940 \u0939\u0948, \u0924\u092C \u0924\u0915 \u0907\u0938\u0947 \u0932\u0917\u093E\u0924\u093E\u0930 \u091A\u0932\u093E\u090F\u0901 (\u092C\u0948\u0915\u0917\u094D\u0930\u093E\u0909\u0902\u0921 \u0938\u0902\u0917\u0940\u0924)",
85781
85891
  "audioLanes.muteThisClip": "\u0907\u0938 \u0915\u094D\u0932\u093F\u092A \u0915\u094B \u092E\u094D\u092F\u0942\u091F \u0915\u0930\u0947\u0902",
85782
85892
  "audioLanes.noSound": " \xB7 \u0915\u094B\u0908 \u0906\u0935\u093E\u091C\u093C \u0928\u0939\u0940\u0902",
85783
85893
  "audioLanes.out": "\u0906\u0909\u091F",
@@ -86150,6 +86260,7 @@ var require_hi = __commonJS({
86150
86260
  "command:generate.video": "\u0935\u0940\u0921\u093F\u092F\u094B \u091C\u0928\u0930\u0947\u091F \u0915\u0930\u0947\u0902",
86151
86261
  "command:history.redo": "\u092B\u093F\u0930 \u0938\u0947 \u0915\u0930\u0947\u0902",
86152
86262
  "command:history.undo": "\u092A\u0942\u0930\u094D\u0935\u0935\u0924 \u0915\u0930\u0947\u0902",
86263
+ "command:media.download": "\u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930\u0947\u0902",
86153
86264
  "command:motion.addAudio": "\u0911\u0921\u093F\u092F\u094B \u091C\u094B\u0921\u093C\u0947\u0902",
86154
86265
  "command:motion.applyPreset": "\u090F\u0928\u093F\u092E\u0947\u091F \u0915\u0930\u0947\u0902",
86155
86266
  "command:motion.applyPreset#blur-in": "\u090F\u0928\u093F\u092E\u0947\u091F \u0915\u0930\u0947\u0902: \u092C\u094D\u0932\u0930 \u0907\u0928",
@@ -87179,6 +87290,7 @@ var require_hi = __commonJS({
87179
87290
  "generateAudioDialog.generateAudio": "\u0911\u0921\u093F\u092F\u094B \u091C\u0928\u0930\u0947\u091F \u0915\u0930\u0947\u0902",
87180
87291
  "generateAudioDialog.landsAtThePlayheadAs": "\u092A\u094D\u0932\u0947\u0939\u0947\u0921 \u092A\u0930 \u090F\u0915 \u0911\u0921\u093F\u092F\u094B \u0915\u094D\u0932\u093F\u092A \u0915\u0947 \u0930\u0942\u092A \u092E\u0947\u0902 \u0906\u0924\u093E \u0939\u0948\u0964",
87181
87292
  "generateAudioDialog.length": "\u0932\u0902\u092C\u093E\u0908",
87293
+ "generateAudioDialog.loop": "\u091C\u092C \u0924\u0915 \u0938\u094D\u0915\u094D\u0930\u0940\u0928 \u0926\u093F\u0916\u0924\u0940 \u0939\u0948, \u0924\u092C \u0924\u0915 \u0907\u0938\u0947 \u0932\u0942\u092A \u0915\u0930\u0947\u0902 (\u092C\u0948\u0915\u0917\u094D\u0930\u093E\u0909\u0902\u0921 \u0938\u0902\u0917\u0940\u0924)",
87182
87294
  "generateAudioDialog.model": "\u092E\u0949\u0921\u0932",
87183
87295
  "generateAudioDialog.needsAFrame": "\u092A\u0939\u0932\u0947 \u090F\u0915 \u092B\u093C\u094D\u0930\u0947\u092E \u091C\u094B\u0921\u093C\u0947\u0902: \u091C\u0928\u0930\u0947\u091F \u0915\u0940 \u0917\u0908 \u0927\u094D\u0935\u0928\u093F \u092B\u093C\u094D\u0930\u0947\u092E \u0915\u0940 \u091F\u093E\u0907\u092E\u0932\u093E\u0907\u0928 (\u092F\u093E \u0915\u093F\u0938\u0940 \u0915\u0902\u092A\u094B\u091C\u093C\u093F\u0936\u0928 \u0915\u0940) \u092A\u0930 \u091C\u093E\u0924\u0940 \u0939\u0948, \u091C\u0939\u093E\u0901 \u0906\u092A \u0907\u0938\u0947 \u090F\u0928\u093F\u092E\u0947\u091F \u092E\u0947\u0902 \u091F\u094D\u0930\u093F\u092E, \u092B\u093C\u0947\u0921 \u0914\u0930 \u0932\u0947\u0935\u0932 \u0915\u0930 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964",
87184
87296
  "generateAudioDialog.noModelServed": "\u0906\u092A\u0915\u093E \u0939\u093E\u0907\u092A\u0930\u0940 \u0905\u092D\u0940 \u0924\u0915 \u0907\u0938\u0915\u0947 \u0932\u093F\u090F \u0915\u094B\u0908 \u092E\u0949\u0921\u0932 \u092A\u094D\u0930\u0926\u093E\u0928 \u0928\u0939\u0940\u0902 \u0915\u0930\u0924\u093E\u0964",
@@ -87726,13 +87838,18 @@ var require_hi = __commonJS({
87726
87838
  "mediaLibraryBrowser.allProjects": "\u0938\u092D\u0940 \u092A\u094D\u0930\u094B\u091C\u0947\u0915\u094D\u091F",
87727
87839
  "mediaLibraryBrowser.allSources": "\u0938\u092D\u0940 \u0938\u094D\u0930\u094B\u0924",
87728
87840
  "mediaLibraryBrowser.audio": "\u0911\u0921\u093F\u092F\u094B",
87841
+ "mediaLibraryBrowser.couldNotDelete": "\u0909\u0938\u0947 \u0921\u093F\u0932\u0940\u091F \u0928\u0939\u0940\u0902 \u0915\u093F\u092F\u093E \u091C\u093E \u0938\u0915\u093E\u0964",
87729
87842
  "mediaLibraryBrowser.couldNotLoadTheLibrary": "\u0932\u093E\u0907\u092C\u094D\u0930\u0947\u0930\u0940 \u0932\u094B\u0921 \u0928\u0939\u0940\u0902 \u0939\u094B \u0938\u0915\u0940\u0964 \u092A\u0941\u0928\u0903 \u092A\u094D\u0930\u092F\u093E\u0938 \u0915\u0930\u0947\u0902\u0964",
87730
87843
  "mediaLibraryBrowser.couldNotLoadYourTeams": "\u0906\u092A\u0915\u0940 \u091F\u0940\u092E\u0947\u0902 \u0932\u094B\u0921 \u0928\u0939\u0940\u0902 \u0939\u094B \u0938\u0915\u0940\u0902\u0964",
87731
87844
  "mediaLibraryBrowser.couldNotUseThat": "\u0909\u0938\u0915\u093E \u0909\u092A\u092F\u094B\u0917 \u0928\u0939\u0940\u0902 \u0915\u093F\u092F\u093E \u091C\u093E \u0938\u0915\u093E\u0964",
87845
+ "mediaLibraryBrowser.delete": "\u0932\u093E\u0907\u092C\u094D\u0930\u0947\u0930\u0940 \u0938\u0947 \u0921\u093F\u0932\u0940\u091F \u0915\u0930\u0947\u0902\u2026",
87846
+ "mediaLibraryBrowser.deleteConfirm": "\u0907\u0938\u0947 \u091F\u0940\u092E \u0932\u093E\u0907\u092C\u094D\u0930\u0947\u0930\u0940 \u0938\u0947 \u0921\u093F\u0932\u0940\u091F \u0915\u0930\u0947\u0902? {count, plural, one {\u0907\u0938\u0947 \u0907\u0938\u094D\u0924\u0947\u092E\u093E\u0932 \u0915\u0930\u0928\u0947 \u0935\u093E\u0932\u0940 \u092B\u093C\u093E\u0907\u0932 \u0907\u0938\u0947 \u0916\u094B \u0926\u0947\u0917\u0940\u0964} other {\u0907\u0938\u0947 \u0907\u0938\u094D\u0924\u0947\u092E\u093E\u0932 \u0915\u0930\u0928\u0947 \u0935\u093E\u0932\u0940 \u0938\u092D\u0940 # \u092B\u093C\u093E\u0907\u0932\u0947\u0902 \u0907\u0938\u0947 \u0916\u094B \u0926\u0947\u0902\u0917\u0940\u0964}} \u0907\u0938\u0947 \u092A\u0942\u0930\u094D\u0935\u0935\u0924 \u0928\u0939\u0940\u0902 \u0915\u093F\u092F\u093E \u091C\u093E \u0938\u0915\u0924\u093E\u0964",
87847
+ "mediaLibraryBrowser.download": "\u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930\u0947\u0902",
87732
87848
  "mediaLibraryBrowser.file": "\u092B\u093C\u093E\u0907\u0932",
87733
87849
  "mediaLibraryBrowser.fromFile": "{name} \u0938\u0947",
87734
87850
  "mediaLibraryBrowser.generated": "\u091C\u0928\u0930\u0947\u091F \u0915\u093F\u092F\u093E \u0917\u092F\u093E",
87735
87851
  "mediaLibraryBrowser.images": "\u091B\u0935\u093F\u092F\u093E\u0901",
87852
+ "mediaLibraryBrowser.itemMenu": "\u092E\u0940\u0921\u093F\u092F\u093E \u0906\u0907\u091F\u092E",
87736
87853
  "mediaLibraryBrowser.loading": "\u0932\u094B\u0921 \u0939\u094B \u0930\u0939\u093E \u0939\u0948\u2026",
87737
87854
  "mediaLibraryBrowser.loadingMore": "\u0914\u0930 \u0932\u094B\u0921 \u0939\u094B \u0930\u0939\u093E \u0939\u0948\u2026",
87738
87855
  "mediaLibraryBrowser.noProject": "\u0915\u094B\u0908 \u092A\u094D\u0930\u094B\u091C\u0947\u0915\u094D\u091F \u0928\u0939\u0940\u0902",
@@ -95850,6 +95967,7 @@ function editAudioClip(comp, id3, patch) {
95850
95967
  else next2.pan = p2;
95851
95968
  }
95852
95969
  if (next2.muted === false) delete next2.muted;
95970
+ if (next2.loop === false) delete next2.loop;
95853
95971
  if (next2.gain) next2.gain = trimGain(next2.gain, len3);
95854
95972
  if (!next2.gain) delete next2.gain;
95855
95973
  const same5 = Object.keys(next2).every((k2) => next2[k2] === cur[k2]) && Object.keys(cur).length === Object.keys(next2).length;
@@ -253980,11 +254098,11 @@ function maxZoom(bounds2) {
253980
254098
  }
253981
254099
  function minZoom(bounds2) {
253982
254100
  const b = safe(bounds2);
253983
- return Math.min(maxZoom(b), Math.max(1e-6, (b.width - TAIL_PX) / b.duration));
254101
+ return Math.min(maxZoom(b), Math.max(1e-6, (b.width - TAIL_PX) / reach(b)));
253984
254102
  }
253985
254103
  function maxStart(pxPerMs, bounds2) {
253986
254104
  const b = safe(bounds2);
253987
- return Math.max(0, b.duration + TAIL_PX / pxPerMs - b.width / pxPerMs);
254105
+ return Math.max(0, reach(b) + TAIL_PX / pxPerMs - b.width / pxPerMs);
253988
254106
  }
253989
254107
  function clampView(view2, bounds2) {
253990
254108
  const pxPerMs = clampZoom(Number.isFinite(view2.pxPerMs) && view2.pxPerMs > 0 ? view2.pxPerMs : minZoom(bounds2), bounds2);
@@ -254022,14 +254140,15 @@ function followPlayhead(view2, playhead, bounds2) {
254022
254140
  const next2 = clampView({ ...view2, start: playhead }, bounds2);
254023
254141
  return next2.start === view2.start ? null : next2;
254024
254142
  }
254025
- var TAIL_PX, MAX_PX_PER_FRAME, ZOOM_STEP, safe, clampZoom, fitView, timeAtPx, pxAtTime, panBy;
254143
+ var TAIL_PX, MAX_PX_PER_FRAME, ZOOM_STEP, safe, reach, clampZoom, fitView, timeAtPx, pxAtTime, panBy;
254026
254144
  var init_time_view = __esm({
254027
254145
  "lib/motion/time-view.ts"() {
254028
254146
  "use strict";
254029
254147
  TAIL_PX = 48;
254030
254148
  MAX_PX_PER_FRAME = 24;
254031
254149
  ZOOM_STEP = 2;
254032
- safe = (b) => ({ duration: Math.max(1, b.duration), fps: b.fps > 0 ? b.fps : 30, width: Math.max(1, b.width) });
254150
+ safe = (b) => ({ duration: Math.max(1, b.duration), fps: b.fps > 0 ? b.fps : 30, width: Math.max(1, b.width), ...b.content ? { content: b.content } : {} });
254151
+ reach = (b) => Math.max(b.duration, b.content ?? 0);
254033
254152
  clampZoom = (pxPerMs, bounds2) => Math.min(maxZoom(bounds2), Math.max(minZoom(bounds2), pxPerMs));
254034
254153
  fitView = (bounds2) => ({ start: 0, pxPerMs: minZoom(bounds2) });
254035
254154
  timeAtPx = (view2, px5) => view2.start + px5 / view2.pxPerMs;
@@ -254042,9 +254161,13 @@ var init_time_view = __esm({
254042
254161
  function timeBoundsOf(s) {
254043
254162
  const t3 = s.transport.target;
254044
254163
  const width = s.timeViewWidth;
254045
- if (t3?.kind === "frame") return s.document.nodes[t3.frameId] ? { duration: frameDuration(s.document.nodes, t3.frameId), fps: timelineFps(s.document.nodes[t3.frameId].timeline), width } : null;
254164
+ const soundEnd = (audio) => Math.max(0, ...(audio ?? []).map(audioClipEnd));
254165
+ if (t3?.kind === "frame") {
254166
+ const frame2 = s.document.nodes[t3.frameId];
254167
+ return frame2 ? { duration: frameDuration(s.document.nodes, t3.frameId), fps: timelineFps(frame2.timeline), width, content: soundEnd(frame2.timeline?.audio) } : null;
254168
+ }
254046
254169
  const comp = t3?.kind === "composition" ? s.document.compositions?.[t3.compositionId] : void 0;
254047
- return comp ? { duration: compositionDuration(comp), fps: comp.fps, width } : null;
254170
+ return comp ? { duration: compositionDuration(comp), fps: comp.fps, width, content: soundEnd(comp.audio) } : null;
254048
254171
  }
254049
254172
  function timeViewOf(s) {
254050
254173
  const b = timeBoundsOf(s);
@@ -254342,6 +254465,7 @@ var init_motion_slice = __esm({
254342
254465
  "use strict";
254343
254466
  init_pose();
254344
254467
  init_composition();
254468
+ init_audio_clips();
254345
254469
  init_key_selection();
254346
254470
  init_clipboard();
254347
254471
  init_markers();
@@ -299178,26 +299302,31 @@ function planAudio(comp, rangeMs, rate = MIX_SAMPLE_RATE) {
299178
299302
  if (to <= from2) return out;
299179
299303
  for (const clip of comp.audio ?? []) {
299180
299304
  if (clip.muted) continue;
299181
- const start2 = toSample(clip.start, rate);
299305
+ const first2 = toSample(clip.start, rate);
299182
299306
  const speed = audioSpeed(clip);
299183
299307
  const srcIn = speed === 1 ? toSample(clip.in, rate) : toSample(clip.in / speed, rate);
299184
299308
  const len3 = speed === 1 ? toSample(clip.out, rate) - toSample(clip.in, rate) : toSample(audioClipLength(clip), rate);
299185
- const a = Math.max(start2, from2), b = Math.min(start2 + len3, to);
299186
- if (b <= a) continue;
299309
+ if (len3 <= 0) continue;
299187
299310
  const unity = !clip.gain && !(clip.fadeIn && clip.fadeIn > 0) && !(clip.fadeOut && clip.fadeOut > 0);
299188
299311
  const g = clipGain(clip, rate);
299189
- out.push({
299190
- clipId: clip.id,
299191
- mediaHash: clip.mediaHash,
299192
- source: sourceKey2(clip.mediaHash, speed),
299193
- ...clip.link ? { link: clip.link } : {},
299194
- startSample: a - from2,
299195
- srcOffsetSample: srcIn + (a - start2),
299196
- lengthSamples: b - a,
299197
- pan: clip.pan ?? 0,
299198
- unity,
299199
- gain: unity ? () => 1 : (s) => g(s + from2 - start2)
299200
- });
299312
+ const reps = clip.loop ? Math.max(0, Math.ceil((to - first2) / len3)) : 1;
299313
+ for (let k2 = clip.loop ? Math.max(0, Math.floor((from2 - first2) / len3)) : 0; k2 < reps; k2++) {
299314
+ const start2 = first2 + k2 * len3;
299315
+ const a = Math.max(start2, from2), b = Math.min(start2 + len3, to);
299316
+ if (b <= a) continue;
299317
+ out.push({
299318
+ clipId: clip.id,
299319
+ mediaHash: clip.mediaHash,
299320
+ source: sourceKey2(clip.mediaHash, speed),
299321
+ ...clip.link ? { link: clip.link } : {},
299322
+ startSample: a - from2,
299323
+ srcOffsetSample: srcIn + (a - start2),
299324
+ lengthSamples: b - a,
299325
+ pan: clip.pan ?? 0,
299326
+ unity,
299327
+ gain: unity ? () => 1 : (s) => g(s + from2 - start2)
299328
+ });
299329
+ }
299201
299330
  }
299202
299331
  return out;
299203
299332
  }
@@ -309556,6 +309685,7 @@ async function writeImage(w, img, color4) {
309556
309685
  var PT, MARK_LEN, MARK_GAP, MAX_TEX, MAX_RASTER_PIXELS, posterFrames, pdfOptionsFor;
309557
309686
  var init_pdf = __esm({
309558
309687
  "lib/io/pdf/index.ts"() {
309688
+ "use strict";
309559
309689
  init_credits();
309560
309690
  init_scene_graph();
309561
309691
  init_export_fills();
@@ -310155,7 +310285,6 @@ function videoPixelSize(resolution, aspect) {
310155
310285
  var VIDEO_ASPECTS, VIDEO_RESOLUTIONS, SEEDANCE_ASPECTS, range, VIDEO_MODELS, DEFAULT_VIDEO_MODEL, videoModel, VIDEO_LIMITS;
310156
310286
  var init_video_models = __esm({
310157
310287
  "lib/ai/video-models.ts"() {
310158
- "use strict";
310159
310288
  VIDEO_ASPECTS = ["16:9", "9:16", "1:1", "4:3", "3:4", "21:9"];
310160
310289
  VIDEO_RESOLUTIONS = ["480p", "720p", "1080p"];
310161
310290
  SEEDANCE_ASPECTS = ["16:9", "9:16", "1:1", "4:3", "3:4", "21:9"];
@@ -310644,6 +310773,7 @@ function agentToolList() {
310644
310773
  var AGENT_CAPABILITIES, legacyCommandId, legacyTools, blobToDataUrl3, provided, legacyTool, legacyToolList;
310645
310774
  var init_agent = __esm({
310646
310775
  "lib/commands/agent.ts"() {
310776
+ "use strict";
310647
310777
  init_types5();
310648
310778
  init_registry();
310649
310779
  init_errors();
@@ -314968,6 +315098,7 @@ var init_motion_shared = __esm({
314968
315098
  speed: external_exports.number().min(MIN_AUDIO_SPEED).max(MAX_AUDIO_SPEED).optional().describe("File ms per clip ms, pitch kept (1: as recorded; 2: twice as fast, half as long)."),
314969
315099
  muted: external_exports.boolean().optional(),
314970
315100
  pan: external_exports.number().min(-1).max(1).optional().describe("\u22121 left \u2026 1 right."),
315101
+ loop: external_exports.boolean().optional().describe("Play it again back to back for as long as the timeline (or the shown screen) plays: background music."),
314971
315102
  name: external_exports.string().min(1).max(200).optional()
314972
315103
  }),
314973
315104
  external_exports.object({
@@ -319188,7 +319319,7 @@ var init_package = __esm({
319188
319319
  "packages/runtime/package.json"() {
319189
319320
  package_default = {
319190
319321
  name: "@popcraft/runtime",
319191
- version: "0.12.0",
319322
+ version: "0.13.0",
319192
319323
  description: "What code exported from PopCraft shares: the meaning of expressions (operators and functions) and, as it grows, the parts of a design's behaviour that are common code rather than generated React.",
319193
319324
  license: "MIT",
319194
319325
  homepage: "https://popcraft.app/docs/exporting/nextjs",
@@ -319814,7 +319945,6 @@ function routesOf(screens) {
319814
319945
  var slug2;
319815
319946
  var init_routes = __esm({
319816
319947
  "lib/document/routes.ts"() {
319817
- "use strict";
319818
319948
  slug2 = (s) => s.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
319819
319949
  }
319820
319950
  });
@@ -320009,7 +320139,6 @@ function fieldPart(nodes, id3) {
320009
320139
  var cleanName2;
320010
320140
  var init_controls = __esm({
320011
320141
  "lib/document/controls.ts"() {
320012
- "use strict";
320013
320142
  cleanName2 = (raw) => raw.trim().replace(/[^A-Za-z0-9_-]+/g, "-").replace(/^-+|-+$/g, "");
320014
320143
  }
320015
320144
  });
@@ -320929,14 +321058,14 @@ function withVariants(doc2, root2, opts, depth2 = 3) {
320929
321058
  const inst = w.type === "INSTANCE" && !real.includes("::") ? doc2.nodes[real] : void 0;
320930
321059
  const main2 = inst?.mainComponentId;
320931
321060
  if (!inst || !main2 || w.variants) continue;
320932
- const reach = variantStates(doc2, main2);
320933
- if (reach.length < 2) continue;
321061
+ const reach2 = variantStates(doc2, main2);
321062
+ if (reach2.length < 2) continue;
320934
321063
  w.variant = main2;
320935
321064
  w.variants = {};
320936
321065
  const parent = inst.parentId ? doc2.nodes[inst.parentId] ?? null : null;
320937
321066
  const record2 = suffix ? doc2.records?.[copyRecord(w.id) ?? ""] : void 0;
320938
321067
  const as3 = record2 ? { ...opts, item: { collectionId: record2.collectionId, recordId: record2.id } } : opts;
320939
- for (const v of reach.slice(1)) {
321068
+ for (const v of reach2.slice(1)) {
320940
321069
  const as2 = { ...doc2, nodes: { ...doc2.nodes, [inst.id]: { ...inst, mainComponentId: v } } };
320941
321070
  const built = buildPlainTree(as2, inst.id, as3, { parent, in3D: false, fold: 0 }).root;
320942
321071
  if (suffix) for (const n of flatten2(built)) n.id += suffix;
@@ -321049,9 +321178,20 @@ function buildWebSite(doc2, opts = {}) {
321049
321178
  const length2 = moves3 ? timelineDuration(doc2.nodes, s.id) : 0;
321050
321179
  const machine = moves3 ? webStateMachine(doc2, s.id) : null;
321051
321180
  const platformer = opts2.static ? null : screenPhysics(doc2, s.id);
321181
+ const sound = opts2.static ? [] : (s.timeline?.audio ?? []).filter((c2) => !c2.muted && (c2.speed ?? 1) === 1).map((c2) => ({
321182
+ src: `media://${c2.mediaHash}`,
321183
+ start: c2.start,
321184
+ in: c2.in,
321185
+ out: c2.out,
321186
+ ...c2.loop ? { loop: true } : {},
321187
+ ...c2.fadeIn ? { fadeIn: c2.fadeIn } : {},
321188
+ ...c2.fadeOut ? { fadeOut: c2.fadeOut } : {},
321189
+ ...c2.gain?.keys.length ? { gain: c2.gain.keys[0].v } : {}
321190
+ }));
321052
321191
  return {
321053
321192
  ...machine ? { machine } : {},
321054
321193
  ...platformer ? { platformer } : {},
321194
+ ...sound.length ? { sound } : {},
321055
321195
  ...length2 > 0 ? { timeline: { duration: length2, stops: stopsOf(frameTimeline(doc2.nodes, s.id).markers, [0, length2]), loops: frameRunsOn(doc2.nodes, s.id) } } : {},
321056
321196
  id: p2.id,
321057
321197
  route: p2.route,
@@ -345516,6 +345656,7 @@ async function previewSite(doc2, pageId2, resolvers, media2 = mediaToDataUrl) {
345516
345656
  }));
345517
345657
  for (const n of styled) for (const k2 in n.style) if (n.style[k2].includes("media://")) n.style[k2] = n.style[k2].replace(MEDIA_REF, (ref3) => urls2.get(ref3) ?? ref3);
345518
345658
  }
345659
+ for (const p2 of site.pages) for (const c2 of p2.sound ?? []) if (isMediaUrl(c2.src)) c2.src = await media2(c2.src).catch(() => null) ?? c2.src;
345519
345660
  if (site.islands) {
345520
345661
  const text = JSON.stringify(site.islands);
345521
345662
  const inIslands = [...new Set(text.match(MEDIA_REF) ?? [])].filter((ref3) => isMediaUrl(ref3));
@@ -345593,9 +345734,13 @@ var resolvers_exports = {};
345593
345734
  __export(resolvers_exports, {
345594
345735
  rendererAssetResolvers: () => rendererAssetResolvers
345595
345736
  });
345596
- function rendererAssetResolvers(doc2, scale = 2) {
345597
- const styles = doc2.styles;
345598
- const alone = (id3) => {
345737
+ function rendererAssetResolvers(source3, scale = 2) {
345738
+ const styles = source3.styles;
345739
+ const shownDoc = (id3) => {
345740
+ const n = source3.nodes[id3];
345741
+ return n && n.visible === false ? { ...source3, nodes: { ...source3.nodes, [id3]: { ...n, visible: true } } } : source3;
345742
+ };
345743
+ const alone = (doc2, id3) => {
345599
345744
  const n = doc2.nodes[id3];
345600
345745
  if (!n) return null;
345601
345746
  const node2 = { ...n, childIds: [] };
@@ -345605,6 +345750,7 @@ function rendererAssetResolvers(doc2, scale = 2) {
345605
345750
  renderSVG: async (id3) => {
345606
345751
  const renderer = getActiveRenderer();
345607
345752
  if (!renderer) return null;
345753
+ const doc2 = shownDoc(id3);
345608
345754
  const node2 = nodeFor(doc2, id3);
345609
345755
  const svg = node2 ? await exportNodeToSVG(renderer, node2, doc2, styles) : null;
345610
345756
  if (svg) return svg;
@@ -345614,8 +345760,9 @@ function rendererAssetResolvers(doc2, scale = 2) {
345614
345760
  renderPNG: async (id3, opts) => {
345615
345761
  const renderer = getActiveRenderer();
345616
345762
  if (!renderer) return null;
345763
+ const doc2 = shownDoc(id3);
345617
345764
  if (opts?.self) {
345618
- const a = alone(id3);
345765
+ const a = alone(doc2, id3);
345619
345766
  const blob = a ? await exportNodeToBlob(renderer, a.node, { format: "PNG", scale, suffix: "" }, a.doc, styles) : null;
345620
345767
  return blob ? asDataURL(blob) : null;
345621
345768
  }
@@ -347776,6 +347923,7 @@ function placeAudioClip(ctx2, compositionId2, o) {
347776
347923
  let next2 = made.composition;
347777
347924
  if (o.fadeIn !== void 0 || o.fadeOut !== void 0) next2 = editAudioClip(next2, made.id, { fadeIn: o.fadeIn, fadeOut: o.fadeOut });
347778
347925
  if (o.gain !== void 0) next2 = setGainKey(next2, made.id, 0, o.gain);
347926
+ if (o.loop) next2 = editAudioClip(next2, made.id, { loop: true });
347779
347927
  ctx2.commit(withComposition(latest, cur.id, next2));
347780
347928
  const clip = next2.audio?.find((a) => a.id === made.id);
347781
347929
  return { summary: `Added "${o.name}" (${(o.duration / 1e3).toFixed(1)} s) to "${cur.name}"`, data: { id: cur.id, clip: made.id, mediaHash: o.mediaHash, duration: o.duration, lane: clip?.lane, start: clip?.start } };
@@ -347788,6 +347936,7 @@ function placeFrameAudioClip(ctx2, frameId, o) {
347788
347936
  let next2 = made.composition;
347789
347937
  if (o.fadeIn !== void 0 || o.fadeOut !== void 0) next2 = editAudioClip(next2, made.id, { fadeIn: o.fadeIn, fadeOut: o.fadeOut });
347790
347938
  if (o.gain !== void 0) next2 = setGainKey(next2, made.id, 0, o.gain);
347939
+ if (o.loop) next2 = editAudioClip(next2, made.id, { loop: true });
347791
347940
  ctx2.commit({ ...latest, nodes: { ...latest.nodes, [frame2.id]: { ...frame2, timeline: next2 } } });
347792
347941
  const clip = next2.audio?.find((a) => a.id === made.id);
347793
347942
  return { summary: `Added "${o.name}" (${(o.duration / 1e3).toFixed(1)} s) to "${frame2.name}"`, data: { frame: frame2.id, clip: made.id, mediaHash: o.mediaHash, duration: o.duration, lane: clip?.lane, start: clip?.start } };
@@ -348348,7 +348497,8 @@ var init_motion2 = __esm({
348348
348497
  lane: external_exports.number().int().min(0).max(MAX_AUDIO_LANES - 1).optional(),
348349
348498
  fadeIn: external_exports.number().min(0).max(36e5).optional(),
348350
348499
  fadeOut: external_exports.number().min(0).max(36e5).optional(),
348351
- gain: external_exports.number().min(0).max(MAX_GAIN).optional().describe("Linear level (1 = as made, 0.3 for a bed under a voice).")
348500
+ gain: external_exports.number().min(0).max(MAX_GAIN).optional().describe("Linear level (1 = as made, 0.3 for a bed under a voice)."),
348501
+ loop: external_exports.boolean().optional().describe("Play it again back to back for as long as the timeline or screen plays (background music).")
348352
348502
  }),
348353
348503
  expose: {
348354
348504
  // The Generate audio dialog: from the AI menu, and the composition strip.
@@ -348382,7 +348532,7 @@ var init_motion2 = __esm({
348382
348532
  } catch (e) {
348383
348533
  throw new ToolError(e instanceof Error ? e.message : String(e));
348384
348534
  }
348385
- const clip = { mediaHash: imported.mediaHash, name: name2, duration: imported.durationMs, start: args2.start, lane: args2.lane, fadeIn: args2.fadeIn, fadeOut: args2.fadeOut, gain: args2.gain };
348535
+ const clip = { mediaHash: imported.mediaHash, name: name2, duration: imported.durationMs, start: args2.start, lane: args2.lane, fadeIn: args2.fadeIn, fadeOut: args2.fadeOut, gain: args2.gain, loop: args2.loop };
348386
348536
  const out = comp ? placeAudioClip(ctx2, comp.id, clip) : placeFrameAudioClip(ctx2, args2.frame, clip);
348387
348537
  return { ...out, summary: out.summary.replace(/^Added/, "Generated"), data: { ...out.data, model: made.modelId } };
348388
348538
  }
@@ -351581,9 +351731,11 @@ var client_exports3 = {};
351581
351731
  __export(client_exports3, {
351582
351732
  LibraryError: () => LibraryError,
351583
351733
  PREVIEW_MAX_BYTES: () => PREVIEW_MAX_BYTES,
351734
+ deleteLibraryMedia: () => deleteLibraryMedia,
351584
351735
  importLibraryPicture: () => importLibraryPicture,
351585
351736
  libraryBlob: () => libraryBlob,
351586
351737
  libraryFile: () => libraryFile,
351738
+ libraryFileName: () => libraryFileName,
351587
351739
  libraryItemName: () => libraryItemName,
351588
351740
  libraryMediaPath: () => libraryMediaPath,
351589
351741
  libraryPreviewUrl: () => libraryPreviewUrl,
@@ -351675,7 +351827,14 @@ async function placeLibraryItem(item, opts = {}) {
351675
351827
  }
351676
351828
  throw new LibraryError("That media cannot be placed.", "bad_type");
351677
351829
  }
351678
- var LibraryError, libraryMediaPath, offline2, imports2, libraryItemName, PREVIEW_MAX_BYTES, PREVIEW_CONCURRENCY, previews, running2, waiting2, previewable;
351830
+ function deleteLibraryMedia(workspace, hash3) {
351831
+ return api(`/api/media/${encodeURIComponent(hash3)}?workspace=${encodeURIComponent(workspace)}`, { method: "DELETE" });
351832
+ }
351833
+ function libraryFileName(item) {
351834
+ const base = (item.fileName || "media").replace(/[\\/:*?"<>|]+/g, "-").trim().slice(0, 60) || "media";
351835
+ return `${base}-${item.hash.slice(0, 8)}.${EXTENSIONS[item.contentType] ?? "bin"}`;
351836
+ }
351837
+ var LibraryError, libraryMediaPath, offline2, imports2, libraryItemName, PREVIEW_MAX_BYTES, PREVIEW_CONCURRENCY, previews, running2, waiting2, previewable, EXTENSIONS;
351679
351838
  var init_client5 = __esm({
351680
351839
  "lib/media-library/client.ts"() {
351681
351840
  init_api4();
@@ -351698,11 +351857,25 @@ var init_client5 = __esm({
351698
351857
  running2 = 0;
351699
351858
  waiting2 = [];
351700
351859
  previewable = (item) => item.contentType.startsWith("image/") && item.size <= PREVIEW_MAX_BYTES;
351860
+ EXTENSIONS = {
351861
+ "image/png": "png",
351862
+ "image/jpeg": "jpg",
351863
+ "image/gif": "gif",
351864
+ "image/webp": "webp",
351865
+ "image/svg+xml": "svg",
351866
+ "image/avif": "avif",
351867
+ "video/mp4": "mp4",
351868
+ "video/webm": "webm",
351869
+ "video/quicktime": "mov",
351870
+ "audio/mpeg": "mp3",
351871
+ "audio/ogg": "ogg",
351872
+ "audio/wav": "wav"
351873
+ };
351701
351874
  }
351702
351875
  });
351703
351876
 
351704
351877
  // lib/commands/media.ts
351705
- var brief3, mediaList, mediaInsert;
351878
+ var brief3, mediaList, mediaInsert, mediaDownload, mediaDelete;
351706
351879
  var init_media = __esm({
351707
351880
  "lib/commands/media.ts"() {
351708
351881
  "use strict";
@@ -351770,6 +351943,57 @@ var init_media = __esm({
351770
351943
  return placeImportedPicture(ctx2, imported, args2, `\u201C${imported.name}\u201D`, { hash: imported.hash });
351771
351944
  }
351772
351945
  });
351946
+ mediaDownload = defineCommand({
351947
+ id: "media.download",
351948
+ title: "Download team media",
351949
+ domain: "media",
351950
+ effect: "none",
351951
+ permission: "read",
351952
+ params: external_exports.object({
351953
+ hash: external_exports.string().min(8).max(128).describe("The item's hash from list_media."),
351954
+ fileKey: external_exports.string().min(1).max(500).describe("The item's fileKey from list_media."),
351955
+ name: external_exports.string().max(200).optional(),
351956
+ contentType: external_exports.string().max(100).optional()
351957
+ }).strict(),
351958
+ // The Library's right-click menu: saves the item's file to the computer.
351959
+ expose: { ui: { label: "Download", palette: false } },
351960
+ run: async (args2) => {
351961
+ const { libraryBlob: libraryBlob2, libraryFileName: libraryFileName2 } = await Promise.resolve().then(() => (init_client5(), client_exports3));
351962
+ const { downloadBlob: downloadBlob2 } = await Promise.resolve().then(() => (init_download(), download_exports));
351963
+ const item = { hash: args2.hash, fileKey: args2.fileKey, fileName: args2.name ?? "media", contentType: args2.contentType ?? "", size: 0, createdAt: "", fileCount: 1, source: null };
351964
+ const blob = await libraryBlob2(item);
351965
+ const name2 = libraryFileName2({ ...item, contentType: args2.contentType || blob.type });
351966
+ downloadBlob2(blob, name2);
351967
+ return { summary: `Downloaded ${name2}`, data: { name: name2, size: blob.size } };
351968
+ }
351969
+ });
351970
+ mediaDelete = defineCommand({
351971
+ id: "media.delete",
351972
+ title: "Delete team media",
351973
+ domain: "media",
351974
+ effect: "none",
351975
+ permission: null,
351976
+ params: external_exports.object({
351977
+ workspace: external_exports.string().min(1).max(200).describe("The workspace id list_media returned."),
351978
+ hash: external_exports.string().min(8).max(128).describe("The item's hash from list_media.")
351979
+ }).strict(),
351980
+ confirm: {
351981
+ level: "confirm",
351982
+ summary: (p2) => `Delete media ${p2.hash.slice(0, 8)}\u2026 from the workspace's library`,
351983
+ detail: () => "Its bytes are removed from the workspace: every file that uses it loses that picture, clip or sound. Nothing can be restored afterwards."
351984
+ },
351985
+ expose: {
351986
+ agent: {
351987
+ name: "delete_media",
351988
+ description: "Remove an item from the team media library (list_media): its bytes leave the workspace, and every file using it loses it. Owners and admins only; the user is asked to approve every call."
351989
+ }
351990
+ },
351991
+ run: async (args2) => {
351992
+ const { deleteLibraryMedia: deleteLibraryMedia2 } = await Promise.resolve().then(() => (init_client5(), client_exports3));
351993
+ const out = await deleteLibraryMedia2(args2.workspace, args2.hash);
351994
+ return { summary: `Deleted it from the library (it was in ${out.files} file${out.files === 1 ? "" : "s"})`, data: out };
351995
+ }
351996
+ });
351773
351997
  }
351774
351998
  });
351775
351999
 
@@ -352098,6 +352322,7 @@ function publishSite(key5, files, opts = {}) {
352098
352322
  var siteStatus, setSiteVersion, renameSite;
352099
352323
  var init_sites = __esm({
352100
352324
  "lib/client/cloud/sites.ts"() {
352325
+ "use strict";
352101
352326
  init_files();
352102
352327
  init_upload2();
352103
352328
  init_api4();
@@ -388540,6 +388765,7 @@ var init_dangerous = __esm({
388540
388765
  init_plugin();
388541
388766
  init_publish();
388542
388767
  init_integration();
388768
+ init_media();
388543
388769
  init_version3();
388544
388770
  init_restricted();
388545
388771
  confirmTierCommands2 = [
@@ -388550,6 +388776,7 @@ var init_dangerous = __esm({
388550
388776
  ...libraryCommands,
388551
388777
  ...publishCommands,
388552
388778
  ...integrationConfirmCommands,
388779
+ mediaDelete,
388553
388780
  pluginRun
388554
388781
  ];
388555
388782
  dangerousCommands = [...confirmTierCommands2, ...restrictedCommands];
@@ -392825,14 +393052,14 @@ var init_site3 = __esm({
392825
393052
  });
392826
393053
 
392827
393054
  // lib/commands/import.ts
392828
- var EXTENSIONS, MAX_BYTES, docImportFile;
393055
+ var EXTENSIONS2, MAX_BYTES, docImportFile;
392829
393056
  var init_import2 = __esm({
392830
393057
  "lib/commands/import.ts"() {
392831
393058
  "use strict";
392832
393059
  init_zod();
392833
393060
  init_errors();
392834
393061
  init_types5();
392835
- EXTENSIONS = [".lottie", ".json", ".pdf", ".popcraft"];
393062
+ EXTENSIONS2 = [".lottie", ".json", ".pdf", ".popcraft"];
392836
393063
  MAX_BYTES = 40 * 1024 * 1024;
392837
393064
  docImportFile = defineCommand({
392838
393065
  id: "doc.importFile",
@@ -392856,7 +393083,7 @@ var init_import2 = __esm({
392856
393083
  },
392857
393084
  run: async (args2, ctx2) => {
392858
393085
  const ext = (args2.name.match(/\.[^.]+$/)?.[0] ?? "").toLowerCase();
392859
- if (!EXTENSIONS.includes(ext)) throw new ToolError(`import_file takes ${EXTENSIONS.join(", ")} files, not "${args2.name}".`);
393086
+ if (!EXTENSIONS2.includes(ext)) throw new ToolError(`import_file takes ${EXTENSIONS2.join(", ")} files, not "${args2.name}".`);
392860
393087
  const sources = [args2.text, args2.base64, args2.url].filter((v) => v !== void 0).length;
392861
393088
  if (sources !== 1) throw new ToolError("Pass exactly one of text, base64 or url.");
392862
393089
  let body;
@@ -393950,6 +394177,8 @@ var init_builtin4 = __esm({
393950
394177
  viewCopyLink,
393951
394178
  presentationOpenAudio,
393952
394179
  visionRegenerateImage,
394180
+ // The Library's right-click Download: saves a team media item to the computer.
394181
+ mediaDownload,
393953
394182
  // Not the palette's either: the plugin surface's alone (a plugin asking the user to generate), registered here
393954
394183
  // with its domain's other commands.
393955
394184
  presentationRequestAudio
@@ -401161,7 +401390,7 @@ init_resources();
401161
401390
  init_desktop();
401162
401391
  init_hypery();
401163
401392
  import { createInterface } from "node:readline";
401164
- var VERSION2 = "0.12.0";
401393
+ var VERSION2 = "0.13.0";
401165
401394
  var HELP = `popcraft ${VERSION2} \u2014 the PopCraft command line
401166
401395
 
401167
401396
  Files (headless, on .popcraft files):
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@popcraft/cli",
3
- "version": "0.12.0",
3
+ "version": "0.13.0",
4
4
  "description": "The PopCraft command line: edit .popcraft files headlessly, call the REST API, publish to the marketplace and manage the desktop app's local plugins, themes, fonts, skills and agents.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://popcraft.app/docs/api/cli",
@@ -34,7 +34,7 @@
34
34
  "esbuild": "0.28.2"
35
35
  },
36
36
  "dependencies": {
37
- "@popcraft/kit": "0.12.0"
37
+ "@popcraft/kit": "0.13.0"
38
38
  },
39
39
  "scripts": {
40
40
  "build": "node build.mjs",