squiggle/foretold/components/src/lib/Title.re
2022-01-12 18:33:04 +11:00

24 lines
615 B
ReasonML

[@bs.val] external document: Dom.document = "document";
[@bs.set] external setTitleDom: (Dom.document, string) => unit = "title";
[@bs.get] external getTitleDom: Dom.document => string = "title";
let getTitle = () => getTitleDom(document);
let setTitle = setTitleDom(document);
let unsetTitle = (previousTitle) => setTitle(previousTitle);
let useTitle = (title: string): unit =>{
let prev = getTitle();
React.useEffect1(
() => {
setTitle(title);
Some(_ => unsetTitle(prev));
},
[|title|],
);
};
[@react.component]
let make = (~title: string) => {
useTitle(title);
React.null;
};