label-studio
Version:
Data Labeling Tool that is backend agnostic and can be embedded into your applications
48 lines (39 loc) • 1.31 kB
JavaScript
import React from "react";
import { observer } from "mobx-react";
import { types } from "mobx-state-tree";
import LabelMixin from "../../mixins/LabelMixin";
import Registry from "../../core/Registry";
import SelectedModelMixin from "../../mixins/SelectedModel";
import Types from "../../core/Types";
import { BrushModel } from "./Brush";
import { HtxLabels, LabelsModel } from "./Labels";
import { guidGenerator } from "../../core/Helpers";
const TagAttrs = types.model({
name: types.maybeNull(types.string),
toname: types.maybeNull(types.string),
});
const ModelAttrs = types.model("BrushLabelsModel", {
id: types.optional(types.identifier, guidGenerator),
pid: types.optional(types.string, guidGenerator),
type: "brushlabels",
children: Types.unionArray(["labels", "label", "choice"]),
});
const Model = LabelMixin.props({ _type: "brushlabels" }).views(self => ({
get shouldBeUnselected() {
return self.choice === "single";
},
}));
const BrushLabelsModel = types.compose(
"BrushLabelsModel",
LabelsModel,
ModelAttrs,
BrushModel,
TagAttrs,
Model,
SelectedModelMixin,
);
const HtxBrushLabels = observer(({ item }) => {
return <HtxLabels item={item} />;
});
Registry.addTag("brushlabels", BrushLabelsModel, HtxBrushLabels);
export { HtxBrushLabels, BrushLabelsModel };