@macrostrat/feedback-components 1.1.2 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/esm/{feedback-components.95dbe7d7.js → feedback-components.00434ff7.js} +10 -1
  3. package/dist/esm/feedback-components.00434ff7.js.map +1 -0
  4. package/dist/esm/{feedback-components.46a7a347.js → feedback-components.1c15f37f.js} +101 -12
  5. package/dist/esm/feedback-components.1c15f37f.js.map +1 -0
  6. package/dist/esm/{feedback-components.586103e8.js → feedback-components.204f7d2b.js} +27 -276
  7. package/dist/esm/feedback-components.204f7d2b.js.map +1 -0
  8. package/dist/esm/{feedback-components.3b3a5357.js → feedback-components.28ba71be.js} +19 -8
  9. package/dist/esm/feedback-components.28ba71be.js.map +1 -0
  10. package/dist/esm/{feedback-components.5df2a926.js → feedback-components.707e3490.js} +5 -7
  11. package/dist/esm/feedback-components.707e3490.js.map +1 -0
  12. package/dist/esm/feedback-components.7e879290.js +286 -0
  13. package/dist/esm/feedback-components.7e879290.js.map +1 -0
  14. package/dist/esm/{feedback-components.5509fab3.js → feedback-components.d55a1d18.js} +6 -6
  15. package/dist/esm/{feedback-components.5509fab3.js.map → feedback-components.d55a1d18.js.map} +1 -1
  16. package/dist/esm/{feedback-components.fb60c70d.css → feedback-components.d591ffec.css} +20 -1
  17. package/dist/esm/feedback-components.d591ffec.css.map +1 -0
  18. package/dist/esm/{feedback-components.fa1d3641.js → feedback-components.f6605b83.js} +49 -7
  19. package/dist/esm/feedback-components.f6605b83.js.map +1 -0
  20. package/dist/esm/feedback-components.fd8ac9ca.js +230 -0
  21. package/dist/esm/feedback-components.fd8ac9ca.js.map +1 -0
  22. package/dist/esm/index.d.ts +5 -2
  23. package/dist/esm/index.d.ts.map +1 -1
  24. package/dist/esm/index.js +2 -2
  25. package/dist/node/feedback-components.0eef8d0c.js +2 -0
  26. package/dist/node/feedback-components.0eef8d0c.js.map +1 -0
  27. package/dist/node/{feedback-components.a39f7653.js → feedback-components.2f740fc7.js} +2 -2
  28. package/dist/node/{feedback-components.a39f7653.js.map → feedback-components.2f740fc7.js.map} +1 -1
  29. package/dist/node/feedback-components.41db283a.js +2 -0
  30. package/dist/node/feedback-components.41db283a.js.map +1 -0
  31. package/dist/node/feedback-components.69d0ccd0.js +2 -0
  32. package/dist/node/feedback-components.69d0ccd0.js.map +1 -0
  33. package/dist/node/feedback-components.a7b43cfa.js +2 -0
  34. package/dist/node/feedback-components.a7b43cfa.js.map +1 -0
  35. package/dist/node/feedback-components.b22d37d1.js +2 -0
  36. package/dist/node/feedback-components.b22d37d1.js.map +1 -0
  37. package/dist/node/feedback-components.b9317f9c.js +2 -0
  38. package/dist/node/feedback-components.b9317f9c.js.map +1 -0
  39. package/dist/node/{feedback-components.c88cb37f.css → feedback-components.e096504e.css} +2 -2
  40. package/dist/node/feedback-components.e096504e.css.map +1 -0
  41. package/dist/node/feedback-components.e140ac86.js +2 -0
  42. package/dist/node/feedback-components.e140ac86.js.map +1 -0
  43. package/dist/node/feedback-components.f8373b58.js +2 -0
  44. package/dist/node/feedback-components.f8373b58.js.map +1 -0
  45. package/dist/node/index.js +1 -1
  46. package/dist/node/index.js.map +1 -1
  47. package/package.json +3 -2
  48. package/src/extractions/index.ts +7 -2
  49. package/src/extractions/types.ts +1 -0
  50. package/src/feedback/edit-state.ts +52 -3
  51. package/src/feedback/feedback.module.sass +17 -1
  52. package/src/feedback/graph.ts +17 -4
  53. package/src/feedback/index.ts +14 -309
  54. package/src/feedback/matches.ts +241 -0
  55. package/src/feedback/text-visualizer.ts +114 -4
  56. package/src/feedback/typelist.ts +312 -0
  57. package/dist/esm/feedback-components.3b3a5357.js.map +0 -1
  58. package/dist/esm/feedback-components.46a7a347.js.map +0 -1
  59. package/dist/esm/feedback-components.586103e8.js.map +0 -1
  60. package/dist/esm/feedback-components.5df2a926.js.map +0 -1
  61. package/dist/esm/feedback-components.95dbe7d7.js.map +0 -1
  62. package/dist/esm/feedback-components.fa1d3641.js.map +0 -1
  63. package/dist/esm/feedback-components.fb60c70d.css.map +0 -1
  64. package/dist/node/feedback-components.561466ac.js +0 -2
  65. package/dist/node/feedback-components.561466ac.js.map +0 -1
  66. package/dist/node/feedback-components.571ee23c.js +0 -2
  67. package/dist/node/feedback-components.571ee23c.js.map +0 -1
  68. package/dist/node/feedback-components.8b03e8be.js +0 -2
  69. package/dist/node/feedback-components.8b03e8be.js.map +0 -1
  70. package/dist/node/feedback-components.b7946db4.js +0 -2
  71. package/dist/node/feedback-components.b7946db4.js.map +0 -1
  72. package/dist/node/feedback-components.c459cc27.js +0 -2
  73. package/dist/node/feedback-components.c459cc27.js.map +0 -1
  74. package/dist/node/feedback-components.c88cb37f.css.map +0 -1
  75. package/dist/node/feedback-components.ec54a1e7.js +0 -2
  76. package/dist/node/feedback-components.ec54a1e7.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ import"./feedback-components.b9317f9c.js";import"./feedback-components.b22d37d1.js";import e from"@macrostrat/hyper";import{useState as t}from"react";import{Icon as o,Overlay2 as d,Popover as i}from"@blueprintjs/core";import{useInDarkMode as l,SaveButton as a}from"@macrostrat/ui-components";import{ColorPicker as r}from"@macrostrat/data-sheet";var n=globalThis,s={},p={},c=n.parcelRequirea149;null==c&&((c=function(e){if(e in s)return s[e].exports;if(e in p){var t=p[e];delete p[e];var o={id:e,exports:{}};return s[e]=o,t.call(o.exports,o,o.exports),o.exports}var d=Error("Cannot find module '"+e+"'");throw d.code="MODULE_NOT_FOUND",d}).register=function(e,t){p[e]=t},n.parcelRequirea149=c),c.register;var y=c("9wFEx"),u=c("edvRb");let v=e.styled(y&&y.__esModule?y.default:y);function m({types:e,selected:o,dispatch:d,selectedNodes:i,tree:a}){let[r,n]=t(null),s=i.length>0,p=l()?.9:.4;return v("div.type-list-container",[v("div.type-list-header",s&&!r?"Change selected nodes to:":"Entity Types"),v("div.type-list",Array.from(e.values()).map(e=>v(x,{type:e,luminance:p,selectedType:r,setSelectedType:n,dispatch:d,tree:a,selectedNodes:i,selected:o,isSelectedNodes:s}))),v(f,{dispatch:d})])}function g(e,t){let o=[];return e.forEach(function e(d){d.type.id===t&&o.push(d.id),Array.isArray(d.children)&&d.children.forEach(e)}),o}function f({dispatch:e}){let[d,i]=t(!1);return v("div.add-type-container",[v("div.add-type",{onClick:()=>i(!0)},[v("p.add-type-text","Add new type"),v(o,{icon:"plus"})]),v(b,{setOverlayOpen:i,overlayOpen:d,title:"Add New Type",saveHandler:t=>{e({type:"add-entity-type",payload:t}),i(!1)}})])}function h({dispatch:e,type:d}){let[i,l]=t(!1);return v("div.edit-type",[v(o,{icon:"edit",className:"edit-icon",onClick:e=>{e.stopPropagation(),l(!0)}}),v(b,{setOverlayOpen:l,overlayOpen:i,originalType:d,title:"Edit Type",saveHandler:t=>{e({type:"update-entity-type",payload:t}),l(!1)}})])}function b({setOverlayOpen:e,overlayOpen:i,originalType:l,title:n,saveHandler:s}){let{name:p,description:c,color:y,id:u}=l||{},[m,g]=t(p||""),[f,h]=t(c||""),[b,x]=t(y||"#fff");return v(d,{isOpen:i},v("div.overlay-container",v("div.add-type-overlay",[v("h2.title",[n,v(o,{icon:"cross",className:"close-icon",onClick:()=>{e(!1)},style:{cursor:"pointer",color:"red"}})]),v("div.form-group",[v("div.text-inputs",[v("div.form-field.name",[v("p.label","Name"),v("input",{type:"text",placeholder:"Enter type name",onChange:e=>g(e.target.value),value:m})]),v("div.form-field.form-description",[v("p.label","Description"),v("input",{type:"text",placeholder:"Enter type description",onChange:e=>h(e.target.value),value:f})])]),v("div.form-field.color",[v("p.label","Color"),v(r,{value:b,onChange:e=>x(e),style:{width:"100%"}})])]),v(a,{className:"save-btn",small:!0,onClick:()=>s({name:m,description:f,color:b,id:u})},"Save changes")])))}function x({type:e,luminance:t,selectedType:d,setSelectedType:a,dispatch:r,tree:n,selectedNodes:s,selected:p,isSelectedNodes:c}){let{color:y,name:m,id:f,description:b}=e;l();let x=f===p?.id&&s.length>0,N=(0,u.getTagStyle)(y,{active:x,highlighted:0===s.length}),T={id:f,name:m,color:y,description:b},k=g(n,f);return v(i,{autoFocus:!1,content:v("div.description",b||"No description available"),interactionKind:"hover"},v("div.type-tag",{onClick:()=>{c||null!==d?c&&null===d?f===p?.id&&s.length>0?r({type:"toggle-node-selected",payload:{ids:s}}):r({type:"select-entity-type",payload:T}):c&&d.id===f?(a(null),r({type:"toggle-node-selected",payload:{ids:k}})):c&&d.id!==f?k.length>0&&(a(e),r({type:"toggle-node-selected",payload:{ids:g(n,d.id)}}),r({type:"toggle-node-selected",payload:{ids:k}})):console.warn("Unexpected state in TypeTag click handler",{isSelectedNodes:c,selectedType:d,selectedNodes:s,ids:k,id:f,selected:p}):k.length>0&&(a(e),r({type:"toggle-node-selected",payload:{ids:k}}))},style:{cursor:k.length>0||c&&!d?"pointer":"",color:"black",backgroundColor:N.backgroundColor,border:x?"1px solid var(--text-emphasized-color)":"1px solid var(--background-color)"}},v("div.type-container",[v("div.type-name",m),v("div.icons",[v(h,{dispatch:r,type:e}),v(o,{icon:"cross",className:"delete-type-icon",style:{color:"red",cursor:"pointer"},onClick:e=>{e.stopPropagation(),r({type:"delete-entity-type",payload:{id:f}})}})])])))}export{m as TypeList};
