@macrostrat/feedback-components 1.1.3 → 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 (62) hide show
  1. package/CHANGELOG.md +5 -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.f577ebea.js → feedback-components.1c15f37f.js} +32 -24
  5. package/dist/esm/feedback-components.1c15f37f.js.map +1 -0
  6. package/dist/esm/{feedback-components.1e7da538.js → feedback-components.204f7d2b.js} +23 -281
  7. package/dist/esm/feedback-components.204f7d2b.js.map +1 -0
  8. package/dist/esm/{feedback-components.832b2eae.js → feedback-components.28ba71be.js} +5 -5
  9. package/dist/esm/{feedback-components.832b2eae.js.map → feedback-components.28ba71be.js.map} +1 -1
  10. package/dist/esm/feedback-components.7e879290.js +286 -0
  11. package/dist/esm/feedback-components.7e879290.js.map +1 -0
  12. package/dist/esm/{feedback-components.45d25912.js → feedback-components.d55a1d18.js} +5 -5
  13. package/dist/esm/{feedback-components.45d25912.js.map → feedback-components.d55a1d18.js.map} +1 -1
  14. package/dist/esm/{feedback-components.fb60c70d.css → feedback-components.d591ffec.css} +20 -1
  15. package/dist/esm/feedback-components.d591ffec.css.map +1 -0
  16. package/dist/esm/{feedback-components.fa1d3641.js → feedback-components.f6605b83.js} +49 -7
  17. package/dist/esm/feedback-components.f6605b83.js.map +1 -0
  18. package/dist/esm/feedback-components.fd8ac9ca.js +230 -0
  19. package/dist/esm/feedback-components.fd8ac9ca.js.map +1 -0
  20. package/dist/esm/index.d.ts.map +1 -1
  21. package/dist/esm/index.js +1 -1
  22. package/dist/node/feedback-components.0eef8d0c.js +2 -0
  23. package/dist/node/feedback-components.0eef8d0c.js.map +1 -0
  24. package/dist/node/{feedback-components.f9abf0d6.js → feedback-components.2f740fc7.js} +2 -2
  25. package/dist/node/{feedback-components.f9abf0d6.js.map → feedback-components.2f740fc7.js.map} +1 -1
  26. package/dist/node/{feedback-components.4cd6b208.js → feedback-components.41db283a.js} +2 -2
  27. package/dist/node/{feedback-components.4cd6b208.js.map → feedback-components.41db283a.js.map} +1 -1
  28. package/dist/node/feedback-components.69d0ccd0.js +2 -0
  29. package/dist/node/feedback-components.69d0ccd0.js.map +1 -0
  30. package/dist/node/feedback-components.a7b43cfa.js +2 -0
  31. package/dist/node/feedback-components.a7b43cfa.js.map +1 -0
  32. package/dist/node/feedback-components.b9317f9c.js +2 -0
  33. package/dist/node/feedback-components.b9317f9c.js.map +1 -0
  34. package/dist/node/{feedback-components.c88cb37f.css → feedback-components.e096504e.css} +2 -2
  35. package/dist/node/feedback-components.e096504e.css.map +1 -0
  36. package/dist/node/feedback-components.e140ac86.js +2 -0
  37. package/dist/node/feedback-components.e140ac86.js.map +1 -0
  38. package/dist/node/feedback-components.f8373b58.js +2 -0
  39. package/dist/node/feedback-components.f8373b58.js.map +1 -0
  40. package/dist/node/index.js +1 -1
  41. package/dist/node/index.js.map +1 -1
  42. package/package.json +1 -1
  43. package/src/feedback/edit-state.ts +52 -3
  44. package/src/feedback/feedback.module.sass +17 -1
  45. package/src/feedback/index.ts +11 -317
  46. package/src/feedback/matches.ts +241 -0
  47. package/src/feedback/text-visualizer.ts +21 -21
  48. package/src/feedback/typelist.ts +312 -0
  49. package/dist/esm/feedback-components.1e7da538.js.map +0 -1
  50. package/dist/esm/feedback-components.95dbe7d7.js.map +0 -1
  51. package/dist/esm/feedback-components.f577ebea.js.map +0 -1
  52. package/dist/esm/feedback-components.fa1d3641.js.map +0 -1
  53. package/dist/esm/feedback-components.fb60c70d.css.map +0 -1
  54. package/dist/node/feedback-components.25f1909a.js +0 -2
  55. package/dist/node/feedback-components.25f1909a.js.map +0 -1
  56. package/dist/node/feedback-components.9328e8ba.js +0 -2
  57. package/dist/node/feedback-components.9328e8ba.js.map +0 -1
  58. package/dist/node/feedback-components.b7946db4.js +0 -2
  59. package/dist/node/feedback-components.b7946db4.js.map +0 -1
  60. package/dist/node/feedback-components.c459cc27.js +0 -2
  61. package/dist/node/feedback-components.c459cc27.js.map +0 -1
  62. package/dist/node/feedback-components.c88cb37f.css.map +0 -1
