diff --git a/src/renderer/components/maps-mangement-components/map-item.component.tsx b/src/renderer/components/maps-mangement-components/map-item.component.tsx
index d0429b27..b1a6b2e6 100644
--- a/src/renderer/components/maps-mangement-components/map-item.component.tsx
+++ b/src/renderer/components/maps-mangement-components/map-item.component.tsx
@@ -222,11 +222,6 @@ export const MapItem = memo(({hash, title, autor, songAutor, coverUrl, songUrl,
}, areEqual)
function areEqual(prevProps: MapItemProps, nextProps: MapItemProps): boolean {
- Array.from(Object.entries(prevProps)).forEach(v => {
- if(!equal(prevProps[v[0]], nextProps[v[0]])){
- console.log(v[0]);
- }
- });
return equal(prevProps, nextProps);
}
diff --git a/src/renderer/components/modal/modal-types/iframe-modal.component.tsx b/src/renderer/components/modal/modal-types/iframe-modal.component.tsx
deleted file mode 100644
index a6cc6c24..00000000
--- a/src/renderer/components/modal/modal-types/iframe-modal.component.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import { ModalComponent } from "renderer/services/modale.service"
-
-export const IframeModal: ModalComponent
= ({resolver, data}) => {
- return (
-
-
-
- )
-}
diff --git a/src/renderer/components/shared/bsm-map-preview.component.tsx b/src/renderer/components/shared/bsm-map-preview.component.tsx
new file mode 100644
index 00000000..815f942c
--- /dev/null
+++ b/src/renderer/components/shared/bsm-map-preview.component.tsx
@@ -0,0 +1,28 @@
+import { AnimatePresence, motion } from "framer-motion";
+import { useRef } from "react";
+import { useClickOutside } from "renderer/hooks/use-click-outside.hook";
+import { useObservable } from "renderer/hooks/use-observable.hook"
+import { LinkOpenerService } from "renderer/services/link-opener.service";
+
+export function BsmIframeView() {
+
+ const linkService = LinkOpenerService.getInstance()
+
+ const iframeUrl = useObservable(linkService.iframeLink$);
+ const ref = useRef(null);
+ useClickOutside(ref, () => linkService.closeIframe());
+
+ return (
+
+ {iframeUrl && (
+
+
+
+
+
+ )}
+
+
+ )
+}
diff --git a/src/renderer/services/link-opener.service.ts b/src/renderer/services/link-opener.service.ts
index 98addf0f..6e6fd064 100644
--- a/src/renderer/services/link-opener.service.ts
+++ b/src/renderer/services/link-opener.service.ts
@@ -1,13 +1,14 @@
-import { IframeModal } from "renderer/components/modal/modal-types/iframe-modal.component";
+import { Observable } from "rxjs";
+import { Subject } from "rxjs";
import { IpcService } from "./ipc.service";
-import { ModalService } from "./modale.service";
export class LinkOpenerService{
private static instance: LinkOpenerService;
private readonly ipcService: IpcService;
- private readonly modals: ModalService;
+
+ private readonly _iframeLink$: Subject = new Subject();
public static getInstance(): LinkOpenerService{
if(!LinkOpenerService.instance){ LinkOpenerService.instance = new LinkOpenerService(); }
@@ -16,15 +17,21 @@ export class LinkOpenerService{
private constructor(){
this.ipcService = IpcService.getInstance();
- this.modals = ModalService.getInsance();
}
public open(url: string, internal?: boolean): void{
if(internal){
- this.modals.openModal(IframeModal, url);
- return;
+ return this._iframeLink$.next(url);
}
this.ipcService.sendLazy("new-window", {args: url});
}
+ public closeIframe(){
+ this._iframeLink$.next(null);
+ }
+
+ public get iframeLink$(): Observable{
+ return this._iframeLink$.asObservable();
+ }
+
}
\ No newline at end of file