@flexis/ui
Version:
Styleless React Components
94 lines (78 loc) • 5.39 kB
JavaScript
import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
import _bindInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/bind";
import _classCallCheck from "@babel/runtime-corejs3/helpers/classCallCheck";
import _createClass from "@babel/runtime-corejs3/helpers/createClass";
import { ResizeObserver } from './ResizeObserver';
export var ColumnsSyncObserver = /*#__PURE__*/function () {
function ColumnsSyncObserver(callback) {
var _context;
_classCallCheck(this, ColumnsSyncObserver);
this.ro = null;
this.callback = null;
this.source = null;
this.target = null;
this.callback = callback;
this.ro = new ResizeObserver(_bindInstanceProperty(_context = this.sync).call(_context, this));
}
_createClass(ColumnsSyncObserver, [{
key: "observe",
value: function observe(source, target) {
var prevSource = this.source,
ro = this.ro;
if (source === null || target === null) {
return;
}
this.source = source;
this.target = target;
if (source !== prevSource) {
var _context2;
ro.disconnect();
_forEachInstanceProperty(_context2 = _Array$from(source.children)).call(_context2, function (cell) {
ro.observe(cell);
});
}
this.sync();
}
}, {
key: "sync",
value: function sync() {
var entries = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var observer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.ro;
var callback = this.callback,
source = this.source,
target = this.target;
if (source !== null && target !== null) {
syncColumns(source, target);
}
if (typeof callback === 'function') {
callback(entries, observer);
}
}
}, {
key: "destroy",
value: function destroy() {
this.ro.disconnect();
this.ro = null;
this.callback = null;
this.source = null;
this.target = null;
}
}]);
return ColumnsSyncObserver;
}();
export function syncColumns(sourceRow, targetRow) {
var sourceChildren = _Array$from(sourceRow.children);
var targetChildren = _Array$from(targetRow.children);
var columnsWidths = _mapInstanceProperty(sourceChildren).call(sourceChildren, function (cell) {
return cell.offsetWidth;
});
var sourceChildrenCount = sourceChildren.length;
_forEachInstanceProperty(targetChildren).call(targetChildren, function (cell, i) {
if (i < sourceChildrenCount) {
cell.style.width = "".concat(columnsWidths[i], "px");
}
});
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oZWxwZXJzL0NvbHVtbnNTeW5jT2JzZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsU0FDQyxjQURELFFBSU8sa0JBSlA7QUFNQSxXQUFhLG1CQUFiO0FBT0MsK0JBQVksUUFBWixFQUE2QztBQUFBOztBQUFBOztBQUxyQyxTQUFBLEVBQUEsR0FBcUIsSUFBckI7QUFDQSxTQUFBLFFBQUEsR0FBbUMsSUFBbkM7QUFDQSxTQUFBLE1BQUEsR0FBc0IsSUFBdEI7QUFDQSxTQUFBLE1BQUEsR0FBc0IsSUFBdEI7QUFHUCxTQUFLLFFBQUwsR0FBZ0IsUUFBaEI7QUFDQSxTQUFLLEVBQUwsR0FBVSxJQUFJLGNBQUosQ0FBbUIsc0NBQUssSUFBTCxpQkFBZSxJQUFmLENBQW5CLENBQVY7QUFDQTs7QUFWRjtBQUFBO0FBQUEsNEJBWVMsTUFaVCxFQVk4QixNQVo5QixFQVlpRDtBQUFBLFVBR3RDLFVBSHNDLEdBSzNDLElBTDJDLENBRzlDLE1BSDhDO0FBQUEsVUFJOUMsRUFKOEMsR0FLM0MsSUFMMkMsQ0FJOUMsRUFKOEM7O0FBTy9DLFVBQUksTUFBTSxLQUFLLElBQVgsSUFBbUIsTUFBTSxLQUFLLElBQWxDLEVBQXdDO0FBQ3ZDO0FBQ0E7O0FBRUQsV0FBSyxNQUFMLEdBQWMsTUFBZDtBQUNBLFdBQUssTUFBTCxHQUFjLE1BQWQ7O0FBRUEsVUFBSSxNQUFNLEtBQUssVUFBZixFQUEyQjtBQUFBOztBQUMxQixRQUFBLEVBQUUsQ0FBQyxVQUFIOztBQUNBLHlEQUFXLE1BQU0sQ0FBQyxRQUFsQixtQkFBb0MsVUFBQyxJQUFELEVBQVM7QUFDNUMsVUFBQSxFQUFFLENBQUMsT0FBSCxDQUFXLElBQVg7QUFDQSxTQUZEO0FBR0E7O0FBRUQsV0FBSyxJQUFMO0FBQ0E7QUFsQ0Y7QUFBQTtBQUFBLDJCQW9DNkU7QUFBQSxVQUF2RSxPQUF1RSx1RUFBdEMsRUFBc0M7QUFBQSxVQUFsQyxRQUFrQyx1RUFBUCxLQUFLLEVBQUU7QUFBQSxVQUcxRSxRQUgwRSxHQU12RSxJQU51RSxDQUcxRSxRQUgwRTtBQUFBLFVBSTFFLE1BSjBFLEdBTXZFLElBTnVFLENBSTFFLE1BSjBFO0FBQUEsVUFLMUUsTUFMMEUsR0FNdkUsSUFOdUUsQ0FLMUUsTUFMMEU7O0FBUTNFLFVBQUksTUFBTSxLQUFLLElBQVgsSUFBbUIsTUFBTSxLQUFLLElBQWxDLEVBQXdDO0FBQ3ZDLFFBQUEsV0FBVyxDQUFDLE1BQUQsRUFBUyxNQUFULENBQVg7QUFDQTs7QUFFRCxVQUFJLE9BQU8sUUFBUCxLQUFvQixVQUF4QixFQUFvQztBQUNuQyxRQUFBLFFBQVEsQ0FBQyxPQUFELEVBQVUsUUFBVixDQUFSO0FBQ0E7QUFDRDtBQW5ERjtBQUFBO0FBQUEsOEJBcURRO0FBQ04sV0FBSyxFQUFMLENBQVEsVUFBUjtBQUNBLFdBQUssRUFBTCxHQUFVLElBQVY7QUFDQSxXQUFLLFFBQUwsR0FBZ0IsSUFBaEI7QUFDQSxXQUFLLE1BQUwsR0FBYyxJQUFkO0FBQ0EsV0FBSyxNQUFMLEdBQWMsSUFBZDtBQUNBO0FBM0RGOztBQUFBO0FBQUE7QUE4REEsT0FBTSxTQUFVLFdBQVYsQ0FBc0IsU0FBdEIsRUFBOEMsU0FBOUMsRUFBb0U7QUFFekUsTUFBTSxjQUFjLEdBQUcsWUFBVyxTQUFTLENBQUMsUUFBckIsQ0FBdkI7O0FBQ0EsTUFBTSxjQUFjLEdBQUcsWUFBVyxTQUFTLENBQUMsUUFBckIsQ0FBdkI7O0FBQ0EsTUFBTSxhQUFhLEdBQUcscUJBQUEsY0FBYyxNQUFkLENBQUEsY0FBYyxFQUFLLFVBQUEsSUFBSTtBQUFBLFdBQUksSUFBSSxDQUFDLFdBQVQ7QUFBQSxHQUFULENBQXBDOztBQUNBLE1BQU0sbUJBQW1CLEdBQUcsY0FBYyxDQUFDLE1BQTNDOztBQUVBLDJCQUFBLGNBQWMsTUFBZCxDQUFBLGNBQWMsRUFBUyxVQUFDLElBQUQsRUFBTyxDQUFQLEVBQVk7QUFFbEMsUUFBSSxDQUFDLEdBQUcsbUJBQVIsRUFBNkI7QUFDNUIsTUFBQSxJQUFJLENBQUMsS0FBTCxDQUFXLEtBQVgsYUFBc0IsYUFBYSxDQUFDLENBQUQsQ0FBbkM7QUFDQTtBQUNELEdBTGEsQ0FBZDtBQU1BIiwic291cmNlUm9vdCI6IiJ9