@shko.online/componentframework-mock
Version:
Mocking library to help with testing PowerApps Component Framework Components
70 lines (68 loc) • 3.21 kB
JavaScript
;
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 = _ref => {
let {
componentFrameworkMockGeneratorReact,
circuitBreaker
} = _ref;
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;