hyperframes 0.8.118 → 0.8.120
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/{add-3S6KP4AK.js → add-SYG3UXKX.js} +14 -14
- package/dist/{animatedGifPrep-Q43TI2YV.js → animatedGifPrep-RH5AEVNX.js} +5 -5
- package/dist/{asset-EMLJLATM.js → asset-P6K7U3L6.js} +2 -2
- package/dist/{assetCataloger-Y23LGNYN.js → assetCataloger-QX37JS5D.js} +2 -2
- package/dist/{auth-4Z7VZPCZ.js → auth-TCX6TGIH.js} +4 -4
- package/dist/{autoUpdate-PGW6OY5X.js → autoUpdate-YGT7MYDU.js} +2 -2
- package/dist/{backgroundChecks-O6QYKWTF.js → backgroundChecks-CCDNX6P2.js} +3 -3
- package/dist/backgroundChecksWorker.js +3 -3
- package/dist/{batchRender-TEZOU3YE.js → batchRender-BBBUJETN.js} +3 -3
- package/dist/{beats-APZ6AZGK.js → beats-HNU6TRID.js} +13 -13
- package/dist/{benchmark-F5L6KI64.js → benchmark-UEMJYRLY.js} +11 -11
- package/dist/{browser-Y5BMYRTQ.js → browser-CZJK4WQR.js} +8 -8
- package/dist/{bundleWithLocalizedFonts-GSZWNYEA.js → bundleWithLocalizedFonts-ZLXYM43M.js} +2 -2
- package/dist/{capture-ZBBG543M.js → capture-4WXKXCCV.js} +8 -8
- package/dist/{capture-K4HV4DA6.js → capture-6NN3YJBF.js} +2 -2
- package/dist/{catalog-H2NX2XRP.js → catalog-G3C7EIL3.js} +14 -14
- package/dist/{check-CCUKKQ2W.js → check-KTYPDNJD.js} +33 -33
- package/dist/{checkBrowser-VGS4QPIS.js → checkBrowser-MJAN5LSM.js} +31 -31
- package/dist/{chunk-I47W3MA3.js → chunk-2WKWEB4T.js} +1 -1
- package/dist/{chunk-QJ3ODWQ3.js → chunk-4IWDF5OL.js} +4 -4
- package/dist/{chunk-GCARCDLC.js → chunk-4PTKEI2C.js} +1 -1
- package/dist/{chunk-7CXLMMUA.js → chunk-5IABQ7OX.js} +1 -1
- package/dist/{chunk-XJOUFF2F.js → chunk-6A332WKF.js} +11 -11
- package/dist/{chunk-D6YMMYSZ.js → chunk-6ZX3YCCU.js} +21 -21
- package/dist/{chunk-BYYKHP54.js → chunk-7N3IODU7.js} +1 -1
- package/dist/{chunk-WXQLHFXI.js → chunk-A45JNRYR.js} +1 -1
- package/dist/{chunk-YO6TVUAJ.js → chunk-B3MQEZBK.js} +1 -1
- package/dist/{chunk-R6BVKVII.js → chunk-BKQXLO55.js} +1 -1
- package/dist/{chunk-PSGDNMM6.js → chunk-BXCMXMJQ.js} +1 -1
- package/dist/{chunk-XI77IJXJ.js → chunk-CK2YS3E3.js} +5 -5
- package/dist/{chunk-KUTZBSIW.js → chunk-DL347PC3.js} +2 -2
- package/dist/{chunk-SVUKHYTG.js → chunk-EFC3DCJL.js} +1 -1
- package/dist/{chunk-WEATBQTR.js → chunk-EOVYQ3IG.js} +21 -1
- package/dist/{chunk-TOS2MNWW.js → chunk-FNX7RJIJ.js} +2 -2
- package/dist/{chunk-K4SAACM7.js → chunk-GVJMAHXQ.js} +2 -2
- package/dist/{chunk-DNXD7TOA.js → chunk-I465DBM6.js} +27 -12
- package/dist/chunk-IGLEPPTN.js +24 -0
- package/dist/{chunk-FQ4EMFVL.js → chunk-IJ2O4BLJ.js} +3 -3
- package/dist/{chunk-DA5FLVIF.js → chunk-IUBZ3DSO.js} +2 -2
- package/dist/{chunk-MVWXSRY6.js → chunk-JH556Q42.js} +69 -21
- package/dist/{chunk-CNQ565U6.js → chunk-KWABBJYI.js} +2 -2
- package/dist/{chunk-TLDEZQG2.js → chunk-LHU6KXWL.js} +1 -1
- package/dist/{chunk-JR27ESBU.js → chunk-LIPKCOYU.js} +2 -2
- package/dist/{chunk-DI6EGQVC.js → chunk-LJXFGHPO.js} +3 -3
- package/dist/{chunk-HONQFJNH.js → chunk-LP3KFEVQ.js} +92 -43
- package/dist/{chunk-PXHMTKFZ.js → chunk-NP5P2A2K.js} +2 -2
- package/dist/{chunk-N7PX6IO4.js → chunk-OI3IIR2X.js} +1 -1
- package/dist/{chunk-PDAPLJXH.js → chunk-OLFFCC2D.js} +1 -1
- package/dist/{chunk-GCPMAZQ2.js → chunk-OV62R47Q.js} +1 -1
- package/dist/{chunk-5AREBP56.js → chunk-OWMGDQBZ.js} +1 -1
- package/dist/{chunk-MWCROBLZ.js → chunk-PCL5KCT7.js} +8 -8
- package/dist/{chunk-OTCO5QAK.js → chunk-PPTHGZTG.js} +1 -1
- package/dist/{chunk-W4UNEYYH.js → chunk-QWD3NM22.js} +1 -1
- package/dist/chunk-SHB5VDMH.js +51 -0
- package/dist/chunk-SHLFJFPM.js +3541 -0
- package/dist/{chunk-ZRXUZ2NU.js → chunk-SVI32JAG.js} +3 -3
- package/dist/{chunk-UCKAUBNA.js → chunk-TOOQJPUJ.js} +5 -5
- package/dist/{chunk-U7FPFCI7.js → chunk-U3CILSBM.js} +1 -1
- package/dist/{chunk-JPRW4XXE.js → chunk-U7AMFQ6G.js} +1 -1
- package/dist/{chunk-FEUS6YMC.js → chunk-UDYR6TIQ.js} +7 -7
- package/dist/{chunk-KDI2GPBM.js → chunk-UOKW7DPN.js} +1 -1
- package/dist/{chunk-XJTER22X.js → chunk-V2VNJNX6.js} +1 -1
- package/dist/{chunk-PZ3SCTYJ.js → chunk-V5T6IA7D.js} +1 -1
- package/dist/{chunk-MNC2KEC6.js → chunk-WJP3UOB3.js} +1 -1
- package/dist/{chunk-Y523LGYR.js → chunk-WMCV6DHA.js} +2 -2
- package/dist/{chunk-FWZHAEIF.js → chunk-XUNOKLEJ.js} +3 -3
- package/dist/{chunk-RLYTIMTS.js → chunk-Y6W4DVPS.js} +4 -37
- package/dist/{chunk-LR4O57S2.js → chunk-YV5INYEM.js} +11 -11
- package/dist/{chunk-RZAXPDIT.js → chunk-ZTZ7NCJT.js} +1 -1
- package/dist/{clean-WWCCHAD6.js → clean-AGTDSSLO.js} +18 -18
- package/dist/cli.js +52 -70
- package/dist/{cloud-EAJRM253.js → cloud-TIKQ43CO.js} +4 -4
- package/dist/{cloudrun-6Q2EJYVH.js → cloudrun-OQLPEWGP.js} +3 -3
- package/dist/{compare-XQ6ZW7VX.js → compare-2B7W2HXM.js} +29 -29
- package/dist/{compiler-66K2RT7V.js → compiler-GPUSYMA6.js} +2 -2
- package/dist/{component-55HRN5XR.js → component-ZQIN33DC.js} +3 -3
- package/dist/{compositions-GHHXSBHE.js → compositions-D6JAIKFJ.js} +10 -10
- package/dist/{delete-EM7MGX3J.js → delete-UWZ6BBQI.js} +7 -6
- package/dist/{deterministicFonts-O7BTFDJU.js → deterministicFonts-ITMUXWD2.js} +2 -2
- package/dist/{dist-5CN37P7P.js → dist-NP53GO3N.js} +2 -2
- package/dist/{doctor-DQDHQZXD.js → doctor-LHUS7OQG.js} +9 -9
- package/dist/dotEnv-AI4SYVTX.js +39 -0
- package/dist/{events-Y6SCC5LR.js → events-CNSBSROB.js} +7 -7
- package/dist/{events-SQRZ2NYO.js → events-EA2PNDU6.js} +8 -8
- package/dist/{feedback-R5KCVSR5.js → feedback-RAOT4ZX6.js} +41 -17
- package/dist/{figma-6CHD45P2.js → figma-HHALPQPX.js} +3 -3
- package/dist/fontLocalizeCli.js +9 -9
- package/dist/{get-3T52JGUQ.js → get-2VHYWD5M.js} +7 -6
- package/dist/{gpuPolicy-AXT3ZIXS.js → gpuPolicy-WWBLJO6C.js} +5 -5
- package/dist/{grade-compare-SPWLJSY2.js → grade-compare-ZKYGIKRN.js} +25 -25
- package/dist/{help-ZR5MP5UU.js → help-YXXIXAVR.js} +1 -1
- package/dist/{history-F2MOFF25.js → history-IFZM4MIB.js} +18 -18
- package/dist/hyperframe-runtime.js +53 -53
- package/dist/hyperframe.manifest.json +1 -1
- package/dist/hyperframe.runtime.iife.js +53 -53
- package/dist/hyperframes-player.global.js +1 -1
- package/dist/{info-BH6XM6PU.js → info-6TZU6FRJ.js} +10 -10
- package/dist/{init-TFQQ54JU.js → init-5DPNU4VR.js} +21 -21
- package/dist/{inspect-GL35XBUV.js → inspect-LASYMXFA.js} +26 -26
- package/dist/{installer-CJS2BO3E.js → installer-EUT2OZTH.js} +4 -4
- package/dist/{keyframes-6WRSQWF3.js → keyframes-BS6D4QMB.js} +11 -11
- package/dist/{lambda-GWFX55EE.js → lambda-AHKA33RE.js} +4 -4
- package/dist/{layout-Q7GJFMWL.js → layout-HMJ5I362.js} +26 -26
- package/dist/{lint-AGVDEHRD.js → lint-E2DTFSA5.js} +13 -13
- package/dist/{list-P56UBPBI.js → list-C3CXWSEA.js} +7 -6
- package/dist/{login-DGA2JL24.js → login-W276LNGF.js} +6 -6
- package/dist/{logout-HJQT42RL.js → logout-Q654A3SI.js} +2 -2
- package/dist/{media-treatment-HX2PRGEN.js → media-treatment-XECAXDZD.js} +13 -13
- package/dist/{models-LM3OQBZK.js → models-6YWOFGV2.js} +8 -8
- package/dist/{motionShot-RFT7CMBB.js → motionShot-TNMJ2TNL.js} +10 -10
- package/dist/{normalize-audio-E3RFEHHI.js → normalize-audio-JTK53ZDZ.js} +13 -13
- package/dist/{pipeline-HDOQRVOB.js → pipeline-HYULUMEV.js} +5 -5
- package/dist/{play-2GTIXCRQ.js → play-PAJQYG2D.js} +29 -29
- package/dist/{preflight-UDMLHFS5.js → preflight-KJHZ46FX.js} +6 -6
- package/dist/{present-LF2OM7BN.js → present-TMFT5KD6.js} +18 -18
- package/dist/{preview-FBW5SEQD.js → preview-4HHLUOFB.js} +26 -26
- package/dist/{producer-X4YXKWD5.js → producer-6WPA3U6C.js} +1 -1
- package/dist/{projectConfig-ST22CO2D.js → projectConfig-A4DXJF4P.js} +6 -6
- package/dist/{publication-FZY2NLGL.js → publication-QY2H23JU.js} +2 -2
- package/dist/{publish-CI3UZKGR.js → publish-6RRDDVPK.js} +39 -33
- package/dist/{refresh-IK6LUV5Z.js → refresh-K24ETHMA.js} +2 -2
- package/dist/{remove-background-ZBSZ3HAG.js → remove-background-O2J7EVEN.js} +6 -6
- package/dist/{render-ECICJRKC.js → render-N4HBJR46.js} +27 -27
- package/dist/{render-PT5KRN5E.js → render-QUQJP5PP.js} +3 -3
- package/dist/{render-JKL6KFIS.js → render-WFBNU2KD.js} +21 -20
- package/dist/{render-batch-S4MKBU4I.js → render-batch-OS4UEZA4.js} +3 -3
- package/dist/{renderCancellation-4X2JXB54.js → renderCancellation-RWWLGOOD.js} +5 -5
- package/dist/{resolver-IAWRYTA6.js → resolver-IM46W362.js} +4 -4
- package/dist/{sherpa-CL4LNREK.js → sherpa-GCD3QEO6.js} +10 -10
- package/dist/{skills-F4ZESP7J.js → skills-D4HKC2WV.js} +10 -10
- package/dist/{skillsUpdateCheck-VRWBVQRX.js → skillsUpdateCheck-IPJRWH4Z.js} +3 -3
- package/dist/{snapshot-ORYO5ZGK.js → snapshot-A7BIVQUX.js} +31 -31
- package/dist/{src-HJYZAMBR.js → src-POL5BSEV.js} +8 -8
- package/dist/{src-5DVUT7WJ.js → src-QOQJLFDK.js} +4 -4
- package/dist/{staticProjectServer-PHOMSVUD.js → staticProjectServer-BM2TZYJY.js} +14 -14
- package/dist/{status-AOAHP4RA.js → status-I7R2ATRZ.js} +7 -7
- package/dist/studio/assets/{hyperframes-player-CnpIuNRl.js → hyperframes-player-i4gqkhjz.js} +1 -1
- package/dist/studio/assets/{index-BZ23-h1_.js → index-C7LHDM18.js} +1 -1
- package/dist/studio/assets/{index-B4SbAADe.js → index-Ce3Lr-Gt.js} +174 -174
- package/dist/studio/assets/{index-FeRU6G3G.js → index-uWOhRqxe.js} +1 -1
- package/dist/studio/index.d.ts +5 -1
- package/dist/studio/index.html +1 -1
- package/dist/studio/index.js +72 -87
- package/dist/studio/index.js.map +1 -1
- package/dist/{studio-api-HAY3XELJ.js → studio-api-GWTH7IPD.js} +8 -8
- package/dist/{studioServer-VZYT5MYF.js → studioServer-KB3KCVSZ.js} +40 -40
- package/dist/{system-U22WZ4QS.js → system-QUFWS7NN.js} +5 -5
- package/dist/{telemetry-CLPATL2D.js → telemetry-5WHZVQFM.js} +8 -8
- package/dist/{timeline-5GFZ3VTQ.js → timeline-KM5YF4WX.js} +18 -18
- package/dist/{tokens-MZZ4FLYN.js → tokens-VUPKFWHG.js} +2 -2
- package/dist/{transcribe-C6JZ3YM4.js → transcribe-4IJPHM33.js} +11 -11
- package/dist/{transcribe-FIRUSTL7.js → transcribe-E7RAUZ2W.js} +6 -6
- package/dist/{updateCheck-WOW7SP7I.js → updateCheck-JY2WCSMC.js} +2 -2
- package/dist/{upgrade-I54CASRP.js → upgrade-QWBPPGTJ.js} +2 -2
- package/dist/{urlDownloader-BK3MFIPW.js → urlDownloader-5FUUYAOT.js} +4 -4
- package/dist/{validate-IZNFBUOL.js → validate-5LJ6TDCF.js} +15 -15
- package/dist/{video-3JQY7QPM.js → video-RTC4AXZB.js} +5 -5
- package/package.json +1 -1
- package/dist/chunk-L6TT37IY.js +0 -3541
- package/dist/{chunk-AIYKVE4Y.js → chunk-2GKO3X7F.js} +3 -3
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { createRequire as __hf_createRequire } from "node:module";
|
|
2
|
+
import { fileURLToPath as __hf_fileURLToPath } from "node:url";
|
|
3
|
+
import { dirname as __hf_dirname } from "node:path";
|
|
4
|
+
var require = __hf_createRequire(import.meta.url);
|
|
5
|
+
var __filename = __hf_fileURLToPath(import.meta.url);
|
|
6
|
+
var __dirname = __hf_dirname(__filename);
|
|
7
|
+
|
|
8
|
+
// src/utils/feedbackSource.ts
|
|
9
|
+
var SOURCES = ["person", "agent"];
|
|
10
|
+
function parseFeedbackSource(raw) {
|
|
11
|
+
if (raw === void 0) return void 0;
|
|
12
|
+
const source = raw.trim();
|
|
13
|
+
return SOURCES.includes(source) ? source : null;
|
|
14
|
+
}
|
|
15
|
+
var FEEDBACK_EMAIL_ENV = "HYPERFRAMES_FEEDBACK_EMAIL";
|
|
16
|
+
function feedbackEmail(env = process.env) {
|
|
17
|
+
return env[FEEDBACK_EMAIL_ENV]?.trim() || void 0;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export {
|
|
21
|
+
parseFeedbackSource,
|
|
22
|
+
FEEDBACK_EMAIL_ENV,
|
|
23
|
+
feedbackEmail
|
|
24
|
+
};
|
|
@@ -8,16 +8,16 @@ import {
|
|
|
8
8
|
flush,
|
|
9
9
|
shouldTrack,
|
|
10
10
|
trackEvent
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-LJXFGHPO.js";
|
|
12
12
|
import {
|
|
13
13
|
getPowerState
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-U7AMFQ6G.js";
|
|
15
15
|
import {
|
|
16
16
|
CliRuntimeError
|
|
17
17
|
} from "./chunk-PBN6GBJE.js";
|
|
18
18
|
import {
|
|
19
19
|
redactTelemetryString
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-2WKWEB4T.js";
|
|
21
21
|
import {
|
|
22
22
|
readConfig
|
|
23
23
|
} from "./chunk-XUXGIA7H.js";
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
renderFrameIdForRenderId,
|
|
23
23
|
resolveAuthoredTimingWindow,
|
|
24
24
|
toFps
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-2WKWEB4T.js";
|
|
26
26
|
import {
|
|
27
27
|
AUDIO_GROUP_RENDER_ID_ATTR,
|
|
28
28
|
COLOR_GRADING_SOURCE_HIDDEN_ATTR,
|
|
@@ -52,7 +52,7 @@ import {
|
|
|
52
52
|
shiftRateLane,
|
|
53
53
|
sourceTimeAt,
|
|
54
54
|
timeAtSourceTime
|
|
55
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-SHLFJFPM.js";
|
|
56
56
|
import {
|
|
57
57
|
chromeMajorCeiling,
|
|
58
58
|
exceedsChromeCeiling
|
|
@@ -4,10 +4,15 @@ import { dirname as __hf_dirname } from "node:path";
|
|
|
4
4
|
var require = __hf_createRequire(import.meta.url);
|
|
5
5
|
var __filename = __hf_fileURLToPath(import.meta.url);
|
|
6
6
|
var __dirname = __hf_dirname(__filename);
|
|
7
|
+
import {
|
|
8
|
+
refreshIfNeeded
|
|
9
|
+
} from "./chunk-SHB5VDMH.js";
|
|
7
10
|
import {
|
|
8
11
|
buildAuthHeaders,
|
|
12
|
+
isAuthError,
|
|
13
|
+
isTokenExpired,
|
|
9
14
|
tryResolveCredential
|
|
10
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-I465DBM6.js";
|
|
11
16
|
import {
|
|
12
17
|
CSS_URL_RE,
|
|
13
18
|
isNonRelativeUrl,
|
|
@@ -191,6 +196,36 @@ function getUploadHeaders(data, uploadUrl, contentType, archiveByteLength) {
|
|
|
191
196
|
async function readJson(response) {
|
|
192
197
|
return response.clone().json().catch(() => null);
|
|
193
198
|
}
|
|
199
|
+
var CredentialRejectedError = class extends Error {
|
|
200
|
+
};
|
|
201
|
+
async function metadataRequestError(response, fallback) {
|
|
202
|
+
const message = await readErrorMessage(response, fallback);
|
|
203
|
+
return response.status === 401 ? new CredentialRejectedError(message) : new Error(message);
|
|
204
|
+
}
|
|
205
|
+
var LOGIN_EXPIRED = "Your login expired. Run hyperframes auth login, then publish again.";
|
|
206
|
+
var LOGIN_CHANGED = "Your login changed during publish. Run publish again.";
|
|
207
|
+
var API_KEY_ENV_VAR = { env: "HEYGEN_API_KEY", env_alias: "HYPERFRAMES_API_KEY" };
|
|
208
|
+
function rejectedCredentialMessage(credential) {
|
|
209
|
+
if (credential.type === "api_key" && (credential.source === "env" || credential.source === "env_alias")) {
|
|
210
|
+
return `${API_KEY_ENV_VAR[credential.source]} was rejected. Fix or unset it, then publish again.`;
|
|
211
|
+
}
|
|
212
|
+
return LOGIN_EXPIRED;
|
|
213
|
+
}
|
|
214
|
+
async function resolvePublishCredential(checked) {
|
|
215
|
+
try {
|
|
216
|
+
const credential = checked === void 0 ? await tryResolveCredential() : checked;
|
|
217
|
+
if (!credential) return null;
|
|
218
|
+
const expired = credential.type === "oauth" && isTokenExpired(credential.expires_at, /* @__PURE__ */ new Date());
|
|
219
|
+
if (expired && !credential.refresh_token) throw new Error(LOGIN_EXPIRED);
|
|
220
|
+
return await refreshIfNeeded(expired ? { ...credential, refreshable: true } : credential);
|
|
221
|
+
} catch (error) {
|
|
222
|
+
if (isAuthError(error) && (error.code === "REFRESH_FAILED" || error.code === "LOGIN_EXPIRED")) {
|
|
223
|
+
throw new Error(LOGIN_EXPIRED);
|
|
224
|
+
}
|
|
225
|
+
if (isAuthError(error) && error.code === "LOGIN_CHANGED") throw new Error(LOGIN_CHANGED);
|
|
226
|
+
throw error;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
194
229
|
async function readErrorMessage(response, fallback) {
|
|
195
230
|
const contentType = response.headers.get("content-type") || "";
|
|
196
231
|
if (contentType.includes("application/json")) {
|
|
@@ -477,7 +512,7 @@ async function publishProjectArchiveDirect(apiBaseUrl, title, archive, isPublic,
|
|
|
477
512
|
const payload = await readJson(response);
|
|
478
513
|
const publishedProject = parsePublishedProjectResponse(payload);
|
|
479
514
|
if (!response.ok || !publishedProject) {
|
|
480
|
-
throw
|
|
515
|
+
throw await metadataRequestError(response, "Failed to publish project");
|
|
481
516
|
}
|
|
482
517
|
return publishedProject;
|
|
483
518
|
}
|
|
@@ -526,7 +561,7 @@ async function publishProjectArchiveStaged(apiBaseUrl, title, archive, isPublic,
|
|
|
526
561
|
const uploadPayload = await readJson(uploadResponse);
|
|
527
562
|
const stagedUpload = parseStagedUploadResponse(uploadPayload, archive.buffer.byteLength);
|
|
528
563
|
if (!uploadResponse.ok || !stagedUpload) {
|
|
529
|
-
throw
|
|
564
|
+
throw await metadataRequestError(uploadResponse, "Failed to prepare project upload");
|
|
530
565
|
}
|
|
531
566
|
await uploadArchiveToPresignedUrl(stagedUpload, archive);
|
|
532
567
|
const completeResponse = await fetchForPublish(
|
|
@@ -551,7 +586,7 @@ async function publishProjectArchiveStaged(apiBaseUrl, title, archive, isPublic,
|
|
|
551
586
|
const completePayload = await readJson(completeResponse);
|
|
552
587
|
const publishedProject = parsePublishedProjectResponse(completePayload);
|
|
553
588
|
if (!completeResponse.ok || !publishedProject) {
|
|
554
|
-
throw
|
|
589
|
+
throw await metadataRequestError(completeResponse, "Failed to publish project");
|
|
555
590
|
}
|
|
556
591
|
return publishedProject;
|
|
557
592
|
}
|
|
@@ -560,27 +595,38 @@ async function publishProjectArchive(projectDir, opts = {}) {
|
|
|
560
595
|
const title = basename(projectDir);
|
|
561
596
|
const archive = opts.archive ?? createPublishArchive(projectDir);
|
|
562
597
|
const apiBaseUrl = getPublishApiBaseUrl();
|
|
563
|
-
const credential = await
|
|
598
|
+
const credential = await resolvePublishCredential(opts.credential);
|
|
564
599
|
const authHeaders = credential ? buildAuthHeaders(credential) : {};
|
|
565
600
|
const projectId = credential ? opts.projectId : void 0;
|
|
566
601
|
const spaceId = credential ? opts.spaceId : void 0;
|
|
567
602
|
const metadataHeaders = spaceId ? { ...authHeaders, "x-space-id": spaceId } : authHeaders;
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
603
|
+
let result;
|
|
604
|
+
try {
|
|
605
|
+
result = await publishProjectArchiveStaged(
|
|
606
|
+
apiBaseUrl,
|
|
607
|
+
title,
|
|
608
|
+
archive,
|
|
609
|
+
isPublic,
|
|
610
|
+
metadataHeaders,
|
|
611
|
+
projectId
|
|
612
|
+
) ?? await publishProjectArchiveDirect(
|
|
613
|
+
apiBaseUrl,
|
|
614
|
+
title,
|
|
615
|
+
archive,
|
|
616
|
+
isPublic,
|
|
617
|
+
metadataHeaders,
|
|
618
|
+
projectId
|
|
619
|
+
);
|
|
620
|
+
if (credential?.type === "oauth" && !result.claimed) {
|
|
621
|
+
throw new CredentialRejectedError("unclaimed publish");
|
|
622
|
+
}
|
|
623
|
+
} catch (error) {
|
|
624
|
+
if (error instanceof CredentialRejectedError && credential) {
|
|
625
|
+
throw new Error(rejectedCredentialMessage(credential));
|
|
626
|
+
}
|
|
627
|
+
throw error;
|
|
628
|
+
}
|
|
629
|
+
if (result.claimed) {
|
|
584
630
|
writeProjectLink(projectDir, { projectId: result.projectId, url: result.url });
|
|
585
631
|
}
|
|
586
632
|
return result;
|
|
@@ -591,6 +637,8 @@ export {
|
|
|
591
637
|
ensureProjectId,
|
|
592
638
|
readTeamProject,
|
|
593
639
|
writeTeamProject,
|
|
640
|
+
API_KEY_ENV_VAR,
|
|
641
|
+
resolvePublishCredential,
|
|
594
642
|
rewriteHtmlAttributes,
|
|
595
643
|
buildPublishFileMap,
|
|
596
644
|
zipPublishFileMap,
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
import {
|
|
17
17
|
DEFAULT_VP9_CPU_USED,
|
|
18
18
|
renderProvenanceArgs
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-IUBZ3DSO.js";
|
|
20
20
|
import {
|
|
21
21
|
loadOptionalPackage
|
|
22
22
|
} from "./chunk-XT5P4QMO.js";
|
|
@@ -202,7 +202,7 @@ function inferInputKind(inputPath) {
|
|
|
202
202
|
}
|
|
203
203
|
async function probeMedia(inputPath) {
|
|
204
204
|
const isImage = inferInputKind(inputPath) === "image";
|
|
205
|
-
const engine = await import("./src-
|
|
205
|
+
const engine = await import("./src-QOQJLFDK.js");
|
|
206
206
|
const meta = await engine.extractMediaMetadata(inputPath);
|
|
207
207
|
if (isImage) {
|
|
208
208
|
return { width: meta.width, height: meta.height, fps: 0, frameCount: 1 };
|
|
@@ -6,8 +6,8 @@ var __filename = __hf_fileURLToPath(import.meta.url);
|
|
|
6
6
|
var __dirname = __hf_dirname(__filename);
|
|
7
7
|
|
|
8
8
|
// src/version.ts
|
|
9
|
-
var VERSION = true ? "0.8.
|
|
10
|
-
var PRODUCER_VERSION = true ? "0.8.
|
|
9
|
+
var VERSION = true ? "0.8.120" : "0.0.0-dev";
|
|
10
|
+
var PRODUCER_VERSION = true ? "0.8.120" : "0.0.0-dev";
|
|
11
11
|
|
|
12
12
|
export {
|
|
13
13
|
VERSION,
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
} from "./chunk-ZTZA4UWZ.js";
|
|
13
13
|
import {
|
|
14
14
|
getSystemMeta
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-U7AMFQ6G.js";
|
|
16
16
|
import {
|
|
17
17
|
getInvocationId
|
|
18
18
|
} from "./chunk-54HJ63Q2.js";
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
evaluateCanary,
|
|
24
24
|
findCanary,
|
|
25
25
|
parseCanaryOverride
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-2WKWEB4T.js";
|
|
27
27
|
import {
|
|
28
28
|
hostAnswers
|
|
29
29
|
} from "./chunk-K4WIOZFP.js";
|
|
@@ -37,7 +37,7 @@ import {
|
|
|
37
37
|
} from "./chunk-XUXGIA7H.js";
|
|
38
38
|
import {
|
|
39
39
|
VERSION
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-LIPKCOYU.js";
|
|
41
41
|
|
|
42
42
|
// src/telemetry/transport.ts
|
|
43
43
|
import { spawn } from "child_process";
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
dedupeClonedCompositionId,
|
|
10
10
|
findTargetElement,
|
|
11
11
|
isHTMLElement,
|
|
12
|
+
nextUniqueId,
|
|
12
13
|
parseSourceDocument,
|
|
13
14
|
patchElementInHtml,
|
|
14
15
|
probeElementInSource,
|
|
@@ -20,20 +21,20 @@ import {
|
|
|
20
21
|
splitElementInHtml,
|
|
21
22
|
unwrapElementsFromHtml,
|
|
22
23
|
wrapElementsInHtml
|
|
23
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-6ZX3YCCU.js";
|
|
24
25
|
import {
|
|
25
26
|
atomicTempPath,
|
|
26
27
|
createFileAtomically,
|
|
27
28
|
isAtomicTempPath,
|
|
28
29
|
replaceFileAtomically
|
|
29
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-EOVYQ3IG.js";
|
|
30
31
|
import {
|
|
31
32
|
DEFAULT_TARGET_LUFS,
|
|
32
33
|
absoluteLoudnessPlan,
|
|
33
34
|
measureAudio,
|
|
34
35
|
requiredFfmpeg,
|
|
35
36
|
resolveLocalAudioPath
|
|
36
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-BKQXLO55.js";
|
|
37
38
|
import {
|
|
38
39
|
PROXY_PARAMS_VERSION,
|
|
39
40
|
PROXY_PENDING_RETRY_AFTER_SECONDS,
|
|
@@ -59,7 +60,7 @@ import {
|
|
|
59
60
|
shouldPrewarmProxy,
|
|
60
61
|
waitForProxy,
|
|
61
62
|
walkDir
|
|
62
|
-
} from "./chunk-
|
|
63
|
+
} from "./chunk-OWMGDQBZ.js";
|
|
63
64
|
import {
|
|
64
65
|
findTimelineScript,
|
|
65
66
|
parseGsapScriptAcorn
|
|
@@ -80,7 +81,7 @@ import {
|
|
|
80
81
|
motionPathPluginUrl,
|
|
81
82
|
parseFps,
|
|
82
83
|
sameInstant
|
|
83
|
-
} from "./chunk-
|
|
84
|
+
} from "./chunk-2WKWEB4T.js";
|
|
84
85
|
import {
|
|
85
86
|
MagicString,
|
|
86
87
|
VALID_CANVAS_RESOLUTIONS,
|
|
@@ -89,7 +90,7 @@ import {
|
|
|
89
90
|
import {
|
|
90
91
|
addScenePartsManifest,
|
|
91
92
|
ensureHfIds
|
|
92
|
-
} from "./chunk-
|
|
93
|
+
} from "./chunk-5IABQ7OX.js";
|
|
93
94
|
import {
|
|
94
95
|
findStartTags,
|
|
95
96
|
injectScriptsIntoHtml,
|
|
@@ -99,7 +100,7 @@ import {
|
|
|
99
100
|
resolveRateSpec,
|
|
100
101
|
sourceTimeAt,
|
|
101
102
|
stripEmbeddedRuntimeScripts
|
|
102
|
-
} from "./chunk-
|
|
103
|
+
} from "./chunk-SHLFJFPM.js";
|
|
103
104
|
import {
|
|
104
105
|
ProjectRootMissingError,
|
|
105
106
|
folderGone,
|
|
@@ -5226,18 +5227,18 @@ import { createHash as createHash32 } from "crypto";
|
|
|
5226
5227
|
import { existsSync as existsSync7, readFileSync as readFileSync10, statSync as statSync7 } from "fs";
|
|
5227
5228
|
import { join as join12, resolve as resolve52 } from "path";
|
|
5228
5229
|
import { execFile } from "child_process";
|
|
5229
|
-
import {
|
|
5230
|
-
import { dirname as dirname52, join as join13, relative as relative4, sep as sep22 } from "path";
|
|
5230
|
+
import { readFileSync as readFileSync11, rmSync as rmSync5, statSync as statSync8 } from "fs";
|
|
5231
|
+
import { basename as basename22, dirname as dirname52, join as join13, relative as relative4, sep as sep22 } from "path";
|
|
5231
5232
|
import { createHash as createHash5, randomBytes } from "crypto";
|
|
5232
5233
|
import { existsSync as existsSync8 } from "fs";
|
|
5233
5234
|
import { existsSync as existsSync9, readFileSync as readFileSync12, statSync as statSync9 } from "fs";
|
|
5234
5235
|
import { join as join14, resolve as resolve6 } from "path";
|
|
5235
5236
|
import { execFile as execFile2, spawn as spawn2 } from "child_process";
|
|
5236
5237
|
import { promisify } from "util";
|
|
5237
|
-
import { closeSync as
|
|
5238
|
+
import { closeSync as closeSync32, constants as constants3, fstatSync as fstatSync3, openSync as openSync32, readSync } from "fs";
|
|
5238
5239
|
import { streamSSE as streamSSE2 } from "hono/streaming";
|
|
5239
5240
|
import { existsSync as existsSync10 } from "fs";
|
|
5240
|
-
import { basename as
|
|
5241
|
+
import { basename as basename3, dirname as dirname6, extname as extname2, join as join15, posix } from "path";
|
|
5241
5242
|
import { existsSync as existsSync11, readFileSync as readFileSync13 } from "fs";
|
|
5242
5243
|
import { homedir as homedir2 } from "os";
|
|
5243
5244
|
import { join as join16 } from "path";
|
|
@@ -6021,6 +6022,21 @@ function foldElementPatches(originalContent, patches) {
|
|
|
6021
6022
|
return { content, matched };
|
|
6022
6023
|
}
|
|
6023
6024
|
var PATCH_CONFLICT_ATTEMPTS = 3;
|
|
6025
|
+
var ID_ATTRIBUTE = /[\s"'/]id\s*=\s*(?=(?:"([^"]*)"|'([^']*)'|([^\s"'=<>`]+)))/gi;
|
|
6026
|
+
function projectHtmlIds(projectDir) {
|
|
6027
|
+
const ids = /* @__PURE__ */ new Set();
|
|
6028
|
+
for (const rel of walkDir(projectDir)) {
|
|
6029
|
+
if (!rel.endsWith(".html") || isInHiddenOrVendorDir(rel)) continue;
|
|
6030
|
+
let html;
|
|
6031
|
+
try {
|
|
6032
|
+
html = readFileSync32(join52(projectDir, rel), "utf-8");
|
|
6033
|
+
} catch {
|
|
6034
|
+
continue;
|
|
6035
|
+
}
|
|
6036
|
+
for (const m of html.matchAll(ID_ATTRIBUTE)) ids.add(m[1] ?? m[2] ?? m[3] ?? "");
|
|
6037
|
+
}
|
|
6038
|
+
return ids;
|
|
6039
|
+
}
|
|
6024
6040
|
function commitElementPatchBatches(projectDir, batches, writeFile2 = (path, content) => replaceFileAtomically(path, content, statSync32(path).mode), requestToken) {
|
|
6025
6041
|
for (let attempt = 1; ; attempt += 1) {
|
|
6026
6042
|
try {
|
|
@@ -6568,7 +6584,7 @@ async function prepareGsapMutationScript(c, res, firstMutation) {
|
|
|
6568
6584
|
let block = extractGsapScriptBlock(html);
|
|
6569
6585
|
if (!block && (firstMutation.type === "add" || firstMutation.type === "add-with-keyframes")) {
|
|
6570
6586
|
const compId = html.match(/data-composition-id="([^"]+)"/)?.[1] ?? "main";
|
|
6571
|
-
const { GSAP_CDN } = await import("./dist-
|
|
6587
|
+
const { GSAP_CDN } = await import("./dist-NP53GO3N.js");
|
|
6572
6588
|
const bootstrap = [
|
|
6573
6589
|
`<script src="${GSAP_CDN}"></script>`,
|
|
6574
6590
|
"<script>",
|
|
@@ -7912,7 +7928,13 @@ function registerFileRoutes(api, adapter) {
|
|
|
7912
7928
|
} catch {
|
|
7913
7929
|
return c.json({ error: "not found" }, 404);
|
|
7914
7930
|
}
|
|
7915
|
-
const
|
|
7931
|
+
const takenIds = parsed.body.operations.some((op) => op.type === "ensure-id") ? projectHtmlIds(ctx.project.dir) : void 0;
|
|
7932
|
+
const element = patchElementInHtml(
|
|
7933
|
+
originalContent,
|
|
7934
|
+
parsed.target,
|
|
7935
|
+
parsed.body.operations,
|
|
7936
|
+
takenIds
|
|
7937
|
+
);
|
|
7916
7938
|
const { matched } = element;
|
|
7917
7939
|
const patched = matched && isStudioFontFaceCss(fontFaceCss) ? ensureStudioFontFaceCss(element.html, fontFaceCss) : element.html;
|
|
7918
7940
|
if (patched === originalContent) {
|
|
@@ -7922,6 +7944,7 @@ function registerFileRoutes(api, adapter) {
|
|
|
7922
7944
|
ok: true,
|
|
7923
7945
|
changed: false,
|
|
7924
7946
|
matched,
|
|
7947
|
+
elementId: element.elementId,
|
|
7925
7948
|
content: originalContent,
|
|
7926
7949
|
path: ctx.filePath,
|
|
7927
7950
|
version: version2
|
|
@@ -7945,6 +7968,7 @@ function registerFileRoutes(api, adapter) {
|
|
|
7945
7968
|
ok: true,
|
|
7946
7969
|
changed: true,
|
|
7947
7970
|
matched,
|
|
7971
|
+
elementId: element.elementId,
|
|
7948
7972
|
content: patched,
|
|
7949
7973
|
path: ctx.filePath,
|
|
7950
7974
|
version,
|
|
@@ -9830,7 +9854,22 @@ function freezeFrameMediaTime(input) {
|
|
|
9830
9854
|
return input.mediaStart + sourceTimeAt(rate, Math.max(0, input.playhead - input.clipStart));
|
|
9831
9855
|
}
|
|
9832
9856
|
function freezeExtractArgs(src, mediaTime, output) {
|
|
9833
|
-
return [
|
|
9857
|
+
return [
|
|
9858
|
+
"-y",
|
|
9859
|
+
"-ss",
|
|
9860
|
+
String(round3(mediaTime)),
|
|
9861
|
+
"-i",
|
|
9862
|
+
src,
|
|
9863
|
+
"-frames:v",
|
|
9864
|
+
"1",
|
|
9865
|
+
"-c:v",
|
|
9866
|
+
"png",
|
|
9867
|
+
"-f",
|
|
9868
|
+
"image2",
|
|
9869
|
+
"-update",
|
|
9870
|
+
"1",
|
|
9871
|
+
output
|
|
9872
|
+
];
|
|
9834
9873
|
}
|
|
9835
9874
|
var randomStillToken = () => randomBytes(4).toString("hex");
|
|
9836
9875
|
function freezeStillFileName(clipId, playhead, token = randomStillToken()) {
|
|
@@ -9869,11 +9908,6 @@ function spans(el, time) {
|
|
|
9869
9908
|
if (start === null || duration === null) return false;
|
|
9870
9909
|
return time > start + EPSILON && time < start + duration - EPSILON;
|
|
9871
9910
|
}
|
|
9872
|
-
function uniqueId(document2, base) {
|
|
9873
|
-
let id = base;
|
|
9874
|
-
for (let n = 2; document2.getElementById(id); n++) id = `${base}-${n}`;
|
|
9875
|
-
return id;
|
|
9876
|
-
}
|
|
9877
9911
|
function shiftTracks(document2, tracks, from, by) {
|
|
9878
9912
|
for (const el of document2.querySelectorAll("[data-start]")) {
|
|
9879
9913
|
if (el.hasAttribute("data-composition-id") || !tracks.has(trackOf(el))) continue;
|
|
@@ -9957,7 +9991,7 @@ function applyFreezeFrameToHtml(html, input) {
|
|
|
9957
9991
|
shiftTracks(document2, tracks, input.playhead, hold);
|
|
9958
9992
|
const leftHalf = findTargetElement(document2, input.target);
|
|
9959
9993
|
if (!leftHalf?.parentElement) return null;
|
|
9960
|
-
const freezeId =
|
|
9994
|
+
const freezeId = nextUniqueId(document2, `${video.getAttribute("id") || "clip"}-freeze`);
|
|
9961
9995
|
const still = buildStill(document2, leftHalf, {
|
|
9962
9996
|
id: freezeId,
|
|
9963
9997
|
imageSrc: input.imageSrc,
|
|
@@ -10001,15 +10035,38 @@ function readExpected(absPath, expectedVersion) {
|
|
|
10001
10035
|
}
|
|
10002
10036
|
return fileContentVersion(content) === expectedVersion ? { content } : { error: "file conflict", status: 409 };
|
|
10003
10037
|
}
|
|
10004
|
-
function
|
|
10038
|
+
function readFrame(path) {
|
|
10005
10039
|
try {
|
|
10006
|
-
|
|
10040
|
+
return readFileSync11(path);
|
|
10041
|
+
} catch (error) {
|
|
10042
|
+
if (error.code === "ENOENT") return null;
|
|
10043
|
+
throw error;
|
|
10044
|
+
}
|
|
10045
|
+
}
|
|
10046
|
+
function publishStill(path, frame) {
|
|
10047
|
+
try {
|
|
10048
|
+
createFileAtomically(path, frame);
|
|
10007
10049
|
return true;
|
|
10008
10050
|
} catch (error) {
|
|
10009
10051
|
if (error.code === "EEXIST") return false;
|
|
10010
10052
|
throw error;
|
|
10011
10053
|
}
|
|
10012
10054
|
}
|
|
10055
|
+
async function extractThenPublishWhole(extract, mediaPath, mediaTime, imagePath) {
|
|
10056
|
+
const unseenByHistory = atomicTempPath(imagePath);
|
|
10057
|
+
try {
|
|
10058
|
+
const extracted = await extract(freezeExtractArgs(mediaPath, mediaTime, unseenByHistory));
|
|
10059
|
+
const frame = extracted.ok ? readFrame(unseenByHistory) : null;
|
|
10060
|
+
if (!frame?.length) {
|
|
10061
|
+
const reason = extracted.ok ? "no frame at this time" : extracted.error ?? "ffmpeg failed";
|
|
10062
|
+
return { error: `Could not extract the frame: ${reason}`, status: 500 };
|
|
10063
|
+
}
|
|
10064
|
+
if (publishStill(imagePath, frame)) return null;
|
|
10065
|
+
return { error: `freeze still already exists: ${basename22(imagePath)}`, status: 409 };
|
|
10066
|
+
} finally {
|
|
10067
|
+
rmSync5(unseenByHistory, { force: true });
|
|
10068
|
+
}
|
|
10069
|
+
}
|
|
10013
10070
|
async function extractStill(projectDir, absPath, source, playhead, tools) {
|
|
10014
10071
|
const fileDir = dirname52(absPath);
|
|
10015
10072
|
const mediaPath = pinWithinProject(projectDir, relative4(projectDir, join13(fileDir, source.src)));
|
|
@@ -10021,15 +10078,13 @@ async function extractStill(projectDir, absPath, source, playhead, tools) {
|
|
|
10021
10078
|
if (!imagePath || dirname52(imagePath) !== freezeDir) {
|
|
10022
10079
|
return { error: `forbidden freeze path: ${fileName}`, status: 403 };
|
|
10023
10080
|
}
|
|
10024
|
-
|
|
10025
|
-
|
|
10026
|
-
|
|
10027
|
-
|
|
10028
|
-
|
|
10029
|
-
|
|
10030
|
-
|
|
10031
|
-
return { error: `Could not extract the frame: ${reason}`, status: 500 };
|
|
10032
|
-
}
|
|
10081
|
+
const failed = await extractThenPublishWhole(
|
|
10082
|
+
tools.extract,
|
|
10083
|
+
mediaPath,
|
|
10084
|
+
source.mediaTime,
|
|
10085
|
+
imagePath
|
|
10086
|
+
);
|
|
10087
|
+
if (failed) return failed;
|
|
10033
10088
|
const depth = relative4(projectDir, fileDir).split(sep22).filter(Boolean).length;
|
|
10034
10089
|
const stillPath = `${FREEZE_DIR.join("/")}/${fileName}`;
|
|
10035
10090
|
return { imageSrc: `${"../".repeat(depth)}${stillPath}`, stillPath, imagePath };
|
|
@@ -10400,7 +10455,7 @@ function registerFontRoutes(api) {
|
|
|
10400
10455
|
if (!located) return c.json({ error: "font not found" }, 404);
|
|
10401
10456
|
let fd;
|
|
10402
10457
|
try {
|
|
10403
|
-
fd =
|
|
10458
|
+
fd = openSync32(located.path, constants3.O_RDONLY | constants3.O_NOFOLLOW);
|
|
10404
10459
|
} catch {
|
|
10405
10460
|
return c.json({ error: "font file not accessible" }, 404);
|
|
10406
10461
|
}
|
|
@@ -10422,7 +10477,7 @@ function registerFontRoutes(api) {
|
|
|
10422
10477
|
} catch {
|
|
10423
10478
|
return c.json({ error: "failed to read font file" }, 500);
|
|
10424
10479
|
} finally {
|
|
10425
|
-
|
|
10480
|
+
closeSync32(fd);
|
|
10426
10481
|
}
|
|
10427
10482
|
});
|
|
10428
10483
|
}
|
|
@@ -10580,7 +10635,7 @@ function containsNullByte(path) {
|
|
|
10580
10635
|
return path.includes("\0");
|
|
10581
10636
|
}
|
|
10582
10637
|
function slugFileBase(path) {
|
|
10583
|
-
const name =
|
|
10638
|
+
const name = basename3(path, extname2(path)).replace(/[^a-zA-Z0-9._-]+/g, "-").replace(/^-+|-+$/g, "");
|
|
10584
10639
|
return name || "media";
|
|
10585
10640
|
}
|
|
10586
10641
|
function uniqueAssetPath(projectDir, assetPath, taken) {
|
|
@@ -10967,23 +11022,17 @@ function duplicateElementInHtml(source, target, newId, at) {
|
|
|
10967
11022
|
if (duration === null || numericAttribute(element, "data-start") === null) {
|
|
10968
11023
|
return { html: source, matched: false, newId: null };
|
|
10969
11024
|
}
|
|
10970
|
-
const
|
|
11025
|
+
const uniqueId = nextUniqueId(document2, newId);
|
|
10971
11026
|
rippleElements(document2, element, at, duration, track);
|
|
10972
11027
|
const clone = element.cloneNode(true);
|
|
10973
11028
|
if (!isHTMLElement(clone)) return { html: source, matched: false, newId: null };
|
|
10974
|
-
clone.setAttribute("id",
|
|
11029
|
+
clone.setAttribute("id", uniqueId);
|
|
10975
11030
|
dedupeClonedCompositionId(document2, clone);
|
|
10976
11031
|
stripStableIds(clone);
|
|
10977
11032
|
clone.setAttribute("data-start", String(at));
|
|
10978
11033
|
element.parentElement.insertBefore(clone, element.nextSibling);
|
|
10979
11034
|
const html = wrappedFragment ? document2.body.innerHTML || "" : document2.toString();
|
|
10980
|
-
return { html: ensureHfIds(html), matched: true, newId:
|
|
10981
|
-
}
|
|
10982
|
-
function nextUniqueId(document2, newId) {
|
|
10983
|
-
let uniqueId2 = newId;
|
|
10984
|
-
let suffix = 2;
|
|
10985
|
-
while (document2.getElementById(uniqueId2)) uniqueId2 = `${newId}-${suffix++}`;
|
|
10986
|
-
return uniqueId2;
|
|
11035
|
+
return { html: ensureHfIds(html), matched: true, newId: uniqueId };
|
|
10987
11036
|
}
|
|
10988
11037
|
function rippleElements(document2, element, at, duration, track) {
|
|
10989
11038
|
for (const candidate of Array.from(document2.querySelectorAll("[data-start][data-duration]"))) {
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
typeDirPath,
|
|
21
21
|
updateRecord,
|
|
22
22
|
withFigmaErrors
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-UOKW7DPN.js";
|
|
24
24
|
import {
|
|
25
25
|
defineCommand
|
|
26
26
|
} from "./chunk-S3S4TGEH.js";
|
|
@@ -221,7 +221,7 @@ var asset_default = defineCommand({
|
|
|
221
221
|
rendered > 0 ? `(${results.length} nodes, ${rendered} rendered in 1 figma request)` : `(${results.length} nodes, all reused from cache \u2014 no figma request)`
|
|
222
222
|
);
|
|
223
223
|
}
|
|
224
|
-
const { trackFigmaImport } = await import("./telemetry-
|
|
224
|
+
const { trackFigmaImport } = await import("./telemetry-5WHZVQFM.js");
|
|
225
225
|
trackFigmaImport({
|
|
226
226
|
phase: "asset",
|
|
227
227
|
reused: results.every((r) => r.reused),
|
|
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
|
|
|
6
6
|
var __dirname = __hf_dirname(__filename);
|
|
7
7
|
import {
|
|
8
8
|
resolveCaptureBrowserGpuMode
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-V5T6IA7D.js";
|
|
10
10
|
import {
|
|
11
11
|
requestCliExit
|
|
12
12
|
} from "./chunk-PBN6GBJE.js";
|