@@ -0,0 +1,230 @@
1
+ import {Match as $156a3efbc315814c$export$f421feb8fad20413} from "./feedback-components.1c15f37f.js";
2
+ import "./feedback-components.d591ffec.css";
3
+ import $1RKp1$feedbackcomponents00434ff7js from "./feedback-components.00434ff7.js";
4
+ import {Divider as $1RKp1$Divider, Switch as $1RKp1$Switch, Icon as $1RKp1$Icon, Overlay2 as $1RKp1$Overlay2} from "@blueprintjs/core";
5
+ import {Select as $1RKp1$Select} from "@blueprintjs/select";
6
+ import $1RKp1$macrostrathyper from "@macrostrat/hyper";
7
+ import {useState as $1RKp1$useState} from "react";
8
+ import {useAPIResult as $1RKp1$useAPIResult, DataField as $1RKp1$DataField, JSONView as $1RKp1$JSONView, SaveButton as $1RKp1$SaveButton} from "@macrostrat/ui-components";
9
+ import {LithologyTag as $1RKp1$LithologyTag} from "@macrostrat/data-components";
10
+
11
+
12
+ function $parcel$interopDefault(a) {
13
+ return a && a.__esModule ? a.default : a;
14
+ }
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+ const $a878a21b0c10bfdc$var$h = (0, $1RKp1$macrostrathyper).styled((0, ($parcel$interopDefault($1RKp1$feedbackcomponents00434ff7js))));
24
+ function $a878a21b0c10bfdc$export$6479cfcac2b87c0({ match: match, setMatchLinks: setMatchLinks, matchLinks: matchLinks, selectedNodes: selectedNodes, tree: tree, dispatch: dispatch }) {
25
+ const [overlayOpen, setOverlayOpen] = (0, $1RKp1$useState)(false);
26
+ let nodeMatch = null;
27
+ if (selectedNodes.length === 1) nodeMatch = $a878a21b0c10bfdc$var$findMatchingNode(tree, selectedNodes[0]);
28
+ return $a878a21b0c10bfdc$var$h.if(matchLinks)("div", [
29
+ $a878a21b0c10bfdc$var$h((0, $1RKp1$Divider)),
30
+ $a878a21b0c10bfdc$var$h((0, $1RKp1$Switch), {
31
+ label: "Show matches",
32
+ checked: match !== null,
33
+ onChange: (e)=>{
34
+ setMatchLinks(match === null ? matchLinks || {} : null);
35
+ }
36
+ }),
37
+ $a878a21b0c10bfdc$var$h.if(nodeMatch && match)((0, $156a3efbc315814c$export$f421feb8fad20413), {
38
+ data: nodeMatch?.match,
39
+ matchLinks: matchLinks,
40
+ dispatch: dispatch,
41
+ nodeId: nodeMatch?.id
42
+ }),
43
+ $a878a21b0c10bfdc$var$h.if(selectedNodes.length == 1 && !nodeMatch?.match && match)("div.add-match-container", [
44
+ $a878a21b0c10bfdc$var$h("div.add-type", {
45
+ onClick: ()=>{
46
+ setOverlayOpen(true);
47
+ }
48
+ }, [
49
+ $a878a21b0c10bfdc$var$h("p.add-match-text", "Add match"),
50
+ $a878a21b0c10bfdc$var$h((0, $1RKp1$Icon), {
51
+ icon: "plus"
52
+ })
53
+ ]),
54
+ $a878a21b0c10bfdc$var$h($a878a21b0c10bfdc$var$MatchOverlay, {
55
+ isOpen: overlayOpen,
56
+ setOverlayOpen: setOverlayOpen,
57
+ nodeMatch: nodeMatch,
58
+ dispatch: dispatch
59
+ })
60
+ ])
61
+ ]);
62
+ }
63
+ function $a878a21b0c10bfdc$var$findMatchingNode(tree, nodeId) {
64
+ let match = null;
65
+ function traverse(node) {
66
+ if (node.id === nodeId) {
67
+ match = node;
68
+ return true;
69
+ }
70
+ if (Array.isArray(node.children)) for (const child of node.children){
71
+ if (traverse(child)) return true;
72
+ }
73
+ return false;
74
+ }
75
+ tree.forEach(traverse);
76
+ return match;
77
+ }
78
+ function $a878a21b0c10bfdc$var$MatchOverlay({ isOpen: isOpen, setOverlayOpen: setOverlayOpen, nodeMatch: nodeMatch, dispatch: dispatch }) {
79
+ const [inputValue, setInputValue] = (0, $1RKp1$useState)(nodeMatch?.name || "");
80
+ const [selectedItem, setSelectedItem] = (0, $1RKp1$useState)($a878a21b0c10bfdc$var$h("div", "Select a match"));
81
+ const [disabled, setDisabled] = (0, $1RKp1$useState)(true);
82
+ const [payload, setPayload] = (0, $1RKp1$useState)({});
83
+ const data = (0, $1RKp1$useAPIResult)("https://dev.macrostrat.org/api/pg/type_lookup?name=ilike.*" + inputValue + "*");
84
+ const items = data?.map((data)=>{
85
+ const type = data.type || "";
86
+ if (type === "lith") return $a878a21b0c10bfdc$var$h("div", {
87
+ onClick: ()=>{
88
+ setPayload({
89
+ lith_id: data.id,
90
+ name: data.name
91
+ });
92
+ }
93
+ }, $a878a21b0c10bfdc$var$h((0, $1RKp1$DataField), {
94
+ className: "match-item",
95
+ label: "Lithology",
96
+ value: $a878a21b0c10bfdc$var$h((0, $1RKp1$LithologyTag), {
97
+ data: {
98
+ name: data.name,
99
+ id: data.lith_id,
100
+ color: data.color
101
+ }
102
+ })
103
+ }));
104
+ if (type === "strat_name") return $a878a21b0c10bfdc$var$h("div", {
105
+ onClick: ()=>{
106
+ setPayload({
107
+ strat_name_id: data.id,
108
+ name: data.name
109
+ });
110
+ }
111
+ }, $a878a21b0c10bfdc$var$h((0, $1RKp1$DataField), {
112
+ className: "match-item",
113
+ label: "Stratigraphic name",
114
+ value: $a878a21b0c10bfdc$var$h((0, $1RKp1$LithologyTag), {
115
+ data: {
116
+ name: data.name,
117
+ id: data.id,
118
+ color: data.color
119
+ }
120
+ })
121
+ }));
122
+ if (type === "lith_att") return $a878a21b0c10bfdc$var$h("div", {
123
+ onClick: ()=>{
124
+ setPayload({
125
+ lith_att_id: data.lith_att_id,
126
+ name: data.name
127
+ });
128
+ }
129
+ }, $a878a21b0c10bfdc$var$h((0, $1RKp1$DataField), {
130
+ className: "match-item",
131
+ label: "Lithology attribute",
132
+ value: $a878a21b0c10bfdc$var$h((0, $1RKp1$LithologyTag), {
133
+ data: {
134
+ name: data.name,
135
+ id: data.lith_att_id
136
+ }
137
+ }),
138
+ onClick: ()=>{
139
+ setPayload({
140
+ lith_att_id: data.lith_att_id,
141
+ name: data.name
142
+ });
143
+ }
144
+ }));
145
+ if (type === "interval") $a878a21b0c10bfdc$var$h("div", {
146
+ onClick: ()=>{
147
+ setPayload({
148
+ int_id: data.id,
149
+ name: data.name
150
+ });
151
+ }
152
+ }, $a878a21b0c10bfdc$var$h((0, $1RKp1$DataField), {
153
+ label: "Interval",
154
+ className: "match-item",
155
+ value: $a878a21b0c10bfdc$var$h((0, $1RKp1$LithologyTag), {
156
+ data: {
157
+ name: data.name,
158
+ id: data.id
159
+ }
160
+ }),
161
+ onClick: ()=>{
162
+ setPayload({
163
+ int_id: data.id,
164
+ name: data.name
165
+ });
166
+ }
167
+ }));
168
+ return $a878a21b0c10bfdc$var$h((0, $1RKp1$JSONView), {
169
+ data: data
170
+ });
171
+ });
172
+ return $a878a21b0c10bfdc$var$h((0, $1RKp1$Overlay2), {
173
+ isOpen: isOpen
174
+ }, $a878a21b0c10bfdc$var$h("div.overlay-container", $a878a21b0c10bfdc$var$h("div.add-type-overlay", [
175
+ $a878a21b0c10bfdc$var$h("h2.title", [
176
+ "Add match with " + nodeMatch.name,
177
+ $a878a21b0c10bfdc$var$h((0, $1RKp1$Icon), {
178
+ icon: "cross",
179
+ className: "close-icon",
180
+ onClick: ()=>{
181
+ setOverlayOpen(false);
182
+ },
183
+ style: {
184
+ cursor: "pointer",
185
+ color: "red"
186
+ }
187
+ })
188
+ ]),
189
+ $a878a21b0c10bfdc$var$h("div.form-group", [
190
+ $a878a21b0c10bfdc$var$h((0, $1RKp1$Select), {
191
+ items: items || [],
192
+ itemRenderer: (item, { handleClick: handleClick })=>{
193
+ return $a878a21b0c10bfdc$var$h("div.match-item", {
194
+ onClick: handleClick
195
+ }, item);
196
+ },
197
+ onItemSelect: (item)=>{
198
+ setDisabled(false);
199
+ setSelectedItem(item);
200
+ },
201
+ onQueryChange: (query)=>setInputValue(query),
202
+ popoverProps: {
203
+ minimal: true
204
+ },
205
+ query: inputValue,
206
+ placeholder: "Enter match name"
207
+ }, selectedItem)
208
+ ]),
209
+ $a878a21b0c10bfdc$var$h((0, $1RKp1$SaveButton), {
210
+ className: "save-btn",
211
+ small: true,
212
+ onClick: ()=>{
213
+ // Handle save changes
214
+ dispatch({
215
+ type: "add-match",
216
+ payload: {
217
+ id: nodeMatch.id,
218
+ payload: payload
219
+ }
220
+ });
221
+ setOverlayOpen(false);
222
+ },
223
+ disabled: disabled
224
+ }, "Save changes")
225
+ ])));
226
+ }
227
+
228
+
229
+ export {$a878a21b0c10bfdc$export$6479cfcac2b87c0 as Matches};
230
+ //# sourceMappingURL=feedback-components.fd8ac9ca.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["packages/feedback-components/src/feedback/matches.ts"],"sourcesContent":["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":[],"version":3,"file":"feedback-components.fd8ac9ca.js.map"}
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/feedback-components/src/src/extractions/types.ts","packages/feedback-components/color-utils/src/index.ts","packages/feedback-components/ui-components/src/api/types.ts","packages/feedback-components/ui-components/src/util/query-string.ts","packages/feedback-components/ui-components/src/util/state-hooks.ts","packages/feedback-components/ui-components/src/util/layout-hooks.ts","packages/feedback-components/ui-components/src/util/local-storage.ts","packages/feedback-components/ui-components/src/util/json-view.ts","packages/feedback-components/ui-components/src/util/scroll-helpers.ts","packages/feedback-components/ui-components/src/util/migration-helpers.ts","packages/feedback-components/ui-components/src/util/box-model.ts","packages/feedback-components/ui-components/src/util/event-hooks.ts","packages/feedback-components/ui-components/src/util/flexbox.ts","packages/feedback-components/ui-components/src/util/size-aware-label.ts","packages/feedback-components/ui-components/src/util/index.ts","packages/feedback-components/ui-components/src/api/provider.ts","packages/feedback-components/ui-components/src/api/data-provider.ts","packages/feedback-components/ui-components/src/api/indexing.ts","packages/feedback-components/ui-components/src/api/frontend.ts","packages/feedback-components/ui-components/src/api/paged.ts","packages/feedback-components/ui-components/src/api/index.ts","packages/feedback-components/ui-components/src/infinite-scroll.ts","packages/feedback-components/ui-components/src/postgrest-infinite-scroll.ts","packages/feedback-components/ui-components/src/buttons/delete-button.ts","packages/feedback-components/ui-components/src/buttons/index.ts","packages/feedback-components/ui-components/src/collapse-panel/index.ts","packages/feedback-components/ui-components/src/link-card.ts","packages/feedback-components/ui-components/src/file-upload/index.ts","packages/feedback-components/ui-components/src/image.ts","packages/feedback-components/ui-components/src/model-editor.ts","packages/feedback-components/ui-components/src/toaster.ts","packages/feedback-components/ui-components/src/citations/author-list.ts","packages/feedback-components/ui-components/src/citations/index.ts","packages/feedback-components/ui-components/src/geodeepdive/reference-card.ts","packages/feedback-components/ui-components/src/geodeepdive/index.ts","packages/feedback-components/ui-components/src/text.ts","packages/feedback-components/ui-components/src/dark-mode.ts","packages/feedback-components/ui-components/src/form-controls/slider.ts","packages/feedback-components/ui-components/src/form-controls/index.ts","packages/feedback-components/ui-components/src/settings/index.ts","packages/feedback-components/ui-components/src/error-boundary.ts","packages/feedback-components/ui-components/src/patterns/composite-image.ts","packages/feedback-components/ui-components/src/patterns/index.ts","packages/feedback-components/ui-components/src/collapse-card.ts","packages/feedback-components/ui-components/src/modal-panel/draggable-overlay.ts","packages/feedback-components/ui-components/src/modal-panel/index.ts","packages/feedback-components/ui-components/src/page-layouts/index.ts","packages/feedback-components/ui-components/src/dev-panel/_inner.ts","packages/feedback-components/ui-components/src/dev-panel/index.ts","packages/feedback-components/ui-components/src/data/index.ts","packages/feedback-components/ui-components/src/index.ts","packages/feedback-components/src/src/extractions/index.ts","packages/feedback-components/src/src/feedback/types.ts","packages/feedback-components/src/src/feedback/edit-state.ts","packages/feedback-components/src/src/feedback/node.ts","packages/feedback-components/data-components/src/components/hierarchy/index.ts","packages/feedback-components/data-components/src/components/prevalent-taxa/prevalent-taxa.ts","packages/feedback-components/data-components/src/components/prevalent-taxa/index.ts","packages/feedback-components/data-components/src/components/unit-details/tag.ts","packages/feedback-components/stratigraphy-utils/src/age-ranges.ts","packages/feedback-components/stratigraphy-utils/src/measurements.ts","packages/feedback-components/stratigraphy-utils/src/index.ts","packages/feedback-components/data-components/src/components/unit-details/base.ts","packages/feedback-components/data-components/src/components/unit-details/lithology-tag.ts","packages/feedback-components/data-components/src/components/unit-details/index.ts","packages/feedback-components/data-components/src/components/index.ts","packages/feedback-components/data-components/src/dz-spectrum/gradients.ts","packages/feedback-components/data-components/src/dz-spectrum/kernel-density.ts","packages/feedback-components/data-components/src/dz-spectrum/index.ts","packages/feedback-components/mapbox-utils/src/position.ts","packages/feedback-components/mapbox-utils/src/focus-state.ts","packages/feedback-components/mapbox-utils/src/labels.ts","packages/feedback-components/mapbox-utils/src/preprocess-styles.ts","packages/feedback-components/mapbox-utils/src/utils.ts","packages/feedback-components/mapbox-utils/src/view-info.ts","packages/feedback-components/mapbox-utils/src/style-helpers.ts","packages/feedback-components/mapbox-utils/src/index.ts","packages/feedback-components/data-components/src/field-locations/base.ts","packages/feedback-components/data-components/src/field-locations/checkins.ts","packages/feedback-components/data-components/src/field-locations/spots.ts","packages/feedback-components/mapbox-react/src/context.ts","packages/feedback-components/mapbox-react/src/hooks.ts","packages/feedback-components/mapbox-react/src/controls.ts","packages/feedback-components/mapbox-react/src/terrain.ts","packages/feedback-components/mapbox-react/src/debugger.ts","packages/feedback-components/mapbox-react/src/focus-state.ts","packages/feedback-components/map-styles/src/layer-helpers/symbol-layers.ts","packages/feedback-components/map-styles/src/layer-helpers/geology-layers.ts","packages/feedback-components/map-styles/src/layer-helpers/pattern-fill.ts","packages/feedback-components/map-styles/src/layer-helpers/utils.ts","packages/feedback-components/map-styles/src/layer-helpers/point-features/symbols/index.ts","packages/feedback-components/map-styles/src/layer-helpers/point-features/icon-image.ts","packages/feedback-components/map-styles/src/layer-helpers/point-features/symbol-layer.ts","packages/feedback-components/map-styles/src/layer-helpers/point-features/index.ts","packages/feedback-components/map-styles/src/layer-helpers/cross-sections.ts","packages/feedback-components/map-styles/src/layer-helpers/index.ts","packages/feedback-components/map-styles/src/styles/line-symbols.ts","packages/feedback-components/map-styles/src/styles/layers.ts","packages/feedback-components/map-styles/src/styles/index.ts","packages/feedback-components/map-styles/src/index.ts","packages/feedback-components/mapbox-react/src/layer-managers/line-symbols.ts","packages/feedback-components/mapbox-react/src/layer-managers/map-sources.ts","packages/feedback-components/mapbox-react/src/layer-managers/index.ts","packages/feedback-components/mapbox-react/src/index.ts","packages/feedback-components/map-interface/src/context-panel/index.ts","packages/feedback-components/map-interface/src/location-info/utils.ts","packages/feedback-components/map-interface/src/location-info/hash-string.ts","packages/feedback-components/map-interface/src/location-info/index.ts","packages/feedback-components/map-interface/src/location-panel/header.ts","packages/feedback-components/map-interface/src/controls.ts","packages/feedback-components/map-interface/src/container.ts","packages/feedback-components/map-interface/src/location-panel/index.ts","packages/feedback-components/map-interface/src/dev/xray.ts","packages/feedback-components/map-interface/src/utils.ts","packages/feedback-components/map-interface/src/helpers.ts","packages/feedback-components/map-interface/src/map-view.ts","packages/feedback-components/map-interface/src/dev/tile-extent.ts","packages/feedback-components/map-interface/src/expansion-panel/headers.ts","packages/feedback-components/map-interface/src/expansion-panel/index.ts","packages/feedback-components/map-interface/src/dev/vector-tile-features.ts","packages/feedback-components/map-interface/src/dev/map-page.ts","packages/feedback-components/map-interface/src/dev/index.ts","packages/feedback-components/map-interface/src/map-panel/utils/fossils.ts","packages/feedback-components/map-interface/src/map-panel/utils/formatting.ts","packages/feedback-components/map-interface/src/map-panel/utils/index.ts","packages/feedback-components/map-interface/src/map-panel/components/info-blocks.ts","packages/feedback-components/map-interface/src/map-panel/components/info-drawer/macrostrat-linked.ts","packages/feedback-components/map-interface/src/map-panel/components/info-drawer/physiography.ts","packages/feedback-components/map-interface/src/map-panel/components/transitions/index.ts","packages/feedback-components/map-interface/src/map-panel/components/info-drawer/reg-strat.ts","packages/feedback-components/map-interface/src/map-panel/components/info-drawer/xdd-panel/Article.tsx","packages/feedback-components/map-interface/src/map-panel/components/info-drawer/xdd-panel/Journal.tsx","packages/feedback-components/map-interface/src/map-panel/components/info-drawer/xdd-panel/index.ts","packages/feedback-components/map-interface/src/map-panel/components/info-drawer/index.ts","packages/feedback-components/map-interface/src/map-panel/index.ts","packages/feedback-components/map-interface/src/index.ts","packages/feedback-components/data-components/src/field-locations/rockd-checkins/index.ts","packages/feedback-components/data-components/src/field-locations/index.ts","packages/feedback-components/data-components/src/index.ts","packages/feedback-components/src/src/feedback/text-visualizer.ts","packages/feedback-components/src/src/feedback/type-selector/index.ts","packages/feedback-components/src/src/feedback/graph.ts","packages/feedback-components/data-sheet/src/components/editor-popup.ts","packages/.storybook/main.ts","packages/feedback-components/data-sheet/src/components/colors.ts","packages/feedback-components/data-sheet/src/components/text-areas.ts","packages/feedback-components/data-sheet/src/components/actions.ts","packages/feedback-components/data-sheet/src/components/index.ts","packages/feedback-components/data-sheet/src/utils/column-spec.ts","packages/feedback-components/data-sheet/src/utils/index.ts","packages/feedback-components/data-sheet/src/provider.ts","packages/feedback-components/data-sheet/src/core.ts","packages/feedback-components/data-sheet/src/postgrest-table/data-loaders.ts","packages/feedback-components/data-sheet/src/postgrest-table/index.ts","packages/feedback-components/data-sheet/src/index.ts","packages/feedback-components/src/src/feedback/index.ts","packages/feedback-components/src/src/index.ts","packages/feedback-components/src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"export * from \"./extractions\";\nexport * from \"./feedback\";\n"],"names":[],"version":3,"file":"index.d.ts.map"}
1
+ {"mappings":"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","sources":["packages/feedback-components/src/src/extractions/types.ts","packages/feedback-components/color-utils/src/index.ts","packages/feedback-components/ui-components/src/api/types.ts","packages/feedback-components/ui-components/src/util/query-string.ts","packages/feedback-components/ui-components/src/util/state-hooks.ts","packages/feedback-components/ui-components/src/util/layout-hooks.ts","packages/feedback-components/ui-components/src/util/local-storage.ts","packages/feedback-components/ui-components/src/util/json-view.ts","packages/feedback-components/ui-components/src/util/scroll-helpers.ts","packages/feedback-components/ui-components/src/util/migration-helpers.ts","packages/feedback-components/ui-components/src/util/box-model.ts","packages/feedback-components/ui-components/src/util/event-hooks.ts","packages/feedback-components/ui-components/src/util/flexbox.ts","packages/feedback-components/ui-components/src/util/size-aware-label.ts","packages/feedback-components/ui-components/src/util/index.ts","packages/feedback-components/ui-components/src/api/provider.ts","packages/feedback-components/ui-components/src/api/data-provider.ts","packages/feedback-components/ui-components/src/api/indexing.ts","packages/feedback-components/ui-components/src/api/frontend.ts","packages/feedback-components/ui-components/src/api/paged.ts","packages/feedback-components/ui-components/src/api/index.ts","packages/feedback-components/ui-components/src/infinite-scroll.ts","packages/feedback-components/ui-components/src/postgrest-infinite-scroll.ts","packages/feedback-components/ui-components/src/buttons/delete-button.ts","packages/feedback-components/ui-components/src/buttons/index.ts","packages/feedback-components/ui-components/src/collapse-panel/index.ts","packages/feedback-components/ui-components/src/link-card.ts","packages/feedback-components/ui-components/src/file-upload/index.ts","packages/feedback-components/ui-components/src/image.ts","packages/feedback-components/ui-components/src/model-editor.ts","packages/feedback-components/ui-components/src/toaster.ts","packages/feedback-components/ui-components/src/citations/author-list.ts","packages/feedback-components/ui-components/src/citations/index.ts","packages/feedback-components/ui-components/src/geodeepdive/reference-card.ts","packages/feedback-components/ui-components/src/geodeepdive/index.ts","packages/feedback-components/ui-components/src/text.ts","packages/feedback-components/ui-components/src/dark-mode.ts","packages/feedback-components/ui-components/src/form-controls/slider.ts","packages/feedback-components/ui-components/src/form-controls/index.ts","packages/feedback-components/ui-components/src/settings/index.ts","packages/feedback-components/ui-components/src/error-boundary.ts","packages/feedback-components/ui-components/src/patterns/composite-image.ts","packages/feedback-components/ui-components/src/patterns/index.ts","packages/feedback-components/ui-components/src/collapse-card.ts","packages/feedback-components/ui-components/src/modal-panel/draggable-overlay.ts","packages/feedback-components/ui-components/src/modal-panel/index.ts","packages/feedback-components/ui-components/src/page-layouts/index.ts","packages/feedback-components/ui-components/src/dev-panel/_inner.ts","packages/feedback-components/ui-components/src/dev-panel/index.ts","packages/feedback-components/ui-components/src/data/index.ts","packages/feedback-components/ui-components/src/index.ts","packages/feedback-components/src/src/extractions/index.ts","packages/feedback-components/src/src/feedback/types.ts","packages/feedback-components/src/src/feedback/edit-state.ts","packages/feedback-components/src/src/feedback/node.ts","packages/feedback-components/data-components/src/components/hierarchy/index.ts","packages/feedback-components/data-components/src/components/prevalent-taxa/prevalent-taxa.ts","packages/feedback-components/data-components/src/components/prevalent-taxa/index.ts","packages/feedback-components/data-components/src/components/unit-details/tag.ts","packages/feedback-components/stratigraphy-utils/src/age-ranges.ts","packages/feedback-components/stratigraphy-utils/src/measurements.ts","packages/feedback-components/stratigraphy-utils/src/index.ts","packages/feedback-components/data-components/src/components/unit-details/base.ts","packages/feedback-components/data-components/src/components/unit-details/lithology-tag.ts","packages/feedback-components/data-components/src/components/unit-details/index.ts","packages/feedback-components/data-components/src/components/index.ts","packages/feedback-components/data-components/src/dz-spectrum/gradients.ts","packages/feedback-components/data-components/src/dz-spectrum/kernel-density.ts","packages/feedback-components/data-components/src/dz-spectrum/index.ts","packages/feedback-components/mapbox-utils/src/position.ts","packages/feedback-components/mapbox-utils/src/focus-state.ts","packages/feedback-components/mapbox-utils/src/labels.ts","packages/feedback-components/mapbox-utils/src/preprocess-styles.ts","packages/feedback-components/mapbox-utils/src/utils.ts","packages/feedback-components/mapbox-utils/src/view-info.ts","packages/feedback-components/mapbox-utils/src/style-helpers.ts","packages/feedback-components/mapbox-utils/src/index.ts","packages/feedback-components/data-components/src/field-locations/base.ts","packages/feedback-components/data-components/src/field-locations/checkins.ts","packages/feedback-components/data-components/src/field-locations/spots.ts","packages/feedback-components/mapbox-react/src/context.ts","packages/feedback-components/mapbox-react/src/hooks.ts","packages/feedback-components/mapbox-react/src/controls.ts","packages/feedback-components/mapbox-react/src/terrain.ts","packages/feedback-components/mapbox-react/src/debugger.ts","packages/feedback-components/mapbox-react/src/focus-state.ts","packages/feedback-components/map-styles/src/layer-helpers/symbol-layers.ts","packages/feedback-components/map-styles/src/layer-helpers/geology-layers.ts","packages/feedback-components/map-styles/src/layer-helpers/pattern-fill.ts","packages/feedback-components/map-styles/src/layer-helpers/utils.ts","packages/feedback-components/map-styles/src/layer-helpers/point-features/symbols/index.ts","packages/feedback-components/map-styles/src/layer-helpers/point-features/icon-image.ts","packages/feedback-components/map-styles/src/layer-helpers/point-features/symbol-layer.ts","packages/feedback-components/map-styles/src/layer-helpers/point-features/index.ts","packages/feedback-components/map-styles/src/layer-helpers/cross-sections.ts","packages/feedback-components/map-styles/src/layer-helpers/index.ts","packages/feedback-components/map-styles/src/styles/line-symbols.ts","packages/feedback-components/map-styles/src/styles/layers.ts","packages/feedback-components/map-styles/src/styles/index.ts","packages/feedback-components/map-styles/src/index.ts","packages/feedback-components/mapbox-react/src/layer-managers/line-symbols.ts","packages/feedback-components/mapbox-react/src/layer-managers/map-sources.ts","packages/feedback-components/mapbox-react/src/layer-managers/index.ts","packages/feedback-components/mapbox-react/src/index.ts","packages/feedback-components/map-interface/src/context-panel/index.ts","packages/feedback-components/map-interface/src/location-info/utils.ts","packages/feedback-components/map-interface/src/location-info/hash-string.ts","packages/feedback-components/map-interface/src/location-info/index.ts","packages/feedback-components/map-interface/src/location-panel/header.ts","packages/feedback-components/map-interface/src/controls.ts","packages/feedback-components/map-interface/src/container.ts","packages/feedback-components/map-interface/src/location-panel/index.ts","packages/feedback-components/map-interface/src/dev/xray.ts","packages/feedback-components/map-interface/src/utils.ts","packages/feedback-components/map-interface/src/helpers.ts","packages/feedback-components/map-interface/src/map-view.ts","packages/feedback-components/map-interface/src/dev/tile-extent.ts","packages/feedback-components/map-interface/src/expansion-panel/headers.ts","packages/feedback-components/map-interface/src/expansion-panel/index.ts","packages/feedback-components/map-interface/src/dev/vector-tile-features.ts","packages/feedback-components/map-interface/src/dev/map-page.ts","packages/feedback-components/map-interface/src/dev/index.ts","packages/feedback-components/map-interface/src/map-panel/utils/fossils.ts","packages/feedback-components/map-interface/src/map-panel/utils/formatting.ts","packages/feedback-components/map-interface/src/map-panel/utils/index.ts","packages/feedback-components/map-interface/src/map-panel/components/info-blocks.ts","packages/feedback-components/map-interface/src/map-panel/components/info-drawer/macrostrat-linked.ts","packages/feedback-components/map-interface/src/map-panel/components/info-drawer/physiography.ts","packages/feedback-components/map-interface/src/map-panel/components/transitions/index.ts","packages/feedback-components/map-interface/src/map-panel/components/info-drawer/reg-strat.ts","packages/feedback-components/map-interface/src/map-panel/components/info-drawer/xdd-panel/Article.tsx","packages/feedback-components/map-interface/src/map-panel/components/info-drawer/xdd-panel/Journal.tsx","packages/feedback-components/map-interface/src/map-panel/components/info-drawer/xdd-panel/index.ts","packages/feedback-components/map-interface/src/map-panel/components/info-drawer/index.ts","packages/feedback-components/map-interface/src/map-panel/index.ts","packages/feedback-components/map-interface/src/index.ts","packages/feedback-components/data-components/src/field-locations/rockd-checkins/index.ts","packages/feedback-components/data-components/src/field-locations/index.ts","packages/feedback-components/data-components/src/index.ts","packages/feedback-components/src/src/feedback/text-visualizer.ts","packages/feedback-components/src/src/feedback/type-selector/index.ts","packages/feedback-components/src/src/feedback/graph.ts","packages/feedback-components/src/src/feedback/matches.ts","packages/feedback-components/data-sheet/src/components/editor-popup.ts","packages/.storybook/main.ts","packages/feedback-components/data-sheet/src/components/colors.ts","packages/feedback-components/data-sheet/src/components/text-areas.ts","packages/feedback-components/data-sheet/src/components/actions.ts","packages/feedback-components/data-sheet/src/components/index.ts","packages/feedback-components/data-sheet/src/utils/column-spec.ts","packages/feedback-components/data-sheet/src/utils/index.ts","packages/feedback-components/data-sheet/src/provider.ts","packages/feedback-components/data-sheet/src/core.ts","packages/feedback-components/data-sheet/src/postgrest-table/data-loaders.ts","packages/feedback-components/data-sheet/src/postgrest-table/index.ts","packages/feedback-components/data-sheet/src/index.ts","packages/feedback-components/src/src/feedback/typelist.ts","packages/feedback-components/src/src/feedback/index.ts","packages/feedback-components/src/src/index.ts","packages/feedback-components/src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"export * from \"./extractions\";\nexport * from \"./feedback\";\n"],"names":[],"version":3,"file":"index.d.ts.map"}
package/dist/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import {buildHighlights as $03d8811e9c9b360d$export$c4b91360064ad200, enhanceData as $03d8811e9c9b360d$export$d60b563f571177d, getTagStyle as $03d8811e9c9b360d$export$35baa338324d8550, ExtractionContext as $03d8811e9c9b360d$export$2b07158757c249e0, ModelInfo as $03d8811e9c9b360d$export$4eb2a0ce903ce967, EntityTag as $03d8811e9c9b360d$export$117e56c71b172cde} from "./feedback-components.707e3490.js";
2
- import {FeedbackComponent as $71d20dff35996763$export$a90600c9da52b40c, treeToGraph as $b79bf29960412ca7$export$8d9dbb7a64bf2a5e} from "./feedback-components.1e7da538.js";
2
+ import {FeedbackComponent as $71d20dff35996763$export$a90600c9da52b40c, treeToGraph as $b79bf29960412ca7$export$8d9dbb7a64bf2a5e} from "./feedback-components.204f7d2b.js";
3
3
 
