UNPKG

formula-treemap

Version:

한약재를 구성하는 재료(성분)들을 보기 좋게 시각화 한 리액트 컴포넌트 패키지입니다.

136 lines (119 loc) 5.82 kB
"use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireWildcard(require("react")); var _foamtree = require("@carrotsearch/foamtree"); var _useEventListener = _interopRequireDefault(require("../hooks/useEventListener")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } var defaultGroups = [{ label: '입력된 자료가 없거나' }, { label: '불러오는 중입니다' }]; var FormulaViewer = function FormulaViewer(_ref) { var _foamtree$current3; var _ref$groups = _ref.groups, groups = _ref$groups === void 0 ? defaultGroups : _ref$groups, onSelect = _ref.onSelect, onHover = _ref.onHover; var foamtreeRef = (0, _react.useRef)(null); var foamtree = (0, _react.useRef)(null); var init = function init(element) { foamtree.current = new _foamtree.FoamTree({ pixelRatio: window.devicePixelRatio || 1, relaxationQualityThreshold: 2.5, element: element, dataObject: { groups: (groups === null || groups === void 0 ? void 0 : groups.length) <= 0 || groups === null || groups === undefined ? defaultGroups : groups }, layout: 'squarified', // Disable animations fadeDuration: 500, rolloutDuration: 0, pullbackDuration: 0, // Customize borders, fill and strokes groupBorderWidth: 2, groupInsetWidth: 4, groupBorderRadius: 0.1, groupBorderRadiusCorrection: 1, groupSelectionOutlineWidth: 3.5, groupFillType: 'plain', groupStrokeWidth: 0.33, groupStrokeType: 'plain', groupStrokePlainLightnessShift: 0, groupUnexposureSaturationShift: -100, groupUnexposureLightnessShift: 200, // Allow some more time to draw finalCompleteDrawMaxDuration: 1000, finalIncrementalDrawMaxDuration: 1000, // label font style groupLabelFontWeight: '600', groupLabelMinFontSize: 12, groupLabelMaxFontSize: 44, groupLabelColorThreshold: 0.35, groupLabelFontFamily: 'Roboto', groupLabelDarkColor: '#542969', groupLabelLightColor: '#d7bbe4', // Use custom group coloring groupColorDecorator: function groupColorDecorator(opts, props, vars) { var group = props.group; if (group) { vars.groupColor = group.color || '#e5d3ed'; } else { vars.groupColor = '#f0f0f0'; vars.labelColor = '#000'; } }, onGroupSelectionChanged: function onGroupSelectionChanged(info) { if (info.groups.length >= 2) { return false; } else { onSelect(info); } }, onGroupHover: function onGroupHover(info) { onHover(info.group); }, onGroupDoubleClick: function onGroupDoubleClick() { return false; }, onGroupExposureChanged: [function (info) { window.console.log('exposed 1', info); }] }); }; (0, _useEventListener.default)('resize', function () { var timeout; return function () { window.clearTimeout(timeout); timeout = window.setTimeout(function () { var _foamtree$current, _foamtree$current2; (_foamtree$current = foamtree.current) === null || _foamtree$current === void 0 ? void 0 : _foamtree$current.set('pixelRatio', window.devicePixelRatio || 1); (_foamtree$current2 = foamtree.current) === null || _foamtree$current2 === void 0 ? void 0 : _foamtree$current2.resize(); }, 300); }; }()); (0, _useEventListener.default)('orientationchange', (_foamtree$current3 = foamtree.current) === null || _foamtree$current3 === void 0 ? void 0 : _foamtree$current3.resize); (0, _react.useEffect)(function () { init(foamtreeRef.current); return function cleanup() { var _foamtree$current4; (_foamtree$current4 = foamtree.current) === null || _foamtree$current4 === void 0 ? void 0 : _foamtree$current4.dispose(); }; // eslint-disable-next-line }, []); return /*#__PURE__*/_react.default.createElement("div", { ref: foamtreeRef, style: { backgroundColor: '#eee', witdth: '100%', height: '100%' } }); }; var _default = FormulaViewer; exports.default = _default;