{"version":3,"file":"static/js/533.e7b65125.chunk.js","mappings":"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","sources":["../node_modules/@geneontology/wc-ribbon-strips/dist/esm-es5/wc-ribbon-cell_3.entry.js"],"sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n            r[k] = a[j];\n    return r;\n};\nimport { r as registerInstance, h, g as getElement, c as createEvent } from './core-e961c2bb.js';\nfunction truncate(text, size, ending) {\n    if (size == null) {\n        size = 100;\n    }\n    if (ending == null) {\n        ending = '...';\n    }\n    if (text.length > size) {\n        return text.substring(0, size - ending.length) + ending;\n    }\n    else {\n        return text;\n    }\n}\nfunction transformID(txt) {\n    return txt.replace(\":\", \"_\");\n}\nfunction darken(color, factor) {\n    var newColor = __spreadArrays(color);\n    for (var i = 0; i < newColor.length; i++) {\n        if (newColor[i] < 255) {\n            newColor[i] = Math.round(Math.max(0, newColor[i] * (1 - factor)));\n        }\n    }\n    // newColor[0] = Math.min(255, Math.round(newColor[0] * (1 + factor)));\n    return newColor;\n}\nfunction formatTaxonLabel(species) {\n    var split = species.split(\" \");\n    return split[0].substring(0, 1) + split[1].substring(0, 2);\n}\nfunction groupKey(group) {\n    return \"category-\" + transformID(group.id) + \"-\" + group.type;\n}\nfunction subjectGroupKey(subject, group) {\n    return \"subject-\" + transformID(subject.id) + \"-category-\" + transformID(group.id) + \"-\" + group.type;\n}\n/**\n * Return a color based on interpolation (count, minColor, maxColor) and normalized by maxHeatLevel\n * @param {*} count\n * @param {*} maxHeatLevel\n */\nfunction heatColor(level, maxHeatLevel, minColor, maxColor, binaryColor) {\n    if (binaryColor === void 0) { binaryColor = false; }\n    if (level === 0) {\n        return toRGB(minColor);\n    }\n    if (binaryColor) {\n        return toRGB(maxColor);\n    }\n    // this is a linear version for interpolation\n    // let fraction = Math.min(level, maxHeatLevel) / maxHeatLevel;\n    // this is the log version for interpolation (better highlight the most annotated classes)\n    // note: safari needs integer and not float for rgb function\n    var fraction = Math.min(10 * Math.log(level + 1), maxHeatLevel) / maxHeatLevel;\n    // there are some annotations and we want a continuous color (r, g, b)\n    var itemColor = []; // [r,g,b]\n    itemColor[0] = Math.round(minColor[0] + fraction * (maxColor[0] - minColor[0]));\n    itemColor[1] = Math.round(minColor[1] + fraction * (maxColor[1] - minColor[1]));\n    itemColor[2] = Math.round(minColor[2] + fraction * (maxColor[2] - minColor[2]));\n    return toRGB(itemColor);\n}\nfunction toRGB(array) {\n    return 'rgb(' + array[0] + ',' + array[1] + ',' + array[2] + ')';\n}\nfunction sameArray(array1, array2) {\n    if (array1.length !== array2.length) {\n        return false;\n    }\n    for (var i = 0; i < array1.length; i++) {\n        if (array1[i] !== array2[i]) {\n            return false;\n        }\n    }\n    return true;\n}\n// Enum to control what is the input count value for the color\nvar COLOR_BY = { \"CLASS_COUNT\": 0, \"ANNOTATION_COUNT\": 1 };\n// Enum to control the label position of each entity\nvar POSITION = { \"NONE\": 0, \"LEFT\": 1, \"RIGHT\": 2, \"BOTTOM\": 3 };\n// Enum to control the selection mode of a ribbon: selecting the cell or the column\nvar SELECTION = { \"CELL\": 0, \"COLUMN\": 1 };\nvar EXP_CODES = ['EXP', 'IDA', 'IPI', 'IMP', 'IGI', 'IEP', 'HTP', 'HDA', 'HMP', 'HGI', 'HEP'];\nvar CELL_TYPES = { \"ALL\": \"All\", \"TERM\": \"Term\", \"OTHER\": \"Other\" };\nvar FONT_CASE = { \"UNCHANGED\": 0, \"LOWER_CASE\": 1, \"UPPER_CASE\": 2 };\nvar FONT_STYLE = { \"NORMAL\": 0, \"BOLD\": 1 };\nvar RibbonCell = /** @class */ (function () {\n    function RibbonCell(hostRef) {\n        registerInstance(this, hostRef);\n        this.classLabels = \"term,terms\";\n        this.annotationLabels = \"annotation,annotations\";\n        this.colorBy = COLOR_BY.CLASS_COUNT;\n        this.binaryColor = false;\n        this.minColor = \"255,255,255\";\n        this.maxColor = \"24,73,180\";\n        this.maxHeatLevel = 48;\n        /**\n         * If set to true, won't show any color and can not be hovered or selected\n         * This is used for group that can not have annotation for a given subject\n         */\n        this.available = true;\n        this.selected = false;\n        this.hovered = false;\n    }\n    RibbonCell.prototype.minColorChanged = function (newValue, oldValue) {\n        if (newValue != oldValue)\n            this.updateMinColor(newValue);\n    };\n    RibbonCell.prototype.updateMinColor = function (newValue) {\n        if (newValue instanceof Array) {\n            this.arrayMinColor = newValue;\n        }\n        else if (newValue.includes(\",\")) {\n            this.arrayMinColor = newValue.split(\",\");\n        }\n        this.arrayMinColor = this.arrayMinColor.map(function (elt) { return +elt; });\n    };\n    RibbonCell.prototype.maxColorChanged = function (newValue, oldValue) {\n        if (newValue != oldValue)\n            this.updateMaxColor(newValue);\n    };\n    RibbonCell.prototype.updateMaxColor = function (newValue) {\n        if (newValue instanceof Array) {\n            this.arrayMaxColor = newValue;\n        }\n        else if (newValue.includes(\",\")) {\n            this.arrayMaxColor = newValue.split(\",\");\n        }\n        this.arrayMaxColor = this.arrayMaxColor.map(function (elt) { return +elt; });\n    };\n    RibbonCell.prototype.annotationLabelsChanged = function (newValue, oldValue) {\n        if (newValue != oldValue)\n            this.updateAnnotationLabels(newValue);\n    };\n    RibbonCell.prototype.updateAnnotationLabels = function (newValue) {\n        if (newValue instanceof Array) {\n            this.arrayAnnotationLabels = newValue;\n        }\n        else if (newValue.includes(\",\")) {\n            this.arrayAnnotationLabels = newValue.split(\",\");\n        }\n        this.arrayAnnotationLabels = this.arrayAnnotationLabels.map(function (elt) { return elt.trim(); });\n    };\n    RibbonCell.prototype.classLabelsChanged = function (newValue, oldValue) {\n        if (newValue != oldValue)\n            this.updateClassLabels(newValue);\n    };\n    RibbonCell.prototype.updateClassLabels = function (newValue) {\n        if (newValue instanceof Array) {\n            this.arrayClassLabels = newValue;\n        }\n        else if (newValue.includes(\",\")) {\n            this.arrayClassLabels = newValue.split(\",\");\n        }\n        this.arrayClassLabels = this.arrayClassLabels.map(function (elt) { return elt.trim(); });\n    };\n    RibbonCell.prototype.cellColor = function (nbClasses, nbAnnotations) {\n        var levels = (this.colorBy == COLOR_BY.CLASS_COUNT) ? nbClasses : nbAnnotations;\n        var newColor = heatColor(levels, this.maxHeatLevel, this.arrayMinColor, this.arrayMaxColor, this.binaryColor);\n        if (this.hovered) {\n            var tmp = newColor.replace(/[^\\d,]/g, '').split(',');\n            var val = darken(tmp, 0.4);\n            newColor = \"rgb(\" + val.join(\",\") + \")\";\n        }\n        return newColor;\n    };\n    RibbonCell.prototype.getNbClasses = function () {\n        if (this.group.type == \"GlobalAll\") {\n            return this.subject.nb_classes;\n        }\n        var cellid = this.group.id + (this.group.type == CELL_TYPES.OTHER ? \"-other\" : \"\");\n        var cell = cellid in this.subject.groups ? this.subject.groups[cellid] : undefined;\n        return cell ? cell[\"ALL\"][\"nb_classes\"] : 0;\n    };\n    RibbonCell.prototype.getNbAnnotations = function () {\n        if (this.group.type == \"GlobalAll\") {\n            return this.subject.nb_annotations;\n        }\n        var cellid = this.group.id + (this.group.type == CELL_TYPES.OTHER ? \"-other\" : \"\");\n        var cell = cellid in this.subject.groups ? this.subject.groups[cellid] : undefined;\n        return cell ? cell[\"ALL\"][\"nb_annotations\"] : 0;\n    };\n    RibbonCell.prototype.hasAnnotations = function () {\n        return this.getNbAnnotations() > 0;\n    };\n    /**\n     * This is executed once when the component gets loaded\n    */\n    RibbonCell.prototype.componentWillLoad = function () {\n        this.updateMinColor(this.minColor);\n        this.updateMaxColor(this.maxColor);\n        this.updateAnnotationLabels(this.annotationLabels);\n        this.updateClassLabels(this.classLabels);\n    };\n    RibbonCell.prototype.render = function () {\n        if (!this.available) {\n            var title_1 = this.subject.label + \" can not have data for \" + this.group.label;\n            var classes_1 = \"ribbon__subject--cell unavailable\";\n            return (h(\"td\", { title: title_1, class: classes_1 }, \" \"));\n        }\n        var nbClasses = this.getNbClasses();\n        var nbAnnotations = this.getNbAnnotations();\n        var title = \"Subject: \" + this.subject.id + \":\" + this.subject.label + \"\\n\\nGroup: \" + this.group.id + \": \" + this.group.label;\n        if (nbAnnotations > 0) {\n            title += \"\\n\\n\" + nbClasses + \" \" + (nbClasses > 1 ? this.arrayClassLabels[1] : this.arrayClassLabels[0]) + \", \" + nbAnnotations + \" \" + (nbAnnotations > 1 ? this.arrayAnnotationLabels[1] : this.arrayAnnotationLabels[0]);\n        }\n        else {\n            title += \"\\n\\nNo data available\";\n        }\n        this.el.style.setProperty('background', this.cellColor(nbClasses, nbAnnotations));\n        var classes = (this.selected && nbAnnotations > 0) ? \"ribbon__subject--cell clicked\" : \"ribbon__subject--cell\";\n        classes += (this.hovered && nbAnnotations > 0) ? \" hovered\" : \"\";\n        return (h(\"td\", { title: title, class: classes }, \" \"));\n    };\n    Object.defineProperty(RibbonCell.prototype, \"el\", {\n        get: function () { return getElement(this); },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(RibbonCell, \"watchers\", {\n        get: function () {\n            return {\n                \"minColor\": [\"minColorChanged\"],\n                \"maxColor\": [\"maxColorChanged\"],\n                \"annotationLabels\": [\"annotationLabelsChanged\"],\n                \"classLabels\": [\"classLabelsChanged\"]\n            };\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(RibbonCell, \"style\", {\n        get: function () { return \".clicked{border:1px solid #002eff;-webkit-box-shadow:0 0 8px #002eff;box-shadow:0 0 8px #002eff}.unavailable{cursor:not-allowed;background:linear-gradient(to top left,transparent 0,transparent calc(50% - .8px),rgba(240,32,32,.5) 50%,transparent calc(50% + .8px),transparent)}\"; },\n        enumerable: true,\n        configurable: true\n    });\n    return RibbonCell;\n}());\nvar RibbonStrips = /** @class */ (function () {\n    function class_1(hostRef) {\n        registerInstance(this, hostRef);\n        this.baseApiUrl = \"https://api.geneontology.org/api/ontology/ribbon/\";\n        this.subjectBaseUrl = \"http://amigo.geneontology.org/amigo/gene_product/\";\n        this.groupBaseUrl = \"http://amigo.geneontology.org/amigo/term/\";\n        this.subset = \"goslim_agr\";\n        /**\n         * provide gene ids (e.g. RGD:620474,RGD:3889 or as a list [\"RGD:620474\", \"RGD:3889\"])\n         */\n        this.subjects = undefined;\n        this.classLabels = \"term,terms\";\n        this.annotationLabels = \"annotation,annotations\";\n        /**\n         * Which value to base the cell color on\n         * 0 = class count\n         * 1 = annotation count\n         */\n        this.colorBy = COLOR_BY.ANNOTATION_COUNT;\n        /**\n         * false = show a gradient of colors to indicate the value of a cell\n         * true = show only two colors (minColor; maxColor) to indicate the values of a cell\n         */\n        this.binaryColor = false;\n        this.minColor = \"255,255,255\";\n        this.maxColor = \"24,73,180\";\n        this.maxHeatLevel = 48;\n        this.groupMaxLabelSize = 60;\n        /**\n         * Override of the category case\n         * 0 (default) = unchanged\n         * 1 = to lower case\n         * 2 = to upper case\n         */\n        this.categoryCase = FONT_CASE.LOWER_CASE;\n        /**\n         * 0 = Normal\n         * 1 = Bold\n         */\n        this.categoryAllStyle = FONT_STYLE.NORMAL;\n        /**\n         * 0 = Normal\n         * 1 = Bold\n         */\n        this.categoryOtherStyle = FONT_STYLE.NORMAL;\n        this.showOtherGroup = false;\n        /**\n         * Position the subject label of each row\n         * 0 = None\n         * 1 = Left\n         * 2 = Right\n         * 3 = Bottom\n         */\n        this.subjectPosition = POSITION.LEFT;\n        this.subjectOpenNewTab = true;\n        this.groupNewTab = true;\n        this.groupClickable = true;\n        /**\n         * Click handling of a cell.\n         * 0 = select only the cell (1 subject, 1 group)\n         * 1 = select the whole column (all subjects, 1 group)\n         */\n        this.selectionMode = SELECTION.CELL;\n        /**\n         * If true, the ribbon will fire an event if a user click an empty cell\n         * If false, the ribbon will not fire the event on an empty cell\n         * Note: if selectionMode == SELECTION.COLUMN, then the event will trigger if at least one of the selected cells has annotations\n         */\n        this.fireEventOnEmptyCells = false;\n        // @Watch('selected')\n        // selectedChanged(newValue, oldValue) {\n        //     console.log(\"selectedChanged(\", newValue , oldValue , \")\");\n        //     if(newValue != oldValue) {\n        //         let gp = this.getGroup(newValue);\n        //         this.selectCells(this.ribbonSummary.subjects, gp);\n        //     }\n        // }\n        /**\n         * add a cell at the beginning of each row/subject to show all annotations\n         */\n        this.addCellAll = true;\n        /**\n         * When this is set to false, changing the subjects Prop won't trigger the reload of the ribbon\n         * This is necessary when the ribbon is showing data other than GO or not using the internal fetchData mechanism\n         */\n        this.updateOnSubjectChange = true;\n        this.loading = true;\n        this.onlyExperimental = false;\n        this.groupAll = {\n            id: \"all\",\n            label: \"all annotations\",\n            description: \"Show all annotations for all categories\",\n            type: \"GlobalAll\"\n        };\n        this.previouslyHovered = [];\n        this.previouslySelected = [];\n        this.cellClick = createEvent(this, \"cellClick\", 7);\n        this.cellEnter = createEvent(this, \"cellEnter\", 7);\n        this.cellLeave = createEvent(this, \"cellLeave\", 7);\n        this.groupClick = createEvent(this, \"groupClick\", 7);\n        this.groupEnter = createEvent(this, \"groupEnter\", 7);\n        this.groupLeave = createEvent(this, \"groupLeave\", 7);\n    }\n    class_1.prototype.dataChanged = function (newValue, oldValue) {\n        if (newValue != oldValue) {\n            this.loadData(newValue);\n        }\n    };\n    /**\n     * This method is automatically called whenever the value of \"subjects\" changes\n     * Note this method can be (and should be) deactivated (use updateOnSubjectChange) when the ribbon is not loading from GO and not using the internal fetchData mechanism\n     * @param newValue a new subject is submitted (e.g. gene)\n     * @param oldValue old value of the subject (e.g. gene or genes)\n     */\n    class_1.prototype.subjectsChanged = function (newValue, oldValue) {\n        var _this = this;\n        // if we don't want to update the ribbon on subject changes\n        if (!this.updateOnSubjectChange) {\n            this.loading = false;\n            return;\n        }\n        if (newValue != oldValue) {\n            // Fetch data based on subjects and subset\n            this.fetchData(this.subjects)\n                .then(function (data) {\n                _this.ribbonSummary = data;\n                _this.loading = false;\n            }, function (error) {\n                console.error(error);\n                _this.loading = false;\n            });\n        }\n    };\n    class_1.prototype.loadData = function (data) {\n        if (data) {\n            // If was injected as string, transform to json\n            if (typeof data == \"string\") {\n                this.ribbonSummary = JSON.parse(data);\n            }\n            else {\n                this.ribbonSummary = data;\n            }\n            this.loading = false;\n            this.subjects = this.ribbonSummary.subjects.map((function (elt) { return elt.id; })).join(\",\");\n            return true;\n        }\n        return false;\n    };\n    class_1.prototype.getGroup = function (group_id) {\n        if (!this.ribbonSummary)\n            return null;\n        if (group_id == \"all\")\n            return this.groupAll;\n        for (var _i = 0, _a = this.ribbonSummary.categories; _i < _a.length; _i++) {\n            var cat = _a[_i];\n            for (var _b = 0, _c = cat.groups; _b < _c.length; _b++) {\n                var gp = _c[_b];\n                if (gp.id == group_id)\n                    return gp;\n            }\n        }\n        return null;\n    };\n    /**\n     * Once the component is loaded, fetch the data\n    */\n    class_1.prototype.componentWillLoad = function () {\n        var _this = this;\n        // Prioritize data if provided\n        if (this.loadData(this.data))\n            return;\n        // If no subjects were provided, don't try to fetch data\n        if (!this.subjects) {\n            this.loading = false;\n            return;\n        }\n        // Fetch data based on subjects and subset\n        this.fetchData(this.subjects)\n            .then(function (data) {\n            _this.ribbonSummary = data;\n            _this.loading = false;\n        }, function (error) {\n            console.error(error);\n            _this.loading = false;\n        });\n    };\n    class_1.prototype.componentDidLoad = function () {\n        this.selectGroup(this.selected);\n        this.selected = null;\n    };\n    class_1.prototype.fetchData = function (subjects) {\n        if (subjects.includes(\",\")) {\n            subjects = subjects.split(\",\");\n        }\n        if (subjects instanceof Array) {\n            subjects = subjects.join('&subject=');\n        }\n        var query = this.baseApiUrl + '?subset=' + this.subset + '&subject=' + subjects;\n        if (this.onlyExperimental) {\n            query += EXP_CODES.map(function (exp) { return \"&ecodes=\" + exp; }).join(\"\");\n        }\n        console.log('API query is ' + query);\n        return fetch(query)\n            .then(function (response) {\n            return response.json();\n        })\n            .catch(function (error) {\n            return error;\n        });\n    };\n    class_1.prototype.onCellEnter = function (subjects, group) {\n        if (subjects instanceof Array) {\n            this.formerColors = new Map();\n            // change header style\n            var el = this.ribbonElement.querySelector(\"#\" + groupKey(group));\n            el.classList.add(\"selected\");\n            for (var _i = 0, subjects_1 = subjects; _i < subjects_1.length; _i++) {\n                var subject = subjects_1[_i];\n                var el_1 = this.ribbonElement.querySelector(\"#\" + subjectGroupKey(subject, group));\n                el_1.hovered = true;\n                el_1.style.cursor = \"pointer\";\n            }\n        }\n        else {\n            // change cell style\n            var nbAnnotations = group.id in subjects.groups ? subjects.groups[group.id][\"ALL\"][\"nb_annotations\"] : 0;\n            if (group.type == \"GlobalAll\") {\n                nbAnnotations = subjects.nb_annotations;\n            }\n            else {\n                nbAnnotations = group.id in subjects.groups ? subjects.groups[group.id][\"ALL\"][\"nb_annotations\"] : 0;\n            }\n            // let el = this.ribbonElement.shadowRoot.querySelector(\"#\" + this.transform(subjects.id) + \"-\" + this.transform(group.id));\n            var el = this.ribbonElement.querySelector(\"#\" + subjectGroupKey(subjects, group));\n            el.style.cursor = nbAnnotations == 0 ? \"not-allowed\" : \"pointer\";\n            if (nbAnnotations > 0) {\n                el.hovered = true;\n                // change header style\n                el = this.ribbonElement.querySelector(\"#\" + groupKey(group));\n                el.classList.add(\"selected\");\n            }\n        }\n        var event = { subjects: subjects, group: group };\n        this.cellEnter.emit(event);\n    };\n    class_1.prototype.onCellLeave = function (subjects, group) {\n        if (subjects instanceof Array) {\n            // change the header style\n            var el = this.ribbonElement.querySelector(\"#\" + groupKey(group));\n            el.classList.remove(\"selected\");\n            for (var _i = 0, subjects_2 = subjects; _i < subjects_2.length; _i++) {\n                var subject = subjects_2[_i];\n                var el_2 = this.ribbonElement.querySelector(\"#\" + subjectGroupKey(subject, group));\n                el_2.hovered = false;\n            }\n            this.formerColors = undefined;\n        }\n        else {\n            // change the cell style\n            var el = this.ribbonElement.querySelector(\"#\" + subjectGroupKey(subjects, group));\n            el.hovered = false;\n            // change the header style\n            el = this.ribbonElement.querySelector(\"#\" + groupKey(group));\n            el.classList.remove(\"selected\");\n        }\n        var event = { subjects: subjects, group: group };\n        this.cellLeave.emit(event);\n    };\n    class_1.prototype.overCells = function (subjects, group) {\n        if (!(subjects instanceof Array)) {\n            subjects = [subjects];\n        }\n        var subs = subjects.map(function (elt) { return elt.id + \"@\" + group.id + \"@\" + group.type; });\n        var prevSubs = this.previouslyHovered.map(function (elt) { return elt.subject.id + \"@\" + elt.group.id + \"@\" + elt.group.type; });\n        var same = sameArray(subs, prevSubs);\n        if (!same) {\n            for (var _i = 0, _a = this.previouslyHovered; _i < _a.length; _i++) {\n                var cell = _a[_i];\n                cell.hovered = false;\n            }\n        }\n        this.previouslyHovered = [];\n        var hovered = [];\n        for (var _b = 0, subjects_3 = subjects; _b < subjects_3.length; _b++) {\n            var subject = subjects_3[_b];\n            var cell = this.ribbonElement.querySelector(\"#\" + subjectGroupKey(subject, group));\n            cell.hovered = !cell.hovered;\n            hovered.push(cell.hovered);\n            this.previouslyHovered.push(cell);\n        }\n        return hovered;\n    };\n    class_1.prototype.selectCells = function (subjects, group, toggle) {\n        if (toggle === void 0) { toggle = true; }\n        if (!(subjects instanceof Array)) {\n            subjects = [subjects];\n        }\n        var subs = subjects.map(function (elt) { return elt.id + \"@\" + group.id + \"@\" + group.type; });\n        var prevSubs = this.previouslySelected.map(function (elt) { return elt.subject.id + \"@\" + elt.group.id + \"@\" + elt.group.type; });\n        var same = sameArray(subs, prevSubs);\n        if (!same) {\n            for (var _i = 0, _a = this.previouslySelected; _i < _a.length; _i++) {\n                var cell = _a[_i];\n                cell.selected = false;\n            }\n        }\n        this.previouslySelected = [];\n        var selected = [];\n        var lastCell;\n        for (var _b = 0, subjects_4 = subjects; _b < subjects_4.length; _b++) {\n            var subject = subjects_4[_b];\n            var cell = this.ribbonElement.querySelector(\"#\" + subjectGroupKey(subject, group));\n            cell.selected = toggle ? !cell.selected : true;\n            selected.push(cell.selected);\n            this.previouslySelected.push(cell);\n            lastCell = cell;\n        }\n        if (lastCell.selected) {\n            this.selectedGroup = group;\n        }\n        else {\n            this.selectedGroup = undefined;\n        }\n        return selected;\n    };\n    class_1.prototype.onCellClick = function (subjects, group) {\n        if (!(subjects instanceof Array)) {\n            subjects = [subjects];\n        }\n        // if don't fire events on empty cells\n        if (!this.fireEventOnEmptyCells) {\n            var hasAnnotations = false;\n            // if single cell selection, check if it has annotations\n            if (this.selectionMode == SELECTION.CELL) {\n                var keys = Object.keys(subjects[0].groups);\n                for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n                    var key = keys_1[_i];\n                    if (subjects[0].groups[key][\"ALL\"].nb_annotations > 0)\n                        hasAnnotations = true;\n                }\n                // if multiple cells selection, check if at least one has annotations\n            }\n            else {\n                for (var _a = 0, subjects_5 = subjects; _a < subjects_5.length; _a++) {\n                    var sub = subjects_5[_a];\n                    if (group.id == \"all\") {\n                        hasAnnotations = hasAnnotations || sub.nb_annotations > 0;\n                    }\n                    else {\n                        hasAnnotations = hasAnnotations || (group.id in sub.groups && sub.groups[group.id][\"ALL\"][\"nb_annotations\"] > 0);\n                    }\n                }\n            }\n            if (!hasAnnotations) {\n                return;\n            }\n        }\n        var selected = this.selectCells(subjects, group);\n        var event = { subjects: subjects, group: group, selected: selected };\n        this.cellClick.emit(event);\n    };\n    class_1.prototype.onGroupClick = function (category, group) {\n        this.selectCells(this.ribbonSummary.subjects, group);\n        var event = { category: category, group: group };\n        this.groupClick.emit(event);\n    };\n    class_1.prototype.filterExperiment = function (checkbox) {\n        var _this = this;\n        this.onlyExperimental = checkbox.target.checked;\n        // Fetch data based on subjects and subset\n        this.fetchData(this.subjects)\n            .then(function (data) {\n            _this.ribbonSummary = data;\n            _this.loading = false;\n        }, function (error) {\n            console.error(error);\n            _this.loading = false;\n        });\n    };\n    class_1.prototype.onGroupEnter = function (category, group) {\n        this.overCells(this.ribbonSummary.subjects, group);\n        var event = { subjects: this.ribbonSummary.subjects, category: category, group: group };\n        this.groupEnter.emit(event);\n    };\n    class_1.prototype.onGroupLeave = function (category, group) {\n        this.overCells(this.ribbonSummary.subjects, group);\n        var event = { subjects: this.ribbonSummary.subjects, category: category, group: group };\n        this.groupLeave.emit(event);\n    };\n    class_1.prototype.render = function () {\n        // return [ \"hello\", <Spinner spinner-style='default' spinner-color='blue' style='display:block;width:100px;height:100px'/>]\n        // Still loading (executing fetch)\n        if (this.loading) {\n            // return ( \"Loading Ribbon...\" );\n            return h(\"wc-spinner\", { \"spinner-style\": 'default', \"spinner-color\": 'blue' });\n        }\n        if (!this.subjects && !this.ribbonSummary) {\n            return (h(\"div\", null, \"Must provide at least one subject\"));\n        }\n        // API request undefined\n        if (!this.ribbonSummary) {\n            return (h(\"div\", null, \"No data available\"));\n        }\n        // API request done but not subject retrieved\n        var nbSubjects = this.ribbonSummary.subjects.length;\n        if (nbSubjects == 0) {\n            return (h(\"div\", null, \"Must provide at least one subject\"));\n        }\n        // Data is present, show the ribbon\n        return (h(\"div\", null, h(\"table\", { class: \"ribbon\" }, this.renderCategory(), this.renderSubjects())));\n    };\n    class_1.prototype.applyCategoryStyling = function (category) {\n        var cc0 = truncate(category, this.groupMaxLabelSize, \"...\");\n        var cc1 = this.applyCategoryCase(cc0);\n        var cc2 = this.applyCategoryBold(cc1);\n        return cc2;\n    };\n    class_1.prototype.applyCategoryBold = function (category) {\n        var lc = category.toLowerCase();\n        if (lc.startsWith(\"all\") && this.categoryAllStyle == FONT_STYLE.BOLD) {\n            return h(\"b\", null, category);\n        }\n        if (lc.startsWith(\"other\") && this.categoryOtherStyle == FONT_STYLE.BOLD) {\n            return h(\"b\", null, category);\n        }\n        return category;\n    };\n    class_1.prototype.applyCategoryCase = function (category) {\n        if (this.categoryCase == FONT_CASE.LOWER_CASE) {\n            return category.toLowerCase();\n        }\n        else if (this.categoryCase == FONT_CASE.UPPER_CASE) {\n            return category.toUpperCase();\n        }\n        return category;\n    };\n    class_1.prototype.selectGroup = function (group_id) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _this = this;\n            return __generator(this, function (_a) {\n                setTimeout(function () {\n                    if (group_id && _this.ribbonSummary) {\n                        var gp = _this.getGroup(group_id);\n                        if (gp) {\n                            _this.selectCells(_this.ribbonSummary.subjects, gp, false);\n                        }\n                        else {\n                            console.warn(\"Could not find group <\", group_id, \">\");\n                        }\n                    }\n                }, 750);\n                return [2 /*return*/];\n            });\n        });\n    };\n    class_1.prototype.renderCategory = function () {\n        var _this = this;\n        return (h(\"tr\", { class: \"ribbon__category\" }, this.subjectPosition == POSITION.LEFT ? h(\"td\", { class: \"ribbon__subject__label--left\" }) : \"\", this.addCellAll ?\n            h(\"th\", { class: \"ribbon__category--cell\", id: groupKey(this.groupAll), title: this.groupAll.id + \": \" + this.groupAll.label + \"\\n\\n\" + this.groupAll.description, onMouseEnter: function () { return _this.onGroupEnter(null, _this.groupAll); }, onMouseLeave: function () { return _this.onGroupLeave(null, _this.groupAll); }, onClick: (this.groupClickable) ? function () { return _this.onGroupClick(undefined, _this.groupAll); } : undefined }, this.applyCategoryStyling(this.groupAll.label))\n            : \"\", this.ribbonSummary.categories.map(function (category) {\n            return [\n                h(\"th\", { class: \"ribbon__category--separator\" }),\n                category.groups.map(function (group) {\n                    if (group.type == CELL_TYPES.OTHER && !_this.showOtherGroup) {\n                        return;\n                    }\n                    var classes = _this.groupClickable ? \"ribbon__category--cell clickable\" : \"ribbon__category--cell\";\n                    return h(\"th\", { class: classes, id: groupKey(group), title: group.id + \": \" + group.label + \"\\n\\n\" + group.description, onMouseEnter: function () { return _this.onGroupEnter(category, group); }, onMouseLeave: function () { return _this.onGroupLeave(category, group); }, onClick: (_this.groupClickable) ? function () { return _this.onGroupClick(category, group); } : undefined }, _this.selectedGroup == group ? h(\"b\", { style: { \"color\": \"#002eff\" } }, _this.applyCategoryStyling(group.label)) : _this.applyCategoryStyling(group.label));\n                })\n            ];\n        }), this.subjectPosition == POSITION.RIGHT ? h(\"td\", { class: \"ribbon__subject__label--right\" }) : \"\"));\n    };\n    class_1.prototype.renderSubjects = function () {\n        var _this = this;\n        return (this.ribbonSummary.subjects.map(function (subject) {\n            var subjects = _this.selectionMode == SELECTION.CELL ? subject : _this.ribbonSummary.subjects;\n            return (h(\"tr\", { class: \"ribbon__subject\" }, _this.subjectPosition == POSITION.LEFT\n                ? h(\"wc-ribbon-subject\", { class: \"ribbon__subject__label--left\", subject: subject, subjectBaseURL: _this.subjectBaseUrl, newTab: _this.subjectOpenNewTab })\n                : \"\", _this.addCellAll ?\n                h(\"wc-ribbon-cell\", { class: \"ribbon__subject--cell\", id: subjectGroupKey(subject, _this.groupAll), subject: subject, group: _this.groupAll, colorBy: _this.colorBy, binaryColor: _this.binaryColor, minColor: _this.minColor, maxColor: _this.maxColor, maxHeatLevel: _this.maxHeatLevel, annotationLabels: _this.annotationLabels, classLabels: _this.classLabels, onClick: function () { return _this.onCellClick(subjects, _this.groupAll); }, onMouseEnter: function () { return _this.onCellEnter(subjects, _this.groupAll); }, onMouseLeave: function () { return _this.onCellLeave(subjects, _this.groupAll); } })\n                : \"\", _this.ribbonSummary.categories.map(function (category) {\n                return [\n                    h(\"td\", { class: \"ribbon__subject--separator\" }),\n                    category.groups.map(function (group) {\n                        var cellid = group.id + (group.type == CELL_TYPES.OTHER ? \"-other\" : \"\");\n                        var cell = cellid in subject.groups ? subject.groups[cellid] : undefined;\n                        var nbAnnotations = cell ? cell[\"ALL\"][\"nb_annotations\"] : 0;\n                        // by default the group should be available\n                        var available = true;\n                        // if a value was given, then override the default value\n                        if (cell && cell.hasOwnProperty(\"available\")) {\n                            available = cell.available;\n                        }\n                        if (group.type == CELL_TYPES.OTHER && !_this.showOtherGroup) {\n                            return;\n                        }\n                        return (h(\"wc-ribbon-cell\", { class: (nbAnnotations == 0 ? \"ribbon__subject--cell--no-annotation\" : \"ribbon__subject--cell\"), id: subjectGroupKey(subject, group), subject: subject, group: group, available: available, colorBy: _this.colorBy, binaryColor: _this.binaryColor, minColor: _this.minColor, maxColor: _this.maxColor, maxHeatLevel: _this.maxHeatLevel, annotationLabels: _this.annotationLabels, classLabels: _this.classLabels, onClick: function () { return _this.onCellClick(subjects, group); }, onMouseEnter: function () { return _this.onCellEnter(subjects, group); }, onMouseLeave: function () { return _this.onCellLeave(subjects, group); } }));\n                    })\n                ];\n            }), _this.subjectPosition == POSITION.RIGHT\n                ? h(\"wc-ribbon-subject\", { class: \"ribbon__subject__label--right\", subject: subject, subjectBaseURL: _this.subjectBaseUrl, newTab: _this.subjectOpenNewTab })\n                : \"\"));\n        }));\n    };\n    Object.defineProperty(class_1.prototype, \"ribbonElement\", {\n        get: function () { return getElement(this); },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(class_1, \"watchers\", {\n        get: function () {\n            return {\n                \"data\": [\"dataChanged\"],\n                \"subjects\": [\"subjectsChanged\"]\n            };\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(class_1, \"style\", {\n        get: function () { return \".ribbon{display:table;width:100%}.ribbon,.ribbon *{margin:0;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box;font-weight:400}.ribbon b{font-weight:800}.ribbon__category{display:block;margin-bottom:.5rem;margin-top:12.4rem}.ribbon__category--separator{display:inline-block;padding:0 15px}.ribbon__category--cell{display:inline-block;width:18px;outline:none;text-align:left;white-space:nowrap;-webkit-transform:translateY(-2px) rotate(-45deg);transform:translateY(-2px) rotate(-45deg)}.ribbon__category--cell:hover{cursor:help;font-weight:700}.ribbon__subject{display:block;padding-bottom:.05rem;white-space:nowrap}.ribbon__subject__label--left{display:inline-block;width:140px}.ribbon__subject__label--right{display:inline-block;margin-left:1rem}.ribbon__subject--separator{display:inline-block;padding:0 15px}.ribbon__subject--cell{display:inline-block;width:18px;height:18px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.26);box-shadow:0 1px 4px rgba(0,0,0,.26);outline:none;text-align:center}.ribbon__subject--cell--hover{cursor:pointer;border:1px solid #000}.ribbon__subject--cell--no-annotation{display:inline-block;width:18px;height:18px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.26);box-shadow:0 1px 4px rgba(0,0,0,.26);outline:none;text-align:center}.ribbon__subject--cell--no-annotation:hover{cursor:not-allowed!important}.ribbon__subject--cell--disabled{display:inline-block;width:18px;height:18px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.26);box-shadow:0 1px 4px rgba(0,0,0,.26);outline:none;text-align:center;background:repeating-linear-gradient(45deg,#fff,rgba(0,0,0,.1) 1px,#fff 2px,#fff 12px)}.selected{font-weight:700!important}.clickable{cursor:pointer!important}\"; },\n        enumerable: true,\n        configurable: true\n    });\n    return class_1;\n}());\nvar RibbonSubject = /** @class */ (function () {\n    function RibbonSubject(hostRef) {\n        registerInstance(this, hostRef);\n        if (!this.subjectBaseURL.endsWith(\"/\")) {\n            this.subjectBaseURL += \"/\";\n        }\n        // fix due to doubling MGI:MGI: in GO\n        this.id = this.subject.id;\n        if (this.subject.id.startsWith(\"MGI:\")) {\n            this.id = \"MGI:\" + this.subject.id;\n        }\n        this.subjectClick = createEvent(this, \"subjectClick\", 7);\n    }\n    RibbonSubject.prototype.onSubjectClick = function (event, subject) {\n        var ev = { originalEvent: event, subject: subject };\n        this.subjectClick.emit(ev);\n    };\n    RibbonSubject.prototype.render = function () {\n        var _this = this;\n        return (h(\"td\", null, h(\"a\", { class: \"ribbon__subject__label--link\", href: this.subjectBaseURL + this.id, onClick: function (e) { _this.onSubjectClick(e, _this.subject); }, target: this.newTab ? \"_blank\" : \"_self\" }, this.subject.label + \" (\" + formatTaxonLabel(this.subject.taxon_label) + \")\")));\n    };\n    Object.defineProperty(RibbonSubject.prototype, \"el\", {\n        get: function () { return getElement(this); },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(RibbonSubject, \"style\", {\n        get: function () { return \".ribbon__subject__label--link{text-decoration:none;color:#000;font-weight:400}.ribbon__subject__label--link:hover{font-weight:700}\"; },\n        enumerable: true,\n        configurable: true\n    });\n    return RibbonSubject;\n}());\nexport { RibbonCell as wc_ribbon_cell, RibbonStrips as wc_ribbon_strips, RibbonSubject as wc_ribbon_subject };\n"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","__spreadArrays","s","i","il","arguments","r","Array","k","a","j","jl","transformID","txt","replace","groupKey","group","id","type","subjectGroupKey","subject","toRGB","array","sameArray","array1","array2","COLOR_BY","POSITION","SELECTION","EXP_CODES","CELL_TYPES","FONT_CASE","FONT_STYLE","RibbonCell","hostRef","registerInstance","classLabels","annotationLabels","colorBy","binaryColor","minColor","maxColor","maxHeatLevel","available","selected","hovered","prototype","minColorChanged","newValue","oldValue","updateMinColor","arrayMinColor","includes","split","map","elt","maxColorChanged","updateMaxColor","arrayMaxColor","annotationLabelsChanged","updateAnnotationLabels","arrayAnnotationLabels","trim","classLabelsChanged","updateClassLabels","arrayClassLabels","cellColor","nbClasses","nbAnnotations","newColor","level","fraction","Math","min","log","itemColor","round","heatColor","val","color","factor","max","darken","join","getNbClasses","nb_classes","cellid","cell","groups","undefined","getNbAnnotations","nb_annotations","hasAnnotations","componentWillLoad","render","title_1","h","title","class","el","style","setProperty","classes","Object","defineProperty","get","getElement","enumerable","configurable","RibbonStrips","class_1","baseApiUrl","subjectBaseUrl","groupBaseUrl","subset","subjects","groupMaxLabelSize","categoryCase","categoryAllStyle","categoryOtherStyle","showOtherGroup","subjectPosition","subjectOpenNewTab","groupNewTab","groupClickable","selectionMode","fireEventOnEmptyCells","addCellAll","updateOnSubjectChange","loading","onlyExperimental","groupAll","description","previouslyHovered","previouslySelected","cellClick","createEvent","cellEnter","cellLeave","groupClick","groupEnter","groupLeave","dataChanged","loadData","subjectsChanged","_this","fetchData","data","ribbonSummary","error","console","JSON","parse","getGroup","group_id","_i","_a","categories","_b","_c","gp","componentDidLoad","selectGroup","query","exp","fetch","response","json","catch","onCellEnter","formerColors","Map","ribbonElement","querySelector","classList","add","subjects_1","el_1","cursor","event","emit","onCellLeave","remove","subjects_2","overCells","subjects_3","selectCells","toggle","lastCell","subjects_4","selectedGroup","onCellClick","keys_1","keys","key","subjects_5","sub","onGroupClick","category","filterExperiment","checkbox","target","checked","onGroupEnter","onGroupLeave","renderCategory","renderSubjects","applyCategoryStyling","text","size","ending","cc0","substring","cc1","applyCategoryCase","applyCategoryBold","lc","toLowerCase","startsWith","toUpperCase","setTimeout","warn","onMouseEnter","onMouseLeave","onClick","subjectBaseURL","newTab","hasOwnProperty","RibbonSubject","endsWith","subjectClick","onSubjectClick","ev","originalEvent","href","species","formatTaxonLabel","taxon_label"],"sourceRoot":""}