2
+ //# sourceMappingURL=feedback-components.e140ac86.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"A,M,oD,A,O,oD,A,Q,M,mB,A,Q,Y,C,K,O,A,Q,Q,C,C,Y,C,C,W,C,K,mB,A,Q,iB,C,C,c,C,K,2B,A,Q,e,C,K,wB,C,I,E,W,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,E,Q,C,I,E,E,S,E,E,SCUA,IAAM,EAAI,AAAA,EAAM,MAAM,C,AAAC,G,AAAA,E,U,C,AAAA,E,O,CAAA,GAEhB,SAAS,EAAS,CAAA,MAAE,CAAK,CAAA,SAAE,CAAQ,CAAA,SAAE,CAAQ,CAAA,cAAE,CAAa,CAAA,KAAE,CAAI,CAAE,EACzE,GAAM,CAAC,EAAc,EAAgB,CAAG,AAAA,EAAS,MAC3C,EAAkB,EAAc,MAAM,CAAG,EAEzC,EAAY,AADD,AAAA,IACY,GAAM,GAEnC,OAAO,EAAE,0BAA2B,CAClC,EACE,uBACA,GAAmB,CAAC,EAChB,4BACA,gBAEN,EACE,gBACA,MAAM,IAAI,CAAC,EAAM,MAAM,IAAI,GAAG,CAAC,AAAC,GAC9B,EAAE,EAAS,CACT,KAAA,EACA,UAAA,EACA,aAAA,EACA,gBAAA,EACA,SAAA,EACA,KAAA,EACA,cAAA,EACA,SAAA,EACA,gBAAA,CACF,KAGJ,EAAE,EAAS,CAAE,SAAA,CAAS,GACvB,CACH,CAEA,SAAS,EAAmB,CAAI,CAAE,CAAE,EAClC,IAAM,EAAM,EAAE,CAYd,OADA,EAAK,OAAO,CATZ,SAAS,EAAS,CAAI,EAChB,EAAK,IAAI,CAAC,EAAE,GAAK,GACnB,EAAI,IAAI,CAAC,EAAK,EAAE,EAEd,MAAM,OAAO,CAAC,EAAK,QAAQ,GAC7B,EAAK,QAAQ,CAAC,OAAO,CAAC,EAE1B,GAGO,CACT,CAEA,SAAS,EAAQ,CAAA,SAAE,CAAQ,CAAE,EAC3B,GAAM,CAAC,EAAa,EAAe,CAAG,AAAA,EAAS,CAAA,GAU/C,OAAO,EAAE,yB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","sources":["<anon>","packages/feedback-components/src/feedback/typelist.ts"],"sourcesContent":["import \"./feedback-components.b9317f9c.js\";\nimport \"./feedback-components.b22d37d1.js\";\nimport $a9pfJ$macrostrathyper from \"@macrostrat/hyper\";\nimport {useState as $a9pfJ$useState} from \"react\";\nimport {Icon as $a9pfJ$Icon, Overlay2 as $a9pfJ$Overlay2, Popover as $a9pfJ$Popover} from \"@blueprintjs/core\";\nimport {useInDarkMode as $a9pfJ$useInDarkMode, SaveButton as $a9pfJ$SaveButton} from \"@macrostrat/ui-components\";\nimport {ColorPicker as $a9pfJ$ColorPicker} from \"@macrostrat/data-sheet\";\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequirea149\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequirea149\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\n\nvar $9wFEx = parcelRequire(\"9wFEx\");\n\n\nvar $edvRb = parcelRequire(\"edvRb\");\n\n\n\n\nconst $7f564edd0e07f138$var$h = (0, $a9pfJ$macrostrathyper).styled((0, (/*@__PURE__*/$parcel$interopDefault($9wFEx))));\nfunction $7f564edd0e07f138$export$9ebd91d75ddb6a8b({ types: types, selected: selected, dispatch: dispatch, selectedNodes: selectedNodes, tree: tree }) {\n const [selectedType, setSelectedType] = (0, $a9pfJ$useState)(null);\n const isSelectedNodes = selectedNodes.length > 0;\n const darkMode = (0, $a9pfJ$useInDarkMode)();\n const luminance = darkMode ? 0.9 : 0.4;\n return $7f564edd0e07f138$var$h(\"div.type-list-container\", [\n $7f564edd0e07f138$var$h(\"div.type-list-header\", isSelectedNodes && !selectedType ? \"Change selected nodes to:\" : \"Entity Types\"),\n $7f564edd0e07f138$var$h(\"div.type-list\", Array.from(types.values()).map((type)=>$7f564edd0e07f138$var$h($7f564edd0e07f138$var$TypeTag, {\n type: type,\n luminance: luminance,\n selectedType: selectedType,\n setSelectedType: setSelectedType,\n dispatch: dispatch,\n tree: tree,\n selectedNodes: selectedNodes,\n selected: selected,\n isSelectedNodes: isSelectedNodes\n }))),\n $7f564edd0e07f138$var$h($7f564edd0e07f138$var$AddType, {\n dispatch: dispatch\n })\n ]);\n}\nfunction $7f564edd0e07f138$var$collectMatchingIds(tree, id) {\n const ids = [];\n function traverse(node) {\n if (node.type.id === id) ids.push(node.id);\n if (Array.isArray(node.children)) node.children.forEach(traverse);\n }\n tree.forEach(traverse);\n return ids;\n}\nfunction $7f564edd0e07f138$var$AddType({ dispatch: dispatch }) {\n const [overlayOpen, setOverlayOpen] = (0, $a9pfJ$useState)(false);\n const saveHandler = (payload)=>{\n dispatch({\n type: \"add-entity-type\",\n payload: payload\n });\n setOverlayOpen(false);\n };\n return $7f564edd0e07f138$var$h(\"div.add-type-container\", [\n $7f564edd0e07f138$var$h(\"div.add-type\", {\n onClick: ()=>setOverlayOpen(true)\n }, [\n $7f564edd0e07f138$var$h(\"p.add-type-text\", \"Add new type\"),\n $7f564edd0e07f138$var$h((0, $a9pfJ$Icon), {\n icon: \"plus\"\n })\n ]),\n $7f564edd0e07f138$var$h($7f564edd0e07f138$var$TypeOverlay, {\n setOverlayOpen: setOverlayOpen,\n overlayOpen: overlayOpen,\n title: \"Add New Type\",\n saveHandler: saveHandler\n })\n ]);\n}\nfunction $7f564edd0e07f138$var$EditType({ dispatch: dispatch, type: type }) {\n const [editorOpen, setEditorOpen] = (0, $a9pfJ$useState)(false);\n const saveHandler = (payload)=>{\n dispatch({\n type: \"update-entity-type\",\n payload: payload\n });\n setEditorOpen(false);\n };\n return $7f564edd0e07f138$var$h(\"div.edit-type\", [\n $7f564edd0e07f138$var$h((0, $a9pfJ$Icon), {\n icon: \"edit\",\n className: \"edit-icon\",\n onClick: (e)=>{\n e.stopPropagation();\n setEditorOpen(true);\n }\n }),\n $7f564edd0e07f138$var$h($7f564edd0e07f138$var$TypeOverlay, {\n setOverlayOpen: setEditorOpen,\n overlayOpen: editorOpen,\n originalType: type,\n title: \"Edit Type\",\n saveHandler: saveHandler\n })\n ]);\n}\nfunction $7f564edd0e07f138$var$TypeOverlay({ setOverlayOpen: setOverlayOpen, overlayOpen: overlayOpen, originalType: originalType, title: title, saveHandler: saveHandler }) {\n const { name: name, description: description, color: color, id: id } = originalType || {};\n const [nameInput, setNameInput] = (0, $a9pfJ$useState)(name || \"\");\n const [descriptionInput, setDescriptionInput] = (0, $a9pfJ$useState)(description || \"\");\n const [colorInput, setColorInput] = (0, $a9pfJ$useState)(color || \"#fff\");\n return $7f564edd0e07f138$var$h((0, $a9pfJ$Overlay2), {\n isOpen: overlayOpen\n }, $7f564edd0e07f138$var$h(\"div.overlay-container\", $7f564edd0e07f138$var$h(\"div.add-type-overlay\", [\n $7f564edd0e07f138$var$h(\"h2.title\", [\n title,\n $7f564edd0e07f138$var$h((0, $a9pfJ$Icon), {\n icon: \"cross\",\n className: \"close-icon\",\n onClick: ()=>{\n setOverlayOpen(false);\n },\n style: {\n cursor: \"pointer\",\n color: \"red\"\n }\n })\n ]),\n $7f564edd0e07f138$var$h(\"div.form-group\", [\n $7f564edd0e07f138$var$h(\"div.text-inputs\", [\n $7f564edd0e07f138$var$h(\"div.form-field.name\", [\n $7f564edd0e07f138$var$h(\"p.label\", \"Name\"),\n $7f564edd0e07f138$var$h(\"input\", {\n type: \"text\",\n placeholder: \"Enter type name\",\n onChange: (e)=>setNameInput(e.target.value),\n value: nameInput\n })\n ]),\n $7f564edd0e07f138$var$h(\"div.form-field.form-description\", [\n $7f564edd0e07f138$var$h(\"p.label\", \"Description\"),\n $7f564edd0e07f138$var$h(\"input\", {\n type: \"text\",\n placeholder: \"Enter type description\",\n onChange: (e)=>setDescriptionInput(e.target.value),\n value: descriptionInput\n })\n ])\n ]),\n $7f564edd0e07f138$var$h(\"div.form-field.color\", [\n $7f564edd0e07f138$var$h(\"p.label\", \"Color\"),\n $7f564edd0e07f138$var$h((0, $a9pfJ$ColorPicker), {\n value: colorInput,\n onChange: (color)=>setColorInput(color),\n style: {\n width: \"100%\"\n }\n })\n ])\n ]),\n $7f564edd0e07f138$var$h((0, $a9pfJ$SaveButton), {\n className: \"save-btn\",\n small: true,\n onClick: ()=>saveHandler({\n name: nameInput,\n description: descriptionInput,\n color: colorInput,\n id: id\n })\n }, \"Save changes\")\n ])));\n}\nfunction $7f564edd0e07f138$var$TypeTag({ type: type, luminance: luminance, selectedType: selectedType, setSelectedType: setSelectedType, dispatch: dispatch, tree: tree, selectedNodes: selectedNodes, selected: selected, isSelectedNodes: isSelectedNodes }) {\n const { color: color, name: name, id: id, description: description } = type;\n const darkMode = (0, $a9pfJ$useInDarkMode)();\n const isSelected = id === selected?.id && selectedNodes.length > 0;\n const style = (0, $edvRb.getTagStyle)(color, {\n active: isSelected,\n highlighted: selectedNodes.length === 0\n });\n const payload = {\n id: id,\n name: name,\n color: color,\n description: description\n };\n const ids = $7f564edd0e07f138$var$collectMatchingIds(tree, id);\n const handleTagClick = ()=>{\n if (!isSelectedNodes && selectedType === null) {\n if (ids.length > 0) {\n setSelectedType(type);\n dispatch({\n type: \"toggle-node-selected\",\n payload: {\n ids: ids\n }\n });\n }\n } else if (isSelectedNodes && selectedType === null) {\n if (id === selected?.id && selectedNodes.length > 0) dispatch({\n type: \"toggle-node-selected\",\n payload: {\n ids: selectedNodes\n }\n });\n else dispatch({\n type: \"select-entity-type\",\n payload: payload\n });\n } else if (isSelectedNodes && selectedType.id === id) {\n setSelectedType(null);\n dispatch({\n type: \"toggle-node-selected\",\n payload: {\n ids: ids\n }\n });\n } else if (isSelectedNodes && selectedType.id !== id) {\n if (ids.length > 0) {\n setSelectedType(type);\n const oldIds = $7f564edd0e07f138$var$collectMatchingIds(tree, selectedType.id);\n dispatch({\n type: \"toggle-node-selected\",\n payload: {\n ids: oldIds\n }\n });\n dispatch({\n type: \"toggle-node-selected\",\n payload: {\n ids: ids\n }\n });\n }\n } else console.warn(\"Unexpected state in TypeTag click handler\", {\n isSelectedNodes: isSelectedNodes,\n selectedType: selectedType,\n selectedNodes: selectedNodes,\n ids: ids,\n id: id,\n selected: selected\n });\n };\n return $7f564edd0e07f138$var$h((0, $a9pfJ$Popover), {\n autoFocus: false,\n content: $7f564edd0e07f138$var$h(\"div.description\", description || \"No description available\"),\n interactionKind: \"hover\"\n }, $7f564edd0e07f138$var$h(\"div.type-tag\", {\n onClick: handleTagClick,\n style: {\n cursor: ids.length > 0 || isSelectedNodes && !selectedType ? \"pointer\" : \"\",\n color: \"black\",\n backgroundColor: style.backgroundColor,\n border: isSelected ? `1px solid var(--text-emphasized-color)` : `1px solid var(--background-color)`\n }\n }, $7f564edd0e07f138$var$h(\"div.type-container\", [\n $7f564edd0e07f138$var$h(\"div.type-name\", name),\n $7f564edd0e07f138$var$h(\"div.icons\", [\n $7f564edd0e07f138$var$h($7f564edd0e07f138$var$EditType, {\n dispatch: dispatch,\n type: type\n }),\n $7f564edd0e07f138$var$h((0, $a9pfJ$Icon), {\n icon: \"cross\",\n className: \"delete-type-icon\",\n style: {\n color: \"red\",\n cursor: \"pointer\"\n },\n onClick: (e)=>{\n e.stopPropagation();\n dispatch({\n type: \"delete-entity-type\",\n payload: {\n id: id\n }\n });\n }\n })\n ])\n ])));\n}\n\n\nexport {$7f564edd0e07f138$export$9ebd91d75ddb6a8b as TypeList};\n//# sourceMappingURL=feedback-components.e140ac86.js.map\n","import styles from \"./feedback.module.sass\";\nimport hyper from \"@macrostrat/hyper\";\n\nimport { getTagStyle } from \"../extractions\";\nimport { useState } from \"react\";\nimport { Icon, Popover, Overlay2 } from \"@blueprintjs/core\";\nimport { SaveButton } from \"@macrostrat/ui-components\";\nimport { useInDarkMode } from \"@macrostrat/ui-components\";\nimport { ColorPicker } from \"@macrostrat/data-sheet\";\n\nconst h = hyper.styled(styles);\n\nexport function TypeList({ types, selected, dispatch, selectedNodes, tree }) {\n const [selectedType, setSelectedType] = useState(null);\n const isSelectedNodes = selectedNodes.length > 0;\n const darkMode = useInDarkMode();\n const luminance = darkMode ? 0.9 : 0.4;\n\n return h(\"div.type-list-container\", [\n h(\n \"div.type-list-header\",\n isSelectedNodes && !selectedType\n ? \"Change selected nodes to:\"\n : \"Entity Types\",\n ),\n h(\n \"div.type-list\",\n Array.from(types.values()).map((type) =>\n h(TypeTag, {\n type,\n luminance,\n selectedType,\n setSelectedType,\n dispatch,\n tree,\n selectedNodes,\n selected,\n isSelectedNodes,\n }),\n ),\n ),\n h(AddType, { dispatch }),\n ]);\n}\n\nfunction collectMatchingIds(tree, id) {\n const ids = [];\n\n function traverse(node) {\n if (node.type.id === id) {\n ids.push(node.id);\n }\n if (Array.isArray(node.children)) {\n node.children.forEach(traverse);\n }\n }\n\n tree.forEach(traverse);\n return ids;\n}\n\nfunction AddType({ dispatch }) {\n const [overlayOpen, setOverlayOpen] = useState(false);\n\n const saveHandler = (payload) => {\n dispatch({\n type: \"add-entity-type\",\n payload,\n });\n setOverlayOpen(false);\n };\n\n return h(\"div.add-type-container\", [\n h(\"div.add-type\", { onClick: () => setOverlayOpen(true) }, [\n h(\"p.add-type-text\", \"Add new type\"),\n h(Icon, { icon: \"plus\" }),\n ]),\n h(TypeOverlay, {\n setOverlayOpen,\n overlayOpen,\n title: \"Add New Type\",\n saveHandler,\n }),\n ]);\n}\n\nfunction EditType({ dispatch, type }) {\n const [editorOpen, setEditorOpen] = useState(false);\n\n const saveHandler = (payload) => {\n dispatch({\n type: \"update-entity-type\",\n payload,\n });\n setEditorOpen(false);\n };\n\n return h(\"div.edit-type\", [\n h(Icon, {\n icon: \"edit\",\n className: \"edit-icon\",\n onClick: (e) => {\n e.stopPropagation();\n setEditorOpen(true);\n },\n }),\n h(TypeOverlay, {\n setOverlayOpen: setEditorOpen,\n overlayOpen: editorOpen,\n originalType: type,\n title: \"Edit Type\",\n saveHandler,\n }),\n ]);\n}\n\nfunction TypeOverlay({\n setOverlayOpen,\n overlayOpen,\n originalType,\n title,\n saveHandler,\n}) {\n const { name, description, color, id } = originalType || {};\n\n const [nameInput, setNameInput] = useState(name || \"\");\n const [descriptionInput, setDescriptionInput] = useState(description || \"\");\n const [colorInput, setColorInput] = useState(color || \"#fff\");\n\n return h(\n Overlay2,\n {\n isOpen: overlayOpen,\n },\n h(\n \"div.overlay-container\",\n h(\"div.add-type-overlay\", [\n h(\"h2.title\", [\n title,\n h(Icon, {\n icon: \"cross\",\n className: \"close-icon\",\n onClick: () => {\n setOverlayOpen(false);\n },\n style: { cursor: \"pointer\", color: \"red\" },\n }),\n ]),\n h(\"div.form-group\", [\n h(\"div.text-inputs\", [\n h(\"div.form-field.name\", [\n h(\"p.label\", \"Name\"),\n h(\"input\", {\n type: \"text\",\n placeholder: \"Enter type name\",\n onChange: (e) => setNameInput(e.target.value),\n value: nameInput,\n }),\n ]),\n h(\"div.form-field.form-description\", [\n h(\"p.label\", \"Description\"),\n h(\"input\", {\n type: \"text\",\n placeholder: \"Enter type description\",\n onChange: (e) => setDescriptionInput(e.target.value),\n value: descriptionInput,\n }),\n ]),\n ]),\n h(\"div.form-field.color\", [\n h(\"p.label\", \"Color\"),\n h(ColorPicker, {\n value: colorInput,\n onChange: (color) => setColorInput(color),\n style: { width: \"100%\" },\n }),\n ]),\n ]),\n h(\n SaveButton,\n {\n className: \"save-btn\",\n small: true,\n onClick: () =>\n saveHandler({\n name: nameInput,\n description: descriptionInput,\n color: colorInput,\n id,\n }),\n },\n \"Save changes\",\n ),\n ]),\n ),\n );\n}\n\nfunction TypeTag({\n type,\n luminance,\n selectedType,\n setSelectedType,\n dispatch,\n tree,\n selectedNodes,\n selected,\n isSelectedNodes,\n}) {\n const { color, name, id, description } = type;\n const darkMode = useInDarkMode();\n const isSelected = id === selected?.id && selectedNodes.length > 0;\n\n const style = getTagStyle(color, {\n active: isSelected,\n highlighted: selectedNodes.length === 0,\n });\n\n const payload = {\n id,\n name,\n color,\n description,\n };\n\n const ids = collectMatchingIds(tree, id);\n\n const handleTagClick = () => {\n if (!isSelectedNodes && selectedType === null) {\n if (ids.length > 0) {\n setSelectedType(type);\n dispatch({ type: \"toggle-node-selected\", payload: { ids } });\n }\n } else if (isSelectedNodes && selectedType === null) {\n if (id === selected?.id && selectedNodes.length > 0) {\n dispatch({\n type: \"toggle-node-selected\",\n payload: { ids: selectedNodes },\n });\n } else {\n dispatch({ type: \"select-entity-type\", payload });\n }\n } else if (isSelectedNodes && selectedType.id === id) {\n setSelectedType(null);\n dispatch({ type: \"toggle-node-selected\", payload: { ids } });\n } else if (isSelectedNodes && selectedType.id !== id) {\n if (ids.length > 0) {\n setSelectedType(type);\n const oldIds = collectMatchingIds(tree, selectedType.id);\n\n dispatch({ type: \"toggle-node-selected\", payload: { ids: oldIds } });\n dispatch({ type: \"toggle-node-selected\", payload: { ids } });\n }\n } else {\n console.warn(\"Unexpected state in TypeTag click handler\", {\n isSelectedNodes,\n selectedType,\n selectedNodes,\n ids,\n id,\n selected,\n });\n }\n };\n\n return h(\n Popover,\n {\n autoFocus: false,\n content: h(\"div.description\", description || \"No description available\"),\n interactionKind: \"hover\",\n },\n h(\n \"div.type-tag\",\n {\n onClick: handleTagClick,\n style: {\n cursor:\n ids.length > 0 || (isSelectedNodes && !selectedType)\n ? \"pointer\"\n : \"\",\n color: \"black\",\n backgroundColor: style.backgroundColor,\n border: isSelected\n ? `1px solid var(--text-emphasized-color)`\n : `1px solid var(--background-color)`,\n },\n },\n h(\"div.type-container\", [\n h(\"div.type-name\", name),\n h(\"div.icons\", [\n h(EditType, {\n dispatch,\n type,\n }),\n h(Icon, {\n icon: \"cross\",\n className: \"delete-type-icon\",\n style: { color: \"red\", cursor: \"pointer\" },\n onClick: (e) => {\n e.stopPropagation();\n dispatch({\n type: \"delete-entity-type\",\n payload: { id },\n });\n },\n }),\n ]),\n ]),\n ),\n );\n}\n"],"names":["$a9pfJ$macrostrathyper","useState","$a9pfJ$useState","Icon","$a9pfJ$Icon","Overlay2","$a9pfJ$Overlay2","Popover","$a9pfJ$Popover","useInDarkMode","$a9pfJ$useInDarkMode","SaveButton","$a9pfJ$SaveButton","ColorPicker","$a9pfJ$ColorPicker","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$9wFEx","$edvRb","$7f564edd0e07f138$var$h","styled","a","__esModule","default","$7f564edd0e07f138$export$9ebd91d75ddb6a8b","types","selected","dispatch","selectedNodes","tree","selectedType","setSelectedType","isSelectedNodes","length","luminance","darkMode","Array","from","values","map","type","$7f564edd0e07f138$var$TypeTag","$7f564edd0e07f138$var$AddType","$7f564edd0e07f138$var$collectMatchingIds","ids","forEach","traverse","node","push","isArray","children","overlayOpen","setOverlayOpen","onClick","icon","$7f564edd0e07f138$var$TypeOverlay","title","saveHandler","payload","$7f564edd0e07f138$var$EditType","editorOpen","setEditorOpen","className","e","stopPropagation","originalType","name","description","color","nameInput","setNameInput","descriptionInput","setDescriptionInput","colorInput","setColorInput","isOpen","style","cursor","placeholder","onChange","target","value","width","small","isSelected","getTagStyle","active","highlighted","autoFocus","content","interactionKind","console","warn","backgroundColor","border","TypeList"],"version":3,"file":"feedback-components.e140ac86.js.map","sourceRoot":"../../../../"}
@@ -0,0 +1,2 @@
1
+ import"./feedback-components.69d0ccd0.js";import"./feedback-components.b9317f9c.js";import{Divider as e,Switch as a,Icon as t,Overlay2 as i}from"@blueprintjs/core";import{Select as n}from"@blueprintjs/select";import r from"@macrostrat/hyper";import{useState as l}from"react";import{useAPIResult as o,DataField as c,JSONView as d,SaveButton as m}from"@macrostrat/ui-components";import{LithologyTag as s}from"@macrostrat/data-components";var h=globalThis,p={},u={},v=h.parcelRequirea149;null==v&&((v=function(e){if(e in p)return p[e].exports;if(e in u){var a=u[e];delete u[e];var t={id:e,exports:{}};return p[e]=t,a.call(t.exports,t,t.exports),t.exports}var i=Error("Cannot find module '"+e+"'");throw i.code="MODULE_NOT_FOUND",i}).register=function(e,a){u[e]=a},h.parcelRequirea149=v),v.register;var f=v("3OP12"),_=v("9wFEx");let y=r.styled(_&&_.__esModule?_.default:_);function k({match:i,setMatchLinks:n,matchLinks:r,selectedNodes:o,tree:c,dispatch:d}){var m,s;let h,[p,u]=l(!1),v=null;return 1===o.length&&(m=c,s=o[0],h=null,m.forEach(function e(a){if(a.id===s)return h=a,!0;if(Array.isArray(a.children)){for(let t of a.children)if(e(t))return!0}return!1}),v=h),y.if(r)("div",[y(e),y(a,{label:"Show matches",checked:null!==i,onChange:e=>{n(null===i?r||{}:null)}}),y.if(v&&i)(f.Match,{data:v?.match,matchLinks:r,dispatch:d,nodeId:v?.id}),y.if(1==o.length&&!v?.match&&i)("div.add-match-container",[y("div.add-type",{onClick:()=>{u(!0)}},[y("p.add-match-text","Add match"),y(t,{icon:"plus"})]),y(b,{isOpen:p,setOverlayOpen:u,nodeMatch:v,dispatch:d})])])}function b({isOpen:e,setOverlayOpen:a,nodeMatch:r,dispatch:h}){let[p,u]=l(r?.name||""),[v,f]=l(y("div","Select a match")),[_,k]=l(!0),[b,g]=l({}),C=o("https://dev.macrostrat.org/api/pg/type_lookup?name=ilike.*"+p+"*"),O=C?.map(e=>{let a=e.type||"";return"lith"===a?y("div",{onClick:()=>{g({lith_id:e.id,name:e.name})}},y(c,{className:"match-item",label:"Lithology",value:y(s,{data:{name:e.name,id:e.lith_id,color:e.color}})})):"strat_name"===a?y("div",{onClick:()=>{g({strat_name_id:e.id,name:e.name})}},y(c,{className:"match-item",label:"Stratigraphic name",value:y(s,{data:{name:e.name,id:e.id,color:e.color}})})):"lith_att"===a?y("div",{onClick:()=>{g({lith_att_id:e.lith_att_id,name:e.name})}},y(c,{className:"match-item",label:"Lithology attribute",value:y(s,{data:{name:e.name,id:e.lith_att_id}}),onClick:()=>{g({lith_att_id:e.lith_att_id,name:e.name})}})):("interval"===a&&y("div",{onClick:()=>{g({int_id:e.id,name:e.name})}},y(c,{label:"Interval",className:"match-item",value:y(s,{data:{name:e.name,id:e.id}}),onClick:()=>{g({int_id:e.id,name:e.name})}})),y(d,{data:e}))});return y(i,{isOpen:e},y("div.overlay-container",y("div.add-type-overlay",[y("h2.title",["Add match with "+r.name,y(t,{icon:"cross",className:"close-icon",onClick:()=>{a(!1)},style:{cursor:"pointer",color:"red"}})]),y("div.form-group",[y(n,{items:O||[],itemRenderer:(e,{handleClick:a})=>y("div.match-item",{onClick:a},e),onItemSelect:e=>{k(!1),f(e)},onQueryChange:e=>u(e),popoverProps:{minimal:!0},query:p,placeholder:"Enter match name"},v)]),y(m,{className:"save-btn",small:!0,onClick:()=>{h({type:"add-match",payload:{id:r.id,payload:b}}),a(!1)},disabled:_},"Save changes")])))}export{k as Matches};
2
+ //# sourceMappingURL=feedback-components.f8373b58.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"A,M,oD,A,O,oD,A,Q,W,C,C,U,C,C,Q,C,C,Y,C,K,mB,A,Q,U,C,K,qB,A,Q,M,mB,A,Q,Y,C,K,O,A,Q,gB,C,C,a,C,C,Y,C,C,c,C,K,2B,A,Q,gB,C,K,6B,C,I,E,W,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,E,Q,C,I,E,E,S,E,E,SCWA,IAAM,EAAI,AAAA,EAAM,MAAM,C,AAAC,G,AAAA,E,U,C,AAAA,E,O,CAAA,GAEhB,SAAS,EAAQ,CAAA,MACtB,CAAK,CAAA,cACL,CAAa,CAAA,WACb,CAAU,CAAA,cACV,CAAa,CAAA,KACb,CAAI,CAAA,SACJ,CAAQ,CACT,MA8CyB,EAAM,EA7C9B,IA8CI,EA9CE,CAAC,EAAa,EAAe,CAAG,AAAA,EAAS,CAAA,GAE3C,EAAY,KAKhB,OAJI,AAAyB,IAAzB,EAAc,MAAM,GA0CA,EAzCO,EAyCD,EAzCO,CAAa,CAAC,EAAE,CA0CjD,EAAQ,KAeZ,EAAK,OAAO,CAbZ,SAAS,EAAS,CAAI,EACpB,GAAI,EAAK,EAAE,GAAK,EAEd,OADA,EAAQ,EACD,CAAA,EAET,GAAI,MAAM,OAAO,CAAC,EAAK,QAAQ,EAC7B,CAAA,IAAK,IAAM,KAAS,EAAK,QAAQ,CAC/B,GAAI,EAAS,GAAQ,MAAO,CAAA,CAC9B,CAEF,MAAO,CAAA,CACT,GAvDE,EA0DK,GAvDA,EAAE,EAAE,CAAC,GAAY,MAAO,CAC7B,EAAE,GACF,EAAE,EAAQ,CACR,MAAO,eACP,QAAS,AAAU,OAAV,EACT,SAAU,AAAC,IACT,EAAc,AAAU,OAAV,EAAiB,GAAc,CAAC,EAAI,KACpD,CACF,GACA,EAAE,EAAE,CAAC,GAAa,GAAO,EAAA,KAAI,CAAG,CAC9B,KAAM,GAAW,MACjB,WAAY,EACZ,SAAA,EACA,OAAQ,GAAW,EACrB,GACA,EAAE,EAAE,CA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","sources":["<anon>","packages/feedback-components/src/feedback/matches.ts"],"sourcesContent":["import \"./feedback-components.69d0ccd0.js\";\nimport \"./feedback-components.b9317f9c.js\";\nimport {Divider as $locXJ$Divider, Switch as $locXJ$Switch, Icon as $locXJ$Icon, Overlay2 as $locXJ$Overlay2} from \"@blueprintjs/core\";\nimport {Select as $locXJ$Select} from \"@blueprintjs/select\";\nimport $locXJ$macrostrathyper from \"@macrostrat/hyper\";\nimport {useState as $locXJ$useState} from \"react\";\nimport {useAPIResult as $locXJ$useAPIResult, DataField as $locXJ$DataField, JSONView as $locXJ$JSONView, SaveButton as $locXJ$SaveButton} from \"@macrostrat/ui-components\";\nimport {LithologyTag as $locXJ$LithologyTag} from \"@macrostrat/data-components\";\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequirea149\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequirea149\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\n\n\nvar $3OP12 = parcelRequire(\"3OP12\");\n\n\nvar $9wFEx = parcelRequire(\"9wFEx\");\n\n\n\n\nconst $7accc8160d3205c1$var$h = (0, $locXJ$macrostrathyper).styled((0, (/*@__PURE__*/$parcel$interopDefault($9wFEx))));\nfunction $7accc8160d3205c1$export$6479cfcac2b87c0({ match: match, setMatchLinks: setMatchLinks, matchLinks: matchLinks, selectedNodes: selectedNodes, tree: tree, dispatch: dispatch }) {\n const [overlayOpen, setOverlayOpen] = (0, $locXJ$useState)(false);\n let nodeMatch = null;\n if (selectedNodes.length === 1) nodeMatch = $7accc8160d3205c1$var$findMatchingNode(tree, selectedNodes[0]);\n return $7accc8160d3205c1$var$h.if(matchLinks)(\"div\", [\n $7accc8160d3205c1$var$h((0, $locXJ$Divider)),\n $7accc8160d3205c1$var$h((0, $locXJ$Switch), {\n label: \"Show matches\",\n checked: match !== null,\n onChange: (e)=>{\n setMatchLinks(match === null ? matchLinks || {} : null);\n }\n }),\n $7accc8160d3205c1$var$h.if(nodeMatch && match)((0, $3OP12.Match), {\n data: nodeMatch?.match,\n matchLinks: matchLinks,\n dispatch: dispatch,\n nodeId: nodeMatch?.id\n }),\n $7accc8160d3205c1$var$h.if(selectedNodes.length == 1 && !nodeMatch?.match && match)(\"div.add-match-container\", [\n $7accc8160d3205c1$var$h(\"div.add-type\", {\n onClick: ()=>{\n setOverlayOpen(true);\n }\n }, [\n $7accc8160d3205c1$var$h(\"p.add-match-text\", \"Add match\"),\n $7accc8160d3205c1$var$h((0, $locXJ$Icon), {\n icon: \"plus\"\n })\n ]),\n $7accc8160d3205c1$var$h($7accc8160d3205c1$var$MatchOverlay, {\n isOpen: overlayOpen,\n setOverlayOpen: setOverlayOpen,\n nodeMatch: nodeMatch,\n dispatch: dispatch\n })\n ])\n ]);\n}\nfunction $7accc8160d3205c1$var$findMatchingNode(tree, nodeId) {\n let match = null;\n function traverse(node) {\n if (node.id === nodeId) {\n match = node;\n return true;\n }\n if (Array.isArray(node.children)) for (const child of node.children){\n if (traverse(child)) return true;\n }\n return false;\n }\n tree.forEach(traverse);\n return match;\n}\nfunction $7accc8160d3205c1$var$MatchOverlay({ isOpen: isOpen, setOverlayOpen: setOverlayOpen, nodeMatch: nodeMatch, dispatch: dispatch }) {\n const [inputValue, setInputValue] = (0, $locXJ$useState)(nodeMatch?.name || \"\");\n const [selectedItem, setSelectedItem] = (0, $locXJ$useState)($7accc8160d3205c1$var$h(\"div\", \"Select a match\"));\n const [disabled, setDisabled] = (0, $locXJ$useState)(true);\n const [payload, setPayload] = (0, $locXJ$useState)({});\n const data = (0, $locXJ$useAPIResult)(\"https://dev.macrostrat.org/api/pg/type_lookup?name=ilike.*\" + inputValue + \"*\");\n const items = data?.map((data)=>{\n const type = data.type || \"\";\n if (type === \"lith\") return $7accc8160d3205c1$var$h(\"div\", {\n onClick: ()=>{\n setPayload({\n lith_id: data.id,\n name: data.name\n });\n }\n }, $7accc8160d3205c1$var$h((0, $locXJ$DataField), {\n className: \"match-item\",\n label: \"Lithology\",\n value: $7accc8160d3205c1$var$h((0, $locXJ$LithologyTag), {\n data: {\n name: data.name,\n id: data.lith_id,\n color: data.color\n }\n })\n }));\n if (type === \"strat_name\") return $7accc8160d3205c1$var$h(\"div\", {\n onClick: ()=>{\n setPayload({\n strat_name_id: data.id,\n name: data.name\n });\n }\n }, $7accc8160d3205c1$var$h((0, $locXJ$DataField), {\n className: \"match-item\",\n label: \"Stratigraphic name\",\n value: $7accc8160d3205c1$var$h((0, $locXJ$LithologyTag), {\n data: {\n name: data.name,\n id: data.id,\n color: data.color\n }\n })\n }));\n if (type === \"lith_att\") return $7accc8160d3205c1$var$h(\"div\", {\n onClick: ()=>{\n setPayload({\n lith_att_id: data.lith_att_id,\n name: data.name\n });\n }\n }, $7accc8160d3205c1$var$h((0, $locXJ$DataField), {\n className: \"match-item\",\n label: \"Lithology attribute\",\n value: $7accc8160d3205c1$var$h((0, $locXJ$LithologyTag), {\n data: {\n name: data.name,\n id: data.lith_att_id\n }\n }),\n onClick: ()=>{\n setPayload({\n lith_att_id: data.lith_att_id,\n name: data.name\n });\n }\n }));\n if (type === \"interval\") $7accc8160d3205c1$var$h(\"div\", {\n onClick: ()=>{\n setPayload({\n int_id: data.id,\n name: data.name\n });\n }\n }, $7accc8160d3205c1$var$h((0, $locXJ$DataField), {\n label: \"Interval\",\n className: \"match-item\",\n value: $7accc8160d3205c1$var$h((0, $locXJ$LithologyTag), {\n data: {\n name: data.name,\n id: data.id\n }\n }),\n onClick: ()=>{\n setPayload({\n int_id: data.id,\n name: data.name\n });\n }\n }));\n return $7accc8160d3205c1$var$h((0, $locXJ$JSONView), {\n data: data\n });\n });\n return $7accc8160d3205c1$var$h((0, $locXJ$Overlay2), {\n isOpen: isOpen\n }, $7accc8160d3205c1$var$h(\"div.overlay-container\", $7accc8160d3205c1$var$h(\"div.add-type-overlay\", [\n $7accc8160d3205c1$var$h(\"h2.title\", [\n \"Add match with \" + nodeMatch.name,\n $7accc8160d3205c1$var$h((0, $locXJ$Icon), {\n icon: \"cross\",\n className: \"close-icon\",\n onClick: ()=>{\n setOverlayOpen(false);\n },\n style: {\n cursor: \"pointer\",\n color: \"red\"\n }\n })\n ]),\n $7accc8160d3205c1$var$h(\"div.form-group\", [\n $7accc8160d3205c1$var$h((0, $locXJ$Select), {\n items: items || [],\n itemRenderer: (item, { handleClick: handleClick })=>{\n return $7accc8160d3205c1$var$h(\"div.match-item\", {\n onClick: handleClick\n }, item);\n },\n onItemSelect: (item)=>{\n setDisabled(false);\n setSelectedItem(item);\n },\n onQueryChange: (query)=>setInputValue(query),\n popoverProps: {\n minimal: true\n },\n query: inputValue,\n placeholder: \"Enter match name\"\n }, selectedItem)\n ]),\n $7accc8160d3205c1$var$h((0, $locXJ$SaveButton), {\n className: \"save-btn\",\n small: true,\n onClick: ()=>{\n // Handle save changes\n dispatch({\n type: \"add-match\",\n payload: {\n id: nodeMatch.id,\n payload: payload\n }\n });\n setOverlayOpen(false);\n },\n disabled: disabled\n }, \"Save changes\")\n ])));\n}\n\n\nexport {$7accc8160d3205c1$export$6479cfcac2b87c0 as Matches};\n//# sourceMappingURL=feedback-components.f8373b58.js.map\n","import { Switch } from \"@blueprintjs/core\";\nimport { Match } from \"./text-visualizer\";\nimport { Select } from \"@blueprintjs/select\";\nimport styles from \"./feedback.module.sass\";\nimport hyper from \"@macrostrat/hyper\";\nimport { useState } from \"react\";\nimport { Icon, Divider, Overlay2 } from \"@blueprintjs/core\";\nimport { JSONView, SaveButton } from \"@macrostrat/ui-components\";\nimport { useAPIResult, DataField } from \"@macrostrat/ui-components\";\nimport { LithologyTag } from \"@macrostrat/data-components\";\n\nconst h = hyper.styled(styles);\n\nexport function Matches({\n match,\n setMatchLinks,\n matchLinks,\n selectedNodes,\n tree,\n dispatch,\n}) {\n const [overlayOpen, setOverlayOpen] = useState(false);\n\n let nodeMatch = null;\n if (selectedNodes.length === 1) {\n nodeMatch = findMatchingNode(tree, selectedNodes[0]);\n }\n\n return h.if(matchLinks)(\"div\", [\n h(Divider),\n h(Switch, {\n label: \"Show matches\",\n checked: match !== null,\n onChange: (e) => {\n setMatchLinks(match === null ? matchLinks || {} : null);\n },\n }),\n h.if(nodeMatch && match)(Match, {\n data: nodeMatch?.match,\n matchLinks: matchLinks,\n dispatch,\n nodeId: nodeMatch?.id,\n }),\n h.if(selectedNodes.length == 1 && !nodeMatch?.match && match)(\n \"div.add-match-container\",\n [\n h(\n \"div.add-type\",\n {\n onClick: () => {\n setOverlayOpen(true);\n },\n },\n [h(\"p.add-match-text\", \"Add match\"), h(Icon, { icon: \"plus\" })],\n ),\n h(MatchOverlay, {\n isOpen: overlayOpen,\n setOverlayOpen,\n nodeMatch,\n dispatch,\n }),\n ],\n ),\n ]);\n}\n\nfunction findMatchingNode(tree, nodeId) {\n let match = null;\n\n function traverse(node) {\n if (node.id === nodeId) {\n match = node;\n return true;\n }\n if (Array.isArray(node.children)) {\n for (const child of node.children) {\n if (traverse(child)) return true;\n }\n }\n return false;\n }\n\n tree.forEach(traverse);\n return match;\n}\n\nfunction MatchOverlay({ isOpen, setOverlayOpen, nodeMatch, dispatch }) {\n const [inputValue, setInputValue] = useState(nodeMatch?.name || \"\");\n const [selectedItem, setSelectedItem] = useState(h(\"div\", \"Select a match\"));\n const [disabled, setDisabled] = useState(true);\n const [payload, setPayload] = useState({});\n\n const data = useAPIResult(\n \"https://dev.macrostrat.org/api/pg/type_lookup?name=ilike.*\" +\n inputValue +\n \"*\",\n );\n const items = data?.map((data) => {\n const type = data.type || \"\";\n\n if (type === \"lith\") {\n return h(\n \"div\",\n {\n onClick: () => {\n setPayload({ lith_id: data.id, name: data.name });\n },\n },\n h(DataField, {\n className: \"match-item\",\n label: \"Lithology\",\n value: h(LithologyTag, {\n data: { name: data.name, id: data.lith_id, color: data.color },\n }),\n }),\n );\n }\n\n if (type === \"strat_name\") {\n return h(\n \"div\",\n {\n onClick: () => {\n setPayload({ strat_name_id: data.id, name: data.name });\n },\n },\n h(DataField, {\n className: \"match-item\",\n label: \"Stratigraphic name\",\n value: h(LithologyTag, {\n data: { name: data.name, id: data.id, color: data.color },\n }),\n }),\n );\n }\n\n if (type === \"lith_att\") {\n return h(\n \"div\",\n {\n onClick: () => {\n setPayload({ lith_att_id: data.lith_att_id, name: data.name });\n },\n },\n h(DataField, {\n className: \"match-item\",\n label: \"Lithology attribute\",\n value: h(LithologyTag, {\n data: { name: data.name, id: data.lith_att_id },\n }),\n onClick: () => {\n setPayload({ lith_att_id: data.lith_att_id, name: data.name });\n },\n }),\n );\n }\n\n if (type === \"interval\") {\n h(\n \"div\",\n {\n onClick: () => {\n setPayload({ int_id: data.id, name: data.name });\n },\n },\n h(DataField, {\n label: \"Interval\",\n className: \"match-item\",\n value: h(LithologyTag, {\n data: { name: data.name, id: data.id },\n }),\n onClick: () => {\n setPayload({ int_id: data.id, name: data.name });\n },\n }),\n );\n }\n\n return h(JSONView, { data });\n });\n\n return h(\n Overlay2,\n {\n isOpen,\n },\n h(\n \"div.overlay-container\",\n h(\"div.add-type-overlay\", [\n h(\"h2.title\", [\n \"Add match with \" + nodeMatch.name,\n h(Icon, {\n icon: \"cross\",\n className: \"close-icon\",\n onClick: () => {\n setOverlayOpen(false);\n },\n style: { cursor: \"pointer\", color: \"red\" },\n }),\n ]),\n h(\"div.form-group\", [\n h(\n Select,\n {\n items: items || [],\n itemRenderer: (item, { handleClick }) => {\n return h(\"div.match-item\", { onClick: handleClick }, item);\n },\n onItemSelect: (item) => {\n setDisabled(false);\n setSelectedItem(item);\n },\n onQueryChange: (query) => setInputValue(query),\n popoverProps: { minimal: true },\n query: inputValue,\n placeholder: \"Enter match name\",\n },\n selectedItem,\n ),\n ]),\n h(\n SaveButton,\n {\n className: \"save-btn\",\n small: true,\n onClick: () => {\n // Handle save changes\n dispatch({\n type: \"add-match\",\n payload: { id: nodeMatch.id, payload },\n });\n setOverlayOpen(false);\n },\n disabled,\n },\n \"Save changes\",\n ),\n ]),\n ),\n );\n}\n"],"names":["Divider","$locXJ$Divider","Switch","$locXJ$Switch","Icon","$locXJ$Icon","Overlay2","$locXJ$Overlay2","Select","$locXJ$Select","$locXJ$macrostrathyper","useState","$locXJ$useState","useAPIResult","$locXJ$useAPIResult","DataField","$locXJ$DataField","JSONView","$locXJ$JSONView","SaveButton","$locXJ$SaveButton","LithologyTag","$locXJ$LithologyTag","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$3OP12","$9wFEx","$7accc8160d3205c1$var$h","styled","a","__esModule","default","$7accc8160d3205c1$export$6479cfcac2b87c0","match","setMatchLinks","matchLinks","selectedNodes","tree","dispatch","nodeId","overlayOpen","setOverlayOpen","nodeMatch","length","forEach","traverse","node","Array","isArray","children","child","if","label","checked","onChange","e","Match","data","onClick","icon","$7accc8160d3205c1$var$MatchOverlay","isOpen","inputValue","setInputValue","name","selectedItem","setSelectedItem","disabled","setDisabled","payload","setPayload","items","map","type","lith_id","className","value","color","strat_name_id","lith_att_id","int_id","style","cursor","itemRenderer","item","handleClick","onItemSelect","onQueryChange","query","popoverProps","minimal","placeholder","small","Matches"],"version":3,"file":"feedback-components.f8373b58.js.map","sourceRoot":"../../../../"}
@@ -1,2 +1,2 @@
1
- import"./feedback-components.8b03e8be.js";import"./feedback-components.561466ac.js";function e(e,a){return Object.keys(a).forEach(function(t){"default"===t||"__esModule"===t||Object.prototype.hasOwnProperty.call(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:function(){return a[t]}})}),e}var a=globalThis,t={},r={},c=a.parcelRequirea149;null==c&&((c=function(e){if(e in t)return t[e].exports;if(e in r){var a=r[e];delete r[e];var c={id:e,exports:{}};return t[e]=c,a.call(c.exports,c,c.exports),c.exports}var o=Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}).register=function(e,a){r[e]=a},a.parcelRequirea149=c),c.register;var o={},n=c("edvRb"),d=c("aZPCw");e(o,n),e(o,d);export{$8c534c0378e15a46$export$c4b91360064ad200 as buildHighlights,$8c534c0378e15a46$export$d60b563f571177d as enhanceData,$8c534c0378e15a46$export$35baa338324d8550 as getTagStyle,$8c534c0378e15a46$export$2b07158757c249e0 as ExtractionContext,$8c534c0378e15a46$export$4eb2a0ce903ce967 as ModelInfo,$8c534c0378e15a46$export$117e56c71b172cde as EntityTag,$2c86488f2f3c1edd$export$a90600c9da52b40c as FeedbackComponent,$330ae695507d96f5$export$8d9dbb7a64bf2a5e as treeToGraph};
1
+ import"./feedback-components.b22d37d1.js";import"./feedback-components.0eef8d0c.js";function e(e,a){return Object.keys(a).forEach(function(t){"default"===t||"__esModule"===t||Object.prototype.hasOwnProperty.call(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:function(){return a[t]}})}),e}var a=globalThis,t={},r={},c=a.parcelRequirea149;null==c&&((c=function(e){if(e in t)return t[e].exports;if(e in r){var a=r[e];delete r[e];var c={id:e,exports:{}};return t[e]=c,a.call(c.exports,c,c.exports),c.exports}var o=Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}).register=function(e,a){r[e]=a},a.parcelRequirea149=c),c.register;var o={},n=c("edvRb"),d=c("aZPCw");e(o,n),e(o,d);export{$8c534c0378e15a46$export$c4b91360064ad200 as buildHighlights,$8c534c0378e15a46$export$d60b563f571177d as enhanceData,$8c534c0378e15a46$export$35baa338324d8550 as getTagStyle,$8c534c0378e15a46$export$2b07158757c249e0 as ExtractionContext,$8c534c0378e15a46$export$4eb2a0ce903ce967 as ModelInfo,$8c534c0378e15a46$export$117e56c71b172cde as EntityTag,$2c86488f2f3c1edd$export$a90600c9da52b40c as FeedbackComponent,$330ae695507d96f5$export$8d9dbb7a64bf2a5e as treeToGraph};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"mappings":"A,M,oD,A,O,oD,C,S,E,C,C,C,E,O,O,I,C,G,O,C,S,C,E,Y,G,A,e,G,O,S,C,c,C,I,C,E,I,O,c,C,E,E,C,W,C,E,I,W,O,C,C,E,A,C,E,G,C,C,I,E,W,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,E,Q,C,I,E,C,E,E,E,S,E,E,S,E,E,G,E,E,U,6C,e,C,4C,W,C,6C,W,C,6C,iB,C,6C,S,C,6C,S,C,6C,iB,C,6C,W","sources":["<anon>","packages/feedback-components/src/index.ts"],"sourcesContent":["import \"./feedback-components.8b03e8be.js\";\nimport \"./feedback-components.561466ac.js\";\n\n\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule' || Object.prototype.hasOwnProperty.call(dest, key)) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n }\n });\n });\n\n return dest;\n}\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequirea149\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequirea149\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\nvar $c688386f08592f9c$exports = {};\n\nvar $edvRb = parcelRequire(\"edvRb\");\n\nvar $aZPCw = parcelRequire(\"aZPCw\");\n$parcel$exportWildcard($c688386f08592f9c$exports, $edvRb);\n$parcel$exportWildcard($c688386f08592f9c$exports, $aZPCw);\n\n\nexport {$8c534c0378e15a46$export$c4b91360064ad200 as buildHighlights, $8c534c0378e15a46$export$d60b563f571177d as enhanceData, $8c534c0378e15a46$export$35baa338324d8550 as getTagStyle, $8c534c0378e15a46$export$2b07158757c249e0 as ExtractionContext, $8c534c0378e15a46$export$4eb2a0ce903ce967 as ModelInfo, $8c534c0378e15a46$export$117e56c71b172cde as EntityTag, $2c86488f2f3c1edd$export$a90600c9da52b40c as FeedbackComponent, $330ae695507d96f5$export$8d9dbb7a64bf2a5e as treeToGraph};\n//# sourceMappingURL=index.js.map\n","export * from \"./extractions\";\nexport * from \"./feedback\";\n"],"names":["$parcel$exportWildcard","dest","source","Object","keys","forEach","key","prototype","hasOwnProperty","call","defineProperty","enumerable","get","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","err","Error","code","register","$c688386f08592f9c$exports","$edvRb","$aZPCw","$8c534c0378e15a46$export$c4b91360064ad200","buildHighlights","$8c534c0378e15a46$export$d60b563f571177d","enhanceData","$8c534c0378e15a46$export$35baa338324d8550","getTagStyle","$8c534c0378e15a46$export$2b07158757c249e0","ExtractionContext","$8c534c0378e15a46$export$4eb2a0ce903ce967","ModelInfo","$8c534c0378e15a46$export$117e56c71b172cde","EntityTag","$2c86488f2f3c1edd$export$a90600c9da52b40c","FeedbackComponent","$330ae695507d96f5$export$8d9dbb7a64bf2a5e","treeToGraph"],"version":3,"file":"index.js.map","sourceRoot":"../../../../"}
1
+ {"mappings":"A,M,oD,A,O,oD,C,S,E,C,C,C,E,O,O,I,C,G,O,C,S,C,E,Y,G,A,e,G,O,S,C,c,C,I,C,E,I,O,c,C,E,E,C,W,C,E,I,W,O,C,C,E,A,C,E,G,C,C,I,E,W,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,E,Q,C,I,E,C,E,E,E,S,E,E,S,E,E,G,E,E,U,6C,e,C,4C,W,C,6C,W,C,6C,iB,C,6C,S,C,6C,S,C,6C,iB,C,6C,W","sources":["<anon>","packages/feedback-components/src/index.ts"],"sourcesContent":["import \"./feedback-components.b22d37d1.js\";\nimport \"./feedback-components.0eef8d0c.js\";\n\n\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule' || Object.prototype.hasOwnProperty.call(dest, key)) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n }\n });\n });\n\n return dest;\n}\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequirea149\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequirea149\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\nvar $c688386f08592f9c$exports = {};\n\nvar $edvRb = parcelRequire(\"edvRb\");\n\nvar $aZPCw = parcelRequire(\"aZPCw\");\n$parcel$exportWildcard($c688386f08592f9c$exports, $edvRb);\n$parcel$exportWildcard($c688386f08592f9c$exports, $aZPCw);\n\n\nexport {$8c534c0378e15a46$export$c4b91360064ad200 as buildHighlights, $8c534c0378e15a46$export$d60b563f571177d as enhanceData, $8c534c0378e15a46$export$35baa338324d8550 as getTagStyle, $8c534c0378e15a46$export$2b07158757c249e0 as ExtractionContext, $8c534c0378e15a46$export$4eb2a0ce903ce967 as ModelInfo, $8c534c0378e15a46$export$117e56c71b172cde as EntityTag, $2c86488f2f3c1edd$export$a90600c9da52b40c as FeedbackComponent, $330ae695507d96f5$export$8d9dbb7a64bf2a5e as treeToGraph};\n//# sourceMappingURL=index.js.map\n","export * from \"./extractions\";\nexport * from \"./feedback\";\n"],"names":["$parcel$exportWildcard","dest","source","Object","keys","forEach","key","prototype","hasOwnProperty","call","defineProperty","enumerable","get","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","err","Error","code","register","$c688386f08592f9c$exports","$edvRb","$aZPCw","$8c534c0378e15a46$export$c4b91360064ad200","buildHighlights","$8c534c0378e15a46$export$d60b563f571177d","enhanceData","$8c534c0378e15a46$export$35baa338324d8550","getTagStyle","$8c534c0378e15a46$export$2b07158757c249e0","ExtractionContext","$8c534c0378e15a46$export$4eb2a0ce903ce967","ModelInfo","$8c534c0378e15a46$export$117e56c71b172cde","EntityTag","$2c86488f2f3c1edd$export$a90600c9da52b40c","FeedbackComponent","$330ae695507d96f5$export$8d9dbb7a64bf2a5e","treeToGraph"],"version":3,"file":"index.js.map","sourceRoot":"../../../../"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@macrostrat/feedback-components",
3
- "version": "1.1.2",
3
+ "version": "1.1.4",
4
4
  "description": "",
5
5
  "source": "src/index.ts",
6
6
  "type": "module",
@@ -36,9 +36,10 @@
36
36
  "@blueprintjs/core": "^5.10.2",
37
37
  "@blueprintjs/select": "^5.3.10",
38
38
  "@macrostrat/color-utils": "^1.1.1",
39
+ "@macrostrat/data-components": "^0.2.0",
39
40
  "@macrostrat/data-sheet": "^2.1.1",
40
41
  "@macrostrat/hyper": "^3.0.6",
41
- "@macrostrat/ui-components": "^4.3.8",
42
+ "@macrostrat/ui-components": "^4.4.0",
42
43
  "@xyflow/react": "^12.3.6",
43
44
  "classnames": "^2.5.1",
44
45
  "d3-force": "^3.0.0",
@@ -30,6 +30,7 @@ export function buildHighlights(
30
30
  tag: entity.type?.name ?? "lith",
31
31
  id: entity.id,
32
32
  parents,
33
+ match: entity.match,
33
34
  });
