@macrostrat/feedback-components 1.1.7 → 1.1.8
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.
- package/CHANGELOG.md +6 -1
- package/dist/esm/{feedback-components.263bc4a5.js → feedback-components.00ee63d8.js} +10 -10
- package/dist/esm/feedback-components.00ee63d8.js.map +1 -0
- package/dist/esm/{feedback-components.5242166d.js → feedback-components.49750f16.js} +16 -15
- package/dist/esm/feedback-components.49750f16.js.map +1 -0
- package/dist/esm/{feedback-components.3cb322a5.js → feedback-components.7056256c.js} +5 -5
- package/dist/esm/{feedback-components.3cb322a5.js.map → feedback-components.7056256c.js.map} +1 -1
- package/dist/esm/{feedback-components.a35aed63.js → feedback-components.7dd42a9f.js} +4 -4
- package/dist/esm/{feedback-components.a35aed63.js.map → feedback-components.7dd42a9f.js.map} +1 -1
- package/dist/esm/{feedback-components.0d16f68a.js → feedback-components.a68566c0.js} +4 -4
- package/dist/esm/{feedback-components.0d16f68a.js.map → feedback-components.a68566c0.js.map} +1 -1
- package/dist/esm/{feedback-components.3c6291c9.css → feedback-components.d769ffa5.css} +1 -5
- package/dist/esm/feedback-components.d769ffa5.css.map +1 -0
- package/dist/esm/{feedback-components.c0ded32f.js → feedback-components.e60ed31b.js} +5 -5
- package/dist/esm/{feedback-components.c0ded32f.js.map → feedback-components.e60ed31b.js.map} +1 -1
- package/dist/esm/{feedback-components.b7fe8db7.js → feedback-components.e702eece.js} +1 -4
- package/dist/esm/feedback-components.e702eece.js.map +1 -0
- package/dist/esm/{feedback-components.3d7fd2df.js → feedback-components.fa847634.js} +9 -4
- package/dist/esm/feedback-components.fa847634.js.map +1 -0
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/node/{feedback-components.79d7b18c.js → feedback-components.43ebd847.js} +2 -2
- package/dist/node/{feedback-components.79d7b18c.js.map → feedback-components.43ebd847.js.map} +1 -1
- package/dist/node/{feedback-components.6e969752.js → feedback-components.5d0cbb0e.js} +2 -2
- package/dist/node/{feedback-components.6e969752.js.map → feedback-components.5d0cbb0e.js.map} +1 -1
- package/dist/node/feedback-components.97518e90.css +2 -0
- package/dist/node/feedback-components.97518e90.css.map +1 -0
- package/dist/node/{feedback-components.1ec0e5c7.js → feedback-components.af47a628.js} +2 -2
- package/dist/node/{feedback-components.1ec0e5c7.js.map → feedback-components.af47a628.js.map} +1 -1
- package/dist/node/feedback-components.c84ff10e.js +2 -0
- package/dist/node/feedback-components.c84ff10e.js.map +1 -0
- package/dist/node/feedback-components.d3a83264.js +2 -0
- package/dist/node/feedback-components.d3a83264.js.map +1 -0
- package/dist/node/feedback-components.dc76072c.js +2 -0
- package/dist/node/feedback-components.dc76072c.js.map +1 -0
- package/dist/node/feedback-components.f00697d0.js +2 -0
- package/dist/node/feedback-components.f00697d0.js.map +1 -0
- package/dist/node/{feedback-components.ad3ad94e.js → feedback-components.feab0bd0.js} +2 -2
- package/dist/node/{feedback-components.ad3ad94e.js.map → feedback-components.feab0bd0.js.map} +1 -1
- package/dist/node/index.js +1 -1
- package/dist/node/index.js.map +1 -1
- package/package.json +1 -1
- package/src/feedback/edit-state.ts +14 -2
- package/src/feedback/feedback.module.sass +0 -3
- package/src/feedback/index.ts +4 -3
- package/src/feedback/node.ts +13 -6
- package/dist/esm/feedback-components.263bc4a5.js.map +0 -1
- package/dist/esm/feedback-components.3c6291c9.css.map +0 -1
- package/dist/esm/feedback-components.3d7fd2df.js.map +0 -1
- package/dist/esm/feedback-components.5242166d.js.map +0 -1
- package/dist/esm/feedback-components.b7fe8db7.js.map +0 -1
- package/dist/node/feedback-components.104b4099.css +0 -2
- package/dist/node/feedback-components.104b4099.css.map +0 -1
- package/dist/node/feedback-components.4c09ec76.js +0 -2
- package/dist/node/feedback-components.4c09ec76.js.map +0 -1
- package/dist/node/feedback-components.8caef76e.js +0 -2
- package/dist/node/feedback-components.8caef76e.js.map +0 -1
- package/dist/node/feedback-components.cf680c38.js +0 -2
- package/dist/node/feedback-components.cf680c38.js.map +0 -1
- package/dist/node/feedback-components.e1fe112f.js +0 -2
- package/dist/node/feedback-components.e1fe112f.js.map +0 -1
|
@@ -23,7 +23,6 @@ $parcel$export($49c87ee97f392268$exports, "match-container", () => $49c87ee97f39
|
|
|
23
23
|
$parcel$export($49c87ee97f392268$exports, "match-item", () => $49c87ee97f392268$export$a7bcc8ced81f8d07, (v) => $49c87ee97f392268$export$a7bcc8ced81f8d07 = v);
|
|
24
24
|
$parcel$export($49c87ee97f392268$exports, "match-label", () => $49c87ee97f392268$export$be49c8f7a120829f, (v) => $49c87ee97f392268$export$be49c8f7a120829f = v);
|
|
25
25
|
$parcel$export($49c87ee97f392268$exports, "match-link", () => $49c87ee97f392268$export$f308f5f3e77e2c87, (v) => $49c87ee97f392268$export$f308f5f3e77e2c87 = v);
|
|
26
|
-
$parcel$export($49c87ee97f392268$exports, "node", () => $49c87ee97f392268$export$35059013cd4a06db, (v) => $49c87ee97f392268$export$35059013cd4a06db = v);
|
|
27
26
|
$parcel$export($49c87ee97f392268$exports, "node-label", () => $49c87ee97f392268$export$75d14899fb692bb6, (v) => $49c87ee97f392268$export$75d14899fb692bb6 = v);
|
|
28
27
|
$parcel$export($49c87ee97f392268$exports, "overlay-container", () => $49c87ee97f392268$export$6a1093e41947f68e, (v) => $49c87ee97f392268$export$6a1093e41947f68e = v);
|
|
29
28
|
$parcel$export($49c87ee97f392268$exports, "page-wrapper", () => $49c87ee97f392268$export$7c414e944018fb15, (v) => $49c87ee97f392268$export$7c414e944018fb15 = v);
|
|
@@ -53,7 +52,6 @@ var $49c87ee97f392268$export$864d1dadc1dd3f57;
|
|
|
53
52
|
var $49c87ee97f392268$export$a7bcc8ced81f8d07;
|
|
54
53
|
var $49c87ee97f392268$export$be49c8f7a120829f;
|
|
55
54
|
var $49c87ee97f392268$export$f308f5f3e77e2c87;
|
|
56
|
-
var $49c87ee97f392268$export$35059013cd4a06db;
|
|
57
55
|
var $49c87ee97f392268$export$75d14899fb692bb6;
|
|
58
56
|
var $49c87ee97f392268$export$6a1093e41947f68e;
|
|
59
57
|
var $49c87ee97f392268$export$7c414e944018fb15;
|
|
@@ -83,7 +81,6 @@ $49c87ee97f392268$export$864d1dadc1dd3f57 = `QoX8-W_match-container`;
|
|
|
83
81
|
$49c87ee97f392268$export$a7bcc8ced81f8d07 = `QoX8-W_match-item`;
|
|
84
82
|
$49c87ee97f392268$export$be49c8f7a120829f = `QoX8-W_match-label`;
|
|
85
83
|
$49c87ee97f392268$export$f308f5f3e77e2c87 = `QoX8-W_match-link`;
|
|
86
|
-
$49c87ee97f392268$export$35059013cd4a06db = `QoX8-W_node`;
|
|
87
84
|
$49c87ee97f392268$export$75d14899fb692bb6 = `QoX8-W_node-label`;
|
|
88
85
|
$49c87ee97f392268$export$6a1093e41947f68e = `QoX8-W_overlay-container`;
|
|
89
86
|
$49c87ee97f392268$export$7c414e944018fb15 = `QoX8-W_page-wrapper`;
|
|
@@ -97,4 +94,4 @@ $49c87ee97f392268$export$5e5acbc770fb0e4 = `QoX8-W_type-tag`;
|
|
|
97
94
|
|
|
98
95
|
|
|
99
96
|
export {$49c87ee97f392268$exports as default};
|
|
100
|
-
//# sourceMappingURL=feedback-components.
|
|
97
|
+
//# sourceMappingURL=feedback-components.e702eece.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AA5BA,4CAA6B,CAAC,eAAe,CAAC;AAC9C,4CAAqC,CAAC,uBAAuB,CAAC;AAC9D,4CAA8B,CAAC,gBAAgB,CAAC;AAChD,4CAA8B,CAAC,gBAAgB,CAAC;AAChD,4CAAoC,CAAC,sBAAsB,CAAC;AAC5D,4CAAkC,CAAC,oBAAoB,CAAC;AACxD,4CAAgC,CAAC,kBAAkB,CAAC;AACpD,2CAAiC,CAAC,mBAAmB,CAAC;AACtD,4CAAuC,CAAC,yBAAyB,CAAC;AAClE,4CAAuC,CAAC,yBAAyB,CAAC;AAClE,4CAAkC,CAAC,oBAAoB,CAAC;AACxD,2CAA0C,CAAC,4BAA4B,CAAC;AACxE,4CAA+B,CAAC,iBAAiB,CAAC;AAClD,4CAA8B,CAAC,gBAAgB,CAAC;AAChD,4CAA0B,CAAC,YAAY,CAAC;AACxC,4CAAoC,CAAC,sBAAsB,CAAC;AAC5D,4CAA+B,CAAC,iBAAiB,CAAC;AAClD,4CAAgC,CAAC,kBAAkB,CAAC;AACpD,4CAA+B,CAAC,iBAAiB,CAAC;AAClD,4CAA+B,CAAC,iBAAiB,CAAC;AAClD,4CAAsC,CAAC,wBAAwB,CAAC;AAChE,4CAAiC,CAAC,mBAAmB,CAAC;AACtD,4CAA6B,CAAC,eAAe,CAAC;AAC9C,4CAAmC,CAAC,qBAAqB,CAAC;AAC1D,2CAAgC,CAAC,kBAAkB,CAAC;AACpD,4CAA0B,CAAC,YAAY,CAAC;AACxC,4CAAmC,CAAC,qBAAqB,CAAC;AAC1D,4CAA8B,CAAC,gBAAgB,CAAC;AAChD,2CAA6B,CAAC,eAAe,CAAC","sources":["packages/feedback-components/src/feedback/feedback.module.sass"],"sourcesContent":[":root\n --text-line-height: 3em\n --main-extra-width: 200px\n\n.page-wrapper\n display: flex\n flex-direction: row\n position: relative\n gap: 2em\n align-items: flex-start // makes control-content lose stick\n\n.feedback-container\n flex: 4\n\n.control-panel\n flex: 1\n height: auto\n\n.control-content\n position: sticky\n top: 0\n\n.feedback-component\n position: relative\n width: 800px\n\n & > svg\n width: 800px\n\ncircle\n border: 1px solid black\n\n.selected\n border: 1px solid white\n \n.feedback-text\n margin-bottom: 2em\n\n.entity-panel\n position: relative\n max-height: 600px\n width: calc(100% - 2em)\n flex: 1\n min-height: 100px\n padding: 1em\n background: var(--panel-secondary-background-color)\n border-radius: 4px\n // Inset box shadow\n box-shadow: 0 0 0 1px var(--panel-border-color) inset\n\n.selection-tree\n margin: -1em 0\n padding: 1em 0\n \n.type-list\n display: grid\n grid-auto-flow: column\n grid-template-rows: repeat(10, auto)\n gap: 0.2em\n\n .type-tag\n padding: .2em .5em\n border-radius: .2em\n\n.description\n max-width: 300px\n padding: .5em\n\nmark\n border-radius: .2em\n cursor: pointer\n color: black !important\n\n[role=\"treeitem\"]\n width: auto !important\n\n.highlight\n padding: .2em 0\n border-radius: .2em\n position: relative\n zIndex: 10\n\n.clickable\n cursor: pointer\n\n.feedback-text-wrapper \n position: relative\n z-index: 0\n overflow: visible\n line-height: var(--text-line-height)\n\n.type-container\n display: flex\n justify-content: space-between\n align-items: center\n column-gap: 1em\n\n.add-type\n cursor: pointer\n display: flex\n justify-content: space-between\n padding: 0 .5em\n align-items: center\n\n p\n margin: 0\n\n.overlay-container\n height: 80vh\n width: 100vw\n display: flex\n justify-content: center\n align-items: center\n\n .add-type-overlay\n background-color: var(--tertiary-background)\n padding: .5em 1em\n display: flex\n flex-direction: column\n gap: 1em\n border-radius: .2em\n\n .title\n display: flex\n justify-content: space-between\n align-items: center\n\n h2\n margin: 0\n\n .form-group\n display: flex\n gap: 3em\n\n .text-inputs\n display: flex\n flex-direction: column\n gap: 1em\n\n.icons\n display: flex\n gap: .25em\n\n.node-label\n fill: var(--text-emphasized-color)\n fontSize: 10px\n pointerEvents: none\n\n.match-item\n color: var(--text-emphasized-color)\n padding: .1em .2em\n border-radius: .2em\n margin-bottom: 4px\n cursor: pointer\n \n .match-label\n margin: 0\n color: var(--text-color)\n\n.match-container\n display: flex\n justify-content: space-between\n align-items: center\n\n .close-btn\n cursor: pointer\n\n.match-link\n padding: .5em"],"names":[],"version":3,"file":"feedback-components.e702eece.js.map"}
|
|
@@ -8,14 +8,18 @@ var $b79bf29960412ca7$export$53ec42062883b2d4 = /*#__PURE__*/ function(ViewMode)
|
|
|
8
8
|
ViewMode["Graph"] = "graph";
|
|
9
9
|
return ViewMode;
|
|
10
10
|
}({});
|
|
11
|
-
function $b79bf29960412ca7$export$911bb4b9c8065d3d(initialTree, entityTypes, viewOnly, matchMode) {
|
|
11
|
+
function $b79bf29960412ca7$export$911bb4b9c8065d3d(initialTree, entityTypes, viewOnly, matchMode, autoSelect = []) {
|
|
12
12
|
// Get the first entity type
|
|
13
13
|
// issue: grabs second entity instead of selected one
|
|
14
14
|
const type = entityTypes.values().next().value;
|
|
15
|
+
let selectedNodes = [];
|
|
16
|
+
autoSelect = autoSelect.map((name)=>name.toLowerCase());
|
|
17
|
+
if (autoSelect.length > 0) // If autoSelect is provided, find the nodes with the matching names
|
|
18
|
+
selectedNodes = initialTree.flatMap((node)=>node.children ?? []).filter((node)=>autoSelect.includes(node.name.toLowerCase())).map((node)=>node.id);
|
|
15
19
|
return (0, $abOVY$useReducer)($b79bf29960412ca7$var$treeReducer, {
|
|
16
20
|
initialTree: initialTree,
|
|
17
21
|
tree: initialTree,
|
|
18
|
-
selectedNodes:
|
|
22
|
+
selectedNodes: selectedNodes,
|
|
19
23
|
entityTypesMap: entityTypes,
|
|
20
24
|
selectedEntityType: type,
|
|
21
25
|
lastInternalId: 0,
|
|
@@ -38,7 +42,8 @@ function $b79bf29960412ca7$var$treeReducer(state, action) {
|
|
|
38
42
|
};
|
|
39
43
|
if (action.type === "toggle-view-only") return {
|
|
40
44
|
...state,
|
|
41
|
-
viewOnly: !state.viewOnly
|
|
45
|
+
viewOnly: !state.viewOnly,
|
|
46
|
+
selectedNodes: []
|
|
42
47
|
};
|
|
43
48
|
if (state.viewOnly) return $b79bf29960412ca7$var$viewMode(state, action);
|
|
44
49
|
if (state.matchMode) return $b79bf29960412ca7$var$matchMode(state, action);
|
|
@@ -445,4 +450,4 @@ function $b79bf29960412ca7$var$viewMode(state, action) {
|
|
|
445
450
|
|
|
446
451
|
|
|
447
452
|
export {$b79bf29960412ca7$export$53ec42062883b2d4 as ViewMode, $b79bf29960412ca7$export$911bb4b9c8065d3d as useUpdatableTree, $b79bf29960412ca7$export$e5ce04c5b3f58533 as TreeDispatchContext, $b79bf29960412ca7$export$e1068f2d1c68f87e as useTreeDispatch, $b79bf29960412ca7$export$e64eb58334357825 as findNodeById, $b79bf29960412ca7$export$8d9dbb7a64bf2a5e as treeToGraph};
|
|
448
|
-
//# sourceMappingURL=feedback-components.
|
|
453
|
+
//# sourceMappingURL=feedback-components.fa847634.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":"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","sources":["packages/feedback-components/src/feedback/edit-state.ts"],"sourcesContent":["import { TreeData } from \"./types\";\nimport { createContext, Dispatch, useContext, useReducer } from \"react\";\nimport update, { Spec } from \"immutability-helper\";\nimport { EntityType } from \"../extractions/types\";\n\nexport enum ViewMode {\n Tree = \"tree\",\n Graph = \"graph\",\n}\n\ninterface TreeState {\n initialTree: TreeData[];\n tree: TreeData[];\n selectedNodes: number[];\n entityTypesMap: Map<number, EntityType>;\n selectedEntityType: EntityType;\n lastInternalId: number;\n isSelectingEntityType: boolean;\n viewMode: ViewMode;\n viewOnly: boolean;\n matchMode: boolean;\n}\n\ntype TextRange = {\n start: number;\n end: number;\n text: string;\n};\n\ntype TreeAction =\n | {\n type: \"move-node\";\n payload: { dragIds: number[]; parentId: number; index: number };\n }\n | { type: \"delete-node\"; payload: { ids: number[] } }\n | { type: \"select-node\"; payload: { ids: number[] } }\n | { type: \"toggle-node-selected\"; payload: { ids: number[] } }\n | { type: \"set-view-mode\"; payload: ViewMode }\n | { type: \"create-node\"; payload: TextRange }\n | { type: \"select-entity-type\"; payload: EntityType }\n | { type: \"toggle-entity-type-selector\"; payload?: boolean | null }\n | { type: \"deselect\" }\n | { type: \"reset\" }\n | { type: \"delete-entity-type\"; payload: { id: number } }\n | {\n type: \"add-entity-type\";\n payload: { name: string; description: string; color: string };\n }\n | {\n type: \"update-entity-type\";\n payload: { id: number; name: string; description: string; color: string };\n }\n | { type: \"select-range\"; payload: { ids: number[] } }\n | { type: \"add-match\"; payload: { id: number; payload: any } }\n | { type: \"remove-match\"; payload: { id: number } }\n | { type: \"toggle-match-mode\" }\n | { type: \"toggle-view-only\" };\n\nexport type TreeDispatch = Dispatch<TreeAction>;\n\nexport function useUpdatableTree(\n initialTree: TreeData[],\n entityTypes: Map<number, EntityType>,\n viewOnly: boolean,\n matchMode: boolean,\n autoSelect: string[] = [],\n): [TreeState, TreeDispatch] {\n // Get the first entity type\n // issue: grabs second entity instead of selected one\n const type = entityTypes.values().next().value;\n\n let selectedNodes = [];\n autoSelect = autoSelect.map((name) => name.toLowerCase());\n\n if (autoSelect.length > 0) {\n // If autoSelect is provided, find the nodes with the matching names\n selectedNodes = initialTree\n .flatMap((node) => node.children ?? [])\n .filter((node) => autoSelect.includes(node.name.toLowerCase()))\n .map((node) => node.id);\n }\n\n return useReducer(treeReducer, {\n initialTree,\n tree: initialTree,\n selectedNodes,\n entityTypesMap: entityTypes,\n selectedEntityType: type,\n lastInternalId: 0,\n isSelectingEntityType: false,\n viewMode: ViewMode.Tree,\n viewOnly,\n matchMode,\n });\n}\n\nexport const TreeDispatchContext = createContext<TreeDispatch | null>(null);\n\nexport function useTreeDispatch() {\n const dispatch = useContext(TreeDispatchContext);\n if (dispatch == null) {\n throw new Error(\"No dispatch context available\");\n }\n return dispatch;\n}\n\nfunction treeReducer(state: TreeState, action: TreeAction) {\n if (action.type === \"toggle-match-mode\") {\n return { ...state, matchMode: !state.matchMode };\n }\n\n if (action.type === \"toggle-view-only\") {\n return { ...state, viewOnly: !state.viewOnly, selectedNodes: [] };\n }\n\n if (state.viewOnly) return viewMode(state, action);\n\n if (state.matchMode) return matchMode(state, action);\n\n switch (action.type) {\n case \"add-entity-type\": {\n // Add a new entity type to the map\n const { name, description, color } = action.payload;\n const newId = state.lastInternalId - 1;\n const newType: EntityType = {\n id: newId,\n name,\n description: description === \"\" ? null : description,\n color,\n };\n\n const newEntityTypesMap = new Map(state.entityTypesMap);\n newEntityTypesMap.set(newId, newType);\n\n return {\n ...state,\n entityTypesMap: newEntityTypesMap,\n selectedEntityType: newType,\n lastInternalId: newId,\n };\n }\n case \"update-entity-type\": {\n // Update an existing entity type in the map\n const { id, name, description, color } = action.payload;\n const newEntityTypesMap = new Map(state.entityTypesMap);\n const oldType = newEntityTypesMap.get(id);\n\n if (!oldType) {\n console.warn(`Entity type with id ${id} not found`);\n return state;\n }\n\n const updatedType: EntityType = {\n ...oldType,\n name,\n description: description === \"\" ? null : description,\n color,\n };\n\n newEntityTypesMap.set(id, updatedType);\n\n // Update the tree to reflect the new type\n const newTree = updateTreeTypes(state.tree, oldType, updatedType);\n\n return {\n ...state,\n tree: newTree,\n entityTypesMap: newEntityTypesMap,\n selectedEntityType: updatedType,\n };\n }\n case \"select-range\":\n // Select a range of nodes by their IDs\n const payloadIds = action.payload.ids;\n const node1 = payloadIds[0];\n const node2 = payloadIds[1];\n\n // make list of nodes in order\n const allNodes = flattenAndSort(state.tree);\n\n // select all nodes between node1 and node2\n const startIndex = allNodes.findIndex((node) => node.id === node1);\n const endIndex = allNodes.findIndex((node) => node.id === node2);\n\n const selectedNodes = allNodes.slice(startIndex, endIndex + 1);\n\n console.log(\"Selecting range:\", selectedNodes);\n return {\n ...state,\n selectedNodes: selectedNodes.map((node) => node.id),\n };\n\n case \"move-node\":\n // For each node in the tree, if the node is in the dragIds, remove it from the tree and collect it\n const [newTree, removedNodes] = removeNodes(\n state.tree,\n action.payload.dragIds,\n );\n\n let keyPath: (number | \"children\")[] = [];\n if (action.payload.parentId) {\n keyPath = findNode(newTree, action.payload.parentId);\n keyPath.push(\"children\");\n }\n\n // Add removed nodes to the new tree at the correct location\n let updateSpec = buildNestedSpec(keyPath, {\n $splice: [[action.payload.index, 0, ...removedNodes]],\n });\n\n return { ...state, tree: update(newTree, updateSpec) };\n case \"delete-node\":\n // For each node in the tree, if the node is in the ids, remove it from the tree\n const [newTree2, _removedNodes] = removeNodes(\n state.tree,\n action.payload.ids,\n );\n // Get children of the removed nodes\n // If children are not present elsewhere in the tree, insert them\n\n const children = _removedNodes\n .flatMap((node) => node.children ?? [])\n .filter((child) => !nodeIsInTree(newTree2, child.id));\n\n // Reset the selection\n\n return {\n ...state,\n tree: [...newTree2, ...children],\n selectedNodes: state.selectedNodes.filter(\n (id) => !action.payload.ids.includes(id),\n ),\n };\n case \"select-node\":\n const { ids } = action.payload;\n\n const type =\n action.payload.ids.length > 0\n ? findNodeById(state.tree, ids[0])?.type\n : null;\n\n return { ...state, selectedNodes: ids, selectedEntityType: type };\n // otherwise fall through to toggle-node-selected for a single ID\n case \"toggle-node-selected\":\n const nodesToAdd = action.payload.ids.filter(\n (id) => !state.selectedNodes.includes(id),\n );\n const nodesToKeep = state.selectedNodes.filter(\n (id) => !action.payload.ids.includes(id),\n );\n\n const newType =\n action.payload.ids.length > 0\n ? findNodeById(state.tree, action.payload.ids[0])?.type\n : null;\n\n return {\n ...state,\n selectedNodes: [...nodesToKeep, ...nodesToAdd],\n selectedEntityType: newType,\n };\n\n case \"create-node\":\n const newId = state.lastInternalId - 1;\n const { text, start, end } = action.payload;\n const node: TreeData = {\n id: newId,\n name: text,\n children: [],\n indices: [start, end],\n type: state.selectedEntityType,\n };\n\n return {\n ...state,\n tree: [...state.tree, node],\n selectedNodes: [newId],\n lastInternalId: newId,\n };\n\n case \"delete-entity-type\": {\n // Remove the entity type from the map\n const { id } = action.payload;\n const newEntityTypesMap = new Map(state.entityTypesMap);\n const oldType = newEntityTypesMap.get(id);\n newEntityTypesMap.delete(id);\n\n const defaultType = newEntityTypesMap.values().next().value;\n const newTree = updateTreeTypes(state.tree, oldType, defaultType);\n\n return {\n ...state,\n tree: newTree,\n entityTypesMap: newEntityTypesMap,\n selectedNodes: [],\n };\n }\n\n /** Entity type selection */\n case \"toggle-entity-type-selector\":\n return {\n ...state,\n isSelectingEntityType: action.payload ?? !state.isSelectingEntityType,\n };\n case \"select-entity-type\": {\n // For each selected node, update the type\n let newTree2 = state.tree;\n for (let id of state.selectedNodes) {\n const keyPath = findNode(state.tree, id);\n const nestedSpec = buildNestedSpec(keyPath, {\n type: { $set: action.payload },\n });\n newTree2 = update(newTree2, nestedSpec);\n }\n\n return {\n ...state,\n tree: newTree2,\n selectedEntityType: action.payload,\n };\n }\n case \"deselect\":\n return { ...state, selectedNodes: [] };\n case \"reset\":\n return {\n ...state,\n tree: state.initialTree,\n selectedNodes: [],\n };\n case \"set-view-mode\":\n return { ...state, viewMode: action.payload };\n }\n}\n\nfunction nodeIsInTree(tree: TreeData[], id: number): boolean {\n for (let node of tree) {\n if (node.id == id) {\n return true;\n } else if (node.children) {\n if (nodeIsInTree(node.children, id)) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction buildNestedSpec(\n keyPath: (number | \"children\")[],\n innerSpec: Spec<any>,\n): Spec<TreeData[]> {\n // Build a nested object from a key path\n\n let spec = innerSpec;\n for (let i = keyPath.length - 1; i >= 0; i--) {\n spec = { [keyPath[i]]: spec };\n }\n return spec as any;\n // Since we don't have a \"children\" key at the root, we make the top-level spec an array\n}\n\nfunction findNode(\n tree: TreeData[],\n id: number,\n): (number | \"children\")[] | null {\n // Find the index of the node with the given id in the tree, returning the key path\n for (let i = 0; i < tree.length; i++) {\n if (tree[i].id == id) {\n return [i];\n } else if (tree[i].children) {\n let path = findNode(tree[i].children, id);\n if (path != null) {\n return [i, \"children\", ...path];\n }\n }\n }\n return null;\n}\n\nfunction removeNodes(\n tree: TreeData[],\n ids: number[],\n): [TreeData[], TreeData[]] {\n /** Remove nodes with the given ids from the tree and return the new tree and the removed nodes */\n let newTree: TreeData[] = [];\n let removedNodes: TreeData[] = [];\n\n for (let node of tree) {\n if (ids.includes(node.id)) {\n removedNodes.push(node);\n } else {\n // Recurse into children\n if (node.children) {\n let [newChildren, removedChildren] = removeNodes(node.children, ids);\n node = { ...node, children: newChildren };\n removedNodes.push(...removedChildren);\n }\n newTree.push(node);\n }\n }\n\n return [newTree, removedNodes];\n}\n\nexport interface EntityOutput {\n id: number;\n type: number | null;\n txt_range: number[][];\n name: string;\n match: any | null;\n reasoning: string | null;\n color: string | null;\n children: any[] | null;\n}\n\nexport interface GraphData {\n nodes: EntityOutput[];\n edges: { source: number; dest: number }[];\n}\n\nexport function treeToGraph(tree: TreeData[]): GraphData {\n // Convert the tree to a graph\n let nodes: EntityOutput[] = [];\n let edges: { source: number; dest: number }[] = [];\n const nodeMap = new Map<number, TreeData>();\n\n for (let node of tree) {\n // If we've already found an instance of this node, we don't need to record\n // it again\n if (nodeMap.has(node.id)) {\n continue;\n }\n\n const { indices, id, name, type, children } = node;\n\n const nodeData: EntityOutput = {\n id,\n type: type.id,\n color: type.color,\n name,\n txt_range: [indices],\n reasoning: null,\n match: node.match,\n children,\n };\n\n nodeMap.set(node.id, node);\n nodes.push(nodeData);\n\n if (node.children) {\n for (let child of node.children) {\n edges.push({ source: node.id, dest: child.id });\n }\n\n // Now process the children\n const { nodes: childNodes, edges: childEdges } = treeToGraph(\n node.children,\n );\n nodes.push(...childNodes);\n edges.push(...childEdges);\n }\n }\n\n return { nodes, edges };\n}\n\nexport function findNodeById(tree, id) {\n for (const node of tree) {\n if (node.id === id) {\n return node;\n }\n if (node.children) {\n const found = findNodeById(node.children, id);\n if (found) return found;\n }\n }\n return null;\n}\n\nfunction updateTreeTypes(tree, oldType, defaultType) {\n return tree.map((node) => updateNodeType(node, oldType, defaultType));\n}\n\nfunction updateNodeType(node, oldType, defaultType) {\n const type = node.type.id === oldType.id ? defaultType : node.type;\n\n return {\n ...node,\n type,\n children: node.children\n ? updateTreeTypes(node.children, oldType, defaultType)\n : [],\n };\n}\n\nfunction flattenAndSort(nodes) {\n const result = [];\n\n function traverse(nodeList) {\n for (const node of nodeList) {\n result.push(node);\n if (Array.isArray(node.children) && node.children.length > 0) {\n traverse(node.children);\n }\n }\n }\n\n traverse(nodes);\n\n // sort by start\n return result.sort((a, b) => a.indices[0] - b.indices[0]);\n}\n\nfunction matchMode(state, action) {\n if (action.type === \"select-node\" || action.type === \"toggle-node-selected\") {\n const { ids } = action.payload;\n\n if (ids.length != 1) return state;\n\n if (state.selectedNodes.length === 1) {\n if (ids[0] === state.selectedNodes[0]) {\n // If the selected node is the same as the current selection, deselect it\n return { ...state, selectedNodes: [] };\n }\n }\n\n const type =\n action.payload.ids.length > 0\n ? findNodeById(state.tree, ids[0])?.type\n : null;\n\n return { ...state, selectedNodes: ids, selectedEntityType: type };\n }\n\n if (action.type === \"add-match\") {\n const { id } = action.payload;\n\n // Find the node path\n const keyPath = findNode(state.tree, id);\n if (!keyPath) {\n console.warn(`Node with id ${id} not found`);\n return state;\n }\n\n // Build update spec to set the `match` property\n const matchUpdateSpec = buildNestedSpec(keyPath, {\n match: { $set: action.payload.payload },\n });\n\n const updatedTree = update(state.tree, matchUpdateSpec);\n\n return {\n ...state,\n tree: updatedTree,\n };\n }\n\n if (action.type === \"remove-match\") {\n const { id } = action.payload;\n\n console.log(\"Removing match for node with id:\", id);\n\n // Find the node path\n const keyPath = findNode(state.tree, id);\n if (!keyPath) {\n console.warn(`Node with id ${id} not found`);\n return state;\n }\n\n // Build update spec to unset the `match` property\n const matchUpdateSpec = buildNestedSpec(keyPath, {\n match: { $set: null },\n });\n\n const updatedTree = update(state.tree, matchUpdateSpec);\n\n return {\n ...state,\n tree: updatedTree,\n };\n }\n\n return state;\n}\n\nfunction viewMode(state, action) {\n if (action.type === \"set-view-mode\") {\n return { ...state, viewMode: action.payload };\n }\n\n return state;\n}\n"],"names":[],"version":3,"file":"feedback-components.fa847634.js.map"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -80,7 +80,7 @@ export interface GraphData {
|
|
|
80
80
|
}[];
|
|
81
81
|
}
|
|
82
82
|
export function treeToGraph(tree: TreeData[]): GraphData;
|
|
83
|
-
export function FeedbackComponent({ entities, text, model, entityTypes, matchComponent, onSave, allowOverlap, matchLinks, view, }: {
|
|
83
|
+
export function FeedbackComponent({ entities, text, model, entityTypes, matchComponent, onSave, allowOverlap, matchLinks, view, autoSelect, }: {
|
|
84
84
|
entities?: any[];
|
|
85
85
|
text: any;
|
|
86
86
|
model: any;
|
|
@@ -90,6 +90,7 @@ export function FeedbackComponent({ entities, text, model, entityTypes, matchCom
|
|
|
90
90
|
allowOverlap: any;
|
|
91
91
|
matchLinks: any;
|
|
92
92
|
view?: boolean;
|
|
93
|
+
autoSelect?: any[];
|
|
93
94
|
}): DOMElement<DOMAttributes<Element>, Element>;
|
|
94
95
|
|
|
95
96
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -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/fossil-collections/collections.tsx","packages/feedback-components/map-interface/src/map-panel/components/info-drawer/fossil-collections/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/matches.ts","packages/feedback-components/src/stories/test-data.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/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,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/fossil-collections/collections.tsx","packages/feedback-components/map-interface/src/map-panel/components/info-drawer/fossil-collections/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/matches.ts","packages/feedback-components/src/stories/test-data.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/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,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.
|
|
2
|
+
import {FeedbackComponent as $71d20dff35996763$export$a90600c9da52b40c, treeToGraph as $b79bf29960412ca7$export$8d9dbb7a64bf2a5e} from "./feedback-components.49750f16.js";
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"./feedback-components.
|
|
2
|
-
//# sourceMappingURL=feedback-components.
|
|
1
|
+
import"./feedback-components.dc76072c.js";import"./feedback-components.c84ff10e.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 l,useEffect as s}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,viewOnly:k}=e,[x,w]=l(null),[v,S]=l(null),[_,E]=l(!1);return(s(()=>{let{nodes:e,edges:l}=(0,u.treeToGraph)(p),s=new Map(e.map(e=>[e.id,e])),c=l.map(e=>({source:s.get(e.source),target:s.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",()=>{w(e),S(c)});return()=>{n.stop()}},[p,h,g]),null==x||null==v)?b(c):(console.log("Graph",x,v,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:_,onChange:e=>E(e.target.checked)}),b("svg",{width:h,height:g},[b("g.links",v.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",x.map(e=>{var r,t,o;let a=m.includes(e.id),i=(r=e.id,t=m,o=x,0===t.length||t.includes(r)||o.some(e=>t.includes(e.id)&&e.children.some(e=>e.id===r))),l=(0,y.getTagStyle)(e.color,{highlighted:i,active:a});return b("g",[b("circle",{cx:e.x,cy:e.y,r:8,fill:l.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":k?"":" clickable",stroke:a?"white":"black",strokeWidth:2}),b.if(_)("text",{x:e.x+10,y:e.y+4,className:"node-label"},e.name||`Node ${e.id}`),b.if(!_)("title",e.name||`Node ${e.id}`)])}))])])))}export{k as GraphView};
|
|
2
|
+
//# sourceMappingURL=feedback-components.43ebd847.js.map
|
package/dist/node/{feedback-components.79d7b18c.js.map → feedback-components.43ebd847.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"A,M,oD,A,O,oD,A,O,oD,A,Q,M,mB,A,Q,mB,C,C,a,C,C,iB,C,C,e,C,C,gB,C,K,U,A,Q,Y,C,C,a,C,K,O,A,Q,W,C,C,U,C,K,mB,A,Q,iB,C,K,2B,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,SCkBA,IAAM,EAAI,AAAA,EAAM,MAAM,C,AAAC,G,AAAA,E,U,C,AAAA,E,O,CAAA,GAEhB,SAAS,EAAU,CAOzB,EAGC,GAAM,CAAA,KAAE,CAAI,CAAA,MAAE,CAAK,CAAA,OAAE,CAAM,CAAA,SAAE,CAAQ,CAAA,cAAE,CAAa,CAAA,SAAE,CAAQ,CAAE,CAAG,EAE7D,CAAC,EAAO,EAAS,CAAG,AAAA,EAAgC,MACpD,CAAC,EAAO,EAAS,CAAG,AAAA,EAAgC,MACpD,CAAC,EAAY,EAAc,CAAG,AAAA,EAAS,CAAA,SAsC7C,CApCA,AAAA,EAAU,KACR,GAAM,CAAA,MAAE,CAAK,CAAA,MAAE,CAAK,CAAE,CAAG,AAAA,CAAA,EAAA,EAAA,WAAU,AAAV,EAAY,GAE/B,EAAW,IAAI,IACnB,EAAM,GAAG,CAAC,AAAC,GAAM,CAAC,EAAE,EAAE,CAAE,EAAE,GAGtB,EAAQ,EAAM,GAAG,CAAC,AAAC,GAChB,CAAA,CACL,OAAQ,EAAS,GAAG,CAAC,EAAE,MAAM,EAC7B,OAAQ,EAAS,GAAG,CAAC,EAAE,IAAI,EAC3B,SAAU,CACZ,CAAA,GAGI,EAAa,AAAA,EAAgB,GAChC,KAAK,CAAC,OAAQ,AAAA,EAAU,IACxB,KAAK,CAAC,SAAU,AAAA,IAAgB,QAAQ,CAAC,MACzC,KAAK,CAAC,SAAU,AAAA,EAAY,EAAQ,EAAG,EAAS,IAChD,KAAK,CAAC,UAAW,AAAA,IAAe,MAAM,CAAC,KACvC,EAAE,CAAC,OAAQ,KAGV,QAAQ,GAAG,CAAC,kBACd,GACC,EAAE,CAAC,MAAO,KAET,EAAS,GACT,EAAS,EACX,GAEF,MAAO,KACL,EAAW,IAAI,EACjB,CACF,EAAG,CAAC,EAAM,EAAO,EAAO,EAEpB,AAAS,MAAT,GAAiB,AAAS,MAAT,GACZ,EAAE,IAGX,QAAQ,GAAG,CAAC,QAAS,EAAO,EAAO,GAE5B,EACL,EACA,CACE,YAAa,mDACf,EACA,EAAE,iBAAkB,CAAE,MAAO,CAAE,MAAA,EAAO,OAAA,CAAO,CAAE,EAAG,CAChD,EAAE,EAAQ,CACR,UAAW,qBACX,MAAO,cACP,QAAS,EACT,SAAU,AAAC,GAAM,EAAc,EAAE,MAAM,CAAC,OAAO,CACjD,GACA,EAAE,MAAO,CAAE,MAAA,EAAO,OAAA,CAAO,EAAG,CAC1B,EACE,UACA,EAAM,GAAG,CAAC,AAAC,GACF,EAAE,OAAQ,CACf,GAAI,EAAE,MAAM,CAAC,CAAC,CACd,GAAI,EAAE,MAAM,CAAC,CAAC,CACd,GAAI,EAAE,MAAM,CAAC,CAAC,CACd,GAAI,EAAE,MAAM,CAAC,CAAC,CACd,OAAQ,OACV,KAGJ,EACE,UACA,EAAM,GAAG,CAAC,AAAC,QAwDE,EAAY,EAAyB,EAvDhD,IAAM,EAAS,EAAc,QAAQ,CAAC,EAAE,EAAE,EAEpC,GAqDK,EArDuB,EAAE,EAAE,CAqDf,EArDiB,EAqDQ,EArDO,EAsDjE,AAA6B,IAAzB,EAAc,MAAM,EAEtB,EAAc,QAAQ,CAAC,IACvB,EAAM,IAAI,CACR,AAAC,GACC,EAAc,QAAQ,CAAC,EAAK,EAAE,GAC9B,EAAK,QAAQ,CAAC,IAAI,CAAC,AAAC,GAAU,EAAM,EAAE,GAAK,KA3DjC,EAAQ,AAAA,CAAA,EAAA,EAAA,WAAU,AAAV,EAAY,EAAE,KAAK,CAAE,CAAE,YAAA,EAAa,OAAA,CAAO,GAEzD,OAAO,EAAE,IAAK,CACZ,EAAE,SAAU,CACV,GAAI,EAAE,CAAC,CACP,GAAI,EAAE,CAAC,CACP,EAAG,EACH,KAAM,EAAM,eAAe,EAAI,OAC/B,QAAS,AAAC,IACR,EAAE,eAAe,GAEf,EAAE,OAAO,EACT,EAAE,OAAO,EACR,CAAa,CAAC,EAAE,GAAK,EAAE,EAAE,EAAI,AAAyB,IAAzB,EAAc,MAAM,EAGlD,EAAE,eAAe,GACjB,EAAS,CACP,KAAM,uBACN,QAAS,CAAE,IAAK,CAAC,EAAE,EAAE,CAAC,AAAC,CACzB,IAEA,EAAS,CACP,KAAM,cACN,QAAS,CAAE,IAAK,CAAC,EAAE,EAAE,CAAC,AAAC,CACzB,EAEJ,EACA,UAAW,EACP,WACM,EAAW,GAAK,aAC1B,OAjCW,EAAS,QAAU,QAkC9B,YAAa,CACf,GACA,EAAE,EAAE,CAAC,GACH,OACA,CACE,EAAG,EAAE,CAAC,CAAG,GACT,EAAG,EAAE,CAAC,CAAG,EACT,UAAW,YACb,EACA,EAAE,IAAI,EAAI,CAAC,KAAK,EAAE,EAAE,EAAE,CAAA,CAAE,EAE1B,EAAE,EAAE,CAAC,CAAC,GAAY,QAAS,EAAE,IAAI,EAAI,CAAC,KAAK,EAAE,EAAE,EAAE,CAAA,CAAE,EACpD,CACH,IAEH,EACF,GAEL,Q,K,S","sources":["<anon>","packages/feedback-components/src/feedback/graph.ts"],"sourcesContent":["import \"./feedback-components.8caef76e.js\";\nimport \"./feedback-components.e1fe112f.js\";\nimport \"./feedback-components.b22d37d1.js\";\nimport $9bqpz$macrostrathyper from \"@macrostrat/hyper\";\nimport {forceSimulation as $9bqpz$forceSimulation, forceLink as $9bqpz$forceLink, forceManyBody as $9bqpz$forceManyBody, forceCenter as $9bqpz$forceCenter, forceCollide as $9bqpz$forceCollide} from \"d3-force\";\nimport {useState as $9bqpz$useState, useEffect as $9bqpz$useEffect} from \"react\";\nimport {Spinner as $9bqpz$Spinner, Switch as $9bqpz$Switch} from \"@blueprintjs/core\";\nimport {ErrorBoundary as $9bqpz$ErrorBoundary} from \"@macrostrat/ui-components\";\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequirea149\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequirea149\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\n\nvar $eedTh = parcelRequire(\"eedTh\");\n\nvar $9wFEx = parcelRequire(\"9wFEx\");\n\n\n\n\n\n\nvar $edvRb = parcelRequire(\"edvRb\");\nconst $8732cb0ae0ae3dfd$var$h = (0, $9bqpz$macrostrathyper).styled((0, (/*@__PURE__*/$parcel$interopDefault($9wFEx))));\nfunction $8732cb0ae0ae3dfd$export$6a7fe3ef90e8d566(props) {\n // A graph view with react-flow\n // Get positions of nodes using force simulation\n const { tree: tree, width: width, height: height, dispatch: dispatch, selectedNodes: selectedNodes, viewOnly: viewOnly } = props;\n const [nodes, setNodes] = (0, $9bqpz$useState)(null);\n const [links, setLinks] = (0, $9bqpz$useState)(null);\n const [showLabels, setShowLabels] = (0, $9bqpz$useState)(false);\n (0, $9bqpz$useEffect)(()=>{\n const { nodes: nodes, edges: edges } = (0, $eedTh.treeToGraph)(tree);\n const nodesMap = new Map(nodes.map((d)=>[\n d.id,\n d\n ]));\n const links = edges.map((d)=>{\n return {\n source: nodesMap.get(d.source),\n target: nodesMap.get(d.dest),\n strength: 1\n };\n });\n const simulation = (0, $9bqpz$forceSimulation)(nodes).force(\"link\", (0, $9bqpz$forceLink)(links)).force(\"charge\", (0, $9bqpz$forceManyBody)().strength(-50)).force(\"center\", (0, $9bqpz$forceCenter)(width / 2, height / 2)).force(\"collide\", (0, $9bqpz$forceCollide)().radius(20)).on(\"tick\", ()=>{\n // Update the positions of the nodes\n // setNodes(nodes);\n console.log(\"Simulation tick\");\n }).on(\"end\", ()=>{\n // Update the positions of the nodes\n setNodes(nodes);\n setLinks(links);\n });\n return ()=>{\n simulation.stop();\n };\n }, [\n tree,\n width,\n height\n ]);\n if (nodes == null || links == null) return $8732cb0ae0ae3dfd$var$h((0, $9bqpz$Spinner));\n console.log(\"Graph\", nodes, links, selectedNodes);\n return $8732cb0ae0ae3dfd$var$h((0, $9bqpz$ErrorBoundary), {\n description: \"An error occurred while rendering the graph view.\"\n }, $8732cb0ae0ae3dfd$var$h(\"div.graph-view\", {\n style: {\n width: width,\n height: height\n }\n }, [\n $8732cb0ae0ae3dfd$var$h((0, $9bqpz$Switch), {\n className: \"show-labels-switch\",\n label: \"Show Labels\",\n checked: showLabels,\n onChange: (e)=>setShowLabels(e.target.checked)\n }),\n $8732cb0ae0ae3dfd$var$h(\"svg\", {\n width: width,\n height: height\n }, [\n $8732cb0ae0ae3dfd$var$h(\"g.links\", links.map((d)=>{\n return $8732cb0ae0ae3dfd$var$h(\"line\", {\n x1: d.source.x,\n y1: d.source.y,\n x2: d.target.x,\n y2: d.target.y,\n stroke: \"black\"\n });\n })),\n $8732cb0ae0ae3dfd$var$h(\"g.nodes\", nodes.map((d)=>{\n const active = selectedNodes.includes(d.id);\n const stroke = active ? \"white\" : \"black\";\n const highlighted = $8732cb0ae0ae3dfd$var$isHighlighted(d.id, selectedNodes, nodes);\n const style = (0, $edvRb.getTagStyle)(d.color, {\n highlighted: highlighted,\n active: active\n });\n return $8732cb0ae0ae3dfd$var$h(\"g\", [\n $8732cb0ae0ae3dfd$var$h(\"circle\", {\n cx: d.x,\n cy: d.y,\n r: 8,\n fill: style.backgroundColor || \"blue\",\n onClick: (e)=>{\n e.stopPropagation();\n if (e.ctrlKey || e.metaKey || selectedNodes[0] === d.id && selectedNodes.length === 1) {\n // Toggle selection on ctrl/cmd click or when node is only selected node\n e.stopPropagation();\n dispatch({\n type: \"toggle-node-selected\",\n payload: {\n ids: [\n d.id\n ]\n }\n });\n } else dispatch({\n type: \"select-node\",\n payload: {\n ids: [\n d.id\n ]\n }\n });\n },\n className: active ? \"selected\" : \"\" + (viewOnly ? \"\" : \" clickable\"),\n stroke: stroke,\n strokeWidth: 2\n }),\n $8732cb0ae0ae3dfd$var$h.if(showLabels)(\"text\", {\n x: d.x + 10,\n y: d.y + 4,\n className: \"node-label\"\n }, d.name || `Node ${d.id}`),\n $8732cb0ae0ae3dfd$var$h.if(!showLabels)(\"title\", d.name || `Node ${d.id}`)\n ]);\n }))\n ])\n ]));\n}\nfunction $8732cb0ae0ae3dfd$var$isHighlighted(id, selectedNodes, nodes) {\n if (selectedNodes.length === 0) return true;\n return selectedNodes.includes(id) || nodes.some((node)=>selectedNodes.includes(node.id) && node.children.some((child)=>child.id === id));\n}\n\n\nexport {$8732cb0ae0ae3dfd$export$6a7fe3ef90e8d566 as GraphView};\n//# sourceMappingURL=feedback-components.79d7b18c.js.map\n","import { TreeData } from \"./types\";\nimport { treeToGraph } from \"./edit-state\";\nimport styles from \"./feedback.module.sass\";\nimport hyper from \"@macrostrat/hyper\";\nimport {\n forceSimulation,\n SimulationNodeDatum,\n SimulationLinkDatum,\n forceCenter,\n forceLink,\n forceManyBody,\n forceCollide,\n} from \"d3-force\";\nimport { useEffect, useState } from \"react\";\nimport { Spinner, Switch } from \"@blueprintjs/core\";\nimport { ErrorBoundary } from \"@macrostrat/ui-components\";\nimport { getTagStyle } from \"../extractions\";\n\nconst h = hyper.styled(styles);\n\nexport function GraphView(props: {\n tree: TreeData[];\n width: number;\n height: number;\n dispatch: (action: any) => void;\n selectedNodes: number[];\n viewOnly?: boolean;\n}) {\n // A graph view with react-flow\n // Get positions of nodes using force simulation\n const { tree, width, height, dispatch, selectedNodes, viewOnly } = props;\n\n const [nodes, setNodes] = useState<SimulationNodeDatum[]>(null);\n const [links, setLinks] = useState<SimulationLinkDatum[]>(null);\n const [showLabels, setShowLabels] = useState(false);\n\n useEffect(() => {\n const { nodes, edges } = treeToGraph(tree);\n\n const nodesMap = new Map<number, SimulationNodeDatum>(\n nodes.map((d) => [d.id, d]),\n );\n\n const links = edges.map((d) => {\n return {\n source: nodesMap.get(d.source),\n target: nodesMap.get(d.dest),\n strength: 1,\n };\n });\n\n const simulation = forceSimulation(nodes)\n .force(\"link\", forceLink(links))\n .force(\"charge\", forceManyBody().strength(-50))\n .force(\"center\", forceCenter(width / 2, height / 2))\n .force(\"collide\", forceCollide().radius(20))\n .on(\"tick\", () => {\n // Update the positions of the nodes\n // setNodes(nodes);\n console.log(\"Simulation tick\");\n })\n .on(\"end\", () => {\n // Update the positions of the nodes\n setNodes(nodes);\n setLinks(links);\n });\n\n return () => {\n simulation.stop();\n };\n }, [tree, width, height]);\n\n if (nodes == null || links == null) {\n return h(Spinner);\n }\n\n console.log(\"Graph\", nodes, links, selectedNodes);\n\n return h(\n ErrorBoundary,\n {\n description: \"An error occurred while rendering the graph view.\",\n },\n h(\"div.graph-view\", { style: { width, height } }, [\n h(Switch, {\n className: \"show-labels-switch\",\n label: \"Show Labels\",\n checked: showLabels,\n onChange: (e) => setShowLabels(e.target.checked),\n }),\n h(\"svg\", { width, height }, [\n h(\n \"g.links\",\n links.map((d) => {\n return h(\"line\", {\n x1: d.source.x,\n y1: d.source.y,\n x2: d.target.x,\n y2: d.target.y,\n stroke: \"black\",\n });\n }),\n ),\n h(\n \"g.nodes\",\n nodes.map((d) => {\n const active = selectedNodes.includes(d.id);\n const stroke = active ? \"white\" : \"black\";\n const highlighted = isHighlighted(d.id, selectedNodes, nodes);\n const style = getTagStyle(d.color, { highlighted, active });\n\n return h(\"g\", [\n h(\"circle\", {\n cx: d.x,\n cy: d.y,\n r: 8,\n fill: style.backgroundColor || \"blue\",\n onClick: (e) => {\n e.stopPropagation();\n if (\n e.ctrlKey ||\n e.metaKey ||\n (selectedNodes[0] === d.id && selectedNodes.length === 1)\n ) {\n // Toggle selection on ctrl/cmd click or when node is only selected node\n e.stopPropagation();\n dispatch({\n type: \"toggle-node-selected\",\n payload: { ids: [d.id] },\n });\n } else {\n dispatch({\n type: \"select-node\",\n payload: { ids: [d.id] },\n });\n }\n },\n className: active\n ? \"selected\"\n : \"\" + (viewOnly ? \"\" : \" clickable\"),\n stroke,\n strokeWidth: 2,\n }),\n h.if(showLabels)(\n \"text\",\n {\n x: d.x + 10,\n y: d.y + 4,\n className: \"node-label\",\n },\n d.name || `Node ${d.id}`,\n ),\n h.if(!showLabels)(\"title\", d.name || `Node ${d.id}`),\n ]);\n }),\n ),\n ]),\n ]),\n );\n}\n\nfunction isHighlighted(id: number, selectedNodes: number[], nodes: TreeData[]) {\n if (selectedNodes.length === 0) return true;\n return (\n selectedNodes.includes(id) ||\n nodes.some(\n (node) =>\n selectedNodes.includes(node.id) &&\n node.children.some((child) => child.id === id),\n )\n );\n}\n"],"names":["$9bqpz$macrostrathyper","forceSimulation","$9bqpz$forceSimulation","forceLink","$9bqpz$forceLink","forceManyBody","$9bqpz$forceManyBody","forceCenter","$9bqpz$forceCenter","forceCollide","$9bqpz$forceCollide","useState","$9bqpz$useState","useEffect","$9bqpz$useEffect","Spinner","$9bqpz$Spinner","Switch","$9bqpz$Switch","ErrorBoundary","$9bqpz$ErrorBoundary","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$eedTh","$9wFEx","$edvRb","$8732cb0ae0ae3dfd$var$h","styled","a","__esModule","default","$8732cb0ae0ae3dfd$export$6a7fe3ef90e8d566","props","tree","width","height","dispatch","selectedNodes","viewOnly","nodes","setNodes","links","setLinks","showLabels","setShowLabels","edges","treeToGraph","nodesMap","Map","map","d","source","get","target","dest","strength","simulation","force","radius","on","console","log","stop","description","style","className","label","checked","onChange","e","x1","x","y1","y","x2","y2","stroke","active","includes","highlighted","length","some","node","children","child","getTagStyle","color","cx","cy","r","fill","backgroundColor","onClick","stopPropagation","ctrlKey","metaKey","type","payload","ids","strokeWidth","if","name","GraphView"],"version":3,"file":"feedback-components.79d7b18c.js.map","sourceRoot":"../../../../"}
|
|
1
|
+
{"mappings":"A,M,oD,A,O,oD,A,O,oD,A,Q,M,mB,A,Q,mB,C,C,a,C,C,iB,C,C,e,C,C,gB,C,K,U,A,Q,Y,C,C,a,C,K,O,A,Q,W,C,C,U,C,K,mB,A,Q,iB,C,K,2B,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,SCkBA,IAAM,EAAI,AAAA,EAAM,MAAM,C,AAAC,G,AAAA,E,U,C,AAAA,E,O,CAAA,GAEhB,SAAS,EAAU,CAOzB,EAGC,GAAM,CAAA,KAAE,CAAI,CAAA,MAAE,CAAK,CAAA,OAAE,CAAM,CAAA,SAAE,CAAQ,CAAA,cAAE,CAAa,CAAA,SAAE,CAAQ,CAAE,CAAG,EAE7D,CAAC,EAAO,EAAS,CAAG,AAAA,EAAgC,MACpD,CAAC,EAAO,EAAS,CAAG,AAAA,EAAgC,MACpD,CAAC,EAAY,EAAc,CAAG,AAAA,EAAS,CAAA,SAsC7C,CApCA,AAAA,EAAU,KACR,GAAM,CAAA,MAAE,CAAK,CAAA,MAAE,CAAK,CAAE,CAAG,AAAA,CAAA,EAAA,EAAA,WAAU,AAAV,EAAY,GAE/B,EAAW,IAAI,IACnB,EAAM,GAAG,CAAC,AAAC,GAAM,CAAC,EAAE,EAAE,CAAE,EAAE,GAGtB,EAAQ,EAAM,GAAG,CAAC,AAAC,GAChB,CAAA,CACL,OAAQ,EAAS,GAAG,CAAC,EAAE,MAAM,EAC7B,OAAQ,EAAS,GAAG,CAAC,EAAE,IAAI,EAC3B,SAAU,CACZ,CAAA,GAGI,EAAa,AAAA,EAAgB,GAChC,KAAK,CAAC,OAAQ,AAAA,EAAU,IACxB,KAAK,CAAC,SAAU,AAAA,IAAgB,QAAQ,CAAC,MACzC,KAAK,CAAC,SAAU,AAAA,EAAY,EAAQ,EAAG,EAAS,IAChD,KAAK,CAAC,UAAW,AAAA,IAAe,MAAM,CAAC,KACvC,EAAE,CAAC,OAAQ,KAGV,QAAQ,GAAG,CAAC,kBACd,GACC,EAAE,CAAC,MAAO,KAET,EAAS,GACT,EAAS,EACX,GAEF,MAAO,KACL,EAAW,IAAI,EACjB,CACF,EAAG,CAAC,EAAM,EAAO,EAAO,EAEpB,AAAS,MAAT,GAAiB,AAAS,MAAT,GACZ,EAAE,IAGX,QAAQ,GAAG,CAAC,QAAS,EAAO,EAAO,GAE5B,EACL,EACA,CACE,YAAa,mDACf,EACA,EAAE,iBAAkB,CAAE,MAAO,CAAE,MAAA,EAAO,OAAA,CAAO,CAAE,EAAG,CAChD,EAAE,EAAQ,CACR,UAAW,qBACX,MAAO,cACP,QAAS,EACT,SAAU,AAAC,GAAM,EAAc,EAAE,MAAM,CAAC,OAAO,CACjD,GACA,EAAE,MAAO,CAAE,MAAA,EAAO,OAAA,CAAO,EAAG,CAC1B,EACE,UACA,EAAM,GAAG,CAAC,AAAC,GACF,EAAE,OAAQ,CACf,GAAI,EAAE,MAAM,CAAC,CAAC,CACd,GAAI,EAAE,MAAM,CAAC,CAAC,CACd,GAAI,EAAE,MAAM,CAAC,CAAC,CACd,GAAI,EAAE,MAAM,CAAC,CAAC,CACd,OAAQ,OACV,KAGJ,EACE,UACA,EAAM,GAAG,CAAC,AAAC,QAwDE,EAAY,EAAyB,EAvDhD,IAAM,EAAS,EAAc,QAAQ,CAAC,EAAE,EAAE,EAEpC,GAqDK,EArDuB,EAAE,EAAE,CAqDf,EArDiB,EAqDQ,EArDO,EAsDjE,AAA6B,IAAzB,EAAc,MAAM,EAEtB,EAAc,QAAQ,CAAC,IACvB,EAAM,IAAI,CACR,AAAC,GACC,EAAc,QAAQ,CAAC,EAAK,EAAE,GAC9B,EAAK,QAAQ,CAAC,IAAI,CAAC,AAAC,GAAU,EAAM,EAAE,GAAK,KA3DjC,EAAQ,AAAA,CAAA,EAAA,EAAA,WAAU,AAAV,EAAY,EAAE,KAAK,CAAE,CAAE,YAAA,EAAa,OAAA,CAAO,GAEzD,OAAO,EAAE,IAAK,CACZ,EAAE,SAAU,CACV,GAAI,EAAE,CAAC,CACP,GAAI,EAAE,CAAC,CACP,EAAG,EACH,KAAM,EAAM,eAAe,EAAI,OAC/B,QAAS,AAAC,IACR,EAAE,eAAe,GAEf,EAAE,OAAO,EACT,EAAE,OAAO,EACR,CAAa,CAAC,EAAE,GAAK,EAAE,EAAE,EAAI,AAAyB,IAAzB,EAAc,MAAM,EAGlD,EAAE,eAAe,GACjB,EAAS,CACP,KAAM,uBACN,QAAS,CAAE,IAAK,CAAC,EAAE,EAAE,CAAC,AAAC,CACzB,IAEA,EAAS,CACP,KAAM,cACN,QAAS,CAAE,IAAK,CAAC,EAAE,EAAE,CAAC,AAAC,CACzB,EAEJ,EACA,UAAW,EACP,WACM,EAAW,GAAK,aAC1B,OAjCW,EAAS,QAAU,QAkC9B,YAAa,CACf,GACA,EAAE,EAAE,CAAC,GACH,OACA,CACE,EAAG,EAAE,CAAC,CAAG,GACT,EAAG,EAAE,CAAC,CAAG,EACT,UAAW,YACb,EACA,EAAE,IAAI,EAAI,CAAC,KAAK,EAAE,EAAE,EAAE,CAAA,CAAE,EAE1B,EAAE,EAAE,CAAC,CAAC,GAAY,QAAS,EAAE,IAAI,EAAI,CAAC,KAAK,EAAE,EAAE,EAAE,CAAA,CAAE,EACpD,CACH,IAEH,EACF,GAEL,Q,K,S","sources":["<anon>","packages/feedback-components/src/feedback/graph.ts"],"sourcesContent":["import \"./feedback-components.dc76072c.js\";\nimport \"./feedback-components.c84ff10e.js\";\nimport \"./feedback-components.b22d37d1.js\";\nimport $9bqpz$macrostrathyper from \"@macrostrat/hyper\";\nimport {forceSimulation as $9bqpz$forceSimulation, forceLink as $9bqpz$forceLink, forceManyBody as $9bqpz$forceManyBody, forceCenter as $9bqpz$forceCenter, forceCollide as $9bqpz$forceCollide} from \"d3-force\";\nimport {useState as $9bqpz$useState, useEffect as $9bqpz$useEffect} from \"react\";\nimport {Spinner as $9bqpz$Spinner, Switch as $9bqpz$Switch} from \"@blueprintjs/core\";\nimport {ErrorBoundary as $9bqpz$ErrorBoundary} from \"@macrostrat/ui-components\";\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequirea149\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequirea149\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\n\nvar $eedTh = parcelRequire(\"eedTh\");\n\nvar $9wFEx = parcelRequire(\"9wFEx\");\n\n\n\n\n\n\nvar $edvRb = parcelRequire(\"edvRb\");\nconst $8732cb0ae0ae3dfd$var$h = (0, $9bqpz$macrostrathyper).styled((0, (/*@__PURE__*/$parcel$interopDefault($9wFEx))));\nfunction $8732cb0ae0ae3dfd$export$6a7fe3ef90e8d566(props) {\n // A graph view with react-flow\n // Get positions of nodes using force simulation\n const { tree: tree, width: width, height: height, dispatch: dispatch, selectedNodes: selectedNodes, viewOnly: viewOnly } = props;\n const [nodes, setNodes] = (0, $9bqpz$useState)(null);\n const [links, setLinks] = (0, $9bqpz$useState)(null);\n const [showLabels, setShowLabels] = (0, $9bqpz$useState)(false);\n (0, $9bqpz$useEffect)(()=>{\n const { nodes: nodes, edges: edges } = (0, $eedTh.treeToGraph)(tree);\n const nodesMap = new Map(nodes.map((d)=>[\n d.id,\n d\n ]));\n const links = edges.map((d)=>{\n return {\n source: nodesMap.get(d.source),\n target: nodesMap.get(d.dest),\n strength: 1\n };\n });\n const simulation = (0, $9bqpz$forceSimulation)(nodes).force(\"link\", (0, $9bqpz$forceLink)(links)).force(\"charge\", (0, $9bqpz$forceManyBody)().strength(-50)).force(\"center\", (0, $9bqpz$forceCenter)(width / 2, height / 2)).force(\"collide\", (0, $9bqpz$forceCollide)().radius(20)).on(\"tick\", ()=>{\n // Update the positions of the nodes\n // setNodes(nodes);\n console.log(\"Simulation tick\");\n }).on(\"end\", ()=>{\n // Update the positions of the nodes\n setNodes(nodes);\n setLinks(links);\n });\n return ()=>{\n simulation.stop();\n };\n }, [\n tree,\n width,\n height\n ]);\n if (nodes == null || links == null) return $8732cb0ae0ae3dfd$var$h((0, $9bqpz$Spinner));\n console.log(\"Graph\", nodes, links, selectedNodes);\n return $8732cb0ae0ae3dfd$var$h((0, $9bqpz$ErrorBoundary), {\n description: \"An error occurred while rendering the graph view.\"\n }, $8732cb0ae0ae3dfd$var$h(\"div.graph-view\", {\n style: {\n width: width,\n height: height\n }\n }, [\n $8732cb0ae0ae3dfd$var$h((0, $9bqpz$Switch), {\n className: \"show-labels-switch\",\n label: \"Show Labels\",\n checked: showLabels,\n onChange: (e)=>setShowLabels(e.target.checked)\n }),\n $8732cb0ae0ae3dfd$var$h(\"svg\", {\n width: width,\n height: height\n }, [\n $8732cb0ae0ae3dfd$var$h(\"g.links\", links.map((d)=>{\n return $8732cb0ae0ae3dfd$var$h(\"line\", {\n x1: d.source.x,\n y1: d.source.y,\n x2: d.target.x,\n y2: d.target.y,\n stroke: \"black\"\n });\n })),\n $8732cb0ae0ae3dfd$var$h(\"g.nodes\", nodes.map((d)=>{\n const active = selectedNodes.includes(d.id);\n const stroke = active ? \"white\" : \"black\";\n const highlighted = $8732cb0ae0ae3dfd$var$isHighlighted(d.id, selectedNodes, nodes);\n const style = (0, $edvRb.getTagStyle)(d.color, {\n highlighted: highlighted,\n active: active\n });\n return $8732cb0ae0ae3dfd$var$h(\"g\", [\n $8732cb0ae0ae3dfd$var$h(\"circle\", {\n cx: d.x,\n cy: d.y,\n r: 8,\n fill: style.backgroundColor || \"blue\",\n onClick: (e)=>{\n e.stopPropagation();\n if (e.ctrlKey || e.metaKey || selectedNodes[0] === d.id && selectedNodes.length === 1) {\n // Toggle selection on ctrl/cmd click or when node is only selected node\n e.stopPropagation();\n dispatch({\n type: \"toggle-node-selected\",\n payload: {\n ids: [\n d.id\n ]\n }\n });\n } else dispatch({\n type: \"select-node\",\n payload: {\n ids: [\n d.id\n ]\n }\n });\n },\n className: active ? \"selected\" : \"\" + (viewOnly ? \"\" : \" clickable\"),\n stroke: stroke,\n strokeWidth: 2\n }),\n $8732cb0ae0ae3dfd$var$h.if(showLabels)(\"text\", {\n x: d.x + 10,\n y: d.y + 4,\n className: \"node-label\"\n }, d.name || `Node ${d.id}`),\n $8732cb0ae0ae3dfd$var$h.if(!showLabels)(\"title\", d.name || `Node ${d.id}`)\n ]);\n }))\n ])\n ]));\n}\nfunction $8732cb0ae0ae3dfd$var$isHighlighted(id, selectedNodes, nodes) {\n if (selectedNodes.length === 0) return true;\n return selectedNodes.includes(id) || nodes.some((node)=>selectedNodes.includes(node.id) && node.children.some((child)=>child.id === id));\n}\n\n\nexport {$8732cb0ae0ae3dfd$export$6a7fe3ef90e8d566 as GraphView};\n//# sourceMappingURL=feedback-components.43ebd847.js.map\n","import { TreeData } from \"./types\";\nimport { treeToGraph } from \"./edit-state\";\nimport styles from \"./feedback.module.sass\";\nimport hyper from \"@macrostrat/hyper\";\nimport {\n forceSimulation,\n SimulationNodeDatum,\n SimulationLinkDatum,\n forceCenter,\n forceLink,\n forceManyBody,\n forceCollide,\n} from \"d3-force\";\nimport { useEffect, useState } from \"react\";\nimport { Spinner, Switch } from \"@blueprintjs/core\";\nimport { ErrorBoundary } from \"@macrostrat/ui-components\";\nimport { getTagStyle } from \"../extractions\";\n\nconst h = hyper.styled(styles);\n\nexport function GraphView(props: {\n tree: TreeData[];\n width: number;\n height: number;\n dispatch: (action: any) => void;\n selectedNodes: number[];\n viewOnly?: boolean;\n}) {\n // A graph view with react-flow\n // Get positions of nodes using force simulation\n const { tree, width, height, dispatch, selectedNodes, viewOnly } = props;\n\n const [nodes, setNodes] = useState<SimulationNodeDatum[]>(null);\n const [links, setLinks] = useState<SimulationLinkDatum[]>(null);\n const [showLabels, setShowLabels] = useState(false);\n\n useEffect(() => {\n const { nodes, edges } = treeToGraph(tree);\n\n const nodesMap = new Map<number, SimulationNodeDatum>(\n nodes.map((d) => [d.id, d]),\n );\n\n const links = edges.map((d) => {\n return {\n source: nodesMap.get(d.source),\n target: nodesMap.get(d.dest),\n strength: 1,\n };\n });\n\n const simulation = forceSimulation(nodes)\n .force(\"link\", forceLink(links))\n .force(\"charge\", forceManyBody().strength(-50))\n .force(\"center\", forceCenter(width / 2, height / 2))\n .force(\"collide\", forceCollide().radius(20))\n .on(\"tick\", () => {\n // Update the positions of the nodes\n // setNodes(nodes);\n console.log(\"Simulation tick\");\n })\n .on(\"end\", () => {\n // Update the positions of the nodes\n setNodes(nodes);\n setLinks(links);\n });\n\n return () => {\n simulation.stop();\n };\n }, [tree, width, height]);\n\n if (nodes == null || links == null) {\n return h(Spinner);\n }\n\n console.log(\"Graph\", nodes, links, selectedNodes);\n\n return h(\n ErrorBoundary,\n {\n description: \"An error occurred while rendering the graph view.\",\n },\n h(\"div.graph-view\", { style: { width, height } }, [\n h(Switch, {\n className: \"show-labels-switch\",\n label: \"Show Labels\",\n checked: showLabels,\n onChange: (e) => setShowLabels(e.target.checked),\n }),\n h(\"svg\", { width, height }, [\n h(\n \"g.links\",\n links.map((d) => {\n return h(\"line\", {\n x1: d.source.x,\n y1: d.source.y,\n x2: d.target.x,\n y2: d.target.y,\n stroke: \"black\",\n });\n }),\n ),\n h(\n \"g.nodes\",\n nodes.map((d) => {\n const active = selectedNodes.includes(d.id);\n const stroke = active ? \"white\" : \"black\";\n const highlighted = isHighlighted(d.id, selectedNodes, nodes);\n const style = getTagStyle(d.color, { highlighted, active });\n\n return h(\"g\", [\n h(\"circle\", {\n cx: d.x,\n cy: d.y,\n r: 8,\n fill: style.backgroundColor || \"blue\",\n onClick: (e) => {\n e.stopPropagation();\n if (\n e.ctrlKey ||\n e.metaKey ||\n (selectedNodes[0] === d.id && selectedNodes.length === 1)\n ) {\n // Toggle selection on ctrl/cmd click or when node is only selected node\n e.stopPropagation();\n dispatch({\n type: \"toggle-node-selected\",\n payload: { ids: [d.id] },\n });\n } else {\n dispatch({\n type: \"select-node\",\n payload: { ids: [d.id] },\n });\n }\n },\n className: active\n ? \"selected\"\n : \"\" + (viewOnly ? \"\" : \" clickable\"),\n stroke,\n strokeWidth: 2,\n }),\n h.if(showLabels)(\n \"text\",\n {\n x: d.x + 10,\n y: d.y + 4,\n className: \"node-label\",\n },\n d.name || `Node ${d.id}`,\n ),\n h.if(!showLabels)(\"title\", d.name || `Node ${d.id}`),\n ]);\n }),\n ),\n ]),\n ]),\n );\n}\n\nfunction isHighlighted(id: number, selectedNodes: number[], nodes: TreeData[]) {\n if (selectedNodes.length === 0) return true;\n return (\n selectedNodes.includes(id) ||\n nodes.some(\n (node) =>\n selectedNodes.includes(node.id) &&\n node.children.some((child) => child.id === id),\n )\n );\n}\n"],"names":["$9bqpz$macrostrathyper","forceSimulation","$9bqpz$forceSimulation","forceLink","$9bqpz$forceLink","forceManyBody","$9bqpz$forceManyBody","forceCenter","$9bqpz$forceCenter","forceCollide","$9bqpz$forceCollide","useState","$9bqpz$useState","useEffect","$9bqpz$useEffect","Spinner","$9bqpz$Spinner","Switch","$9bqpz$Switch","ErrorBoundary","$9bqpz$ErrorBoundary","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$eedTh","$9wFEx","$edvRb","$8732cb0ae0ae3dfd$var$h","styled","a","__esModule","default","$8732cb0ae0ae3dfd$export$6a7fe3ef90e8d566","props","tree","width","height","dispatch","selectedNodes","viewOnly","nodes","setNodes","links","setLinks","showLabels","setShowLabels","edges","treeToGraph","nodesMap","Map","map","d","source","get","target","dest","strength","simulation","force","radius","on","console","log","stop","description","style","className","label","checked","onChange","e","x1","x","y1","y","x2","y2","stroke","active","includes","highlighted","length","some","node","children","child","getTagStyle","color","cx","cy","r","fill","backgroundColor","onClick","stopPropagation","ctrlKey","metaKey","type","payload","ids","strokeWidth","if","name","GraphView"],"version":3,"file":"feedback-components.43ebd847.js.map","sourceRoot":"../../../../"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"./feedback-components.
|
|
2
|
-
//# sourceMappingURL=feedback-components.
|
|
1
|
+
import"./feedback-components.c84ff10e.js";import"./feedback-components.b22d37d1.js";import e from"@macrostrat/hyper";import{useState as t}from"react";import{Icon as o,Overlay2 as i,Popover as l}from"@blueprintjs/core";import{useInDarkMode as d,SaveButton as a}from"@macrostrat/ui-components";import{ColorPicker as r}from"@macrostrat/data-sheet";var n=globalThis,s={},p={},c=n.parcelRequirea149;null==c&&((c=function(e){if(e in s)return s[e].exports;if(e in p){var t=p[e];delete p[e];var o={id:e,exports:{}};return s[e]=o,t.call(o.exports,o,o.exports),o.exports}var i=Error("Cannot find module '"+e+"'");throw i.code="MODULE_NOT_FOUND",i}).register=function(e,t){p[e]=t},n.parcelRequirea149=c),c.register;var y=c("9wFEx"),u=c("edvRb");let v=e.styled(y&&y.__esModule?y.default:y);function m({types:e,selected:o,dispatch:i,selectedNodes:l,tree:a,viewOnly:r}){let[n,s]=t(null),p=l.length>0,c=d()?.9:.4;return v("div.type-list-container",[v("div.type-list-header",p&&!n?"Change selected nodes to:":"Entity Types"),v("div.type-list",Array.from(e.values()).map(e=>v(O,{type:e,luminance:c,selectedType:n,setSelectedType:s,dispatch:i,viewOnly:r,tree:a,selectedNodes:l,selected:o,isSelectedNodes:p}))),v.if(!r)(g,{dispatch:i})])}function f(e,t){let o=[];return e.forEach(function e(i){i.type.id===t&&o.push(i.id),Array.isArray(i.children)&&i.children.forEach(e)}),o}function g({dispatch:e}){let[i,l]=t(!1);return v("div.add-type-container",[v("div.add-type",{onClick:()=>l(!0)},[v("p.add-type-text","Add new type"),v(o,{icon:"plus"})]),v(b,{setOverlayOpen:l,overlayOpen:i,title:"Add New Type",saveHandler:t=>{e({type:"add-entity-type",payload:t}),l(!1)}})])}function h({dispatch:e,type:i}){let[l,d]=t(!1);return v("div.edit-type",[v(o,{icon:"edit",className:"edit-icon",onClick:e=>{e.stopPropagation(),d(!0)}}),v(b,{setOverlayOpen:d,overlayOpen:l,originalType:i,title:"Edit Type",saveHandler:t=>{e({type:"update-entity-type",payload:t}),d(!1)}})])}function b({setOverlayOpen:e,overlayOpen:l,originalType:d,title:n,saveHandler:s}){let{name:p,description:c,color:y,id:u}=d||{},[m,f]=t(p||""),[g,h]=t(c||""),[b,O]=t(y||"#fff");return v(i,{isOpen:l},v("div.overlay-container",v("div.add-type-overlay",[v("h2.title",[n,v(o,{icon:"cross",className:"close-icon",onClick:()=>{e(!1)},style:{cursor:"pointer",color:"red"}})]),v("div.form-group",[v("div.text-inputs",[v("div.form-field.name",[v("p.label","Name"),v("input",{type:"text",placeholder:"Enter type name",onChange:e=>f(e.target.value),value:m})]),v("div.form-field.form-description",[v("p.label","Description"),v("input",{type:"text",placeholder:"Enter type description",onChange:e=>h(e.target.value),value:g})])]),v("div.form-field.color",[v("p.label","Color"),v(r,{value:b,onChange:e=>O(e),style:{width:"100%"}})])]),v(a,{className:"save-btn",small:!0,onClick:()=>s({name:m,description:g,color:b,id:u})},"Save changes")])))}function O({type:e,luminance:t,selectedType:i,setSelectedType:a,dispatch:r,tree:n,selectedNodes:s,selected:p,isSelectedNodes:c,viewOnly:y}){let{color:m,name:g,id:b,description:O}=e;d();let x=b===p?.id&&s.length>0,N=(0,u.getTagStyle)(m,{active:x,highlighted:0===s.length}),T={id:b,name:g,color:m,description:O},k=f(n,b);return v(l,{autoFocus:!1,content:v("div.description",O||"No description available"),interactionKind:"hover"},v("div.type-tag",{onClick:()=>{c||null!==i?c&&null===i?b===p?.id&&s.length>0?r({type:"toggle-node-selected",payload:{ids:s}}):r({type:"select-entity-type",payload:T}):c&&i.id===b?(a(null),r({type:"toggle-node-selected",payload:{ids:k}})):c&&i.id!==b?k.length>0&&(a(e),r({type:"toggle-node-selected",payload:{ids:f(n,i.id)}}),r({type:"toggle-node-selected",payload:{ids:k}})):console.warn("Unexpected state in TypeTag click handler",{isSelectedNodes:c,selectedType:i,selectedNodes:s,ids:k,id:b,selected:p}):k.length>0&&(a(e),r({type:"toggle-node-selected",payload:{ids:k}}))},style:{cursor:(k.length>0||c&&!i)&&!y?"pointer":"",color:"black",backgroundColor:N.backgroundColor,border:x?"1px solid var(--text-emphasized-color)":"1px solid var(--background-color)"}},v("div.type-container",[v("div.type-name",g),v.if(!y)("div.icons",[v(h,{dispatch:r,type:e}),v(o,{icon:"cross",className:"delete-type-icon",style:{color:"red",cursor:"pointer"},onClick:e=>{e.stopPropagation(),r({type:"delete-entity-type",payload:{id:b}})}})])])))}export{m as TypeList};
|
|
2
|
+
//# sourceMappingURL=feedback-components.5d0cbb0e.js.map
|
package/dist/node/{feedback-components.6e969752.js.map → feedback-components.5d0cbb0e.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"A,M,oD,A,O,oD,A,Q,M,mB,A,Q,Y,C,K,O,A,Q,Q,C,C,Y,C,C,W,C,K,mB,A,Q,iB,C,C,c,C,K,2B,A,Q,e,C,K,wB,C,I,E,W,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,E,Q,C,I,E,E,S,E,E,SCUA,IAAM,EAAI,AAAA,EAAM,MAAM,C,AAAC,G,AAAA,E,U,C,AAAA,E,O,CAAA,GAEhB,SAAS,EAAS,CAAA,MACvB,CAAK,CAAA,SACL,CAAQ,CAAA,SACR,CAAQ,CAAA,cACR,CAAa,CAAA,KACb,CAAI,CAAA,SACJ,CAAQ,CACT,EACC,GAAM,CAAC,EAAc,EAAgB,CAAG,AAAA,EAAS,MAC3C,EAAkB,EAAc,MAAM,CAAG,EAEzC,EAAY,AADD,AAAA,IACY,GAAM,GAEnC,OAAO,EAAE,0BAA2B,CAClC,EACE,uBACA,GAAmB,CAAC,EAChB,4BACA,gBAEN,EACE,gBACA,MAAM,IAAI,CAAC,EAAM,MAAM,IAAI,GAAG,CAAC,AAAC,GAC9B,EAAE,EAAS,CACT,KAAA,EACA,UAAA,EACA,aAAA,EACA,gBAAA,EACA,SAAA,EACA,SAAA,EACA,KAAA,EACA,cAAA,EACA,SAAA,EACA,gBAAA,CACF,KAGJ,EAAE,EAAE,CAAC,CAAC,GAAU,EAAS,CAAE,SAAA,CAAS,GACrC,CACH,CAEA,SAAS,EAAmB,CAAI,CAAE,CAAE,EAClC,IAAM,EAAM,EAAE,CAYd,OADA,EAAK,OAAO,CATZ,SAAS,EAAS,CAAI,EAChB,EAAK,IAAI,CAAC,EAAE,GAAK,GACnB,EAAI,IAAI,CAAC,EAAK,EAAE,EAEd,MAAM,OAAO,CAAC,EAAK,QAAQ,GAC7B,EAAK,QAAQ,CAAC,OAAO,CAAC,EAE1B,GAGO,CACT,CAEA,SAAS,EAAQ,CAAA,SAAE,CAAQ,CAAE,EAC3B,GAAM,CAAC,EAA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","sources":["<anon>","packages/feedback-components/src/feedback/typelist.ts"],"sourcesContent":["import \"./feedback-components.e1fe112f.js\";\nimport \"./feedback-components.b22d37d1.js\";\nimport $a9pfJ$macrostrathyper from \"@macrostrat/hyper\";\nimport {useState as $a9pfJ$useState} from \"react\";\nimport {Icon as $a9pfJ$Icon, Overlay2 as $a9pfJ$Overlay2, Popover as $a9pfJ$Popover} from \"@blueprintjs/core\";\nimport {useInDarkMode as $a9pfJ$useInDarkMode, SaveButton as $a9pfJ$SaveButton} from \"@macrostrat/ui-components\";\nimport {ColorPicker as $a9pfJ$ColorPicker} from \"@macrostrat/data-sheet\";\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequirea149\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequirea149\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\n\nvar $9wFEx = parcelRequire(\"9wFEx\");\n\n\nvar $edvRb = parcelRequire(\"edvRb\");\n\n\n\n\nconst $7f564edd0e07f138$var$h = (0, $a9pfJ$macrostrathyper).styled((0, (/*@__PURE__*/$parcel$interopDefault($9wFEx))));\nfunction $7f564edd0e07f138$export$9ebd91d75ddb6a8b({ types: types, selected: selected, dispatch: dispatch, selectedNodes: selectedNodes, tree: tree, viewOnly: viewOnly }) {\n const [selectedType, setSelectedType] = (0, $a9pfJ$useState)(null);\n const isSelectedNodes = selectedNodes.length > 0;\n const darkMode = (0, $a9pfJ$useInDarkMode)();\n const luminance = darkMode ? 0.9 : 0.4;\n return $7f564edd0e07f138$var$h(\"div.type-list-container\", [\n $7f564edd0e07f138$var$h(\"div.type-list-header\", isSelectedNodes && !selectedType ? \"Change selected nodes to:\" : \"Entity Types\"),\n $7f564edd0e07f138$var$h(\"div.type-list\", Array.from(types.values()).map((type)=>$7f564edd0e07f138$var$h($7f564edd0e07f138$var$TypeTag, {\n type: type,\n luminance: luminance,\n selectedType: selectedType,\n setSelectedType: setSelectedType,\n dispatch: dispatch,\n viewOnly: viewOnly,\n tree: tree,\n selectedNodes: selectedNodes,\n selected: selected,\n isSelectedNodes: isSelectedNodes\n }))),\n $7f564edd0e07f138$var$h.if(!viewOnly)($7f564edd0e07f138$var$AddType, {\n dispatch: dispatch\n })\n ]);\n}\nfunction $7f564edd0e07f138$var$collectMatchingIds(tree, id) {\n const ids = [];\n function traverse(node) {\n if (node.type.id === id) ids.push(node.id);\n if (Array.isArray(node.children)) node.children.forEach(traverse);\n }\n tree.forEach(traverse);\n return ids;\n}\nfunction $7f564edd0e07f138$var$AddType({ dispatch: dispatch }) {\n const [overlayOpen, setOverlayOpen] = (0, $a9pfJ$useState)(false);\n const saveHandler = (payload)=>{\n dispatch({\n type: \"add-entity-type\",\n payload: payload\n });\n setOverlayOpen(false);\n };\n return $7f564edd0e07f138$var$h(\"div.add-type-container\", [\n $7f564edd0e07f138$var$h(\"div.add-type\", {\n onClick: ()=>setOverlayOpen(true)\n }, [\n $7f564edd0e07f138$var$h(\"p.add-type-text\", \"Add new type\"),\n $7f564edd0e07f138$var$h((0, $a9pfJ$Icon), {\n icon: \"plus\"\n })\n ]),\n $7f564edd0e07f138$var$h($7f564edd0e07f138$var$TypeOverlay, {\n setOverlayOpen: setOverlayOpen,\n overlayOpen: overlayOpen,\n title: \"Add New Type\",\n saveHandler: saveHandler\n })\n ]);\n}\nfunction $7f564edd0e07f138$var$EditType({ dispatch: dispatch, type: type }) {\n const [editorOpen, setEditorOpen] = (0, $a9pfJ$useState)(false);\n const saveHandler = (payload)=>{\n dispatch({\n type: \"update-entity-type\",\n payload: payload\n });\n setEditorOpen(false);\n };\n return $7f564edd0e07f138$var$h(\"div.edit-type\", [\n $7f564edd0e07f138$var$h((0, $a9pfJ$Icon), {\n icon: \"edit\",\n className: \"edit-icon\",\n onClick: (e)=>{\n e.stopPropagation();\n setEditorOpen(true);\n }\n }),\n $7f564edd0e07f138$var$h($7f564edd0e07f138$var$TypeOverlay, {\n setOverlayOpen: setEditorOpen,\n overlayOpen: editorOpen,\n originalType: type,\n title: \"Edit Type\",\n saveHandler: saveHandler\n })\n ]);\n}\nfunction $7f564edd0e07f138$var$TypeOverlay({ setOverlayOpen: setOverlayOpen, overlayOpen: overlayOpen, originalType: originalType, title: title, saveHandler: saveHandler }) {\n const { name: name, description: description, color: color, id: id } = originalType || {};\n const [nameInput, setNameInput] = (0, $a9pfJ$useState)(name || \"\");\n const [descriptionInput, setDescriptionInput] = (0, $a9pfJ$useState)(description || \"\");\n const [colorInput, setColorInput] = (0, $a9pfJ$useState)(color || \"#fff\");\n return $7f564edd0e07f138$var$h((0, $a9pfJ$Overlay2), {\n isOpen: overlayOpen\n }, $7f564edd0e07f138$var$h(\"div.overlay-container\", $7f564edd0e07f138$var$h(\"div.add-type-overlay\", [\n $7f564edd0e07f138$var$h(\"h2.title\", [\n title,\n $7f564edd0e07f138$var$h((0, $a9pfJ$Icon), {\n icon: \"cross\",\n className: \"close-icon\",\n onClick: ()=>{\n setOverlayOpen(false);\n },\n style: {\n cursor: \"pointer\",\n color: \"red\"\n }\n })\n ]),\n $7f564edd0e07f138$var$h(\"div.form-group\", [\n $7f564edd0e07f138$var$h(\"div.text-inputs\", [\n $7f564edd0e07f138$var$h(\"div.form-field.name\", [\n $7f564edd0e07f138$var$h(\"p.label\", \"Name\"),\n $7f564edd0e07f138$var$h(\"input\", {\n type: \"text\",\n placeholder: \"Enter type name\",\n onChange: (e)=>setNameInput(e.target.value),\n value: nameInput\n })\n ]),\n $7f564edd0e07f138$var$h(\"div.form-field.form-description\", [\n $7f564edd0e07f138$var$h(\"p.label\", \"Description\"),\n $7f564edd0e07f138$var$h(\"input\", {\n type: \"text\",\n placeholder: \"Enter type description\",\n onChange: (e)=>setDescriptionInput(e.target.value),\n value: descriptionInput\n })\n ])\n ]),\n $7f564edd0e07f138$var$h(\"div.form-field.color\", [\n $7f564edd0e07f138$var$h(\"p.label\", \"Color\"),\n $7f564edd0e07f138$var$h((0, $a9pfJ$ColorPicker), {\n value: colorInput,\n onChange: (color)=>setColorInput(color),\n style: {\n width: \"100%\"\n }\n })\n ])\n ]),\n $7f564edd0e07f138$var$h((0, $a9pfJ$SaveButton), {\n className: \"save-btn\",\n small: true,\n onClick: ()=>saveHandler({\n name: nameInput,\n description: descriptionInput,\n color: colorInput,\n id: id\n })\n }, \"Save changes\")\n ])));\n}\nfunction $7f564edd0e07f138$var$TypeTag({ type: type, luminance: luminance, selectedType: selectedType, setSelectedType: setSelectedType, dispatch: dispatch, tree: tree, selectedNodes: selectedNodes, selected: selected, isSelectedNodes: isSelectedNodes, viewOnly: viewOnly }) {\n const { color: color, name: name, id: id, description: description } = type;\n const darkMode = (0, $a9pfJ$useInDarkMode)();\n const isSelected = id === selected?.id && selectedNodes.length > 0;\n const style = (0, $edvRb.getTagStyle)(color, {\n active: isSelected,\n highlighted: selectedNodes.length === 0\n });\n const payload = {\n id: id,\n name: name,\n color: color,\n description: description\n };\n const ids = $7f564edd0e07f138$var$collectMatchingIds(tree, id);\n const handleTagClick = ()=>{\n if (!isSelectedNodes && selectedType === null) {\n if (ids.length > 0) {\n setSelectedType(type);\n dispatch({\n type: \"toggle-node-selected\",\n payload: {\n ids: ids\n }\n });\n }\n } else if (isSelectedNodes && selectedType === null) {\n if (id === selected?.id && selectedNodes.length > 0) dispatch({\n type: \"toggle-node-selected\",\n payload: {\n ids: selectedNodes\n }\n });\n else dispatch({\n type: \"select-entity-type\",\n payload: payload\n });\n } else if (isSelectedNodes && selectedType.id === id) {\n setSelectedType(null);\n dispatch({\n type: \"toggle-node-selected\",\n payload: {\n ids: ids\n }\n });\n } else if (isSelectedNodes && selectedType.id !== id) {\n if (ids.length > 0) {\n setSelectedType(type);\n const oldIds = $7f564edd0e07f138$var$collectMatchingIds(tree, selectedType.id);\n dispatch({\n type: \"toggle-node-selected\",\n payload: {\n ids: oldIds\n }\n });\n dispatch({\n type: \"toggle-node-selected\",\n payload: {\n ids: ids\n }\n });\n }\n } else console.warn(\"Unexpected state in TypeTag click handler\", {\n isSelectedNodes: isSelectedNodes,\n selectedType: selectedType,\n selectedNodes: selectedNodes,\n ids: ids,\n id: id,\n selected: selected\n });\n };\n return $7f564edd0e07f138$var$h((0, $a9pfJ$Popover), {\n autoFocus: false,\n content: $7f564edd0e07f138$var$h(\"div.description\", description || \"No description available\"),\n interactionKind: \"hover\"\n }, $7f564edd0e07f138$var$h(\"div.type-tag\", {\n onClick: handleTagClick,\n style: {\n cursor: (ids.length > 0 || isSelectedNodes && !selectedType) && !viewOnly ? \"pointer\" : \"\",\n color: \"black\",\n backgroundColor: style.backgroundColor,\n border: isSelected ? `1px solid var(--text-emphasized-color)` : `1px solid var(--background-color)`\n }\n }, $7f564edd0e07f138$var$h(\"div.type-container\", [\n $7f564edd0e07f138$var$h(\"div.type-name\", name),\n $7f564edd0e07f138$var$h.if(!viewOnly)(\"div.icons\", [\n $7f564edd0e07f138$var$h($7f564edd0e07f138$var$EditType, {\n dispatch: dispatch,\n type: type\n }),\n $7f564edd0e07f138$var$h((0, $a9pfJ$Icon), {\n icon: \"cross\",\n className: \"delete-type-icon\",\n style: {\n color: \"red\",\n cursor: \"pointer\"\n },\n onClick: (e)=>{\n e.stopPropagation();\n dispatch({\n type: \"delete-entity-type\",\n payload: {\n id: id\n }\n });\n }\n })\n ])\n ])));\n}\n\n\nexport {$7f564edd0e07f138$export$9ebd91d75ddb6a8b as TypeList};\n//# sourceMappingURL=feedback-components.6e969752.js.map\n","import styles from \"./feedback.module.sass\";\nimport hyper from \"@macrostrat/hyper\";\n\nimport { getTagStyle } from \"../extractions\";\nimport { useState } from \"react\";\nimport { Icon, Popover, Overlay2 } from \"@blueprintjs/core\";\nimport { SaveButton } from \"@macrostrat/ui-components\";\nimport { useInDarkMode } from \"@macrostrat/ui-components\";\nimport { ColorPicker } from \"@macrostrat/data-sheet\";\n\nconst h = hyper.styled(styles);\n\nexport function TypeList({\n types,\n selected,\n dispatch,\n selectedNodes,\n tree,\n viewOnly,\n}) {\n const [selectedType, setSelectedType] = useState(null);\n const isSelectedNodes = selectedNodes.length > 0;\n const darkMode = useInDarkMode();\n const luminance = darkMode ? 0.9 : 0.4;\n\n return h(\"div.type-list-container\", [\n h(\n \"div.type-list-header\",\n isSelectedNodes && !selectedType\n ? \"Change selected nodes to:\"\n : \"Entity Types\",\n ),\n h(\n \"div.type-list\",\n Array.from(types.values()).map((type) =>\n h(TypeTag, {\n type,\n luminance,\n selectedType,\n setSelectedType,\n dispatch,\n viewOnly,\n tree,\n selectedNodes,\n selected,\n isSelectedNodes,\n }),\n ),\n ),\n h.if(!viewOnly)(AddType, { dispatch }),\n ]);\n}\n\nfunction collectMatchingIds(tree, id) {\n const ids = [];\n\n function traverse(node) {\n if (node.type.id === id) {\n ids.push(node.id);\n }\n if (Array.isArray(node.children)) {\n node.children.forEach(traverse);\n }\n }\n\n tree.forEach(traverse);\n return ids;\n}\n\nfunction AddType({ dispatch }) {\n const [overlayOpen, setOverlayOpen] = useState(false);\n\n const saveHandler = (payload) => {\n dispatch({\n type: \"add-entity-type\",\n payload,\n });\n setOverlayOpen(false);\n };\n\n return h(\"div.add-type-container\", [\n h(\"div.add-type\", { onClick: () => setOverlayOpen(true) }, [\n h(\"p.add-type-text\", \"Add new type\"),\n h(Icon, { icon: \"plus\" }),\n ]),\n h(TypeOverlay, {\n setOverlayOpen,\n overlayOpen,\n title: \"Add New Type\",\n saveHandler,\n }),\n ]);\n}\n\nfunction EditType({ dispatch, type }) {\n const [editorOpen, setEditorOpen] = useState(false);\n\n const saveHandler = (payload) => {\n dispatch({\n type: \"update-entity-type\",\n payload,\n });\n setEditorOpen(false);\n };\n\n return h(\"div.edit-type\", [\n h(Icon, {\n icon: \"edit\",\n className: \"edit-icon\",\n onClick: (e) => {\n e.stopPropagation();\n setEditorOpen(true);\n },\n }),\n h(TypeOverlay, {\n setOverlayOpen: setEditorOpen,\n overlayOpen: editorOpen,\n originalType: type,\n title: \"Edit Type\",\n saveHandler,\n }),\n ]);\n}\n\nfunction TypeOverlay({\n setOverlayOpen,\n overlayOpen,\n originalType,\n title,\n saveHandler,\n}) {\n const { name, description, color, id } = originalType || {};\n\n const [nameInput, setNameInput] = useState(name || \"\");\n const [descriptionInput, setDescriptionInput] = useState(description || \"\");\n const [colorInput, setColorInput] = useState(color || \"#fff\");\n\n return h(\n Overlay2,\n {\n isOpen: overlayOpen,\n },\n h(\n \"div.overlay-container\",\n h(\"div.add-type-overlay\", [\n h(\"h2.title\", [\n title,\n h(Icon, {\n icon: \"cross\",\n className: \"close-icon\",\n onClick: () => {\n setOverlayOpen(false);\n },\n style: { cursor: \"pointer\", color: \"red\" },\n }),\n ]),\n h(\"div.form-group\", [\n h(\"div.text-inputs\", [\n h(\"div.form-field.name\", [\n h(\"p.label\", \"Name\"),\n h(\"input\", {\n type: \"text\",\n placeholder: \"Enter type name\",\n onChange: (e) => setNameInput(e.target.value),\n value: nameInput,\n }),\n ]),\n h(\"div.form-field.form-description\", [\n h(\"p.label\", \"Description\"),\n h(\"input\", {\n type: \"text\",\n placeholder: \"Enter type description\",\n onChange: (e) => setDescriptionInput(e.target.value),\n value: descriptionInput,\n }),\n ]),\n ]),\n h(\"div.form-field.color\", [\n h(\"p.label\", \"Color\"),\n h(ColorPicker, {\n value: colorInput,\n onChange: (color) => setColorInput(color),\n style: { width: \"100%\" },\n }),\n ]),\n ]),\n h(\n SaveButton,\n {\n className: \"save-btn\",\n small: true,\n onClick: () =>\n saveHandler({\n name: nameInput,\n description: descriptionInput,\n color: colorInput,\n id,\n }),\n },\n \"Save changes\",\n ),\n ]),\n ),\n );\n}\n\nfunction TypeTag({\n type,\n luminance,\n selectedType,\n setSelectedType,\n dispatch,\n tree,\n selectedNodes,\n selected,\n isSelectedNodes,\n viewOnly,\n}) {\n const { color, name, id, description } = type;\n const darkMode = useInDarkMode();\n const isSelected = id === selected?.id && selectedNodes.length > 0;\n\n const style = getTagStyle(color, {\n active: isSelected,\n highlighted: selectedNodes.length === 0,\n });\n\n const payload = {\n id,\n name,\n color,\n description,\n };\n\n const ids = collectMatchingIds(tree, id);\n\n const handleTagClick = () => {\n if (!isSelectedNodes && selectedType === null) {\n if (ids.length > 0) {\n setSelectedType(type);\n dispatch({ type: \"toggle-node-selected\", payload: { ids } });\n }\n } else if (isSelectedNodes && selectedType === null) {\n if (id === selected?.id && selectedNodes.length > 0) {\n dispatch({\n type: \"toggle-node-selected\",\n payload: { ids: selectedNodes },\n });\n } else {\n dispatch({ type: \"select-entity-type\", payload });\n }\n } else if (isSelectedNodes && selectedType.id === id) {\n setSelectedType(null);\n dispatch({ type: \"toggle-node-selected\", payload: { ids } });\n } else if (isSelectedNodes && selectedType.id !== id) {\n if (ids.length > 0) {\n setSelectedType(type);\n const oldIds = collectMatchingIds(tree, selectedType.id);\n\n dispatch({ type: \"toggle-node-selected\", payload: { ids: oldIds } });\n dispatch({ type: \"toggle-node-selected\", payload: { ids } });\n }\n } else {\n console.warn(\"Unexpected state in TypeTag click handler\", {\n isSelectedNodes,\n selectedType,\n selectedNodes,\n ids,\n id,\n selected,\n });\n }\n };\n\n return h(\n Popover,\n {\n autoFocus: false,\n content: h(\"div.description\", description || \"No description available\"),\n interactionKind: \"hover\",\n },\n h(\n \"div.type-tag\",\n {\n onClick: handleTagClick,\n style: {\n cursor:\n (ids.length > 0 || (isSelectedNodes && !selectedType)) && !viewOnly\n ? \"pointer\"\n : \"\",\n color: \"black\",\n backgroundColor: style.backgroundColor,\n border: isSelected\n ? `1px solid var(--text-emphasized-color)`\n : `1px solid var(--background-color)`,\n },\n },\n h(\"div.type-container\", [\n h(\"div.type-name\", name),\n h.if(!viewOnly)(\"div.icons\", [\n h(EditType, {\n dispatch,\n type,\n }),\n h(Icon, {\n icon: \"cross\",\n className: \"delete-type-icon\",\n style: { color: \"red\", cursor: \"pointer\" },\n onClick: (e) => {\n e.stopPropagation();\n dispatch({\n type: \"delete-entity-type\",\n payload: { id },\n });\n },\n }),\n ]),\n ]),\n ),\n );\n}\n"],"names":["$a9pfJ$macrostrathyper","useState","$a9pfJ$useState","Icon","$a9pfJ$Icon","Overlay2","$a9pfJ$Overlay2","Popover","$a9pfJ$Popover","useInDarkMode","$a9pfJ$useInDarkMode","SaveButton","$a9pfJ$SaveButton","ColorPicker","$a9pfJ$ColorPicker","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$9wFEx","$edvRb","$7f564edd0e07f138$var$h","styled","a","__esModule","default","$7f564edd0e07f138$export$9ebd91d75ddb6a8b","types","selected","dispatch","selectedNodes","tree","viewOnly","selectedType","setSelectedType","isSelectedNodes","length","luminance","darkMode","Array","from","values","map","type","$7f564edd0e07f138$var$TypeTag","if","$7f564edd0e07f138$var$AddType","$7f564edd0e07f138$var$collectMatchingIds","ids","forEach","traverse","node","push","isArray","children","overlayOpen","setOverlayOpen","onClick","icon","$7f564edd0e07f138$var$TypeOverlay","title","saveHandler","payload","$7f564edd0e07f138$var$EditType","editorOpen","setEditorOpen","className","e","stopPropagation","originalType","name","description","color","nameInput","setNameInput","descriptionInput","setDescriptionInput","colorInput","setColorInput","isOpen","style","cursor","placeholder","onChange","target","value","width","small","isSelected","getTagStyle","active","highlighted","autoFocus","content","interactionKind","console","warn","backgroundColor","border","TypeList"],"version":3,"file":"feedback-components.6e969752.js.map","sourceRoot":"../../../../"}
|
|
1
|
+
{"mappings":"A,M,oD,A,O,oD,A,Q,M,mB,A,Q,Y,C,K,O,A,Q,Q,C,C,Y,C,C,W,C,K,mB,A,Q,iB,C,C,c,C,K,2B,A,Q,e,C,K,wB,C,I,E,W,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,E,Q,C,I,E,E,S,E,E,SCUA,IAAM,EAAI,AAAA,EAAM,MAAM,C,AAAC,G,AAAA,E,U,C,AAAA,E,O,CAAA,GAEhB,SAAS,EAAS,CAAA,MACvB,CAAK,CAAA,SACL,CAAQ,CAAA,SACR,CAAQ,CAAA,cACR,CAAa,CAAA,KACb,CAAI,CAAA,SACJ,CAAQ,CACT,EACC,GAAM,CAAC,EAAc,EAAgB,CAAG,AAAA,EAAS,MAC3C,EAAkB,EAAc,MAAM,CAAG,EAEzC,EAAY,AADD,AAAA,IACY,GAAM,GAEnC,OAAO,EAAE,0BAA2B,CAClC,EACE,uBACA,GAAmB,CAAC,EAChB,4BACA,gBAEN,EACE,gBACA,MAAM,IAAI,CAAC,EAAM,MAAM,IAAI,GAAG,CAAC,AAAC,GAC9B,EAAE,EAAS,CACT,KAAA,EACA,UAAA,EACA,aAAA,EACA,gBAAA,EACA,SAAA,EACA,SAAA,EACA,KAAA,EACA,cAAA,EACA,SAAA,EACA,gBAAA,CACF,KAGJ,EAAE,EAAE,CAAC,CAAC,GAAU,EAAS,CAAE,SAAA,CAAS,GACrC,CACH,CAEA,SAAS,EAAmB,CAAI,CAAE,CAAE,EAClC,IAAM,EAAM,EAAE,CAYd,OADA,EAAK,OAAO,CATZ,SAAS,EAAS,CAAI,EAChB,EAAK,IAAI,CAAC,EAAE,GAAK,GACnB,EAAI,IAAI,CAAC,EAAK,EAAE,EAEd,MAAM,OAAO,CAAC,EAAK,QAAQ,GAC7B,EAAK,QAAQ,CAAC,OAAO,CAAC,EAE1B,GAGO,CACT,CAEA,SAAS,EAAQ,CAAA,SAAE,CAAQ,CAAE,EAC3B,GAAM,CAAC,EAA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","sources":["<anon>","packages/feedback-components/src/feedback/typelist.ts"],"sourcesContent":["import \"./feedback-components.c84ff10e.js\";\nimport \"./feedback-components.b22d37d1.js\";\nimport $a9pfJ$macrostrathyper from \"@macrostrat/hyper\";\nimport {useState as $a9pfJ$useState} from \"react\";\nimport {Icon as $a9pfJ$Icon, Overlay2 as $a9pfJ$Overlay2, Popover as $a9pfJ$Popover} from \"@blueprintjs/core\";\nimport {useInDarkMode as $a9pfJ$useInDarkMode, SaveButton as $a9pfJ$SaveButton} from \"@macrostrat/ui-components\";\nimport {ColorPicker as $a9pfJ$ColorPicker} from \"@macrostrat/data-sheet\";\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequirea149\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequirea149\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\n\nvar $9wFEx = parcelRequire(\"9wFEx\");\n\n\nvar $edvRb = parcelRequire(\"edvRb\");\n\n\n\n\nconst $7f564edd0e07f138$var$h = (0, $a9pfJ$macrostrathyper).styled((0, (/*@__PURE__*/$parcel$interopDefault($9wFEx))));\nfunction $7f564edd0e07f138$export$9ebd91d75ddb6a8b({ types: types, selected: selected, dispatch: dispatch, selectedNodes: selectedNodes, tree: tree, viewOnly: viewOnly }) {\n const [selectedType, setSelectedType] = (0, $a9pfJ$useState)(null);\n const isSelectedNodes = selectedNodes.length > 0;\n const darkMode = (0, $a9pfJ$useInDarkMode)();\n const luminance = darkMode ? 0.9 : 0.4;\n return $7f564edd0e07f138$var$h(\"div.type-list-container\", [\n $7f564edd0e07f138$var$h(\"div.type-list-header\", isSelectedNodes && !selectedType ? \"Change selected nodes to:\" : \"Entity Types\"),\n $7f564edd0e07f138$var$h(\"div.type-list\", Array.from(types.values()).map((type)=>$7f564edd0e07f138$var$h($7f564edd0e07f138$var$TypeTag, {\n type: type,\n luminance: luminance,\n selectedType: selectedType,\n setSelectedType: setSelectedType,\n dispatch: dispatch,\n viewOnly: viewOnly,\n tree: tree,\n selectedNodes: selectedNodes,\n selected: selected,\n isSelectedNodes: isSelectedNodes\n }))),\n $7f564edd0e07f138$var$h.if(!viewOnly)($7f564edd0e07f138$var$AddType, {\n dispatch: dispatch\n })\n ]);\n}\nfunction $7f564edd0e07f138$var$collectMatchingIds(tree, id) {\n const ids = [];\n function traverse(node) {\n if (node.type.id === id) ids.push(node.id);\n if (Array.isArray(node.children)) node.children.forEach(traverse);\n }\n tree.forEach(traverse);\n return ids;\n}\nfunction $7f564edd0e07f138$var$AddType({ dispatch: dispatch }) {\n const [overlayOpen, setOverlayOpen] = (0, $a9pfJ$useState)(false);\n const saveHandler = (payload)=>{\n dispatch({\n type: \"add-entity-type\",\n payload: payload\n });\n setOverlayOpen(false);\n };\n return $7f564edd0e07f138$var$h(\"div.add-type-container\", [\n $7f564edd0e07f138$var$h(\"div.add-type\", {\n onClick: ()=>setOverlayOpen(true)\n }, [\n $7f564edd0e07f138$var$h(\"p.add-type-text\", \"Add new type\"),\n $7f564edd0e07f138$var$h((0, $a9pfJ$Icon), {\n icon: \"plus\"\n })\n ]),\n $7f564edd0e07f138$var$h($7f564edd0e07f138$var$TypeOverlay, {\n setOverlayOpen: setOverlayOpen,\n overlayOpen: overlayOpen,\n title: \"Add New Type\",\n saveHandler: saveHandler\n })\n ]);\n}\nfunction $7f564edd0e07f138$var$EditType({ dispatch: dispatch, type: type }) {\n const [editorOpen, setEditorOpen] = (0, $a9pfJ$useState)(false);\n const saveHandler = (payload)=>{\n dispatch({\n type: \"update-entity-type\",\n payload: payload\n });\n setEditorOpen(false);\n };\n return $7f564edd0e07f138$var$h(\"div.edit-type\", [\n $7f564edd0e07f138$var$h((0, $a9pfJ$Icon), {\n icon: \"edit\",\n className: \"edit-icon\",\n onClick: (e)=>{\n e.stopPropagation();\n setEditorOpen(true);\n }\n }),\n $7f564edd0e07f138$var$h($7f564edd0e07f138$var$TypeOverlay, {\n setOverlayOpen: setEditorOpen,\n overlayOpen: editorOpen,\n originalType: type,\n title: \"Edit Type\",\n saveHandler: saveHandler\n })\n ]);\n}\nfunction $7f564edd0e07f138$var$TypeOverlay({ setOverlayOpen: setOverlayOpen, overlayOpen: overlayOpen, originalType: originalType, title: title, saveHandler: saveHandler }) {\n const { name: name, description: description, color: color, id: id } = originalType || {};\n const [nameInput, setNameInput] = (0, $a9pfJ$useState)(name || \"\");\n const [descriptionInput, setDescriptionInput] = (0, $a9pfJ$useState)(description || \"\");\n const [colorInput, setColorInput] = (0, $a9pfJ$useState)(color || \"#fff\");\n return $7f564edd0e07f138$var$h((0, $a9pfJ$Overlay2), {\n isOpen: overlayOpen\n }, $7f564edd0e07f138$var$h(\"div.overlay-container\", $7f564edd0e07f138$var$h(\"div.add-type-overlay\", [\n $7f564edd0e07f138$var$h(\"h2.title\", [\n title,\n $7f564edd0e07f138$var$h((0, $a9pfJ$Icon), {\n icon: \"cross\",\n className: \"close-icon\",\n onClick: ()=>{\n setOverlayOpen(false);\n },\n style: {\n cursor: \"pointer\",\n color: \"red\"\n }\n })\n ]),\n $7f564edd0e07f138$var$h(\"div.form-group\", [\n $7f564edd0e07f138$var$h(\"div.text-inputs\", [\n $7f564edd0e07f138$var$h(\"div.form-field.name\", [\n $7f564edd0e07f138$var$h(\"p.label\", \"Name\"),\n $7f564edd0e07f138$var$h(\"input\", {\n type: \"text\",\n placeholder: \"Enter type name\",\n onChange: (e)=>setNameInput(e.target.value),\n value: nameInput\n })\n ]),\n $7f564edd0e07f138$var$h(\"div.form-field.form-description\", [\n $7f564edd0e07f138$var$h(\"p.label\", \"Description\"),\n $7f564edd0e07f138$var$h(\"input\", {\n type: \"text\",\n placeholder: \"Enter type description\",\n onChange: (e)=>setDescriptionInput(e.target.value),\n value: descriptionInput\n })\n ])\n ]),\n $7f564edd0e07f138$var$h(\"div.form-field.color\", [\n $7f564edd0e07f138$var$h(\"p.label\", \"Color\"),\n $7f564edd0e07f138$var$h((0, $a9pfJ$ColorPicker), {\n value: colorInput,\n onChange: (color)=>setColorInput(color),\n style: {\n width: \"100%\"\n }\n })\n ])\n ]),\n $7f564edd0e07f138$var$h((0, $a9pfJ$SaveButton), {\n className: \"save-btn\",\n small: true,\n onClick: ()=>saveHandler({\n name: nameInput,\n description: descriptionInput,\n color: colorInput,\n id: id\n })\n }, \"Save changes\")\n ])));\n}\nfunction $7f564edd0e07f138$var$TypeTag({ type: type, luminance: luminance, selectedType: selectedType, setSelectedType: setSelectedType, dispatch: dispatch, tree: tree, selectedNodes: selectedNodes, selected: selected, isSelectedNodes: isSelectedNodes, viewOnly: viewOnly }) {\n const { color: color, name: name, id: id, description: description } = type;\n const darkMode = (0, $a9pfJ$useInDarkMode)();\n const isSelected = id === selected?.id && selectedNodes.length > 0;\n const style = (0, $edvRb.getTagStyle)(color, {\n active: isSelected,\n highlighted: selectedNodes.length === 0\n });\n const payload = {\n id: id,\n name: name,\n color: color,\n description: description\n };\n const ids = $7f564edd0e07f138$var$collectMatchingIds(tree, id);\n const handleTagClick = ()=>{\n if (!isSelectedNodes && selectedType === null) {\n if (ids.length > 0) {\n setSelectedType(type);\n dispatch({\n type: \"toggle-node-selected\",\n payload: {\n ids: ids\n }\n });\n }\n } else if (isSelectedNodes && selectedType === null) {\n if (id === selected?.id && selectedNodes.length > 0) dispatch({\n type: \"toggle-node-selected\",\n payload: {\n ids: selectedNodes\n }\n });\n else dispatch({\n type: \"select-entity-type\",\n payload: payload\n });\n } else if (isSelectedNodes && selectedType.id === id) {\n setSelectedType(null);\n dispatch({\n type: \"toggle-node-selected\",\n payload: {\n ids: ids\n }\n });\n } else if (isSelectedNodes && selectedType.id !== id) {\n if (ids.length > 0) {\n setSelectedType(type);\n const oldIds = $7f564edd0e07f138$var$collectMatchingIds(tree, selectedType.id);\n dispatch({\n type: \"toggle-node-selected\",\n payload: {\n ids: oldIds\n }\n });\n dispatch({\n type: \"toggle-node-selected\",\n payload: {\n ids: ids\n }\n });\n }\n } else console.warn(\"Unexpected state in TypeTag click handler\", {\n isSelectedNodes: isSelectedNodes,\n selectedType: selectedType,\n selectedNodes: selectedNodes,\n ids: ids,\n id: id,\n selected: selected\n });\n };\n return $7f564edd0e07f138$var$h((0, $a9pfJ$Popover), {\n autoFocus: false,\n content: $7f564edd0e07f138$var$h(\"div.description\", description || \"No description available\"),\n interactionKind: \"hover\"\n }, $7f564edd0e07f138$var$h(\"div.type-tag\", {\n onClick: handleTagClick,\n style: {\n cursor: (ids.length > 0 || isSelectedNodes && !selectedType) && !viewOnly ? \"pointer\" : \"\",\n color: \"black\",\n backgroundColor: style.backgroundColor,\n border: isSelected ? `1px solid var(--text-emphasized-color)` : `1px solid var(--background-color)`\n }\n }, $7f564edd0e07f138$var$h(\"div.type-container\", [\n $7f564edd0e07f138$var$h(\"div.type-name\", name),\n $7f564edd0e07f138$var$h.if(!viewOnly)(\"div.icons\", [\n $7f564edd0e07f138$var$h($7f564edd0e07f138$var$EditType, {\n dispatch: dispatch,\n type: type\n }),\n $7f564edd0e07f138$var$h((0, $a9pfJ$Icon), {\n icon: \"cross\",\n className: \"delete-type-icon\",\n style: {\n color: \"red\",\n cursor: \"pointer\"\n },\n onClick: (e)=>{\n e.stopPropagation();\n dispatch({\n type: \"delete-entity-type\",\n payload: {\n id: id\n }\n });\n }\n })\n ])\n ])));\n}\n\n\nexport {$7f564edd0e07f138$export$9ebd91d75ddb6a8b as TypeList};\n//# sourceMappingURL=feedback-components.5d0cbb0e.js.map\n","import styles from \"./feedback.module.sass\";\nimport hyper from \"@macrostrat/hyper\";\n\nimport { getTagStyle } from \"../extractions\";\nimport { useState } from \"react\";\nimport { Icon, Popover, Overlay2 } from \"@blueprintjs/core\";\nimport { SaveButton } from \"@macrostrat/ui-components\";\nimport { useInDarkMode } from \"@macrostrat/ui-components\";\nimport { ColorPicker } from \"@macrostrat/data-sheet\";\n\nconst h = hyper.styled(styles);\n\nexport function TypeList({\n types,\n selected,\n dispatch,\n selectedNodes,\n tree,\n viewOnly,\n}) {\n const [selectedType, setSelectedType] = useState(null);\n const isSelectedNodes = selectedNodes.length > 0;\n const darkMode = useInDarkMode();\n const luminance = darkMode ? 0.9 : 0.4;\n\n return h(\"div.type-list-container\", [\n h(\n \"div.type-list-header\",\n isSelectedNodes && !selectedType\n ? \"Change selected nodes to:\"\n : \"Entity Types\",\n ),\n h(\n \"div.type-list\",\n Array.from(types.values()).map((type) =>\n h(TypeTag, {\n type,\n luminance,\n selectedType,\n setSelectedType,\n dispatch,\n viewOnly,\n tree,\n selectedNodes,\n selected,\n isSelectedNodes,\n }),\n ),\n ),\n h.if(!viewOnly)(AddType, { dispatch }),\n ]);\n}\n\nfunction collectMatchingIds(tree, id) {\n const ids = [];\n\n function traverse(node) {\n if (node.type.id === id) {\n ids.push(node.id);\n }\n if (Array.isArray(node.children)) {\n node.children.forEach(traverse);\n }\n }\n\n tree.forEach(traverse);\n return ids;\n}\n\nfunction AddType({ dispatch }) {\n const [overlayOpen, setOverlayOpen] = useState(false);\n\n const saveHandler = (payload) => {\n dispatch({\n type: \"add-entity-type\",\n payload,\n });\n setOverlayOpen(false);\n };\n\n return h(\"div.add-type-container\", [\n h(\"div.add-type\", { onClick: () => setOverlayOpen(true) }, [\n h(\"p.add-type-text\", \"Add new type\"),\n h(Icon, { icon: \"plus\" }),\n ]),\n h(TypeOverlay, {\n setOverlayOpen,\n overlayOpen,\n title: \"Add New Type\",\n saveHandler,\n }),\n ]);\n}\n\nfunction EditType({ dispatch, type }) {\n const [editorOpen, setEditorOpen] = useState(false);\n\n const saveHandler = (payload) => {\n dispatch({\n type: \"update-entity-type\",\n payload,\n });\n setEditorOpen(false);\n };\n\n return h(\"div.edit-type\", [\n h(Icon, {\n icon: \"edit\",\n className: \"edit-icon\",\n onClick: (e) => {\n e.stopPropagation();\n setEditorOpen(true);\n },\n }),\n h(TypeOverlay, {\n setOverlayOpen: setEditorOpen,\n overlayOpen: editorOpen,\n originalType: type,\n title: \"Edit Type\",\n saveHandler,\n }),\n ]);\n}\n\nfunction TypeOverlay({\n setOverlayOpen,\n overlayOpen,\n originalType,\n title,\n saveHandler,\n}) {\n const { name, description, color, id } = originalType || {};\n\n const [nameInput, setNameInput] = useState(name || \"\");\n const [descriptionInput, setDescriptionInput] = useState(description || \"\");\n const [colorInput, setColorInput] = useState(color || \"#fff\");\n\n return h(\n Overlay2,\n {\n isOpen: overlayOpen,\n },\n h(\n \"div.overlay-container\",\n h(\"div.add-type-overlay\", [\n h(\"h2.title\", [\n title,\n h(Icon, {\n icon: \"cross\",\n className: \"close-icon\",\n onClick: () => {\n setOverlayOpen(false);\n },\n style: { cursor: \"pointer\", color: \"red\" },\n }),\n ]),\n h(\"div.form-group\", [\n h(\"div.text-inputs\", [\n h(\"div.form-field.name\", [\n h(\"p.label\", \"Name\"),\n h(\"input\", {\n type: \"text\",\n placeholder: \"Enter type name\",\n onChange: (e) => setNameInput(e.target.value),\n value: nameInput,\n }),\n ]),\n h(\"div.form-field.form-description\", [\n h(\"p.label\", \"Description\"),\n h(\"input\", {\n type: \"text\",\n placeholder: \"Enter type description\",\n onChange: (e) => setDescriptionInput(e.target.value),\n value: descriptionInput,\n }),\n ]),\n ]),\n h(\"div.form-field.color\", [\n h(\"p.label\", \"Color\"),\n h(ColorPicker, {\n value: colorInput,\n onChange: (color) => setColorInput(color),\n style: { width: \"100%\" },\n }),\n ]),\n ]),\n h(\n SaveButton,\n {\n className: \"save-btn\",\n small: true,\n onClick: () =>\n saveHandler({\n name: nameInput,\n description: descriptionInput,\n color: colorInput,\n id,\n }),\n },\n \"Save changes\",\n ),\n ]),\n ),\n );\n}\n\nfunction TypeTag({\n type,\n luminance,\n selectedType,\n setSelectedType,\n dispatch,\n tree,\n selectedNodes,\n selected,\n isSelectedNodes,\n viewOnly,\n}) {\n const { color, name, id, description } = type;\n const darkMode = useInDarkMode();\n const isSelected = id === selected?.id && selectedNodes.length > 0;\n\n const style = getTagStyle(color, {\n active: isSelected,\n highlighted: selectedNodes.length === 0,\n });\n\n const payload = {\n id,\n name,\n color,\n description,\n };\n\n const ids = collectMatchingIds(tree, id);\n\n const handleTagClick = () => {\n if (!isSelectedNodes && selectedType === null) {\n if (ids.length > 0) {\n setSelectedType(type);\n dispatch({ type: \"toggle-node-selected\", payload: { ids } });\n }\n } else if (isSelectedNodes && selectedType === null) {\n if (id === selected?.id && selectedNodes.length > 0) {\n dispatch({\n type: \"toggle-node-selected\",\n payload: { ids: selectedNodes },\n });\n } else {\n dispatch({ type: \"select-entity-type\", payload });\n }\n } else if (isSelectedNodes && selectedType.id === id) {\n setSelectedType(null);\n dispatch({ type: \"toggle-node-selected\", payload: { ids } });\n } else if (isSelectedNodes && selectedType.id !== id) {\n if (ids.length > 0) {\n setSelectedType(type);\n const oldIds = collectMatchingIds(tree, selectedType.id);\n\n dispatch({ type: \"toggle-node-selected\", payload: { ids: oldIds } });\n dispatch({ type: \"toggle-node-selected\", payload: { ids } });\n }\n } else {\n console.warn(\"Unexpected state in TypeTag click handler\", {\n isSelectedNodes,\n selectedType,\n selectedNodes,\n ids,\n id,\n selected,\n });\n }\n };\n\n return h(\n Popover,\n {\n autoFocus: false,\n content: h(\"div.description\", description || \"No description available\"),\n interactionKind: \"hover\",\n },\n h(\n \"div.type-tag\",\n {\n onClick: handleTagClick,\n style: {\n cursor:\n (ids.length > 0 || (isSelectedNodes && !selectedType)) && !viewOnly\n ? \"pointer\"\n : \"\",\n color: \"black\",\n backgroundColor: style.backgroundColor,\n border: isSelected\n ? `1px solid var(--text-emphasized-color)`\n : `1px solid var(--background-color)`,\n },\n },\n h(\"div.type-container\", [\n h(\"div.type-name\", name),\n h.if(!viewOnly)(\"div.icons\", [\n h(EditType, {\n dispatch,\n type,\n }),\n h(Icon, {\n icon: \"cross\",\n className: \"delete-type-icon\",\n style: { color: \"red\", cursor: \"pointer\" },\n onClick: (e) => {\n e.stopPropagation();\n dispatch({\n type: \"delete-entity-type\",\n payload: { id },\n });\n },\n }),\n ]),\n ]),\n ),\n );\n}\n"],"names":["$a9pfJ$macrostrathyper","useState","$a9pfJ$useState","Icon","$a9pfJ$Icon","Overlay2","$a9pfJ$Overlay2","Popover","$a9pfJ$Popover","useInDarkMode","$a9pfJ$useInDarkMode","SaveButton","$a9pfJ$SaveButton","ColorPicker","$a9pfJ$ColorPicker","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$9wFEx","$edvRb","$7f564edd0e07f138$var$h","styled","a","__esModule","default","$7f564edd0e07f138$export$9ebd91d75ddb6a8b","types","selected","dispatch","selectedNodes","tree","viewOnly","selectedType","setSelectedType","isSelectedNodes","length","luminance","darkMode","Array","from","values","map","type","$7f564edd0e07f138$var$TypeTag","if","$7f564edd0e07f138$var$AddType","$7f564edd0e07f138$var$collectMatchingIds","ids","forEach","traverse","node","push","isArray","children","overlayOpen","setOverlayOpen","onClick","icon","$7f564edd0e07f138$var$TypeOverlay","title","saveHandler","payload","$7f564edd0e07f138$var$EditType","editorOpen","setEditorOpen","className","e","stopPropagation","originalType","name","description","color","nameInput","setNameInput","descriptionInput","setDescriptionInput","colorInput","setColorInput","isOpen","style","cursor","placeholder","onChange","target","value","width","small","isSelected","getTagStyle","active","highlighted","autoFocus","content","interactionKind","console","warn","backgroundColor","border","TypeList"],"version":3,"file":"feedback-components.5d0cbb0e.js.map","sourceRoot":"../../../../"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
:root{--text-line-height:3em;--main-extra-width:200px}.QoX8-W_page-wrapper{flex-direction:row;align-items:flex-start;gap:2em;display:flex;position:relative}.QoX8-W_feedback-container{flex:4}.QoX8-W_control-panel{flex:1;height:auto}.QoX8-W_control-content{position:sticky;top:0}.QoX8-W_feedback-component{width:800px;position:relative}.QoX8-W_feedback-component>svg{width:800px}circle{border:1px solid #000}.QoX8-W_selected{border:1px solid #fff}.QoX8-W_feedback-text{margin-bottom:2em}.QoX8-W_entity-panel{background:var(--panel-secondary-background-color);width:calc(100% - 2em);min-height:100px;max-height:600px;box-shadow:0 0 0 1px var(--panel-border-color)inset;border-radius:4px;flex:1;padding:1em;position:relative}.QoX8-W_selection-tree{margin:-1em 0;padding:1em 0}.QoX8-W_type-list{grid-template-rows:repeat(10,auto);grid-auto-flow:column;gap:.2em;display:grid}.QoX8-W_type-list .QoX8-W_type-tag{border-radius:.2em;padding:.2em .5em}.QoX8-W_description{max-width:300px;padding:.5em}mark{cursor:pointer;border-radius:.2em;color:#000!important}[role=treeitem]{width:auto!important}.QoX8-W_highlight{zIndex:10;border-radius:.2em;padding:.2em 0;position:relative}.QoX8-W_clickable{cursor:pointer}.QoX8-W_feedback-text-wrapper{z-index:0;line-height:var(--text-line-height);position:relative;overflow:visible}.QoX8-W_type-container{justify-content:space-between;align-items:center;column-gap:1em;display:flex}.QoX8-W_add-type{cursor:pointer;justify-content:space-between;align-items:center;padding:0 .5em;display:flex}.QoX8-W_add-type p{margin:0}.QoX8-W_overlay-container{justify-content:center;align-items:center;width:100vw;height:80vh;display:flex}.QoX8-W_overlay-container .QoX8-W_add-type-overlay{background-color:var(--tertiary-background);border-radius:.2em;flex-direction:column;gap:1em;padding:.5em 1em;display:flex}.QoX8-W_overlay-container .QoX8-W_add-type-overlay .QoX8-W_title{justify-content:space-between;align-items:center;display:flex}.QoX8-W_overlay-container .QoX8-W_add-type-overlay h2{margin:0}.QoX8-W_overlay-container .QoX8-W_add-type-overlay .QoX8-W_form-group{gap:3em;display:flex}.QoX8-W_overlay-container .QoX8-W_add-type-overlay .QoX8-W_form-group .QoX8-W_text-inputs{flex-direction:column;gap:1em;display:flex}.QoX8-W_icons{gap:.25em;display:flex}.QoX8-W_node-label{fill:var(--text-emphasized-color);fontSize:10px;pointerEvents:none}.QoX8-W_match-item{color:var(--text-emphasized-color);cursor:pointer;border-radius:.2em;margin-bottom:4px;padding:.1em .2em}.QoX8-W_match-item .QoX8-W_match-label{color:var(--text-color);margin:0}.QoX8-W_match-container{justify-content:space-between;align-items:center;display:flex}.QoX8-W_match-container .QoX8-W_close-btn{cursor:pointer}.QoX8-W_match-link{padding:.5em}
|
|
2
|
+
/*# sourceMappingURL=feedback-components.97518e90.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":"ACAA,sDAIA,sGAOA,kCAGA,yCAIA,8CAIA,yDAIE,2CAGF,6BAGA,uCAGA,wCAGA,4OAYA,mDAIA,iGAME,wEAIF,iDAIA,4DAKA,qCAGA,gFAMA,iCAGA,+GAMA,oGAMA,6GAOE,4BAGF,yGAOE,8KAQE,+HAKA,+DAGA,2FAIE,qIAKN,qCAIA,sFAKA,4HAOE,wEAIF,sFAKE,yDAGF","sources":["feedback-components.97518e90.css","packages/feedback-components/src/feedback/feedback.module.sass"],"sourcesContent":[":root {\n --text-line-height: 3em;\n --main-extra-width: 200px;\n}\n\n.QoX8-W_page-wrapper {\n flex-direction: row;\n align-items: flex-start;\n gap: 2em;\n display: flex;\n position: relative;\n}\n\n.QoX8-W_feedback-container {\n flex: 4;\n}\n\n.QoX8-W_control-panel {\n flex: 1;\n height: auto;\n}\n\n.QoX8-W_control-content {\n position: sticky;\n top: 0;\n}\n\n.QoX8-W_feedback-component {\n width: 800px;\n position: relative;\n}\n\n.QoX8-W_feedback-component > svg {\n width: 800px;\n}\n\ncircle {\n border: 1px solid #000;\n}\n\n.QoX8-W_selected {\n border: 1px solid #fff;\n}\n\n.QoX8-W_feedback-text {\n margin-bottom: 2em;\n}\n\n.QoX8-W_entity-panel {\n background: var(--panel-secondary-background-color);\n width: calc(100% - 2em);\n min-height: 100px;\n max-height: 600px;\n box-shadow: 0 0 0 1px var(--panel-border-color) inset;\n border-radius: 4px;\n flex: 1;\n padding: 1em;\n position: relative;\n}\n\n.QoX8-W_selection-tree {\n margin: -1em 0;\n padding: 1em 0;\n}\n\n.QoX8-W_type-list {\n grid-template-rows: repeat(10, auto);\n grid-auto-flow: column;\n gap: .2em;\n display: grid;\n}\n\n.QoX8-W_type-list .QoX8-W_type-tag {\n border-radius: .2em;\n padding: .2em .5em;\n}\n\n.QoX8-W_description {\n max-width: 300px;\n padding: .5em;\n}\n\nmark {\n cursor: pointer;\n border-radius: .2em;\n color: #000 !important;\n}\n\n[role=\"treeitem\"] {\n width: auto !important;\n}\n\n.QoX8-W_highlight {\n zIndex: 10;\n border-radius: .2em;\n padding: .2em 0;\n position: relative;\n}\n\n.QoX8-W_clickable {\n cursor: pointer;\n}\n\n.QoX8-W_feedback-text-wrapper {\n z-index: 0;\n line-height: var(--text-line-height);\n position: relative;\n overflow: visible;\n}\n\n.QoX8-W_type-container {\n justify-content: space-between;\n align-items: center;\n column-gap: 1em;\n display: flex;\n}\n\n.QoX8-W_add-type {\n cursor: pointer;\n justify-content: space-between;\n align-items: center;\n padding: 0 .5em;\n display: flex;\n}\n\n.QoX8-W_add-type p {\n margin: 0;\n}\n\n.QoX8-W_overlay-container {\n justify-content: center;\n align-items: center;\n width: 100vw;\n height: 80vh;\n display: flex;\n}\n\n.QoX8-W_overlay-container .QoX8-W_add-type-overlay {\n background-color: var(--tertiary-background);\n border-radius: .2em;\n flex-direction: column;\n gap: 1em;\n padding: .5em 1em;\n display: flex;\n}\n\n.QoX8-W_overlay-container .QoX8-W_add-type-overlay .QoX8-W_title {\n justify-content: space-between;\n align-items: center;\n display: flex;\n}\n\n.QoX8-W_overlay-container .QoX8-W_add-type-overlay h2 {\n margin: 0;\n}\n\n.QoX8-W_overlay-container .QoX8-W_add-type-overlay .QoX8-W_form-group {\n gap: 3em;\n display: flex;\n}\n\n.QoX8-W_overlay-container .QoX8-W_add-type-overlay .QoX8-W_form-group .QoX8-W_text-inputs {\n flex-direction: column;\n gap: 1em;\n display: flex;\n}\n\n.QoX8-W_icons {\n gap: .25em;\n display: flex;\n}\n\n.QoX8-W_node-label {\n fill: var(--text-emphasized-color);\n fontSize: 10px;\n pointerEvents: none;\n}\n\n.QoX8-W_match-item {\n color: var(--text-emphasized-color);\n cursor: pointer;\n border-radius: .2em;\n margin-bottom: 4px;\n padding: .1em .2em;\n}\n\n.QoX8-W_match-item .QoX8-W_match-label {\n color: var(--text-color);\n margin: 0;\n}\n\n.QoX8-W_match-container {\n justify-content: space-between;\n align-items: center;\n display: flex;\n}\n\n.QoX8-W_match-container .QoX8-W_close-btn {\n cursor: pointer;\n}\n\n.QoX8-W_match-link {\n padding: .5em;\n}\n/*# sourceMappingURL=feedback-components.97518e90.css.map */\n",":root\n --text-line-height: 3em\n --main-extra-width: 200px\n\n.page-wrapper\n display: flex\n flex-direction: row\n position: relative\n gap: 2em\n align-items: flex-start // makes control-content lose stick\n\n.feedback-container\n flex: 4\n\n.control-panel\n flex: 1\n height: auto\n\n.control-content\n position: sticky\n top: 0\n\n.feedback-component\n position: relative\n width: 800px\n\n & > svg\n width: 800px\n\ncircle\n border: 1px solid black\n\n.selected\n border: 1px solid white\n \n.feedback-text\n margin-bottom: 2em\n\n.entity-panel\n position: relative\n max-height: 600px\n width: calc(100% - 2em)\n flex: 1\n min-height: 100px\n padding: 1em\n background: var(--panel-secondary-background-color)\n border-radius: 4px\n // Inset box shadow\n box-shadow: 0 0 0 1px var(--panel-border-color) inset\n\n.selection-tree\n margin: -1em 0\n padding: 1em 0\n \n.type-list\n display: grid\n grid-auto-flow: column\n grid-template-rows: repeat(10, auto)\n gap: 0.2em\n\n .type-tag\n padding: .2em .5em\n border-radius: .2em\n\n.description\n max-width: 300px\n padding: .5em\n\nmark\n border-radius: .2em\n cursor: pointer\n color: black !important\n\n[role=\"treeitem\"]\n width: auto !important\n\n.highlight\n padding: .2em 0\n border-radius: .2em\n position: relative\n zIndex: 10\n\n.clickable\n cursor: pointer\n\n.feedback-text-wrapper \n position: relative\n z-index: 0\n overflow: visible\n line-height: var(--text-line-height)\n\n.type-container\n display: flex\n justify-content: space-between\n align-items: center\n column-gap: 1em\n\n.add-type\n cursor: pointer\n display: flex\n justify-content: space-between\n padding: 0 .5em\n align-items: center\n\n p\n margin: 0\n\n.overlay-container\n height: 80vh\n width: 100vw\n display: flex\n justify-content: center\n align-items: center\n\n .add-type-overlay\n background-color: var(--tertiary-background)\n padding: .5em 1em\n display: flex\n flex-direction: column\n gap: 1em\n border-radius: .2em\n\n .title\n display: flex\n justify-content: space-between\n align-items: center\n\n h2\n margin: 0\n\n .form-group\n display: flex\n gap: 3em\n\n .text-inputs\n display: flex\n flex-direction: column\n gap: 1em\n\n.icons\n display: flex\n gap: .25em\n\n.node-label\n fill: var(--text-emphasized-color)\n fontSize: 10px\n pointerEvents: none\n\n.match-item\n color: var(--text-emphasized-color)\n padding: .1em .2em\n border-radius: .2em\n margin-bottom: 4px\n cursor: pointer\n \n .match-label\n margin: 0\n color: var(--text-color)\n\n.match-container\n display: flex\n justify-content: space-between\n align-items: center\n\n .close-btn\n cursor: pointer\n\n.match-link\n padding: .5em"],"names":[],"version":3,"file":"feedback-components.97518e90.css.map","sourceRoot":"../../../../"}
|