remote-rdr / src /RenderUtils.js
shiveshnavin's picture
SSR working
59c0ef4
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
exports.__esModule = true;
exports.RenderUtils = void 0;
var lodash_1 = __importDefault(require("lodash"));
var remotion_1 = require("remotion");
function levenshteinDistance(str1, str2) {
var dp = Array.from({ length: str1.length + 1 }, function (_, i) { return [i]; });
for (var j = 1; j <= str2.length; j++) {
dp[0][j] = j;
}
for (var i = 1; i <= str1.length; i++) {
for (var j = 1; j <= str2.length; j++) {
var cost = str1[i - 1] === str2[j - 1] ? 0 : 1;
dp[i][j] = Math.min(dp[i - 1][j] + 1, dp[i][j - 1] + 1, dp[i - 1][j - 1] + cost);
}
}
return dp[str1.length][str2.length];
}
var RenderUtils = /** @class */ (function () {
function RenderUtils() {
}
RenderUtils.calculateDisplayMedia = function (item, durationInSeconds, frame, fps) {
var currentDisplayMedia = ((item === null || item === void 0 ? void 0 : item.mediaAbsPaths) || [])[0];
if (!lodash_1["default"].isEmpty(item === null || item === void 0 ? void 0 : item.mediaAbsPaths)) {
var frameOffest = 0;
for (var i = 0; i < (item === null || item === void 0 ? void 0 : item.mediaAbsPaths.length); i++) {
var media = item.mediaAbsPaths[i];
if (!media) {
return undefined;
}
media.idx = i;
media.startFrame = frameOffest;
if (media.durationSec == undefined) {
media.durationSec = durationInSeconds / (item === null || item === void 0 ? void 0 : item.mediaAbsPaths.length);
if (i == item.mediaAbsPaths.length - 1) {
media.durationSec = durationInSeconds;
}
}
media.durationFrames = media.durationSec * fps;
media.endFrame = frameOffest + media.durationFrames;
frameOffest = frameOffest + media.durationFrames;
if (frame > media.startFrame && frame < media.endFrame) {
currentDisplayMedia = media;
}
}
}
return currentDisplayMedia;
};
RenderUtils.tryStaticFile = function (file) {
try {
return (0, remotion_1.staticFile)(file);
}
catch (e) {
var fileName = RenderUtils.getFileName(file);
return (0, remotion_1.staticFile)(fileName);
}
};
RenderUtils.convertVHToPixels = function (vh) {
return Math.round(window.innerHeight * (parseInt(vh.replace("vh", "")) / 100));
};
RenderUtils.convertVWToPixels = function (vw) {
return Math.round(window.innerWidth * (parseInt(vw.replace("vw", "")) / 100));
};
RenderUtils.splitWordsIntoGroups = function (words) {
var groups = [];
var currentGroup = [];
for (var _i = 0, words_1 = words; _i < words_1.length; _i++) {
var word = words_1[_i];
if (currentGroup.length === 0) {
currentGroup.push(word);
}
else if (word.sentence_end) {
currentGroup.push(word);
groups.push(currentGroup);
currentGroup = [];
}
else if (currentGroup.length < 5) {
currentGroup.push(word);
}
else {
groups.push(currentGroup);
currentGroup = [word];
}
}
if (currentGroup.length > 0) {
groups.push(currentGroup);
}
// Ensure each group has a maximum of 5 words
var finalGroups = [];
for (var _a = 0, groups_1 = groups; _a < groups_1.length; _a++) {
var group = groups_1[_a];
while (group.length > 5) {
finalGroups.push(group.slice(0, 5));
group.splice(0, 5);
}
finalGroups.push(group);
}
return finalGroups === null || finalGroups === void 0 ? void 0 : finalGroups.map(function (group) {
return {
words: group,
start: undefined,
end: undefined
};
});
};
RenderUtils.findCurrentGroupByTime = function (timeSec, groups) {
var t = timeSec;
var wds = groups;
for (var i = 0; i < wds.length; i++) {
var x = wds[i];
if (x.start != undefined && x.end != undefined && (t >= x.start && t < x.end)) {
return x;
}
}
};
RenderUtils.findCurrentWord = function (timeSec, frames) {
var t = timeSec;
var wds = frames;
for (var i = 0; i < wds.length; i++) {
var x = wds[i];
if (x.start && x.end && (t >= x.start && t < x.end)) {
return x;
}
}
};
RenderUtils.randomElement = function (arr, seed) {
return arr[Math.floor((0, remotion_1.random)(seed || 1) * arr.length)];
};
RenderUtils.hashCode = function (s) {
return s.split("").reduce(function (a, b) {
a = ((a << 5) - a) + b.charCodeAt(0);
return a & a;
}, 0);
};
RenderUtils.splitArrayIntoChunks = function (arr, chunkSize) {
var chunkedArr = [];
for (var i = 0; i < arr.length; i += chunkSize) {
chunkedArr.push(arr.slice(i, i + chunkSize));
}
return chunkedArr;
};
RenderUtils.splitArray = function (arr, pieces) {
var result = [];
var chunkSize = Math.ceil(arr.length / pieces);
for (var i = 0, j = arr.length; i < j; i += chunkSize) {
result.push(arr.slice(i, i + chunkSize));
}
return result;
};
RenderUtils.getFileName = function (filePath, subdirpath) {
if (!filePath)
return undefined;
if (filePath.startsWith("http"))
return filePath;
// Always extract just the filename from any path
var match = filePath.match(/([^\/\\]+)$/);
var filename = match ? match[1] : '';
if (subdirpath) {
return subdirpath + "/" + filename;
}
else {
return filename;
}
};
RenderUtils.findMostSimilarString = function (inputString, stringArray) {
var minDistance = Number.MAX_SAFE_INTEGER;
var mostSimilarString = '';
stringArray.forEach(function (str) {
var distance = levenshteinDistance(inputString, str);
if (distance < minDistance) {
minDistance = distance;
mostSimilarString = str;
}
});
return mostSimilarString;
};
return RenderUtils;
}());
exports.RenderUtils = RenderUtils;