formula-treemap
Version:
한약재를 구성하는 재료(성분)들을 보기 좋게 시각화 한 리액트 컴포넌트 패키지입니다.
136 lines (119 loc) • 5.82 kB
JavaScript
;
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;