UNPKG

datocms-plugin-sdk

Version:
129 lines 4.53 kB
var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; export function pick(obj, keys) { var result = {}; for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) { var key = keys_1[_i]; if (key in obj) { result[key] = obj[key]; } } return result; } export function omit(obj, keys) { var result = __assign({}, obj); for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) { var key = keys_2[_i]; delete result[key]; } return result; } export function fromOneFieldIntoMultipleAndResultsById(fn) { return function (fields, ctx) { if (!fn) { return undefined; } var result = {}; for (var _i = 0, fields_1 = fields; _i < fields_1.length; _i++) { var field = fields_1[_i]; var itemType = ctx.itemTypes[field.relationships.item_type.data.id]; result[field.id] = fn(field, __assign(__assign({}, ctx), { itemType: itemType })); } return result; }; } export function containedRenderModeBootstrapper(mode, callConfigurationMethod) { var bootstrapper = function (connectConfiguration, methods, initialProperties) { if (initialProperties.mode !== mode) { return undefined; } var sizingUtilities = buildSizingUtilities(methods); var render = function (properties) { callConfigurationMethod(connectConfiguration, __assign(__assign(__assign({}, methods), properties), sizingUtilities)); }; render(initialProperties); return render; }; bootstrapper.mode = mode; return bootstrapper; } export function fullScreenRenderModeBootstrapper(mode, callConfigurationMethod) { var bootstrapper = function (connectConfiguration, methods, initialProperties) { if (initialProperties.mode !== mode) { return undefined; } var render = function (properties) { callConfigurationMethod(connectConfiguration, __assign(__assign({}, methods), properties)); }; render(initialProperties); return render; }; bootstrapper.mode = mode; return bootstrapper; } function getMaxScrollHeight() { var elements = document.querySelectorAll('body *'); var maxVal = 0; for (var i = 0; i < elements.length; i++) { maxVal = Math.max(elements[i].getBoundingClientRect().bottom, maxVal); } return maxVal; } var buildSizingUtilities = function (methods) { var oldHeight = null; var updateHeight = function (height) { var realHeight = height === undefined ? Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.getBoundingClientRect().height, getMaxScrollHeight()) : height; if (realHeight !== oldHeight) { methods.setHeight(realHeight); oldHeight = realHeight; } }; var resizeObserver = null; var mutationObserver = null; var onMutation = function () { return updateHeight(); }; var startAutoResizer = function () { updateHeight(); if (!resizeObserver) { resizeObserver = new ResizeObserver(onMutation); resizeObserver.observe(document.documentElement); } if (!mutationObserver) { mutationObserver = new MutationObserver(onMutation); mutationObserver.observe(window.document.body, { attributes: true, childList: true, subtree: true, characterData: true, }); } }; var stopAutoResizer = function () { if (resizeObserver) { resizeObserver.disconnect(); resizeObserver = null; } if (mutationObserver) { mutationObserver.disconnect(); mutationObserver = null; } }; var isAutoResizerActive = function () { return Boolean(resizeObserver); }; return { updateHeight: updateHeight, startAutoResizer: startAutoResizer, stopAutoResizer: stopAutoResizer, isAutoResizerActive: isAutoResizerActive, }; }; //# sourceMappingURL=utils.js.map