@macrostrat/feedback-components 1.1.10 → 2.0.1
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 +10 -0
- package/dist/extractions/index.cjs +201 -0
- package/dist/extractions/index.cjs.map +1 -0
- package/dist/extractions/index.d.ts +30 -0
- package/dist/extractions/index.js +198 -0
- package/dist/extractions/index.js.map +1 -0
- package/dist/extractions/main.module.sass.cjs +12 -0
- package/dist/extractions/main.module.sass.cjs.map +1 -0
- package/dist/extractions/main.module.sass.js +12 -0
- package/dist/extractions/main.module.sass.js.map +1 -0
- package/dist/extractions/types.d.ts +32 -0
- package/dist/feedback/edit-state.cjs +384 -0
- package/dist/feedback/edit-state.cjs.map +1 -0
- package/dist/feedback/edit-state.d.ts +127 -0
- package/dist/feedback/edit-state.js +382 -0
- package/dist/feedback/edit-state.js.map +1 -0
- package/dist/feedback/feedback.module.sass.cjs +47 -0
- package/dist/feedback/feedback.module.sass.cjs.map +1 -0
- package/dist/feedback/feedback.module.sass.js +47 -0
- package/dist/feedback/feedback.module.sass.js.map +1 -0
- package/dist/feedback/graph.cjs +126 -0
- package/dist/feedback/graph.cjs.map +1 -0
- package/dist/feedback/graph.d.ts +9 -0
- package/dist/feedback/graph.js +124 -0
- package/dist/feedback/graph.js.map +1 -0
- package/dist/feedback/index.cjs +350 -0
- package/dist/feedback/index.cjs.map +1 -0
- package/dist/feedback/index.d.ts +15 -0
- package/dist/feedback/index.js +348 -0
- package/dist/feedback/index.js.map +1 -0
- package/dist/feedback/matches.cjs +246 -0
- package/dist/feedback/matches.cjs.map +1 -0
- package/dist/feedback/matches.d.ts +17 -0
- package/dist/feedback/matches.js +244 -0
- package/dist/feedback/matches.js.map +1 -0
- package/dist/feedback/node.cjs +64 -0
- package/dist/feedback/node.cjs.map +1 -0
- package/dist/feedback/node.d.ts +5 -0
- package/dist/feedback/node.js +63 -0
- package/dist/feedback/node.js.map +1 -0
- package/dist/feedback/text-visualizer.cjs +290 -0
- package/dist/feedback/text-visualizer.cjs.map +1 -0
- package/dist/feedback/text-visualizer.d.ts +36 -0
- package/dist/feedback/text-visualizer.js +288 -0
- package/dist/feedback/text-visualizer.js.map +1 -0
- package/dist/feedback/type-selector/index.cjs +50 -0
- package/dist/feedback/type-selector/index.cjs.map +1 -0
- package/dist/feedback/type-selector/index.d.ts +20 -0
- package/dist/feedback/type-selector/index.js +47 -0
- package/dist/feedback/type-selector/index.js.map +1 -0
- package/dist/feedback/type-selector/main.module.sass.cjs +13 -0
- package/dist/feedback/type-selector/main.module.sass.cjs.map +1 -0
- package/dist/feedback/type-selector/main.module.sass.js +13 -0
- package/dist/feedback/type-selector/main.module.sass.js.map +1 -0
- package/dist/feedback/typelist.cjs +295 -0
- package/dist/feedback/typelist.cjs.map +1 -0
- package/dist/feedback/typelist.d.ts +8 -0
- package/dist/feedback/typelist.js +293 -0
- package/dist/feedback/typelist.js.map +1 -0
- package/dist/feedback/types.d.ts +64 -0
- package/dist/feedback-components.css +343 -0
- package/dist/index.cjs +14 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/package.json +48 -41
- package/src/extractions/index.ts +2 -2
- package/src/feedback/text-visualizer.ts +0 -1
- package/src/feedback/types.ts +2 -2
- package/dist/esm/feedback-components.2364179b.js +0 -287
- package/dist/esm/feedback-components.2364179b.js.map +0 -1
- package/dist/esm/feedback-components.6d32ee91.js +0 -16
- package/dist/esm/feedback-components.6d32ee91.js.map +0 -1
- package/dist/esm/feedback-components.7dd42a9f.js +0 -248
- package/dist/esm/feedback-components.7dd42a9f.js.map +0 -1
- package/dist/esm/feedback-components.7f72e5e9.js +0 -64
- package/dist/esm/feedback-components.7f72e5e9.js.map +0 -1
- package/dist/esm/feedback-components.ad9f284e.js +0 -63
- package/dist/esm/feedback-components.ad9f284e.js.map +0 -1
- package/dist/esm/feedback-components.ba79c0ef.js +0 -204
- package/dist/esm/feedback-components.ba79c0ef.js.map +0 -1
- package/dist/esm/feedback-components.bf93773c.css +0 -17
- package/dist/esm/feedback-components.bf93773c.css.map +0 -1
- package/dist/esm/feedback-components.c6e2c296.js +0 -148
- package/dist/esm/feedback-components.c6e2c296.js.map +0 -1
- package/dist/esm/feedback-components.ca78c2d4.js +0 -287
- package/dist/esm/feedback-components.ca78c2d4.js.map +0 -1
- package/dist/esm/feedback-components.d769ffa5.css +0 -205
- package/dist/esm/feedback-components.d769ffa5.css.map +0 -1
- package/dist/esm/feedback-components.e273ed5b.css +0 -14
- package/dist/esm/feedback-components.e273ed5b.css.map +0 -1
- package/dist/esm/feedback-components.e702eece.js +0 -97
- package/dist/esm/feedback-components.e702eece.js.map +0 -1
- package/dist/esm/feedback-components.edc606bb.js +0 -360
- package/dist/esm/feedback-components.edc606bb.js.map +0 -1
- package/dist/esm/feedback-components.f9850d85.js +0 -19
- package/dist/esm/feedback-components.f9850d85.js.map +0 -1
- package/dist/esm/feedback-components.fa847634.js +0 -453
- package/dist/esm/feedback-components.fa847634.js.map +0 -1
- package/dist/esm/index.d.ts +0 -96
- package/dist/esm/index.d.ts.map +0 -1
- package/dist/esm/index.js +0 -9
- package/dist/esm/index.js.map +0 -1
- package/dist/node/feedback-components.1bd49bf0.js +0 -2
- package/dist/node/feedback-components.1bd49bf0.js.map +0 -1
- package/dist/node/feedback-components.2f391fa4.js +0 -2
- package/dist/node/feedback-components.2f391fa4.js.map +0 -1
- package/dist/node/feedback-components.6a4a1290.js +0 -2
- package/dist/node/feedback-components.6a4a1290.js.map +0 -1
- package/dist/node/feedback-components.70780da4.js +0 -2
- package/dist/node/feedback-components.70780da4.js.map +0 -1
- package/dist/node/feedback-components.794f429b.js +0 -2
- package/dist/node/feedback-components.794f429b.js.map +0 -1
- package/dist/node/feedback-components.83c21466.css +0 -2
- package/dist/node/feedback-components.83c21466.css.map +0 -1
- package/dist/node/feedback-components.97518e90.css +0 -2
- package/dist/node/feedback-components.97518e90.css.map +0 -1
- package/dist/node/feedback-components.9eb1d41a.css +0 -2
- package/dist/node/feedback-components.9eb1d41a.css.map +0 -1
- package/dist/node/feedback-components.acac789b.js +0 -2
- package/dist/node/feedback-components.acac789b.js.map +0 -1
- package/dist/node/feedback-components.c84ff10e.js +0 -2
- package/dist/node/feedback-components.c84ff10e.js.map +0 -1
- package/dist/node/feedback-components.db72d0e1.js +0 -2
- package/dist/node/feedback-components.db72d0e1.js.map +0 -1
- package/dist/node/feedback-components.dc76072c.js +0 -2
- package/dist/node/feedback-components.dc76072c.js.map +0 -1
- package/dist/node/feedback-components.ddd11fe8.js +0 -2
- package/dist/node/feedback-components.ddd11fe8.js.map +0 -1
- package/dist/node/feedback-components.e59a061f.js +0 -2
- package/dist/node/feedback-components.e59a061f.js.map +0 -1
- package/dist/node/feedback-components.feab0bd0.js +0 -2
- package/dist/node/feedback-components.feab0bd0.js.map +0 -1
- package/dist/node/index.js +0 -2
- package/dist/node/index.js.map +0 -1
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import {EntityTag as $03d8811e9c9b360d$export$117e56c71b172cde} from "./feedback-components.ba79c0ef.js";
|
|
2
|
-
import {useTreeDispatch as $b79bf29960412ca7$export$e1068f2d1c68f87e} from "./feedback-components.fa847634.js";
|
|
3
|
-
import "./feedback-components.d769ffa5.css";
|
|
4
|
-
import $gIldz$feedbackcomponentse702eecejs from "./feedback-components.e702eece.js";
|
|
5
|
-
import $gIldz$macrostrathyper from "@macrostrat/hyper";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
function $parcel$interopDefault(a) {
|
|
9
|
-
return a && a.__esModule ? a.default : a;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const $b6b9741bf83336eb$var$h = (0, $gIldz$macrostrathyper).styled((0, ($parcel$interopDefault($gIldz$feedbackcomponentse702eecejs))));
|
|
16
|
-
function $b6b9741bf83336eb$var$isSelected(searchNode, treeNode) {
|
|
17
|
-
return searchNode.id == treeNode.id;
|
|
18
|
-
// We could also select children of the search node here if we wanted to
|
|
19
|
-
}
|
|
20
|
-
function $b6b9741bf83336eb$var$isNodeHighlighted(node, tree) {
|
|
21
|
-
// We treat no selection as all nodes being active. We may add some nuance later
|
|
22
|
-
if (tree.selectedNodes.length == 0) return true;
|
|
23
|
-
for (const selectedNode of tree.selectedNodes){
|
|
24
|
-
if ($b6b9741bf83336eb$var$isSelected(node.data, selectedNode.data)) return true;
|
|
25
|
-
}
|
|
26
|
-
// Check if the parent node is highlighted
|
|
27
|
-
if (node.parent != null && $b6b9741bf83336eb$var$isNodeHighlighted(node.parent, tree)) return true;
|
|
28
|
-
return false;
|
|
29
|
-
}
|
|
30
|
-
function $b6b9741bf83336eb$var$isNodeActive(node, tree) {
|
|
31
|
-
for (const selectedNode of tree.selectedNodes){
|
|
32
|
-
if ($b6b9741bf83336eb$var$isSelected(node.data, selectedNode.data)) return true;
|
|
33
|
-
}
|
|
34
|
-
return false;
|
|
35
|
-
}
|
|
36
|
-
function $b6b9741bf83336eb$var$Node({ node: node, style: style, dragHandle: dragHandle, tree: tree, matchComponent: matchComponent, viewOnly: viewOnly }) {
|
|
37
|
-
let highlighted = $b6b9741bf83336eb$var$isNodeHighlighted(node, tree);
|
|
38
|
-
let active = $b6b9741bf83336eb$var$isNodeActive(node, tree);
|
|
39
|
-
console.log("viewOnly", viewOnly);
|
|
40
|
-
const dispatch = (0, $b79bf29960412ca7$export$e1068f2d1c68f87e)();
|
|
41
|
-
if (!node.data?.type) node.data.type = {
|
|
42
|
-
name: "lith",
|
|
43
|
-
color: "rgb(107, 255, 91)"
|
|
44
|
-
};
|
|
45
|
-
return $b6b9741bf83336eb$var$h("div.node" + (!viewOnly ? ".clickable" : ""), {
|
|
46
|
-
style: style,
|
|
47
|
-
ref: dragHandle
|
|
48
|
-
}, $b6b9741bf83336eb$var$h((0, $03d8811e9c9b360d$export$117e56c71b172cde), {
|
|
49
|
-
data: node.data,
|
|
50
|
-
active: viewOnly ? false : active,
|
|
51
|
-
highlighted: viewOnly ? true : highlighted,
|
|
52
|
-
matchComponent: matchComponent,
|
|
53
|
-
onClickType () {
|
|
54
|
-
dispatch({
|
|
55
|
-
type: "toggle-entity-type-selector"
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
}));
|
|
59
|
-
}
|
|
60
|
-
var $b6b9741bf83336eb$export$2e2bcd8739ae039 = $b6b9741bf83336eb$var$Node;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
export {$b6b9741bf83336eb$export$2e2bcd8739ae039 as default};
|
|
64
|
-
//# sourceMappingURL=feedback-components.7f72e5e9.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"mappings":";;;;;;;;;;;;;;AAOA,MAAM,0BAAI,CAAA,GAAA,sBAAI,EAAE,MAAM,CAAC,CAAA,GAAA,8EAAK;AAE5B,SAAS,iCAAW,UAAoB,EAAE,QAAkB;IAC1D,OAAO,WAAW,EAAE,IAAI,SAAS,EAAE;AACnC,wEAAwE;AAC1E;AAEA,SAAS,wCAAkB,IAAuB,EAAE,IAAuB;IACzE,gFAAgF;IAChF,IAAI,KAAK,aAAa,CAAC,MAAM,IAAI,GAC/B,OAAO;IAGT,KAAK,MAAM,gBAAgB,KAAK,aAAa,CAAE;QAC7C,IAAI,iCAAW,KAAK,IAAI,EAAE,aAAa,IAAI,GACzC,OAAO;IAEX;IAEA,0CAA0C;IAC1C,IAAI,KAAK,MAAM,IAAI,QAAQ,wCAAkB,KAAK,MAAM,EAAE,OACxD,OAAO;IAGT,OAAO;AACT;AAEA,SAAS,mCAAa,IAAuB,EAAE,IAAuB;IACpE,KAAK,MAAM,gBAAgB,KAAK,aAAa,CAAE;QAC7C,IAAI,iCAAW,KAAK,IAAI,EAAE,aAAa,IAAI,GACzC,OAAO;IAEX;IACA,OAAO;AACT;AAEA,SAAS,2BAAK,QACZ,IAAI,SACJ,KAAK,cACL,UAAU,QACV,IAAI,kBACJ,cAAc,YACd,QAAQ,EACJ;IACJ,IAAI,cAAuB,wCAAkB,MAAM;IACnD,IAAI,SAAkB,mCAAa,MAAM;IAEzC,QAAQ,GAAG,CAAC,YAAY;IAExB,MAAM,WAAW,CAAA,GAAA,yCAAc;IAE/B,IAAI,CAAC,KAAK,IAAI,EAAE,MACd,KAAK,IAAI,CAAC,IAAI,GAAG;QAAE,MAAM;QAAQ,OAAO;IAAoB;IAG9D,OAAO,wBACL,aAAc,CAAA,CAAC,WAAW,eAAe,EAAC,GAC1C;eAAE;QAAO,KAAK;IAAW,GACzB,wBAAE,CAAA,GAAA,yCAAQ,GAAG;QACX,MAAM,KAAK,IAAI;QACf,QAAQ,WAAW,QAAQ;QAC3B,aAAa,WAAW,OAAO;wBAC/B;QACA;YACE,SAAS;gBAAE,MAAM;YAA8B;QACjD;IACF;AAEJ;IAEA,2CAAe","sources":["packages/feedback-components/src/feedback/node.ts"],"sourcesContent":["import { NodeApi, TreeApi } from \"react-arborist\";\nimport { TreeData } from \"./types\";\nimport { EntityTag } from \"../extractions\";\nimport { useTreeDispatch } from \"./edit-state\";\nimport styles from \"./feedback.module.sass\";\nimport hyper from \"@macrostrat/hyper\";\n\nconst h = hyper.styled(styles);\n\nfunction isSelected(searchNode: TreeData, treeNode: TreeData) {\n return searchNode.id == treeNode.id;\n // We could also select children of the search node here if we wanted to\n}\n\nfunction isNodeHighlighted(node: NodeApi<TreeData>, tree: TreeApi<TreeData>) {\n // We treat no selection as all nodes being active. We may add some nuance later\n if (tree.selectedNodes.length == 0) {\n return true;\n }\n\n for (const selectedNode of tree.selectedNodes) {\n if (isSelected(node.data, selectedNode.data)) {\n return true;\n }\n }\n\n // Check if the parent node is highlighted\n if (node.parent != null && isNodeHighlighted(node.parent, tree)) {\n return true;\n }\n\n return false;\n}\n\nfunction isNodeActive(node: NodeApi<TreeData>, tree: TreeApi<TreeData>) {\n for (const selectedNode of tree.selectedNodes) {\n if (isSelected(node.data, selectedNode.data)) {\n return true;\n }\n }\n return false;\n}\n\nfunction Node({\n node,\n style,\n dragHandle,\n tree,\n matchComponent,\n viewOnly,\n}: any) {\n let highlighted: boolean = isNodeHighlighted(node, tree);\n let active: boolean = isNodeActive(node, tree);\n\n console.log(\"viewOnly\", viewOnly);\n\n const dispatch = useTreeDispatch();\n\n if (!node.data?.type) {\n node.data.type = { name: \"lith\", color: \"rgb(107, 255, 91)\" };\n }\n\n return h(\n \"div.node\" + (!viewOnly ? \".clickable\" : \"\"),\n { style, ref: dragHandle },\n h(EntityTag, {\n data: node.data,\n active: viewOnly ? false : active,\n highlighted: viewOnly ? true : highlighted,\n matchComponent,\n onClickType() {\n dispatch({ type: \"toggle-entity-type-selector\" });\n },\n }),\n );\n}\n\nexport default Node;\n"],"names":[],"version":3,"file":"feedback-components.7f72e5e9.js.map"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import "./feedback-components.bf93773c.css";
|
|
2
|
-
import $N2zU5$feedbackcomponentsf9850d85js from "./feedback-components.f9850d85.js";
|
|
3
|
-
import $N2zU5$macrostrathyper from "@macrostrat/hyper";
|
|
4
|
-
import $N2zU5$classnames from "classnames";
|
|
5
|
-
import {Omnibar as $N2zU5$Omnibar} from "@blueprintjs/select";
|
|
6
|
-
import "@blueprintjs/select/lib/css/blueprint-select.css";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
function $parcel$interopDefault(a) {
|
|
10
|
-
return a && a.__esModule ? a.default : a;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Entity type selector
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const $fda9ef5406c1cfb4$var$h = (0, $N2zU5$macrostrathyper).styled((0, ($parcel$interopDefault($N2zU5$feedbackcomponentsf9850d85js))));
|
|
20
|
-
const $fda9ef5406c1cfb4$var$TagListItem = (props)=>{
|
|
21
|
-
/** Render a tag for the omnibox list */ let { active: active, selected: selected, className: className, onSelect: onSelect, item: item, children: children } = props;
|
|
22
|
-
className = (0, $N2zU5$classnames)({
|
|
23
|
-
active: active,
|
|
24
|
-
selected: selected
|
|
25
|
-
}, className);
|
|
26
|
-
const onClick = ()=>onSelect(item);
|
|
27
|
-
return $fda9ef5406c1cfb4$var$h("div.item-container", {
|
|
28
|
-
key: item.id,
|
|
29
|
-
className: className,
|
|
30
|
-
onClick: onClick
|
|
31
|
-
}, [
|
|
32
|
-
$fda9ef5406c1cfb4$var$h("div.swatch", {
|
|
33
|
-
style: {
|
|
34
|
-
backgroundColor: item.color
|
|
35
|
-
}
|
|
36
|
-
}),
|
|
37
|
-
$fda9ef5406c1cfb4$var$h("div.item", {}, item.name)
|
|
38
|
-
]);
|
|
39
|
-
};
|
|
40
|
-
function $fda9ef5406c1cfb4$export$d8660660a589068c(props) {
|
|
41
|
-
/** A general omnibox for annotation types */ const { onSelectItem: onSelectItem, items: items, isOpen: isOpen, onClose: onClose, onQueryChange: onQueryChange } = props;
|
|
42
|
-
return $fda9ef5406c1cfb4$var$h((0, $N2zU5$Omnibar), {
|
|
43
|
-
onItemSelect: onSelectItem,
|
|
44
|
-
items: items,
|
|
45
|
-
onQueryChange: onQueryChange,
|
|
46
|
-
resetOnSelect: false,
|
|
47
|
-
isOpen: isOpen,
|
|
48
|
-
onClose: onClose,
|
|
49
|
-
itemRenderer (item, { handleClick: handleClick, modifiers: modifiers }) {
|
|
50
|
-
return $fda9ef5406c1cfb4$var$h($fda9ef5406c1cfb4$var$TagListItem, {
|
|
51
|
-
key: item.id,
|
|
52
|
-
item: item,
|
|
53
|
-
onSelect: handleClick,
|
|
54
|
-
active: modifiers.active,
|
|
55
|
-
selected: modifiers.active
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
export {$fda9ef5406c1cfb4$export$d8660660a589068c as OmniboxSelector};
|
|
63
|
-
//# sourceMappingURL=feedback-components.ad9f284e.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"mappings":";;;;;;;;;;;AAAA;;CAEC;;;;;AAUD,MAAM,0BAAI,CAAA,GAAA,sBAAI,EAAE,MAAM,CAAC,CAAA,GAAA,8EAAK;AAa5B,MAAM,oCAAoD,CAAC;IACzD,sCAAsC,GACtC,IAAI,UAAE,MAAM,YAAE,QAAQ,aAAE,SAAS,YAAE,QAAQ,QAAE,IAAI,YAAE,QAAQ,EAAE,GAAG;IAChE,YAAY,CAAA,GAAA,iBAAS,EAAE;gBAAE;kBAAQ;IAAS,GAAG;IAC7C,MAAM,UAAU,IAAM,SAAS;IAE/B,OAAO,wBACL,sBACA;QACE,KAAK,KAAK,EAAE;mBACZ;iBACA;IACF,GACA;QACE,wBAAE,cAAc;YAAE,OAAO;gBAAE,iBAAiB,KAAK,KAAK;YAAC;QAAE;QACzD,wBAAE,YAAY,CAAC,GAAG,KAAK,IAAI;KAC5B;AAEL;AAYO,SAAS,0CAAmB,KAAsB;IACvD,2CAA2C,GAC3C,MAAM,gBAAE,YAAY,SAAE,KAAK,UAAE,MAAM,WAAE,OAAO,iBAAE,aAAa,EAAE,GAAG;IAEhE,OAAO,wBAAE,CAAA,GAAA,cAAM,GAAG;QAChB,cAAc;eACd;uBACA;QACA,eAAe;gBACf;iBACA;QACA,cAAa,IAAO,EAAE,eAAE,WAAW,aAAE,SAAS,EAAE;YAC9C,OAAO,wBAAE,mCAAa;gBACpB,KAAK,KAAK,EAAE;sBACZ;gBACA,UAAU;gBACV,QAAQ,UAAU,MAAM;gBACxB,UAAU,UAAU,MAAM;YAC5B;QACF;IACF;AACF","sources":["packages/feedback-components/src/feedback/type-selector/index.ts"],"sourcesContent":["/**\n * Entity type selector\n */\n\nimport styles from \"./main.module.sass\";\nimport hyper from \"@macrostrat/hyper\";\n\nimport classNames from \"classnames\";\nimport React from \"react\";\nimport { Omnibar, OmnibarProps } from \"@blueprintjs/select\";\nimport \"@blueprintjs/select/lib/css/blueprint-select.css\";\n\nconst h = hyper.styled(styles);\n\ninterface TagItemProps<T> {\n selected: boolean;\n active: boolean;\n className?: string;\n item: T;\n\n onSelect(t: T): void;\n\n children?: React.ReactElement;\n}\n\nconst TagListItem: React.ComponentType<TagItemProps<T>> = (props) => {\n /** Render a tag for the omnibox list */\n let { active, selected, className, onSelect, item, children } = props;\n className = classNames({ active, selected }, className);\n const onClick = () => onSelect(item);\n\n return h(\n \"div.item-container\",\n {\n key: item.id,\n className,\n onClick,\n },\n [\n h(\"div.swatch\", { style: { backgroundColor: item.color } }),\n h(\"div.item\", {}, item.name),\n ],\n );\n};\n\ntype BoxLifecycleProps<T> = Pick<OmnibarProps<T>, \"onClose\" | \"isOpen\">;\n\ninterface OmniboxProps<T> extends BoxLifecycleProps<T> {\n items: T[];\n selectedItem: T;\n onSelectItem: (t: T) => void;\n onQueryChange: (query: string) => void;\n listItemComponent?: React.ComponentType<TagItemProps<T>>;\n}\n\nexport function OmniboxSelector<T>(props: OmniboxProps<T>) {\n /** A general omnibox for annotation types */\n const { onSelectItem, items, isOpen, onClose, onQueryChange } = props;\n\n return h(Omnibar, {\n onItemSelect: onSelectItem,\n items,\n onQueryChange,\n resetOnSelect: false,\n isOpen,\n onClose,\n itemRenderer(item: T, { handleClick, modifiers }) {\n return h(TagListItem, {\n key: item.id,\n item,\n onSelect: handleClick,\n active: modifiers.active,\n selected: modifiers.active,\n });\n },\n });\n}\n"],"names":[],"version":3,"file":"feedback-components.ad9f284e.js.map"}
|
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
import "./feedback-components.e273ed5b.css";
|
|
2
|
-
import $9y0hV$feedbackcomponents6d32ee91js from "./feedback-components.6d32ee91.js";
|
|
3
|
-
import $9y0hV$classnames from "classnames";
|
|
4
|
-
import {Tag as $9y0hV$Tag} from "@blueprintjs/core";
|
|
5
|
-
import {asChromaColor as $9y0hV$asChromaColor} from "@macrostrat/color-utils";
|
|
6
|
-
import $9y0hV$macrostrathyper from "@macrostrat/hyper";
|
|
7
|
-
import {useDarkMode as $9y0hV$useDarkMode} from "@macrostrat/ui-components";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
function $parcel$interopDefault(a) {
|
|
11
|
-
return a && a.__esModule ? a.default : a;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const $03d8811e9c9b360d$var$h = (0, $9y0hV$macrostrathyper).styled((0, ($parcel$interopDefault($9y0hV$feedbackcomponents6d32ee91js))));
|
|
20
|
-
function $03d8811e9c9b360d$export$c4b91360064ad200(entities, parent) {
|
|
21
|
-
let highlights = [];
|
|
22
|
-
let parents = [];
|
|
23
|
-
if (parent != null) parents = [
|
|
24
|
-
parent.id,
|
|
25
|
-
...parent.parents ?? []
|
|
26
|
-
];
|
|
27
|
-
for (const entity of entities){
|
|
28
|
-
highlights.push({
|
|
29
|
-
start: entity.indices[0],
|
|
30
|
-
end: entity.indices[1],
|
|
31
|
-
text: entity.name,
|
|
32
|
-
backgroundColor: entity.type?.color,
|
|
33
|
-
tag: entity.type?.name ?? "lith",
|
|
34
|
-
id: entity.id,
|
|
35
|
-
parents: parents,
|
|
36
|
-
match: entity.match
|
|
37
|
-
});
|
|
38
|
-
highlights.push(...$03d8811e9c9b360d$export$c4b91360064ad200(entity.children ?? [], entity));
|
|
39
|
-
}
|
|
40
|
-
return highlights;
|
|
41
|
-
}
|
|
42
|
-
function $03d8811e9c9b360d$export$d60b563f571177d(extractionData, models, entityTypes) {
|
|
43
|
-
return {
|
|
44
|
-
...extractionData,
|
|
45
|
-
model: models.get(extractionData.model_id),
|
|
46
|
-
entities: extractionData.entities?.map((d)=>$03d8811e9c9b360d$var$enhanceEntity(d, entityTypes))
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
function $03d8811e9c9b360d$export$35baa338324d8550(baseColor, options = {}) {
|
|
50
|
-
const _baseColor = (0, $9y0hV$asChromaColor)(baseColor ?? "#fff");
|
|
51
|
-
const { highlighted: highlighted = true, inDarkMode: inDarkMode = (0, $9y0hV$useDarkMode)().isEnabled, active: active = false } = options;
|
|
52
|
-
let mixAmount = highlighted ? 0.8 : 0.5;
|
|
53
|
-
let backgroundAlpha = highlighted ? 0.8 : 0.2;
|
|
54
|
-
if (active) {
|
|
55
|
-
mixAmount = 1;
|
|
56
|
-
backgroundAlpha = 1;
|
|
57
|
-
}
|
|
58
|
-
const mixTarget = "black";
|
|
59
|
-
const color = active ? "#000" : _baseColor.mix(mixTarget, mixAmount).hex();
|
|
60
|
-
const borderColor = highlighted ? _baseColor.mix(mixTarget, mixAmount / 1.1).hex() : "transparent";
|
|
61
|
-
let backgroundColor = active ? _baseColor.alpha(backgroundAlpha).hex() : $03d8811e9c9b360d$var$normalizeColor(_baseColor.alpha(backgroundAlpha).hex());
|
|
62
|
-
// handle white backgrounds in light mode
|
|
63
|
-
if (!inDarkMode && backgroundColor === "#ffffff") backgroundColor = "#f0f0f0";
|
|
64
|
-
return {
|
|
65
|
-
color: color,
|
|
66
|
-
backgroundColor: backgroundColor,
|
|
67
|
-
boxSizing: "border-box",
|
|
68
|
-
borderStyle: "solid",
|
|
69
|
-
borderColor: borderColor,
|
|
70
|
-
borderWidth: "1.5px",
|
|
71
|
-
fontWeight: active ? "bold" : "normal",
|
|
72
|
-
fontSize: "0.9em"
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
function $03d8811e9c9b360d$var$enhanceEntity(entity, entityTypes) {
|
|
76
|
-
return {
|
|
77
|
-
...entity,
|
|
78
|
-
type: $03d8811e9c9b360d$var$addColor(entityTypes.get(entity.type), entity.match != null),
|
|
79
|
-
children: entity.children?.map((d)=>$03d8811e9c9b360d$var$enhanceEntity(d, entityTypes))
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
function $03d8811e9c9b360d$var$addColor(entityType, match = false) {
|
|
83
|
-
const color = (0, $9y0hV$asChromaColor)(entityType.color ?? "#fff").brighten(match ? 1 : 2);
|
|
84
|
-
return {
|
|
85
|
-
...entityType,
|
|
86
|
-
color: color.css()
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
function $03d8811e9c9b360d$export$2b07158757c249e0({ data: data, entityTypes: entityTypes, matchComponent: matchComponent }) {
|
|
90
|
-
const highlights = $03d8811e9c9b360d$export$c4b91360064ad200(data.entities, null);
|
|
91
|
-
return $03d8811e9c9b360d$var$h("div", [
|
|
92
|
-
$03d8811e9c9b360d$var$h("p", $03d8811e9c9b360d$var$h($03d8811e9c9b360d$var$HighlightedText, {
|
|
93
|
-
text: data.paragraph_text,
|
|
94
|
-
highlights: highlights
|
|
95
|
-
})),
|
|
96
|
-
$03d8811e9c9b360d$var$h($03d8811e9c9b360d$export$4eb2a0ce903ce967, {
|
|
97
|
-
data: data.model
|
|
98
|
-
}),
|
|
99
|
-
$03d8811e9c9b360d$var$h("ul.entities", data.entities.map((d)=>$03d8811e9c9b360d$var$h($03d8811e9c9b360d$var$ExtractionInfo, {
|
|
100
|
-
data: d,
|
|
101
|
-
matchComponent: matchComponent
|
|
102
|
-
})))
|
|
103
|
-
]);
|
|
104
|
-
}
|
|
105
|
-
function $03d8811e9c9b360d$export$4eb2a0ce903ce967({ data: data }) {
|
|
106
|
-
if (!data) return null;
|
|
107
|
-
return $03d8811e9c9b360d$var$h("p.model-name", [
|
|
108
|
-
"Model: ",
|
|
109
|
-
$03d8811e9c9b360d$var$h("code.bp5-code", data.name)
|
|
110
|
-
]);
|
|
111
|
-
}
|
|
112
|
-
function $03d8811e9c9b360d$export$117e56c71b172cde({ data: data, highlighted: highlighted = true, active: active = false, onClickType: onClickType, matchComponent: matchComponent = null }) {
|
|
113
|
-
const { name: name, type: type, match: match } = data;
|
|
114
|
-
const className = (0, $9y0hV$classnames)({
|
|
115
|
-
matched: match != null,
|
|
116
|
-
type: data.type?.name ?? "lith"
|
|
117
|
-
}, "entity");
|
|
118
|
-
const style = $03d8811e9c9b360d$export$35baa338324d8550(type?.color, {
|
|
119
|
-
highlighted: highlighted,
|
|
120
|
-
active: active
|
|
121
|
-
});
|
|
122
|
-
let _matchLink = null;
|
|
123
|
-
if (match != null && matchComponent != null) _matchLink = $03d8811e9c9b360d$var$h(matchComponent, {
|
|
124
|
-
data: match
|
|
125
|
-
});
|
|
126
|
-
return $03d8811e9c9b360d$var$h((0, $9y0hV$Tag), {
|
|
127
|
-
style: style,
|
|
128
|
-
className: className
|
|
129
|
-
}, [
|
|
130
|
-
$03d8811e9c9b360d$var$h("span.entity-name", name),
|
|
131
|
-
" ",
|
|
132
|
-
$03d8811e9c9b360d$var$h("code.entity-type.bp5-code", {
|
|
133
|
-
onClick (evt) {
|
|
134
|
-
if (active && onClickType != null) {
|
|
135
|
-
onClickType(type);
|
|
136
|
-
evt.stopPropagation();
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}, [
|
|
140
|
-
type?.name,
|
|
141
|
-
_matchLink
|
|
142
|
-
])
|
|
143
|
-
]);
|
|
144
|
-
}
|
|
145
|
-
function $03d8811e9c9b360d$var$ExtractionInfo({ data: data, matchComponent: matchComponent = null }) {
|
|
146
|
-
const children = data.children ?? [];
|
|
147
|
-
return $03d8811e9c9b360d$var$h("li.entity-row", [
|
|
148
|
-
$03d8811e9c9b360d$var$h($03d8811e9c9b360d$export$117e56c71b172cde, {
|
|
149
|
-
data: data,
|
|
150
|
-
matchComponent: matchComponent
|
|
151
|
-
}),
|
|
152
|
-
$03d8811e9c9b360d$var$h.if(children.length > 0)([
|
|
153
|
-
$03d8811e9c9b360d$var$h("ul.children", children.map((d)=>$03d8811e9c9b360d$var$h($03d8811e9c9b360d$var$ExtractionInfo, {
|
|
154
|
-
data: d,
|
|
155
|
-
matchComponent: matchComponent
|
|
156
|
-
})))
|
|
157
|
-
])
|
|
158
|
-
]);
|
|
159
|
-
}
|
|
160
|
-
function $03d8811e9c9b360d$var$HighlightedText(props) {
|
|
161
|
-
const { text: text, highlights: highlights = [] } = props;
|
|
162
|
-
const parts = [];
|
|
163
|
-
let start = 0;
|
|
164
|
-
const sortedHighlights = highlights.sort((a, b)=>a.start - b.start);
|
|
165
|
-
const deconflictedHighlights = sortedHighlights.map((highlight, i)=>{
|
|
166
|
-
if (i === 0) return highlight;
|
|
167
|
-
const prev = sortedHighlights[i - 1];
|
|
168
|
-
if (highlight.start < prev.end) highlight.start = prev.end;
|
|
169
|
-
return highlight;
|
|
170
|
-
});
|
|
171
|
-
for (const highlight of deconflictedHighlights){
|
|
172
|
-
const { start: s, end: end, ...rest } = highlight;
|
|
173
|
-
parts.push(text.slice(start, s));
|
|
174
|
-
parts.push($03d8811e9c9b360d$var$h("span.highlight", {
|
|
175
|
-
style: rest
|
|
176
|
-
}, text.slice(s, end)));
|
|
177
|
-
start = end;
|
|
178
|
-
}
|
|
179
|
-
parts.push(text.slice(start));
|
|
180
|
-
return $03d8811e9c9b360d$var$h("span", parts);
|
|
181
|
-
}
|
|
182
|
-
function $03d8811e9c9b360d$var$normalizeColor(hex8) {
|
|
183
|
-
const background = (0, $9y0hV$useDarkMode)().isEnabled ? "#000000" : "#ffffff";
|
|
184
|
-
const r = parseInt(hex8.slice(1, 3), 16);
|
|
185
|
-
const g = parseInt(hex8.slice(3, 5), 16);
|
|
186
|
-
const b = parseInt(hex8.slice(5, 7), 16);
|
|
187
|
-
const a = parseInt(hex8.slice(7, 9), 16) / 255;
|
|
188
|
-
const bgR = parseInt(background.slice(1, 3), 16);
|
|
189
|
-
const bgG = parseInt(background.slice(3, 5), 16);
|
|
190
|
-
const bgB = parseInt(background.slice(5, 7), 16);
|
|
191
|
-
const blend = (fg, bg)=>Math.round((1 - a) * bg + a * fg);
|
|
192
|
-
const blendedR = blend(r, bgR);
|
|
193
|
-
const blendedG = blend(g, bgG);
|
|
194
|
-
const blendedB = blend(b, bgB);
|
|
195
|
-
return "#" + blendedR.toString(16).padStart(2, "0") + blendedG.toString(16).padStart(2, "0") + blendedB.toString(16).padStart(2, "0");
|
|
196
|
-
}
|
|
197
|
-
function $03d8811e9c9b360d$var$isHighlighted(id, selectedNodes, nodes) {
|
|
198
|
-
if (selectedNodes?.length === 0) return true;
|
|
199
|
-
return selectedNodes?.includes(id) || nodes?.some((node)=>selectedNodes?.includes(node.id) && node.children.some((child)=>child.id === id));
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
export {$03d8811e9c9b360d$export$c4b91360064ad200 as buildHighlights, $03d8811e9c9b360d$export$d60b563f571177d as enhanceData, $03d8811e9c9b360d$export$35baa338324d8550 as getTagStyle, $03d8811e9c9b360d$export$2b07158757c249e0 as ExtractionContext, $03d8811e9c9b360d$export$4eb2a0ce903ce967 as ModelInfo, $03d8811e9c9b360d$export$117e56c71b172cde as EntityTag};
|
|
204
|
-
//# sourceMappingURL=feedback-components.ba79c0ef.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/feedback-components/src/extractions/index.ts"],"sourcesContent":["import styles from \"./main.module.sass\";\nimport classNames from \"classnames\";\nimport { Tag } from \"@blueprintjs/core\";\nimport type { Entity, EntityExt, Highlight, EntityType } from \"./types\";\nimport { CSSProperties } from \"react\";\nimport { asChromaColor } from \"@macrostrat/color-utils\";\nimport hyper from \"@macrostrat/hyper\";\nimport { useDarkMode } from \"@macrostrat/ui-components\";\n\nexport type { Entity, EntityExt };\n\nconst h = hyper.styled(styles);\n\nexport function buildHighlights(\n entities: EntityExt[],\n parent: EntityExt | null,\n): Highlight[] {\n let highlights = [];\n let parents = [];\n if (parent != null) {\n parents = [parent.id, ...(parent.parents ?? [])];\n }\n\n for (const entity of entities) {\n highlights.push({\n start: entity.indices[0],\n end: entity.indices[1],\n text: entity.name,\n backgroundColor: entity.type?.color,\n tag: entity.type?.name ?? \"lith\",\n id: entity.id,\n parents,\n match: entity.match,\n });\n highlights.push(...buildHighlights(entity.children ?? [], entity));\n }\n return highlights;\n}\n\nexport function enhanceData(extractionData, models, entityTypes) {\n return {\n ...extractionData,\n model: models.get(extractionData.model_id),\n entities: extractionData.entities?.map((d) =>\n enhanceEntity(d, entityTypes),\n ),\n };\n}\n\nexport function getTagStyle(\n baseColor: string,\n options: {\n highlighted?: boolean;\n inDarkMode?: boolean;\n active?: boolean;\n showMatches?: boolean;\n } = {},\n): CSSProperties {\n const _baseColor = asChromaColor(baseColor ?? \"#fff\");\n const {\n highlighted = true,\n inDarkMode = useDarkMode().isEnabled,\n active = false,\n } = options;\n\n let mixAmount = highlighted ? 0.8 : 0.5;\n let backgroundAlpha = highlighted ? 0.8 : 0.2;\n\n if (active) {\n mixAmount = 1;\n backgroundAlpha = 1;\n }\n\n const mixTarget = \"black\";\n\n const color = active ? \"#000\" : _baseColor.mix(mixTarget, mixAmount).hex();\n const borderColor = highlighted\n ? _baseColor.mix(mixTarget, mixAmount / 1.1).hex()\n : \"transparent\";\n\n let backgroundColor = active\n ? _baseColor.alpha(backgroundAlpha).hex()\n : normalizeColor(_baseColor.alpha(backgroundAlpha).hex());\n\n // handle white backgrounds in light mode\n if (!inDarkMode && backgroundColor === \"#ffffff\") {\n backgroundColor = \"#f0f0f0\";\n }\n\n return {\n color,\n backgroundColor,\n boxSizing: \"border-box\",\n borderStyle: \"solid\",\n borderColor,\n borderWidth: \"1.5px\",\n fontWeight: active ? \"bold\" : \"normal\",\n fontSize: \"0.9em\",\n };\n}\n\nfunction enhanceEntity(\n entity: Entity,\n entityTypes: Map<number, EntityType>,\n): EntityExt {\n return {\n ...entity,\n type: addColor(entityTypes.get(entity.type), entity.match != null),\n children: entity.children?.map((d) => enhanceEntity(d, entityTypes)),\n };\n}\n\nfunction addColor(entityType: EntityType, match = false) {\n const color = asChromaColor(entityType.color ?? \"#fff\").brighten(\n match ? 1 : 2,\n );\n\n return { ...entityType, color: color.css() };\n}\n\nexport function ExtractionContext({\n data,\n entityTypes,\n matchComponent,\n}: {\n data: any;\n entityTypes: Map<number, EntityType>;\n matchComponent: MatchComponent;\n}) {\n const highlights = buildHighlights(data.entities, null);\n\n return h(\"div\", [\n h(\"p\", h(HighlightedText, { text: data.paragraph_text, highlights })),\n h(ModelInfo, { data: data.model }),\n h(\n \"ul.entities\",\n data.entities.map((d) => h(ExtractionInfo, { data: d, matchComponent })),\n ),\n ]);\n}\n\nexport function ModelInfo({ data }) {\n if (!data) return null;\n return h(\"p.model-name\", [\"Model: \", h(\"code.bp5-code\", data.name)]);\n}\n\nexport type MatchComponent = (props: { data: any }) => any;\n\ntype EntityTagProps = {\n data: EntityExt;\n highlighted?: boolean;\n active?: boolean;\n onClickType?: (type: EntityType) => void;\n matchComponent?: MatchComponent;\n};\n\nexport function EntityTag({\n data,\n highlighted = true,\n active = false,\n onClickType,\n matchComponent = null,\n}: EntityTagProps) {\n const { name, type, match } = data;\n\n const className = classNames(\n {\n matched: match != null,\n type: data.type?.name ?? \"lith\",\n },\n \"entity\",\n );\n\n const style = getTagStyle(type?.color, { highlighted, active });\n\n let _matchLink = null;\n if (match != null && matchComponent != null) {\n _matchLink = h(matchComponent, { data: match });\n }\n\n return h(Tag, { style, className }, [\n h(\"span.entity-name\", name),\n \" \",\n h(\n \"code.entity-type.bp5-code\",\n {\n onClick(evt) {\n if (active && onClickType != null) {\n onClickType(type);\n evt.stopPropagation();\n }\n },\n },\n [type?.name, _matchLink],\n ),\n ]);\n}\n\nfunction ExtractionInfo({\n data,\n matchComponent = null,\n}: {\n data: EntityExt;\n matchComponent: MatchComponent;\n}) {\n const children = data.children ?? [];\n\n return h(\"li.entity-row\", [\n h(EntityTag, { data, matchComponent }),\n h.if(children.length > 0)([\n h(\n \"ul.children\",\n children.map((d) => h(ExtractionInfo, { data: d, matchComponent })),\n ),\n ]),\n ]);\n}\n\nfunction HighlightedText(props: { text: string; highlights: Highlight[] }) {\n const { text, highlights = [] } = props;\n const parts = [];\n let start = 0;\n\n const sortedHighlights = highlights.sort((a, b) => a.start - b.start);\n const deconflictedHighlights = sortedHighlights.map((highlight, i) => {\n if (i === 0) return highlight;\n const prev = sortedHighlights[i - 1];\n if (highlight.start < prev.end) {\n highlight.start = prev.end;\n }\n return highlight;\n });\n\n for (const highlight of deconflictedHighlights) {\n const { start: s, end, ...rest } = highlight;\n parts.push(text.slice(start, s));\n parts.push(h(\"span.highlight\", { style: rest }, text.slice(s, end)));\n start = end;\n }\n parts.push(text.slice(start));\n return h(\"span\", parts);\n}\n\nfunction normalizeColor(hex8) {\n const background = useDarkMode().isEnabled ? \"#000000\" : \"#ffffff\";\n\n const r = parseInt(hex8.slice(1, 3), 16);\n const g = parseInt(hex8.slice(3, 5), 16);\n const b = parseInt(hex8.slice(5, 7), 16);\n const a = parseInt(hex8.slice(7, 9), 16) / 255;\n\n const bgR = parseInt(background.slice(1, 3), 16);\n const bgG = parseInt(background.slice(3, 5), 16);\n const bgB = parseInt(background.slice(5, 7), 16);\n\n const blend = (fg, bg) => Math.round((1 - a) * bg + a * fg);\n\n const blendedR = blend(r, bgR);\n const blendedG = blend(g, bgG);\n const blendedB = blend(b, bgB);\n\n return (\n \"#\" +\n blendedR.toString(16).padStart(2, \"0\") +\n blendedG.toString(16).padStart(2, \"0\") +\n blendedB.toString(16).padStart(2, \"0\")\n );\n}\n\nfunction isHighlighted(id: number, selectedNodes: number[], nodes: any[]) {\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":[],"version":3,"file":"feedback-components.ba79c0ef.js.map"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
.WofFTa_item-container {
|
|
2
|
-
align-items: center;
|
|
3
|
-
gap: 1em;
|
|
4
|
-
min-height: 40px;
|
|
5
|
-
display: flex;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
.WofFTa_item-container.WofFTa_selected {
|
|
9
|
-
background-color: var(--panel-background-color);
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
.WofFTa_swatch {
|
|
13
|
-
border-radius: 4px;
|
|
14
|
-
width: 30px;
|
|
15
|
-
height: 30px;
|
|
16
|
-
}
|
|
17
|
-
/*# sourceMappingURL=feedback-components.bf93773c.css.map */
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"mappings":"AAAA;;;;;;;AAME;;;;AAGF","sources":["packages/feedback-components/src/feedback/type-selector/main.module.sass"],"sourcesContent":[".item-container\n min-height: 40px\n display: flex\n align-items: center\n gap: 1em\n\n &.selected\n background-color: var(--panel-background-color)\n\n.swatch\n width: 30px\n height: 30px\n border-radius: 4px\n"],"names":[],"version":3,"file":"feedback-components.bf93773c.css.map"}
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
import {treeToGraph as $b79bf29960412ca7$export$8d9dbb7a64bf2a5e} from "./feedback-components.fa847634.js";
|
|
2
|
-
import "./feedback-components.d769ffa5.css";
|
|
3
|
-
import $phGch$feedbackcomponentse702eecejs from "./feedback-components.e702eece.js";
|
|
4
|
-
import {getTagStyle as $03d8811e9c9b360d$export$35baa338324d8550} from "./feedback-components.ba79c0ef.js";
|
|
5
|
-
import $phGch$macrostrathyper from "@macrostrat/hyper";
|
|
6
|
-
import {forceSimulation as $phGch$forceSimulation, forceLink as $phGch$forceLink, forceManyBody as $phGch$forceManyBody, forceCenter as $phGch$forceCenter, forceCollide as $phGch$forceCollide} from "d3-force";
|
|
7
|
-
import {useState as $phGch$useState, useEffect as $phGch$useEffect} from "react";
|
|
8
|
-
import {Spinner as $phGch$Spinner, Switch as $phGch$Switch} from "@blueprintjs/core";
|
|
9
|
-
import {ErrorBoundary as $phGch$ErrorBoundary} from "@macrostrat/ui-components";
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
function $parcel$interopDefault(a) {
|
|
13
|
-
return a && a.__esModule ? a.default : a;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const $ff8c3e7f2bc22925$var$h = (0, $phGch$macrostrathyper).styled((0, ($parcel$interopDefault($phGch$feedbackcomponentse702eecejs))));
|
|
24
|
-
function $ff8c3e7f2bc22925$export$6a7fe3ef90e8d566(props) {
|
|
25
|
-
// A graph view with react-flow
|
|
26
|
-
// Get positions of nodes using force simulation
|
|
27
|
-
const { tree: tree, width: width, height: height, dispatch: dispatch, selectedNodes: selectedNodes, viewOnly: viewOnly } = props;
|
|
28
|
-
const [nodes, setNodes] = (0, $phGch$useState)(null);
|
|
29
|
-
const [links, setLinks] = (0, $phGch$useState)(null);
|
|
30
|
-
const [showLabels, setShowLabels] = (0, $phGch$useState)(false);
|
|
31
|
-
(0, $phGch$useEffect)(()=>{
|
|
32
|
-
const { nodes: nodes, edges: edges } = (0, $b79bf29960412ca7$export$8d9dbb7a64bf2a5e)(tree);
|
|
33
|
-
const nodesMap = new Map(nodes.map((d)=>[
|
|
34
|
-
d.id,
|
|
35
|
-
d
|
|
36
|
-
]));
|
|
37
|
-
const links = edges.map((d)=>{
|
|
38
|
-
return {
|
|
39
|
-
source: nodesMap.get(d.source),
|
|
40
|
-
target: nodesMap.get(d.dest),
|
|
41
|
-
strength: 1
|
|
42
|
-
};
|
|
43
|
-
});
|
|
44
|
-
const simulation = (0, $phGch$forceSimulation)(nodes).force("link", (0, $phGch$forceLink)(links)).force("charge", (0, $phGch$forceManyBody)().strength(-50)).force("center", (0, $phGch$forceCenter)(width / 2, height / 2)).force("collide", (0, $phGch$forceCollide)().radius(20)).on("tick", ()=>{
|
|
45
|
-
// Update the positions of the nodes
|
|
46
|
-
// setNodes(nodes);
|
|
47
|
-
console.log("Simulation tick");
|
|
48
|
-
}).on("end", ()=>{
|
|
49
|
-
// Update the positions of the nodes
|
|
50
|
-
setNodes(nodes);
|
|
51
|
-
setLinks(links);
|
|
52
|
-
});
|
|
53
|
-
return ()=>{
|
|
54
|
-
simulation.stop();
|
|
55
|
-
};
|
|
56
|
-
}, [
|
|
57
|
-
tree,
|
|
58
|
-
width,
|
|
59
|
-
height
|
|
60
|
-
]);
|
|
61
|
-
if (nodes == null || links == null) return $ff8c3e7f2bc22925$var$h((0, $phGch$Spinner));
|
|
62
|
-
console.log("Graph", nodes, links, selectedNodes);
|
|
63
|
-
return $ff8c3e7f2bc22925$var$h((0, $phGch$ErrorBoundary), {
|
|
64
|
-
description: "An error occurred while rendering the graph view."
|
|
65
|
-
}, $ff8c3e7f2bc22925$var$h("div.graph-view", {
|
|
66
|
-
style: {
|
|
67
|
-
width: width,
|
|
68
|
-
height: height
|
|
69
|
-
}
|
|
70
|
-
}, [
|
|
71
|
-
$ff8c3e7f2bc22925$var$h((0, $phGch$Switch), {
|
|
72
|
-
className: "show-labels-switch",
|
|
73
|
-
label: "Show Labels",
|
|
74
|
-
checked: showLabels,
|
|
75
|
-
onChange: (e)=>setShowLabels(e.target.checked)
|
|
76
|
-
}),
|
|
77
|
-
$ff8c3e7f2bc22925$var$h("svg", {
|
|
78
|
-
width: width,
|
|
79
|
-
height: height
|
|
80
|
-
}, [
|
|
81
|
-
$ff8c3e7f2bc22925$var$h("g.links", links.map((d)=>{
|
|
82
|
-
return $ff8c3e7f2bc22925$var$h("line", {
|
|
83
|
-
x1: d.source.x,
|
|
84
|
-
y1: d.source.y,
|
|
85
|
-
x2: d.target.x,
|
|
86
|
-
y2: d.target.y,
|
|
87
|
-
stroke: "black"
|
|
88
|
-
});
|
|
89
|
-
})),
|
|
90
|
-
$ff8c3e7f2bc22925$var$h("g.nodes", nodes.map((d)=>{
|
|
91
|
-
const active = selectedNodes.includes(d.id);
|
|
92
|
-
const stroke = active ? "white" : "black";
|
|
93
|
-
const highlighted = $ff8c3e7f2bc22925$var$isHighlighted(d.id, selectedNodes, nodes);
|
|
94
|
-
const style = (0, $03d8811e9c9b360d$export$35baa338324d8550)(d.color, {
|
|
95
|
-
highlighted: highlighted,
|
|
96
|
-
active: active
|
|
97
|
-
});
|
|
98
|
-
return $ff8c3e7f2bc22925$var$h("g", [
|
|
99
|
-
$ff8c3e7f2bc22925$var$h("circle", {
|
|
100
|
-
cx: d.x,
|
|
101
|
-
cy: d.y,
|
|
102
|
-
r: 8,
|
|
103
|
-
fill: style.backgroundColor || "blue",
|
|
104
|
-
onClick: (e)=>{
|
|
105
|
-
e.stopPropagation();
|
|
106
|
-
if (e.ctrlKey || e.metaKey || selectedNodes[0] === d.id && selectedNodes.length === 1) {
|
|
107
|
-
// Toggle selection on ctrl/cmd click or when node is only selected node
|
|
108
|
-
e.stopPropagation();
|
|
109
|
-
dispatch({
|
|
110
|
-
type: "toggle-node-selected",
|
|
111
|
-
payload: {
|
|
112
|
-
ids: [
|
|
113
|
-
d.id
|
|
114
|
-
]
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
} else dispatch({
|
|
118
|
-
type: "select-node",
|
|
119
|
-
payload: {
|
|
120
|
-
ids: [
|
|
121
|
-
d.id
|
|
122
|
-
]
|
|
123
|
-
}
|
|
124
|
-
});
|
|
125
|
-
},
|
|
126
|
-
className: active ? "selected" : "" + (viewOnly ? "" : " clickable"),
|
|
127
|
-
stroke: stroke,
|
|
128
|
-
strokeWidth: 2
|
|
129
|
-
}),
|
|
130
|
-
$ff8c3e7f2bc22925$var$h.if(showLabels)("text", {
|
|
131
|
-
x: d.x + 10,
|
|
132
|
-
y: d.y + 4,
|
|
133
|
-
className: "node-label"
|
|
134
|
-
}, d.name || `Node ${d.id}`),
|
|
135
|
-
$ff8c3e7f2bc22925$var$h.if(!showLabels)("title", d.name || `Node ${d.id}`)
|
|
136
|
-
]);
|
|
137
|
-
}))
|
|
138
|
-
])
|
|
139
|
-
]));
|
|
140
|
-
}
|
|
141
|
-
function $ff8c3e7f2bc22925$var$isHighlighted(id, selectedNodes, nodes) {
|
|
142
|
-
if (selectedNodes.length === 0) return true;
|
|
143
|
-
return selectedNodes.includes(id) || nodes.some((node)=>selectedNodes.includes(node.id) && node.children.some((child)=>child.id === id));
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
export {$ff8c3e7f2bc22925$export$6a7fe3ef90e8d566 as GraphView};
|
|
148
|
-
//# sourceMappingURL=feedback-components.c6e2c296.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/feedback-components/src/feedback/graph.ts"],"sourcesContent":["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":[],"version":3,"file":"feedback-components.c6e2c296.js.map"}
|