UNPKG

@shko.online/componentframework-mock

Version:

Mocking library to help with testing PowerApps Component Framework Components

69 lines (67 loc) 3.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ReactResizeObserver = void 0; var _react = require("react"); var _mockNotifyOutputChanged = require("./mockNotifyOutputChanged"); var _mockRefreshDatasets = require("./mockRefreshDatasets"); var _PropertyTypes = require("../ComponentFramework-Mock/PropertyTypes"); /* Copyright (c) 2022 Betim Beja and Shko Online LLC Licensed under the MIT license. */ const ReactResizeObserver = ({ componentFrameworkMockGeneratorReact, circuitBreaker }) => { const containerRef = (0, _react.useRef)(); const [Component, setComponent] = (0, _react.useState)(/*#__PURE__*/(0, _react.createElement)(_react.Fragment)); const updateView = (0, _react.useCallback)(() => { setComponent(componentFrameworkMockGeneratorReact.control.updateView(componentFrameworkMockGeneratorReact.context)); }, [setComponent, componentFrameworkMockGeneratorReact]); (0, _react.useEffect)(() => { Object.getOwnPropertyNames(componentFrameworkMockGeneratorReact.context._parameters).forEach(p => { var parameter = componentFrameworkMockGeneratorReact.context._parameters[p]; if (parameter instanceof _PropertyTypes.DataSetMock) { parameter._updateView = updateView; } }); (0, _mockNotifyOutputChanged.mockNotifyOutputChanged)(componentFrameworkMockGeneratorReact, componentFrameworkMockGeneratorReact.control.getOutputs?.bind(componentFrameworkMockGeneratorReact.control), () => { componentFrameworkMockGeneratorReact.RefreshParameters(); updateView(); componentFrameworkMockGeneratorReact.RefreshDatasets(); }); componentFrameworkMockGeneratorReact.resizeObserver = new ResizeObserver(entries => { const size = entries[0]; componentFrameworkMockGeneratorReact.context.mode.allocatedHeight = size.contentRect.height; componentFrameworkMockGeneratorReact.context.mode.allocatedWidth = size.contentRect.width; componentFrameworkMockGeneratorReact.RefreshParameters(); updateView(); }); (0, _mockRefreshDatasets.mockRefreshDatasets)(componentFrameworkMockGeneratorReact, updateView); componentFrameworkMockGeneratorReact.context.mode.trackContainerResize.callsFake(value => { if (!containerRef.current) { console.error('Container Ref is null'); return; } if (value) componentFrameworkMockGeneratorReact.resizeObserver.observe(containerRef.current);else componentFrameworkMockGeneratorReact.resizeObserver.unobserve(containerRef.current); }); if (componentFrameworkMockGeneratorReact.context.mode._TrackingContainerResize && containerRef.current) { componentFrameworkMockGeneratorReact.resizeObserver.observe(containerRef.current); } }, []); (0, _react.useEffect)(() => { componentFrameworkMockGeneratorReact.RefreshParameters(); updateView(); componentFrameworkMockGeneratorReact.RefreshDatasets(); }, [circuitBreaker]); return /*#__PURE__*/(0, _react.createElement)('div', { style: { width: '100%', height: '100%' }, ref: containerRef }, Component); }; exports.ReactResizeObserver = ReactResizeObserver;