{
  "version": 3,
  "sources": ["../../src/web/lib/usePurchaseOriginLocalStorage.ts"],
  "sourcesContent": ["import type { ProjectBase, ProjectLicenseType, Space, TeamLicenseType } from \"@framerjs/app-shared\"\nimport type { PlanPurchaseOrigin } from \"@framerjs/events\"\nimport { useCallback } from \"react\"\nimport { getProjectTeamLicenseBySpaces } from \"./Project.ts\"\nimport type { PlanPurchaseOriginContextMap } from \"./PurchaseOriginContextMap.ts\"\nimport { useLocalStorage } from \"./useLocalStorage.ts\"\n\ninterface CurrentProjectLicense {\n\tprojectId: string\n\tsite: ProjectLicenseType\n\tteam: null | TeamLicenseType\n}\ninterface PurchaseOriginLocalStorage<O extends PlanPurchaseOrigin> {\n\tcreatedAt: number\n\torigin: O\n\tlicenseTypes: null | CurrentProjectLicense\n\t// Debugging purposes\n\tcontext: PlanPurchaseOriginContextMap[O]\n}\n\nexport const getProjectOriginDataWithTeamLicense = (\n\tproject: ProjectBase,\n\tteamLicenseType: TeamLicenseType | null,\n): CurrentProjectLicense => ({\n\tprojectId: project.id,\n\tsite: project.license.type,\n\tteam: teamLicenseType,\n})\n\nexport const getProjectOriginDataBySpaces = (project: ProjectBase, spaces: Space[]) =>\n\tgetProjectOriginDataWithTeamLicense(project, getProjectTeamLicenseBySpaces(project, spaces))\n\nconst LS_KEY = \"purchaseOrigin\"\nexport const usePurchaseOriginLocalStorage = () => {\n\tconst [data, updateStored] = useLocalStorage(LS_KEY, null as PurchaseOriginLocalStorage<PlanPurchaseOrigin> | null)\n\n\tconst hasData = Boolean(data)\n\t// biome-ignore lint/correctness/useExhaustiveDependencies: @TODO: Does this really not need exhaustive deps?\n\tconst eraseAllPurchaseOriginData = useCallback(() => {\n\t\tif (hasData) {\n\t\t\tupdateStored(null)\n\t\t}\n\t}, [hasData])\n\n\tconst currentOrigin: PlanPurchaseOrigin = data ? data.origin : \"unknown\"\n\treturn {\n\t\tdata,\n\t\torigin: currentOrigin,\n\t\t// biome-ignore lint/correctness/useExhaustiveDependencies: updateStored renews on updared value, we want to avoid \"maximum update depth exceeded\"\n\t\tupdatePurchaseOrigin: useCallback(\n\t\t\t<O extends PlanPurchaseOrigin>(\n\t\t\t\tnewOrigin: O,\n\t\t\t\tlicenseTypes: null | CurrentProjectLicense,\n\t\t\t\tcontext: PlanPurchaseOriginContextMap[O],\n\t\t\t) =>\n\t\t\t\tupdateStored({\n\t\t\t\t\torigin: newOrigin,\n\t\t\t\t\tcreatedAt: Date.now(),\n\t\t\t\t\tlicenseTypes,\n\t\t\t\t\tcontext,\n\t\t\t\t}),\n\t\t\t[],\n\t\t),\n\t\teraseAllPurchaseOriginData,\n\t\tforgetPurchaseOrigin: useCallback(\n\t\t\t(outdatedOrigin: PlanPurchaseOrigin) => {\n\t\t\t\tif (currentOrigin === outdatedOrigin) {\n\t\t\t\t\teraseAllPurchaseOriginData()\n\t\t\t\t}\n\t\t\t},\n\t\t\t[eraseAllPurchaseOriginData, currentOrigin],\n\t\t),\n\t}\n}\n"],
  "mappings": ";;;;;;;;;;;;;;AAEA,mBAA4B;AAkBrB,IAAM,sCAAsC,CAClD,SACA,qBAC4B;AAAA,EAC5B,WAAW,QAAQ;AAAA,EACnB,MAAM,QAAQ,QAAQ;AAAA,EACtB,MAAM;AACP;AAEO,IAAM,+BAA+B,CAAC,SAAsB,WAClE,oCAAoC,SAAS,8BAA8B,SAAS,MAAM,CAAC;AAE5F,IAAM,SAAS;AACR,IAAM,gCAAgC,MAAM;AAClD,QAAM,CAAC,MAAM,YAAY,IAAI,gBAAgB,QAAQ,IAA6D;AAElH,QAAM,UAAU,QAAQ,IAAI;AAE5B,QAAM,iCAA6B,0BAAY,MAAM;AACpD,QAAI,SAAS;AACZ,mBAAa,IAAI;AAAA,IAClB;AAAA,EACD,GAAG,CAAC,OAAO,CAAC;AAEZ,QAAM,gBAAoC,OAAO,KAAK,SAAS;AAC/D,SAAO;AAAA,IACN;AAAA,IACA,QAAQ;AAAA;AAAA,IAER,0BAAsB;AAAA,MACrB,CACC,WACA,cACA,YAEA,aAAa;AAAA,QACZ,QAAQ;AAAA,QACR,WAAW,KAAK,IAAI;AAAA,QACpB;AAAA,QACA;AAAA,MACD,CAAC;AAAA,MACF,CAAC;AAAA,IACF;AAAA,IACA;AAAA,IACA,0BAAsB;AAAA,MACrB,CAAC,mBAAuC;AACvC,YAAI,kBAAkB,gBAAgB;AACrC,qCAA2B;AAAA,QAC5B;AAAA,MACD;AAAA,MACA,CAAC,4BAA4B,aAAa;AAAA,IAC3C;AAAA,EACD;AACD;",
  "names": []
}