4
4
 
5
5
 
@@ -0,0 +1,2 @@
1
+ import"./feedback-components.b9317f9c.js";import"./feedback-components.2f740fc7.js";import"./feedback-components.69d0ccd0.js";import"./feedback-components.b22d37d1.js";import"./feedback-components.a7b43cfa.js";import"./feedback-components.acac789b.js";import"./feedback-components.41db283a.js";import"./feedback-components.f8373b58.js";import"./feedback-components.e140ac86.js";import e from"@macrostrat/hyper";import{Tree as t}from"react-arborist";import{useState as n,useRef as r,useCallback as o,useEffect as a}from"react";import{SegmentedControl as i,Card as s,ButtonGroup as d,Divider as c}from"@blueprintjs/core";import{ErrorBoundary as l,FlexRow as p,CancelButton as m,SaveButton as u}from"@macrostrat/ui-components";import f from"use-element-dimensions";function h(e,t,n,r){Object.defineProperty(e,t,{get:n,set:r,enumerable:!0,configurable:!0})}var y=globalThis,b={},v={},g=y.parcelRequirea149;null==g&&((g=function(e){if(e in b)return b[e].exports;if(e in v){var t=v[e];delete v[e];var n={id:e,exports:{}};return b[e]=n,t.call(n.exports,n,n.exports),n.exports}var r=Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}).register=function(e,t){v[e]=t},y.parcelRequirea149=g),g.register;var w={};h(w,"FeedbackComponent",()=>j),h(w,"treeToGraph",()=>g("eedTh").treeToGraph);var k=g("9wFEx"),S=g("bQY4Q"),_=g("3OP12"),C=g("edvRb"),T=g("eedTh"),x=g("iKZjQ"),E=g("bK9Of"),H=g("jlqgz"),R=g("aWecs");let F=e.styled(k&&k.__esModule?k.default:k);function j({entities:e=[],text:t,model:r,entityTypes:o,matchComponent:a,onSave:h,allowOverlap:y,matchLinks:b}){let[v,g]=(0,T.useUpdatableTree)(e.map(O),o),[w,k]=n(b||{}),{selectedNodes:S,tree:x,selectedEntityType:R,isSelectingEntityType:j,entityTypesMap:A}=v,[{width:L,height:M},D]=f();return F("div.page-wrapper",[F("div.feedback-container",F(T.TreeDispatchContext.Provider,{value:g},[F(l,{description:"An error occurred while rendering the feedback text component."},F(_.FeedbackText,{text:t,dispatch:g,nodes:x,selectedNodes:S,allowOverlap:y,matchLinks:w})),F(p,{alignItems:"baseline",justifyContent:"space-between"},[F(C.ModelInfo,{data:r}),F(i,{options:[{label:"Tree",value:"tree"},{label:"Graph",value:"graph"}],value:v.viewMode,small:!0,onValueChange(e){console.log("Setting view mode",e),g({type:"set-view-mode",payload:e})}})]),F("div.entity-panel",{ref:D},[F.if("tree"==v.viewMode)(N,{selectedNodes:S,dispatch:g,tree:x,width:L,height:M,matchComponent:a}),F.if("graph"==v.viewMode)(E.GraphView,{tree:x,width:L,height:M,dispatch:g,selectedNodes:S})])])),F(s,{className:"control-panel"},[F("div.control-content",[F(d,{vertical:!0,fill:!0,minimal:!0,alignText:"left"},[F(m,{icon:"trash",disabled:v.initialTree==v.tree,onClick(){g({type:"reset"})}},"Reset"),F(u,{onClick(){h(v.tree)},disabled:v.initialTree==v.tree},"Save")]),F(H.Matches,{match:w,setMatchLinks:k,matchLinks:b,selectedNodes:S,tree:x,dispatch:g}),F(c),F(I,{entityTypes:A,selected:R,onChange(e){g({type:"select-entity-type",payload:e})},dispatch:g,tree:x,selectedNodes:S,isOpen:j,setOpen:e=>g({type:"toggle-entity-type-selector",payload:e})})])])])}function O(e){return{...e,term_type:e.type.name,txt_range:[e.indices],children:e.children?.map(O)??[]}}function I({entityTypes:e,selected:t,isOpen:r,setOpen:o,onChange:a,tree:i,dispatch:s,selectedNodes:d=[]}){let c=null!=t?t:void 0,[l,p]=n(""),m=Array.from(e.values()),u=""!==l?m.filter(e=>e.name.toLowerCase().includes(l.toLowerCase())):m;return F("div.entity-type-selector",[F(R.TypeList,{types:e,selected:c,dispatch:s,selectedNodes:d,tree:i}),F(x.OmniboxSelector,{isOpen:r,items:u,selectedItem:c,onSelectItem(e){o(!1),a(e)},onQueryChange(e){p(e)},onClose(){o(!1)}})])}function N(e){let{selectedNodes:n,dispatch:i,tree:s,height:d,width:c,matchComponent:l}=e,p=r(),m=r(!1),u=o(e=>F(S.default,{...e,matchComponent:l}),[l]);a(()=>{if(null!=p.current)!function(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}(new Set(n.map(e=>e.toString())),p.current.selectedIds)&&p.current.setSelection({ids:n.map(e=>e.toString()),anchor:null,mostRecent:null})},[n]);let f=r(!1);return a(()=>{let e=e=>{(e.ctrlKey||e.metaKey)&&(f.current=!0)},t=()=>f.current=!1;return window.addEventListener("keydown",e),window.addEventListener("keyup",t),()=>{window.removeEventListener("keydown",e),window.removeEventListener("keyup",t)}},[]),F("div.selection-tree-wrapper",{onPointerDown:function(){m.current=!0}},F(t,{className:"selection-tree",height:d,width:c,ref:p,data:s,onMove({dragIds:e,parentId:t,index:n}){i({type:"move-node",payload:{dragIds:e.map(e=>parseInt(e)),parentId:t?parseInt(t):null,index:n}})},onDelete({ids:e}){i({type:"delete-node",payload:{ids:e.map(e=>parseInt(e))}})},onSelect:o(e=>{if(!m.current)return;m.current=!1;let t=f.current,r=e.map(e=>parseInt(e.id));t?i({type:"toggle-node-selected",payload:{ids:r}}):(1===r.length&&r[0]===n[0]&&(r=[]),i({type:"select-node",payload:{ids:r}}))},[n,i]),children:u,idAccessor:e=>e.id.toString()}))}export{j as FeedbackComponent,$330ae695507d96f5$export$8d9dbb7a64bf2a5e as treeToGraph};
2
+ //# sourceMappingURL=feedback-components.0eef8d0c.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"A,M,oD,A,O,oD,A,O,oD,A,O,oD,A,O,oD,A,O,oD,A,O,oD,A,O,oD,A,O,oD,A,Q,M,mB,A,Q,Q,C,K,gB,A,Q,Y,C,C,U,C,C,e,C,C,a,C,K,O,A,Q,oB,C,C,Q,C,C,e,C,C,W,C,K,mB,A,Q,iB,C,C,W,C,C,gB,C,C,c,C,K,2B,A,Q,M,wB,C,S,E,C,C,C,C,C,C,C,E,O,c,C,E,E,C,I,E,I,E,W,C,E,a,C,C,E,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,oB,I,G,E,E,c,I,A,E,S,W,E,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SCuCA,IAAM,EAAI,AAAA,EAAM,MAAM,C,AAAC,G,AAAA,E,U,C,AAAA,E,O,CAAA,GAUhB,SAAS,EAAkB,CAAA,SAChC,EAAW,EAAE,CAAA,KACb,CAAI,CAAA,MACJ,CAAK,CAAA,YACL,CAAW,CAAA,eACX,CAAc,CAAA,OACd,CAAM,CAAA,aACN,CAAY,CAAA,WACZ,CAAU,CACX,EAEC,GAAM,CAAC,EAAO,EAAS,CAAG,AAAA,CAAA,EAAA,EAAA,gBAAe,AAAf,EACxB,EAAS,GAAG,CAAC,GACb,GAEI,CAAC,EAAO,EAAc,CAAG,AAAA,EAAS,GAAc,CAAC,GAEjD,CAAA,cACJ,CAAa,CAAA,KACb,CAAI,CAAA,mBACJ,CAAkB,CAAA,sBAClB,CAAqB,CAAA,eACrB,CAAc,CACf,CAAG,EAEE,CAAC,CAAA,MAAE,CAAK,CAAA,OAAE,CAAM,CAAE,CAAE,EAAI,CAAG,AAAA,IAEjC,OAAO,EAAE,mBAAoB,CAC3B,EACE,yBACA,EAAE,AAAA,EAAA,mBAAkB,CAAE,QAAQ,CAAE,CAAE,MAAO,CAAS,EAAG,CACnD,EACE,EACA,CACE,YACE,gEACJ,EA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","sources":["<anon>","packages/feedback-components/src/feedback/index.ts"],"sourcesContent":["import \"./feedback-components.b9317f9c.js\";\nimport \"./feedback-components.2f740fc7.js\";\nimport \"./feedback-components.69d0ccd0.js\";\nimport \"./feedback-components.b22d37d1.js\";\nimport \"./feedback-components.a7b43cfa.js\";\nimport \"./feedback-components.acac789b.js\";\nimport \"./feedback-components.41db283a.js\";\nimport \"./feedback-components.f8373b58.js\";\nimport \"./feedback-components.e140ac86.js\";\nimport $ajJMX$macrostrathyper from \"@macrostrat/hyper\";\nimport {Tree as $ajJMX$Tree} from \"react-arborist\";\nimport {useState as $ajJMX$useState, useRef as $ajJMX$useRef, useCallback as $ajJMX$useCallback, useEffect as $ajJMX$useEffect} from \"react\";\nimport {SegmentedControl as $ajJMX$SegmentedControl, Card as $ajJMX$Card, ButtonGroup as $ajJMX$ButtonGroup, Divider as $ajJMX$Divider} from \"@blueprintjs/core\";\nimport {ErrorBoundary as $ajJMX$ErrorBoundary, FlexRow as $ajJMX$FlexRow, CancelButton as $ajJMX$CancelButton, SaveButton as $ajJMX$SaveButton} from \"@macrostrat/ui-components\";\nimport $ajJMX$useelementdimensions from \"use-element-dimensions\";\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\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 $2c86488f2f3c1edd$exports = {};\n\n$parcel$export($2c86488f2f3c1edd$exports, \"FeedbackComponent\", () => $2c86488f2f3c1edd$export$a90600c9da52b40c);\n$parcel$export($2c86488f2f3c1edd$exports, \"treeToGraph\", () => (parcelRequire(\"eedTh\")).treeToGraph);\n\nvar $9wFEx = parcelRequire(\"9wFEx\");\n\n\n\nvar $bQY4Q = parcelRequire(\"bQY4Q\");\n\nvar $3OP12 = parcelRequire(\"3OP12\");\n\nvar $edvRb = parcelRequire(\"edvRb\");\n\nvar $eedTh = parcelRequire(\"eedTh\");\n\n\n\nvar $iKZjQ = parcelRequire(\"iKZjQ\");\n\n\n\nvar $bK9Of = parcelRequire(\"bK9Of\");\n\nvar $jlqgz = parcelRequire(\"jlqgz\");\n\nvar $aWecs = parcelRequire(\"aWecs\");\nconst $2c86488f2f3c1edd$var$h = (0, $ajJMX$macrostrathyper).styled((0, (/*@__PURE__*/$parcel$interopDefault($9wFEx))));\nfunction $2c86488f2f3c1edd$var$setsAreTheSame(a, b) {\n if (a.size !== b.size) return false;\n for (const item of a){\n if (!b.has(item)) return false;\n }\n return true;\n}\nfunction $2c86488f2f3c1edd$export$a90600c9da52b40c({ entities: entities = [], text: text, model: model, entityTypes: entityTypes, matchComponent: matchComponent, onSave: onSave, allowOverlap: allowOverlap, matchLinks: matchLinks }) {\n // Get the input arguments\n const [state, dispatch] = (0, $eedTh.useUpdatableTree)(entities.map($2c86488f2f3c1edd$var$processEntity), entityTypes);\n const [match, setMatchLinks] = (0, $ajJMX$useState)(matchLinks || {});\n const { selectedNodes: selectedNodes, tree: tree, selectedEntityType: selectedEntityType, isSelectingEntityType: isSelectingEntityType, entityTypesMap: entityTypesMap } = state;\n const [{ width: width, height: height }, ref] = (0, $ajJMX$useelementdimensions)();\n return $2c86488f2f3c1edd$var$h(\"div.page-wrapper\", [\n $2c86488f2f3c1edd$var$h(\"div.feedback-container\", $2c86488f2f3c1edd$var$h((0, $eedTh.TreeDispatchContext).Provider, {\n value: dispatch\n }, [\n $2c86488f2f3c1edd$var$h((0, $ajJMX$ErrorBoundary), {\n description: \"An error occurred while rendering the feedback text component.\"\n }, $2c86488f2f3c1edd$var$h((0, $3OP12.FeedbackText), {\n text: text,\n dispatch: dispatch,\n // @ts-ignore\n nodes: tree,\n selectedNodes: selectedNodes,\n allowOverlap: allowOverlap,\n matchLinks: match\n })),\n $2c86488f2f3c1edd$var$h((0, $ajJMX$FlexRow), {\n alignItems: \"baseline\",\n justifyContent: \"space-between\"\n }, [\n $2c86488f2f3c1edd$var$h((0, $edvRb.ModelInfo), {\n data: model\n }),\n $2c86488f2f3c1edd$var$h((0, $ajJMX$SegmentedControl), {\n options: [\n {\n label: \"Tree\",\n value: \"tree\"\n },\n {\n label: \"Graph\",\n value: \"graph\"\n }\n ],\n value: state.viewMode,\n small: true,\n onValueChange (value) {\n console.log(\"Setting view mode\", value);\n dispatch({\n type: \"set-view-mode\",\n payload: value\n });\n }\n })\n ]),\n $2c86488f2f3c1edd$var$h(\"div.entity-panel\", {\n ref: ref\n }, [\n $2c86488f2f3c1edd$var$h.if(state.viewMode == \"tree\")($2c86488f2f3c1edd$var$ManagedSelectionTree, {\n selectedNodes: selectedNodes,\n dispatch: dispatch,\n tree: tree,\n width: width,\n height: height,\n matchComponent: matchComponent\n }),\n $2c86488f2f3c1edd$var$h.if(state.viewMode == \"graph\")((0, $bK9Of.GraphView), {\n tree: tree,\n width: width,\n height: height,\n dispatch: dispatch,\n selectedNodes: selectedNodes\n })\n ])\n ])),\n $2c86488f2f3c1edd$var$h((0, $ajJMX$Card), {\n className: \"control-panel\"\n }, [\n $2c86488f2f3c1edd$var$h(\"div.control-content\", [\n $2c86488f2f3c1edd$var$h((0, $ajJMX$ButtonGroup), {\n vertical: true,\n fill: true,\n minimal: true,\n alignText: \"left\"\n }, [\n $2c86488f2f3c1edd$var$h((0, $ajJMX$CancelButton), {\n icon: \"trash\",\n disabled: state.initialTree == state.tree,\n onClick () {\n dispatch({\n type: \"reset\"\n });\n }\n }, \"Reset\"),\n $2c86488f2f3c1edd$var$h((0, $ajJMX$SaveButton), {\n onClick () {\n onSave(state.tree);\n },\n disabled: state.initialTree == state.tree\n }, \"Save\")\n ]),\n $2c86488f2f3c1edd$var$h((0, $jlqgz.Matches), {\n match: match,\n setMatchLinks: setMatchLinks,\n matchLinks: matchLinks,\n selectedNodes: selectedNodes,\n tree: tree,\n dispatch: dispatch\n }),\n $2c86488f2f3c1edd$var$h((0, $ajJMX$Divider)),\n $2c86488f2f3c1edd$var$h($2c86488f2f3c1edd$var$EntityTypeSelector, {\n entityTypes: entityTypesMap,\n selected: selectedEntityType,\n onChange (payload) {\n dispatch({\n type: \"select-entity-type\",\n payload: payload\n });\n },\n dispatch: dispatch,\n tree: tree,\n selectedNodes: selectedNodes,\n isOpen: isSelectingEntityType,\n setOpen: (isOpen)=>dispatch({\n type: \"toggle-entity-type-selector\",\n payload: isOpen\n })\n })\n ])\n ])\n ]);\n}\nfunction $2c86488f2f3c1edd$var$processEntity(entity) {\n // @ts-ignore\n return {\n ...entity,\n // @ts-ignore\n term_type: entity.type.name,\n txt_range: [\n entity.indices\n ],\n children: entity.children?.map($2c86488f2f3c1edd$var$processEntity) ?? []\n };\n}\nfunction $2c86488f2f3c1edd$var$EntityTypeSelector({ entityTypes: entityTypes, selected: selected, isOpen: isOpen, setOpen: setOpen, onChange: onChange, tree: tree, dispatch: dispatch, selectedNodes: selectedNodes = [] }) {\n // Show all entity types when selected is null\n const _selected = selected != null ? selected : undefined;\n const [inputValue, setInputValue] = (0, $ajJMX$useState)(\"\");\n const types = Array.from(entityTypes.values());\n const items = inputValue !== \"\" ? types.filter((d)=>d.name.toLowerCase().includes(inputValue.toLowerCase())) : types;\n return $2c86488f2f3c1edd$var$h(\"div.entity-type-selector\", [\n $2c86488f2f3c1edd$var$h((0, $aWecs.TypeList), {\n types: entityTypes,\n selected: _selected,\n dispatch: dispatch,\n selectedNodes: selectedNodes,\n tree: tree\n }),\n $2c86488f2f3c1edd$var$h((0, $iKZjQ.OmniboxSelector), {\n isOpen: isOpen,\n items: items,\n selectedItem: _selected,\n onSelectItem (item) {\n setOpen(false);\n onChange(item);\n },\n onQueryChange (query) {\n setInputValue(query);\n },\n onClose () {\n setOpen(false);\n }\n })\n ]);\n}\nfunction $2c86488f2f3c1edd$var$countNodes(tree) {\n if (!tree) return 0;\n let count = 0;\n function recurse(nodes) {\n for (const node of nodes){\n count++;\n if (node.children && Array.isArray(node.children)) recurse(node.children);\n }\n }\n recurse(tree);\n return count;\n}\nfunction $2c86488f2f3c1edd$var$ManagedSelectionTree(props) {\n const { selectedNodes: selectedNodes, dispatch: dispatch, tree: tree, height: height, width: width, matchComponent: matchComponent } = props;\n const ref = (0, $ajJMX$useRef)();\n // Use a ref to track clicks (won't cause rerender)\n const clickedRef = (0, $ajJMX$useRef)(false);\n const _Node = (0, $ajJMX$useCallback)((props)=>$2c86488f2f3c1edd$var$h((0, $bQY4Q.default), {\n ...props,\n matchComponent: matchComponent\n }), [\n matchComponent\n ]);\n // Update Tree selection when selectedNodes change\n (0, $ajJMX$useEffect)(()=>{\n if (ref.current == null) return;\n const selection = new Set(selectedNodes.map((d)=>d.toString()));\n const currentSelection = ref.current.selectedIds;\n if ($2c86488f2f3c1edd$var$setsAreTheSame(selection, currentSelection)) return;\n ref.current.setSelection({\n ids: selectedNodes.map((d)=>d.toString()),\n anchor: null,\n mostRecent: null\n });\n }, [\n selectedNodes\n ]);\n // Mark clicked when user clicks inside the tree container\n function handleClick() {\n clickedRef.current = true;\n }\n const ctrlPressedRef = (0, $ajJMX$useRef)(false);\n (0, $ajJMX$useEffect)(()=>{\n const down = (e)=>{\n if (e.ctrlKey || e.metaKey) ctrlPressedRef.current = true;\n };\n const up = ()=>ctrlPressedRef.current = false;\n window.addEventListener(\"keydown\", down);\n window.addEventListener(\"keyup\", up);\n return ()=>{\n window.removeEventListener(\"keydown\", down);\n window.removeEventListener(\"keyup\", up);\n };\n }, []);\n const handleSelect = (0, $ajJMX$useCallback)((nodes)=>{\n if (!clickedRef.current) return;\n clickedRef.current = false;\n const isMultiSelect = ctrlPressedRef.current;\n let ids = nodes.map((d)=>parseInt(d.id));\n if (isMultiSelect) dispatch({\n type: \"toggle-node-selected\",\n payload: {\n ids: ids\n }\n });\n else {\n if (ids.length === 1 && ids[0] === selectedNodes[0]) ids = [];\n dispatch({\n type: \"select-node\",\n payload: {\n ids: ids\n }\n });\n }\n }, [\n selectedNodes,\n dispatch\n ]);\n return $2c86488f2f3c1edd$var$h(\"div.selection-tree-wrapper\", {\n onPointerDown: handleClick\n }, $2c86488f2f3c1edd$var$h((0, $ajJMX$Tree), {\n className: \"selection-tree\",\n height: height,\n width: width,\n ref: ref,\n data: tree,\n onMove ({ dragIds: dragIds, parentId: parentId, index: index }) {\n dispatch({\n type: \"move-node\",\n payload: {\n dragIds: dragIds.map((d)=>parseInt(d)),\n parentId: parentId ? parseInt(parentId) : null,\n index: index\n }\n });\n },\n onDelete ({ ids: ids }) {\n dispatch({\n type: \"delete-node\",\n payload: {\n ids: ids.map((d)=>parseInt(d))\n }\n });\n },\n onSelect: handleSelect,\n children: _Node,\n idAccessor (d) {\n return d.id.toString();\n }\n }));\n}\n\n\nexport {$2c86488f2f3c1edd$export$a90600c9da52b40c as FeedbackComponent, $330ae695507d96f5$export$8d9dbb7a64bf2a5e as treeToGraph};\n//# sourceMappingURL=feedback-components.0eef8d0c.js.map\n","import styles from \"./feedback.module.sass\";\nimport hyper from \"@macrostrat/hyper\";\n\nimport { Tree, TreeApi } from \"react-arborist\";\nimport Node from \"./node\";\nimport { FeedbackText } from \"./text-visualizer\";\nimport type { InternalEntity, TreeData } from \"./types\";\nimport type { Entity } from \"../extractions\";\nimport { getTagStyle, ModelInfo } from \"../extractions\";\nimport {\n TreeDispatchContext,\n treeToGraph,\n useUpdatableTree,\n ViewMode,\n} from \"./edit-state\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n ButtonGroup,\n Card,\n SegmentedControl,\n Divider,\n} from \"@blueprintjs/core\";\nimport { OmniboxSelector } from \"./type-selector\";\nimport {\n CancelButton,\n ErrorBoundary,\n FlexRow,\n SaveButton,\n} from \"@macrostrat/ui-components\";\nimport useElementDimensions from \"use-element-dimensions\";\nimport { GraphView } from \"./graph\";\n\nimport { Matches } from \"./matches\";\nimport { TypeList } from \"./typelist\";\n\nexport type { GraphData } from \"./edit-state\";\nexport { treeToGraph } from \"./edit-state\";\nexport type { TreeData } from \"./types\";\n\nconst h = hyper.styled(styles);\n\nfunction setsAreTheSame<T>(a: Set<T>, b: Set<T>) {\n if (a.size !== b.size) return false;\n for (const item of a) {\n if (!b.has(item)) return false;\n }\n return true;\n}\n\nexport function FeedbackComponent({\n entities = [],\n text,\n model,\n entityTypes,\n matchComponent,\n onSave,\n allowOverlap,\n matchLinks,\n}) {\n // Get the input arguments\n const [state, dispatch] = useUpdatableTree(\n entities.map(processEntity) as any,\n entityTypes,\n );\n const [match, setMatchLinks] = useState(matchLinks || {});\n\n const {\n selectedNodes,\n tree,\n selectedEntityType,\n isSelectingEntityType,\n entityTypesMap,\n } = state;\n\n const [{ width, height }, ref] = useElementDimensions();\n\n return h(\"div.page-wrapper\", [\n h(\n \"div.feedback-container\",\n h(TreeDispatchContext.Provider, { value: dispatch }, [\n h(\n ErrorBoundary,\n {\n description:\n \"An error occurred while rendering the feedback text component.\",\n },\n h(FeedbackText, {\n text,\n dispatch,\n // @ts-ignore\n nodes: tree,\n selectedNodes,\n allowOverlap,\n matchLinks: match,\n }),\n ),\n h(\n FlexRow,\n { alignItems: \"baseline\", justifyContent: \"space-between\" },\n [\n h(ModelInfo, { data: model }),\n h(SegmentedControl, {\n options: [\n { label: \"Tree\", value: \"tree\" },\n { label: \"Graph\", value: \"graph\" },\n ],\n value: state.viewMode,\n small: true,\n onValueChange(value: ViewMode) {\n console.log(\"Setting view mode\", value);\n dispatch({ type: \"set-view-mode\", payload: value });\n },\n }),\n ],\n ),\n h(\n \"div.entity-panel\",\n {\n ref,\n },\n [\n h.if(state.viewMode == \"tree\")(ManagedSelectionTree, {\n selectedNodes,\n dispatch,\n tree,\n width,\n height,\n matchComponent,\n }),\n h.if(state.viewMode == \"graph\")(GraphView, {\n tree,\n width,\n height,\n dispatch,\n selectedNodes,\n }),\n ],\n ),\n ]),\n ),\n h(Card, { className: \"control-panel\" }, [\n h(\"div.control-content\", [\n h(\n ButtonGroup,\n {\n vertical: true,\n fill: true,\n minimal: true,\n alignText: \"left\",\n },\n [\n h(\n CancelButton,\n {\n icon: \"trash\",\n disabled: state.initialTree == state.tree,\n onClick() {\n dispatch({ type: \"reset\" });\n },\n },\n \"Reset\",\n ),\n h(\n SaveButton,\n {\n onClick() {\n onSave(state.tree);\n },\n disabled: state.initialTree == state.tree,\n },\n \"Save\",\n ),\n ],\n ),\n h(Matches, {\n match,\n setMatchLinks,\n matchLinks,\n selectedNodes,\n tree,\n dispatch,\n }),\n h(Divider),\n h(EntityTypeSelector, {\n entityTypes: entityTypesMap,\n selected: selectedEntityType,\n onChange(payload) {\n dispatch({ type: \"select-entity-type\", payload });\n },\n dispatch,\n tree,\n selectedNodes,\n isOpen: isSelectingEntityType,\n setOpen: (isOpen: boolean) =>\n dispatch({\n type: \"toggle-entity-type-selector\",\n payload: isOpen,\n }),\n }),\n ]),\n ]),\n ]);\n}\n\nfunction processEntity(entity: Entity): InternalEntity {\n // @ts-ignore\n return {\n ...entity,\n // @ts-ignore\n term_type: entity.type.name,\n txt_range: [entity.indices],\n children: entity.children?.map(processEntity) ?? [],\n };\n}\n\nfunction EntityTypeSelector({\n entityTypes,\n selected,\n isOpen,\n setOpen,\n onChange,\n tree,\n dispatch,\n selectedNodes = [],\n}) {\n // Show all entity types when selected is null\n const _selected = selected != null ? selected : undefined;\n const [inputValue, setInputValue] = useState(\"\");\n const types = Array.from(entityTypes.values());\n\n const items =\n inputValue !== \"\"\n ? types.filter((d) =>\n d.name.toLowerCase().includes(inputValue.toLowerCase()),\n )\n : types;\n\n return h(\"div.entity-type-selector\", [\n h(TypeList, {\n types: entityTypes,\n selected: _selected,\n dispatch,\n selectedNodes,\n tree,\n }),\n h(OmniboxSelector, {\n isOpen,\n items,\n selectedItem: _selected,\n onSelectItem(item) {\n setOpen(false);\n onChange(item);\n },\n onQueryChange(query) {\n setInputValue(query);\n },\n onClose() {\n setOpen(false);\n },\n }),\n ]);\n}\n\nfunction countNodes(tree) {\n if (!tree) return 0;\n let count = 0;\n\n function recurse(nodes) {\n for (const node of nodes) {\n count++;\n if (node.children && Array.isArray(node.children)) {\n recurse(node.children);\n }\n }\n }\n\n recurse(tree);\n return count;\n}\n\nfunction ManagedSelectionTree(props) {\n const { selectedNodes, dispatch, tree, height, width, matchComponent } =\n props;\n\n const ref = useRef<TreeApi<TreeData>>();\n // Use a ref to track clicks (won't cause rerender)\n const clickedRef = useRef(false);\n\n const _Node = useCallback(\n (props) => h(Node, { ...props, matchComponent }),\n [matchComponent],\n );\n\n // Update Tree selection when selectedNodes change\n useEffect(() => {\n if (ref.current == null) return;\n\n const selection = new Set(selectedNodes.map((d) => d.toString()));\n const currentSelection = ref.current.selectedIds;\n if (setsAreTheSame(selection, currentSelection)) return;\n\n ref.current.setSelection({\n ids: selectedNodes.map((d) => d.toString()),\n anchor: null,\n mostRecent: null,\n });\n }, [selectedNodes]);\n\n // Mark clicked when user clicks inside the tree container\n function handleClick() {\n clickedRef.current = true;\n }\n\n const ctrlPressedRef = useRef(false);\n\n useEffect(() => {\n const down = (e) => {\n if (e.ctrlKey || e.metaKey) ctrlPressedRef.current = true;\n };\n const up = () => (ctrlPressedRef.current = false);\n\n window.addEventListener(\"keydown\", down);\n window.addEventListener(\"keyup\", up);\n return () => {\n window.removeEventListener(\"keydown\", down);\n window.removeEventListener(\"keyup\", up);\n };\n }, []);\n\n const handleSelect = useCallback(\n (nodes) => {\n if (!clickedRef.current) return;\n clickedRef.current = false;\n const isMultiSelect = ctrlPressedRef.current;\n\n let ids = nodes.map((d) => parseInt(d.id));\n\n if (isMultiSelect) {\n dispatch({ type: \"toggle-node-selected\", payload: { ids } });\n } else {\n if (ids.length === 1 && ids[0] === selectedNodes[0]) {\n ids = [];\n }\n\n dispatch({ type: \"select-node\", payload: { ids } });\n }\n },\n [selectedNodes, dispatch],\n );\n\n return h(\n \"div.selection-tree-wrapper\",\n { onPointerDown: handleClick },\n h(Tree, {\n className: \"selection-tree\",\n height,\n width,\n ref,\n data: tree,\n onMove({ dragIds, parentId, index }) {\n dispatch({\n type: \"move-node\",\n payload: {\n dragIds: dragIds.map((d) => parseInt(d)),\n parentId: parentId ? parseInt(parentId) : null,\n index,\n },\n });\n },\n onDelete({ ids }) {\n dispatch({\n type: \"delete-node\",\n payload: { ids: ids.map((d) => parseInt(d)) },\n });\n },\n onSelect: handleSelect,\n children: _Node,\n idAccessor(d) {\n return d.id.toString();\n },\n }),\n );\n}\n"],"names":["$ajJMX$macrostrathyper","Tree","$ajJMX$Tree","useState","$ajJMX$useState","useRef","$ajJMX$useRef","useCallback","$ajJMX$useCallback","useEffect","$ajJMX$useEffect","SegmentedControl","$ajJMX$SegmentedControl","Card","$ajJMX$Card","ButtonGroup","$ajJMX$ButtonGroup","Divider","$ajJMX$Divider","ErrorBoundary","$ajJMX$ErrorBoundary","FlexRow","$ajJMX$FlexRow","CancelButton","$ajJMX$CancelButton","SaveButton","$ajJMX$SaveButton","$ajJMX$useelementdimensions","$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$2c86488f2f3c1edd$exports","$2c86488f2f3c1edd$export$a90600c9da52b40c","treeToGraph","$9wFEx","$bQY4Q","$3OP12","$edvRb","$eedTh","$iKZjQ","$bK9Of","$jlqgz","$aWecs","$2c86488f2f3c1edd$var$h","styled","a","__esModule","default","entities","text","model","entityTypes","matchComponent","onSave","allowOverlap","matchLinks","state","dispatch","useUpdatableTree","map","$2c86488f2f3c1edd$var$processEntity","match","setMatchLinks","selectedNodes","tree","selectedEntityType","isSelectingEntityType","entityTypesMap","width","height","ref","TreeDispatchContext","Provider","value","description","FeedbackText","nodes","alignItems","justifyContent","ModelInfo","data","options","label","viewMode","small","onValueChange","console","log","type","payload","if","$2c86488f2f3c1edd$var$ManagedSelectionTree","GraphView","className","vertical","fill","minimal","alignText","icon","disabled","initialTree","onClick","Matches","$2c86488f2f3c1edd$var$EntityTypeSelector","selected","onChange","isOpen","setOpen","entity","term_type","name","txt_range","indices","children","_selected","undefined","inputValue","setInputValue","types","Array","from","values","items","filter","d","toLowerCase","includes","TypeList","OmniboxSelector","selectedItem","onSelectItem","item","onQueryChange","query","onClose","props","clickedRef","_Node","current","$2c86488f2f3c1edd$var$setsAreTheSame","b","size","has","Set","toString","selectedIds","setSelection","ids","anchor","mostRecent","ctrlPressedRef","down","ctrlKey","metaKey","up","window","addEventListener","removeEventListener","onPointerDown","onMove","dragIds","parentId","index","parseInt","onDelete","onSelect","isMultiSelect","length","idAccessor","FeedbackComponent","$330ae695507d96f5$export$8d9dbb7a64bf2a5e"],"version":3,"file":"feedback-components.0eef8d0c.js.map","sourceRoot":"../../../../"}
@@ -1,2 +1,2 @@
1
- import"./feedback-components.b22d37d1.js";import"./feedback-components.b7946db4.js";import"./feedback-components.c459cc27.js";import e from"@macrostrat/hyper";var t=globalThis,r={},a={},o=t.parcelRequirea149;null==o&&((o=function(e){if(e in r)return r[e].exports;if(e in a){var t=a[e];delete a[e];var o={id:e,exports:{}};return r[e]=o,t.call(o.exports,o,o.exports),o.exports}var n=Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}).register=function(e,t){a[e]=t},t.parcelRequirea149=o),o.register;var n=o("edvRb"),d=o("eedTh"),i=o("9wFEx");let l=e.styled(i&&i.__esModule?i.default:i);var c=function({node:e,style:t,dragHandle:r,tree:a,matchComponent:o}){let i=function e(t,r){if(0==r.selectedNodes.length)return!0;for(let e of r.selectedNodes){var a,o;if(a=t.data,o=e.data,a.id==o.id)return!0}return!!(null!=t.parent&&e(t.parent,r))}(e,a),c=function(e,t){for(let o of t.selectedNodes){var r,a;if(r=e.data,a=o.data,r.id==a.id)return!0}return!1}(e,a),s=(0,d.useTreeDispatch)();return e.data?.type||(e.data.type={name:"lith",color:"rgb(107, 255, 91)"}),l("div.node",{style:t,ref:r},l(n.EntityTag,{data:e.data,active:c,highlighted:i,matchComponent:o,onClickType(){s({type:"toggle-entity-type-selector"})}}))};export{c as default};
2
- //# sourceMappingURL=feedback-components.f9abf0d6.js.map
1
+ import"./feedback-components.b22d37d1.js";import"./feedback-components.a7b43cfa.js";import"./feedback-components.b9317f9c.js";import e from"@macrostrat/hyper";var t=globalThis,r={},a={},o=t.parcelRequirea149;null==o&&((o=function(e){if(e in r)return r[e].exports;if(e in a){var t=a[e];delete a[e];var o={id:e,exports:{}};return r[e]=o,t.call(o.exports,o,o.exports),o.exports}var n=Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}).register=function(e,t){a[e]=t},t.parcelRequirea149=o),o.register;var n=o("edvRb"),d=o("eedTh"),i=o("9wFEx");let l=e.styled(i&&i.__esModule?i.default:i);var c=function({node:e,style:t,dragHandle:r,tree:a,matchComponent:o}){let i=function e(t,r){if(0==r.selectedNodes.length)return!0;for(let e of r.selectedNodes){var a,o;if(a=t.data,o=e.data,a.id==o.id)return!0}return!!(null!=t.parent&&e(t.parent,r))}(e,a),c=function(e,t){for(let o of t.selectedNodes){var r,a;if(r=e.data,a=o.data,r.id==a.id)return!0}return!1}(e,a),s=(0,d.useTreeDispatch)();return e.data?.type||(e.data.type={name:"lith",color:"rgb(107, 255, 91)"}),l("div.node",{style:t,ref:r},l(n.EntityTag,{data:e.data,active:c,highlighted:i,matchComponent:o,onClickType(){s({type:"toggle-entity-type-selector"})}}))};export{c as default};
2
+ //# sourceMappingURL=feedback-components.2f740fc7.js.map
@@ -1 +1 @@
1
- {"mappings":"A,M,oD,A,O,oD,A,O,oD,A,Q,M,mB,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,S,E,E,SCOA,IAAM,EAAI,AAAA,EAAM,MAAM,C,AAAC,G,AAAA,E,U,C,AAAA,E,O,CAAA,GA+DvB,IAAA,EA3BA,SAAc,CAAA,KAAE,CAAI,CAAA,MAAE,CAAK,CAAA,WAAE,CAAU,CAAA,KAAE,CAAI,CAAA,eAAE,CAAc,CAAO,EAClE,IAAI,EAAuB,AA9B7B,SAAS,EAAkB,CAAuB,CAAE,CAAuB,EAEzE,GAAI,AAA6B,GAA7B,EAAK,aAAa,CAAC,MAAM,CAC3B,MAAO,CAAA,EAGT,IAAK,IAAM,KAAgB,EAAK,aAAa,CAC3C,KAZgB,EAAsB,EAYtC,GAZgB,EAYD,EAAK,IAAI,CAZc,EAYZ,EAAa,IAAI,CAXtC,EAAW,EAAE,EAAI,EAAS,EAAE,CAY/B,MAAO,CAAA,CADT,SAME,CAAA,AAAe,MAAf,EAAK,MAAM,EAAY,EAAkB,EAAK,MAAM,CAAE,EAAA,CAK5D,EAY+C,EAAM,GAC/C,EAAkB,AAXxB,SAAsB,CAAuB,CAAE,CAAuB,EACpE,IAAK,IAAM,KAAgB,EAAK,aAAa,CAC3C,KA3BgB,EAAsB,EA2BtC,GA3BgB,EA2BD,EAAK,IAAI,CA3Bc,EA2BZ,EAAa,IAAI,CA1BtC,EAAW,EAAE,EAAI,EAAS,EAAE,CA2B/B,MAAO,CAAA,CADT,CAIF,MAAO,CAAA,CACT,EAIqC,EAAM,GAEnC,EAAW,AAAA,CAAA,EAAA,EAAA,eAAc,AAAd,IAQjB,OAJI,AAAC,EAAK,IAAI,EAAE,MACd,CAAA,EAAK,IAAI,CAAC,IAAI,CAAG,CAAE,KAAM,OAAQ,MAAO,mBAAoB,CAAA,EAGvD,EACL,WACA,CAAE,MAAA,EAAO,IAAK,CAAW,EACzB,EAAE,EAAA,SAAQ,CAAG,CACX,KAAM,EAAK,IAAI,CACf,OAAA,EACA,YAAA,EACA,eAAA,EACA,cACE,EAAS,CAAE,KAAM,6BAA8B,EACjD,CACF,GAEJ,S,K,O","sources":["<anon>","packages/feedback-components/src/feedback/node.ts"],"sourcesContent":["import \"./feedback-components.b22d37d1.js\";\nimport \"./feedback-components.b7946db4.js\";\nimport \"./feedback-components.c459cc27.js\";\nimport $hPIF3$macrostrathyper from \"@macrostrat/hyper\";\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 $edvRb = parcelRequire(\"edvRb\");\n\nvar $eedTh = parcelRequire(\"eedTh\");\n\nvar $9wFEx = parcelRequire(\"9wFEx\");\n\nconst $2e9ede27ff2a3eea$var$h = (0, $hPIF3$macrostrathyper).styled((0, (/*@__PURE__*/$parcel$interopDefault($9wFEx))));\nfunction $2e9ede27ff2a3eea$var$isSelected(searchNode, treeNode) {\n return searchNode.id == treeNode.id;\n// We could also select children of the search node here if we wanted to\n}\nfunction $2e9ede27ff2a3eea$var$isNodeHighlighted(node, tree) {\n // We treat no selection as all nodes being active. We may add some nuance later\n if (tree.selectedNodes.length == 0) return true;\n for (const selectedNode of tree.selectedNodes){\n if ($2e9ede27ff2a3eea$var$isSelected(node.data, selectedNode.data)) return true;\n }\n // Check if the parent node is highlighted\n if (node.parent != null && $2e9ede27ff2a3eea$var$isNodeHighlighted(node.parent, tree)) return true;\n return false;\n}\nfunction $2e9ede27ff2a3eea$var$isNodeActive(node, tree) {\n for (const selectedNode of tree.selectedNodes){\n if ($2e9ede27ff2a3eea$var$isSelected(node.data, selectedNode.data)) return true;\n }\n return false;\n}\nfunction $2e9ede27ff2a3eea$var$Node({ node: node, style: style, dragHandle: dragHandle, tree: tree, matchComponent: matchComponent }) {\n let highlighted = $2e9ede27ff2a3eea$var$isNodeHighlighted(node, tree);\n let active = $2e9ede27ff2a3eea$var$isNodeActive(node, tree);\n const dispatch = (0, $eedTh.useTreeDispatch)();\n // console.log(\"Node render\", node.data, highlighted, active);\n if (!node.data?.type) node.data.type = {\n name: \"lith\",\n color: \"rgb(107, 255, 91)\"\n };\n return $2e9ede27ff2a3eea$var$h(\"div.node\", {\n style: style,\n ref: dragHandle\n }, $2e9ede27ff2a3eea$var$h((0, $edvRb.EntityTag), {\n data: node.data,\n active: active,\n highlighted: highlighted,\n matchComponent: matchComponent,\n onClickType () {\n dispatch({\n type: \"toggle-entity-type-selector\"\n });\n }\n }));\n}\nvar $2e9ede27ff2a3eea$export$2e2bcd8739ae039 = $2e9ede27ff2a3eea$var$Node;\n\n\nexport {$2e9ede27ff2a3eea$export$2e2bcd8739ae039 as default};\n//# sourceMappingURL=feedback-components.f9abf0d6.js.map\n","import { NodeApi, TreeApi } from \"react-arborist\";\nimport { TreeData } from \"./types\";\nimport { EntityTag } from \"../extractions\";\nimport { useTreeDispatch } from \"./edit-state\";\nimport styles from \"./feedback.module.sass\";\nimport hyper from \"@macrostrat/hyper\";\n\nconst h = hyper.styled(styles);\n\nfunction isSelected(searchNode: TreeData, treeNode: TreeData) {\n return searchNode.id == treeNode.id;\n // We could also select children of the search node here if we wanted to\n}\n\nfunction isNodeHighlighted(node: NodeApi<TreeData>, tree: TreeApi<TreeData>) {\n // We treat no selection as all nodes being active. We may add some nuance later\n if (tree.selectedNodes.length == 0) {\n return true;\n }\n\n for (const selectedNode of tree.selectedNodes) {\n if (isSelected(node.data, selectedNode.data)) {\n return true;\n }\n }\n\n // Check if the parent node is highlighted\n if (node.parent != null && isNodeHighlighted(node.parent, tree)) {\n return true;\n }\n\n return false;\n}\n\nfunction isNodeActive(node: NodeApi<TreeData>, tree: TreeApi<TreeData>) {\n for (const selectedNode of tree.selectedNodes) {\n if (isSelected(node.data, selectedNode.data)) {\n return true;\n }\n }\n return false;\n}\n\nfunction Node({ node, style, dragHandle, tree, matchComponent }: any) {\n let highlighted: boolean = isNodeHighlighted(node, tree);\n let active: boolean = isNodeActive(node, tree);\n\n const dispatch = useTreeDispatch();\n\n // console.log(\"Node render\", node.data, highlighted, active);\n\n if (!node.data?.type) {\n node.data.type = { name: \"lith\", color: \"rgb(107, 255, 91)\" };\n }\n\n return h(\n \"div.node\",\n { style, ref: dragHandle },\n h(EntityTag, {\n data: node.data,\n active,\n highlighted,\n matchComponent,\n onClickType() {\n dispatch({ type: \"toggle-entity-type-selector\" });\n },\n }),\n );\n}\n\nexport default Node;\n"],"names":["$hPIF3$macrostrathyper","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$edvRb","$eedTh","$9wFEx","$2e9ede27ff2a3eea$var$h","styled","a","__esModule","default","$2e9ede27ff2a3eea$export$2e2bcd8739ae039","node","style","dragHandle","tree","matchComponent","highlighted","$2e9ede27ff2a3eea$var$isNodeHighlighted","selectedNodes","length","selectedNode","searchNode","treeNode","data","parent","active","$2e9ede27ff2a3eea$var$isNodeActive","dispatch","useTreeDispatch","type","name","color","ref","EntityTag","onClickType"],"version":3,"file":"feedback-components.f9abf0d6.js.map","sourceRoot":"../../../../"}
1
+ {"mappings":"A,M,oD,A,O,oD,A,O,oD,A,Q,M,mB,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,S,E,E,SCOA,IAAM,EAAI,AAAA,EAAM,MAAM,C,AAAC,G,AAAA,E,U,C,AAAA,E,O,CAAA,GA+DvB,IAAA,EA3BA,SAAc,CAAA,KAAE,CAAI,CAAA,MAAE,CAAK,CAAA,WAAE,CAAU,CAAA,KAAE,CAAI,CAAA,eAAE,CAAc,CAAO,EAClE,IAAI,EAAuB,AA9B7B,SAAS,EAAkB,CAAuB,CAAE,CAAuB,EAEzE,GAAI,AAA6B,GAA7B,EAAK,aAAa,CAAC,MAAM,CAC3B,MAAO,CAAA,EAGT,IAAK,IAAM,KAAgB,EAAK,aAAa,CAC3C,KAZgB,EAAsB,EAYtC,GAZgB,EAYD,EAAK,IAAI,CAZc,EAYZ,EAAa,IAAI,CAXtC,EAAW,EAAE,EAAI,EAAS,EAAE,CAY/B,MAAO,CAAA,CADT,SAME,CAAA,AAAe,MAAf,EAAK,MAAM,EAAY,EAAkB,EAAK,MAAM,CAAE,EAAA,CAK5D,EAY+C,EAAM,GAC/C,EAAkB,AAXxB,SAAsB,CAAuB,CAAE,CAAuB,EACpE,IAAK,IAAM,KAAgB,EAAK,aAAa,CAC3C,KA3BgB,EAAsB,EA2BtC,GA3BgB,EA2BD,EAAK,IAAI,CA3Bc,EA2BZ,EAAa,IAAI,CA1BtC,EAAW,EAAE,EAAI,EAAS,EAAE,CA2B/B,MAAO,CAAA,CADT,CAIF,MAAO,CAAA,CACT,EAIqC,EAAM,GAEnC,EAAW,AAAA,CAAA,EAAA,EAAA,eAAc,AAAd,IAQjB,OAJI,AAAC,EAAK,IAAI,EAAE,MACd,CAAA,EAAK,IAAI,CAAC,IAAI,CAAG,CAAE,KAAM,OAAQ,MAAO,mBAAoB,CAAA,EAGvD,EACL,WACA,CAAE,MAAA,EAAO,IAAK,CAAW,EACzB,EAAE,EAAA,SAAQ,CAAG,CACX,KAAM,EAAK,IAAI,CACf,OAAA,EACA,YAAA,EACA,eAAA,EACA,cACE,EAAS,CAAE,KAAM,6BAA8B,EACjD,CACF,GAEJ,S,K,O","sources":["<anon>","packages/feedback-components/src/feedback/node.ts"],"sourcesContent":["import \"./feedback-components.b22d37d1.js\";\nimport \"./feedback-components.a7b43cfa.js\";\nimport \"./feedback-components.b9317f9c.js\";\nimport $hPIF3$macrostrathyper from \"@macrostrat/hyper\";\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 $edvRb = parcelRequire(\"edvRb\");\n\nvar $eedTh = parcelRequire(\"eedTh\");\n\nvar $9wFEx = parcelRequire(\"9wFEx\");\n\nconst $2e9ede27ff2a3eea$var$h = (0, $hPIF3$macrostrathyper).styled((0, (/*@__PURE__*/$parcel$interopDefault($9wFEx))));\nfunction $2e9ede27ff2a3eea$var$isSelected(searchNode, treeNode) {\n return searchNode.id == treeNode.id;\n// We could also select children of the search node here if we wanted to\n}\nfunction $2e9ede27ff2a3eea$var$isNodeHighlighted(node, tree) {\n // We treat no selection as all nodes being active. We may add some nuance later\n if (tree.selectedNodes.length == 0) return true;\n for (const selectedNode of tree.selectedNodes){\n if ($2e9ede27ff2a3eea$var$isSelected(node.data, selectedNode.data)) return true;\n }\n // Check if the parent node is highlighted\n if (node.parent != null && $2e9ede27ff2a3eea$var$isNodeHighlighted(node.parent, tree)) return true;\n return false;\n}\nfunction $2e9ede27ff2a3eea$var$isNodeActive(node, tree) {\n for (const selectedNode of tree.selectedNodes){\n if ($2e9ede27ff2a3eea$var$isSelected(node.data, selectedNode.data)) return true;\n }\n return false;\n}\nfunction $2e9ede27ff2a3eea$var$Node({ node: node, style: style, dragHandle: dragHandle, tree: tree, matchComponent: matchComponent }) {\n let highlighted = $2e9ede27ff2a3eea$var$isNodeHighlighted(node, tree);\n let active = $2e9ede27ff2a3eea$var$isNodeActive(node, tree);\n const dispatch = (0, $eedTh.useTreeDispatch)();\n // console.log(\"Node render\", node.data, highlighted, active);\n if (!node.data?.type) node.data.type = {\n name: \"lith\",\n color: \"rgb(107, 255, 91)\"\n };\n return $2e9ede27ff2a3eea$var$h(\"div.node\", {\n style: style,\n ref: dragHandle\n }, $2e9ede27ff2a3eea$var$h((0, $edvRb.EntityTag), {\n data: node.data,\n active: active,\n highlighted: highlighted,\n matchComponent: matchComponent,\n onClickType () {\n dispatch({\n type: \"toggle-entity-type-selector\"\n });\n }\n }));\n}\nvar $2e9ede27ff2a3eea$export$2e2bcd8739ae039 = $2e9ede27ff2a3eea$var$Node;\n\n\nexport {$2e9ede27ff2a3eea$export$2e2bcd8739ae039 as default};\n//# sourceMappingURL=feedback-components.2f740fc7.js.map\n","import { NodeApi, TreeApi } from \"react-arborist\";\nimport { TreeData } from \"./types\";\nimport { EntityTag } from \"../extractions\";\nimport { useTreeDispatch } from \"./edit-state\";\nimport styles from \"./feedback.module.sass\";\nimport hyper from \"@macrostrat/hyper\";\n\nconst h = hyper.styled(styles);\n\nfunction isSelected(searchNode: TreeData, treeNode: TreeData) {\n return searchNode.id == treeNode.id;\n // We could also select children of the search node here if we wanted to\n}\n\nfunction isNodeHighlighted(node: NodeApi<TreeData>, tree: TreeApi<TreeData>) {\n // We treat no selection as all nodes being active. We may add some nuance later\n if (tree.selectedNodes.length == 0) {\n return true;\n }\n\n for (const selectedNode of tree.selectedNodes) {\n if (isSelected(node.data, selectedNode.data)) {\n return true;\n }\n }\n\n // Check if the parent node is highlighted\n if (node.parent != null && isNodeHighlighted(node.parent, tree)) {\n return true;\n }\n\n return false;\n}\n\nfunction isNodeActive(node: NodeApi<TreeData>, tree: TreeApi<TreeData>) {\n for (const selectedNode of tree.selectedNodes) {\n if (isSelected(node.data, selectedNode.data)) {\n return true;\n }\n }\n return false;\n}\n\nfunction Node({ node, style, dragHandle, tree, matchComponent }: any) {\n let highlighted: boolean = isNodeHighlighted(node, tree);\n let active: boolean = isNodeActive(node, tree);\n\n const dispatch = useTreeDispatch();\n\n // console.log(\"Node render\", node.data, highlighted, active);\n\n if (!node.data?.type) {\n node.data.type = { name: \"lith\", color: \"rgb(107, 255, 91)\" };\n }\n\n return h(\n \"div.node\",\n { style, ref: dragHandle },\n h(EntityTag, {\n data: node.data,\n active,\n highlighted,\n matchComponent,\n onClickType() {\n dispatch({ type: \"toggle-entity-type-selector\" });\n },\n }),\n );\n}\n\nexport default Node;\n"],"names":["$hPIF3$macrostrathyper","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$edvRb","$eedTh","$9wFEx","$2e9ede27ff2a3eea$var$h","styled","a","__esModule","default","$2e9ede27ff2a3eea$export$2e2bcd8739ae039","node","style","dragHandle","tree","matchComponent","highlighted","$2e9ede27ff2a3eea$var$isNodeHighlighted","selectedNodes","length","selectedNode","searchNode","treeNode","data","parent","active","$2e9ede27ff2a3eea$var$isNodeActive","dispatch","useTreeDispatch","type","name","color","ref","EntityTag","onClickType"],"version":3,"file":"feedback-components.2f740fc7.js.map","sourceRoot":"../../../../"}
@@ -1,2 +1,2 @@
1
- import"./feedback-components.b7946db4.js";import"./feedback-components.c459cc27.js";import"./feedback-components.b22d37d1.js";import e from"@macrostrat/hyper";import{forceSimulation as r,forceLink as t,forceManyBody as o,forceCenter as a,forceCollide as i}from"d3-force";import{useState as s,useEffect as l}from"react";import{Spinner as c,Switch as n}from"@blueprintjs/core";import{ErrorBoundary as d}from"@macrostrat/ui-components";var p=globalThis,h={},g={},f=p.parcelRequirea149;null==f&&((f=function(e){if(e in h)return h[e].exports;if(e in g){var r=g[e];delete g[e];var t={id:e,exports:{}};return h[e]=t,r.call(t.exports,t,t.exports),t.exports}var o=Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}).register=function(e,r){g[e]=r},p.parcelRequirea149=f),f.register;var u=f("eedTh"),m=f("9wFEx"),y=f("edvRb");let b=e.styled(m&&m.__esModule?m.default:m);function k(e){let{tree:p,width:h,height:g,dispatch:f,selectedNodes:m}=e,[k,x]=s(null),[w,v]=s(null),[S,_]=s(!1);return(l(()=>{let{nodes:e,edges:s}=(0,u.treeToGraph)(p),l=new Map(e.map(e=>[e.id,e])),c=s.map(e=>({source:l.get(e.source),target:l.get(e.dest),strength:1})),n=r(e).force("link",t(c)).force("charge",o().strength(-50)).force("center",a(h/2,g/2)).force("collide",i().radius(20)).on("tick",()=>{console.log("Simulation tick")}).on("end",()=>{x(e),v(c)});return()=>{n.stop()}},[p,h,g]),null==k||null==w)?b(c):(console.log("Graph",k,w,m),b(d,{description:"An error occurred while rendering the graph view."},b("div.graph-view",{style:{width:h,height:g}},[b(n,{className:"show-labels-switch",label:"Show Labels",checked:S,onChange:e=>_(e.target.checked)}),b("svg",{width:h,height:g},[b("g.links",w.map(e=>b("line",{x1:e.source.x,y1:e.source.y,x2:e.target.x,y2:e.target.y,stroke:"black"}))),b("g.nodes",k.map(e=>{var r,t,o;let a=m.includes(e.id),i=(r=e.id,t=m,o=k,0===t.length||t.includes(r)||o.some(e=>t.includes(e.id)&&e.children.some(e=>e.id===r))),s=(0,y.getTagStyle)(e.color,{highlighted:i,active:a});return b("g",[b("circle",{cx:e.x,cy:e.y,r:8,fill:s.backgroundColor||"blue",onClick:r=>{r.stopPropagation(),r.ctrlKey||r.metaKey||m[0]===e.id&&1===m.length?(r.stopPropagation(),f({type:"toggle-node-selected",payload:{ids:[e.id]}})):f({type:"select-node",payload:{ids:[e.id]}})},className:a?"selected":"",stroke:a?"white":"black",strokeWidth:2}),b.if(S)("text",{x:e.x+10,y:e.y+4,className:"node-label"},e.name||`Node ${e.id}`),b.if(!S)("title",e.name||`Node ${e.id}`)])}))])])))}export{k as GraphView};
2
- //# sourceMappingURL=feedback-components.4cd6b208.js.map
1
+ import"./feedback-components.a7b43cfa.js";import"./feedback-components.b9317f9c.js";import"./feedback-components.b22d37d1.js";import e from"@macrostrat/hyper";import{forceSimulation as r,forceLink as t,forceManyBody as o,forceCenter as a,forceCollide as i}from"d3-force";import{useState as s,useEffect as l}from"react";import{Spinner as c,Switch as n}from"@blueprintjs/core";import{ErrorBoundary as d}from"@macrostrat/ui-components";var p=globalThis,h={},g={},f=p.parcelRequirea149;null==f&&((f=function(e){if(e in h)return h[e].exports;if(e in g){var r=g[e];delete g[e];var t={id:e,exports:{}};return h[e]=t,r.call(t.exports,t,t.exports),t.exports}var o=Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}).register=function(e,r){g[e]=r},p.parcelRequirea149=f),f.register;var u=f("eedTh"),m=f("9wFEx"),y=f("edvRb");let b=e.styled(m&&m.__esModule?m.default:m);function k(e){let{tree:p,width:h,height:g,dispatch:f,selectedNodes:m}=e,[k,x]=s(null),[w,v]=s(null),[S,_]=s(!1);return(l(()=>{let{nodes:e,edges:s}=(0,u.treeToGraph)(p),l=new Map(e.map(e=>[e.id,e])),c=s.map(e=>({source:l.get(e.source),target:l.get(e.dest),strength:1})),n=r(e).force("link",t(c)).force("charge",o().strength(-50)).force("center",a(h/2,g/2)).force("collide",i().radius(20)).on("tick",()=>{console.log("Simulation tick")}).on("end",()=>{x(e),v(c)});return()=>{n.stop()}},[p,h,g]),null==k||null==w)?b(c):(console.log("Graph",k,w,m),b(d,{description:"An error occurred while rendering the graph view."},b("div.graph-view",{style:{width:h,height:g}},[b(n,{className:"show-labels-switch",label:"Show Labels",checked:S,onChange:e=>_(e.target.checked)}),b("svg",{width:h,height:g},[b("g.links",w.map(e=>b("line",{x1:e.source.x,y1:e.source.y,x2:e.target.x,y2:e.target.y,stroke:"black"}))),b("g.nodes",k.map(e=>{var r,t,o;let a=m.includes(e.id),i=(r=e.id,t=m,o=k,0===t.length||t.includes(r)||o.some(e=>t.includes(e.id)&&e.children.some(e=>e.id===r))),s=(0,y.getTagStyle)(e.color,{highlighted:i,active:a});return b("g",[b("circle",{cx:e.x,cy:e.y,r:8,fill:s.backgroundColor||"blue",onClick:r=>{r.stopPropagation(),r.ctrlKey||r.metaKey||m[0]===e.id&&1===m.length?(r.stopPropagation(),f({type:"toggle-node-selected",payload:{ids:[e.id]}})):f({type:"select-node",payload:{ids:[e.id]}})},className:a?"selected":"",stroke:a?"white":"black",strokeWidth:2}),b.if(S)("text",{x:e.x+10,y:e.y+4,className:"node-label"},e.name||`Node ${e.id}`),b.if(!S)("title",e.name||`Node ${e.id}`)])}))])])))}export{k as GraphView};
2
+ //# sourceMappingURL=feedback-components.41db283a.js.map