{"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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"}