Revert "chore(react): prototype for note context"

This reverts commit 660db3b3ab.
This commit is contained in:
Elian Doran
2025-08-25 13:51:43 +03:00
parent 660db3b3ab
commit 1eaeec8100
6 changed files with 19 additions and 61 deletions

View File

@@ -6,10 +6,7 @@ export default abstract class ReactBasicWidget extends BasicWidget {
abstract get component(): JSX.Element;
doRender() {
this.$widget = renderReactWidget({
parentComponent: this,
noteContext: null
}, this.component);
this.$widget = renderReactWidget(this, this.component);
}
}

View File

@@ -17,13 +17,9 @@ import { CSSProperties } from "preact/compat";
export function useTriliumEvent<T extends EventNames>(eventName: T, handler: (data: EventData<T>) => void) {
const parentComponent = useContext(ParentComponent)!;
useEffect(() => {
parentComponent.registerHandler(eventName, handler);
return (() => parentComponent.removeHandler(eventName, handler));
}, [eventName, handler]);
parentComponent.registerHandler(eventName, handler);
useDebugValue(eventName);
return (() => parentComponent.removeHandler(eventName, handler));
}
export function useTriliumEvents<T extends EventNames>(eventNames: T[], handler: (data: EventData<T>, eventName: T) => void) {
@@ -203,6 +199,7 @@ export function useNoteContext() {
}, [ notePath ]);
useTriliumEvent("activeContextChanged", ({ noteContext }) => {
setNoteContext(noteContext);
setNotePath(noteContext.notePath);
});
useTriliumEvent("setNoteContext", ({ noteContext }) => {

View File

@@ -1,14 +1,9 @@
import { ComponentChild, createContext, render, type JSX, type RefObject } from "preact";
import Component from "../../components/component";
import { type default as NoteContextType } from "../../components/note_context";
import { EventData, EventNames } from "../../components/app_context";
import { useContext } from "preact/hooks";
export const ParentComponent = createContext<Component | null>(null);
export const NoteContext = createContext<NoteContextType | null>(null);
interface ComponentContext {
parentComponent: Component | null;
noteContext: NoteContextType | null;
}
/**
* Takes in a React ref and returns a corresponding JQuery selector.
@@ -31,16 +26,14 @@ export function refToJQuerySelector<T extends HTMLElement>(ref: RefObject<T> | n
* @param el the JSX element to render.
* @returns the rendered wrapped DOM element.
*/
export function renderReactWidget(context: ComponentContext, el: JSX.Element) {
return renderReactWidgetAtElement(context, el, new DocumentFragment()).children();
export function renderReactWidget(parentComponent: Component, el: JSX.Element) {
return renderReactWidgetAtElement(parentComponent, el, new DocumentFragment()).children();
}
export function renderReactWidgetAtElement({ parentComponent, noteContext }: ComponentContext, el: JSX.Element, container: Element | DocumentFragment) {
export function renderReactWidgetAtElement(parentComponent: Component, el: JSX.Element, container: Element | DocumentFragment) {
render((
<ParentComponent.Provider value={parentComponent}>
<NoteContext.Provider value={noteContext}>
{el}
</NoteContext.Provider>
{el}
</ParentComponent.Provider>
), container);
return $(container) as JQuery<HTMLElement>;