UNPKG

geostyler

Version:
196 lines (195 loc) 4.69 kB
import { jsx as o, jsxs as S } from "react/jsx-runtime"; import { useState as D } from "react"; import { DndContext as O, closestCenter as V } from "@dnd-kit/core"; import { SortableContext as H, arrayMove as J } from "@dnd-kit/sortable"; import K from "../../Util/FilterUtil.js"; import P from "../../Util/DataUtil.js"; import { Button as u, Switch as Q, Divider as E } from "antd"; import d from "lodash-es/cloneDeep.js"; import h from "lodash-es/uniqueId.js"; import { Selectable as W } from "../Selectable/Selectable.js"; import { RuleCard as X } from "../RuleCard/RuleCard.js"; import { useDragDropSensors as Y } from "../../hook/UseDragDropSensors.js"; import { SortableItem as Z } from "../SortableItem/SortableItem.js"; import { RemovableItem as $ } from "../RemovableItem/RemovableItem.js"; import { useGeoStylerData as ee, useGeoStylerComposition as te, useGeoStylerLocale as oe } from "../../context/GeoStylerContext/GeoStylerContext.js"; /* empty css */ const be = (N) => { const p = ee(), A = te("Rules"), y = { ...N, ...A }, { disableClassification: x, onClassificationClick: R, onEditRuleClick: v, onEditSelectionClick: g, onRulesChange: l, rules: i } = y, s = oe("Rules"), [n, C] = D(!1), [m, f] = D([]), G = () => { C(!n), f([]); }, I = () => { const e = { name: s.defaultRuleTitle, symbolizers: [] }, t = d(i); t.push(e), l && l(t); }, M = () => { if (l) { const e = d(i).filter((t, c) => !m.includes(c)); l(e); } f([]), C(!1); }, j = () => { if (l) { const e = d(i); m.forEach((t) => { e.push(d(e[t])); }), l(e); } }, w = () => { g && g(m), f([]), C(!1); }, T = () => { R && R(); }, U = (e) => { f([...e]); }, _ = (e) => { v && v(e); }, q = (e) => { if (l) { const t = d(i); t.splice(e, 1), l(t); } }; let r; p && P.isVector(p) && (r = K.calculateCountAndDuplicates(i, p)); const b = i.map((e, t) => { const c = r ? r.duplicates[t] : void 0, a = r ? r.counts[t] : void 0; return /* @__PURE__ */ o( X, { rule: e, amount: a, duplicates: c, onClick: () => { n || _(t); } }, h("rule") ); }), z = b.map((e, t) => /* @__PURE__ */ o( $, { onRemoveClick: () => { q(t); }, children: e }, h("removableRule") )).map((e, t) => { const c = h("rule"), a = t + 1; return /* @__PURE__ */ o( Z, { id: a, children: e }, c ); }), k = [ /* @__PURE__ */ o( u, { className: "gs-add-rule-button", onClick: I, children: s.addRule }, 0 ) ]; x || k.push( /* @__PURE__ */ o( u, { className: "gs-classification-button", onClick: T, children: s.classification }, 1 ) ); const B = [ /* @__PURE__ */ o( u, { className: "gs-remove-rules-button", onClick: M, children: s.remove }, 0 ), /* @__PURE__ */ o( u, { className: "gs-clone-rules-button", onClick: j, children: s.clone }, 1 ), /* @__PURE__ */ o( u, { className: "gs-edit-rules-button", onClick: w, children: s.edit }, 2 ) ], F = (e) => { const { active: t, over: c } = e; if (t.id !== c.id) { const a = J([...i], t.id - 1, c.id - 1); l(a); } }, L = Y(); return /* @__PURE__ */ S("div", { className: "gs-rules", children: [ /* @__PURE__ */ S("div", { className: "gs-rules-header", children: [ /* @__PURE__ */ o("h2", { children: s.rulesTitle }), /* @__PURE__ */ o( Q, { className: "gs-multi-select-toggle", onChange: G, checked: n, checkedChildren: s.multiEdit, unCheckedChildren: s.multiEdit } ) ] }), /* @__PURE__ */ o(E, {}), /* @__PURE__ */ o("div", { className: "gs-rules-list", children: n ? /* @__PURE__ */ o( W, { selection: m, onSelectionChange: U, children: b } ) : /* @__PURE__ */ o( O, { onDragEnd: F, sensors: L, collisionDetection: V, children: /* @__PURE__ */ o( H, { items: i.map((e, t) => t + 1), children: z } ) } ) }), /* @__PURE__ */ o(E, {}), /* @__PURE__ */ o("div", { className: "gs-rules-actions", children: n ? B : k }) ] }); }; export { be as Rules };