UNPKG

alignment.js

Version:

A suite of reusable [React](http://reactjs.org/) components for creating a variety of visualizations involving [multiple sequence alignments](https://en.wikipedia.org/wiki/Multiple_sequence_alignment). [View the live demo here](http://alignment.hyphy.org/

67 lines (55 loc) 2.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _react = _interopRequireDefault(require("react")); var _BaseSVGAlignment = _interopRequireDefault(require("./components/BaseSVGAlignment.js")); var _SVGSiteAxis = _interopRequireDefault(require("./components/SVGSiteAxis.js")); var _SequenceAxis = require("./components/SequenceAxis.js"); var _computeLabelWidth = _interopRequireDefault(require("./helpers/computeLabelWidth")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function SVGAlignment(props) { var sequence_data = props.sequence_data, label_padding = props.label_padding, site_size = props.site_size; if (!sequence_data) { return /*#__PURE__*/_react["default"].createElement("svg", null); } var number_of_sites = sequence_data.number_of_sites, number_of_sequences = sequence_data.number_of_sequences, label_width = (0, _computeLabelWidth["default"])(sequence_data, label_padding), width = label_width + site_size * number_of_sites, height = props.axis_height + site_size * number_of_sequences; return /*#__PURE__*/_react["default"].createElement("svg", { id: "alignment-js-svg", style: { width: width, height: height } }, /*#__PURE__*/_react["default"].createElement("rect", { x: 0, y: 0, width: width, height: height, fill: "white" }), /*#__PURE__*/_react["default"].createElement(_SVGSiteAxis["default"], _extends({}, props, { number_of_sites: number_of_sites, translateX: label_width, translateY: props.axis_height })), /*#__PURE__*/_react["default"].createElement(_SequenceAxis.BaseSequenceAxis, _extends({}, props, { width: label_width, translateY: props.axis_height })), /*#__PURE__*/_react["default"].createElement(_BaseSVGAlignment["default"], _extends({}, props, { translateX: label_width, translateY: props.axis_height }))); } SVGAlignment.defaultProps = { label_padding: 10, site_size: 20, axis_height: 25 }; var _default = SVGAlignment; exports["default"] = _default;