34
35
  highlights.push(...buildHighlights(entity.children ?? [], entity));
35
36
  }
@@ -48,7 +49,12 @@ export function enhanceData(extractionData, models, entityTypes) {
48
49
 
49
50
  export function getTagStyle(
50
51
  baseColor: string,
51
- options: { highlighted?: boolean; inDarkMode?: boolean; active?: boolean },
52
+ options: {
53
+ highlighted?: boolean;
54
+ inDarkMode?: boolean;
55
+ active?: boolean;
56
+ showMatches?: boolean;
57
+ } = {},
52
58
  ): CSSProperties {
53
59
  const _baseColor = asChromaColor(baseColor ?? "#fff");
54
60
  const {
@@ -78,7 +84,6 @@ export function getTagStyle(
78
84
 
79
85
  // handle white backgrounds in light mode
80
86
  if (!inDarkMode && backgroundColor === "#ffffff") {
81
- console.log("Adjusting background color for light mode:", backgroundColor);
82
87
  backgroundColor = "#f0f0f0";
83
88
  }
84
89
 
@@ -26,6 +26,7 @@ export type Highlight = {
26
26
  borderColor?: string;
27
27
  id: number;
28
28
  parents?: number[];
29
+ match?: Match;
29
30
  };
30
31
 
31
32
  export interface EntityExt extends Omit<Entity, "type" | "children"> {
@@ -48,7 +48,9 @@ type TreeAction =
48
48
  type: "update-entity-type";
49
49
  payload: { id: number; name: string; description: string; color: string };
50
50
  }
51
- | { type: "select-range"; payload: { ids: number[] } };
51
+ | { type: "select-range"; payload: { ids: number[] } }
52
+ | { type: "add-match"; payload: { id: number; payload: any } }
53
+ | { type: "remove-match"; payload: { id: number } };
52
54
 
53
55
  export type TreeDispatch = Dispatch<TreeAction>;
54
56
 
@@ -246,7 +248,6 @@ function treeReducer(state: TreeState, action: TreeAction) {
246
248
 
247
249
  case "delete-entity-type": {
248
250
  // Remove the entity type from the map
249
- console.log("Deleting entity type:", action.payload.id);
250
251
  const { id } = action.payload;
251
252
  const newEntityTypesMap = new Map(state.entityTypesMap);
252
253
  const oldType = newEntityTypesMap.get(id);
@@ -263,6 +264,54 @@ function treeReducer(state: TreeState, action: TreeAction) {
263
264
  };
264
265
  }
265
266
 
267
+ case "add-match": {
268
+ const { id } = action.payload;
269
+
270
+ // Find the node path
271
+ const keyPath = findNode(state.tree, id);
272
+ if (!keyPath) {
273
+ console.warn(`Node with id ${id} not found`);
274
+ return state;
275
+ }
276
+
277
+ // Build update spec to set the `match` property
278
+ const matchUpdateSpec = buildNestedSpec(keyPath, {
279
+ match: { $set: action.payload.payload },
280
+ });
281
+
282
+ const updatedTree = update(state.tree, matchUpdateSpec);
283
+
284
+ return {
285
+ ...state,
286
+ tree: updatedTree,
287
+ };
288
+ }
289
+
290
+ case "remove-match": {
291
+ const { id } = action.payload;
292
+
293
+ console.log("Removing match for node with id:", id);
294
+
295
+ // Find the node path
296
+ const keyPath = findNode(state.tree, id);
297
+ if (!keyPath) {
298
+ console.warn(`Node with id ${id} not found`);
299
+ return state;
300
+ }
301
+
302
+ // Build update spec to unset the `match` property
303
+ const matchUpdateSpec = buildNestedSpec(keyPath, {
304
+ match: { $set: null },
305
+ });
306
+
307
+ const updatedTree = update(state.tree, matchUpdateSpec);
308
+
309
+ return {
310
+ ...state,
311
+ tree: updatedTree,
312
+ };
313
+ }
314
+
266
315
  /** Entity type selection */
267
316
  case "toggle-entity-type-selector":
268
317
  return {
@@ -431,7 +480,7 @@ export function treeToGraph(tree: TreeData[]): GraphData {
431
480
  return { nodes, edges };
432
481
  }
433
482
 
434
- function findNodeById(tree, id) {
483
+ export function findNodeById(tree, id) {
435
484
  for (const node of tree) {
436
485
  if (node.id === id) {
437
486
  return node;
@@ -146,4 +146,20 @@ mark
146
146
  .node-label
147
147
  fill: var(--text-emphasized-color)
148
148
  fontSize: 10px
149
- pointerEvents: none
149
+ pointerEvents: none
150
+
151
+ .match-item
152
+ background-color: var(--background-color)
153
+ color: var(--text-emphasized-color)
154
+ padding: .1em .2em
155
+ border-radius: .2em
156
+ margin-bottom: 4px
157
+ cursor: pointer
158
+
159
+ .match-container
160
+ display: flex
161
+ justify-content: space-between
162
+ align-items: center
163
+
164
+ .close-btn
165
+ cursor: pointer
@@ -116,10 +116,23 @@ export function GraphView(props: {
116
116
  fill: style.backgroundColor || "blue",
117
117
  onClick: (e) => {
118
118
  e.stopPropagation();
119
- dispatch({
120
- type: "toggle-node-selected",
121
- payload: { ids: [d.id] },
122
- });
119
+ if (
120
+ e.ctrlKey ||
121
+ e.metaKey ||
122
+ (selectedNodes[0] === d.id && selectedNodes.length === 1)
123
+ ) {
124
+ // Toggle selection on ctrl/cmd click or when node is only selected node
125
+ e.stopPropagation();
126
+ dispatch({
127
+ type: "toggle-node-selected",
128
+ payload: { ids: [d.id] },
129
+ });
130
+ } else {
131
+ dispatch({
132
+ type: "select-node",
133
+ payload: { ids: [d.id] },
134
+ });
135
+ }
123
136
  },
124
137
  className: active ? "selected" : "",
125
138
  stroke,