1 2!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="622215a9-7c12-5822-a7a0-2014b1a1a3f0")}catch(e){}}(); 3import { t as __commonJSMin } from "./rolldown-runtime.D1cXj70v.js"; 4import { Br as isFeatureEnabled, so as featureFlagConst } from "./logReportUtils.Ca-hg6bk.js"; 5import { Sa as GqlClientFeatureTypeDefinition, ed as useAccountFeatureFullDataQuery, nd as useAccountFeaturesAndPacksDataQuery } from "./graphqlClient.B8mBnpI6.js"; 6//#region client/components/newNav/hooks/UseAccountFeatureFullData/useAccountFeatureFullData.ts 7var useAccountFeatureFullData = () => { 8 const { data, loading } = useAccountFeatureFullDataQuery(); 9 return { 10 accountFeatureFullData: data?.currentAccount?.accountFeatureData ?? [], 11 loading 12 }; 13}; 14//#endregion 15//#region client/components/editor/Hooks/UseAccountFeaturesAndPacksData/useAccountFeaturesAndPacksData.ts 16var useAccountFeaturesAndPacksData = (skip) => { 17 const { data, loading } = useAccountFeaturesAndPacksDataQuery({ skip }); 18 return { 19 accountFeaturesAndPacksData: data?.currentAccount?.accountFeaturesAndPacksData, 20 loading 21 }; 22}; 23//#endregion 24//#region common/creditUtils.ts 25/** 26* Calculate credits needed based on usage and credit configuration 27* @param unitUsage usage amount (in terms of units) 28* @param accountFeatureData account feature data 29* @returns number of credits needed 30*/ 31function calculateCreditsNeeded(unitUsage, accountFeatureData) { 32 const normalizedUsage = Math.max(0, unitUsage); 33 if (accountFeatureData.unit_step && accountFeatureData.credits_per_unit_step) { 34 if (normalizedUsage === 0) return 0; 35 return ((normalizedUsage % accountFeatureData.unit_step === 0 ? normalizedUsage / accountFeatureData.unit_step - 1 : Math.floor(normalizedUsage / accountFeatureData.unit_step)) + 1) * accountFeatureData.credits_per_unit_step; 36 } 37 throw new Error("Credit configuration is missing. Either credits_per_unit or both unit_step and credits_per_unit_step must be defined."); 38} 39//#endregion 40//#region client/components/newNav/hooks/UseFeatureRestriction/useFeatureRestriction.ts 41var FeatureTypeCategoryMap = { 42 [GqlClientFeatureTypeDefinition.LIMIT_AVATAR_GENERATION_MINUTES]: "numeric", 43 [GqlClientFeatureTypeDefinition.LIMIT_GENERATE_AI_ASSET_IMAGE]: "numeric", 44 [GqlClientFeatureTypeDefinition.LIMIT_GENERATE_AI_ASSET_VIDEO]: "numeric", 45 [GqlClientFeatureTypeDefinition.LIMIT_GENERATE_AI_DRAFT_VIDEO]: "numeric", 46 [GqlClientFeatureTypeDefinition.LIMIT_CONTRIBUTORS_NUMBER]: "numeric", 47 [GqlClientFeatureTypeDefinition.LIMIT_CUSTOM_AVATAR_CREATIONS]: "numeric", 48 [GqlClientFeatureTypeDefinition.LIMIT_CUSTOM_VOICE_CREATIONS]: "numeric", 49 [GqlClientFeatureTypeDefinition.LIMIT_NARRATION_LOCALIZATION_MINUTES]: "numeric", 50 [GqlClientFeatureTypeDefinition.LIMIT_USERS_NUMBER]: "numeric", 51 [GqlClientFeatureTypeDefinition.LIMIT_AI_IMAGE_EDITING]: "numeric", 52 [GqlClientFeatureTypeDefinition.DISABLE_CUSTOM_SCENE_IN_ACCOUNT]: "boolean", 53 [GqlClientFeatureTypeDefinition.DISABLE_NARRATION_LOCALIZATION_IN_ACCOUNT]: "boolean", 54 [GqlClientFeatureTypeDefinition.USER_BLOCK_AI_AVATARS]: "boolean", 55 [GqlClientFeatureTypeDefinition.USER_BLOCK_AI_CUSTOM_AVATARS]: "boolean", 56 [GqlClientFeatureTypeDefinition.USER_BLOCK_AI_CUSTOM_VOICES]: "boolean", 57 [GqlClientFeatureTypeDefinition.USER_BLOCK_AI_IMAGE_GENERATION]: "boolean", 58 [GqlClientFeatureTypeDefinition.USER_BLOCK_AI_IMAGE_EDITING]: "boolean", 59 [GqlClientFeatureTypeDefinition.USER_BLOCK_AI_IMAGE_EDITING_ORIGIN_UPLOAD]: "boolean", 60 [GqlClientFeatureTypeDefinition.USER_BLOCK_AI_VIDEO_GENERATION]: "boolean", 61 [GqlClientFeatureTypeDefinition.USER_BLOCK_AI_VIDEO_GENERATION_ORIGIN_UPLOAD]: "boolean", 62 [GqlClientFeatureTypeDefinition.USER_BLOCK_AI_MUSIC_RECOMMENDATION]: "boolean", 63 [GqlClientFeatureTypeDefinition.USER_BLOCK_AI_NEW_FEATURES]: "boolean", 64 [GqlClientFeatureTypeDefinition.USER_BLOCK_AI_PROMPT_TO_VIDEO]: "boolean", 65 [GqlClientFeatureTypeDefinition.USER_BLOCK_AI_DOC_TO_VIDEO]: "boolean", 66 [GqlClientFeatureTypeDefinition.USER_BLOCK_AI_SCRIPT_TO_VIDEO]: "boolean", 67 [GqlClientFeatureTypeDefinition.USER_BLOCK_AI_TRANSLATION]: "boolean", 68 [GqlClientFeatureTypeDefinition.VIDEO_APPROVALS_REQUIRED]: "boolean" 69}; 70var useNumericFeatureRestriction = (featureDefinition) => { 71 if (isFeatureEnabled(featureFlagConst._IMPROVED_TIERS_AND_CREDITS)) return useCreditFeatureRestriction(featureDefinition); 72 const { accountFeatureFullData, loading } = useAccountFeatureFullData(); 73 const featureData = accountFeatureFullData.find((feature) => feature.featureTypeDefinition === featureDefinition); 74 const limit = (featureData?.featureRestrictionValue)?.value; 75 const usage = (featureData?.featureCurrentUsageInfo)?.value; 76 const isFeatureAllocated = limit > 0; 77 const limitReached = usage >= limit; 78 return { 79 loading, 80 limit, 81 usage, 82 balance: limit - usage, 83 limitReached, 84 isFeatureAllocated,
85 creditsBased: false 86 }; 87}; 88var useBooleanFeatureRestriction = (featureDefinition) => { 89 const { accountFeatureFullData, loading } = useAccountFeatureFullData(); 90 return { 91 loading, 92 value: (accountFeatureFullData.find((feature) => feature.featureTypeDefinition === featureDefinition)?.featureRestrictionValue)?.value 93 }; 94}; 95/** 96* Hook for getting credit-based feature restrictions. 97* Uses useAccountFeaturesAndPacksData when the _IMPROVED_TIERS_AND_CREDITS feature flag is enabled 98*/ 99var useCreditFeatureRestriction = (featureDefinition) => { 100 const { accountFeaturesAndPacksData, loading } = useAccountFeaturesAndPacksData(); 101 const featureData = accountFeaturesAndPacksData?.find((feature) => feature.featureTypeDefinition === featureDefinition); 102 if (!featureData) return { 103 loading, 104 limit: 0, 105 usage: 0, 106 balance: 0, 107 isFeatureAllocated: false, 108 limitReached: true, 109 creditsBased: false 110 }; 111 const allocated = featureData.allocated || 0; 112 const usage = featureData.usage || 0; 113 const balance = featureData.balance || 0; 114 return { 115 loading, 116 limit: allocated, 117 usage, 118 balance, 119 isFeatureAllocated: allocated > 0 || featureData.wasAllocated, 120 limitReached: balance <= 0, 121 creditsBased: featureData.creditsBased 122 }; 123}; 124var getCreditsCostFromPackFeature = (featureData, unitUsage) => { 125 const unitStep = featureData?.unitStep; 126 const creditsPerUnitStep = featureData?.creditsPerUnitStep; 127 if (!unitStep || !creditsPerUnitStep) return null; 128 return calculateCreditsNeeded(unitUsage, { 129 unit_step: unitStep, 130 credits_per_unit_step: creditsPerUnitStep 131 }); 132}; 133/** 134* Hook for getting DB-driven credit cost for a feature. 135* Assumes _IMPROVED_TIERS_AND_CREDITS is enabled (packs data is available). 136*/ 137var useCreditsCostForFeature = (featureDefinition, unitUsage) => { 138 const { accountFeaturesAndPacksData, loading } = useAccountFeaturesAndPacksData(); 139 const featureData = accountFeaturesAndPacksData?.find((feature) => feature.featureTypeDefinition === featureDefinition); 140 if (loading) return { 141 loading: true, 142 cost: null, 143 featureData 144 }; 145 return { 146 loading: false, 147 cost: getCreditsCostFromPackFeature(featureData, unitUsage), 148 featureData 149 }; 150}; 151var getRestrictionValueFromFeatureData = (featureData) => { 152 return (featureData?.featureRestrictionValue)?.value; 153}; 154var getBooleanRestrictionValueFromFeatureData = (featureData) => { 155 return getRestrictionValueFromFeatureData(featureData); 156}; 157var getIsFeatureTierRestrictedBasedOnTypeFromSources = (accountFeatureFullData, accountFeaturesAndPacksData, tierFeatureName) => { 158 if (!tierFeatureName) return false; 159 if (FeatureTypeCategoryMap[tierFeatureName] === "boolean") { 160 const featureData = accountFeatureFullData?.find((f) => f.featureTypeDefinition === tierFeatureName); 161 return !!getBooleanRestrictionValueFromFeatureData(featureData); 162 } 163 if (isFeatureEnabled(featureFlagConst._IMPROVED_TIERS_AND_CREDITS) && accountFeaturesAndPacksData) { 164 const packFeature = accountFeaturesAndPacksData.find((f) => f.featureTypeDefinition === tierFeatureName); 165 return (packFeature?.allocated ? packFeature.allocated : 0) === 0; 166 } 167 const legacyFeature = accountFeatureFullData?.find((f) => f.featureTypeDefinition === tierFeatureName); 168 return getRestrictionValueFromFeatureData(legacyFeature) === 0; 169}; 170//#endregion 171//#region node_modules/@fortawesome/pro-regular-svg-icons/faFilm.js 172var require_faFilm = /* @__PURE__ */ __commonJSMin(((exports) => { 173 Object.defineProperty(exports, "__esModule", { value: true }); 174 var prefix = "far"; 175 var iconName = "film"; 176 var width = 448; 177 var height = 512; 178 var aliases = [ 179 127902, 180 62368, 181 "film-alt", 182 "film-simple" 183 ]; 184 var unicode = "f008"; 185 var svgPathData = "M160 432l128 0 0-352-128 0 0 352zM112 80L64 80c-8.8 0-16 7.2-16 16l0 32 64 0 0-48zm0 96l-64 0 0 56 64 0 0-56zm0 104l-64 0 0 56 64 0 0-56zm0 104l-64 0 0 32c0 8.8 7.2 16 16 16l48 0 0-48zM336 80l0 48 64 0 0-32c0-8.8-7.2-16-16-16l-48 0zm64 96l-64 0 0 56 64 0 0-56zm0 104l-64 0 0 56 64 0 0-56zm0 104l-64 0 0 48 48 0c8.8 0 16-7.2 16-16l0-32zM64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32z"; 186 exports.definition = { 187 prefix, 188 iconName, 189 icon: [ 190 width, 191 height, 192 aliases, 193 unicode, 194 svgPathData 195 ] 196 }; 197 exports.faFilm = exports.definition; 198 exports.prefix = prefix; 199 exports.iconName = iconName; 200 exports.width = width; 201 exports.height = height; 202 exports.ligatures = aliases; 203 exports.unicode = unicode;
204 exports.svgPathData = svgPathData; 205 exports.aliases = aliases; 206})); 207//#endregion 208export { useNumericFeatureRestriction as a, useAccountFeatureFullData as c, useCreditsCostForFeature as i, getIsFeatureTierRestrictedBasedOnTypeFromSources as n, calculateCreditsNeeded as o, useBooleanFeatureRestriction as r, useAccountFeaturesAndPacksData as s, require_faFilm as t }; 209 210//# sourceMappingURL=faFilm.Dzt69dT8.js.map 211//# debugId=622215a9-7c12-5822-a7a0-2014b1a1a3f0
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.