synapse-react-client
Version:
[](https://badge.fury.io/js/synapse-react-client) [](https://github.com/prettier/prettie
47 lines (46 loc) • 1.56 kB
JavaScript
import { jsx as v } from "react/jsx-runtime";
import { createContext as x, useContext as D, useEffect as m, useState as E, useMemo as p, useCallback as M } from "react";
import b from "lodash-es/noop";
const f = x(void 0);
function A(s) {
const { children: o, defaultTitle: n, defaultDescription: r } = s, [c, d] = E([]), u = p(
() => [...c].sort((t, i) => i.priority - t.priority),
[c]
), a = M(
(t) => {
const i = {
id: /* @__PURE__ */ Symbol("DocumentMetadataEntry"),
title: t.title,
description: t.description,
priority: t.priority ?? 0
};
return d((e) => [...e, i]), () => {
d((e) => e.filter((l) => l.id !== i.id));
};
},
[d]
), y = p(
() => ({ register: a }),
[a]
);
return m(() => {
const t = u.find((e) => e.title !== void 0)?.title ?? n;
t !== void 0 && document.title !== t && (document.title = t);
const i = document.querySelector(
'meta[name="description"]'
);
if (i) {
const e = u.find((l) => l.description !== void 0)?.description ?? r;
typeof e == "string" && i.getAttribute("content") !== e && i.setAttribute("content", e);
}
}, [n, r, u]), /* @__PURE__ */ v(f.Provider, { value: y, children: o });
}
function P(s) {
const o = D(f), { title: n, description: r, priority: c } = s;
m(() => o ? o.register({ title: n, description: r, priority: c }) : b, [o, n, r, c]);
}
export {
A as DocumentMetadataProvider,
P as useDocumentMetadata
};
//# sourceMappingURL=DocumentMetadataContext.js.map