UNPKG

@devgateway/dvz-ui-react

Version:

A modular, embeddable React component library for data visualization and UI, built with TypeScript. Provides reusable components for charts, maps, dashboards, and more, with built-in support for internationalization and Redux integration.

129 lines (128 loc) 4.41 kB
import { jsxs as f, jsx as t } from "react/jsx-runtime"; import { Menu as g, Image as x, Container as b } from "semantic-ui-react"; import { InView as M } from "react-intersection-observer"; import T, { useEffect as N, useState as S, useCallback as I } from "react"; import { PageProvider as w, PageConsumer as k, MediaProvider as _, MediaConsumer as p, PostContent as y } from "@devgateway/wp-react-lib"; import { injectIntl as H } from "react-intl"; import { connect as L } from "react-redux"; import { setPageModuleProps as $ } from "../reducers/data.js"; import j from "./FloatingNavigator.js"; const P = function(e) { return e ? e.toString().replace(/&#(\d+);/g, function(n, r) { return String.fromCharCode(r); }) : ""; }, E = ({ title: e, subtitle: n, icon: r, media: o }) => /* @__PURE__ */ f(g, { className: "header title", text: !0, children: [ /* @__PURE__ */ t(g.Item, { children: /* @__PURE__ */ t( x, { src: o && o.guid ? o.guid.rendered : r, alt: o && o.alt_text ? o.alt_text : "" } ) }), /* @__PURE__ */ t(g.Header, { children: /* @__PURE__ */ t("div", { children: /* @__PURE__ */ f("h2", { className: "page-module-title", children: [ e, /* @__PURE__ */ t("span", { style: { display: "block" }, className: "page-module-subtitle", children: n }) ] }) }) }) ] }), O = (e) => { var n; return /* @__PURE__ */ t("img", { src: (n = e.media) != null && n.guid ? e.media.guid.rendered : null, alt: "" }); }, R = ({ page: e, locale: n }) => { var r; return /* @__PURE__ */ f(b, { fluid: !0, className: `section ${e.slug}`, id: e.id, children: [ /* @__PURE__ */ t("div", { id: `${e.slug}` }), /* @__PURE__ */ t(_, { id: (r = e.meta_fields) != null && r.icon ? e.meta_fields.icon[0] : null, children: /* @__PURE__ */ t(p, { children: /* @__PURE__ */ t(E, { title: P(e.title.rendered), subtitle: P(e.meta_fields.subtitle) }) }) }), e && /* @__PURE__ */ t(y, { as: b, fluid: !0, post: e }) ] }); }, q = ({ pages: e, locale: n, editing: r, navTitle: o, toTopLabel: l }) => { const [s, d] = S([]), c = I((i, { direction: a = "down", onScreen: h }) => { d(h ? (u) => u.indexOf(i) === -1 ? [...u, i] : u : (u) => u.filter((C) => C !== i)); }, []), m = e ? e.sort((i, a) => i.menu_order - a.menu_order) : [], v = m.map((i) => { var a; return { active: s.includes(i.id), id: i.id, label: i.meta_fields.label ? i.meta_fields.label : i.title.rendered, iconComponent: /* @__PURE__ */ t(_, { id: (a = i.meta_fields) != null && a.icon ? i.meta_fields.icon[0] : null, children: /* @__PURE__ */ t(p, { children: /* @__PURE__ */ t(O, {}) }) }) }; }); return /* @__PURE__ */ f(T.Fragment, { children: [ !r && /* @__PURE__ */ t(j, { navTitle: o, toTopLabel: l, sections: v }), /* @__PURE__ */ t("div", { className: "pages", children: m.map((i) => /* @__PURE__ */ t( M, { as: "div", onChange: (a, h) => c(i.id, { onScreen: a, direction: h.boundingClientRect.top < 0 ? "up" : "down" }), children: /* @__PURE__ */ t( R, { locale: n, page: i, onVisibilityUpdate: c } ) }, i.id )) }) ] }); }, D = (e) => { const { navTitle: n, toTopLabel: r, editing: o, parent: l, unique: s, locale: d, onLoadPageModule: c } = e; return N(() => { c({ data: e }); }, [e]), /* @__PURE__ */ t(b, { className: "viz dashboard green", fluid: !0, children: e.parent && /* @__PURE__ */ t( w, { locale: d, parent: e.parent, store: `modules_${l}_${s}`, perPage: 100, children: /* @__PURE__ */ t(k, { children: /* @__PURE__ */ t( q, { toTopLabel: r, navTitle: n, editing: o === "true", locale: d } ) }) } ) }); }, V = (e, n) => { let { "data-nav-label": r = "Sections", "data-to-top-label": o = "TO THE TOP", "data-preview-mode": l = "Desktop", editing: s, parent: d, unique: c, intl: { locale: m } } = n; return l === "undefined" && (l = "Desktop"), { navTitle: r, toTopLabel: o, previewMode: l, editing: s, parent: d, unique: c, locale: m }; }, z = { onLoadPageModule: $ }, X = L(V, z)(H(D)); export { E as SectionHeader, X as default };