@macrostrat/column-components
Version:
React rendering primitives for stratigraphic columns
1 lines • 5.73 kB
Source Map (JSON)
{"version":3,"file":"lithology-picker.cjs","sources":["../../src/editor/lithology-picker.ts"],"sourcesContent":["import { useContext, useState } from \"react\";\nimport hyper from \"@macrostrat/hyper\";\nimport { RaisedSelect } from \"./util\";\nimport { Button, Intent } from \"@blueprintjs/core\";\n\nimport { symbolIndex } from \"../lithology\";\nimport { GeologicPatternContext } from \"../lithology\";\nimport { LithologyContext } from \"../context\";\n\nimport styles from \"./main.module.scss\";\n\nconst h = hyper.styled(styles);\n\nconst LithologySwatch = function ({ symbolID, style, ...rest }) {\n const { resolvePattern } = useContext(GeologicPatternContext);\n const src = resolvePattern(symbolID);\n if (style == null) {\n style = {};\n }\n style.backgroundImage = `url(\\\"${src}\\\")`;\n return h(\"div.lithology-swatch\", { style, ...rest });\n};\n\nconst LithologyItem = function (props) {\n const { symbol, lithology } = props;\n return h(\"span.facies-picker-row\", [\n h(LithologySwatch, { symbolID: symbol }),\n h(\"span.facies-picker-name\", lithology),\n ]);\n};\n\nconst LithologyPicker = (props) => {\n const { interval, onChange } = props;\n const { lithologies } = useContext(LithologyContext);\n\n console.log(\"lithologies\", lithologies, interval);\n\n let options = [];\n for (let item of lithologies) {\n const { id, pattern } = item;\n const symbol = symbolIndex[pattern];\n // if (symbol == null) {\n // continue;\n // }\n options.push({\n value: id,\n label: h(LithologyItem, { lithology: id, symbol }),\n });\n }\n\n let value = options.find((d) => d.value === interval.lithology_id);\n\n return h(RaisedSelect, {\n id: \"lithology-select\",\n options,\n value,\n isClearable: true,\n onChange(res) {\n const f = res != null ? res.value : null;\n return onChange(f);\n },\n });\n};\n\nconst SymbolPickerInner = function (props) {\n let symbol;\n const { interval, onClose, style } = props;\n let isUserSet = false;\n\n let text = \"No pattern set\";\n if (interval.pattern != null) {\n symbol = interval.pattern;\n isUserSet = true;\n text = `Symbol ${symbol}`;\n }\n if (interval.lithology != null) {\n symbol = symbolIndex[interval.lithology];\n text = \"Default for lithology\";\n }\n\n return h(\"div.lithology-symbol-picker-inner\", { style }, [\n h.if(symbol != null)(LithologySwatch, { symbolID: symbol }),\n h(\"div.picker-label.text\", text),\n h.if(onClose != null)(\n Button,\n {\n small: true,\n icon: \"cross\",\n intent: Intent.DANGER,\n minimal: true,\n onClick: onClose,\n },\n \"Clear override\",\n ),\n ]);\n};\n\nconst LithologySymbolPicker = function (props) {\n const { interval, updatePattern } = props;\n const [isExpanded, setIsExpanded] = useState(false);\n\n const className = isExpanded ? \"expanded\" : \"hidden\";\n\n return h(\"div.lithology-symbol-picker\", { className }, [\n h(\n Button,\n {\n className: \"expand-button\",\n onClick() {\n setIsExpanded(true);\n },\n minimal: true,\n small: true,\n intent: Intent.WARNING,\n },\n \"Override lithology pattern\",\n ),\n h(SymbolPickerInner, {\n interval,\n onClose: () => setIsExpanded(false),\n updatePattern,\n }),\n ]);\n};\n\nexport { LithologyPicker, LithologySymbolPicker };\n"],"names":["hyper","styles","useContext","GeologicPatternContext","lithology","LithologyContext","symbolIndex","RaisedSelect","Button","Intent","useState"],"mappings":"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"}