{"version":3,"file":"js/7371.13037902.js","sources":["../../frontend/src/base/components/common/Toast.tsx","../../frontend/src/base/hooks/useServerSentEvents.ts","../../frontend/src/base/utils/translate.ts","../../frontend/src/founder/utils/translate.ts"],"sourcesContent":["import { Button } from \"@base/components/common/primitives\";\nimport { DynamicIcons } from \"@base/utils/images\";\nimport { normalizeProps, useMachine } from \"@zag-js/react\";\nimport * as toast from \"@zag-js/toast\";\nimport DOMPurify from \"dompurify\";\nimport React, { useId, useMemo } from \"react\";\nimport styles from \"./Toast.module.scss\";\n\n// Toasts must outlive Cypress's defaultCommandTimeout (5s). At 4s a toast unmounts\n// before Cypress stops retrying, so any assertion that does not win within 4s is\n// guaranteed to fail against a detached node.\nconst TOAST_DEFAULT_DURATION = window.Cypress ? 30000 : 4000;\n\nconst toaster = toast.createStore({\n\toverlap: false,\n\tplacement: \"bottom-start\",\n});\n\ntype ToastProps = {\n\ttoastProps: toast.Props;\n\tparentService: toast.GroupService;\n};\n\nconst Toast = ({ toastProps, parentService }: ToastProps) => {\n\t// Work around a Zag typing bug where `parent` is required at runtime but missing from toast machine props.\n\tconst machineProps = {\n\t\t...toastProps,\n\t\tparent: parentService,\n\t};\n\tconst service = useMachine(toast.machine, machineProps);\n\tconst api = toast.connect(service, normalizeProps);\n\n\t// inner HTML needs to be memoized to avoid XSS issues and unnecessary re-renders\n\tconst memoizedInnerHtml = useMemo(() => {\n\t\tconst config = {\n\t\t\tALLOWED_TAGS: [\"b\", \"i\", \"br\", \"strong\", \"small\", \"big\"],\n\t\t\tALLOWED_ATTR: [],\n\t\t\tFORBID_ATTR: [\"class\"],\n\t\t};\n\t\tconst description = typeof api.description === \"string\" ? api.description : \"\";\n\t\tconst sanitizedHTML = DOMPurify.sanitize(description, config);\n\t\treturn { __html: sanitizedHTML };\n\t}, [api.description]);\n\n\treturn (\n\t\t<div className={styles.toastContainer} {...api.getRootProps()} data-test=\"toast-container\">\n\t\t\t<div {...api.getGhostBeforeProps()} />\n\t\t\t<p {...api.getDescriptionProps()} dangerouslySetInnerHTML={memoizedInnerHtml}></p>\n\t\t\t<Button\n\t\t\t\tdata-test=\"toast-dismiss-button\"\n\t\t\t\ticon={{ source: DynamicIcons.close }}\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t\tsize=\"small\"\n\t\t\t\tonClick={api.dismiss}\n\t\t\t/>\n\n\t\t\t<div {...api.getGhostAfterProps()} />\n\t\t</div>\n\t);\n};\n\nconst Toaster = () => {\n\tconst service = useMachine(toast.group.machine, {\n\t\tid: useId(),\n\t\tstore: toaster,\n\t});\n\tconst api = toast.group.connect(service, normalizeProps);\n\treturn (\n\t\t<div {...api.getGroupProps()} className={styles.toastGroupHolder}>\n\t\t\t{api.getToasts().map((toastProps) => (\n\t\t\t\t<Toast key={toastProps.id} toastProps={toastProps} parentService={service} />\n\t\t\t))}\n\t\t</div>\n\t);\n};\n\nconst ToastDismiss = (id?: string) => {\n\tqueueMicrotask(() => {\n\t\ttoaster.dismiss(id);\n\t});\n};\n\nconst ToastError = (message: string, duration: number = TOAST_DEFAULT_DURATION) => {\n\tqueueMicrotask(() => {\n\t\ttoaster.create({\n\t\t\ttitle: null,\n\t\t\tdescription: message,\n\t\t\tduration,\n\t\t\ttype: \"error\",\n\t\t});\n\t});\n};\n\nconst ToastSuccess = (message: string, duration: number = TOAST_DEFAULT_DURATION) => {\n\tqueueMicrotask(() => {\n\t\ttoaster.create({\n\t\t\ttitle: null,\n\t\t\tdescription: message,\n\t\t\tduration,\n\t\t\ttype: \"success\",\n\t\t});\n\t});\n};\n\nconst ToastInfo = (message: string, duration: number = TOAST_DEFAULT_DURATION) => {\n\tqueueMicrotask(() => {\n\t\ttoaster.create({\n\t\t\ttitle: null,\n\t\t\tdescription: message,\n\t\t\tduration,\n\t\t\ttype: \"info\",\n\t\t});\n\t});\n};\n\nexport { ToastDismiss, Toaster, toaster, ToastError, ToastInfo, ToastSuccess };\n","// reactCompat.ts\nimport { ToastSuccess } from \"@base/components/common/Toast\";\nimport { ServerSentEvents } from \"@base/core/ServerSentEvents\";\nimport { translateCurrentOrg as translate } from \"@base/utils/translate\";\nimport mitt from \"mitt\";\nimport { useEffect, useRef } from \"react\";\nimport { create } from \"zustand\";\nimport { useShallow } from \"zustand/shallow\";\n\ntype InternalEventPayloads = {\n\torganisation_added?: unknown;\n\torganisation_changed?: unknown;\n\torganisation_info_changed?: unknown;\n\tavatar_changed?: unknown;\n\tinvestor_change_to_details?: unknown;\n\troute_changed?: unknown;\n\tupgrade_plan_error?: unknown;\n\tchecklist_updated?: unknown;\n\tmessage_changed?: unknown;\n\tsignature_changed?: unknown;\n};\n\nexport type SseEventPayloads = {\n\torganisation_deleted?: unknown;\n\tdocument_sign_change?: unknown;\n\traise_offer_changed?: unknown;\n\tshares_issued?: unknown;\n\tshares_updated?: unknown;\n\tlicense_updated?: unknown;\n\thistorical_409a_changed?: unknown;\n\tvaluation_visibility_settings_updated?: unknown;\n\tuser_access_updated?: unknown;\n\tcommand_center_update?: unknown;\n\tshare_transfer_offers_changed?: unknown;\n\ttransfer_round_changed?: unknown;\n\tshare_certificate_generated?: unknown;\n\traise_changed?: unknown;\n\ttransfer_offer_offer_changed?: unknown;\n\ttransfer_offer_offer_added?: unknown;\n\tannouncement_sent?: unknown;\n\tmessage_saved?: unknown;\n\tnote_deleted?: unknown;\n\tnote_changed?: unknown;\n\trequest_exercise_settings_changed?: unknown;\n\trequest_exercise_changed?: unknown;\n\tboard_approval_changed?: unknown;\n\trule_701_settings_changed?: unknown;\n\toffboarding_changed?: unknown;\n\tscanbot_changed?: unknown;\n\tcaptable_forge_changed?: unknown;\n\tstakeholders_deleted?: unknown;\n\tstakeholders_invited?: unknown;\n\tshareholder_changed?: unknown;\n\tqsbs_report_generated?: unknown;\n\troute_changed?: unknown;\n\torganisation_info_changed?: unknown;\n\tavatar_changed?: unknown;\n\ttransaction_changed?: unknown;\n\tboard_member_added?: unknown;\n\tboard_member_updated?: unknown;\n\tboard_member_deleted?: unknown;\n\tsalary_changed?: unknown;\n\t// BULK\n\tbulk_upload_transactions?: unknown;\n\tbulk_upload_esop_offers?: unknown;\n\tbulk_upload_ess_offers?: unknown;\n\tbulk_upload_rsu_offers?: unknown;\n\tbulk_upload_shareholders?: unknown;\n\tbulk_upload_notes?: unknown;\n\tbulk_delete_transactions?: unknown;\n\t// ESOP\n\tesop_added?: unknown;\n\tesop_changed?: unknown;\n\tesop_deleted?: unknown;\n\tesop_group_added?: unknown;\n\tesop_group_changed?: unknown;\n\tesop_group_deleted?: unknown;\n\tesop_offer_added?: unknown;\n\tesop_offer_changed?: unknown;\n\tesop_offers_changed?: unknown;\n\tesop_offer_deleted?: unknown;\n\t// ESS\n\tess_added?: unknown;\n\tess_changed?: unknown;\n\tess_deleted?: unknown;\n\tess_group_added?: unknown;\n\tess_group_changed?: unknown;\n\tess_group_deleted?: unknown;\n\tess_offer_added?: unknown;\n\tess_offer_changed?: unknown;\n\tess_offer_deleted?: unknown;\n\t// Foundervesting\n\tfoundervesting_added?: unknown;\n\tfoundervesting_changed?: unknown;\n\tfoundervesting_deleted?: unknown;\n\tfoundervesting_group_added?: unknown;\n\tfoundervesting_group_changed?: unknown;\n\tfoundervesting_group_deleted?: unknown;\n\tfoundervesting_offer_added?: unknown;\n\tfoundervesting_offer_changed?: unknown;\n\tfoundervesting_offer_deleted?: unknown;\n\t// RSU\n\trsu_added?: unknown;\n\trsu_changed?: unknown;\n\trsu_deleted?: unknown;\n\trsu_group_added?: unknown;\n\trsu_group_changed?: unknown;\n\trsu_group_deleted?: unknown;\n\trsu_offer_added?: unknown;\n\trsu_offer_changed?: unknown;\n\trsu_offer_deleted?: unknown;\n\t// WARRANT\n\twarrant_changed?: unknown;\n\twarrant_offer_added?: unknown;\n\twarrant_offer_changed?: unknown;\n\twarrant_offer_deleted?: unknown;\n\tbulk_upload_warrant_offers?: unknown;\n\tsharetype_changed?: unknown;\n\torganisation_added?: unknown;\n\torganisation_changed?: unknown;\n\tchecklist_updated?: unknown;\n\tdocument_access_updated?: unknown;\n\tsegments_changed?: unknown;\n\t// INCENTIVES\n\tbonus_changed?: unknown;\n\tbonus_participants_changed?: unknown;\n};\n\nexport type CakeEventPayloads = SseEventPayloads & InternalEventPayloads;\n\ninterface SseState {\n\tsse: ServerSentEvents;\n\teventPayloads: SseEventPayloads;\n\tsetEvent: (eventName: keyof CakeEventPayloads, payload?: unknown) => void;\n}\n\nconst useServerSentEventsStore = create<SseState>((set) => {\n\t// @ts-expect-error STRICT_NULL_CHECKS implicit any parameter\n\tconst setEvent = (eventName, payload) => {\n\t\tset((state) => ({\n\t\t\t...state,\n\t\t\teventPayloads: {\n\t\t\t\t...state.eventPayloads,\n\t\t\t\t[eventName]: payload || {},\n\t\t\t},\n\t\t}));\n\t\t_handleEventInternal(eventName, payload || {});\n\t};\n\n\tconst sse = new ServerSentEvents();\n\tsse.addListener((event) => {\n\t\tconst eventName = Object.keys(event)[0] as keyof SseEventPayloads;\n\t\tconst payload = event[eventName];\n\t\tsetEvent(eventName, payload);\n\t});\n\treturn { sse, eventPayloads: {}, setEvent };\n});\n\nconst emitter = mitt<CakeEventPayloads>();\n\nconst useServerSentEvents = <K extends (keyof SseEventPayloads)[]>(\n\teffect: (eventName: K[number], payload: SseEventPayloads[K[number]]) => void,\n\teventKeys: K\n) => {\n\tconst isMounted = useRef(false);\n\tconst selectedPayloads = useServerSentEventsStore(\n\t\tuseShallow((state) => eventKeys.map((key) => state.eventPayloads[key]))\n\t);\n\n\tconst previousPayloadsRef = useRef<SseEventPayloads[K[number]][]>([]);\n\n\tuseEffect(() => {\n\t\tif (!isMounted.current) {\n\t\t\tisMounted.current = true;\n\t\t\tpreviousPayloadsRef.current = selectedPayloads;\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = 0; i < selectedPayloads.length; i++) {\n\t\t\tconst payload = selectedPayloads[i];\n\t\t\tconst eventName = eventKeys[i];\n\t\t\tif (selectedPayloads[i] !== previousPayloadsRef.current[i]) {\n\t\t\t\teffect(eventName, payload);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tpreviousPayloadsRef.current = selectedPayloads;\n\t}, [selectedPayloads, effect, eventKeys]);\n};\n\nfunction setupObserver(\n\teventName: keyof CakeEventPayloads,\n\t// @ts-expect-error STRICT_NULL_CHECKS implicit any rest\n\triotThis: { on: (...args) => void },\n\tcallback: (payload: unknown) => void\n) {\n\tif (!callback || !riotThis) {\n\t\tconsole.warn(\"Invalid setupObserver call\");\n\t\treturn;\n\t}\n\temitter.on(eventName, callback);\n\triotThis.on(\"before-unmount\", () => {\n\t\temitter.off(eventName, callback);\n\t});\n}\n\nlet orgChangeDebounceCb: NodeJS.Timeout | null = null;\nconst DEBOUNCE_PERIOD_MS = 300;\nconst _handleEventInternal = (eventName: keyof CakeEventPayloads, payload: object) => {\n\tswitch (eventName) {\n\t\tcase \"organisation_changed\": {\n\t\t\tif (orgChangeDebounceCb) {\n\t\t\t\tclearTimeout(orgChangeDebounceCb);\n\t\t\t\torgChangeDebounceCb = null;\n\t\t\t}\n\t\t\torgChangeDebounceCb = setTimeout(() => emitter.emit(eventName, payload), DEBOUNCE_PERIOD_MS);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"bulk_upload_transactions\": {\n\t\t\t// @ts-expect-error STRICT_NULL_CHECKS implicit any index\n\t\t\tif (!payload[\"count\"]) {\n\t\t\t\tconsole.error(\"Event without bulk count\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// @ts-expect-error STRICT_NULL_CHECKS implicit any index\n\t\t\tToastSuccess(`Successfully imported ${payload[\"count\"]} ${translate(\"shareholders\")}!`);\n\t\t\temitter.emit(\"shares_issued\", payload); // legacy behaviour\n\t\t\tbreak;\n\t\t}\n\t\tcase \"bulk_upload_esop_offers\": {\n\t\t\t// @ts-expect-error STRICT_NULL_CHECKS implicit any index\n\t\t\tif (!payload[\"count\"]) {\n\t\t\t\tconsole.error(\"Event without bulk count\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// @ts-expect-error STRICT_NULL_CHECKS implicit any index\n\t\t\tif (!payload[\"esop_id\"]) {\n\t\t\t\tconsole.error(\"Event without ESOP ID\");\n\t\t\t}\n\t\t\t// @ts-expect-error STRICT_NULL_CHECKS implicit any index\n\t\t\tToastSuccess(`Successfully imported ${payload[\"count\"]} ESOP offers!`);\n\t\t\t// @ts-expect-error STRICT_NULL_CHECKS implicit any index\n\t\t\temitter.emit(\"esop_offer_added\", payload[\"esop_id\"]); // legacy behaviour\n\t\t\tbreak;\n\t\t}\n\t\tcase \"bulk_upload_ess_offers\": {\n\t\t\t// @ts-expect-error STRICT_NULL_CHECKS implicit any index\n\t\t\tif (!payload[\"count\"]) {\n\t\t\t\tconsole.error(\"Event without bulk count\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// @ts-expect-error STRICT_NULL_CHECKS implicit any index\n\t\t\tif (!payload[\"ess_id\"]) {\n\t\t\t\tconsole.error(\"Event without ESS ID\");\n\t\t\t}\n\t\t\t// @ts-expect-error STRICT_NULL_CHECKS implicit any index\n\t\t\tToastSuccess(`Successfully imported ${payload[\"count\"]} ESS offers!`);\n\t\t\t// @ts-expect-error STRICT_NULL_CHECKS implicit any index\n\t\t\temitter.emit(\"ess_offer_added\", payload[\"ess_id\"]); // legacy behaviour\n\t\t\tbreak;\n\t\t}\n\t\tcase \"bulk_upload_rsu_offers\": {\n\t\t\t// @ts-expect-error STRICT_NULL_CHECKS implicit any index\n\t\t\tif (!payload[\"count\"]) {\n\t\t\t\tconsole.error(\"Event without bulk count\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// @ts-expect-error STRICT_NULL_CHECKS implicit any index\n\t\t\tif (!payload[\"rsu_id\"]) {\n\t\t\t\tconsole.error(\"Event without RSU ID\");\n\t\t\t}\n\t\t\t// @ts-expect-error STRICT_NULL_CHECKS implicit any index\n\t\t\tToastSuccess(`Successfully imported ${payload[\"count\"]} RSU offers!`);\n\t\t\t// @ts-expect-error STRICT_NULL_CHECKS implicit any index\n\t\t\temitter.emit(\"rsu_offer_added\", payload[\"rsu_id\"]); // legacy behaviour\n\t\t\tbreak;\n\t\t}\n\t\tcase \"bulk_upload_shareholders\": {\n\t\t\t// @ts-expect-error STRICT_NULL_CHECKS implicit any index\n\t\t\tif (!payload[\"count\"]) {\n\t\t\t\tconsole.error(\"Event without bulk count\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// @ts-expect-error STRICT_NULL_CHECKS implicit any index\n\t\t\tToastSuccess(`Successfully imported ${payload[\"count\"]} ${translate(\"shareholders\")}!`);\n\t\t\temitter.emit(\"organisation_changed\"); // legacy behaviour\n\t\t\tbreak;\n\t\t}\n\t\tcase \"bulk_upload_notes\": {\n\t\t\t// @ts-expect-error STRICT_NULL_CHECKS implicit any index\n\t\t\tif (!payload[\"count\"]) {\n\t\t\t\tconsole.error(\"Event without bulk count\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// @ts-expect-error STRICT_NULL_CHECKS implicit any index\n\t\t\tToastSuccess(`Successfully imported ${payload[\"count\"]} notes!`);\n\t\t\temitter.emit(\"organisation_changed\"); // legacy behaviour\n\t\t\tbreak;\n\t\t}\n\t\tcase \"bulk_delete_transactions\": {\n\t\t\t// @ts-expect-error STRICT_NULL_CHECKS implicit any index\n\t\t\tif (!payload[\"count\"]) {\n\t\t\t\tconsole.error(\"Event without bulk count\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// @ts-expect-error STRICT_NULL_CHECKS implicit any index\n\t\t\tToastSuccess(`Successfully deleted ${payload[\"count\"]} transactions!`);\n\t\t\temitter.emit(\"organisation_changed\"); // legacy behaviour\n\t\t\tbreak;\n\t\t}\n\t\tcase \"esop_offers_changed\": {\n\t\t\t// @ts-expect-error STRICT_NULL_CHECKS implicit any index\n\t\t\tif (!payload[\"count\"]) {\n\t\t\t\tconsole.error(\"Event without bulk count\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\temitter.emit(\"esop_offer_changed\"); // legacy behaviour\n\t\t\tbreak;\n\t\t}\n\t\tcase \"share_certificate_generated\": {\n\t\t\t// @ts-expect-error STRICT_NULL_CHECKS implicit any index\n\t\t\tconst isLast = payload[\"remaining\"] == 0;\n\t\t\tif (isLast) {\n\t\t\t\t// TODO: translate needs to be in the base app\n\t\t\t\tToastSuccess(`${translate(\"Share certificate\")} issuing complete!`);\n\t\t\t}\n\t\t\t// @ts-expect-error STRICT_NULL_CHECKS implicit any index\n\t\t\tdelete payload[\"remaining\"];\n\t\t}\n\t\tdefault: {\n\t\t\t// console.debug(`Internal event triggered: ${eventName}`, payload);\n\t\t\temitter.emit(eventName, payload);\n\t\t}\n\t}\n};\n\nconst triggerInternalEvent = (eventName: keyof CakeEventPayloads, payload?: unknown) =>\n\tuseServerSentEventsStore.getState().setEvent(eventName, payload);\n\nexport { setupObserver, triggerInternalEvent, useServerSentEvents, useServerSentEventsStore };\n","import { useOrgStore } from \"@base/hooks/useOrgStore\";\nimport i18n from \"i18next\";\n\ntype LocaleDictionary = Record<string, string>;\ntype LanguageResources = Record<string, LocaleDictionary>;\ntype CakeI18nResources = Record<string, LanguageResources>;\n\nexport function initCakeI18n(resources: CakeI18nResources, defaultNS = \"\") {\n\ti18n.init({\n\t\tresources,\n\t\tlng: \"en\",\n\t\tdefaultNS,\n\t\tdebug: false,\n\t});\n}\n\nexport function getCurrentOrgNamespace() {\n\tconst orgData = useOrgStore.getState().organisationData;\n\treturn orgData?.type === \"LLC\" ? \"llc\" : (orgData?.country?.toLocaleLowerCase?.() ?? \"\");\n}\n\nexport function translateWithNamespace<T>(text: T, namespace?: string) {\n\treturn i18n.t(text as string, { ns: namespace ?? \"\" }) as T;\n}\n\nexport function translateCurrentOrg<T>(text: T) {\n\treturn translateWithNamespace(text, getCurrentOrgNamespace());\n}\n","import { initCakeI18n as initBaseCakeI18n, translateCurrentOrg } from \"@base/utils/translate\";\nimport au from \"./locales/en.au.json\";\nimport gb from \"./locales/en.gb.json\";\nimport llc from \"./locales/en.llc.json\";\nimport us from \"./locales/en.us.json\";\n\nconst resources = {\n\ten: { llc, us, au, gb },\n};\n\nexport function initCakeI18n() {\n\tinitBaseCakeI18n(resources, \"au\");\n}\n\nexport function translate<T>(text: T) {\n\treturn translateCurrentOrg(text);\n}\n"],"names":["TOAST_DEFAULT_DURATION","window","toaster","toast","Toast","toastProps","parentService","machineProps","service","useMachine","api","normalizeProps","memoizedInnerHtml","useMemo","description","DOMPurify","styles","Button","DynamicIcons","Toaster","useId","ToastError","message","duration","queueMicrotask","ToastSuccess","useServerSentEventsStore","create","set","setEvent","eventName","payload","state","_handleEventInternal","sse","ServerSentEvents","event","Object","emitter","mitt","orgChangeDebounceCb","clearTimeout","setTimeout","console","translate","isLast","initCakeI18n","resources","defaultNS","i18n","translateCurrentOrg","text","namespace","orgData","useOrgStore","llc","us","au","gb","initBaseCakeI18n"],"mappings":"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"}