{"version":3,"file":"basefunctions.448be88e.js","sources":["../../../node_modules/@fluentui/utilities/lib/Async.js","../../../node_modules/@fluentui/dom-utilities/lib/isVirtualElement.js","../../../node_modules/@fluentui/dom-utilities/lib/getVirtualParent.js","../../../node_modules/@fluentui/dom-utilities/lib/getParent.js","../../../node_modules/@fluentui/dom-utilities/lib/elementContains.js","../../../node_modules/@fluentui/dom-utilities/lib/findElementRecursive.js","../../../node_modules/@fluentui/dom-utilities/lib/elementContainsAttribute.js","../../../node_modules/@fluentui/dom-utilities/lib/setPortalAttribute.js","../../../node_modules/@fluentui/dom-utilities/lib/portalContainsElement.js","../../../node_modules/@fluentui/dom-utilities/lib/setVirtualParent.js","../../../node_modules/@fluentui/utilities/lib/focus.js","../../../node_modules/@fluentui/utilities/lib/dom/on.js","../../../node_modules/@fluentui/utilities/lib/object.js","../../../node_modules/@fluentui/utilities/lib/EventGroup.js","../../../node_modules/@fluentui/merge-styles/lib/mergeStyles.js","../../../node_modules/@fluentui/merge-styles/lib/concatStyleSetsWithProps.js","../../../node_modules/@fluentui/merge-styles/lib/keyframes.js","../../../node_modules/@fluentui/utilities/lib/scroll.js","../../../node_modules/@fluentui/utilities/lib/warn/warn.js","../../../node_modules/@fluentui/utilities/lib/warn/warnConditionallyRequiredProps.js","../../../node_modules/@fluentui/utilities/lib/BaseComponent.js","../../../node_modules/@fluentui/utilities/lib/KeyCodes.js","../../../node_modules/@fluentui/utilities/lib/Rectangle.js","../../../node_modules/@fluentui/utilities/lib/appendFunction.js","../../../node_modules/@fluentui/utilities/lib/aria.js","../../../node_modules/@fluentui/utilities/lib/array.js","../../../node_modules/@fluentui/utilities/lib/rtl.js","../../../node_modules/@fluentui/utilities/lib/classNamesFunction.js","../../../node_modules/@fluentui/utilities/lib/memoize.js","../../../node_modules/@fluentui/utilities/lib/componentAs/composeComponentAs.js","../../../node_modules/@fluentui/utilities/lib/css.js","../../../node_modules/@fluentui/utilities/lib/customizations/CustomizerContext.js","../../../node_modules/@fluentui/utilities/lib/customizations/mergeSettings.js","../../../node_modules/@fluentui/utilities/lib/customizations/mergeCustomizations.js","../../../node_modules/@fluentui/utilities/lib/customizations/Customizer.js","../../../node_modules/@fluentui/utilities/lib/hoistStatics.js","../../../node_modules/@fluentui/utilities/lib/shadowDom/contexts/MergeStylesDefaultContext.js","../../../node_modules/@fluentui/utilities/lib/shadowDom/hooks/useMergeStylesHooks.js","../../../node_modules/@fluentui/utilities/lib/shadowDom/contexts/MergeStylesShadowRootContext.js","../../../node_modules/@fluentui/utilities/lib/shadowDom/hooks/useMergeStylesShadowRoot.js","../../../node_modules/@fluentui/utilities/lib/shadowDom/contexts/MergeStylesShadowRootConsumer.js","../../../node_modules/@fluentui/react-window-provider/lib/WindowProvider.js","../../../node_modules/@fluentui/utilities/lib/customizations/customizable.js","../../../node_modules/@fluentui/utilities/lib/customizations/useCustomizationSettings.js","../../../node_modules/@fluentui/utilities/lib/extendComponent.js","../../../node_modules/@fluentui/utilities/lib/getId.js","../../../node_modules/@fluentui/utilities/lib/properties.js","../../../node_modules/@fluentui/utilities/lib/hoist.js","../../../node_modules/@fluentui/utilities/lib/initializeComponentRef.js","../../../node_modules/@fluentui/utilities/lib/keyboard.js","../../../node_modules/@fluentui/utilities/lib/setFocusVisibility.js","../../../node_modules/@fluentui/utilities/lib/useFocusRects.js","../../../node_modules/@fluentui/utilities/lib/FocusRectsProvider.js","../../../node_modules/@fluentui/utilities/lib/mobileDetector.js","../../../node_modules/@fluentui/utilities/lib/modalize.js","../../../node_modules/@fluentui/utilities/lib/osDetector.js","../../../node_modules/@fluentui/utilities/lib/renderFunction/composeRenderFunction.js","../../../node_modules/@fluentui/utilities/lib/styled.js","../../../node_modules/@fluentui/utilities/lib/getPropsWithDefaults.js","../../../node_modules/@fluentui/utilities/lib/createMergedRef.js","../../../node_modules/@fluentui/utilities/lib/useIsomorphicLayoutEffect.js","../../../node_modules/@fluentui/react-hooks/lib/useAsync.js","../../../node_modules/@fluentui/react-hooks/lib/useConst.js","../../../node_modules/@fluentui/react-hooks/lib/useId.js","../../../node_modules/@fluentui/react-hooks/lib/useMergedRefs.js","../../../node_modules/@fluentui/react-hooks/lib/useOnEvent.js","../../../node_modules/@fluentui/react-hooks/lib/usePrevious.js","../../../node_modules/@fluentui/react-hooks/lib/useTarget.js","../../../node_modules/@fluentui/react/lib/utilities/keytips/KeytipConstants.js","../../../node_modules/@fluentui/react/lib/utilities/keytips/KeytipManager.js","../../../node_modules/@fluentui/react/lib/utilities/dom.js","../../../node_modules/@fluentui/react-focus/lib/components/FocusZone/FocusZone.types.js","../../../node_modules/@fluentui/style-utilities/lib/utilities/buildClassMap.js","../../../node_modules/@fluentui/style-utilities/lib/utilities/icons.js","../../../node_modules/@fluentui/theme/lib/motion/AnimationStyles.js","../../../node_modules/@fluentui/style-utilities/lib/styles/CommonStyles.js","../../../node_modules/@fluentui/style-utilities/lib/styles/zIndexes.js","../../../node_modules/@fluentui/style-utilities/lib/styles/getFocusStyle.js","../../../node_modules/@fluentui/style-utilities/lib/styles/hiddenContentStyle.js","../../../node_modules/@fluentui/style-utilities/lib/styles/getGlobalClassNames.js","../../../node_modules/@fluentui/style-utilities/lib/classNames/AnimationClassNames.js","../../../node_modules/@fluentui/react-focus/lib/components/FocusZone/FocusZone.js","../../../node_modules/@fluentui/react/lib/components/Icon/Icon.types.js","../../../node_modules/@fluentui/react/lib/components/Image/Image.types.js","../../../node_modules/@fluentui/react/lib/components/Image/Image.base.js","../../../node_modules/@fluentui/react/lib/components/Image/Image.styles.js","../../../node_modules/@fluentui/react/lib/components/Image/Image.js","../../../node_modules/@fluentui/react/lib/components/Icon/Icon.styles.js","../../../node_modules/@fluentui/react/lib/components/Icon/FontIcon.js","../../../node_modules/@fluentui/react/lib/components/Icon/Icon.base.js","../../../node_modules/@fluentui/react/lib/components/Icon/Icon.js","../../../node_modules/@fluentui/react/lib/components/Icon/ImageIcon.js","../../../node_modules/@fluentui/react/lib/common/DirectionalHint.js","../../../node_modules/@fluentui/react/lib/components/ContextualMenu/ContextualMenu.types.js","../../../node_modules/@fluentui/react/lib/utilities/contextualMenu/contextualMenuUtility.js","../../../node_modules/@fluentui/react/lib/utilities/positioning/positioning.types.js","../../../node_modules/@fluentui/react/lib/utilities/positioning/positioning.js","../../../node_modules/@fluentui/react/lib/components/Popup/Popup.js","../../../node_modules/@fluentui/react/lib/components/Callout/CalloutContent.base.js","../../../node_modules/@fluentui/react/lib/components/Callout/CalloutContent.styles.js","../../../node_modules/@fluentui/react/lib/components/Callout/CalloutContent.js","../../../node_modules/@fluentui/react-portal-compat-context/lib/PortalCompatContext.js","../../../node_modules/@fluentui/react/lib/components/Fabric/Fabric.base.js","../../../node_modules/@fluentui/react/lib/components/Fabric/Fabric.styles.js","../../../node_modules/@fluentui/react/lib/components/Fabric/Fabric.js","../../../node_modules/@fluentui/react/lib/components/Layer/Layer.notification.js","../../../node_modules/@fluentui/react/lib/components/Layer/Layer.base.js","../../../node_modules/@fluentui/react/lib/components/Layer/Layer.styles.js","../../../node_modules/@fluentui/react/lib/components/Layer/Layer.js","../../../node_modules/@fluentui/react/lib/components/Callout/Callout.js","../../../node_modules/@fluentui/react/lib/components/ContextualMenu/ContextualMenuItem.base.js","../../../node_modules/@fluentui/react/lib/components/Divider/VerticalDivider.classNames.js","../../../node_modules/@fluentui/react/lib/components/ContextualMenu/ContextualMenu.cnstyles.js","../../../node_modules/@fluentui/react/lib/components/ContextualMenu/ContextualMenu.classNames.js","../../../node_modules/@fluentui/react/lib/components/ContextualMenu/ContextualMenuItem.js","../../../node_modules/@fluentui/react/lib/components/ContextualMenu/ContextualMenuItemWrapper/ContextualMenuItemWrapper.js","../../../node_modules/@fluentui/react/lib/utilities/keytips/KeytipUtils.js","../../../node_modules/@fluentui/react/lib/components/KeytipData/useKeytipData.js","../../../node_modules/@fluentui/react/lib/components/KeytipData/KeytipData.js","../../../node_modules/@fluentui/react/lib/components/ContextualMenu/ContextualMenuItemWrapper/ContextualMenuAnchor.js","../../../node_modules/@fluentui/react/lib/components/ContextualMenu/ContextualMenuItemWrapper/ContextualMenuButton.js","../../../node_modules/@fluentui/react/lib/components/Divider/VerticalDivider.styles.js","../../../node_modules/@fluentui/react/lib/components/Divider/VerticalDivider.base.js","../../../node_modules/@fluentui/react/lib/components/Divider/VerticalDivider.js","../../../node_modules/@fluentui/react/lib/components/ContextualMenu/ContextualMenuItemWrapper/ContextualMenuSplitButton.js","../../../node_modules/@fluentui/react/lib/utilities/decorators/BaseDecorator.js","../../../node_modules/@fluentui/react/lib/utilities/decorators/withResponsiveMode.js","../../../node_modules/@fluentui/react/lib/utilities/hooks/useResponsiveMode.js","../../../node_modules/@fluentui/react/lib/utilities/MenuContext/MenuContext.js","../../../node_modules/@fluentui/react/lib/components/ContextualMenu/ContextualMenu.base.js","../../../node_modules/@fluentui/react/lib/components/ContextualMenu/ContextualMenu.styles.js","../../../node_modules/@fluentui/react/lib/components/ContextualMenu/ContextualMenu.js","../../../node_modules/@fluentui/react/lib/components/Button/BaseButton.classNames.js","../../../node_modules/@fluentui/react/lib/components/Button/SplitButton/SplitButton.classNames.js","../../../node_modules/@fluentui/react/lib/components/Button/BaseButton.js","../../../node_modules/@fluentui/react/lib/components/Button/BaseButton.styles.js","../../../node_modules/@fluentui/react/lib/components/Button/SplitButton/SplitButton.styles.js","../../../node_modules/@fluentui/react/lib/components/Button/IconButton/IconButton.styles.js","../../../node_modules/@fluentui/react/lib/components/Button/IconButton/IconButton.js","../../../ts/apiFunctions/baseFunctions/baseFunctions.ts","../../../ts/components/ddentities.d.ts","../../../ts/apiFunctions/baseFunctions/adminFunctions.ts","../../../node_modules/compressorjs/dist/compressor.esm.js","../../../ts/components/basefunctions.tsx"],"sourcesContent":["import { getWindow } from './dom/getWindow';\n/**\n * Bugs often appear in async code when stuff gets disposed, but async operations don't get canceled.\n * This Async helper class solves these issues by tying async code to the lifetime of a disposable object.\n *\n * Usage: Anything class extending from BaseModel can access this helper via this.async. Otherwise create a\n * new instance of the class and remember to call dispose() during your code's dispose handler.\n *\n * @public\n */\nvar Async = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function Async(parent, onError) {\n this._timeoutIds = null;\n this._immediateIds = null;\n this._intervalIds = null;\n this._animationFrameIds = null;\n this._isDisposed = false;\n this._parent = parent || null;\n this._onErrorHandler = onError;\n this._noop = function () {\n /* do nothing */\n };\n }\n /**\n * Dispose function, clears all async operations.\n */\n Async.prototype.dispose = function () {\n var id;\n this._isDisposed = true;\n this._parent = null;\n // Clear timeouts.\n if (this._timeoutIds) {\n for (id in this._timeoutIds) {\n if (this._timeoutIds.hasOwnProperty(id)) {\n this.clearTimeout(parseInt(id, 10));\n }\n }\n this._timeoutIds = null;\n }\n // Clear immediates.\n if (this._immediateIds) {\n for (id in this._immediateIds) {\n if (this._immediateIds.hasOwnProperty(id)) {\n this.clearImmediate(parseInt(id, 10));\n }\n }\n this._immediateIds = null;\n }\n // Clear intervals.\n if (this._intervalIds) {\n for (id in this._intervalIds) {\n if (this._intervalIds.hasOwnProperty(id)) {\n this.clearInterval(parseInt(id, 10));\n }\n }\n this._intervalIds = null;\n }\n // Clear animation frames.\n if (this._animationFrameIds) {\n for (id in this._animationFrameIds) {\n if (this._animationFrameIds.hasOwnProperty(id)) {\n this.cancelAnimationFrame(parseInt(id, 10));\n }\n }\n this._animationFrameIds = null;\n }\n };\n /**\n * SetTimeout override, which will auto cancel the timeout during dispose.\n * @param callback - Callback to execute.\n * @param duration - Duration in milliseconds.\n * @returns The setTimeout id.\n */\n Async.prototype.setTimeout = function (callback, duration) {\n var _this = this;\n var timeoutId = 0;\n if (!this._isDisposed) {\n if (!this._timeoutIds) {\n this._timeoutIds = {};\n }\n timeoutId = setTimeout(function () {\n // Time to execute the timeout, enqueue it as a foreground task to be executed.\n try {\n // Now delete the record and call the callback.\n if (_this._timeoutIds) {\n delete _this._timeoutIds[timeoutId];\n }\n callback.apply(_this._parent);\n }\n catch (e) {\n _this._logError(e);\n }\n }, duration);\n this._timeoutIds[timeoutId] = true;\n }\n return timeoutId;\n };\n /**\n * Clears the timeout.\n * @param id - Id to cancel.\n */\n Async.prototype.clearTimeout = function (id) {\n if (this._timeoutIds && this._timeoutIds[id]) {\n clearTimeout(id);\n delete this._timeoutIds[id];\n }\n };\n /**\n * SetImmediate override, which will auto cancel the immediate during dispose.\n * @param callback - Callback to execute.\n * @param targetElement - Optional target element to use for identifying the correct window.\n * @returns The setTimeout id.\n */\n Async.prototype.setImmediate = function (callback, targetElement) {\n var _this = this;\n var immediateId = 0;\n var win = getWindow(targetElement);\n if (!this._isDisposed) {\n if (!this._immediateIds) {\n this._immediateIds = {};\n }\n var setImmediateCallback = function () {\n // Time to execute the timeout, enqueue it as a foreground task to be executed.\n try {\n // Now delete the record and call the callback.\n if (_this._immediateIds) {\n delete _this._immediateIds[immediateId];\n }\n callback.apply(_this._parent);\n }\n catch (e) {\n _this._logError(e);\n }\n };\n immediateId = win.setTimeout(setImmediateCallback, 0);\n this._immediateIds[immediateId] = true;\n }\n return immediateId;\n };\n /**\n * Clears the immediate.\n * @param id - Id to cancel.\n * @param targetElement - Optional target element to use for identifying the correct window.\n */\n Async.prototype.clearImmediate = function (id, targetElement) {\n var win = getWindow(targetElement);\n if (this._immediateIds && this._immediateIds[id]) {\n win.clearTimeout(id);\n delete this._immediateIds[id];\n }\n };\n /**\n * SetInterval override, which will auto cancel the timeout during dispose.\n * @param callback - Callback to execute.\n * @param duration - Duration in milliseconds.\n * @returns The setTimeout id.\n */\n Async.prototype.setInterval = function (callback, duration) {\n var _this = this;\n var intervalId = 0;\n if (!this._isDisposed) {\n if (!this._intervalIds) {\n this._intervalIds = {};\n }\n intervalId = setInterval(function () {\n // Time to execute the interval callback, enqueue it as a foreground task to be executed.\n try {\n callback.apply(_this._parent);\n }\n catch (e) {\n _this._logError(e);\n }\n }, duration);\n this._intervalIds[intervalId] = true;\n }\n return intervalId;\n };\n /**\n * Clears the interval.\n * @param id - Id to cancel.\n */\n Async.prototype.clearInterval = function (id) {\n if (this._intervalIds && this._intervalIds[id]) {\n clearInterval(id);\n delete this._intervalIds[id];\n }\n };\n /**\n * Creates a function that, when executed, will only call the func function at most once per\n * every wait milliseconds. Provide an options object to indicate that func should be invoked\n * on the leading and/or trailing edge of the wait timeout. Subsequent calls to the throttled\n * function will return the result of the last func call.\n *\n * Note: If leading and trailing options are true func will be called on the trailing edge of\n * the timeout only if the throttled function is invoked more than once during the wait timeout.\n *\n * @param func - The function to throttle.\n * @param wait - The number of milliseconds to throttle executions to. Defaults to 0.\n * @param options - The options object.\n * @returns The new throttled function.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Async.prototype.throttle = function (func, wait, options) {\n var _this = this;\n if (this._isDisposed) {\n return this._noop;\n }\n var waitMS = wait || 0;\n var leading = true;\n var trailing = true;\n var lastExecuteTime = 0;\n var lastResult;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var lastArgs;\n var timeoutId = null;\n if (options && typeof options.leading === 'boolean') {\n leading = options.leading;\n }\n if (options && typeof options.trailing === 'boolean') {\n trailing = options.trailing;\n }\n var callback = function (userCall) {\n var now = Date.now();\n var delta = now - lastExecuteTime;\n var waitLength = leading ? waitMS - delta : waitMS;\n if (delta >= waitMS && (!userCall || leading)) {\n lastExecuteTime = now;\n if (timeoutId) {\n _this.clearTimeout(timeoutId);\n timeoutId = null;\n }\n lastResult = func.apply(_this._parent, lastArgs);\n }\n else if (timeoutId === null && trailing) {\n timeoutId = _this.setTimeout(callback, waitLength);\n }\n return lastResult;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var resultFunction = (function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n lastArgs = args;\n return callback(true);\n });\n return resultFunction;\n };\n /**\n * Creates a function that will delay the execution of func until after wait milliseconds have\n * elapsed since the last time it was invoked. Provide an options object to indicate that func\n * should be invoked on the leading and/or trailing edge of the wait timeout. Subsequent calls\n * to the debounced function will return the result of the last func call.\n *\n * Note: If leading and trailing options are true func will be called on the trailing edge of\n * the timeout only if the debounced function is invoked more than once during the wait\n * timeout.\n *\n * @param func - The function to debounce.\n * @param wait - The number of milliseconds to delay.\n * @param options - The options object.\n * @returns The new debounced function.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Async.prototype.debounce = function (func, wait, options) {\n var _this = this;\n if (this._isDisposed) {\n var noOpFunction = (function () {\n /** Do nothing */\n });\n noOpFunction.cancel = function () {\n return;\n };\n noOpFunction.flush = (function () { return null; });\n noOpFunction.pending = function () { return false; };\n return noOpFunction;\n }\n var waitMS = wait || 0;\n var leading = false;\n var trailing = true;\n var maxWait = null;\n var lastCallTime = 0;\n var lastExecuteTime = Date.now();\n var lastResult;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var lastArgs;\n var timeoutId = null;\n if (options && typeof options.leading === 'boolean') {\n leading = options.leading;\n }\n if (options && typeof options.trailing === 'boolean') {\n trailing = options.trailing;\n }\n if (options && typeof options.maxWait === 'number' && !isNaN(options.maxWait)) {\n maxWait = options.maxWait;\n }\n var markExecuted = function (time) {\n if (timeoutId) {\n _this.clearTimeout(timeoutId);\n timeoutId = null;\n }\n lastExecuteTime = time;\n };\n var invokeFunction = function (time) {\n markExecuted(time);\n lastResult = func.apply(_this._parent, lastArgs);\n };\n var callback = function (userCall) {\n var now = Date.now();\n var executeImmediately = false;\n if (userCall) {\n if (leading && now - lastCallTime >= waitMS) {\n executeImmediately = true;\n }\n lastCallTime = now;\n }\n var delta = now - lastCallTime;\n var waitLength = waitMS - delta;\n var maxWaitDelta = now - lastExecuteTime;\n var maxWaitExpired = false;\n if (maxWait !== null) {\n // maxWait only matters when there is a pending callback\n if (maxWaitDelta >= maxWait && timeoutId) {\n maxWaitExpired = true;\n }\n else {\n waitLength = Math.min(waitLength, maxWait - maxWaitDelta);\n }\n }\n if (delta >= waitMS || maxWaitExpired || executeImmediately) {\n invokeFunction(now);\n }\n else if ((timeoutId === null || !userCall) && trailing) {\n timeoutId = _this.setTimeout(callback, waitLength);\n }\n return lastResult;\n };\n var pending = function () {\n return !!timeoutId;\n };\n var cancel = function () {\n if (pending()) {\n // Mark the debounced function as having executed\n markExecuted(Date.now());\n }\n };\n var flush = function () {\n if (pending()) {\n invokeFunction(Date.now());\n }\n return lastResult;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var resultFunction = (function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n lastArgs = args;\n return callback(true);\n });\n resultFunction.cancel = cancel;\n resultFunction.flush = flush;\n resultFunction.pending = pending;\n return resultFunction;\n };\n Async.prototype.requestAnimationFrame = function (callback, targetElement) {\n var _this = this;\n var animationFrameId = 0;\n var win = getWindow(targetElement);\n if (!this._isDisposed) {\n if (!this._animationFrameIds) {\n this._animationFrameIds = {};\n }\n var animationFrameCallback = function () {\n try {\n // Now delete the record and call the callback.\n if (_this._animationFrameIds) {\n delete _this._animationFrameIds[animationFrameId];\n }\n callback.apply(_this._parent);\n }\n catch (e) {\n _this._logError(e);\n }\n };\n animationFrameId = win.requestAnimationFrame\n ? win.requestAnimationFrame(animationFrameCallback)\n : win.setTimeout(animationFrameCallback, 0);\n this._animationFrameIds[animationFrameId] = true;\n }\n return animationFrameId;\n };\n Async.prototype.cancelAnimationFrame = function (id, targetElement) {\n var win = getWindow(targetElement);\n if (this._animationFrameIds && this._animationFrameIds[id]) {\n win.cancelAnimationFrame ? win.cancelAnimationFrame(id) : win.clearTimeout(id);\n delete this._animationFrameIds[id];\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Async.prototype._logError = function (e) {\n if (this._onErrorHandler) {\n this._onErrorHandler(e);\n }\n };\n return Async;\n}());\nexport { Async };\n//# sourceMappingURL=Async.js.map","/**\n * Determines whether or not an element has the virtual hierarchy extension.\n *\n * @public\n */\nexport function isVirtualElement(element) {\n return element && !!element._virtual;\n}\n//# sourceMappingURL=isVirtualElement.js.map","import { isVirtualElement } from './isVirtualElement';\n/**\n * Gets the virtual parent given the child element, if it exists.\n *\n * @public\n */\nexport function getVirtualParent(child) {\n var parent;\n if (child && isVirtualElement(child)) {\n parent = child._virtual.parent;\n }\n return parent;\n}\n//# sourceMappingURL=getVirtualParent.js.map","import { getVirtualParent } from './getVirtualParent';\n/**\n * Gets the element which is the parent of a given element.\n * If `allowVirtuaParents` is `true`, this method prefers the virtual parent over\n * real DOM parent when present.\n *\n * @public\n */\nexport function getParent(child, allowVirtualParents) {\n var _a, _b;\n if (allowVirtualParents === void 0) { allowVirtualParents = true; }\n if (!child) {\n return null;\n }\n var parent = allowVirtualParents && getVirtualParent(child);\n if (parent) {\n return parent;\n }\n // Support looking for parents in shadow DOM\n if (typeof child.assignedElements !== 'function' && ((_a = child.assignedSlot) === null || _a === void 0 ? void 0 : _a.parentNode)) {\n // Element is slotted\n return child.assignedSlot;\n }\n else if (((_b = child.parentNode) === null || _b === void 0 ? void 0 : _b.nodeType) === 11) {\n // nodeType 11 is DOCUMENT_FRAGMENT\n // Element is in shadow root\n return child.parentNode.host;\n }\n else {\n return child.parentNode;\n }\n}\n//# sourceMappingURL=getParent.js.map","import { getParent } from './getParent';\n/**\n * Determines whether or not a parent element contains a given child element.\n * If `allowVirtualParents` is true, this method may return `true` if the child\n * has the parent in its virtual element hierarchy.\n *\n * @public\n */\nexport function elementContains(parent, child, allowVirtualParents) {\n if (allowVirtualParents === void 0) { allowVirtualParents = true; }\n var isContained = false;\n if (parent && child) {\n if (allowVirtualParents) {\n if (parent === child) {\n isContained = true;\n }\n else {\n isContained = false;\n while (child) {\n var nextParent = getParent(child);\n if (nextParent === parent) {\n isContained = true;\n break;\n }\n child = nextParent;\n }\n }\n }\n else if (parent.contains) {\n isContained = parent.contains(child);\n }\n }\n return isContained;\n}\n//# sourceMappingURL=elementContains.js.map","import { getParent } from './getParent';\n/**\n * Finds the first parent element where the matchFunction returns true\n * @param element - element to start searching at\n * @param matchFunction - the function that determines if the element is a match\n * @returns the matched element or null no match was found\n */\nexport function findElementRecursive(element, matchFunction, doc) {\n // eslint-disable-next-line no-restricted-globals\n doc !== null && doc !== void 0 ? doc : (doc = document);\n if (!element || element === doc.body || element instanceof Document) {\n return null;\n }\n return matchFunction(element) ? element : findElementRecursive(getParent(element), matchFunction);\n}\n//# sourceMappingURL=findElementRecursive.js.map","import { findElementRecursive } from './findElementRecursive';\n/**\n * Determines if an element, or any of its ancestors, contain the given attribute\n * @param element - element to start searching at\n * @param attribute - the attribute to search for\n * @returns the value of the first instance found\n */\nexport function elementContainsAttribute(element, attribute, doc) {\n var elementMatch = findElementRecursive(element, function (testElement) { return testElement.hasAttribute(attribute); }, doc);\n return elementMatch && elementMatch.getAttribute(attribute);\n}\n//# sourceMappingURL=elementContainsAttribute.js.map","export var DATA_PORTAL_ATTRIBUTE = 'data-portal-element';\n/**\n * Identify element as a portal by setting an attribute.\n * @param element - Element to mark as a portal.\n */\nexport function setPortalAttribute(element) {\n element.setAttribute(DATA_PORTAL_ATTRIBUTE, 'true');\n}\n//# sourceMappingURL=setPortalAttribute.js.map","import { findElementRecursive } from './findElementRecursive';\nimport { DATA_PORTAL_ATTRIBUTE } from './setPortalAttribute';\n/**\n * Determine whether a target is within a portal from perspective of root or optional parent.\n * This function only works against portal components that use the setPortalAttribute function.\n * If both parent and child are within the same portal this function will return false.\n * @param target - Element to query portal containment status of.\n * @param parent - Optional parent perspective. Search for containing portal stops at parent\n * (or root if parent is undefined or invalid.)\n */\nexport function portalContainsElement(target, parent, doc) {\n var _a;\n var elementMatch = findElementRecursive(target, function (testElement) { var _a; return parent === testElement || !!((_a = testElement.hasAttribute) === null || _a === void 0 ? void 0 : _a.call(testElement, DATA_PORTAL_ATTRIBUTE)); }, doc);\n return elementMatch !== null && !!((_a = elementMatch.hasAttribute) === null || _a === void 0 ? void 0 : _a.call(elementMatch, DATA_PORTAL_ATTRIBUTE));\n}\n//# sourceMappingURL=portalContainsElement.js.map","/**\n * Sets the virtual parent of an element.\n * Pass `undefined` as the `parent` to clear the virtual parent.\n *\n * @public\n */\nexport function setVirtualParent(child, parent) {\n var virtualChild = child;\n var virtualParent = parent;\n if (!virtualChild._virtual) {\n virtualChild._virtual = {\n children: [],\n };\n }\n var oldParent = virtualChild._virtual.parent;\n if (oldParent && oldParent !== parent) {\n // Remove the child from its old parent.\n var index = oldParent._virtual.children.indexOf(virtualChild);\n if (index > -1) {\n oldParent._virtual.children.splice(index, 1);\n }\n }\n virtualChild._virtual.parent = virtualParent || undefined;\n if (virtualParent) {\n if (!virtualParent._virtual) {\n virtualParent._virtual = {\n children: [],\n };\n }\n virtualParent._virtual.children.push(virtualChild);\n }\n}\n//# sourceMappingURL=setVirtualParent.js.map","import { elementContainsAttribute } from './dom/elementContainsAttribute';\nimport { elementContains } from './dom/elementContains';\nimport { getParent } from './dom/getParent';\nimport { getWindow } from './dom/getWindow';\nimport { getDocument } from './dom/getDocument';\nvar IS_FOCUSABLE_ATTRIBUTE = 'data-is-focusable';\nvar IS_VISIBLE_ATTRIBUTE = 'data-is-visible';\nvar FOCUSZONE_ID_ATTRIBUTE = 'data-focuszone-id';\nvar FOCUSZONE_SUB_ATTRIBUTE = 'data-is-sub-focuszone';\n/**\n * Gets the first focusable element.\n *\n * @public\n */\nexport function getFirstFocusable(rootElement, currentElement, includeElementsInFocusZones, includeShadowRoots) {\n return getNextElement(rootElement, currentElement, true /*checkNode*/, false /*suppressParentTraversal*/, false /*suppressChildTraversal*/, includeElementsInFocusZones, undefined, undefined, undefined, includeShadowRoots);\n}\n/**\n * Gets the last focusable element.\n *\n * @public\n */\nexport function getLastFocusable(rootElement, currentElement, includeElementsInFocusZones, includeShadowRoots) {\n return getPreviousElement(rootElement, currentElement, true /*checkNode*/, false /*suppressParentTraversal*/, true /*traverseChildren*/, includeElementsInFocusZones, undefined, undefined, includeShadowRoots);\n}\n/**\n * Gets the first tabbable element. (The difference between focusable and tabbable is that tabbable elements are\n * focusable elements that also have tabIndex != -1.)\n * @param rootElement - The parent element to search beneath.\n * @param currentElement - The descendant of rootElement to start the search at. This element is the first one checked,\n * and iteration continues forward. Typical use passes rootElement.firstChild.\n * @param includeElementsInFocusZones - true if traversal should go into FocusZone descendants.\n * @param checkNode - Include currentElement in search when true. Defaults to true.\n * @public\n */\nexport function getFirstTabbable(rootElement, currentElement, includeElementsInFocusZones, checkNode, includeShadowRoots) {\n if (checkNode === void 0) { checkNode = true; }\n return getNextElement(rootElement, currentElement, checkNode, false /*suppressParentTraversal*/, false /*suppressChildTraversal*/, includeElementsInFocusZones, false /*allowFocusRoot*/, true /*tabbable*/, undefined, includeShadowRoots);\n}\n/**\n * Gets the last tabbable element. (The difference between focusable and tabbable is that tabbable elements are\n * focusable elements that also have tabIndex != -1.)\n * @param rootElement - The parent element to search beneath.\n * @param currentElement - The descendant of rootElement to start the search at. This element is the first one checked,\n * and iteration continues in reverse. Typical use passes rootElement.lastChild.\n * @param includeElementsInFocusZones - true if traversal should go into FocusZone descendants.\n * @param checkNode - Include currentElement in search when true. Defaults to true.\n * @public\n */\nexport function getLastTabbable(rootElement, currentElement, includeElementsInFocusZones, checkNode, includeShadowRoots) {\n if (checkNode === void 0) { checkNode = true; }\n return getPreviousElement(rootElement, currentElement, checkNode, false /*suppressParentTraversal*/, true /*traverseChildren*/, includeElementsInFocusZones, false /*allowFocusRoot*/, true /*tabbable*/, includeShadowRoots);\n}\n/**\n * Attempts to focus the first focusable element that is a child or child's child of the rootElement.\n *\n * @public\n * @param rootElement - Element to start the search for a focusable child.\n * @param bypassHiddenElements - If true, focus will be not be set on hidden elements.\n * @returns True if focus was set, false if it was not.\n */\nexport function focusFirstChild(rootElement, bypassHiddenElements, includeShadowRoots) {\n var element = getNextElement(rootElement, rootElement, true, false, false, true, undefined, undefined, bypassHiddenElements, includeShadowRoots);\n if (element) {\n focusAsync(element);\n return true;\n }\n return false;\n}\n/**\n * Traverse to find the previous element.\n * If tabbable is true, the element must have tabIndex != -1.\n *\n * @public\n */\nexport function getPreviousElement(rootElement, currentElement, checkNode, suppressParentTraversal, traverseChildren, includeElementsInFocusZones, allowFocusRoot, tabbable, includeShadowRoots) {\n var _a;\n if (!currentElement || (!allowFocusRoot && currentElement === rootElement)) {\n return null;\n }\n var isCurrentElementVisible = isElementVisible(currentElement);\n // Check its children.\n if (traverseChildren &&\n isCurrentElementVisible &&\n (includeElementsInFocusZones || !(isElementFocusZone(currentElement) || isElementFocusSubZone(currentElement)))) {\n var lastElementChild = (currentElement.lastElementChild ||\n (includeShadowRoots && ((_a = currentElement.shadowRoot) === null || _a === void 0 ? void 0 : _a.lastElementChild)));\n var childMatch = getPreviousElement(rootElement, lastElementChild, true, true, true, includeElementsInFocusZones, allowFocusRoot, tabbable, includeShadowRoots);\n if (childMatch) {\n if ((tabbable && isElementTabbable(childMatch, true, includeShadowRoots)) || !tabbable) {\n return childMatch;\n }\n var childMatchSiblingMatch = getPreviousElement(rootElement, childMatch.previousElementSibling, true, true, true, includeElementsInFocusZones, allowFocusRoot, tabbable, includeShadowRoots);\n if (childMatchSiblingMatch) {\n return childMatchSiblingMatch;\n }\n var childMatchParent = childMatch.parentElement;\n // At this point if we have not found any potential matches\n // start looking at the rest of the subtree under the currentParent.\n // NOTE: We do not want to recurse here because doing so could\n // cause elements to get skipped.\n while (childMatchParent && childMatchParent !== currentElement) {\n var childMatchParentMatch = getPreviousElement(rootElement, childMatchParent.previousElementSibling, true, true, true, includeElementsInFocusZones, allowFocusRoot, tabbable, includeShadowRoots);\n if (childMatchParentMatch) {\n return childMatchParentMatch;\n }\n childMatchParent = childMatchParent.parentElement;\n }\n }\n }\n // Check the current node, if it's not the first traversal.\n if (checkNode && isCurrentElementVisible && isElementTabbable(currentElement, tabbable, includeShadowRoots)) {\n return currentElement;\n }\n // Check its previous sibling.\n var siblingMatch = getPreviousElement(rootElement, currentElement.previousElementSibling, true, true, true, includeElementsInFocusZones, allowFocusRoot, tabbable, includeShadowRoots);\n if (siblingMatch) {\n return siblingMatch;\n }\n // Check its parent.\n if (!suppressParentTraversal) {\n return getPreviousElement(rootElement, currentElement.parentElement, true, false, false, includeElementsInFocusZones, allowFocusRoot, tabbable, includeShadowRoots);\n }\n return null;\n}\n/**\n * Traverse to find the next focusable element.\n * If tabbable is true, the element must have tabIndex != -1.\n *\n * @public\n * @param checkNode - Include currentElement in search when true.\n */\nexport function getNextElement(rootElement, currentElement, checkNode, suppressParentTraversal, suppressChildTraversal, includeElementsInFocusZones, allowFocusRoot, tabbable, bypassHiddenElements, includeShadowRoots) {\n var _a;\n if (!currentElement || (currentElement === rootElement && suppressChildTraversal && !allowFocusRoot)) {\n return null;\n }\n var checkElementVisibility = bypassHiddenElements ? isElementVisibleAndNotHidden : isElementVisible;\n var isCurrentElementVisible = checkElementVisibility(currentElement);\n // Check the current node, if it's not the first traversal.\n if (checkNode && isCurrentElementVisible && isElementTabbable(currentElement, tabbable, includeShadowRoots)) {\n return currentElement;\n }\n // Check its children.\n if (!suppressChildTraversal &&\n isCurrentElementVisible &&\n (includeElementsInFocusZones || !(isElementFocusZone(currentElement) || isElementFocusSubZone(currentElement)))) {\n var firstElementchild = (currentElement.firstElementChild ||\n (includeShadowRoots && ((_a = currentElement.shadowRoot) === null || _a === void 0 ? void 0 : _a.firstElementChild)));\n var childMatch = getNextElement(rootElement, firstElementchild, true, true, false, includeElementsInFocusZones, allowFocusRoot, tabbable, bypassHiddenElements, includeShadowRoots);\n if (childMatch) {\n return childMatch;\n }\n }\n if (currentElement === rootElement) {\n return null;\n }\n // Check its sibling.\n var siblingMatch = getNextElement(rootElement, currentElement.nextElementSibling, true, true, false, includeElementsInFocusZones, allowFocusRoot, tabbable, bypassHiddenElements, includeShadowRoots);\n if (siblingMatch) {\n return siblingMatch;\n }\n if (!suppressParentTraversal) {\n return getNextElement(rootElement, currentElement.parentElement, false, false, true, includeElementsInFocusZones, allowFocusRoot, tabbable, bypassHiddenElements, includeShadowRoots);\n }\n return null;\n}\n/**\n * Determines if an element is visible.\n *\n * @public\n */\nexport function isElementVisible(element) {\n // If the element is not valid, return false.\n if (!element || !element.getAttribute) {\n return false;\n }\n var visibilityAttribute = element.getAttribute(IS_VISIBLE_ATTRIBUTE);\n // If the element is explicitly marked with the visibility attribute, return that value as boolean.\n if (visibilityAttribute !== null && visibilityAttribute !== undefined) {\n return visibilityAttribute === 'true';\n }\n // Fallback to other methods of determining actual visibility.\n return (element.offsetHeight !== 0 ||\n element.offsetParent !== null ||\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n element.isVisible === true); // used as a workaround for testing.\n}\n/**\n * Determines if an element is visible and not hidden\n * @param element - Element to check\n * @returns Returns true if the given element is visible and not hidden\n *\n * @public\n */\nexport function isElementVisibleAndNotHidden(element, win) {\n var theWin = win !== null && win !== void 0 ? win : getWindow();\n return (!!element &&\n isElementVisible(element) &&\n !element.hidden &&\n theWin.getComputedStyle(element).visibility !== 'hidden');\n}\n/**\n * Determines if an element can receive focus programmatically or via a mouse click.\n * If checkTabIndex is true, additionally checks to ensure the element can be focused with the tab key,\n * meaning tabIndex != -1.\n *\n * @public\n */\nexport function isElementTabbable(element, checkTabIndex, checkShadowRoot) {\n if (checkShadowRoot === void 0) { checkShadowRoot = true; }\n // If this element is null or is disabled, it is not considered tabbable.\n if (!element || element.disabled) {\n return false;\n }\n var tabIndex = 0;\n var tabIndexAttributeValue = null;\n if (element && element.getAttribute) {\n tabIndexAttributeValue = element.getAttribute('tabIndex');\n if (tabIndexAttributeValue) {\n tabIndex = parseInt(tabIndexAttributeValue, 10);\n }\n }\n var isFocusableAttribute = element.getAttribute ? element.getAttribute(IS_FOCUSABLE_ATTRIBUTE) : null;\n var isTabIndexSet = tabIndexAttributeValue !== null && tabIndex >= 0;\n var delegatesFocus = checkShadowRoot && element.shadowRoot ? !!element.shadowRoot.delegatesFocus : false;\n var result = !!element &&\n isFocusableAttribute !== 'false' &&\n (element.tagName === 'A' ||\n element.tagName === 'BUTTON' ||\n element.tagName === 'INPUT' ||\n element.tagName === 'TEXTAREA' ||\n element.tagName === 'SELECT' ||\n isFocusableAttribute === 'true' ||\n isTabIndexSet ||\n delegatesFocus);\n return checkTabIndex ? tabIndex !== -1 && result : result;\n}\n/**\n * Determines if a given element is a focus zone.\n *\n * @public\n */\nexport function isElementFocusZone(element) {\n return !!(element && element.getAttribute && !!element.getAttribute(FOCUSZONE_ID_ATTRIBUTE));\n}\n/**\n * Determines if a given element is a focus sub zone.\n *\n * @public\n */\nexport function isElementFocusSubZone(element) {\n return !!(element && element.getAttribute && element.getAttribute(FOCUSZONE_SUB_ATTRIBUTE) === 'true');\n}\n/**\n * Determines if an element, or any of its children, contain focus.\n *\n * @public\n */\nexport function doesElementContainFocus(element) {\n var doc = getDocument(element);\n var currentActiveElement = doc && doc.activeElement;\n if (currentActiveElement && elementContains(element, currentActiveElement)) {\n return true;\n }\n return false;\n}\n/**\n * Determines if an, or any of its ancestors, sepcificies that it doesn't want focus to wrap\n * @param element - element to start searching from\n * @param noWrapDataAttribute - the no wrap data attribute to match (either)\n * @returns true if focus should wrap, false otherwise\n */\nexport function shouldWrapFocus(element, noWrapDataAttribute, doc) {\n var theDoc = doc !== null && doc !== void 0 ? doc : getDocument();\n return elementContainsAttribute(element, noWrapDataAttribute, theDoc) === 'true' ? false : true;\n}\nvar animationId = undefined;\n/**\n * Sets focus to an element asynchronously. The focus will be set at the next browser repaint,\n * meaning it won't cause any extra recalculations. If more than one focusAsync is called during one frame,\n * only the latest called focusAsync element will actually be focused\n * @param element - The element to focus\n */\nexport function focusAsync(element) {\n if (element) {\n var win = getWindow(element);\n if (win) {\n // cancel any previous focus queues\n if (animationId !== undefined) {\n win.cancelAnimationFrame(animationId);\n }\n // element.focus() is a no-op if the element is no longer in the DOM, meaning this is always safe\n animationId = win.requestAnimationFrame(function () {\n element && element.focus();\n // We are done focusing for this frame, so reset the queued focus element\n animationId = undefined;\n });\n }\n }\n}\n/**\n * Finds the closest focusable element via an index path from a parent. See\n * `getElementIndexPath` for getting an index path from an element to a child.\n */\nexport function getFocusableByIndexPath(parent, path) {\n var element = parent;\n for (var _i = 0, path_1 = path; _i < path_1.length; _i++) {\n var index = path_1[_i];\n var nextChild = element.children[Math.min(index, element.children.length - 1)];\n if (!nextChild) {\n break;\n }\n element = nextChild;\n }\n element =\n isElementTabbable(element) && isElementVisible(element)\n ? element\n : getNextElement(parent, element, true) || getPreviousElement(parent, element);\n return element;\n}\n/**\n * Finds the element index path from a parent element to a child element.\n *\n * If you had this node structure: \"A has children [B, C] and C has child D\",\n * the index path from A to D would be [1, 0], or `parent.chidren[1].children[0]`.\n */\nexport function getElementIndexPath(fromElement, toElement) {\n var path = [];\n while (toElement && fromElement && toElement !== fromElement) {\n var parent_1 = getParent(toElement, true);\n if (parent_1 === null) {\n return [];\n }\n path.unshift(Array.prototype.indexOf.call(parent_1.children, toElement));\n toElement = parent_1;\n }\n return path;\n}\n//# sourceMappingURL=focus.js.map","export function on(element, eventName, callback, options) {\n element.addEventListener(eventName, callback, options);\n return function () { return element.removeEventListener(eventName, callback, options); };\n}\n//# sourceMappingURL=on.js.map","/**\n * Compares a to b and b to a.\n *\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function shallowCompare(a, b) {\n if (!a || !b) {\n // only return true if both a and b are falsy\n return !a && !b;\n }\n for (var propName in a) {\n if (a.hasOwnProperty(propName)) {\n if (!b.hasOwnProperty(propName) || b[propName] !== a[propName]) {\n return false;\n }\n }\n }\n for (var propName in b) {\n if (b.hasOwnProperty(propName)) {\n if (!a.hasOwnProperty(propName)) {\n return false;\n }\n }\n }\n return true;\n}\n/**\n * Makes a resulting merge of a bunch of objects. Pass in the target object followed by 1 or more\n * objects as arguments and they will be merged sequentially into the target. Note that this will\n * shallow merge; it will not create new cloned values for target members.\n *\n * @public\n * @param target - Target object to merge following object arguments into.\n * @param args - One or more objects that will be mixed into the target in the order they are provided.\n * @returns Resulting merged target.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function assign(target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return filteredAssign.apply(this, [null, target].concat(args));\n}\n/**\n * Makes a resulting merge of a bunch of objects, but allows a filter function to be passed in to filter\n * the resulting merges. This allows for scenarios where you want to merge \"everything except that one thing\"\n * or \"properties that start with data-\". Note that this will shallow merge; it will not create new cloned\n * values for target members.\n *\n * @public\n * @param isAllowed - Callback to determine if the given propName is allowed in the result.\n * @param target - Target object to merge following object arguments into.\n * @param args - One or more objects that will be mixed into the target in the order they are provided.\n * @returns Resulting merged target.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function filteredAssign(isAllowed, target) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n target = target || {};\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var sourceObject = args_1[_a];\n if (sourceObject) {\n for (var propName in sourceObject) {\n if (sourceObject.hasOwnProperty(propName) && (!isAllowed || isAllowed(propName))) {\n target[propName] = sourceObject[propName];\n }\n }\n }\n }\n return target;\n}\n/**\n * Takes an enum and iterates over each value of the enum (as a string), running the callback on each,\n * returning a mapped array.\n * @param theEnum - Enum to iterate over\n * @param callback - The first parameter the name of the entry, and the second parameter is the value\n * of that entry, which is the value you'd normally use when using the enum (usually a number).\n */\nexport function mapEnumByName(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntheEnum, callback) {\n // map to satisfy compiler since it doesn't realize we strip out undefineds in the .filter() call\n return Object.keys(theEnum)\n .map(function (p) {\n // map on each property name as a string\n if (String(Number(p)) !== p) {\n // if the property is not just a number (because enums in TypeScript will map both ways)\n return callback(p, theEnum[p]);\n }\n return undefined;\n })\n .filter(function (v) { return !!v; }); // only return elements with values\n}\n/**\n * Get all values in an object dictionary\n *\n * @param obj - The dictionary to get values for\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function values(obj) {\n return Object.keys(obj).reduce(function (arr, key) {\n arr.push(obj[key]);\n return arr;\n }, []);\n}\n/**\n * Tiny helper to do the minimal amount of work in duplicating an object but omitting some\n * props. This ends up faster than using object ...rest or reduce to filter.\n *\n * This behaves very much like filteredAssign, but does not merge many objects together,\n * uses an exclusion object map, and avoids spreads all for optimal performance.\n *\n * See perf test for background:\n * https://jsperf.com/omit-vs-rest-vs-reduce/1\n *\n * @param obj - The object to clone\n * @param exclusions - The array of keys to exclude\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function omit(obj, exclusions) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var result = {};\n for (var key in obj) {\n if (exclusions.indexOf(key) === -1 && obj.hasOwnProperty(key)) {\n result[key] = obj[key];\n }\n }\n return result;\n}\n//# sourceMappingURL=object.js.map","import { getDocument } from './dom';\nimport { assign } from './object';\n/** An instance of EventGroup allows anything with a handle to it to trigger events on it.\n * If the target is an HTMLElement, the event will be attached to the element and can be\n * triggered as usual (like clicking for onClick).\n * The event can be triggered by calling EventGroup.raise() here. If the target is an\n * HTMLElement, the event gets raised and is handled by the browser. Otherwise, it gets\n * handled here in EventGroup, and the handler is called in the context of the parent\n * (which is passed in in the constructor).\n *\n * @public\n * {@docCategory EventGroup}\n */\nexport var EventGroup = /** @class */ (function () {\n /** parent: the context in which events attached to non-HTMLElements are called */\n function EventGroup(parent) {\n this._id = EventGroup._uniqueId++;\n this._parent = parent;\n this._eventRecords = [];\n }\n /** For IE8, bubbleEvent is ignored here and must be dealt with by the handler.\n * Events raised here by default have bubbling set to false and cancelable set to true.\n * This applies also to built-in events being raised manually here on HTMLElements,\n * which may lead to unexpected behavior if it differs from the defaults.\n *\n */\n EventGroup.raise = function (target, eventName, eventArgs, bubbleEvent, doc) {\n var retVal;\n var theDoc = doc !== null && doc !== void 0 ? doc : getDocument();\n if (EventGroup._isElement(target)) {\n if (typeof theDoc !== 'undefined' && theDoc.createEvent) {\n var ev = theDoc.createEvent('HTMLEvents');\n // eslint-disable-next-line deprecation/deprecation\n ev.initEvent(eventName, bubbleEvent || false, true);\n assign(ev, eventArgs);\n retVal = target.dispatchEvent(ev);\n }\n else if (typeof theDoc !== 'undefined' && theDoc.createEventObject) {\n // IE8\n var evObj = theDoc.createEventObject(eventArgs);\n // cannot set cancelBubble on evObj, fireEvent will overwrite it\n target.fireEvent('on' + eventName, evObj);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore -- FIXME: strictBindCallApply error - https://github.com/microsoft/fluentui/issues/17331\n while (target && retVal !== false) {\n var events = target.__events__;\n var eventRecords = events ? events[eventName] : null;\n if (eventRecords) {\n for (var id in eventRecords) {\n if (eventRecords.hasOwnProperty(id)) {\n var eventRecordList = eventRecords[id];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore -- FIXME: strictBindCallApply error - https://github.com/microsoft/fluentui/issues/17331\n for (var listIndex = 0; retVal !== false && listIndex < eventRecordList.length; listIndex++) {\n var record = eventRecordList[listIndex];\n if (record.objectCallback) {\n retVal = record.objectCallback.call(record.parent, eventArgs);\n }\n }\n }\n }\n }\n // If the target has a parent, bubble the event up.\n target = bubbleEvent ? target.parent : null;\n }\n }\n return retVal;\n };\n EventGroup.isObserved = function (target, eventName) {\n var events = target && target.__events__;\n return !!events && !!events[eventName];\n };\n /** Check to see if the target has declared support of the given event. */\n EventGroup.isDeclared = function (target, eventName) {\n var declaredEvents = target && target.__declaredEvents;\n return !!declaredEvents && !!declaredEvents[eventName];\n };\n EventGroup.stopPropagation = function (event) {\n if (event.stopPropagation) {\n event.stopPropagation();\n }\n else {\n // IE8\n event.cancelBubble = true;\n }\n };\n EventGroup._isElement = function (target) {\n return (!!target && (!!target.addEventListener || (typeof HTMLElement !== 'undefined' && target instanceof HTMLElement)));\n };\n EventGroup.prototype.dispose = function () {\n if (!this._isDisposed) {\n this._isDisposed = true;\n this.off();\n this._parent = null;\n }\n };\n /** On the target, attach a set of events, where the events object is a name to function mapping. */\n EventGroup.prototype.onAll = function (target, events, useCapture) {\n for (var eventName in events) {\n if (events.hasOwnProperty(eventName)) {\n this.on(target, eventName, events[eventName], useCapture);\n }\n }\n };\n /**\n * On the target, attach an event whose handler will be called in the context of the parent\n * of this instance of EventGroup.\n */\n EventGroup.prototype.on = function (target, eventName, callback, options) {\n var _this = this;\n if (eventName.indexOf(',') > -1) {\n var events = eventName.split(/[ ,]+/);\n for (var i = 0; i < events.length; i++) {\n this.on(target, events[i], callback, options);\n }\n }\n else {\n var parent_1 = this._parent;\n var eventRecord = {\n target: target,\n eventName: eventName,\n parent: parent_1,\n callback: callback,\n options: options,\n };\n // Initialize and wire up the record on the target, so that it can call the callback if the event fires.\n var events = (target.__events__ = target.__events__ || {});\n events[eventName] =\n events[eventName] ||\n {\n count: 0,\n };\n events[eventName][this._id] = events[eventName][this._id] || [];\n events[eventName][this._id].push(eventRecord);\n events[eventName].count++;\n if (EventGroup._isElement(target)) {\n var processElementEvent = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (_this._isDisposed) {\n return;\n }\n var result;\n try {\n result = callback.apply(parent_1, args);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore -- FIXME: strictBindCallApply error - https://github.com/microsoft/fluentui/issues/17331\n if (result === false && args[0]) {\n var e = args[0];\n if (e.preventDefault) {\n e.preventDefault();\n }\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n e.cancelBubble = true;\n }\n }\n catch (e) {\n // ignore\n }\n return result;\n };\n eventRecord.elementCallback = processElementEvent;\n if (target.addEventListener) {\n target.addEventListener(eventName, processElementEvent, options);\n }\n else if (target.attachEvent) {\n // IE8\n target.attachEvent('on' + eventName, processElementEvent);\n }\n }\n else {\n var processObjectEvent = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (_this._isDisposed) {\n return;\n }\n return callback.apply(parent_1, args);\n };\n eventRecord.objectCallback = processObjectEvent;\n }\n // Remember the record locally, so that it can be removed.\n this._eventRecords.push(eventRecord);\n }\n };\n EventGroup.prototype.off = function (target, eventName, callback, options) {\n for (var i = 0; i < this._eventRecords.length; i++) {\n var eventRecord = this._eventRecords[i];\n if ((!target || target === eventRecord.target) &&\n (!eventName || eventName === eventRecord.eventName) &&\n (!callback || callback === eventRecord.callback) &&\n (typeof options !== 'boolean' || options === eventRecord.options)) {\n var events = eventRecord.target.__events__;\n var targetArrayLookup = events[eventRecord.eventName];\n var targetArray = targetArrayLookup ? targetArrayLookup[this._id] : null;\n // We may have already target's entries, so check for null.\n if (targetArray) {\n if (targetArray.length === 1 || !callback) {\n targetArrayLookup.count -= targetArray.length;\n delete events[eventRecord.eventName][this._id];\n }\n else {\n targetArrayLookup.count--;\n targetArray.splice(targetArray.indexOf(eventRecord), 1);\n }\n if (!targetArrayLookup.count) {\n delete events[eventRecord.eventName];\n }\n }\n if (eventRecord.elementCallback) {\n if (eventRecord.target.removeEventListener) {\n eventRecord.target.removeEventListener(eventRecord.eventName, eventRecord.elementCallback, eventRecord.options);\n }\n else if (eventRecord.target.detachEvent) {\n // IE8\n eventRecord.target.detachEvent('on' + eventRecord.eventName, eventRecord.elementCallback);\n }\n }\n this._eventRecords.splice(i--, 1);\n }\n }\n };\n /** Trigger the given event in the context of this instance of EventGroup. */\n EventGroup.prototype.raise = function (eventName, eventArgs, bubbleEvent) {\n return EventGroup.raise(this._parent, eventName, eventArgs, bubbleEvent);\n };\n /** Declare an event as being supported by this instance of EventGroup. */\n EventGroup.prototype.declare = function (event) {\n var declaredEvents = (this._parent.__declaredEvents = this._parent.__declaredEvents || {});\n if (typeof event === 'string') {\n declaredEvents[event] = true;\n }\n else {\n for (var i = 0; i < event.length; i++) {\n declaredEvents[event[i]] = true;\n }\n }\n };\n EventGroup._uniqueId = 0;\n return EventGroup;\n}());\n//# sourceMappingURL=EventGroup.js.map","import { extractStyleParts } from './extractStyleParts';\nimport { isShadowConfig } from './shadowConfig';\nimport { getStyleOptions } from './StyleOptionsState';\nimport { Stylesheet } from './Stylesheet';\nimport { styleToClassName } from './styleToClassName';\n/**\n * Concatenation helper, which can merge class names together. Skips over falsey values.\n *\n * @public\n */\nexport function mergeStyles() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return mergeCss(args, getStyleOptions());\n}\n/**\n * Concatenation helper, which can merge class names together. Skips over falsey values.\n * Accepts a set of options that will be used when calculating styles.\n *\n * @public\n */\nexport function mergeCss(args, options) {\n var styleArgs = args instanceof Array ? args : [args];\n var opts = options || {};\n var hasShadowConfig = isShadowConfig(styleArgs[0]);\n if (hasShadowConfig) {\n opts.shadowConfig = styleArgs[0];\n }\n opts.stylesheet = Stylesheet.getInstance(opts.shadowConfig);\n var _a = extractStyleParts(opts.stylesheet, styleArgs), classes = _a.classes, objects = _a.objects;\n if (objects.length) {\n classes.push(styleToClassName(opts, objects));\n }\n return classes.join(' ');\n}\n//# sourceMappingURL=mergeStyles.js.map","import { concatStyleSets } from './concatStyleSets';\n/**\n * Concatenates style sets into one, but resolves functional sets using the given props.\n * @param styleProps - Props used to resolve functional sets.\n * @param allStyles - Style sets, which can be functions or objects.\n */\nexport function concatStyleSetsWithProps(styleProps) {\n var allStyles = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n allStyles[_i - 1] = arguments[_i];\n }\n var result = [];\n for (var _a = 0, allStyles_1 = allStyles; _a < allStyles_1.length; _a++) {\n var styles = allStyles_1[_a];\n if (styles) {\n result.push(typeof styles === 'function' ? styles(styleProps) : styles);\n }\n }\n if (result.length === 1) {\n return result[0];\n }\n else if (result.length) {\n // cliffkoh: I cannot figure out how to avoid the cast to any here.\n // It is something to do with the use of Omit in IStyleSet.\n // It might not be necessary once Omit becomes part of lib.d.ts (when we remove our own Omit and rely on\n // the official version).\n return concatStyleSets.apply(void 0, result);\n }\n return {};\n}\n//# sourceMappingURL=concatStyleSetsWithProps.js.map","import { getStyleOptions } from './StyleOptionsState';\nimport { Stylesheet } from './Stylesheet';\nimport { serializeRuleEntries } from './styleToClassName';\n/**\n * Registers keyframe definitions.\n *\n * @public\n */\nexport function keyframes(timeline) {\n var stylesheet = Stylesheet.getInstance();\n var rulesArray = [];\n for (var prop in timeline) {\n if (timeline.hasOwnProperty(prop)) {\n rulesArray.push(prop, '{', serializeRuleEntries(getStyleOptions(), timeline[prop]), '}');\n }\n }\n var rules = rulesArray.join('');\n var className = stylesheet.classNameFromKey(rules);\n if (className) {\n return className;\n }\n var name = stylesheet.getClassName();\n stylesheet.insertRule(\"@keyframes \".concat(name, \"{\").concat(rules, \"}\"), true);\n stylesheet.cacheClassName(name, rules, [], ['keyframes', rules]);\n return name;\n}\n//# sourceMappingURL=keyframes.js.map","import { getDocument } from './dom/getDocument';\nimport { mergeStyles } from '@fluentui/merge-styles';\nimport { getWindow } from './dom/getWindow';\nvar _scrollbarWidth;\nvar _bodyScrollDisabledCount = 0;\nvar DisabledScrollClassName = mergeStyles({\n overflow: 'hidden !important',\n});\n/**\n * Placing this attribute on scrollable divs optimizes detection to know\n * if the div is scrollable or not (given we can avoid expensive operations\n * like getComputedStyle.)\n *\n * @public\n */\nexport var DATA_IS_SCROLLABLE_ATTRIBUTE = 'data-is-scrollable';\n/**\n * Allows the user to scroll within a element,\n * while preventing the user from scrolling the body\n */\nexport var allowScrollOnElement = function (element, events) {\n var window = getWindow(element);\n if (!element || !window) {\n return;\n }\n var _previousClientY = 0;\n var _element = null;\n var computedStyles = window.getComputedStyle(element);\n // remember the clientY for future calls of _preventOverscrolling\n var _saveClientY = function (event) {\n if (event.targetTouches.length === 1) {\n _previousClientY = event.targetTouches[0].clientY;\n }\n };\n // prevent the body from scrolling when the user attempts\n // to scroll past the top or bottom of the element\n var _preventOverscrolling = function (event) {\n // only respond to a single-finger touch\n if (event.targetTouches.length !== 1) {\n return;\n }\n // prevent the body touchmove handler from firing\n // so that scrolling is allowed within the element\n event.stopPropagation();\n if (!_element) {\n return;\n }\n var clientY = event.targetTouches[0].clientY - _previousClientY;\n var scrollableParent = findScrollableParent(event.target);\n if (scrollableParent && _element !== scrollableParent) {\n _element = scrollableParent;\n computedStyles = window.getComputedStyle(_element);\n }\n var scrollTop = _element.scrollTop;\n var isColumnReverse = (computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.flexDirection) === 'column-reverse';\n // if the element is scrolled to the top,\n // prevent the user from scrolling up\n if (scrollTop === 0 && (isColumnReverse ? clientY < 0 : clientY > 0)) {\n event.preventDefault();\n }\n // if the element is scrolled to the bottom,\n // prevent the user from scrolling down\n if (_element.scrollHeight - Math.abs(Math.ceil(scrollTop)) <= _element.clientHeight &&\n (isColumnReverse ? clientY > 0 : clientY < 0)) {\n event.preventDefault();\n }\n };\n events.on(element, 'touchstart', _saveClientY, { passive: false });\n events.on(element, 'touchmove', _preventOverscrolling, { passive: false });\n _element = element;\n};\n/**\n * Same as allowScrollOnElement but does not prevent overscrolling.\n */\nexport var allowOverscrollOnElement = function (element, events) {\n if (!element) {\n return;\n }\n var _allowElementScroll = function (event) {\n event.stopPropagation();\n };\n events.on(element, 'touchmove', _allowElementScroll, { passive: false });\n};\nvar _disableIosBodyScroll = function (event) {\n event.preventDefault();\n};\n/**\n * Disables the body scrolling.\n *\n * @public\n */\nexport function disableBodyScroll() {\n var doc = getDocument();\n if (doc && doc.body && !_bodyScrollDisabledCount) {\n doc.body.classList.add(DisabledScrollClassName);\n doc.body.addEventListener('touchmove', _disableIosBodyScroll, { passive: false, capture: false });\n }\n _bodyScrollDisabledCount++;\n}\n/**\n * Enables the body scrolling.\n *\n * @public\n */\nexport function enableBodyScroll() {\n if (_bodyScrollDisabledCount > 0) {\n var doc = getDocument();\n if (doc && doc.body && _bodyScrollDisabledCount === 1) {\n doc.body.classList.remove(DisabledScrollClassName);\n doc.body.removeEventListener('touchmove', _disableIosBodyScroll);\n }\n _bodyScrollDisabledCount--;\n }\n}\n/**\n * Calculates the width of a scrollbar for the browser/os.\n *\n * @public\n */\nexport function getScrollbarWidth(doc) {\n if (_scrollbarWidth === undefined) {\n var theDoc = doc !== null && doc !== void 0 ? doc : getDocument();\n var scrollDiv = theDoc.createElement('div');\n scrollDiv.style.setProperty('width', '100px');\n scrollDiv.style.setProperty('height', '100px');\n scrollDiv.style.setProperty('overflow', 'scroll');\n scrollDiv.style.setProperty('position', 'absolute');\n scrollDiv.style.setProperty('top', '-9999px');\n theDoc.body.appendChild(scrollDiv);\n // Get the scrollbar width\n _scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n // Delete the DIV\n theDoc.body.removeChild(scrollDiv);\n }\n return _scrollbarWidth;\n}\n/**\n * Traverses up the DOM for the element with the data-is-scrollable=true attribute, or returns\n * document.body.\n *\n * @public\n */\nexport function findScrollableParent(startingElement) {\n var el = startingElement;\n var doc = getDocument(startingElement);\n // First do a quick scan for the scrollable attribute.\n while (el && el !== doc.body) {\n if (el.getAttribute(DATA_IS_SCROLLABLE_ATTRIBUTE) === 'true') {\n return el;\n }\n el = el.parentElement;\n }\n // If we haven't found it, the use the slower method: compute styles to evaluate if overflow is set.\n el = startingElement;\n while (el && el !== doc.body) {\n if (el.getAttribute(DATA_IS_SCROLLABLE_ATTRIBUTE) !== 'false') {\n var computedStyles = getComputedStyle(el);\n var overflowY = computedStyles ? computedStyles.getPropertyValue('overflow-y') : '';\n if (overflowY && (overflowY === 'scroll' || overflowY === 'auto')) {\n return el;\n }\n }\n el = el.parentElement;\n }\n // Fall back to window scroll.\n if (!el || el === doc.body) {\n el = getWindow(startingElement);\n }\n return el;\n}\n//# sourceMappingURL=scroll.js.map","/* eslint-disable no-console */\nvar _warningCallback = undefined;\n/**\n * Sends a warning to console, if the api is present.\n *\n * @public\n * @param message - Warning message.\n */\nexport function warn(message) {\n if (_warningCallback && process.env.NODE_ENV !== 'production') {\n _warningCallback(message);\n }\n else if (console && console.warn) {\n console.warn(message);\n }\n}\n/**\n * Configures the warning callback. Passing in undefined will reset it to use the default\n * console.warn function.\n *\n * @public\n * @param warningCallback - Callback to override the generated warnings.\n */\nexport function setWarningCallback(warningCallback) {\n _warningCallback = warningCallback;\n}\n//# sourceMappingURL=warn.js.map","import { warn } from './warn';\n/**\n * Warns when props are required if a condition is met.\n *\n * @public\n * @param componentName - The name of the component being used.\n * @param props - The props passed into the component.\n * @param requiredProps - The name of the props that are required when the condition is met.\n * @param conditionalPropName - The name of the prop that the condition is based on.\n * @param condition - Whether the condition is met.\n */\nexport function warnConditionallyRequiredProps(componentName, props, requiredProps, conditionalPropName, condition) {\n if (condition === true && process.env.NODE_ENV !== 'production') {\n for (var _i = 0, requiredProps_1 = requiredProps; _i < requiredProps_1.length; _i++) {\n var requiredPropName = requiredProps_1[_i];\n if (!(requiredPropName in props)) {\n warn(\"\".concat(componentName, \" property '\").concat(requiredPropName, \"' is required when '\").concat(conditionalPropName, \"' is used.'\"));\n }\n }\n }\n}\n//# sourceMappingURL=warnConditionallyRequiredProps.js.map","import { __extends } from \"tslib\";\nimport * as React from 'react';\nimport { Async } from './Async';\nimport { EventGroup } from './EventGroup';\nimport { warnConditionallyRequiredProps } from './warn/warnConditionallyRequiredProps';\nimport { warnMutuallyExclusive } from './warn/warnMutuallyExclusive';\nimport { warnDeprecations } from './warn/warnDeprecations';\n/**\n * BaseComponent class, which provides basic helpers for all components.\n *\n * @public\n * {@docCategory BaseComponent}\n *\n * @deprecated Do not use. We are moving away from class component.\n */\nvar BaseComponent = /** @class */ (function (_super) {\n __extends(BaseComponent, _super);\n /**\n * BaseComponent constructor\n * @param props - The props for the component.\n * @param context - The context for the component.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function BaseComponent(props, context) {\n var _this = _super.call(this, props, context) || this;\n // eslint-disable-next-line deprecation/deprecation\n _makeAllSafe(_this, BaseComponent.prototype, [\n 'componentDidMount',\n 'shouldComponentUpdate',\n 'getSnapshotBeforeUpdate',\n 'render',\n 'componentDidUpdate',\n 'componentWillUnmount',\n ]);\n return _this;\n }\n /**\n * When the component receives props, make sure the componentRef is updated.\n */\n BaseComponent.prototype.componentDidUpdate = function (prevProps, prevState) {\n this._updateComponentRef(prevProps, this.props);\n };\n /**\n * When the component has mounted, update the componentRef.\n */\n BaseComponent.prototype.componentDidMount = function () {\n this._setComponentRef(this.props.componentRef, this);\n };\n /**\n * If we have disposables, dispose them automatically on unmount.\n */\n BaseComponent.prototype.componentWillUnmount = function () {\n this._setComponentRef(this.props.componentRef, null);\n if (this.__disposables) {\n for (var i = 0, len = this._disposables.length; i < len; i++) {\n var disposable = this.__disposables[i];\n if (disposable.dispose) {\n disposable.dispose();\n }\n }\n this.__disposables = null;\n }\n };\n Object.defineProperty(BaseComponent.prototype, \"className\", {\n /**\n * Gets the object's class name.\n */\n get: function () {\n if (!this.__className) {\n var funcNameRegex = /function (.{1,})\\(/;\n var results = funcNameRegex.exec(this.constructor.toString());\n this.__className = results && results.length > 1 ? results[1] : '';\n }\n return this.__className;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BaseComponent.prototype, \"_disposables\", {\n /**\n * Allows subclasses to push things to this._disposables to be auto disposed.\n */\n get: function () {\n if (!this.__disposables) {\n this.__disposables = [];\n }\n return this.__disposables;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BaseComponent.prototype, \"_async\", {\n /**\n * Gets the async instance associated with the component, created on demand. The async instance gives\n * subclasses a way to execute setTimeout/setInterval async calls safely, where the callbacks\n * will be cleared/ignored automatically after unmounting. The helpers within the async object also\n * preserve the this pointer so that you don't need to \"bind\" the callbacks.\n */\n get: function () {\n if (!this.__async) {\n this.__async = new Async(this);\n this._disposables.push(this.__async);\n }\n return this.__async;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BaseComponent.prototype, \"_events\", {\n /**\n * Gets the event group instance assocaited with the component, created on demand. The event instance\n * provides on/off methods for listening to DOM (or regular javascript object) events. The event callbacks\n * will be automatically disconnected after unmounting. The helpers within the events object also\n * preserve the this reference so that you don't need to \"bind\" the callbacks.\n */\n get: function () {\n if (!this.__events) {\n this.__events = new EventGroup(this);\n this._disposables.push(this.__events);\n }\n return this.__events;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Helper to return a memoized ref resolver function.\n * @param refName - Name of the member to assign the ref to.\n * @returns A function instance keyed from the given refname.\n * @deprecated Use `createRef` from React.createRef.\n */\n BaseComponent.prototype._resolveRef = function (refName) {\n var _this = this;\n if (!this.__resolves) {\n this.__resolves = {};\n }\n if (!this.__resolves[refName]) {\n this.__resolves[refName] = function (ref) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (_this[refName] = ref);\n };\n }\n return this.__resolves[refName];\n };\n /**\n * Updates the componentRef (by calling it with \"this\" when necessary.)\n */\n BaseComponent.prototype._updateComponentRef = function (currentProps, newProps) {\n if (newProps === void 0) { newProps = {}; }\n // currentProps *should* always be defined, but verify that just in case a subclass is manually\n // calling a lifecycle method with no parameters (which has happened) or other odd usage.\n if (currentProps && newProps && currentProps.componentRef !== newProps.componentRef) {\n this._setComponentRef(currentProps.componentRef, null);\n this._setComponentRef(newProps.componentRef, this);\n }\n };\n /**\n * Warns when a deprecated props are being used.\n *\n * @param deprecationMap - The map of deprecations, where key is the prop name and the value is\n * either null or a replacement prop name.\n */\n BaseComponent.prototype._warnDeprecations = function (deprecationMap) {\n warnDeprecations(this.className, this.props, deprecationMap);\n };\n /**\n * Warns when props which are mutually exclusive with each other are both used.\n *\n * @param mutuallyExclusiveMap - The map of mutually exclusive props.\n */\n BaseComponent.prototype._warnMutuallyExclusive = function (mutuallyExclusiveMap) {\n warnMutuallyExclusive(this.className, this.props, mutuallyExclusiveMap);\n };\n /**\n * Warns when props are required if a condition is met.\n *\n * @param requiredProps - The name of the props that are required when the condition is met.\n * @param conditionalPropName - The name of the prop that the condition is based on.\n * @param condition - Whether the condition is met.\n */\n BaseComponent.prototype._warnConditionallyRequiredProps = function (requiredProps, conditionalPropName, condition) {\n warnConditionallyRequiredProps(this.className, this.props, requiredProps, conditionalPropName, condition);\n };\n BaseComponent.prototype._setComponentRef = function (ref, value) {\n if (!this._skipComponentRefResolution && ref) {\n if (typeof ref === 'function') {\n ref(value);\n }\n if (typeof ref === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref.current = value;\n }\n }\n };\n return BaseComponent;\n}(React.Component));\nexport { BaseComponent };\n/**\n * Helper to override a given method with a wrapper method that can try/catch the original, but also\n * ensures that the BaseComponent's methods are called before the subclass's. This ensures that\n * componentWillUnmount in the base is called and that things in the _disposables array are disposed.\n */\n// eslint-disable-next-line deprecation/deprecation\nfunction _makeAllSafe(obj, prototype, methodNames) {\n for (var i = 0, len = methodNames.length; i < len; i++) {\n _makeSafe(obj, prototype, methodNames[i]);\n }\n}\n// eslint-disable-next-line deprecation/deprecation\nfunction _makeSafe(obj, prototype, methodName) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n var classMethod = obj[methodName];\n var prototypeMethod = prototype[methodName];\n if (classMethod || prototypeMethod) {\n obj[methodName] = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n /* eslint-enable @typescript-eslint/no-explicit-any */\n var retVal;\n if (prototypeMethod) {\n retVal = prototypeMethod.apply(this, args);\n }\n if (classMethod !== prototypeMethod) {\n retVal = classMethod.apply(this, args);\n }\n return retVal;\n };\n }\n}\n/**\n * Simple constant function for returning null, used to render empty templates in JSX.\n *\n * @public\n */\nexport function nullRender() {\n return null;\n}\n//# sourceMappingURL=BaseComponent.js.map","/**\n * Simulated enum for keycodes. These will get inlined by uglify when used much like an enum\n *\n * @public\n * {@docCategory KeyCodes}\n */\nexport var KeyCodes = {\n backspace: 8,\n tab: 9,\n enter: 13,\n shift: 16,\n ctrl: 17,\n alt: 18,\n pauseBreak: 19,\n capslock: 20,\n escape: 27,\n space: 32,\n pageUp: 33,\n pageDown: 34,\n end: 35,\n home: 36,\n left: 37,\n up: 38,\n right: 39,\n down: 40,\n insert: 45,\n del: 46,\n zero: 48,\n one: 49,\n two: 50,\n three: 51,\n four: 52,\n five: 53,\n six: 54,\n seven: 55,\n eight: 56,\n nine: 57,\n colon: 58,\n a: 65,\n b: 66,\n c: 67,\n d: 68,\n e: 69,\n f: 70,\n g: 71,\n h: 72,\n i: 73,\n j: 74,\n k: 75,\n l: 76,\n m: 77,\n n: 78,\n o: 79,\n p: 80,\n q: 81,\n r: 82,\n s: 83,\n t: 84,\n u: 85,\n v: 86,\n w: 87,\n x: 88,\n y: 89,\n z: 90,\n leftWindow: 91,\n rightWindow: 92,\n select: 93,\n /* eslint-disable @typescript-eslint/naming-convention */\n zero_numpad: 96,\n one_numpad: 97,\n two_numpad: 98,\n three_numpad: 99,\n four_numpad: 100,\n five_numpad: 101,\n six_numpad: 102,\n seven_numpad: 103,\n eight_numpad: 104,\n nine_numpad: 105,\n /* eslint-enable @typescript-eslint/naming-convention */\n multiply: 106,\n add: 107,\n subtract: 109,\n decimalPoint: 110,\n divide: 111,\n f1: 112,\n f2: 113,\n f3: 114,\n f4: 115,\n f5: 116,\n f6: 117,\n f7: 118,\n f8: 119,\n f9: 120,\n f10: 121,\n f11: 122,\n f12: 123,\n numlock: 144,\n scrollLock: 145,\n semicolon: 186,\n equalSign: 187,\n comma: 188,\n dash: 189,\n period: 190,\n forwardSlash: 191,\n graveAccent: 192,\n openBracket: 219,\n backSlash: 220,\n closeBracket: 221,\n singleQuote: 222,\n};\n//# sourceMappingURL=KeyCodes.js.map","/**\n * Rectangle helper class.\n *\n * @public\n * {@docCategory Rectangle}\n */\nvar Rectangle = /** @class */ (function () {\n function Rectangle(left, right, top, bottom) {\n if (left === void 0) { left = 0; }\n if (right === void 0) { right = 0; }\n if (top === void 0) { top = 0; }\n if (bottom === void 0) { bottom = 0; }\n this.top = top;\n this.bottom = bottom;\n this.left = left;\n this.right = right;\n }\n Object.defineProperty(Rectangle.prototype, \"width\", {\n /**\n * Calculated automatically by subtracting the right from left\n */\n get: function () {\n return this.right - this.left;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"height\", {\n /**\n * Calculated automatically by subtracting the bottom from top.\n */\n get: function () {\n return this.bottom - this.top;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Tests if another rect is approximately equal to this rect (within 4 decimal places.)\n */\n Rectangle.prototype.equals = function (rect) {\n // Fixing to 4 decimal places because it allows enough precision and will handle cases when something\n // should be rounded, like .999999 should round to 1.\n return (parseFloat(this.top.toFixed(4)) === parseFloat(rect.top.toFixed(4)) &&\n parseFloat(this.bottom.toFixed(4)) === parseFloat(rect.bottom.toFixed(4)) &&\n parseFloat(this.left.toFixed(4)) === parseFloat(rect.left.toFixed(4)) &&\n parseFloat(this.right.toFixed(4)) === parseFloat(rect.right.toFixed(4)));\n };\n return Rectangle;\n}());\nexport { Rectangle };\n//# sourceMappingURL=Rectangle.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Returns a single function which will call each of the given functions in the context of the\n * parent.\n */\nexport function appendFunction(parent) {\n var functions = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n functions[_i - 1] = arguments[_i];\n }\n if (functions.length < 2) {\n return functions[0];\n }\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n functions.forEach(function (f) { return f && f.apply(parent, args); });\n };\n}\n//# sourceMappingURL=appendFunction.js.map","/**\n * ARIA helper to concatenate attributes, returning undefined if all attributes\n * are undefined. (Empty strings are not a valid ARIA attribute value.)\n *\n * @param ariaAttributes - ARIA attributes to merge\n */\nexport function mergeAriaAttributeValues() {\n var ariaAttributes = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n ariaAttributes[_i] = arguments[_i];\n }\n var mergedAttribute = ariaAttributes\n .filter(function (arg) { return arg; })\n .join(' ')\n .trim();\n return mergedAttribute === '' ? undefined : mergedAttribute;\n}\n//# sourceMappingURL=aria.js.map","/**\n * Helper to find the index of an item within an array, using a callback to\n * determine the match.\n *\n * @public\n * @param array - Array to search.\n * @param cb - Callback which returns true on matches.\n * @param fromIndex - Optional index to start from (defaults to 0)\n */\nexport function findIndex(array, cb, fromIndex) {\n if (fromIndex === void 0) { fromIndex = 0; }\n var index = -1;\n for (var i = fromIndex; array && i < array.length; i++) {\n if (cb(array[i], i)) {\n index = i;\n break;\n }\n }\n return index;\n}\n/**\n * Helper to find the first item within an array that satisfies the callback.\n * @param array - Array to search\n * @param cb - Callback which returns true on matches\n */\nexport function find(array, cb) {\n var index = findIndex(array, cb);\n if (index < 0) {\n return undefined;\n }\n return array[index];\n}\n/**\n * Creates an array of a given size and helper method to populate.\n *\n * @public\n * @param size - Size of array.\n * @param getItem - Callback to populate given cell index.\n */\nexport function createArray(size, getItem) {\n var array = [];\n for (var i = 0; i < size; i++) {\n array.push(getItem(i));\n }\n return array;\n}\n/**\n * Convert the given array to a matrix with columnCount number\n * of columns.\n *\n * @public\n * @param items - The array to convert\n * @param columnCount - The number of columns for the resulting matrix\n * @returns A matrix of items\n */\nexport function toMatrix(items, columnCount) {\n return items.reduce(function (rows, currentValue, index) {\n if (index % columnCount === 0) {\n rows.push([currentValue]);\n }\n else {\n rows[rows.length - 1].push(currentValue);\n }\n return rows;\n }, []);\n}\n/**\n * Given an array, it returns a new array that does not contain the item at the given index.\n * @param array - The array to operate on\n * @param index - The index of the element to remove\n */\nexport function removeIndex(array, index) {\n return array.filter(function (_, i) { return index !== i; });\n}\n/**\n * Given an array, this function returns a new array where the element at a given index has been replaced.\n * @param array - The array to operate on\n * @param newElement - The element that will be placed in the new array\n * @param index - The index of the element that should be replaced\n */\nexport function replaceElement(array, newElement, index) {\n var copy = array.slice();\n copy[index] = newElement;\n return copy;\n}\n/**\n * Given an array, this function returns a new array where an element has been inserted at the given index.\n * @param array - The array to operate on\n * @param index - The index where an element should be inserted\n * @param itemToAdd - The element to insert\n */\nexport function addElementAtIndex(array, index, itemToAdd) {\n var copy = array.slice();\n copy.splice(index, 0, itemToAdd);\n return copy;\n}\n/**\n * Given an array where each element is of type T or T[], flatten it into an array of T\n * @param array - The array where each element can optionally also be an array\n */\nexport function flatten(array) {\n var result = [];\n array.forEach(function (item) { return (result = result.concat(item)); });\n return result;\n}\n/**\n * Returns a boolean indicating if the two given arrays are equal in length and values.\n *\n * @param array1 - First array to compare\n * @param array2 - Second array to compare\n * @returns True if the arrays are the same length and have the same values in the same positions, false otherwise.\n */\nexport function arraysEqual(array1, array2) {\n if (array1.length !== array2.length) {\n return false;\n }\n for (var i = 0; i < array1.length; i++) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\n//# sourceMappingURL=array.js.map","import { KeyCodes } from './KeyCodes';\nimport { getDocument } from './dom/getDocument';\nimport { getItem, setItem } from './sessionStorage';\nimport { setRTL as mergeStylesSetRTL } from '@fluentui/merge-styles';\nvar RTL_LOCAL_STORAGE_KEY = 'isRTL';\n// Default to undefined so that we initialize on first read.\nvar _isRTL;\n/**\n * Gets the rtl state of the page (returns true if in rtl.)\n */\nexport function getRTL(theme) {\n if (theme === void 0) { theme = {}; }\n if (theme.rtl !== undefined) {\n return theme.rtl;\n }\n if (_isRTL === undefined) {\n // Fabric supports persisting the RTL setting between page refreshes via session storage\n var savedRTL = getItem(RTL_LOCAL_STORAGE_KEY);\n if (savedRTL !== null) {\n _isRTL = savedRTL === '1';\n setRTL(_isRTL);\n }\n var doc = getDocument();\n if (_isRTL === undefined && doc) {\n _isRTL = ((doc.body && doc.body.getAttribute('dir')) || doc.documentElement.getAttribute('dir')) === 'rtl';\n mergeStylesSetRTL(_isRTL);\n }\n }\n return !!_isRTL;\n}\n/**\n * Sets the rtl state of the page (by adjusting the dir attribute of the html element.)\n */\nexport function setRTL(isRTL, persistSetting) {\n if (persistSetting === void 0) { persistSetting = false; }\n var doc = getDocument();\n if (doc) {\n doc.documentElement.setAttribute('dir', isRTL ? 'rtl' : 'ltr');\n }\n if (persistSetting) {\n setItem(RTL_LOCAL_STORAGE_KEY, isRTL ? '1' : '0');\n }\n _isRTL = isRTL;\n mergeStylesSetRTL(_isRTL);\n}\n/**\n * Returns the given key, but flips right/left arrows if necessary.\n */\nexport function getRTLSafeKeyCode(key, theme) {\n if (theme === void 0) { theme = {}; }\n if (getRTL(theme)) {\n if (key === KeyCodes.left) {\n key = KeyCodes.right;\n }\n else if (key === KeyCodes.right) {\n key = KeyCodes.left;\n }\n }\n return key;\n}\n//# sourceMappingURL=rtl.js.map","import { mergeCssSets, Stylesheet } from '@fluentui/merge-styles';\nimport { getRTL } from './rtl';\nimport { getWindow } from './dom';\nvar MAX_CACHE_COUNT = 50;\nvar DEFAULT_SPECIFICITY_MULTIPLIER = 5;\nvar _memoizedClassNames = 0;\nvar stylesheet = Stylesheet.getInstance();\nif (stylesheet && stylesheet.onReset) {\n stylesheet.onReset(function () { return _memoizedClassNames++; });\n}\n// Note that because of the caching nature within the classNames memoization,\n// I've disabled this rule to simply be able to work with any types.\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// This represents a prop we attach to each Map to indicate the cached return value\n// associated with the graph node.\nvar retVal = '__retval__';\n/**\n * Creates a getClassNames function which calls getStyles given the props, and injects them\n * into mergeStyleSets.\n *\n * Note that the props you pass in on every render should be in the same order and\n * immutable (numbers, strings, and booleans). This will allow the results to be memoized. Violating\n * these will cause extra recalcs to occur.\n */\nexport function classNamesFunction(options) {\n // We build a trie where each node is a Map. The map entry key represents an argument\n // value, and the entry value is another node (Map). Each node has a `__retval__`\n // property which is used to hold the cached response.\n if (options === void 0) { options = {}; }\n // To derive the response, we can simply ensure the arguments are added or already\n // exist in the trie. At the last node, if there is a `__retval__` we return that. Otherwise\n // we call the `getStyles` api to evaluate, cache on the property, and return that.\n // let map: IRecursiveMemoNode = new Map();\n var windowMap = new Map();\n var styleCalcCount = 0;\n var getClassNamesCount = 0;\n var currentMemoizedClassNames = _memoizedClassNames;\n var getClassNames = function (styleFunctionOrObject, styleProps) {\n var _a;\n if (styleProps === void 0) { styleProps = {}; }\n // If useStaticStyles is true, styleFunctionOrObject returns slot to classname mappings.\n // If there is also no style overrides, we can skip merge styles completely and\n // simply return the result from the style funcion.\n if (options.useStaticStyles &&\n typeof styleFunctionOrObject === 'function' &&\n styleFunctionOrObject.__noStyleOverride__) {\n return styleFunctionOrObject(styleProps);\n }\n getClassNamesCount++;\n var shadowConfig = styleFunctionOrObject\n ? styleFunctionOrObject.__shadowConfig__\n : undefined;\n var key = shadowConfig && shadowConfig.window ? shadowConfig.window : '__default__';\n if (!windowMap.has(key)) {\n windowMap.set(key, new Map());\n }\n var current = windowMap.get(key);\n // let current: Map = map;\n var theme = styleProps.theme;\n var rtl = theme && theme.rtl !== undefined ? theme.rtl : getRTL();\n var disableCaching = options.disableCaching;\n // On reset of our stylesheet, reset memoized cache.\n if (currentMemoizedClassNames !== _memoizedClassNames) {\n currentMemoizedClassNames = _memoizedClassNames;\n // map = new Map();\n windowMap.set(key, new Map());\n current = windowMap.get(key);\n styleCalcCount = 0;\n }\n if (!options.disableCaching) {\n current = _traverseMap(windowMap.get(key), styleFunctionOrObject);\n current = _traverseMap(current, styleProps);\n }\n if (disableCaching || !current[retVal]) {\n if (styleFunctionOrObject === undefined) {\n current[retVal] = {};\n }\n else {\n current[retVal] = mergeCssSets([\n (typeof styleFunctionOrObject === 'function'\n ? styleFunctionOrObject(styleProps)\n : styleFunctionOrObject),\n ], {\n shadowConfig: styleFunctionOrObject.__shadowConfig__,\n rtl: !!rtl,\n specificityMultiplier: options.useStaticStyles ? DEFAULT_SPECIFICITY_MULTIPLIER : undefined,\n });\n }\n if (!disableCaching) {\n styleCalcCount++;\n }\n }\n if (styleCalcCount > (options.cacheSize || MAX_CACHE_COUNT)) {\n var win = getWindow();\n if ((_a = win === null || win === void 0 ? void 0 : win.FabricConfig) === null || _a === void 0 ? void 0 : _a.enableClassNameCacheFullWarning) {\n // eslint-disable-next-line no-console\n console.warn(\"Styles are being recalculated too frequently. Cache miss rate is \".concat(styleCalcCount, \"/\").concat(getClassNamesCount, \".\"));\n // eslint-disable-next-line no-console\n console.trace();\n }\n windowMap.get(key).clear();\n styleCalcCount = 0;\n // Mutate the options passed in, that's all we can do.\n options.disableCaching = true;\n }\n // Note: the retVal is an attached property on the Map; not a key in the Map. We use this attached property to\n // cache the return value for this branch of the graph.\n return current[retVal];\n };\n return getClassNames;\n}\nfunction _traverseEdge(current, value) {\n value = _normalizeValue(value);\n if (!current.has(value)) {\n current.set(value, new Map());\n }\n return current.get(value);\n}\nfunction _traverseMap(current, inputs) {\n if (typeof inputs === 'function') {\n var cachedInputsFromStyled = inputs.__cachedInputs__;\n if (cachedInputsFromStyled) {\n // The styled helper will generate the styles function and will attach the cached\n // inputs (consisting of the default styles, customzied styles, and user provided styles.)\n // These should be used as cache keys for deriving the memoized value.\n for (var _i = 0, _a = inputs.__cachedInputs__; _i < _a.length; _i++) {\n var input = _a[_i];\n current = _traverseEdge(current, input);\n }\n }\n else {\n current = _traverseEdge(current, inputs);\n }\n }\n else if (typeof inputs === 'object') {\n for (var propName in inputs) {\n if (inputs.hasOwnProperty(propName)) {\n current = _traverseEdge(current, inputs[propName]);\n }\n }\n }\n return current;\n}\nfunction _normalizeValue(value) {\n switch (value) {\n case undefined:\n return '__undefined__';\n case null:\n return '__null__';\n default:\n return value;\n }\n}\n//# sourceMappingURL=classNamesFunction.js.map","import { Stylesheet } from '@fluentui/merge-styles';\nvar _initializedStylesheetResets = false;\nvar _resetCounter = 0;\nvar _emptyObject = { empty: true };\nvar _dictionary = {};\nvar _weakMap = typeof WeakMap === 'undefined' ? null : WeakMap;\n/**\n * Test utility for providing a custom weakmap.\n *\n * @internal\n * */\nexport function setMemoizeWeakMap(weakMap) {\n _weakMap = weakMap;\n}\n/**\n * Reset memoizations.\n */\nexport function resetMemoizations() {\n _resetCounter++;\n}\n/**\n * Memoize decorator to be used on class methods. WARNING: the `this` reference\n * will be inaccessible within a memoized method, given that a cached method's `this`\n * would not be instance-specific.\n *\n * @public\n */\nexport function memoize(_target, _key, descriptor) {\n // We bind to \"null\" to prevent people from inadvertently pulling values from \"this\",\n // rather than passing them in as input values which can be memoized.\n var fn = memoizeFunction(descriptor.value && descriptor.value.bind(null));\n return {\n configurable: true,\n get: function () {\n return fn;\n },\n };\n}\n/**\n * Memoizes a function; when you pass in the same parameters multiple times, it returns a cached result.\n * Be careful when passing in objects, you need to pass in the same INSTANCE for caching to work. Otherwise\n * it will grow the cache unnecessarily. Also avoid using default values that evaluate functions; passing in\n * undefined for a value and relying on a default function will execute it the first time, but will not\n * re-evaluate subsequent times which may have been unexpected.\n *\n * By default, the cache will reset after 100 permutations, to avoid abuse cases where the function is\n * unintendedly called with unique objects. Without a reset, the cache could grow infinitely, so we safeguard\n * by resetting. To override this behavior, pass a value of 0 to the maxCacheSize parameter.\n *\n * @public\n * @param cb - The function to memoize.\n * @param maxCacheSize - Max results to cache. If the cache exceeds this value, it will reset on the next call.\n * @param ignoreNullOrUndefinedResult - Flag to decide whether to cache callback result if it is undefined/null.\n * If the flag is set to true, the callback result is recomputed every time till the callback result is\n * not undefined/null for the first time, and then the non-undefined/null version gets cached.\n * @returns A memoized version of the function.\n */\nexport function memoizeFunction(cb, maxCacheSize, ignoreNullOrUndefinedResult) {\n if (maxCacheSize === void 0) { maxCacheSize = 100; }\n if (ignoreNullOrUndefinedResult === void 0) { ignoreNullOrUndefinedResult = false; }\n // Avoid breaking scenarios which don't have weak map.\n if (!_weakMap) {\n return cb;\n }\n if (!_initializedStylesheetResets) {\n var stylesheet = Stylesheet.getInstance();\n if (stylesheet && stylesheet.onReset) {\n Stylesheet.getInstance().onReset(resetMemoizations);\n }\n _initializedStylesheetResets = true;\n }\n var rootNode;\n var cacheSize = 0;\n var localResetCounter = _resetCounter;\n return function memoizedFunction() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var currentNode = rootNode;\n if (rootNode === undefined ||\n localResetCounter !== _resetCounter ||\n (maxCacheSize > 0 && cacheSize > maxCacheSize)) {\n rootNode = _createNode();\n cacheSize = 0;\n localResetCounter = _resetCounter;\n }\n currentNode = rootNode;\n // Traverse the tree until we find the match.\n for (var i = 0; i < args.length; i++) {\n var arg = _normalizeArg(args[i]);\n if (!currentNode.map.has(arg)) {\n currentNode.map.set(arg, _createNode());\n }\n currentNode = currentNode.map.get(arg);\n }\n if (!currentNode.hasOwnProperty('value')) {\n currentNode.value = cb.apply(void 0, args);\n cacheSize++;\n }\n if (ignoreNullOrUndefinedResult && (currentNode.value === null || currentNode.value === undefined)) {\n currentNode.value = cb.apply(void 0, args);\n }\n return currentNode.value;\n };\n}\n/**\n * Creates a memoizer for a single-value function, backed by a WeakMap.\n * With a WeakMap, the memoized values are only kept as long as the source objects,\n * ensuring that there is no memory leak.\n *\n * This function assumes that the input values passed to the wrapped function will be\n * `function` or `object` types. To memoize functions which accept other inputs, use\n * `memoizeFunction`, which memoizes against arbitrary inputs using a lookup cache.\n *\n * @public\n */\nexport function createMemoizer(getValue) {\n if (!_weakMap) {\n // Without a `WeakMap` implementation, memoization is not possible.\n return getValue;\n }\n var cache = new _weakMap();\n function memoizedGetValue(input) {\n if (!input || (typeof input !== 'function' && typeof input !== 'object')) {\n // A WeakMap can only be used to test against reference values, i.e. 'function' and 'object'.\n // All other inputs cannot be memoized against in this manner.\n return getValue(input);\n }\n if (cache.has(input)) {\n return cache.get(input);\n }\n var value = getValue(input);\n cache.set(input, value);\n return value;\n }\n return memoizedGetValue;\n}\nfunction _normalizeArg(val) {\n if (!val) {\n return _emptyObject;\n }\n else if (typeof val === 'object' || typeof val === 'function') {\n return val;\n }\n else if (!_dictionary[val]) {\n _dictionary[val] = { val: val };\n }\n return _dictionary[val];\n}\nfunction _createNode() {\n return {\n map: _weakMap ? new _weakMap() : null,\n };\n}\n//# sourceMappingURL=memoize.js.map","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { createMemoizer } from '../memoize';\nfunction createComposedComponent(outer) {\n var Outer = outer;\n var outerMemoizer = createMemoizer(function (inner) {\n if (outer === inner) {\n throw new Error('Attempted to compose a component with itself.');\n }\n var Inner = inner;\n var innerMemoizer = createMemoizer(function (defaultRender) {\n var InnerWithDefaultRender = function (innerProps) {\n return React.createElement(Inner, __assign({}, innerProps, { defaultRender: defaultRender }));\n };\n return InnerWithDefaultRender;\n });\n var OuterWithDefaultRender = function (outerProps) {\n var defaultRender = outerProps.defaultRender;\n return React.createElement(Outer, __assign({}, outerProps, { defaultRender: defaultRender ? innerMemoizer(defaultRender) : Inner }));\n };\n return OuterWithDefaultRender;\n });\n return outerMemoizer;\n}\nvar componentAsMemoizer = createMemoizer(createComposedComponent);\n/**\n * Composes two components which conform to the `IComponentAs` specification; that is, two\n * components which accept a `defaultRender` prop, which is a 'default' implementation of\n * a component which accepts the same overall props.\n *\n * @public\n */\nexport function composeComponentAs(outer, inner) {\n return componentAsMemoizer(outer)(inner);\n}\n//# sourceMappingURL=composeComponentAs.js.map","/**\n * Concatination helper, which can merge class names together. Skips over falsey values.\n *\n * @public\n */\nexport function css() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var classes = [];\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var arg = args_1[_a];\n if (arg) {\n if (typeof arg === 'string') {\n classes.push(arg);\n }\n else if (arg.hasOwnProperty('toString') && typeof arg.toString === 'function') {\n classes.push(arg.toString());\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (var key in arg) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (arg[key]) {\n classes.push(key);\n }\n }\n }\n }\n }\n return classes.join(' ');\n}\n//# sourceMappingURL=css.js.map","import * as React from 'react';\nexport var CustomizerContext = React.createContext({\n customizations: {\n inCustomizerContext: false,\n settings: {},\n scopedSettings: {},\n },\n});\n//# sourceMappingURL=CustomizerContext.js.map","import { __assign } from \"tslib\";\n/**\n * Merge new and old settings, giving priority to new settings.\n * New settings is optional in which case oldSettings is returned as-is.\n * @param oldSettings - Old settings to fall back to.\n * @param newSettings - New settings that will be merged over oldSettings.\n * @returns Merged settings.\n */\nexport function mergeSettings(oldSettings, newSettings) {\n if (oldSettings === void 0) { oldSettings = {}; }\n var mergeSettingsWith = _isSettingsFunction(newSettings) ? newSettings : _settingsMergeWith(newSettings);\n return mergeSettingsWith(oldSettings);\n}\nexport function mergeScopedSettings(oldSettings, newSettings) {\n if (oldSettings === void 0) { oldSettings = {}; }\n var mergeSettingsWith = _isSettingsFunction(newSettings) ? newSettings : _scopedSettingsMergeWith(newSettings);\n return mergeSettingsWith(oldSettings);\n}\nfunction _isSettingsFunction(settings) {\n return typeof settings === 'function';\n}\nfunction _settingsMergeWith(newSettings) {\n return function (settings) { return (newSettings ? __assign(__assign({}, settings), newSettings) : settings); };\n}\nfunction _scopedSettingsMergeWith(scopedSettingsFromProps) {\n if (scopedSettingsFromProps === void 0) { scopedSettingsFromProps = {}; }\n return function (oldScopedSettings) {\n var newScopedSettings = __assign({}, oldScopedSettings);\n for (var scopeName in scopedSettingsFromProps) {\n if (scopedSettingsFromProps.hasOwnProperty(scopeName)) {\n newScopedSettings[scopeName] = __assign(__assign({}, oldScopedSettings[scopeName]), scopedSettingsFromProps[scopeName]);\n }\n }\n return newScopedSettings;\n };\n}\n//# sourceMappingURL=mergeSettings.js.map","import { mergeSettings, mergeScopedSettings } from './mergeSettings';\n/**\n * Merge props and customizations giving priority to props over context.\n * NOTE: This function will always perform multiple merge operations. Use with caution.\n * @param props - New settings to merge in.\n * @param parentContext - Context containing current settings.\n * @returns Merged customizations.\n */\nexport function mergeCustomizations(props, parentContext) {\n var _a = (parentContext || {}).customizations, customizations = _a === void 0 ? { settings: {}, scopedSettings: {} } : _a;\n return {\n customizations: {\n settings: mergeSettings(customizations.settings, props.settings),\n scopedSettings: mergeScopedSettings(customizations.scopedSettings, props.scopedSettings),\n inCustomizerContext: true,\n },\n };\n}\n//# sourceMappingURL=mergeCustomizations.js.map","import { __extends } from \"tslib\";\nimport * as React from 'react';\nimport { Customizations } from './Customizations';\nimport { CustomizerContext } from './CustomizerContext';\nimport { mergeCustomizations } from './mergeCustomizations';\n/**\n * The Customizer component allows for default props to be mixed into components which\n * are decorated with the customizable() decorator, or use the styled HOC. This enables\n * injection scenarios like:\n *\n * 1. render svg icons instead of the icon font within all buttons\n * 2. inject a custom theme object into a component\n *\n * Props are provided via the settings prop which should be one of the following:\n * - A json map which contains 1 or more name/value pairs representing injectable props.\n * - A function that receives the current settings and returns the new ones that apply to the scope\n *\n * @public\n *\n * @deprecated This component is deprecated for purpose of applying theme to components\n * as of `@fluentui/react` version 8. Use `ThemeProvider` for applying theme instead.\n */\nvar Customizer = /** @class */ (function (_super) {\n __extends(Customizer, _super);\n function Customizer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._onCustomizationChange = function () { return _this.forceUpdate(); };\n return _this;\n }\n Customizer.prototype.componentDidMount = function () {\n Customizations.observe(this._onCustomizationChange);\n };\n Customizer.prototype.componentWillUnmount = function () {\n Customizations.unobserve(this._onCustomizationChange);\n };\n Customizer.prototype.render = function () {\n var _this = this;\n var contextTransform = this.props.contextTransform;\n return (React.createElement(CustomizerContext.Consumer, null, function (parentContext) {\n var newContext = mergeCustomizations(_this.props, parentContext);\n if (contextTransform) {\n newContext = contextTransform(newContext);\n }\n return React.createElement(CustomizerContext.Provider, { value: newContext }, _this.props.children);\n }));\n };\n return Customizer;\n}(React.Component));\nexport { Customizer };\n//# sourceMappingURL=Customizer.js.map","/**\n * Allows you to hoist static functions in components.\n * Created for the purpose of fixing broken static functions in classes\n * that utilize decorators.\n *\n * @public\n * @param source - The object where the methods are hoisted from.\n * @param dest - The object to hoist the methods onto.\n * @returns The dest object with methods added\n */\nexport function hoistStatics(source, dest) {\n for (var name_1 in source) {\n if (source.hasOwnProperty(name_1)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dest[name_1] = source[name_1];\n }\n }\n return dest;\n}\n//# sourceMappingURL=hoistStatics.js.map","import { DEFAULT_SHADOW_CONFIG } from '@fluentui/merge-styles';\nimport * as React from 'react';\nexport var noop = function () { return false; };\nexport var noopShadow = function () { return DEFAULT_SHADOW_CONFIG; };\nexport var noopRootStylesheets = function () { return new Map(); };\nexport var noopUndefined = function () { return undefined; };\nexport var getNewContext = function () {\n return {\n stylesheets: new Map(),\n useAdoptedStylesheetEx: noop,\n useAdoptedStylesheet: noop,\n useShadowConfig: noopShadow,\n useMergeStylesShadowRootContext: noopUndefined,\n useHasMergeStylesShadowRootContext: noop,\n useMergeStylesRootStylesheets: noopRootStylesheets,\n useWindow: noopUndefined,\n useStyled: noopUndefined,\n };\n};\nexport var MergeStylesDefaultContext = React.createContext(getNewContext());\n//# sourceMappingURL=MergeStylesDefaultContext.js.map","import * as React from 'react';\nimport { MergeStylesDefaultContext } from '../contexts/MergeStylesDefaultContext';\nexport var useMergeStylesHooks = function () {\n var ctx = React.useContext(MergeStylesDefaultContext);\n return {\n useAdoptedStylesheet: ctx.useAdoptedStylesheet,\n useAdoptedStylesheetEx: ctx.useAdoptedStylesheetEx,\n useShadowConfig: ctx.useShadowConfig,\n useMergeStylesShadowRootContext: ctx.useMergeStylesShadowRootContext,\n useHasMergeStylesShadowRootContext: ctx.useHasMergeStylesShadowRootContext,\n useMergeStylesRootStylesheets: ctx.useMergeStylesRootStylesheets,\n useWindow: ctx.useWindow,\n useStyled: ctx.useStyled,\n };\n};\n//# sourceMappingURL=useMergeStylesHooks.js.map","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { GLOBAL_STYLESHEET_KEY } from '@fluentui/merge-styles';\nimport { useMergeStylesHooks } from '../hooks/useMergeStylesHooks';\nexport var MergeStylesShadowRootContext = React.createContext(undefined);\n/**\n * Context for a shadow root.\n */\nexport var MergeStylesShadowRootProvider = function (_a) {\n var shadowRoot = _a.shadowRoot, props = __rest(_a, [\"shadowRoot\"]);\n var value = React.useMemo(function () {\n return {\n stylesheets: new Map(),\n shadowRoot: shadowRoot,\n };\n }, [shadowRoot]);\n return (React.createElement(MergeStylesShadowRootContext.Provider, __assign({ value: value }, props),\n React.createElement(GlobalStyles, null),\n props.children));\n};\nvar GlobalStyles = function (props) {\n var useAdoptedStylesheet = useMergeStylesHooks().useAdoptedStylesheet;\n useAdoptedStylesheet(GLOBAL_STYLESHEET_KEY);\n return null;\n};\n//# sourceMappingURL=MergeStylesShadowRootContext.js.map","import * as React from 'react';\nimport { MergeStylesShadowRootContext, } from '../contexts/MergeStylesShadowRootContext';\n/**\n * Test if a context is available.\n * @returns true if there is a context.\n */\nexport var useHasMergeStylesShadowRootContext = function () {\n return !!useMergeStylesShadowRootContext();\n};\n/**\n * Get a reference to the shadow root context.\n * @returns The context for the shadow root.\n */\nexport var useMergeStylesShadowRootContext = function () {\n return React.useContext(MergeStylesShadowRootContext);\n};\n//# sourceMappingURL=useMergeStylesShadowRoot.js.map","import { GLOBAL_STYLESHEET_KEY } from '@fluentui/merge-styles';\nimport { useMergeStylesHooks } from '../hooks/useMergeStylesHooks';\nimport { useMergeStylesShadowRootContext } from '../hooks/useMergeStylesShadowRoot';\nexport var MergeStylesShadowRootConsumer = function (_a) {\n var stylesheetKey = _a.stylesheetKey, children = _a.children;\n var _b = useMergeStylesHooks(), useAdoptedStylesheetEx = _b.useAdoptedStylesheetEx, useMergeStylesRootStylesheets = _b.useMergeStylesRootStylesheets, useWindow = _b.useWindow;\n var shadowCtx = useMergeStylesShadowRootContext();\n var rootMergeStyles = useMergeStylesRootStylesheets();\n var win = useWindow();\n useAdoptedStylesheetEx(GLOBAL_STYLESHEET_KEY, shadowCtx, rootMergeStyles, win);\n useAdoptedStylesheetEx(stylesheetKey, shadowCtx, rootMergeStyles, win);\n return children(!!shadowCtx);\n};\n//# sourceMappingURL=MergeStylesShadowRootConsumer.js.map","import * as React from 'react';\n/**\n * Context for providing the window.\n */\n// eslint-disable-next-line @fluentui/no-context-default-value\nexport var WindowContext = React.createContext({\n // eslint-disable-next-line no-restricted-globals\n window: typeof window === 'object' ? window : undefined,\n});\n/**\n * Hook to access the window object. This can be overridden contextually using the `WindowProvider`.\n */\nexport var useWindow = function () { return React.useContext(WindowContext).window; };\n/**\n * Hook to access the document object. This can be overridden contextually using the `WindowProvider`.\n */\nexport var useDocument = function () { var _a; return (_a = React.useContext(WindowContext).window) === null || _a === void 0 ? void 0 : _a.document; };\n/**\n * Component to provide the window object contextually. This is useful when rendering content to an element\n * contained within a child window or iframe element, where event handlers and styling must be projected\n * to an alternative window or document.\n */\nexport var WindowProvider = function (props) {\n return React.createElement(WindowContext.Provider, { value: props }, props.children);\n};\n//# sourceMappingURL=WindowProvider.js.map","import { __assign, __extends } from \"tslib\";\nimport * as React from 'react';\nimport { Customizations } from './Customizations';\nimport { hoistStatics } from '../hoistStatics';\nimport { CustomizerContext } from './CustomizerContext';\nimport { concatStyleSets, makeShadowConfig } from '@fluentui/merge-styles';\nimport { MergeStylesShadowRootConsumer } from '../shadowDom/contexts/MergeStylesShadowRootConsumer';\nimport { getWindow } from '../dom/getWindow';\nimport { WindowContext } from '@fluentui/react-window-provider';\nimport { memoizeFunction } from '../memoize';\nvar memoizedMakeShadowConfig = memoizeFunction(makeShadowConfig);\nvar mergeComponentStyles = memoizeFunction(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction (defaultStyles, componentStyles, shadowConfig) {\n var _a;\n var styles = (_a = componentStyles !== null && componentStyles !== void 0 ? componentStyles : defaultStyles) !== null && _a !== void 0 ? _a : {};\n styles.__shadowConfig__ = shadowConfig;\n return styles;\n});\nexport function customizable(scope, fields, concatStyles) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function customizableFactory(ComposedComponent) {\n var _a;\n var resultClass = (_a = /** @class */ (function (_super) {\n __extends(ComponentWithInjectedProps, _super);\n function ComponentWithInjectedProps(props) {\n var _this = _super.call(this, props) || this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this._styleCache = {};\n _this._onSettingChanged = _this._onSettingChanged.bind(_this);\n return _this;\n }\n ComponentWithInjectedProps.prototype.componentDidMount = function () {\n Customizations.observe(this._onSettingChanged);\n };\n ComponentWithInjectedProps.prototype.componentWillUnmount = function () {\n Customizations.unobserve(this._onSettingChanged);\n };\n ComponentWithInjectedProps.prototype.render = function () {\n var _this = this;\n return (React.createElement(MergeStylesShadowRootConsumer, { stylesheetKey: scope }, function (inShadow) {\n return (React.createElement(CustomizerContext.Consumer, null, function (context) {\n var _a;\n var defaultProps = Customizations.getSettings(fields, scope, context.customizations);\n var win = (_a = _this.context.window) !== null && _a !== void 0 ? _a : getWindow();\n var shadowConfig = memoizedMakeShadowConfig(scope, inShadow, win);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var componentProps = _this.props;\n // If defaultProps.styles is a function, evaluate it before calling concatStyleSets\n if (defaultProps.styles && typeof defaultProps.styles === 'function') {\n defaultProps.styles = defaultProps.styles(__assign(__assign({}, defaultProps), componentProps));\n }\n // If concatStyles is true and custom styles have been defined compute those styles\n if (concatStyles && defaultProps.styles) {\n if (_this._styleCache.default !== defaultProps.styles ||\n _this._styleCache.component !== componentProps.styles) {\n var mergedStyles = concatStyleSets(defaultProps.styles, componentProps.styles);\n mergedStyles.__shadowConfig__ = shadowConfig;\n _this._styleCache.default = defaultProps.styles;\n _this._styleCache.component = componentProps.styles;\n _this._styleCache.merged = mergedStyles;\n }\n return (React.createElement(ComposedComponent, __assign({}, defaultProps, componentProps, { styles: _this._styleCache.merged })));\n }\n var styles = mergeComponentStyles(defaultProps.styles, componentProps.styles, shadowConfig);\n return React.createElement(ComposedComponent, __assign({}, defaultProps, componentProps, { styles: styles }));\n }));\n }));\n };\n ComponentWithInjectedProps.prototype._onSettingChanged = function () {\n this.forceUpdate();\n };\n return ComponentWithInjectedProps;\n }(React.Component)),\n _a.displayName = 'Customized' + scope,\n _a.contextType = WindowContext,\n _a);\n return hoistStatics(ComposedComponent, resultClass);\n };\n}\n//# sourceMappingURL=customizable.js.map","import * as React from 'react';\nimport { Customizations } from './Customizations';\nimport { CustomizerContext } from './CustomizerContext';\n/**\n * Hook to get Customizations settings from Customizations singleton or CustomizerContext.\n * It will trigger component state update on settings change observed.\n */\nexport function useCustomizationSettings(properties, scopeName) {\n var forceUpdate = useForceUpdate();\n var customizations = React.useContext(CustomizerContext).customizations;\n var inCustomizerContext = customizations.inCustomizerContext;\n React.useEffect(function () {\n if (!inCustomizerContext) {\n Customizations.observe(forceUpdate);\n }\n return function () {\n if (!inCustomizerContext) {\n Customizations.unobserve(forceUpdate);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- exclude forceUpdate\n }, [inCustomizerContext]);\n return Customizations.getSettings(properties, scopeName, customizations);\n}\nfunction useForceUpdate() {\n var _a = React.useState(0), setValue = _a[1];\n return function () { return setValue(function (value) { return ++value; }); };\n}\n//# sourceMappingURL=useCustomizationSettings.js.map","import { appendFunction } from './appendFunction';\n/**\n * Extends a component's lifetime methods by appending new functions to the existing lifetime functions.\n */\nexport function extendComponent(parent, methods) {\n for (var name_1 in methods) {\n if (methods.hasOwnProperty(name_1)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parent[name_1] = appendFunction(parent, parent[name_1], methods[name_1]);\n }\n }\n}\n//# sourceMappingURL=extendComponent.js.map","import { getWindow } from './dom/getWindow';\nimport { Stylesheet } from '@fluentui/merge-styles';\n// Initialize global window id.\nvar CURRENT_ID_PROPERTY = '__currentId__';\nvar DEFAULT_ID_STRING = 'id__';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar _global = getWindow() || {};\nif (_global[CURRENT_ID_PROPERTY] === undefined) {\n _global[CURRENT_ID_PROPERTY] = 0;\n}\nvar _initializedStylesheetResets = false;\n/**\n * Generates a unique id in the global scope (this spans across duplicate copies of the same library.)\n *\n * @public\n */\nexport function getId(prefix) {\n if (!_initializedStylesheetResets) {\n // Configure ids to reset on stylesheet resets.\n var stylesheet = Stylesheet.getInstance();\n if (stylesheet && stylesheet.onReset) {\n stylesheet.onReset(resetIds);\n }\n _initializedStylesheetResets = true;\n }\n var index = _global[CURRENT_ID_PROPERTY]++;\n return (prefix === undefined ? DEFAULT_ID_STRING : prefix) + index;\n}\n/**\n * Resets id counter to an (optional) number.\n *\n * @public\n */\nexport function resetIds(counter) {\n if (counter === void 0) { counter = 0; }\n _global[CURRENT_ID_PROPERTY] = counter;\n}\n//# sourceMappingURL=getId.js.map","var toObjectMap = function () {\n var items = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n items[_i] = arguments[_i];\n }\n var result = {};\n for (var _a = 0, items_1 = items; _a < items_1.length; _a++) {\n var item = items_1[_a];\n var keys = Array.isArray(item) ? item : Object.keys(item);\n for (var _b = 0, keys_1 = keys; _b < keys_1.length; _b++) {\n var key = keys_1[_b];\n result[key] = 1;\n }\n }\n return result;\n};\n/**\n * An array of events that are allowed on every html element type.\n *\n * @public\n */\nexport var baseElementEvents = toObjectMap([\n 'onCopy',\n 'onCut',\n 'onPaste',\n 'onCompositionEnd',\n 'onCompositionStart',\n 'onCompositionUpdate',\n 'onFocus',\n 'onFocusCapture',\n 'onBlur',\n 'onBlurCapture',\n 'onChange',\n 'onInput',\n 'onSubmit',\n 'onLoad',\n 'onError',\n 'onKeyDown',\n 'onKeyDownCapture',\n 'onKeyPress',\n 'onKeyUp',\n 'onAbort',\n 'onCanPlay',\n 'onCanPlayThrough',\n 'onDurationChange',\n 'onEmptied',\n 'onEncrypted',\n 'onEnded',\n 'onLoadedData',\n 'onLoadedMetadata',\n 'onLoadStart',\n 'onPause',\n 'onPlay',\n 'onPlaying',\n 'onProgress',\n 'onRateChange',\n 'onSeeked',\n 'onSeeking',\n 'onStalled',\n 'onSuspend',\n 'onTimeUpdate',\n 'onVolumeChange',\n 'onWaiting',\n 'onClick',\n 'onClickCapture',\n 'onContextMenu',\n 'onDoubleClick',\n 'onDrag',\n 'onDragEnd',\n 'onDragEnter',\n 'onDragExit',\n 'onDragLeave',\n 'onDragOver',\n 'onDragStart',\n 'onDrop',\n 'onMouseDown',\n 'onMouseDownCapture',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseOut',\n 'onMouseOver',\n 'onMouseUp',\n 'onMouseUpCapture',\n 'onSelect',\n 'onTouchCancel',\n 'onTouchEnd',\n 'onTouchMove',\n 'onTouchStart',\n 'onScroll',\n 'onWheel',\n 'onPointerCancel',\n 'onPointerDown',\n 'onPointerEnter',\n 'onPointerLeave',\n 'onPointerMove',\n 'onPointerOut',\n 'onPointerOver',\n 'onPointerUp',\n 'onGotPointerCapture',\n 'onLostPointerCapture',\n]);\n/**\n * An array of element attributes which are allowed on every html element type.\n *\n * @public\n */\nexport var baseElementProperties = toObjectMap([\n 'accessKey',\n 'children',\n 'className',\n 'contentEditable',\n 'dir',\n 'draggable',\n 'hidden',\n 'htmlFor',\n 'id',\n 'lang',\n 'ref',\n 'role',\n 'style',\n 'tabIndex',\n 'title',\n 'translate',\n 'spellCheck',\n 'name', // global\n]);\n/**\n * An array of HTML element properties and events.\n *\n * @public\n */\nexport var htmlElementProperties = toObjectMap(baseElementProperties, baseElementEvents);\n/**\n * An array of LABEL tag properties and events.\n *\n * @public\n */\nexport var labelProperties = toObjectMap(htmlElementProperties, [\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n]);\n/**\n * An array of AUDIO tag properties and events.\n\n * @public\n */\nexport var audioProperties = toObjectMap(htmlElementProperties, [\n 'height',\n 'loop',\n 'muted',\n 'preload',\n 'src',\n 'width', // canvas, embed, iframe, img, input, object, video\n]);\n/**\n * An array of VIDEO tag properties and events.\n *\n * @public\n */\nexport var videoProperties = toObjectMap(audioProperties, [\n 'poster', // video\n]);\n/**\n * An array of OL tag properties and events.\n *\n * @public\n */\nexport var olProperties = toObjectMap(htmlElementProperties, [\n 'start', // ol\n]);\n/**\n * An array of LI tag properties and events.\n *\n * @public\n */\nexport var liProperties = toObjectMap(htmlElementProperties, [\n 'value', // button, input, li, option, meter, progress, param\n]);\n/**\n * An array of A tag properties and events.\n *\n * @public\n */\nexport var anchorProperties = toObjectMap(htmlElementProperties, [\n 'download',\n 'href',\n 'hrefLang',\n 'media',\n 'rel',\n 'target',\n 'type', // a, button, input, link, menu, object, script, source, style\n]);\n/**\n * An array of BUTTON tag properties and events.\n *\n * @public\n */\nexport var buttonProperties = toObjectMap(htmlElementProperties, [\n 'autoFocus',\n 'disabled',\n 'form',\n 'formAction',\n 'formEncType',\n 'formMethod',\n 'formNoValidate',\n 'formTarget',\n 'type',\n 'value', // button, input, li, option, meter, progress, param,\n]);\n/**\n * An array of INPUT tag properties and events.\n *\n * @public\n */\nexport var inputProperties = toObjectMap(buttonProperties, [\n 'accept',\n 'alt',\n 'autoCapitalize',\n 'autoComplete',\n 'checked',\n 'dirname',\n 'form',\n 'height',\n 'inputMode',\n 'list',\n 'max',\n 'maxLength',\n 'min',\n 'minLength',\n 'multiple',\n 'pattern',\n 'placeholder',\n 'readOnly',\n 'required',\n 'src',\n 'step',\n 'size',\n 'type',\n 'value',\n 'width', // canvas, embed, iframe, img, input, object, video\n]);\n/**\n * An array of TEXTAREA tag properties and events.\n *\n * @public\n */\nexport var textAreaProperties = toObjectMap(buttonProperties, [\n 'autoCapitalize',\n 'cols',\n 'dirname',\n 'form',\n 'maxLength',\n 'minLength',\n 'placeholder',\n 'readOnly',\n 'required',\n 'rows',\n 'wrap', // textarea\n]);\n/**\n * An array of SELECT tag properties and events.\n *\n * @public\n */\nexport var selectProperties = toObjectMap(buttonProperties, [\n 'form',\n 'multiple',\n 'required', // input, select, textarea\n]);\nexport var optionProperties = toObjectMap(htmlElementProperties, [\n 'selected',\n 'value', // button, input, li, option, meter, progress, param\n]);\n/**\n * An array of TABLE tag properties and events.\n *\n * @public\n */\nexport var tableProperties = toObjectMap(htmlElementProperties, [\n 'cellPadding',\n 'cellSpacing', // table\n]);\n/**\n * An array of TR tag properties and events.\n *\n * @public\n */\nexport var trProperties = htmlElementProperties;\n/**\n * An array of TH tag properties and events.\n *\n * @public\n */\nexport var thProperties = toObjectMap(htmlElementProperties, [\n 'rowSpan',\n 'scope', // th\n]);\n/**\n * An array of TD tag properties and events.\n *\n * @public\n */\nexport var tdProperties = toObjectMap(htmlElementProperties, [\n 'colSpan',\n 'headers',\n 'rowSpan',\n 'scope', // th\n]);\nexport var colGroupProperties = toObjectMap(htmlElementProperties, [\n 'span', // col, colgroup\n]);\nexport var colProperties = toObjectMap(htmlElementProperties, [\n 'span', // col, colgroup\n]);\n/**\n * An array of FORM tag properties and events.\n *\n * @public\n */\nexport var formProperties = toObjectMap(htmlElementProperties, [\n 'acceptCharset',\n 'action',\n 'encType',\n 'encType',\n 'method',\n 'noValidate',\n 'target', // form\n]);\n/**\n * An array of IFRAME tag properties and events.\n *\n * @public\n */\nexport var iframeProperties = toObjectMap(htmlElementProperties, [\n 'allow',\n 'allowFullScreen',\n 'allowPaymentRequest',\n 'allowTransparency',\n 'csp',\n 'height',\n 'importance',\n 'referrerPolicy',\n 'sandbox',\n 'src',\n 'srcDoc',\n 'width', // canvas, embed, iframe, img, input, object, video,\n]);\n/**\n * An array of IMAGE tag properties and events.\n *\n * @public\n */\nexport var imgProperties = toObjectMap(htmlElementProperties, [\n 'alt',\n 'crossOrigin',\n 'height',\n 'src',\n 'srcSet',\n 'useMap',\n 'width', // canvas, embed, iframe, img, input, object, video\n]);\n/**\n * @deprecated Use imgProperties for img elements.\n */\nexport var imageProperties = imgProperties;\n/**\n * An array of DIV tag properties and events.\n *\n * @public\n */\nexport var divProperties = htmlElementProperties;\n/**\n * Gets native supported props for an html element provided the allowance set. Use one of the property\n * sets defined (divProperties, buttonPropertes, etc) to filter out supported properties from a given\n * props set. Note that all data- and aria- prefixed attributes will be allowed.\n * NOTE: getNativeProps should always be applied first when adding props to a react component. The\n * non-native props should be applied second. This will prevent getNativeProps from overriding your custom props.\n * For example, if props passed to getNativeProps has an onClick function and getNativeProps is added to\n * the component after an onClick function is added, then the getNativeProps onClick will override it.\n *\n * @public\n * @param props - The unfiltered input props\n * @param allowedPropsNames - The array or record of allowed prop names.\n * @returns The filtered props\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getNativeProps(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nprops, allowedPropNames, excludedPropNames) {\n // It'd be great to properly type this while allowing 'aria-` and 'data-' attributes like TypeScript does for\n // JSX attributes, but that ability is hardcoded into the TS compiler with no analog in TypeScript typings.\n // Then we'd be able to enforce props extends native props (including aria- and data- attributes), and then\n // return native props.\n // We should be able to do this once this PR is merged: https://github.com/microsoft/TypeScript/pull/26797\n var isArray = Array.isArray(allowedPropNames);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var result = {};\n var keys = Object.keys(props);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n var isNativeProp = (!isArray && allowedPropNames[key]) ||\n (isArray && allowedPropNames.indexOf(key) >= 0) ||\n key.indexOf('data-') === 0 ||\n key.indexOf('aria-') === 0;\n if (isNativeProp && (!excludedPropNames || (excludedPropNames === null || excludedPropNames === void 0 ? void 0 : excludedPropNames.indexOf(key)) === -1)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n result[key] = props[key];\n }\n }\n return result;\n}\n//# sourceMappingURL=properties.js.map","var REACT_LIFECYCLE_EXCLUSIONS = [\n 'setState',\n 'render',\n 'componentWillMount',\n 'UNSAFE_componentWillMount',\n 'componentDidMount',\n 'componentWillReceiveProps',\n 'UNSAFE_componentWillReceiveProps',\n 'shouldComponentUpdate',\n 'componentWillUpdate',\n 'getSnapshotBeforeUpdate',\n 'UNSAFE_componentWillUpdate',\n 'componentDidUpdate',\n 'componentWillUnmount',\n];\n/**\n * Allows you to hoist methods, except those in an exclusion set from a source object into a destination object.\n *\n * @public\n * @param destination - The instance of the object to hoist the methods onto.\n * @param source - The instance of the object where the methods are hoisted from.\n * @param exclusions - (Optional) What methods to exclude from being hoisted.\n * @returns An array of names of methods that were hoisted.\n */\nexport function hoistMethods(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ndestination, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nsource, exclusions) {\n if (exclusions === void 0) { exclusions = REACT_LIFECYCLE_EXCLUSIONS; }\n var hoisted = [];\n var _loop_1 = function (methodName) {\n if (typeof source[methodName] === 'function' &&\n destination[methodName] === undefined &&\n (!exclusions || exclusions.indexOf(methodName) === -1)) {\n hoisted.push(methodName);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n destination[methodName] = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n source[methodName].apply(source, args);\n };\n }\n };\n for (var methodName in source) {\n _loop_1(methodName);\n }\n return hoisted;\n}\n/**\n * Provides a method for convenience to unhoist hoisted methods.\n *\n * @public\n * @param source - The source object upon which methods were hoisted.\n * @param methodNames - An array of method names to unhoist.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function unhoistMethods(source, methodNames) {\n methodNames.forEach(function (methodName) { return delete source[methodName]; });\n}\n//# sourceMappingURL=hoist.js.map","import { extendComponent } from './extendComponent';\n/**\n * Helper to manage componentRef resolution. Internally appends logic to\n * lifetime methods to resolve componentRef to the passed in object.\n *\n * Usage: call initializeComponentRef(this) in the constructor,\n */\nexport function initializeComponentRef(obj) {\n extendComponent(obj, {\n componentDidMount: _onMount,\n componentDidUpdate: _onUpdate,\n componentWillUnmount: _onUnmount,\n });\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _onMount() {\n _setComponentRef(this.props.componentRef, this);\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _onUpdate(prevProps) {\n if (prevProps.componentRef !== this.props.componentRef) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _setComponentRef(prevProps.componentRef, null);\n _setComponentRef(this.props.componentRef, this);\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _onUnmount() {\n _setComponentRef(this.props.componentRef, null);\n}\nfunction _setComponentRef(componentRef, value) {\n if (componentRef) {\n if (typeof componentRef === 'object') {\n componentRef.current = value;\n }\n else if (typeof componentRef === 'function') {\n componentRef(value);\n }\n }\n}\n//# sourceMappingURL=initializeComponentRef.js.map","var _a;\nimport { KeyCodes } from './KeyCodes';\nvar DirectionalKeyCodes = (_a = {},\n _a[KeyCodes.up] = 1,\n _a[KeyCodes.down] = 1,\n _a[KeyCodes.left] = 1,\n _a[KeyCodes.right] = 1,\n _a[KeyCodes.home] = 1,\n _a[KeyCodes.end] = 1,\n _a[KeyCodes.tab] = 1,\n _a[KeyCodes.pageUp] = 1,\n _a[KeyCodes.pageDown] = 1,\n _a);\n/**\n * Returns true if the keycode is a directional keyboard key.\n */\nexport function isDirectionalKeyCode(which) {\n return !!DirectionalKeyCodes[which];\n}\n/**\n * Adds a keycode to the list of keys that, when pressed, should cause the focus outlines to be visible.\n * This can be used to add global shortcut keys that directionally move from section to section within\n * an app or between focus trap zones.\n */\nexport function addDirectionalKeyCode(which) {\n DirectionalKeyCodes[which] = 1;\n}\n/**\n * Removes a keycode to the list of keys that, when pressed, should cause the focus outlines to be visible.\n * This can be used to remove global shortcut keys that directionally move from section to section within\n * an app or between focus trap zones.\n */\nexport function removeDirectionalKeyCode(which) {\n delete DirectionalKeyCodes[which];\n}\n//# sourceMappingURL=keyboard.js.map","import { getWindow } from './dom/getWindow';\nexport var IsFocusVisibleClassName = 'ms-Fabric--isFocusVisible';\nexport var IsFocusHiddenClassName = 'ms-Fabric--isFocusHidden';\nfunction updateClassList(el, enabled) {\n if (el) {\n el.classList.add(enabled ? IsFocusVisibleClassName : IsFocusHiddenClassName);\n el.classList.remove(enabled ? IsFocusHiddenClassName : IsFocusVisibleClassName);\n }\n}\n/**\n * Sets the visibility of focus styling.\n *\n * By default, focus styles (the box surrounding a focused Button, for example) only show up when navigational\n * keypresses occur (through Tab, arrows, PgUp/PgDn, Home and End), and are hidden when mouse interactions occur.\n * This API provides an imperative way to turn them on/off.\n *\n * A use case might be when you have a keypress like ctrl-f6 navigate to a particular region on the page,\n * and want focus to show up.\n *\n * @param enabled - Whether to turn focus visibility on or off.\n * @param target - Optional target from which to get window in case no `providerElem` has been specified.\n * @param registeredProviders - Array of provider refs that are associated with a FocusRectsProvider. If no array\n * is passed in, the classnames are attached to the document body that contains `target`.\n */\nexport function setFocusVisibility(enabled, target, registeredProviders) {\n var _a;\n if (registeredProviders) {\n registeredProviders.forEach(function (ref) { return updateClassList(ref.current, enabled); });\n }\n else {\n updateClassList((_a = getWindow(target)) === null || _a === void 0 ? void 0 : _a.document.body, enabled);\n }\n}\n//# sourceMappingURL=setFocusVisibility.js.map","import * as React from 'react';\nimport { getWindow } from './dom/getWindow';\nimport { isDirectionalKeyCode } from './keyboard';\nimport { setFocusVisibility } from './setFocusVisibility';\nvar mountCounters = new WeakMap();\nvar callbackMap = new WeakMap();\nfunction setMountCounters(key, delta) {\n var newValue;\n var currValue = mountCounters.get(key);\n if (currValue) {\n newValue = currValue + delta;\n }\n else {\n newValue = 1;\n }\n mountCounters.set(key, newValue);\n return newValue;\n}\nfunction setCallbackMap(context) {\n var callbacks = callbackMap.get(context);\n if (callbacks) {\n return callbacks;\n }\n var onMouseDown = function (ev) { return _onMouseDown(ev, context.registeredProviders); };\n var onPointerDown = function (ev) { return _onPointerDown(ev, context.registeredProviders); };\n var onKeyDown = function (ev) { return _onKeyDown(ev, context.registeredProviders); };\n var onKeyUp = function (ev) { return _onKeyUp(ev, context.registeredProviders); };\n callbacks = { onMouseDown: onMouseDown, onPointerDown: onPointerDown, onKeyDown: onKeyDown, onKeyUp: onKeyUp };\n callbackMap.set(context, callbacks);\n return callbacks;\n}\nexport var FocusRectsContext = React.createContext(undefined);\n/**\n * Initializes the logic which:\n *\n * 1. Subscribes keydown, keyup, mousedown and pointerdown events. (It will only do it once for the current element of\n * the FocusRectsContext providerRef or once per window if no such element is provided via context, so it's safe to\n * call this method multiple times.)\n * 2. When the user presses triggers a keydown or keyup event via directional keyboard keys, adds the\n * 'ms-Fabric--isFocusVisible' classname to the current element of the FocusRectsContext providerRef or the document\n * body if no such element is provided via context, and removes the 'ms-Fabric-isFocusHidden' classname.\n * 3. When the user triggers a mousedown or pointerdown event, adds the 'ms-Fabric-isFocusHidden' classname to the\n * current element of the FocusRectsContext providerRef or the document body if no such element is provided via\n * context, and removes the 'ms-Fabric--isFocusVisible' classname.\n *\n * This logic allows components on the page to conditionally render focus treatments based on\n * the existence of global classnames, which simplifies logic overall.\n *\n * @param rootRef - A Ref object. Focus rectangle can be applied on itself and all its children.\n */\nexport function useFocusRects(rootRef) {\n var context = React.useContext(FocusRectsContext);\n React.useEffect(function () {\n var _a, _b, _c, _d;\n var win = getWindow(rootRef === null || rootRef === void 0 ? void 0 : rootRef.current);\n if (!win || ((_a = win.FabricConfig) === null || _a === void 0 ? void 0 : _a.disableFocusRects) === true) {\n return undefined;\n }\n var el = win;\n var onMouseDown;\n var onPointerDown;\n var onKeyDown;\n var onKeyUp;\n if (((_b = context === null || context === void 0 ? void 0 : context.providerRef) === null || _b === void 0 ? void 0 : _b.current) &&\n ((_d = (_c = context === null || context === void 0 ? void 0 : context.providerRef) === null || _c === void 0 ? void 0 : _c.current) === null || _d === void 0 ? void 0 : _d.addEventListener)) {\n el = context.providerRef.current;\n // The NOINLINE directive tells terser not to move the setCallbackMap implementation into the call site during\n // minification.\n // This prevents the function from capturing additional variables in the closure, which can cause memory leaks.\n var callbacks = /*@__NOINLINE__*/ setCallbackMap(context);\n onMouseDown = callbacks.onMouseDown;\n onPointerDown = callbacks.onPointerDown;\n onKeyDown = callbacks.onKeyDown;\n onKeyUp = callbacks.onKeyUp;\n }\n else {\n onMouseDown = _onMouseDown;\n onPointerDown = _onPointerDown;\n onKeyDown = _onKeyDown;\n onKeyUp = _onKeyUp;\n }\n var count = setMountCounters(el, 1);\n if (count <= 1) {\n el.addEventListener('mousedown', onMouseDown, true);\n el.addEventListener('pointerdown', onPointerDown, true);\n el.addEventListener('keydown', onKeyDown, true);\n el.addEventListener('keyup', onKeyUp, true);\n }\n return function () {\n var _a;\n if (!win || ((_a = win.FabricConfig) === null || _a === void 0 ? void 0 : _a.disableFocusRects) === true) {\n return;\n }\n count = setMountCounters(el, -1);\n if (count === 0) {\n el.removeEventListener('mousedown', onMouseDown, true);\n el.removeEventListener('pointerdown', onPointerDown, true);\n el.removeEventListener('keydown', onKeyDown, true);\n el.removeEventListener('keyup', onKeyUp, true);\n }\n };\n }, [context, rootRef]);\n}\n/**\n * Function Component wrapper which enables calling `useFocusRects` hook.\n * Renders nothing.\n */\nexport var FocusRects = function (props) {\n useFocusRects(props.rootRef);\n return null;\n};\nfunction _onMouseDown(ev, registeredProviders) {\n setFocusVisibility(false, ev.target, registeredProviders);\n}\nfunction _onPointerDown(ev, registeredProviders) {\n if (ev.pointerType !== 'mouse') {\n setFocusVisibility(false, ev.target, registeredProviders);\n }\n}\n// You need both a keydown and a keyup listener that sets focus visibility to true to handle two distinct scenarios when\n// attaching the listeners and classnames to the provider instead of the document body.\n// If you only have a keydown listener, then the focus rectangles will not show when moving from outside of the provider\n// to inside it. That is why a keyup listener is needed, since it will always trigger after the focus event is fired.\n// If you only have a keyup listener, then the focus rectangles will not show moving between different tabbable elements\n// if the tab key is pressed without being released. That's is why we need a keydown listener, since it will trigger for\n// every element that is being tabbed into.\n// This works because `classList.add` is smart and will not duplicate a classname that already exists on the classList\n// when focus visibility is turned on.\nfunction _onKeyDown(ev, registeredProviders) {\n // eslint-disable-next-line deprecation/deprecation\n if (isDirectionalKeyCode(ev.which)) {\n setFocusVisibility(true, ev.target, registeredProviders);\n }\n}\nfunction _onKeyUp(ev, registeredProviders) {\n // eslint-disable-next-line deprecation/deprecation\n if (isDirectionalKeyCode(ev.which)) {\n setFocusVisibility(true, ev.target, registeredProviders);\n }\n}\n//# sourceMappingURL=useFocusRects.js.map","import * as React from 'react';\nimport { FocusRectsContext } from './useFocusRects';\nexport var FocusRectsProvider = function (props) {\n var providerRef = props.providerRef, layerRoot = props.layerRoot;\n var registeredProviders = React.useState([])[0];\n var parentContext = React.useContext(FocusRectsContext);\n // Inherit the parent context if it exists, unless this is a layer root.\n // This allows the topmost provider element in the DOM tree to handle the focus events.\n // Since layers are in a separate HTML tree from their parent, they shouldn't use the parent's providerRef.\n var inheritParentContext = parentContext !== undefined && !layerRoot;\n var context = React.useMemo(function () {\n return inheritParentContext\n ? undefined\n : {\n providerRef: providerRef,\n registeredProviders: registeredProviders,\n registerProvider: function (ref) {\n // Register this child provider with the current context, and any parent contexts\n registeredProviders.push(ref);\n parentContext === null || parentContext === void 0 ? void 0 : parentContext.registerProvider(ref);\n },\n unregisterProvider: function (ref) {\n parentContext === null || parentContext === void 0 ? void 0 : parentContext.unregisterProvider(ref);\n var i = registeredProviders.indexOf(ref);\n if (i >= 0) {\n registeredProviders.splice(i, 1);\n }\n },\n };\n }, [providerRef, registeredProviders, parentContext, inheritParentContext]);\n React.useEffect(function () {\n if (context) {\n context.registerProvider(context.providerRef);\n return function () { return context.unregisterProvider(context.providerRef); };\n }\n }, [context]);\n // Create a new context provider if this is not inheriting from the parent.\n if (context) {\n return React.createElement(FocusRectsContext.Provider, { value: context }, props.children);\n }\n else {\n return React.createElement(React.Fragment, null, props.children);\n }\n};\n//# sourceMappingURL=FocusRectsProvider.js.map","/**\n * Returns true if and only if the user is on a iOS device.\n * Used to determine whether iOS-specific behavior should be applied.\n */\nexport var isIOS = function () {\n // eslint-disable-next-line no-restricted-globals\n if (!window || !window.navigator || !window.navigator.userAgent) {\n return false;\n }\n // eslint-disable-next-line no-restricted-globals\n return /iPad|iPhone|iPod/i.test(window.navigator.userAgent);\n};\n//# sourceMappingURL=mobileDetector.js.map","/**\n * The helper functions here will make the target element as modal to screen readers, by placing aria-hidden on elements\n * that are siblings to the target element and the target element's ancestors (because aria-hidden gets inherited).\n * That way, all other elements on the page are hidden to the screen reader.\n */\nimport { getDocument } from './dom/getDocument';\n/** Tag names to ignore when modalizing */\nvar tagsToIgnore = ['TEMPLATE', 'STYLE', 'SCRIPT'];\n/**\n * Call this on a target element to make it modal to screen readers.\n * Returns a function that undoes the changes it made.\n */\nexport function modalize(target) {\n var targetDocument = getDocument(target);\n if (!targetDocument) {\n // can't do this in SSR\n return function () { return undefined; };\n }\n var affectedNodes = [];\n // start at target, then recurse and do the same for parent, until we reach \n while (target !== targetDocument.body && target.parentElement) {\n // grab all siblings of current element\n for (var _i = 0, _a = target.parentElement.children; _i < _a.length; _i++) {\n var sibling = _a[_i];\n // but ignore elements that are already aria-hidden\n var ariaHidden = sibling.getAttribute('aria-hidden');\n if (sibling !== target && (ariaHidden === null || ariaHidden === void 0 ? void 0 : ariaHidden.toLowerCase()) !== 'true' && tagsToIgnore.indexOf(sibling.tagName) === -1) {\n affectedNodes.push([sibling, ariaHidden]);\n }\n }\n target = target.parentElement;\n }\n // take all those elements and set aria-hidden=true on them\n affectedNodes.forEach(function (_a) {\n var node = _a[0];\n node.setAttribute('aria-hidden', 'true');\n });\n return function () {\n unmodalize(affectedNodes);\n affectedNodes = []; // dispose\n };\n}\n/**\n * Undoes the changes that modalize() did.\n */\nfunction unmodalize(affectedNodes) {\n affectedNodes.forEach(function (_a) {\n var node = _a[0], originalValue = _a[1];\n // Restore the original value (false or unset)\n if (originalValue) {\n node.setAttribute('aria-hidden', originalValue);\n }\n else {\n node.removeAttribute('aria-hidden');\n }\n });\n}\n//# sourceMappingURL=modalize.js.map","import { getWindow } from './dom/getWindow';\nvar isMacResult;\n/**\n * Returns true if the user is on a Mac. Caches the result value.\n * @param reset - Reset the cached result value (mainly for testing).\n */\nexport function isMac(reset) {\n var _a;\n if (typeof isMacResult === 'undefined' || reset) {\n var win = getWindow();\n // In certain SSR frameworks, `window` will be defined even on the server but `navigator` will be undefined\n var userAgent = (_a = win === null || win === void 0 ? void 0 : win.navigator) === null || _a === void 0 ? void 0 : _a.userAgent;\n isMacResult = !!userAgent && userAgent.indexOf('Macintosh') !== -1;\n }\n return !!isMacResult;\n}\n//# sourceMappingURL=osDetector.js.map","import { createMemoizer } from '../memoize';\nfunction createComposedRenderFunction(outer) {\n var outerMemoizer = createMemoizer(function (inner) {\n var innerMemoizer = createMemoizer(function (defaultRender) {\n return function (innerProps) {\n return inner(innerProps, defaultRender);\n };\n });\n return function (outerProps, defaultRender) {\n return outer(outerProps, defaultRender ? innerMemoizer(defaultRender) : inner);\n };\n });\n return outerMemoizer;\n}\nvar memoizer = createMemoizer(createComposedRenderFunction);\n/**\n * Composes two 'render functions' to produce a final render function that renders\n * the outer function, passing the inner function as 'default render'. The inner function\n * is then passed the original 'default render' prop.\n * @public\n */\nexport function composeRenderFunction(outer, inner) {\n return memoizer(outer)(inner);\n}\n//# sourceMappingURL=composeRenderFunction.js.map","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { concatStyleSetsWithProps } from '@fluentui/merge-styles';\nimport { useMergeStylesHooks } from './shadowDom/index';\nimport { useCustomizationSettings } from './customizations/useCustomizationSettings';\nvar DefaultFields = ['theme', 'styles'];\nexport function styled(Component, baseStyles, getProps, customizable, pure) {\n customizable = customizable || { scope: '', fields: undefined };\n var scope = customizable.scope, _a = customizable.fields, fields = _a === void 0 ? DefaultFields : _a;\n var Wrapped = React.forwardRef(function (props, forwardedRef) {\n var styles = React.useRef();\n var settings = useCustomizationSettings(fields, scope);\n var customizedStyles = settings.styles, dir = settings.dir, rest = __rest(settings, [\"styles\", \"dir\"]);\n var additionalProps = getProps ? getProps(props) : undefined;\n var useStyled = useMergeStylesHooks().useStyled;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var cache = (styles.current && styles.current.__cachedInputs__) || [];\n var propStyles = props.styles;\n if (!styles.current || customizedStyles !== cache[1] || propStyles !== cache[2]) {\n // Using styled components as the Component arg will result in nested styling arrays.\n // The function can be cached and in order to prevent the props from being retained within it's closure\n // we pass in just the styles and not the entire props\n var concatenatedStyles = function (styleProps) {\n return concatStyleSetsWithProps(styleProps, baseStyles, customizedStyles, propStyles);\n };\n // The __cachedInputs__ array is attached to the function and consumed by the\n // classNamesFunction as a list of keys to include for memoizing classnames.\n concatenatedStyles.__cachedInputs__ = [\n baseStyles,\n customizedStyles,\n propStyles,\n ];\n concatenatedStyles.__noStyleOverride__ =\n !customizedStyles && !propStyles;\n styles.current = concatenatedStyles;\n }\n styles.current.__shadowConfig__ = useStyled(scope);\n return React.createElement(Component, __assign({ ref: forwardedRef }, rest, additionalProps, props, { styles: styles.current }));\n });\n // Function.prototype.name is an ES6 feature, so the cast to any is required until we're\n // able to drop IE 11 support and compile with ES6 libs\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Wrapped.displayName = \"Styled\".concat(Component.displayName || Component.name);\n // This preserves backwards compatibility.\n var pureComponent = pure ? React.memo(Wrapped) : Wrapped;\n // Check if the wrapper has a displayName after it has been memoized. Then assign it to the pure component.\n if (Wrapped.displayName) {\n pureComponent.displayName = Wrapped.displayName;\n }\n return pureComponent;\n}\n//# sourceMappingURL=styled.js.map","import { __assign } from \"tslib\";\n/**\n * Function to apply default values to a component props object. This function is intended for function components,\n * to maintain parity with the `defaultProps` feature of class components. It accounts for properties that are\n * specified, but undefined.\n * @param defaultProps- An object with default values for various properties\n * @param propsWithoutDefaults- The props object passed into the component\n */\nexport function getPropsWithDefaults(defaultProps, propsWithoutDefaults) {\n var props = __assign({}, propsWithoutDefaults);\n for (var _i = 0, _a = Object.keys(defaultProps); _i < _a.length; _i++) {\n var key = _a[_i];\n if (props[key] === undefined) {\n props[key] = defaultProps[key];\n }\n }\n return props;\n}\n//# sourceMappingURL=getPropsWithDefaults.js.map","import { arraysEqual } from './array';\n/**\n * Set up a ref resolver function given internal state managed for the ref.\n * @param local Set\n */\nvar createResolver = function (local) {\n return function (newValue) {\n for (var _i = 0, _a = local.refs; _i < _a.length; _i++) {\n var ref = _a[_i];\n if (typeof ref === 'function') {\n ref(newValue);\n }\n else if (ref) {\n // work around the immutability of the React.Ref type\n ref.current = newValue;\n }\n }\n };\n};\n/**\n * Helper to merge refs from within class components.\n */\nexport var createMergedRef = function (value) {\n var local = {\n refs: [],\n };\n return function () {\n var newRefs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newRefs[_i] = arguments[_i];\n }\n if (!local.resolver || !arraysEqual(local.refs, newRefs)) {\n local.resolver = createResolver(local);\n }\n local.refs = newRefs;\n return local.resolver;\n };\n};\n//# sourceMappingURL=createMergedRef.js.map","import * as React from 'react';\nimport { canUseDOM } from './dom/canUseDOM';\n/**\n * React currently throws a warning when using `useLayoutEffect` on the server. To get around it,\n * this hook calls `useEffect` on the server (no-op) and `useLayoutEffect` in the browser.\n *\n * Prefer `useEffect` unless you have a specific need to do something after mount and before paint,\n * such as to avoid a render flash for certain operations.\n *\n * Server-side rendering is detected based on `canUseDOM` from `@fluentui/utilities`.\n *\n * https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * https://github.com/reduxjs/react-redux/blob/master/src/utils/useIsomorphicLayoutEffect.js\n */\n// eslint-disable-next-line no-restricted-properties\nexport var useIsomorphicLayoutEffect = canUseDOM() ? React.useLayoutEffect : React.useEffect;\n//# sourceMappingURL=useIsomorphicLayoutEffect.js.map","import { Async } from '@fluentui/utilities';\nimport * as React from 'react';\n/**\n * Hook to provide an Async instance that is automatically cleaned up on dismount.\n */\nexport function useAsync() {\n var asyncRef = React.useRef();\n if (!asyncRef.current) {\n asyncRef.current = new Async();\n }\n React.useEffect(function () {\n return function () {\n var _a;\n (_a = asyncRef.current) === null || _a === void 0 ? void 0 : _a.dispose();\n asyncRef.current = undefined;\n };\n }, []);\n return asyncRef.current;\n}\n//# sourceMappingURL=useAsync.js.map","import * as React from 'react';\n/**\n * Hook to initialize and return a constant value. Unlike `React.useMemo`, this is guaranteed to\n * always return the same value (and if the initializer is a function, only call it once).\n * This is similar to setting a private member in a class constructor.\n *\n * If the value should ever change based on dependencies, use `React.useMemo` instead.\n *\n * @param initialValue - Initial value, or function to get the initial value. Similar to `useState`,\n * only the value/function passed in the first time this is called is respected.\n * @returns The value. The identity of this value will always be the same.\n */\nexport function useConst(initialValue) {\n // Use useRef to store the value because it's the least expensive built-in hook that works here\n // (we could also use `const [value] = React.useState(initialValue)` but that's more expensive\n // internally due to reducer handling which we don't need)\n var ref = React.useRef();\n if (ref.current === undefined) {\n // Box the value in an object so we can tell if it's initialized even if the initializer\n // returns/is undefined\n ref.current = {\n value: typeof initialValue === 'function' ? initialValue() : initialValue,\n };\n }\n return ref.current.value;\n}\n//# sourceMappingURL=useConst.js.map","import * as React from 'react';\nimport { getId } from '@fluentui/utilities';\n/**\n * Hook to generate a unique ID in the global scope (spanning across duplicate copies of the same library).\n *\n * @param prefix - Optional prefix for the ID\n * @param providedId - Optional id provided by a parent component. Defaults to the provided value if present,\n * without conditioning the hook call\n * @returns The ID\n */\nexport function useId(prefix, providedId) {\n // getId should only be called once since it updates the global constant for the next ID value.\n // (While an extra update isn't likely to cause problems in practice, it's better to avoid it.)\n var ref = React.useRef(providedId);\n if (!ref.current) {\n ref.current = getId(prefix);\n }\n return ref.current;\n}\n//# sourceMappingURL=useId.js.map","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\n/**\n * React hook to merge multiple React refs (either MutableRefObjects or ref callbacks) into a single ref callback that\n * updates all provided refs\n * @param refs - Refs to collectively update with one ref value.\n * @returns A function with an attached \"current\" prop, so that it can be treated like a RefObject.\n */\nexport function useMergedRefs() {\n var refs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n refs[_i] = arguments[_i];\n }\n var mergedCallback = React.useCallback(function (value) {\n // Update the \"current\" prop hanging on the function.\n mergedCallback.current = value;\n for (var _i = 0, refs_1 = refs; _i < refs_1.length; _i++) {\n var ref = refs_1[_i];\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n // work around the immutability of the React.Ref type\n ref.current = value;\n }\n }\n }, __spreadArray([], refs, true));\n return mergedCallback;\n}\n//# sourceMappingURL=useMergedRefs.js.map","import { on } from '@fluentui/utilities';\nimport * as React from 'react';\n/**\n * Hook to attach an event handler on mount and handle cleanup.\n * @param element - Element (or ref to an element) to attach the event handler to\n * @param eventName - The event to attach a handler for\n * @param callback - The handler for the event\n * @param useCapture - Whether or not to attach the handler for the capture phase\n */\nexport function useOnEvent(element, eventName, callback, useCapture) {\n // Use a ref for the callback to prevent repeatedly attaching/unattaching callbacks that are unstable across renders\n var callbackRef = React.useRef(callback);\n callbackRef.current = callback;\n React.useEffect(function () {\n var actualElement = element && 'current' in element ? element.current : element;\n if (!actualElement || !actualElement.addEventListener) {\n return;\n }\n var dispose = on(actualElement, eventName, function (ev) { return callbackRef.current(ev); }, useCapture);\n return dispose;\n }, [element, eventName, useCapture]);\n}\n//# sourceMappingURL=useOnEvent.js.map","import { useRef, useEffect } from 'react';\n/**\n * Hook keeping track of a given value from a previous execution of the component the Hook is used in.\n *\n * See [React Hooks FAQ](https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state)\n */\nexport function usePrevious(value) {\n var ref = useRef();\n useEffect(function () {\n ref.current = value;\n });\n return ref.current;\n}\n//# sourceMappingURL=usePrevious.js.map","import { getDocument } from '@fluentui/utilities';\nimport * as React from 'react';\nimport { useWindow } from '@fluentui/react-window-provider';\n/**\n * Hook to calculate and cache the target element specified by the given target attribute,\n * as well as the target element's (or host element's) parent window\n * @param target- Target selector passed to the component as a property, describing the element that\n * the callout should target\n * @param hostElement- The callout's host element, used for determining the parent window.\n */\nexport function useTarget(target, hostElement) {\n var _a, _b, _c;\n var previousTargetProp = React.useRef();\n var targetRef = React.useRef(null);\n /**\n * Stores an instance of Window, used to check\n * for server side rendering and if focus was lost.\n */\n var targetWindow = useWindow();\n // If the target element changed, find the new one. If we are tracking\n // target with class name, always find element because we do not know if\n // fabric has rendered a new element and disposed the old element.\n if (!target || target !== previousTargetProp.current || typeof target === 'string') {\n var currentElement = hostElement === null || hostElement === void 0 ? void 0 : hostElement.current;\n if (target) {\n if (typeof target === 'string') {\n // If element is part of shadow dom, then querySelector on shadow root, else query on document\n if ((_a = currentElement === null || currentElement === void 0 ? void 0 : currentElement.getRootNode()) === null || _a === void 0 ? void 0 : _a.host) {\n targetRef.current = (_c = (_b = currentElement === null || currentElement === void 0 ? void 0 : currentElement.getRootNode()) === null || _b === void 0 ? void 0 : _b.querySelector(target)) !== null && _c !== void 0 ? _c : null;\n }\n else {\n var currentDoc = getDocument(currentElement);\n targetRef.current = currentDoc ? currentDoc.querySelector(target) : null;\n }\n }\n else if ('stopPropagation' in target) {\n targetRef.current = target;\n }\n else if ('getBoundingClientRect' in target) {\n targetRef.current = target;\n }\n else if ('current' in target) {\n targetRef.current = target.current;\n }\n else {\n targetRef.current = target;\n }\n }\n previousTargetProp.current = target;\n }\n return [targetRef, targetWindow];\n}\n//# sourceMappingURL=useTarget.js.map","export var KTP_PREFIX = 'ktp';\nexport var KTP_SEPARATOR = '-';\nexport var KTP_FULL_PREFIX = KTP_PREFIX + KTP_SEPARATOR;\nexport var DATAKTP_TARGET = 'data-ktp-target';\nexport var DATAKTP_EXECUTE_TARGET = 'data-ktp-execute-target';\nexport var DATAKTP_ARIA_TARGET = 'data-ktp-aria-target';\nexport var KTP_LAYER_ID = 'ktp-layer-id';\nexport var KTP_ARIA_SEPARATOR = ', ';\n// Events\nexport var KeytipEvents;\n(function (KeytipEvents) {\n KeytipEvents.KEYTIP_ADDED = 'keytipAdded';\n KeytipEvents.KEYTIP_REMOVED = 'keytipRemoved';\n KeytipEvents.KEYTIP_UPDATED = 'keytipUpdated';\n KeytipEvents.PERSISTED_KEYTIP_ADDED = 'persistedKeytipAdded';\n KeytipEvents.PERSISTED_KEYTIP_REMOVED = 'persistedKeytipRemoved';\n KeytipEvents.PERSISTED_KEYTIP_EXECUTE = 'persistedKeytipExecute';\n KeytipEvents.ENTER_KEYTIP_MODE = 'enterKeytipMode';\n KeytipEvents.EXIT_KEYTIP_MODE = 'exitKeytipMode';\n})(KeytipEvents || (KeytipEvents = {}));\n//# sourceMappingURL=KeytipConstants.js.map","import { __assign, __spreadArray } from \"tslib\";\nimport { EventGroup, getId } from '../../Utilities';\nimport { KeytipEvents } from '../../utilities/keytips/KeytipConstants';\n/**\n * This class is responsible for handling registering, updating, and unregistering of keytips\n */\nvar KeytipManager = /** @class */ (function () {\n function KeytipManager() {\n this.keytips = {};\n this.persistedKeytips = {};\n this.sequenceMapping = {};\n // This is (and should be) updated and kept in sync\n // with the inKeytipMode in KeytipLayer.\n this.inKeytipMode = false;\n // Boolean that gets checked before entering keytip mode by the KeytipLayer\n // Used for an override in special cases (e.g. Disable entering keytip mode when a modal is shown)\n this.shouldEnterKeytipMode = true;\n // Boolean to indicate whether to delay firing an event to update subscribers of\n // keytip data changed.\n this.delayUpdatingKeytipChange = false;\n }\n /**\n * Static function to get singleton KeytipManager instance\n *\n * @returns Singleton KeytipManager instance\n */\n KeytipManager.getInstance = function () {\n return this._instance;\n };\n /**\n * Initialization code to set set parameters to define\n * how the KeytipManager handles keytip data.\n *\n * @param delayUpdatingKeytipChange - T/F if we should delay notifiying keytip subscribers\n * of keytip changes\n */\n KeytipManager.prototype.init = function (delayUpdatingKeytipChange) {\n this.delayUpdatingKeytipChange = delayUpdatingKeytipChange;\n };\n /**\n * Registers a keytip\n *\n * @param keytipProps - Keytip to register\n * @param persisted - T/F if this keytip should be persisted, default is false\n * @returns Unique ID for this keytip\n */\n KeytipManager.prototype.register = function (keytipProps, persisted) {\n if (persisted === void 0) { persisted = false; }\n var props = keytipProps;\n if (!persisted) {\n // Add the overflowSetSequence if necessary\n props = this.addParentOverflow(keytipProps);\n this.sequenceMapping[props.keySequences.toString()] = props;\n }\n // Create a unique keytip\n var uniqueKeytip = this._getUniqueKtp(props);\n // Add to dictionary\n persisted\n ? (this.persistedKeytips[uniqueKeytip.uniqueID] = uniqueKeytip)\n : (this.keytips[uniqueKeytip.uniqueID] = uniqueKeytip);\n // We only want to add something new if we are currently showing keytip mode\n if (this.inKeytipMode || !this.delayUpdatingKeytipChange) {\n var event_1 = persisted ? KeytipEvents.PERSISTED_KEYTIP_ADDED : KeytipEvents.KEYTIP_ADDED;\n EventGroup.raise(this, event_1, {\n keytip: props,\n uniqueID: uniqueKeytip.uniqueID,\n });\n }\n return uniqueKeytip.uniqueID;\n };\n /**\n * Update a keytip\n *\n * @param keytipProps - Keytip to update\n * @param uniqueID - Unique ID of this keytip\n */\n KeytipManager.prototype.update = function (keytipProps, uniqueID) {\n var newKeytipProps = this.addParentOverflow(keytipProps);\n var uniqueKeytip = this._getUniqueKtp(newKeytipProps, uniqueID);\n var oldKeyTip = this.keytips[uniqueID];\n if (oldKeyTip) {\n // Update everything except 'visible'\n uniqueKeytip.keytip.visible = oldKeyTip.keytip.visible;\n // Update keytip in this.keytips\n this.keytips[uniqueID] = uniqueKeytip;\n // Update the sequence to be up to date\n delete this.sequenceMapping[oldKeyTip.keytip.keySequences.toString()];\n this.sequenceMapping[uniqueKeytip.keytip.keySequences.toString()] = uniqueKeytip.keytip;\n // Raise event only if we are currently in keytip mode\n if (this.inKeytipMode || !this.delayUpdatingKeytipChange) {\n EventGroup.raise(this, KeytipEvents.KEYTIP_UPDATED, {\n keytip: uniqueKeytip.keytip,\n uniqueID: uniqueKeytip.uniqueID,\n });\n }\n }\n };\n /**\n * Unregisters a keytip\n *\n * @param keytipToRemove - IKeytipProps of the keytip to remove\n * @param uniqueID - Unique ID of this keytip\n * @param persisted - T/F if this keytip should be persisted, default is false\n */\n KeytipManager.prototype.unregister = function (keytipToRemove, uniqueID, persisted) {\n if (persisted === void 0) { persisted = false; }\n persisted ? delete this.persistedKeytips[uniqueID] : delete this.keytips[uniqueID];\n !persisted && delete this.sequenceMapping[keytipToRemove.keySequences.toString()];\n var event = persisted ? KeytipEvents.PERSISTED_KEYTIP_REMOVED : KeytipEvents.KEYTIP_REMOVED;\n // Update keytips only if we're in keytip mode\n if (this.inKeytipMode || !this.delayUpdatingKeytipChange) {\n EventGroup.raise(this, event, {\n keytip: keytipToRemove,\n uniqueID: uniqueID,\n });\n }\n };\n /**\n * Manual call to enter keytip mode\n */\n KeytipManager.prototype.enterKeytipMode = function () {\n EventGroup.raise(this, KeytipEvents.ENTER_KEYTIP_MODE);\n };\n /**\n * Manual call to exit keytip mode\n */\n KeytipManager.prototype.exitKeytipMode = function () {\n EventGroup.raise(this, KeytipEvents.EXIT_KEYTIP_MODE);\n };\n /**\n * Gets all IKeytipProps from this.keytips\n *\n * @returns All keytips stored in the manager\n */\n KeytipManager.prototype.getKeytips = function () {\n var _this = this;\n return Object.keys(this.keytips).map(function (key) { return _this.keytips[key].keytip; });\n };\n /**\n * Adds the overflowSetSequence to the keytipProps if its parent keytip also has it\n *\n * @param keytipProps - Keytip props to add overflowSetSequence to if necessary\n * @returns - Modified keytip props, if needed to be modified\n */\n KeytipManager.prototype.addParentOverflow = function (keytipProps) {\n var fullSequence = __spreadArray([], keytipProps.keySequences, true);\n fullSequence.pop();\n if (fullSequence.length !== 0) {\n var parentKeytip = this.sequenceMapping[fullSequence.toString()];\n if (parentKeytip && parentKeytip.overflowSetSequence) {\n return __assign(__assign({}, keytipProps), { overflowSetSequence: parentKeytip.overflowSetSequence });\n }\n }\n return keytipProps;\n };\n /**\n * Public function to bind for overflow items that have a submenu\n */\n KeytipManager.prototype.menuExecute = function (overflowButtonSequences, keytipSequences) {\n EventGroup.raise(this, KeytipEvents.PERSISTED_KEYTIP_EXECUTE, {\n overflowButtonSequences: overflowButtonSequences,\n keytipSequences: keytipSequences,\n });\n };\n /**\n * Creates an IUniqueKeytip object\n *\n * @param keytipProps - IKeytipProps\n * @param uniqueID - Unique ID, will default to the next unique ID if not passed\n * @returns IUniqueKeytip object\n */\n KeytipManager.prototype._getUniqueKtp = function (keytipProps, uniqueID) {\n if (uniqueID === void 0) { uniqueID = getId(); }\n return { keytip: __assign({}, keytipProps), uniqueID: uniqueID };\n };\n KeytipManager._instance = new KeytipManager();\n return KeytipManager;\n}());\nexport { KeytipManager };\n//# sourceMappingURL=KeytipManager.js.map","import { useDocument, useWindow } from '@fluentui/react-window-provider';\n/**\n * NOTE: the check for `window`/`document` is a bit verbose and perhaps\n * overkill but it ensures the prior assumbed behavior of directly\n * calling `window`/`document` is preserved.\n *\n * It is possible to set `window` to undefined on `WindowProvider` so\n * we'll fallback to directly accessing the global in that (hopefully unlikely)\n * case.\n */\n/**\n * Get a reference to the `document` object.\n * Use this in place of the global `document` in React function components.\n * @returns Document | undefined\n */\nexport var useDocumentEx = function () {\n var _a;\n // eslint-disable-next-line no-restricted-globals\n return (_a = useDocument()) !== null && _a !== void 0 ? _a : (typeof document !== 'undefined' ? document : undefined);\n};\n/**\n * Get a reference to the `window` object.\n * Use this in place of the global `window` in React function components.\n * @returns Window | undefined\n */\nexport var useWindowEx = function () {\n var _a;\n // eslint-disable-next-line no-restricted-globals\n return (_a = useWindow()) !== null && _a !== void 0 ? _a : (typeof window !== 'undefined' ? window : undefined);\n};\n/**\n * Get a reference to the `document` object.\n * Use this in place of the global `document` in React class components.\n *\n * @param ctx - Class component WindowContext\n * @returns Document | undefined\n */\nexport var getDocumentEx = function (ctx) {\n var _a, _b;\n // eslint-disable-next-line no-restricted-globals\n return (_b = (_a = ctx === null || ctx === void 0 ? void 0 : ctx.window) === null || _a === void 0 ? void 0 : _a.document) !== null && _b !== void 0 ? _b : (typeof document !== 'undefined' ? document : undefined);\n};\n/**\n * Get a reference to the `window` object.\n * Use this in place of the global `window` in React class components.\n *\n * @param ctx - Class component WindowContext\n * @returns Window | undefined\n */\nexport var getWindowEx = function (ctx) {\n var _a;\n // eslint-disable-next-line no-restricted-globals\n return (_a = ctx === null || ctx === void 0 ? void 0 : ctx.window) !== null && _a !== void 0 ? _a : (typeof window !== 'undefined' ? window : undefined);\n};\n//# sourceMappingURL=dom.js.map","/**\n * {@docCategory FocusZone}\n */\nexport var FocusZoneTabbableElements = {\n /** Tabbing is not allowed */\n none: 0,\n /** All tabbing action is allowed */\n all: 1,\n /** Tabbing is allowed only on input elements */\n inputOnly: 2,\n};\n/**\n * {@docCategory FocusZone}\n */\nexport var FocusZoneDirection;\n(function (FocusZoneDirection) {\n /** Only react to up/down arrows. */\n FocusZoneDirection[FocusZoneDirection[\"vertical\"] = 0] = \"vertical\";\n /** Only react to left/right arrows. */\n FocusZoneDirection[FocusZoneDirection[\"horizontal\"] = 1] = \"horizontal\";\n /** React to all arrows. */\n FocusZoneDirection[FocusZoneDirection[\"bidirectional\"] = 2] = \"bidirectional\";\n /**\n * React to all arrows. Navigate next item in DOM on right/down arrow keys and previous - left/up arrow keys.\n * Right and Left arrow keys are swapped in RTL mode.\n */\n FocusZoneDirection[FocusZoneDirection[\"domOrder\"] = 3] = \"domOrder\";\n})(FocusZoneDirection || (FocusZoneDirection = {}));\n//# sourceMappingURL=FocusZone.types.js.map","import { mergeStyles } from '../MergeStyles';\n/**\n * Builds a class names object from a given map.\n *\n * @param styles - Map of unprocessed styles.\n * @returns Map of property name to class name.\n */\nexport function buildClassMap(styles) {\n var classes = {};\n var _loop_1 = function (styleName) {\n if (styles.hasOwnProperty(styleName)) {\n var className_1;\n Object.defineProperty(classes, styleName, {\n get: function () {\n if (className_1 === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n className_1 = mergeStyles(styles[styleName]).toString();\n }\n return className_1;\n },\n enumerable: true,\n configurable: true,\n });\n }\n };\n for (var styleName in styles) {\n _loop_1(styleName);\n }\n return classes;\n}\n//# sourceMappingURL=buildClassMap.js.map","import { __assign } from \"tslib\";\nimport { GlobalSettings, warn } from '@fluentui/utilities';\nimport { fontFace, mergeStyles, Stylesheet } from '@fluentui/merge-styles';\nvar ICON_SETTING_NAME = 'icons';\nvar _iconSettings = GlobalSettings.getValue(ICON_SETTING_NAME, {\n __options: {\n disableWarnings: false,\n warnOnMissingIcons: true,\n },\n __remapped: {},\n});\n// Reset icon registration on stylesheet resets.\nvar stylesheet = Stylesheet.getInstance();\nif (stylesheet && stylesheet.onReset) {\n stylesheet.onReset(function () {\n for (var name_1 in _iconSettings) {\n if (_iconSettings.hasOwnProperty(name_1) && !!_iconSettings[name_1].subset) {\n _iconSettings[name_1].subset.className = undefined;\n }\n }\n });\n}\n/**\n * Normalizes an icon name for consistent mapping.\n * Current implementation is to convert the icon name to lower case.\n *\n * @param name - Icon name to normalize.\n * @returns {string} Normalized icon name to use for indexing and mapping.\n */\nvar normalizeIconName = function (name) { return name.toLowerCase(); };\n/**\n * Registers a given subset of icons.\n *\n * @param iconSubset - the icon subset definition.\n */\nexport function registerIcons(iconSubset, options) {\n var subset = __assign(__assign({}, iconSubset), { isRegistered: false, className: undefined });\n var icons = iconSubset.icons;\n // Grab options, optionally mix user provided ones on top.\n options = options ? __assign(__assign({}, _iconSettings.__options), options) : _iconSettings.__options;\n for (var iconName in icons) {\n if (icons.hasOwnProperty(iconName)) {\n var code = icons[iconName];\n var normalizedIconName = normalizeIconName(iconName);\n if (_iconSettings[normalizedIconName]) {\n _warnDuplicateIcon(iconName);\n }\n else {\n _iconSettings[normalizedIconName] = {\n code: code,\n subset: subset,\n };\n }\n }\n }\n}\n/**\n * Unregisters icons by name.\n *\n * @param iconNames - List of icons to unregister.\n */\nexport function unregisterIcons(iconNames) {\n var options = _iconSettings.__options;\n var _loop_1 = function (iconName) {\n var normalizedIconName = normalizeIconName(iconName);\n if (_iconSettings[normalizedIconName]) {\n delete _iconSettings[normalizedIconName];\n }\n else {\n // Warn that we are trying to delete an icon that doesn't exist\n if (!options.disableWarnings) {\n warn(\"The icon \\\"\".concat(iconName, \"\\\" tried to unregister but was not registered.\"));\n }\n }\n // Delete any aliases for this iconName\n if (_iconSettings.__remapped[normalizedIconName]) {\n delete _iconSettings.__remapped[normalizedIconName];\n }\n // Delete any items that were an alias for this iconName\n Object.keys(_iconSettings.__remapped).forEach(function (key) {\n if (_iconSettings.__remapped[key] === normalizedIconName) {\n delete _iconSettings.__remapped[key];\n }\n });\n };\n for (var _i = 0, iconNames_1 = iconNames; _i < iconNames_1.length; _i++) {\n var iconName = iconNames_1[_i];\n _loop_1(iconName);\n }\n}\n/**\n * Remaps one icon name to another.\n */\nexport function registerIconAlias(iconName, mappedToName) {\n _iconSettings.__remapped[normalizeIconName(iconName)] = normalizeIconName(mappedToName);\n}\n/**\n * Gets an icon definition. If an icon is requested but the subset has yet to be registered,\n * it will get registered immediately.\n *\n * @public\n * @param name - Name of icon.\n */\nexport function getIcon(name) {\n var icon = undefined;\n var options = _iconSettings.__options;\n name = name ? normalizeIconName(name) : '';\n name = _iconSettings.__remapped[name] || name;\n if (name) {\n icon = _iconSettings[name];\n if (icon) {\n var subset = icon.subset;\n if (subset && subset.fontFace) {\n if (!subset.isRegistered) {\n fontFace(subset.fontFace);\n subset.isRegistered = true;\n }\n if (!subset.className) {\n subset.className = mergeStyles(subset.style, {\n fontFamily: subset.fontFace.fontFamily,\n fontWeight: subset.fontFace.fontWeight || 'normal',\n fontStyle: subset.fontFace.fontStyle || 'normal',\n });\n }\n }\n }\n else {\n // eslint-disable-next-line deprecation/deprecation\n if (!options.disableWarnings && options.warnOnMissingIcons) {\n warn(\"The icon \\\"\".concat(name, \"\\\" was used but not registered. See https://github.com/microsoft/fluentui/wiki/Using-icons for more information.\"));\n }\n }\n }\n return icon;\n}\n/**\n * Sets the icon options.\n *\n * @public\n */\nexport function setIconOptions(options) {\n _iconSettings.__options = __assign(__assign({}, _iconSettings.__options), options);\n}\nvar _missingIcons = [];\nvar _missingIconsTimer = undefined;\nfunction _warnDuplicateIcon(iconName) {\n var options = _iconSettings.__options;\n var warningDelay = 2000;\n var maxIconsInMessage = 10;\n if (!options.disableWarnings) {\n _missingIcons.push(iconName);\n if (_missingIconsTimer === undefined) {\n _missingIconsTimer = setTimeout(function () {\n warn(\"Some icons were re-registered. Applications should only call registerIcons for any given \" +\n \"icon once. Redefining what an icon is may have unintended consequences. Duplicates \" +\n \"include: \\n\" +\n _missingIcons.slice(0, maxIconsInMessage).join(', ') +\n (_missingIcons.length > maxIconsInMessage ? \" (+ \".concat(_missingIcons.length - maxIconsInMessage, \" more)\") : ''));\n _missingIconsTimer = undefined;\n _missingIcons = [];\n }, warningDelay);\n }\n }\n}\n//# sourceMappingURL=icons.js.map","import { keyframes } from '@fluentui/merge-styles';\n/* Register the keyframes */\nvar EASING_FUNCTION_1 = 'cubic-bezier(.1,.9,.2,1)';\nvar EASING_FUNCTION_2 = 'cubic-bezier(.1,.25,.75,.9)';\nvar DURATION_1 = '0.167s';\nvar DURATION_2 = '0.267s';\nvar DURATION_3 = '0.367s';\nvar DURATION_4 = '0.467s';\nvar FADE_IN = keyframes({\n from: { opacity: 0 },\n to: { opacity: 1 },\n});\nvar FADE_OUT = keyframes({\n from: { opacity: 1 },\n to: { opacity: 0, visibility: 'hidden' },\n});\nvar SLIDE_RIGHT_IN10 = _createSlideInX(-10);\nvar SLIDE_RIGHT_IN20 = _createSlideInX(-20);\nvar SLIDE_RIGHT_IN40 = _createSlideInX(-40);\nvar SLIDE_RIGHT_IN400 = _createSlideInX(-400);\nvar SLIDE_LEFT_IN10 = _createSlideInX(10);\nvar SLIDE_LEFT_IN20 = _createSlideInX(20);\nvar SLIDE_LEFT_IN40 = _createSlideInX(40);\nvar SLIDE_LEFT_IN400 = _createSlideInX(400);\nvar SLIDE_UP_IN10 = _createSlideInY(10);\nvar SLIDE_UP_IN20 = _createSlideInY(20);\nvar SLIDE_DOWN_IN10 = _createSlideInY(-10);\nvar SLIDE_DOWN_IN20 = _createSlideInY(-20);\nvar SLIDE_RIGHT_OUT10 = _createSlideOutX(10);\nvar SLIDE_RIGHT_OUT20 = _createSlideOutX(20);\nvar SLIDE_RIGHT_OUT40 = _createSlideOutX(40);\nvar SLIDE_RIGHT_OUT400 = _createSlideOutX(400);\nvar SLIDE_LEFT_OUT10 = _createSlideOutX(-10);\nvar SLIDE_LEFT_OUT20 = _createSlideOutX(-20);\nvar SLIDE_LEFT_OUT40 = _createSlideOutX(-40);\nvar SLIDE_LEFT_OUT400 = _createSlideOutX(-400);\nvar SLIDE_UP_OUT10 = _createSlideOutY(-10);\nvar SLIDE_UP_OUT20 = _createSlideOutY(-20);\nvar SLIDE_DOWN_OUT10 = _createSlideOutY(10);\nvar SLIDE_DOWN_OUT20 = _createSlideOutY(20);\nvar SCALE_UP100 = keyframes({\n from: { transform: 'scale3d(.98,.98,1)' },\n to: { transform: 'scale3d(1,1,1)' },\n});\nvar SCALE_DOWN98 = keyframes({\n from: { transform: 'scale3d(1,1,1)' },\n to: { transform: 'scale3d(.98,.98,1)' },\n});\nvar SCALE_DOWN100 = keyframes({\n from: { transform: 'scale3d(1.03,1.03,1)' },\n to: { transform: 'scale3d(1,1,1)' },\n});\nvar SCALE_UP103 = keyframes({\n from: { transform: 'scale3d(1,1,1)' },\n to: { transform: 'scale3d(1.03,1.03,1)' },\n});\nvar ROTATE90 = keyframes({\n from: { transform: 'rotateZ(0deg)' },\n to: { transform: 'rotateZ(90deg)' },\n});\nvar ROTATE_N90 = keyframes({\n from: { transform: 'rotateZ(0deg)' },\n to: { transform: 'rotateZ(-90deg)' },\n});\n/**\n * Exporting raw duraction values and easing functions to be used in custom animations\n */\nexport var AnimationVariables = {\n easeFunction1: EASING_FUNCTION_1,\n easeFunction2: EASING_FUNCTION_2,\n durationValue1: DURATION_1,\n durationValue2: DURATION_2,\n durationValue3: DURATION_3,\n durationValue4: DURATION_4,\n};\n/**\n * All Fabric standard animations, exposed as json objects referencing predefined\n * keyframes. These objects can be mixed in with other class definitions.\n */\nexport var AnimationStyles = {\n slideRightIn10: _createAnimation(\"\".concat(FADE_IN, \",\").concat(SLIDE_RIGHT_IN10), DURATION_3, EASING_FUNCTION_1),\n slideRightIn20: _createAnimation(\"\".concat(FADE_IN, \",\").concat(SLIDE_RIGHT_IN20), DURATION_3, EASING_FUNCTION_1),\n slideRightIn40: _createAnimation(\"\".concat(FADE_IN, \",\").concat(SLIDE_RIGHT_IN40), DURATION_3, EASING_FUNCTION_1),\n slideRightIn400: _createAnimation(\"\".concat(FADE_IN, \",\").concat(SLIDE_RIGHT_IN400), DURATION_3, EASING_FUNCTION_1),\n slideLeftIn10: _createAnimation(\"\".concat(FADE_IN, \",\").concat(SLIDE_LEFT_IN10), DURATION_3, EASING_FUNCTION_1),\n slideLeftIn20: _createAnimation(\"\".concat(FADE_IN, \",\").concat(SLIDE_LEFT_IN20), DURATION_3, EASING_FUNCTION_1),\n slideLeftIn40: _createAnimation(\"\".concat(FADE_IN, \",\").concat(SLIDE_LEFT_IN40), DURATION_3, EASING_FUNCTION_1),\n slideLeftIn400: _createAnimation(\"\".concat(FADE_IN, \",\").concat(SLIDE_LEFT_IN400), DURATION_3, EASING_FUNCTION_1),\n slideUpIn10: _createAnimation(\"\".concat(FADE_IN, \",\").concat(SLIDE_UP_IN10), DURATION_3, EASING_FUNCTION_1),\n slideUpIn20: _createAnimation(\"\".concat(FADE_IN, \",\").concat(SLIDE_UP_IN20), DURATION_3, EASING_FUNCTION_1),\n slideDownIn10: _createAnimation(\"\".concat(FADE_IN, \",\").concat(SLIDE_DOWN_IN10), DURATION_3, EASING_FUNCTION_1),\n slideDownIn20: _createAnimation(\"\".concat(FADE_IN, \",\").concat(SLIDE_DOWN_IN20), DURATION_3, EASING_FUNCTION_1),\n slideRightOut10: _createAnimation(\"\".concat(FADE_OUT, \",\").concat(SLIDE_RIGHT_OUT10), DURATION_3, EASING_FUNCTION_1),\n slideRightOut20: _createAnimation(\"\".concat(FADE_OUT, \",\").concat(SLIDE_RIGHT_OUT20), DURATION_3, EASING_FUNCTION_1),\n slideRightOut40: _createAnimation(\"\".concat(FADE_OUT, \",\").concat(SLIDE_RIGHT_OUT40), DURATION_3, EASING_FUNCTION_1),\n slideRightOut400: _createAnimation(\"\".concat(FADE_OUT, \",\").concat(SLIDE_RIGHT_OUT400), DURATION_3, EASING_FUNCTION_1),\n slideLeftOut10: _createAnimation(\"\".concat(FADE_OUT, \",\").concat(SLIDE_LEFT_OUT10), DURATION_3, EASING_FUNCTION_1),\n slideLeftOut20: _createAnimation(\"\".concat(FADE_OUT, \",\").concat(SLIDE_LEFT_OUT20), DURATION_3, EASING_FUNCTION_1),\n slideLeftOut40: _createAnimation(\"\".concat(FADE_OUT, \",\").concat(SLIDE_LEFT_OUT40), DURATION_3, EASING_FUNCTION_1),\n slideLeftOut400: _createAnimation(\"\".concat(FADE_OUT, \",\").concat(SLIDE_LEFT_OUT400), DURATION_3, EASING_FUNCTION_1),\n slideUpOut10: _createAnimation(\"\".concat(FADE_OUT, \",\").concat(SLIDE_UP_OUT10), DURATION_3, EASING_FUNCTION_1),\n slideUpOut20: _createAnimation(\"\".concat(FADE_OUT, \",\").concat(SLIDE_UP_OUT20), DURATION_3, EASING_FUNCTION_1),\n slideDownOut10: _createAnimation(\"\".concat(FADE_OUT, \",\").concat(SLIDE_DOWN_OUT10), DURATION_3, EASING_FUNCTION_1),\n slideDownOut20: _createAnimation(\"\".concat(FADE_OUT, \",\").concat(SLIDE_DOWN_OUT20), DURATION_3, EASING_FUNCTION_1),\n scaleUpIn100: _createAnimation(\"\".concat(FADE_IN, \",\").concat(SCALE_UP100), DURATION_3, EASING_FUNCTION_1),\n scaleDownIn100: _createAnimation(\"\".concat(FADE_IN, \",\").concat(SCALE_DOWN100), DURATION_3, EASING_FUNCTION_1),\n scaleUpOut103: _createAnimation(\"\".concat(FADE_OUT, \",\").concat(SCALE_UP103), DURATION_1, EASING_FUNCTION_2),\n scaleDownOut98: _createAnimation(\"\".concat(FADE_OUT, \",\").concat(SCALE_DOWN98), DURATION_1, EASING_FUNCTION_2),\n fadeIn100: _createAnimation(FADE_IN, DURATION_1, EASING_FUNCTION_2),\n fadeIn200: _createAnimation(FADE_IN, DURATION_2, EASING_FUNCTION_2),\n fadeIn400: _createAnimation(FADE_IN, DURATION_3, EASING_FUNCTION_2),\n fadeIn500: _createAnimation(FADE_IN, DURATION_4, EASING_FUNCTION_2),\n fadeOut100: _createAnimation(FADE_OUT, DURATION_1, EASING_FUNCTION_2),\n fadeOut200: _createAnimation(FADE_OUT, DURATION_2, EASING_FUNCTION_2),\n fadeOut400: _createAnimation(FADE_OUT, DURATION_3, EASING_FUNCTION_2),\n fadeOut500: _createAnimation(FADE_OUT, DURATION_4, EASING_FUNCTION_2),\n rotate90deg: _createAnimation(ROTATE90, '0.1s', EASING_FUNCTION_2),\n rotateN90deg: _createAnimation(ROTATE_N90, '0.1s', EASING_FUNCTION_2),\n // expandCollapse 100/200/400, delay 100/200\n};\nfunction _createAnimation(animationName, animationDuration, animationTimingFunction) {\n return {\n animationName: animationName,\n animationDuration: animationDuration,\n animationTimingFunction: animationTimingFunction,\n animationFillMode: 'both',\n };\n}\nfunction _createSlideInX(fromX) {\n return keyframes({\n from: { transform: \"translate3d(\".concat(fromX, \"px,0,0)\"), pointerEvents: 'none' },\n to: { transform: \"translate3d(0,0,0)\", pointerEvents: 'auto' },\n });\n}\nfunction _createSlideInY(fromY) {\n return keyframes({\n from: { transform: \"translate3d(0,\".concat(fromY, \"px,0)\"), pointerEvents: 'none' },\n to: { transform: \"translate3d(0,0,0)\", pointerEvents: 'auto' },\n });\n}\nfunction _createSlideOutX(toX) {\n return keyframes({\n from: { transform: \"translate3d(0,0,0)\" },\n to: { transform: \"translate3d(\".concat(toX, \"px,0,0)\") },\n });\n}\nfunction _createSlideOutY(toY) {\n return keyframes({\n from: { transform: \"translate3d(0,0,0)\" },\n to: { transform: \"translate3d(0,\".concat(toY, \"px,0)\") },\n });\n}\n//# sourceMappingURL=AnimationStyles.js.map","export var HighContrastSelector = '@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)';\nexport var HighContrastSelectorWhite = \n// eslint-disable-next-line @fluentui/max-len\n'@media screen and (-ms-high-contrast: black-on-white), screen and (forced-colors: active) and (prefers-color-scheme: light)';\nexport var HighContrastSelectorBlack = \n// eslint-disable-next-line @fluentui/max-len\n'@media screen and (-ms-high-contrast: white-on-black), screen and (forced-colors: active) and (prefers-color-scheme: dark)';\n/**\n * @deprecated Use `HighContrastSelector`\n */\nexport var EdgeChromiumHighContrastSelector = '@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)';\nexport var ScreenWidthMinSmall = 320;\nexport var ScreenWidthMinMedium = 480;\nexport var ScreenWidthMinLarge = 640;\nexport var ScreenWidthMinXLarge = 1024;\nexport var ScreenWidthMinXXLarge = 1366;\nexport var ScreenWidthMinXXXLarge = 1920;\nexport var ScreenWidthMaxSmall = ScreenWidthMinMedium - 1;\nexport var ScreenWidthMaxMedium = ScreenWidthMinLarge - 1;\nexport var ScreenWidthMaxLarge = ScreenWidthMinXLarge - 1;\nexport var ScreenWidthMaxXLarge = ScreenWidthMinXXLarge - 1;\nexport var ScreenWidthMaxXXLarge = ScreenWidthMinXXXLarge - 1;\nexport var ScreenWidthMinUhfMobile = 768;\nexport function getScreenSelector(min, max) {\n var minSelector = typeof min === 'number' ? \" and (min-width: \".concat(min, \"px)\") : '';\n var maxSelector = typeof max === 'number' ? \" and (max-width: \".concat(max, \"px)\") : '';\n return \"@media only screen\".concat(minSelector).concat(maxSelector);\n}\n/**\n * The style which turns off high contrast adjustment in browsers.\n */\nexport function getHighContrastNoAdjustStyle() {\n return {\n forcedColorAdjust: 'none',\n MsHighContrastAdjust: 'none',\n };\n}\n/**\n * The style which turns off high contrast adjustment in (only) Edge Chromium browser.\n * @deprecated Use `getHighContrastNoAdjustStyle`\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getEdgeChromiumNoHighContrastAdjustSelector() {\n var _a;\n return _a = {},\n // eslint-disable-next-line deprecation/deprecation\n _a[EdgeChromiumHighContrastSelector] = {\n forcedColorAdjust: 'none',\n MsHighContrastAdjust: 'none',\n },\n _a;\n}\n//# sourceMappingURL=CommonStyles.js.map","export var ZIndexes;\n(function (ZIndexes) {\n ZIndexes.Nav = 1;\n /**\n * @deprecated Do not use\n */\n ZIndexes.ScrollablePane = 1;\n ZIndexes.FocusStyle = 1;\n ZIndexes.Coachmark = 1000;\n ZIndexes.Layer = 1000000;\n ZIndexes.KeytipLayer = 1000001;\n})(ZIndexes || (ZIndexes = {}));\n//# sourceMappingURL=zIndexes.js.map","import { HighContrastSelector } from './CommonStyles';\nimport { IsFocusVisibleClassName } from '@fluentui/utilities';\nimport { ZIndexes } from './zIndexes';\nexport function getFocusStyle(theme, insetOrOptions, position, highContrastStyle, borderColor, outlineColor, isFocusedOnly, borderRadius) {\n if (typeof insetOrOptions === 'number' || !insetOrOptions) {\n return _getFocusStyleInternal(theme, {\n inset: insetOrOptions,\n position: position,\n highContrastStyle: highContrastStyle,\n borderColor: borderColor,\n outlineColor: outlineColor,\n isFocusedOnly: isFocusedOnly,\n borderRadius: borderRadius,\n });\n }\n else {\n return _getFocusStyleInternal(theme, insetOrOptions);\n }\n}\nfunction _getFocusStyleInternal(theme, options) {\n var _a, _b;\n if (options === void 0) { options = {}; }\n var borderRadius = options.borderRadius, _c = options.inset, inset = _c === void 0 ? 0 : _c, _d = options.width, width = _d === void 0 ? 1 : _d, _e = options.position, position = _e === void 0 ? 'relative' : _e, highContrastStyle = options.highContrastStyle, _f = options.borderColor, borderColor = _f === void 0 ? theme.palette.white : _f, _g = options.outlineColor, outlineColor = _g === void 0 ? theme.palette.neutralSecondary : _g, _h = options.isFocusedOnly, isFocusedOnly = _h === void 0 ? true : _h, pointerEvents = options.pointerEvents;\n return {\n // Clear browser-specific focus styles and use 'transparent' as placeholder for focus style.\n outline: 'transparent',\n // Requirement because pseudo-element is absolutely positioned.\n position: position,\n selectors: (_a = {\n // Clear the focus border in Firefox.\n // Reference: http://stackoverflow.com/a/199319/1436671\n '::-moz-focus-inner': {\n border: '0',\n }\n },\n // When the element that uses this mixin is in a :focus state, add a pseudo-element to\n // create a border.\n _a[\".\".concat(IsFocusVisibleClassName, \" &\").concat(isFocusedOnly ? ':focus' : '', \":after, :host(.\").concat(IsFocusVisibleClassName, \") &\").concat(isFocusedOnly ? ':focus' : '', \":after\")] = {\n content: '\"\"',\n position: 'absolute',\n pointerEvents: pointerEvents,\n left: inset + 1,\n top: inset + 1,\n bottom: inset + 1,\n right: inset + 1,\n border: \"\".concat(width, \"px solid \").concat(borderColor),\n outline: \"\".concat(width, \"px solid \").concat(outlineColor),\n zIndex: ZIndexes.FocusStyle,\n borderRadius: borderRadius,\n selectors: (_b = {},\n _b[HighContrastSelector] = highContrastStyle,\n _b),\n },\n _a),\n };\n}\n/**\n * Generates style to clear browser specific focus styles.\n */\nexport function focusClear() {\n return {\n selectors: {\n '&::-moz-focus-inner': {\n // Clear the focus border in Firefox. Reference: http://stackoverflow.com/a/199319/1436671\n border: 0,\n },\n '&': {\n // Clear browser specific focus styles and use transparent as placeholder for focus style\n outline: 'transparent',\n },\n },\n };\n}\n/**\n * Generates a style which can be used to set a border on focus.\n *\n * @param theme - The theme object to use.\n * @param inset - The number of pixels to inset the border (default 0)\n * @param width - The border width in pixels (default 1)\n * @param color - Color of the outline (default `theme.palette.neutralSecondary`)\n * @returns The style object.\n */\nexport function getFocusOutlineStyle(theme, inset, width, color) {\n var _a;\n if (inset === void 0) { inset = 0; }\n if (width === void 0) { width = 1; }\n return {\n selectors: (_a = {},\n _a[\":global(\".concat(IsFocusVisibleClassName, \") &:focus\")] = {\n outline: \"\".concat(width, \" solid \").concat(color || theme.palette.neutralSecondary),\n outlineOffset: \"\".concat(-inset, \"px\"),\n },\n _a),\n };\n}\n/**\n * Generates text input border styles on focus.\n *\n * @param borderColor - Color of the border.\n * @param borderRadius - Radius of the border.\n * @param borderType - Type of the border.\n * @param borderPosition - Position of the border relative to the input element (default to -1\n * as it's the most common border width of the input element)\n * @returns The style object.\n */\nexport var getInputFocusStyle = function (borderColor, borderRadius, borderType, borderPosition) {\n var _a, _b, _c;\n if (borderType === void 0) { borderType = 'border'; }\n if (borderPosition === void 0) { borderPosition = -1; }\n var isBorderBottom = borderType === 'borderBottom';\n return {\n borderColor: borderColor,\n selectors: {\n ':after': (_a = {\n pointerEvents: 'none',\n content: \"''\",\n position: 'absolute',\n left: isBorderBottom ? 0 : borderPosition,\n top: borderPosition,\n bottom: borderPosition,\n right: isBorderBottom ? 0 : borderPosition\n },\n _a[borderType] = \"2px solid \".concat(borderColor),\n _a.borderRadius = borderRadius,\n _a.width = borderType === 'borderBottom' ? '100%' : undefined,\n _a.selectors = (_b = {},\n _b[HighContrastSelector] = (_c = {},\n _c[borderType === 'border' ? 'borderColor' : 'borderBottomColor'] = 'Highlight',\n _c),\n _b),\n _a),\n },\n };\n};\n//# sourceMappingURL=getFocusStyle.js.map","export var hiddenContentStyle = {\n position: 'absolute',\n width: 1,\n height: 1,\n margin: -1,\n padding: 0,\n border: 0,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n};\n//# sourceMappingURL=hiddenContentStyle.js.map","import { Stylesheet } from '@fluentui/merge-styles';\nimport { memoizeFunction } from '@fluentui/utilities';\n/**\n * Internal memoized function which simply takes in the class map and the\n * disable boolean. These immutable values can be memoized.\n */\nvar _getGlobalClassNames = memoizeFunction(function (classNames, disableGlobalClassNames) {\n var styleSheet = Stylesheet.getInstance();\n if (disableGlobalClassNames) {\n // disable global classnames\n return Object.keys(classNames).reduce(function (acc, className) {\n acc[className] = styleSheet.getClassName(classNames[className]);\n return acc;\n }, {});\n }\n // use global classnames\n return classNames;\n});\n/**\n * Checks for the `disableGlobalClassNames` property on the `theme` to determine if it should return `classNames`\n * Note that calls to this function are memoized.\n *\n * @param classNames - The collection of global class names that apply when the flag is false. Make sure to pass in\n * the same instance on each call to benefit from memoization.\n * @param theme - The theme to check the flag on\n * @param disableGlobalClassNames - Optional. Explicitly opt in/out of disabling global classnames. Defaults to false.\n */\nexport function getGlobalClassNames(classNames, theme, disableGlobalClassNames) {\n return _getGlobalClassNames(classNames, disableGlobalClassNames !== undefined ? disableGlobalClassNames : theme.disableGlobalClassNames);\n}\n//# sourceMappingURL=getGlobalClassNames.js.map","import { buildClassMap } from '../utilities/index';\nimport { AnimationStyles } from '../styles/index';\n/**\n * {@docCategory AnimationClassNames}\n */\nexport var AnimationClassNames = buildClassMap(AnimationStyles);\n//# sourceMappingURL=AnimationClassNames.js.map","import { __assign, __extends } from \"tslib\";\nimport * as React from 'react';\nimport { FocusZoneDirection, FocusZoneTabbableElements } from './FocusZone.types';\nimport { KeyCodes, css, elementContains, getDocument, getElementIndexPath, getFocusableByIndexPath, getId, getNativeProps, getNextElement, getParent, getPreviousElement, getRTL, htmlElementProperties, initializeComponentRef, isElementFocusSubZone, isElementFocusZone, isElementTabbable, shouldWrapFocus, warnDeprecations, portalContainsElement, findScrollableParent, createMergedRef, isElementVisibleAndNotHidden, MergeStylesShadowRootContext, } from '@fluentui/utilities';\nimport { mergeStyles } from '@fluentui/merge-styles';\nimport { getTheme } from '@fluentui/style-utilities';\nvar IS_FOCUSABLE_ATTRIBUTE = 'data-is-focusable';\nvar IS_ENTER_DISABLED_ATTRIBUTE = 'data-disable-click-on-enter';\nvar FOCUSZONE_ID_ATTRIBUTE = 'data-focuszone-id';\nvar TABINDEX = 'tabindex';\nvar NO_VERTICAL_WRAP = 'data-no-vertical-wrap';\nvar NO_HORIZONTAL_WRAP = 'data-no-horizontal-wrap';\nvar LARGE_DISTANCE_FROM_CENTER = 999999999;\nvar LARGE_NEGATIVE_DISTANCE_FROM_CENTER = -999999999;\nvar focusZoneStyles;\nvar focusZoneClass = 'ms-FocusZone';\n/**\n * Raises a click on a target element based on a keyboard event.\n */\nfunction raiseClickFromKeyboardEvent(target, ev) {\n var event;\n if (typeof MouseEvent === 'function') {\n event = new MouseEvent('click', {\n ctrlKey: ev === null || ev === void 0 ? void 0 : ev.ctrlKey,\n metaKey: ev === null || ev === void 0 ? void 0 : ev.metaKey,\n shiftKey: ev === null || ev === void 0 ? void 0 : ev.shiftKey,\n altKey: ev === null || ev === void 0 ? void 0 : ev.altKey,\n bubbles: ev === null || ev === void 0 ? void 0 : ev.bubbles,\n cancelable: ev === null || ev === void 0 ? void 0 : ev.cancelable,\n });\n }\n else {\n // eslint-disable-next-line no-restricted-globals\n event = document.createEvent('MouseEvents');\n // eslint-disable-next-line deprecation/deprecation\n event.initMouseEvent('click', ev ? ev.bubbles : false, ev ? ev.cancelable : false, \n // eslint-disable-next-line no-restricted-globals\n window, // not using getWindow() since this can only be run client side\n 0, // detail\n 0, // screen x\n 0, // screen y\n 0, // client x\n 0, // client y\n ev ? ev.ctrlKey : false, ev ? ev.altKey : false, ev ? ev.shiftKey : false, ev ? ev.metaKey : false, 0, // button\n null);\n }\n target.dispatchEvent(event);\n}\n// Helper function that will return a class for when the root is focused\nfunction getRootClass() {\n if (!focusZoneStyles) {\n focusZoneStyles = mergeStyles({\n selectors: {\n ':focus': {\n outline: 'none',\n },\n },\n }, focusZoneClass);\n }\n return focusZoneStyles;\n}\nvar _allInstances = {};\nvar _outerZones = new Set();\nvar ALLOWED_INPUT_TYPES = ['text', 'number', 'password', 'email', 'tel', 'url', 'search', 'textarea'];\nvar ALLOW_VIRTUAL_ELEMENTS = false;\nvar FocusZone = /** @class */ (function (_super) {\n __extends(FocusZone, _super);\n function FocusZone(props) {\n var _a, _b, _c, _d;\n var _this = _super.call(this, props) || this;\n _this._root = React.createRef();\n _this._mergedRef = createMergedRef();\n _this._onFocus = function (ev) {\n if (_this._portalContainsElement(ev.target)) {\n // If the event target is inside a portal do not process the event.\n return;\n }\n var _a = _this.props, onActiveElementChanged = _a.onActiveElementChanged, \n // eslint-disable-next-line deprecation/deprecation\n doNotAllowFocusEventToPropagate = _a.doNotAllowFocusEventToPropagate, stopFocusPropagation = _a.stopFocusPropagation, \n // eslint-disable-next-line deprecation/deprecation\n onFocusNotification = _a.onFocusNotification, onFocus = _a.onFocus, shouldFocusInnerElementWhenReceivedFocus = _a.shouldFocusInnerElementWhenReceivedFocus, defaultTabbableElement = _a.defaultTabbableElement;\n var isImmediateDescendant = _this._isImmediateDescendantOfZone(ev.target);\n var newActiveElement;\n if (isImmediateDescendant) {\n newActiveElement = ev.target;\n }\n else {\n var parentElement = ev.target;\n while (parentElement && parentElement !== _this._root.current) {\n if (isElementTabbable(parentElement, undefined, _this._inShadowRoot) &&\n _this._isImmediateDescendantOfZone(parentElement)) {\n newActiveElement = parentElement;\n break;\n }\n parentElement = getParent(parentElement, ALLOW_VIRTUAL_ELEMENTS);\n }\n }\n // If an inner focusable element should be focused when FocusZone container receives focus\n if (shouldFocusInnerElementWhenReceivedFocus && ev.target === _this._root.current) {\n var maybeElementToFocus = defaultTabbableElement &&\n typeof defaultTabbableElement === 'function' &&\n _this._root.current &&\n defaultTabbableElement(_this._root.current);\n // try to focus defaultTabbable element\n if (maybeElementToFocus && isElementTabbable(maybeElementToFocus, undefined, _this._inShadowRoot)) {\n newActiveElement = maybeElementToFocus;\n maybeElementToFocus.focus();\n }\n else {\n // force focus on first focusable element\n _this.focus(true);\n if (_this._activeElement) {\n // set to null as new active element was handled in method above\n newActiveElement = null;\n }\n }\n }\n var initialElementFocused = !_this._activeElement;\n // If the new active element is a child of this zone and received focus,\n // update alignment an immediate descendant\n if (newActiveElement && newActiveElement !== _this._activeElement) {\n if (isImmediateDescendant || initialElementFocused) {\n _this._setFocusAlignment(newActiveElement, true, true);\n }\n _this._activeElement = newActiveElement;\n if (initialElementFocused) {\n _this._updateTabIndexes();\n }\n }\n if (onActiveElementChanged) {\n onActiveElementChanged(_this._activeElement, ev);\n }\n if (stopFocusPropagation || doNotAllowFocusEventToPropagate) {\n ev.stopPropagation();\n }\n if (onFocus) {\n onFocus(ev);\n }\n else if (onFocusNotification) {\n onFocusNotification();\n }\n };\n _this._onBlur = function () {\n _this._setParkedFocus(false);\n };\n _this._onMouseDown = function (ev) {\n if (_this._portalContainsElement(ev.target)) {\n // If the event target is inside a portal do not process the event.\n return;\n }\n var disabled = _this.props.disabled;\n if (disabled) {\n return;\n }\n var target = ev.target;\n var path = [];\n while (target && target !== _this._root.current) {\n path.push(target);\n target = getParent(target, ALLOW_VIRTUAL_ELEMENTS);\n }\n while (path.length) {\n target = path.pop();\n if (target && isElementTabbable(target, undefined, _this._inShadowRoot)) {\n _this._setActiveElement(target, true);\n }\n if (isElementFocusZone(target)) {\n // Stop here since the focus zone will take care of its own children.\n break;\n }\n }\n };\n /**\n * Handle the keystrokes.\n */\n _this._onKeyDown = function (ev, theme) {\n if (_this._portalContainsElement(ev.target)) {\n // If the event target is inside a portal do not process the event.\n return;\n }\n // eslint-disable-next-line deprecation/deprecation\n var _a = _this.props, direction = _a.direction, disabled = _a.disabled, isInnerZoneKeystroke = _a.isInnerZoneKeystroke, pagingSupportDisabled = _a.pagingSupportDisabled, shouldEnterInnerZone = _a.shouldEnterInnerZone;\n if (disabled) {\n return;\n }\n if (_this.props.onKeyDown) {\n _this.props.onKeyDown(ev);\n }\n // If the default has been prevented, do not process keyboard events.\n if (ev.isDefaultPrevented()) {\n return;\n }\n if (_this._getDocument().activeElement === _this._root.current && _this._isInnerZone) {\n // If this element has focus, it is being controlled by a parent.\n // Ignore the keystroke.\n return;\n }\n if (((shouldEnterInnerZone && shouldEnterInnerZone(ev)) || (isInnerZoneKeystroke && isInnerZoneKeystroke(ev))) &&\n _this._isImmediateDescendantOfZone(ev.target)) {\n // Try to focus\n var innerZone = _this._getFirstInnerZone();\n if (innerZone) {\n if (!innerZone.focus(true)) {\n return;\n }\n }\n else if (isElementFocusSubZone(ev.target)) {\n if (!_this.focusElement(getNextElement(ev.target, ev.target.firstChild, true))) {\n return;\n }\n }\n else {\n return;\n }\n }\n else if (ev.altKey) {\n return;\n }\n else {\n // eslint-disable-next-line @fluentui/deprecated-keyboard-event-props, deprecation/deprecation\n switch (ev.which) {\n case KeyCodes.space:\n if (_this._shouldRaiseClicksOnSpace && _this._tryInvokeClickForFocusable(ev.target, ev)) {\n break;\n }\n return;\n case KeyCodes.left:\n if (direction !== FocusZoneDirection.vertical) {\n _this._preventDefaultWhenHandled(ev);\n if (_this._moveFocusLeft(theme)) {\n break;\n }\n }\n return;\n case KeyCodes.right:\n if (direction !== FocusZoneDirection.vertical) {\n _this._preventDefaultWhenHandled(ev);\n if (_this._moveFocusRight(theme)) {\n break;\n }\n }\n return;\n case KeyCodes.up:\n if (direction !== FocusZoneDirection.horizontal) {\n _this._preventDefaultWhenHandled(ev);\n if (_this._moveFocusUp()) {\n break;\n }\n }\n return;\n case KeyCodes.down:\n if (direction !== FocusZoneDirection.horizontal) {\n _this._preventDefaultWhenHandled(ev);\n if (_this._moveFocusDown()) {\n break;\n }\n }\n return;\n case KeyCodes.pageDown:\n if (!pagingSupportDisabled && _this._moveFocusPaging(true)) {\n break;\n }\n return;\n case KeyCodes.pageUp:\n if (!pagingSupportDisabled && _this._moveFocusPaging(false)) {\n break;\n }\n return;\n case KeyCodes.tab:\n if (\n // eslint-disable-next-line deprecation/deprecation\n _this.props.allowTabKey ||\n _this.props.handleTabKey === FocusZoneTabbableElements.all ||\n (_this.props.handleTabKey === FocusZoneTabbableElements.inputOnly &&\n _this._isElementInput(ev.target))) {\n var focusChanged = false;\n _this._processingTabKey = true;\n if (direction === FocusZoneDirection.vertical ||\n !_this._shouldWrapFocus(_this._activeElement, NO_HORIZONTAL_WRAP)) {\n focusChanged = ev.shiftKey ? _this._moveFocusUp() : _this._moveFocusDown();\n }\n else {\n var tabWithDirection = getRTL(theme) ? !ev.shiftKey : ev.shiftKey;\n focusChanged = tabWithDirection ? _this._moveFocusLeft(theme) : _this._moveFocusRight(theme);\n }\n _this._processingTabKey = false;\n if (focusChanged) {\n break;\n }\n else if (_this.props.shouldResetActiveElementWhenTabFromZone) {\n _this._activeElement = null;\n }\n }\n return;\n case KeyCodes.home:\n if (_this._isContentEditableElement(ev.target) ||\n (_this._isElementInput(ev.target) &&\n !_this._shouldInputLoseFocus(ev.target, false))) {\n return false;\n }\n var firstChild = _this._root.current && _this._root.current.firstChild;\n if (_this._root.current &&\n firstChild &&\n _this.focusElement(getNextElement(_this._root.current, firstChild, true))) {\n break;\n }\n return;\n case KeyCodes.end:\n if (_this._isContentEditableElement(ev.target) ||\n (_this._isElementInput(ev.target) &&\n !_this._shouldInputLoseFocus(ev.target, true))) {\n return false;\n }\n var lastChild = _this._root.current && _this._root.current.lastChild;\n if (_this._root.current &&\n _this.focusElement(getPreviousElement(_this._root.current, lastChild, true, true, true))) {\n break;\n }\n return;\n case KeyCodes.enter:\n if (_this._shouldRaiseClicksOnEnter && _this._tryInvokeClickForFocusable(ev.target, ev)) {\n break;\n }\n return;\n default:\n return;\n }\n }\n ev.preventDefault();\n ev.stopPropagation();\n };\n _this._getHorizontalDistanceFromCenter = function (isForward, \n // eslint-disable-next-line deprecation/deprecation\n activeRect, \n // eslint-disable-next-line deprecation/deprecation\n targetRect) {\n // eslint-disable-next-line deprecation/deprecation\n var leftAlignment = _this._focusAlignment.left || _this._focusAlignment.x || 0;\n // ClientRect values can be floats that differ by very small fractions of a decimal.\n // If the difference between top and bottom are within a pixel then we should treat\n // them as equivalent by using Math.floor. For instance 5.2222 and 5.222221 should be equivalent,\n // but without Math.Floor they will be handled incorrectly.\n var targetRectTop = Math.floor(targetRect.top);\n var activeRectBottom = Math.floor(activeRect.bottom);\n var targetRectBottom = Math.floor(targetRect.bottom);\n var activeRectTop = Math.floor(activeRect.top);\n var isValidCandidateOnpagingDown = isForward && targetRectTop > activeRectBottom;\n var isValidCandidateOnpagingUp = !isForward && targetRectBottom < activeRectTop;\n if (isValidCandidateOnpagingDown || isValidCandidateOnpagingUp) {\n if (leftAlignment >= targetRect.left && leftAlignment <= targetRect.left + targetRect.width) {\n return 0;\n }\n return Math.abs(targetRect.left + targetRect.width / 2 - leftAlignment);\n }\n if (!_this._shouldWrapFocus(_this._activeElement, NO_VERTICAL_WRAP)) {\n return LARGE_NEGATIVE_DISTANCE_FROM_CENTER;\n }\n return LARGE_DISTANCE_FROM_CENTER;\n };\n // Manage componentRef resolution.\n initializeComponentRef(_this);\n if (process.env.NODE_ENV !== 'production') {\n warnDeprecations('FocusZone', props, {\n rootProps: undefined,\n allowTabKey: 'handleTabKey',\n elementType: 'as',\n ariaDescribedBy: 'aria-describedby',\n ariaLabelledBy: 'aria-labelledby',\n });\n }\n _this._id = getId('FocusZone');\n _this._focusAlignment = {\n left: 0,\n top: 0,\n };\n _this._processingTabKey = false;\n var shouldRaiseClicksFallback = (_b = (_a = props.shouldRaiseClicks) !== null && _a !== void 0 ? _a : FocusZone.defaultProps.shouldRaiseClicks) !== null && _b !== void 0 ? _b : true;\n _this._shouldRaiseClicksOnEnter = (_c = props.shouldRaiseClicksOnEnter) !== null && _c !== void 0 ? _c : shouldRaiseClicksFallback;\n _this._shouldRaiseClicksOnSpace = (_d = props.shouldRaiseClicksOnSpace) !== null && _d !== void 0 ? _d : shouldRaiseClicksFallback;\n return _this;\n }\n /** Used for testing purposes only. */\n FocusZone.getOuterZones = function () {\n return _outerZones.size;\n };\n /**\n * Handle global tab presses so that we can patch tabindexes on the fly.\n * HEADS UP: This must not be an arrow function in order to be referentially equal among instances\n * for ref counting to work correctly!\n */\n FocusZone._onKeyDownCapture = function (ev) {\n // eslint-disable-next-line deprecation/deprecation, @fluentui/deprecated-keyboard-event-props\n if (ev.which === KeyCodes.tab) {\n _outerZones.forEach(function (zone) { return zone._updateTabIndexes(); });\n }\n };\n FocusZone.prototype.componentDidMount = function () {\n var _a;\n var root = this._root.current;\n this._inShadowRoot = !!((_a = this.context) === null || _a === void 0 ? void 0 : _a.shadowRoot);\n _allInstances[this._id] = this;\n if (root) {\n var parentElement = getParent(root, ALLOW_VIRTUAL_ELEMENTS);\n while (parentElement && parentElement !== this._getDocument().body && parentElement.nodeType === 1) {\n if (isElementFocusZone(parentElement)) {\n this._isInnerZone = true;\n break;\n }\n parentElement = getParent(parentElement, ALLOW_VIRTUAL_ELEMENTS);\n }\n if (!this._isInnerZone) {\n _outerZones.add(this);\n this._root.current && this._root.current.addEventListener('keydown', FocusZone._onKeyDownCapture, true);\n }\n this._root.current && this._root.current.addEventListener('blur', this._onBlur, true);\n // Assign initial tab indexes so that we can set initial focus as appropriate.\n this._updateTabIndexes();\n if (this.props.defaultTabbableElement && typeof this.props.defaultTabbableElement === 'string') {\n this._activeElement = this._getDocument().querySelector(this.props.defaultTabbableElement);\n // eslint-disable-next-line deprecation/deprecation\n }\n else if (this.props.defaultActiveElement) {\n // eslint-disable-next-line deprecation/deprecation\n this._activeElement = this._getDocument().querySelector(this.props.defaultActiveElement);\n }\n if (this.props.shouldFocusOnMount) {\n this.focus();\n }\n }\n };\n FocusZone.prototype.componentDidUpdate = function () {\n var _a;\n var root = this._root.current;\n var doc = this._getDocument();\n this._inShadowRoot = !!((_a = this.context) === null || _a === void 0 ? void 0 : _a.shadowRoot);\n // If either _activeElement or _defaultFocusElement are no longer contained by _root,\n // reset those variables (and update tab indexes) to avoid memory leaks\n if ((this._activeElement && !elementContains(this._root.current, this._activeElement, ALLOW_VIRTUAL_ELEMENTS)) ||\n (this._defaultFocusElement &&\n !elementContains(this._root.current, this._defaultFocusElement, ALLOW_VIRTUAL_ELEMENTS))) {\n this._activeElement = null;\n this._defaultFocusElement = null;\n this._updateTabIndexes();\n }\n if (!this.props.preventFocusRestoration &&\n doc &&\n this._lastIndexPath &&\n (doc.activeElement === doc.body || doc.activeElement === null || doc.activeElement === root)) {\n // The element has been removed after the render, attempt to restore focus.\n var elementToFocus = getFocusableByIndexPath(root, this._lastIndexPath);\n if (elementToFocus) {\n this._setActiveElement(elementToFocus, true);\n elementToFocus.focus();\n this._setParkedFocus(false);\n }\n else {\n // We had a focus path to restore, but now that path is unresolvable. Park focus\n // on the container until we can try again.\n this._setParkedFocus(true);\n }\n }\n };\n FocusZone.prototype.componentWillUnmount = function () {\n delete _allInstances[this._id];\n if (!this._isInnerZone) {\n _outerZones.delete(this);\n this._root.current && this._root.current.removeEventListener('keydown', FocusZone._onKeyDownCapture, true);\n }\n if (this._root.current) {\n this._root.current.removeEventListener('blur', this._onBlur, true);\n }\n this._activeElement = null;\n this._defaultFocusElement = null;\n };\n FocusZone.prototype.render = function () {\n var _this = this;\n // eslint-disable-next-line deprecation/deprecation\n var _a = this.props, tag = _a.as, elementType = _a.elementType, rootProps = _a.rootProps, ariaDescribedBy = _a.ariaDescribedBy, ariaLabelledBy = _a.ariaLabelledBy, className = _a.className;\n var divProps = getNativeProps(this.props, htmlElementProperties);\n var Tag = tag || elementType || 'div';\n // Note, right before rendering/reconciling proceeds, we need to record if focus\n // was in the zone before the update. This helper will track this and, if focus\n // was actually in the zone, what the index path to the element is at this time.\n // Then, later in componentDidUpdate, we can evaluate if we need to restore it in\n // the case the element was removed.\n this._evaluateFocusBeforeRender();\n // Only support RTL defined in global theme, not contextual theme/RTL.\n var theme = getTheme();\n return (React.createElement(Tag, __assign({ \"aria-labelledby\": ariaLabelledBy, \"aria-describedby\": ariaDescribedBy }, divProps, rootProps, { \n // Once the getClassName correctly memoizes inputs this should\n // be replaced so that className is passed to getRootClass and is included there so\n // the class names will always be in the same order.\n className: css(getRootClass(), className), \n // eslint-disable-next-line deprecation/deprecation\n ref: this._mergedRef(this.props.elementRef, this._root), \"data-focuszone-id\": this._id, \n // eslint-disable-next-line react/jsx-no-bind\n onKeyDown: function (ev) { return _this._onKeyDown(ev, theme); }, onFocus: this._onFocus, onMouseDownCapture: this._onMouseDown }), this.props.children));\n };\n /**\n * Sets focus to the first tabbable item in the zone.\n * @param forceIntoFirstElement - If true, focus will be forced into the first element, even\n * if focus is already in the focus zone.\n * @param bypassHiddenElements - If true, focus will be not be set on hidden elements.\n * @returns True if focus could be set to an active element, false if no operation was taken.\n */\n FocusZone.prototype.focus = function (forceIntoFirstElement, bypassHiddenElements) {\n if (forceIntoFirstElement === void 0) { forceIntoFirstElement = false; }\n if (bypassHiddenElements === void 0) { bypassHiddenElements = false; }\n if (this._root.current) {\n if (!forceIntoFirstElement &&\n this._root.current.getAttribute(IS_FOCUSABLE_ATTRIBUTE) === 'true' &&\n this._isInnerZone) {\n var ownerZoneElement = this._getOwnerZone(this._root.current);\n if (ownerZoneElement !== this._root.current) {\n var ownerZone = _allInstances[ownerZoneElement.getAttribute(FOCUSZONE_ID_ATTRIBUTE)];\n return !!ownerZone && ownerZone.focusElement(this._root.current);\n }\n return false;\n }\n else if (!forceIntoFirstElement &&\n this._activeElement &&\n elementContains(this._root.current, this._activeElement) &&\n isElementTabbable(this._activeElement, undefined, this._inShadowRoot) &&\n (!bypassHiddenElements || isElementVisibleAndNotHidden(this._activeElement))) {\n this._activeElement.focus();\n return true;\n }\n else {\n var firstChild = this._root.current.firstChild;\n return this.focusElement(getNextElement(this._root.current, firstChild, true, undefined, undefined, undefined, undefined, undefined, bypassHiddenElements));\n }\n }\n return false;\n };\n /**\n * Sets focus to the last tabbable item in the zone.\n * @returns True if focus could be set to an active element, false if no operation was taken.\n */\n FocusZone.prototype.focusLast = function () {\n if (this._root.current) {\n var lastChild = this._root.current && this._root.current.lastChild;\n return this.focusElement(getPreviousElement(this._root.current, lastChild, true, true, true));\n }\n return false;\n };\n /**\n * Sets focus to a specific child element within the zone. This can be used in conjunction with\n * shouldReceiveFocus to create delayed focus scenarios (like animate the scroll position to the correct\n * location and then focus.)\n * @param element - The child element within the zone to focus.\n * @param forceAlignment - If true, focus alignment will be set according to the element provided.\n * @returns True if focus could be set to an active element, false if no operation was taken.\n */\n FocusZone.prototype.focusElement = function (element, forceAlignment) {\n // eslint-disable-next-line deprecation/deprecation\n var _a = this.props, onBeforeFocus = _a.onBeforeFocus, shouldReceiveFocus = _a.shouldReceiveFocus;\n if ((shouldReceiveFocus && !shouldReceiveFocus(element)) || (onBeforeFocus && !onBeforeFocus(element))) {\n return false;\n }\n if (element) {\n // when we set focus to a specific child, we should recalculate the alignment depending on its position.\n this._setActiveElement(element, forceAlignment);\n if (this._activeElement) {\n this._activeElement.focus();\n }\n return true;\n }\n return false;\n };\n /**\n * Forces horizontal alignment in the context of vertical arrowing to use specific point as the reference,\n * rather than a center based on the last horizontal motion.\n * @param point - the new reference point.\n */\n FocusZone.prototype.setFocusAlignment = function (point) {\n this._focusAlignment = point;\n };\n Object.defineProperty(FocusZone.prototype, \"defaultFocusElement\", {\n get: function () {\n return this._defaultFocusElement;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FocusZone.prototype, \"activeElement\", {\n get: function () {\n return this._activeElement;\n },\n enumerable: false,\n configurable: true\n });\n FocusZone.prototype._evaluateFocusBeforeRender = function () {\n var root = this._root.current;\n var doc = this._getDocument();\n if (doc) {\n var focusedElement = doc.activeElement;\n // Only update the index path if we are not parked on the root.\n if (focusedElement !== root) {\n var shouldRestoreFocus = elementContains(root, focusedElement, false);\n this._lastIndexPath = shouldRestoreFocus ? getElementIndexPath(root, focusedElement) : undefined;\n }\n }\n };\n /**\n * When focus is in the zone at render time but then all focusable elements are removed,\n * we \"park\" focus temporarily on the root. Once we update with focusable children, we restore\n * focus to the closest path from previous. If the user tabs away from the parked container,\n * we restore focusability to the pre-parked state.\n */\n FocusZone.prototype._setParkedFocus = function (isParked) {\n var root = this._root.current;\n if (root && this._isParked !== isParked) {\n this._isParked = isParked;\n if (isParked) {\n if (!this.props.allowFocusRoot) {\n this._parkedTabIndex = root.getAttribute('tabindex');\n root.setAttribute('tabindex', '-1');\n }\n root.focus();\n }\n else if (!this.props.allowFocusRoot) {\n if (this._parkedTabIndex) {\n root.setAttribute('tabindex', this._parkedTabIndex);\n this._parkedTabIndex = undefined;\n }\n else {\n root.removeAttribute('tabindex');\n }\n }\n }\n };\n FocusZone.prototype._setActiveElement = function (element, forceAlignment) {\n var previousActiveElement = this._activeElement;\n this._activeElement = element;\n if (previousActiveElement) {\n if (isElementFocusZone(previousActiveElement)) {\n this._updateTabIndexes(previousActiveElement);\n }\n previousActiveElement.tabIndex = -1;\n }\n if (this._activeElement) {\n if (!this._focusAlignment || forceAlignment) {\n this._setFocusAlignment(element, true, true);\n }\n this._activeElement.tabIndex = 0;\n }\n };\n FocusZone.prototype._preventDefaultWhenHandled = function (ev) {\n this.props.preventDefaultWhenHandled && ev.preventDefault();\n };\n /**\n * Walk up the dom try to find a focusable element.\n */\n FocusZone.prototype._tryInvokeClickForFocusable = function (targetElement, ev) {\n var target = targetElement;\n if (target === this._root.current) {\n return false;\n }\n do {\n if (target.tagName === 'BUTTON' ||\n target.tagName === 'A' ||\n target.tagName === 'INPUT' ||\n target.tagName === 'TEXTAREA' ||\n target.tagName === 'SUMMARY') {\n return false;\n }\n if (this._isImmediateDescendantOfZone(target) &&\n target.getAttribute(IS_FOCUSABLE_ATTRIBUTE) === 'true' &&\n target.getAttribute(IS_ENTER_DISABLED_ATTRIBUTE) !== 'true') {\n raiseClickFromKeyboardEvent(target, ev);\n return true;\n }\n target = getParent(target, ALLOW_VIRTUAL_ELEMENTS);\n } while (target !== this._root.current);\n return false;\n };\n /**\n * Traverse to find first child zone.\n */\n FocusZone.prototype._getFirstInnerZone = function (rootElement) {\n rootElement = rootElement || this._activeElement || this._root.current;\n if (!rootElement) {\n return null;\n }\n if (isElementFocusZone(rootElement)) {\n return _allInstances[rootElement.getAttribute(FOCUSZONE_ID_ATTRIBUTE)];\n }\n var child = rootElement.firstElementChild;\n while (child) {\n if (isElementFocusZone(child)) {\n return _allInstances[child.getAttribute(FOCUSZONE_ID_ATTRIBUTE)];\n }\n var match = this._getFirstInnerZone(child);\n if (match) {\n return match;\n }\n child = child.nextElementSibling;\n }\n return null;\n };\n FocusZone.prototype._moveFocus = function (isForward, \n // eslint-disable-next-line deprecation/deprecation\n getDistanceFromCenter, ev, useDefaultWrap) {\n if (useDefaultWrap === void 0) { useDefaultWrap = true; }\n var element = this._activeElement;\n var candidateDistance = -1;\n var candidateElement = undefined;\n var changedFocus = false;\n var isBidirectional = this.props.direction === FocusZoneDirection.bidirectional;\n if (!element || !this._root.current) {\n return false;\n }\n if (this._isElementInput(element)) {\n if (!this._shouldInputLoseFocus(element, isForward)) {\n return false;\n }\n }\n var activeRect = isBidirectional ? element.getBoundingClientRect() : null;\n do {\n element = (isForward ? getNextElement(this._root.current, element) : getPreviousElement(this._root.current, element));\n if (isBidirectional) {\n if (element) {\n var targetRect = element.getBoundingClientRect();\n // eslint-disable-next-line deprecation/deprecation\n var elementDistance = getDistanceFromCenter(activeRect, targetRect);\n if (elementDistance === -1 && candidateDistance === -1) {\n candidateElement = element;\n break;\n }\n if (elementDistance > -1 && (candidateDistance === -1 || elementDistance < candidateDistance)) {\n candidateDistance = elementDistance;\n candidateElement = element;\n }\n if (candidateDistance >= 0 && elementDistance < 0) {\n break;\n }\n }\n }\n else {\n candidateElement = element;\n break;\n }\n } while (element);\n // Focus the closest candidate\n if (candidateElement && candidateElement !== this._activeElement) {\n changedFocus = true;\n this.focusElement(candidateElement);\n }\n else if (this.props.isCircularNavigation && useDefaultWrap) {\n if (isForward) {\n return this.focusElement(getNextElement(this._root.current, this._root.current.firstElementChild, true));\n }\n else {\n return this.focusElement(getPreviousElement(this._root.current, this._root.current.lastElementChild, true, true, true));\n }\n }\n return changedFocus;\n };\n FocusZone.prototype._moveFocusDown = function () {\n var _this = this;\n var targetTop = -1;\n // eslint-disable-next-line deprecation/deprecation\n var leftAlignment = this._focusAlignment.left || this._focusAlignment.x || 0;\n if (\n // eslint-disable-next-line deprecation/deprecation\n this._moveFocus(true, function (activeRect, targetRect) {\n var distance = -1;\n // ClientRect values can be floats that differ by very small fractions of a decimal.\n // If the difference between top and bottom are within a pixel then we should treat\n // them as equivalent by using Math.floor. For instance 5.2222 and 5.222221 should be equivalent,\n // but without Math.Floor they will be handled incorrectly.\n var targetRectTop = Math.floor(targetRect.top);\n var activeRectBottom = Math.floor(activeRect.bottom);\n if (targetRectTop < activeRectBottom) {\n if (!_this._shouldWrapFocus(_this._activeElement, NO_VERTICAL_WRAP)) {\n return LARGE_NEGATIVE_DISTANCE_FROM_CENTER;\n }\n return LARGE_DISTANCE_FROM_CENTER;\n }\n if ((targetTop === -1 && targetRectTop >= activeRectBottom) || targetRectTop === targetTop) {\n targetTop = targetRectTop;\n if (leftAlignment >= targetRect.left && leftAlignment <= targetRect.left + targetRect.width) {\n distance = 0;\n }\n else {\n distance = Math.abs(targetRect.left + targetRect.width / 2 - leftAlignment);\n }\n }\n return distance;\n })) {\n this._setFocusAlignment(this._activeElement, false, true);\n return true;\n }\n return false;\n };\n FocusZone.prototype._moveFocusUp = function () {\n var _this = this;\n var targetTop = -1;\n // eslint-disable-next-line deprecation/deprecation\n var leftAlignment = this._focusAlignment.left || this._focusAlignment.x || 0;\n if (\n // eslint-disable-next-line deprecation/deprecation\n this._moveFocus(false, function (activeRect, targetRect) {\n var distance = -1;\n // ClientRect values can be floats that differ by very small fractions of a decimal.\n // If the difference between top and bottom are within a pixel then we should treat\n // them as equivalent by using Math.floor. For instance 5.2222 and 5.222221 should be equivalent,\n // but without Math.Floor they will be handled incorrectly.\n var targetRectBottom = Math.floor(targetRect.bottom);\n var targetRectTop = Math.floor(targetRect.top);\n var activeRectTop = Math.floor(activeRect.top);\n if (targetRectBottom > activeRectTop) {\n if (!_this._shouldWrapFocus(_this._activeElement, NO_VERTICAL_WRAP)) {\n return LARGE_NEGATIVE_DISTANCE_FROM_CENTER;\n }\n return LARGE_DISTANCE_FROM_CENTER;\n }\n if ((targetTop === -1 && targetRectBottom <= activeRectTop) || targetRectTop === targetTop) {\n targetTop = targetRectTop;\n if (leftAlignment >= targetRect.left && leftAlignment <= targetRect.left + targetRect.width) {\n distance = 0;\n }\n else {\n distance = Math.abs(targetRect.left + targetRect.width / 2 - leftAlignment);\n }\n }\n return distance;\n })) {\n this._setFocusAlignment(this._activeElement, false, true);\n return true;\n }\n return false;\n };\n FocusZone.prototype._moveFocusLeft = function (theme) {\n var _this = this;\n var shouldWrap = this._shouldWrapFocus(this._activeElement, NO_HORIZONTAL_WRAP);\n if (this._moveFocus(getRTL(theme), \n // eslint-disable-next-line deprecation/deprecation\n function (activeRect, targetRect) {\n var distance = -1;\n var topBottomComparison;\n if (getRTL(theme)) {\n // When in RTL, this comparison should be the same as the one in _moveFocusRight for LTR.\n // Going left at a leftmost rectangle will go down a line instead of up a line like in LTR.\n // This is important, because we want to be comparing the top of the target rect\n // with the bottom of the active rect.\n topBottomComparison = parseFloat(targetRect.top.toFixed(3)) < parseFloat(activeRect.bottom.toFixed(3));\n }\n else {\n topBottomComparison = parseFloat(targetRect.bottom.toFixed(3)) > parseFloat(activeRect.top.toFixed(3));\n }\n if (topBottomComparison &&\n targetRect.right <= activeRect.right &&\n _this.props.direction !== FocusZoneDirection.vertical) {\n distance = activeRect.right - targetRect.right;\n }\n else if (!shouldWrap) {\n distance = LARGE_NEGATIVE_DISTANCE_FROM_CENTER;\n }\n return distance;\n }, undefined /*ev*/, shouldWrap)) {\n this._setFocusAlignment(this._activeElement, true, false);\n return true;\n }\n return false;\n };\n FocusZone.prototype._moveFocusRight = function (theme) {\n var _this = this;\n var shouldWrap = this._shouldWrapFocus(this._activeElement, NO_HORIZONTAL_WRAP);\n if (this._moveFocus(!getRTL(theme), \n // eslint-disable-next-line deprecation/deprecation\n function (activeRect, targetRect) {\n var distance = -1;\n var topBottomComparison;\n if (getRTL(theme)) {\n // When in RTL, this comparison should be the same as the one in _moveFocusLeft for LTR.\n // Going right at a rightmost rectangle will go up a line instead of down a line like in LTR.\n // This is important, because we want to be comparing the bottom of the target rect\n // with the top of the active rect.\n topBottomComparison = parseFloat(targetRect.bottom.toFixed(3)) > parseFloat(activeRect.top.toFixed(3));\n }\n else {\n topBottomComparison = parseFloat(targetRect.top.toFixed(3)) < parseFloat(activeRect.bottom.toFixed(3));\n }\n if (topBottomComparison &&\n targetRect.left >= activeRect.left &&\n _this.props.direction !== FocusZoneDirection.vertical) {\n distance = targetRect.left - activeRect.left;\n }\n else if (!shouldWrap) {\n distance = LARGE_NEGATIVE_DISTANCE_FROM_CENTER;\n }\n return distance;\n }, undefined /*ev*/, shouldWrap)) {\n this._setFocusAlignment(this._activeElement, true, false);\n return true;\n }\n return false;\n };\n FocusZone.prototype._moveFocusPaging = function (isForward, useDefaultWrap) {\n if (useDefaultWrap === void 0) { useDefaultWrap = true; }\n var element = this._activeElement;\n if (!element || !this._root.current) {\n return false;\n }\n if (this._isElementInput(element)) {\n if (!this._shouldInputLoseFocus(element, isForward)) {\n return false;\n }\n }\n var scrollableParent = findScrollableParent(element);\n if (!scrollableParent) {\n return false;\n }\n var candidateDistance = -1;\n var candidateElement = undefined;\n var targetTop = -1;\n var targetBottom = -1;\n var pagesize = scrollableParent.clientHeight;\n var activeRect = element.getBoundingClientRect();\n do {\n element = isForward\n ? getNextElement(this._root.current, element)\n : getPreviousElement(this._root.current, element);\n if (element) {\n var targetRect = element.getBoundingClientRect();\n var targetRectTop = Math.floor(targetRect.top);\n var activeRectBottom = Math.floor(activeRect.bottom);\n var targetRectBottom = Math.floor(targetRect.bottom);\n var activeRectTop = Math.floor(activeRect.top);\n var elementDistance = this._getHorizontalDistanceFromCenter(isForward, activeRect, targetRect);\n var isElementPassedPageSizeOnPagingDown = isForward && targetRectTop > activeRectBottom + pagesize;\n var isElementPassedPageSizeOnPagingUp = !isForward && targetRectBottom < activeRectTop - pagesize;\n if (isElementPassedPageSizeOnPagingDown || isElementPassedPageSizeOnPagingUp) {\n break;\n }\n if (elementDistance > -1) {\n // for paging down\n if (isForward && targetRectTop > targetTop) {\n targetTop = targetRectTop;\n candidateDistance = elementDistance;\n candidateElement = element;\n }\n else if (!isForward && targetRectBottom < targetBottom) {\n // for paging up\n targetBottom = targetRectBottom;\n candidateDistance = elementDistance;\n candidateElement = element;\n }\n else if (candidateDistance === -1 || elementDistance <= candidateDistance) {\n candidateDistance = elementDistance;\n candidateElement = element;\n }\n }\n }\n } while (element);\n var changedFocus = false;\n // Focus the closest candidate\n if (candidateElement && candidateElement !== this._activeElement) {\n changedFocus = true;\n this.focusElement(candidateElement);\n this._setFocusAlignment(candidateElement, false, true);\n }\n else if (this.props.isCircularNavigation && useDefaultWrap) {\n if (isForward) {\n return this.focusElement(getNextElement(this._root.current, this._root.current.firstElementChild, true));\n }\n return this.focusElement(getPreviousElement(this._root.current, this._root.current.lastElementChild, true, true, true));\n }\n return changedFocus;\n };\n FocusZone.prototype._setFocusAlignment = function (element, isHorizontal, isVertical) {\n if (this.props.direction === FocusZoneDirection.bidirectional &&\n (!this._focusAlignment || isHorizontal || isVertical)) {\n var rect = element.getBoundingClientRect();\n var left = rect.left + rect.width / 2;\n var top_1 = rect.top + rect.height / 2;\n if (!this._focusAlignment) {\n this._focusAlignment = { left: left, top: top_1 };\n }\n if (isHorizontal) {\n this._focusAlignment.left = left;\n }\n if (isVertical) {\n this._focusAlignment.top = top_1;\n }\n }\n };\n FocusZone.prototype._isImmediateDescendantOfZone = function (element) {\n return this._getOwnerZone(element) === this._root.current;\n };\n FocusZone.prototype._getOwnerZone = function (element) {\n var parentElement = getParent(element, ALLOW_VIRTUAL_ELEMENTS);\n while (parentElement && parentElement !== this._root.current && parentElement !== this._getDocument().body) {\n if (isElementFocusZone(parentElement)) {\n return parentElement;\n }\n parentElement = getParent(parentElement, ALLOW_VIRTUAL_ELEMENTS);\n }\n return parentElement;\n };\n FocusZone.prototype._updateTabIndexes = function (element) {\n if (!this._activeElement &&\n this.props.defaultTabbableElement &&\n typeof this.props.defaultTabbableElement === 'function') {\n this._activeElement = this.props.defaultTabbableElement(this._root.current);\n }\n if (!element && this._root.current) {\n this._defaultFocusElement = null;\n element = this._root.current;\n if (this._activeElement && !elementContains(element, this._activeElement)) {\n this._activeElement = null;\n }\n }\n // If active element changes state to disabled, set it to null.\n // Otherwise, we lose keyboard accessibility to other elements in focus zone.\n if (this._activeElement && !isElementTabbable(this._activeElement, undefined, this._inShadowRoot)) {\n this._activeElement = null;\n }\n var childNodes = element && element.children;\n for (var childIndex = 0; childNodes && childIndex < childNodes.length; childIndex++) {\n var child = childNodes[childIndex];\n if (!isElementFocusZone(child)) {\n // If the item is explicitly set to not be focusable then TABINDEX needs to be set to -1.\n if (child.getAttribute && child.getAttribute(IS_FOCUSABLE_ATTRIBUTE) === 'false') {\n child.setAttribute(TABINDEX, '-1');\n }\n if (isElementTabbable(child, undefined, this._inShadowRoot)) {\n if (this.props.disabled) {\n child.setAttribute(TABINDEX, '-1');\n }\n else if (!this._isInnerZone &&\n ((!this._activeElement && !this._defaultFocusElement) || this._activeElement === child)) {\n this._defaultFocusElement = child;\n if (child.getAttribute(TABINDEX) !== '0') {\n child.setAttribute(TABINDEX, '0');\n }\n }\n else if (child.getAttribute(TABINDEX) !== '-1') {\n child.setAttribute(TABINDEX, '-1');\n }\n }\n else if (child.tagName === 'svg' && child.getAttribute('focusable') !== 'false') {\n // Disgusting IE hack. Sad face.\n child.setAttribute('focusable', 'false');\n }\n }\n else if (child.getAttribute(IS_FOCUSABLE_ATTRIBUTE) === 'true') {\n if (!this._isInnerZone &&\n ((!this._activeElement && !this._defaultFocusElement) || this._activeElement === child)) {\n this._defaultFocusElement = child;\n if (child.getAttribute(TABINDEX) !== '0') {\n child.setAttribute(TABINDEX, '0');\n }\n }\n else if (child.getAttribute(TABINDEX) !== '-1') {\n child.setAttribute(TABINDEX, '-1');\n }\n }\n this._updateTabIndexes(child);\n }\n };\n FocusZone.prototype._isContentEditableElement = function (element) {\n return element && element.getAttribute('contenteditable') === 'true';\n };\n FocusZone.prototype._isElementInput = function (element) {\n if (element &&\n element.tagName &&\n (element.tagName.toLowerCase() === 'input' || element.tagName.toLowerCase() === 'textarea')) {\n return true;\n }\n return false;\n };\n FocusZone.prototype._shouldInputLoseFocus = function (element, isForward) {\n // If a tab was used, we want to focus on the next element.\n if (!this._processingTabKey &&\n element &&\n element.type &&\n ALLOWED_INPUT_TYPES.indexOf(element.type.toLowerCase()) > -1) {\n var selectionStart = element.selectionStart;\n var selectionEnd = element.selectionEnd;\n var isRangeSelected = selectionStart !== selectionEnd;\n var inputValue = element.value;\n var isReadonly = element.readOnly;\n // We shouldn't lose focus in the following cases:\n // 1. There is range selected.\n // 2. When selection start is larger than 0 and it is backward and not readOnly.\n // 3. when selection start is not the end of length, it is forward and not readOnly.\n // 4. We press any of the arrow keys when our handleTabKey isn't none or undefined (only losing focus if we hit\n // tab) and if shouldInputLoseFocusOnArrowKey is defined, if scenario prefers to not loose the focus which is\n // determined by calling the callback shouldInputLoseFocusOnArrowKey\n if (isRangeSelected ||\n (selectionStart > 0 && !isForward && !isReadonly) ||\n (selectionStart !== inputValue.length && isForward && !isReadonly) ||\n (!!this.props.handleTabKey &&\n !(this.props.shouldInputLoseFocusOnArrowKey && this.props.shouldInputLoseFocusOnArrowKey(element)))) {\n return false;\n }\n }\n return true;\n };\n FocusZone.prototype._shouldWrapFocus = function (element, noWrapDataAttribute) {\n return this.props.checkForNoWrap ? shouldWrapFocus(element, noWrapDataAttribute) : true;\n };\n /**\n * Returns true if the element is a descendant of the FocusZone through a React portal.\n */\n FocusZone.prototype._portalContainsElement = function (element) {\n return element && !!this._root.current && portalContainsElement(element, this._root.current);\n };\n FocusZone.prototype._getDocument = function () {\n return getDocument(this._root.current);\n };\n FocusZone.contextType = MergeStylesShadowRootContext;\n FocusZone.defaultProps = {\n isCircularNavigation: false,\n direction: FocusZoneDirection.bidirectional,\n shouldRaiseClicks: true,\n // Hardcoding uncontrolled flag for proper interop with FluentUI V9.\n 'data-tabster': '{\"uncontrolled\": {}}',\n };\n return FocusZone;\n}(React.Component));\nexport { FocusZone };\n//# sourceMappingURL=FocusZone.js.map","/**\n * @deprecated Icon type is inferred based on presence of `IIconProps.imageProps`\n * {@docCategory Icon}\n */\nexport var IconType;\n(function (IconType) {\n /**\n * Render using the fabric icon font.\n * @deprecated Icon type is inferred based on presence of `IIconProps.imageProps`\n */\n IconType[IconType[\"default\"] = 0] = \"default\";\n /**\n * Render using an image, where imageProps would be used.\n * @deprecated Icon type is inferred based on presence of `IIconProps.imageProps`\n */\n IconType[IconType[\"image\"] = 1] = \"image\";\n /**\n * @deprecated Icon type is inferred based on presence of `IIconProps.imageProps`\n */\n IconType[IconType[\"Default\"] = 100000] = \"Default\";\n /**\n * @deprecated Icon type is inferred based on presence of `IIconProps.imageProps`\n */\n IconType[IconType[\"Image\"] = 100001] = \"Image\";\n})(IconType || (IconType = {}));\n//# sourceMappingURL=Icon.types.js.map","/**\n * The possible methods that can be used to fit the image.\n * {@docCategory Image}\n */\nexport var ImageFit;\n(function (ImageFit) {\n /**\n * The image is not scaled. The image is centered and cropped within the content box.\n */\n ImageFit[ImageFit[\"center\"] = 0] = \"center\";\n /**\n * The image is scaled to maintain its aspect ratio while being fully contained within the frame. The image will\n * be centered horizontally and vertically within the frame. The space in the top and bottom or in the sides of\n * the frame will be empty depending on the difference in aspect ratio between the image and the frame.\n */\n ImageFit[ImageFit[\"contain\"] = 1] = \"contain\";\n /**\n * The image is scaled to maintain its aspect ratio while filling the frame. Portions of the image will be cropped\n * from the top and bottom, or the sides, depending on the difference in aspect ratio between the image and the frame.\n */\n ImageFit[ImageFit[\"cover\"] = 2] = \"cover\";\n /**\n * Neither the image nor the frame are scaled. If their sizes do not match, the image will either be cropped or the\n * frame will have empty space.\n */\n ImageFit[ImageFit[\"none\"] = 3] = \"none\";\n /**\n * The image will be centered horizontally and vertically within the frame and maintains its aspect ratio. It will\n * behave as ImageFit.center if the image's natural height or width is less than the Image frame's height or width,\n * but if both natural height and width are larger than the frame it will behave as ImageFit.cover.\n */\n ImageFit[ImageFit[\"centerCover\"] = 4] = \"centerCover\";\n /**\n * The image will be centered horizontally and vertically within the frame and maintains its aspect ratio. It will\n * behave as ImageFit.center if the image's natural height and width is less than the Image frame's height and width,\n * but if either natural height or width are larger than the frame it will behave as ImageFit.contain.\n */\n ImageFit[ImageFit[\"centerContain\"] = 5] = \"centerContain\";\n})(ImageFit || (ImageFit = {}));\n/**\n * The cover style to be used on the image\n * {@docCategory Image}\n */\nexport var ImageCoverStyle;\n(function (ImageCoverStyle) {\n /**\n * The image will be shown at 100% height of container and the width will be scaled accordingly\n */\n ImageCoverStyle[ImageCoverStyle[\"landscape\"] = 0] = \"landscape\";\n /**\n * The image will be shown at 100% width of container and the height will be scaled accordingly\n */\n ImageCoverStyle[ImageCoverStyle[\"portrait\"] = 1] = \"portrait\";\n})(ImageCoverStyle || (ImageCoverStyle = {}));\n/**\n * {@docCategory Image}\n */\nexport var ImageLoadState;\n(function (ImageLoadState) {\n /**\n * The image has not yet been loaded, and there is no error yet.\n */\n ImageLoadState[ImageLoadState[\"notLoaded\"] = 0] = \"notLoaded\";\n /**\n * The image has been loaded successfully.\n */\n ImageLoadState[ImageLoadState[\"loaded\"] = 1] = \"loaded\";\n /**\n * An error has been encountered while loading the image.\n */\n ImageLoadState[ImageLoadState[\"error\"] = 2] = \"error\";\n /**\n * @deprecated Not used. Use `onLoadingStateChange` and re-render the Image with a different src.\n */\n ImageLoadState[ImageLoadState[\"errorLoaded\"] = 3] = \"errorLoaded\";\n})(ImageLoadState || (ImageLoadState = {}));\n//# sourceMappingURL=Image.types.js.map","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { classNamesFunction, getNativeProps, imgProperties } from '../../Utilities';\nimport { ImageCoverStyle, ImageFit, ImageLoadState } from './Image.types';\nimport { useIsomorphicLayoutEffect, useMergedRefs } from '@fluentui/react-hooks';\nvar getClassNames = classNamesFunction();\nvar SVG_REGEX = /\\.svg$/i;\nvar KEY_PREFIX = 'fabricImage';\nfunction useLoadState(props, imageElement) {\n var onLoadingStateChange = props.onLoadingStateChange, onLoad = props.onLoad, onError = props.onError, src = props.src;\n var _a = React.useState(ImageLoadState.notLoaded), loadState = _a[0], setLoadState = _a[1];\n useIsomorphicLayoutEffect(function () {\n // If the src property changes, reset the load state\n // (does nothing if the load state is already notLoaded)\n setLoadState(ImageLoadState.notLoaded);\n }, [src]);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- intended to run every render\n React.useEffect(function () {\n if (loadState === ImageLoadState.notLoaded) {\n // testing if naturalWidth and naturalHeight are greater than zero is better than checking\n // .complete, because .complete will also be set to true if the image breaks. However,\n // for some browsers, SVG images do not have a naturalWidth or naturalHeight, so fall back\n // to checking .complete for these images.\n var isLoaded = imageElement.current\n ? (src && imageElement.current.naturalWidth > 0 && imageElement.current.naturalHeight > 0) ||\n (imageElement.current.complete && SVG_REGEX.test(src))\n : false;\n if (isLoaded) {\n setLoadState(ImageLoadState.loaded);\n }\n }\n });\n React.useEffect(function () {\n onLoadingStateChange === null || onLoadingStateChange === void 0 ? void 0 : onLoadingStateChange(loadState);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- should only run when loadState changes\n }, [loadState]);\n var onImageLoaded = React.useCallback(function (ev) {\n onLoad === null || onLoad === void 0 ? void 0 : onLoad(ev);\n if (src) {\n setLoadState(ImageLoadState.loaded);\n }\n }, [src, onLoad]);\n var onImageError = React.useCallback(function (ev) {\n onError === null || onError === void 0 ? void 0 : onError(ev);\n setLoadState(ImageLoadState.error);\n }, [onError]);\n return [loadState, onImageLoaded, onImageError];\n}\nexport var ImageBase = React.forwardRef(function (props, forwardedRef) {\n var frameElement = React.useRef();\n var imageElement = React.useRef();\n var _a = useLoadState(props, imageElement), loadState = _a[0], onImageLoaded = _a[1], onImageError = _a[2];\n var imageProps = getNativeProps(props, imgProperties, [\n 'width',\n 'height',\n ]);\n var src = props.src, alt = props.alt, width = props.width, height = props.height, _b = props.shouldFadeIn, shouldFadeIn = _b === void 0 ? true : _b, shouldStartVisible = props.shouldStartVisible, className = props.className, imageFit = props.imageFit, role = props.role, maximizeFrame = props.maximizeFrame, styles = props.styles, theme = props.theme, loading = props.loading;\n var coverStyle = useCoverStyle(props, loadState, imageElement, frameElement);\n var classNames = getClassNames(styles, {\n theme: theme,\n className: className,\n width: width,\n height: height,\n maximizeFrame: maximizeFrame,\n shouldFadeIn: shouldFadeIn,\n shouldStartVisible: shouldStartVisible,\n isLoaded: loadState === ImageLoadState.loaded || (loadState === ImageLoadState.notLoaded && props.shouldStartVisible),\n isLandscape: coverStyle === ImageCoverStyle.landscape,\n isCenter: imageFit === ImageFit.center,\n isCenterContain: imageFit === ImageFit.centerContain,\n isCenterCover: imageFit === ImageFit.centerCover,\n isContain: imageFit === ImageFit.contain,\n isCover: imageFit === ImageFit.cover,\n isNone: imageFit === ImageFit.none,\n isError: loadState === ImageLoadState.error,\n isNotImageFit: imageFit === undefined,\n });\n // If image dimensions aren't specified, the natural size of the image is used.\n return (React.createElement(\"div\", { className: classNames.root, style: { width: width, height: height }, ref: frameElement },\n React.createElement(\"img\", __assign({}, imageProps, { onLoad: onImageLoaded, onError: onImageError, key: KEY_PREFIX + props.src || '', className: classNames.image, ref: useMergedRefs(imageElement, forwardedRef), src: src, alt: alt, role: role, loading: loading }))));\n});\nImageBase.displayName = 'ImageBase';\nfunction useCoverStyle(props, loadState, imageElement, frameElement) {\n var previousLoadState = React.useRef(loadState);\n var coverStyle = React.useRef();\n if (coverStyle === undefined ||\n (previousLoadState.current === ImageLoadState.notLoaded && loadState === ImageLoadState.loaded)) {\n coverStyle.current = computeCoverStyle(props, loadState, imageElement, frameElement);\n }\n previousLoadState.current = loadState;\n return coverStyle.current;\n}\nfunction computeCoverStyle(props, loadState, imageElement, frameElement) {\n var imageFit = props.imageFit, width = props.width, height = props.height;\n // Do not compute cover style if it was already specified in props\n if (props.coverStyle !== undefined) {\n return props.coverStyle;\n }\n else if (loadState === ImageLoadState.loaded &&\n (imageFit === ImageFit.cover ||\n imageFit === ImageFit.contain ||\n imageFit === ImageFit.centerContain ||\n imageFit === ImageFit.centerCover) &&\n imageElement.current &&\n frameElement.current) {\n // Determine the desired ratio using the width and height props.\n // If those props aren't available, measure measure the frame.\n var desiredRatio = void 0;\n if (typeof width === 'number' &&\n typeof height === 'number' &&\n imageFit !== ImageFit.centerContain &&\n imageFit !== ImageFit.centerCover) {\n desiredRatio = width / height;\n }\n else {\n desiredRatio = frameElement.current.clientWidth / frameElement.current.clientHeight;\n }\n // Examine the source image to determine its original ratio.\n var naturalRatio = imageElement.current.naturalWidth / imageElement.current.naturalHeight;\n // Should we crop from the top or the sides?\n if (naturalRatio > desiredRatio) {\n return ImageCoverStyle.landscape;\n }\n }\n return ImageCoverStyle.portrait;\n}\n//# sourceMappingURL=Image.base.js.map","import { AnimationClassNames, getGlobalClassNames } from '../../Styling';\nimport { getWindow } from '../../Utilities';\nvar GlobalClassNames = {\n root: 'ms-Image',\n rootMaximizeFrame: 'ms-Image--maximizeFrame',\n image: 'ms-Image-image',\n imageCenter: 'ms-Image-image--center',\n imageContain: 'ms-Image-image--contain',\n imageCover: 'ms-Image-image--cover',\n imageCenterContain: 'ms-Image-image--centerContain',\n imageCenterCover: 'ms-Image-image--centerCover',\n imageNone: 'ms-Image-image--none',\n imageLandscape: 'ms-Image-image--landscape',\n imagePortrait: 'ms-Image-image--portrait',\n};\nexport var getStyles = function (props) {\n var className = props.className, width = props.width, height = props.height, maximizeFrame = props.maximizeFrame, isLoaded = props.isLoaded, shouldFadeIn = props.shouldFadeIn, shouldStartVisible = props.shouldStartVisible, isLandscape = props.isLandscape, isCenter = props.isCenter, isContain = props.isContain, isCover = props.isCover, isCenterContain = props.isCenterContain, isCenterCover = props.isCenterCover, isNone = props.isNone, isError = props.isError, isNotImageFit = props.isNotImageFit, theme = props.theme;\n var classNames = getGlobalClassNames(GlobalClassNames, theme);\n var ImageFitStyles = {\n position: 'absolute',\n left: '50% /* @noflip */',\n top: '50%',\n transform: 'translate(-50%,-50%)', // @todo test RTL renders transform: translate(50%,-50%);\n };\n // Cut the mustard using msMaxTouchPoints to detect IE11 which does not support CSS object-fit\n var window = getWindow();\n var supportsObjectFit = window !== undefined &&\n // eslint-disable-next-line @fluentui/max-len\n // cast needed as vendor prefixed `msMaxTouchPoints` api is no longer part of TS lib declaration - introduced with TS 4.4\n window.navigator.msMaxTouchPoints === undefined;\n var fallbackObjectFitStyles = (isContain && isLandscape) || (isCover && !isLandscape)\n ? { width: '100%', height: 'auto' }\n : { width: 'auto', height: '100%' };\n return {\n root: [\n classNames.root,\n theme.fonts.medium,\n {\n overflow: 'hidden',\n },\n maximizeFrame && [\n classNames.rootMaximizeFrame,\n {\n height: '100%',\n width: '100%',\n },\n ],\n isLoaded && shouldFadeIn && !shouldStartVisible && AnimationClassNames.fadeIn400,\n (isCenter || isContain || isCover || isCenterContain || isCenterCover) && {\n position: 'relative',\n },\n className,\n ],\n image: [\n classNames.image,\n {\n display: 'block',\n opacity: 0,\n },\n isLoaded && [\n 'is-loaded',\n {\n opacity: 1,\n },\n ],\n isCenter && [classNames.imageCenter, ImageFitStyles],\n isContain && [\n classNames.imageContain,\n supportsObjectFit && {\n width: '100%',\n height: '100%',\n objectFit: 'contain',\n },\n !supportsObjectFit && fallbackObjectFitStyles,\n !supportsObjectFit && ImageFitStyles,\n ],\n isCover && [\n classNames.imageCover,\n supportsObjectFit && {\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n },\n !supportsObjectFit && fallbackObjectFitStyles,\n !supportsObjectFit && ImageFitStyles,\n ],\n isCenterContain && [\n classNames.imageCenterContain,\n isLandscape && {\n maxWidth: '100%',\n },\n !isLandscape && {\n maxHeight: '100%',\n },\n ImageFitStyles,\n ],\n isCenterCover && [\n classNames.imageCenterCover,\n isLandscape && {\n maxHeight: '100%',\n },\n !isLandscape && {\n maxWidth: '100%',\n },\n ImageFitStyles,\n ],\n isNone && [\n classNames.imageNone,\n {\n width: 'auto',\n height: 'auto',\n },\n ],\n isNotImageFit && [\n !!width &&\n !height && {\n height: 'auto',\n width: '100%',\n },\n !width &&\n !!height && {\n height: '100%',\n width: 'auto',\n },\n !!width &&\n !!height && {\n height: '100%',\n width: '100%',\n },\n ],\n isLandscape && classNames.imageLandscape,\n !isLandscape && classNames.imagePortrait,\n !isLoaded && 'is-notLoaded',\n shouldFadeIn && 'is-fadeIn',\n isError && 'is-error',\n ],\n };\n};\n//# sourceMappingURL=Image.styles.js.map","import { styled } from '../../Utilities';\nimport { ImageBase } from './Image.base';\nimport { getStyles } from './Image.styles';\nexport var Image = styled(ImageBase, getStyles, undefined, {\n scope: 'Image',\n}, true);\nImage.displayName = 'Image';\n//# sourceMappingURL=Image.js.map","import { mergeStyleSets } from '../../Styling';\n/** Class names used in themeable and non-themeable Icon components */\nexport var classNames = mergeStyleSets({\n root: {\n display: 'inline-block',\n textDecoration: 'inherit',\n },\n placeholder: [\n 'ms-Icon-placeHolder',\n {\n width: '1em',\n },\n ],\n image: [\n 'ms-Icon-imageContainer',\n {\n overflow: 'hidden',\n },\n ],\n});\n/** Class name used only in non-themeable Icon components */\nexport var MS_ICON = 'ms-Icon';\nexport var getStyles = function (props) {\n var className = props.className, iconClassName = props.iconClassName, isPlaceholder = props.isPlaceholder, isImage = props.isImage, styles = props.styles;\n return {\n root: [\n isPlaceholder && classNames.placeholder,\n classNames.root,\n isImage && classNames.image,\n iconClassName,\n className,\n styles && styles.root,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n styles && styles.imageContainer,\n ],\n };\n};\n//# sourceMappingURL=Icon.styles.js.map","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { classNames, MS_ICON } from './Icon.styles';\nimport { css, getNativeProps, htmlElementProperties, memoizeFunction } from '../../Utilities';\nimport { getIcon } from '../../Styling';\nexport var getIconContent = memoizeFunction(function (iconName) {\n var _a = getIcon(iconName) || {\n subset: {},\n code: undefined,\n }, code = _a.code, subset = _a.subset;\n if (!code) {\n return null;\n }\n return {\n children: code,\n iconClassName: subset.className,\n fontFamily: subset.fontFace && subset.fontFace.fontFamily,\n mergeImageProps: subset.mergeImageProps,\n };\n}, undefined, true /*ignoreNullOrUndefinedResult */);\n/**\n * Fast icon component which only supports font glyphs (not images) and can't be targeted by customizations.\n * To style the icon, use `className` or reference `ms-Icon` in CSS.\n * {@docCategory Icon}\n */\nexport var FontIcon = function (props) {\n var iconName = props.iconName, className = props.className, _a = props.style, style = _a === void 0 ? {} : _a;\n var iconContent = getIconContent(iconName) || {};\n var iconClassName = iconContent.iconClassName, children = iconContent.children, fontFamily = iconContent.fontFamily, mergeImageProps = iconContent.mergeImageProps;\n var nativeProps = getNativeProps(props, htmlElementProperties);\n var accessibleName = props['aria-label'] || props.title;\n var containerProps = props['aria-label'] || props['aria-labelledby'] || props.title\n ? {\n role: mergeImageProps ? undefined : 'img',\n }\n : {\n 'aria-hidden': true,\n };\n var finalChildren = children;\n if (mergeImageProps) {\n if (typeof children === 'object' && typeof children.props === 'object' && accessibleName) {\n finalChildren = React.cloneElement(children, { alt: accessibleName });\n }\n }\n return (React.createElement(\"i\", __assign({ \"data-icon-name\": iconName }, containerProps, nativeProps, (mergeImageProps\n ? {\n title: undefined,\n 'aria-label': undefined,\n }\n : {}), { className: css(MS_ICON, classNames.root, iconClassName, !iconName && classNames.placeholder, className), \n // Apply the font family this way to ensure it doesn't get overridden by Fabric Core ms-Icon styles\n // https://github.com/microsoft/fluentui/issues/10449\n style: __assign({ fontFamily: fontFamily }, style) }), finalChildren));\n};\n/**\n * Memoized helper for rendering a FontIcon.\n * @param iconName - The name of the icon to use from the icon font.\n * @param className - Class name for styling the icon.\n * @param ariaLabel - Label for the icon for the benefit of screen readers.\n * {@docCategory Icon}\n */\nexport var getFontIcon = memoizeFunction(function (iconName, className, ariaLabel) {\n return FontIcon({ iconName: iconName, className: className, 'aria-label': ariaLabel });\n});\n//# sourceMappingURL=FontIcon.js.map","import { __assign, __extends } from \"tslib\";\nimport * as React from 'react';\nimport { IconType } from './Icon.types';\nimport { Image } from '../Image/Image';\nimport { ImageLoadState } from '../Image/Image.types';\nimport { getNativeProps, htmlElementProperties, classNamesFunction } from '../../Utilities';\nimport { getIconContent } from './FontIcon';\nvar getClassNames = classNamesFunction({\n // Icon is used a lot by other components.\n // It's likely to see expected cases which pass different className to the Icon.\n // Therefore setting a larger cache size.\n cacheSize: 100,\n});\nvar IconBase = /** @class */ (function (_super) {\n __extends(IconBase, _super);\n function IconBase(props) {\n var _this = _super.call(this, props) || this;\n _this._onImageLoadingStateChange = function (state) {\n if (_this.props.imageProps && _this.props.imageProps.onLoadingStateChange) {\n _this.props.imageProps.onLoadingStateChange(state);\n }\n if (state === ImageLoadState.error) {\n _this.setState({ imageLoadError: true });\n }\n };\n _this.state = {\n imageLoadError: false,\n };\n return _this;\n }\n IconBase.prototype.render = function () {\n var _a = this.props, children = _a.children, className = _a.className, styles = _a.styles, iconName = _a.iconName, imageErrorAs = _a.imageErrorAs, theme = _a.theme;\n var isPlaceholder = typeof iconName === 'string' && iconName.length === 0;\n var isImage = \n // eslint-disable-next-line @typescript-eslint/no-deprecated\n !!this.props.imageProps || this.props.iconType === IconType.image || this.props.iconType === IconType.Image;\n var iconContent = getIconContent(iconName) || {};\n var iconClassName = iconContent.iconClassName, iconContentChildren = iconContent.children, mergeImageProps = iconContent.mergeImageProps;\n var classNames = getClassNames(styles, {\n theme: theme,\n className: className,\n iconClassName: iconClassName,\n isImage: isImage,\n isPlaceholder: isPlaceholder,\n });\n var RootType = isImage ? 'span' : 'i';\n var nativeProps = getNativeProps(this.props, htmlElementProperties, [\n 'aria-label',\n ]);\n var imageLoadError = this.state.imageLoadError;\n var imageProps = __assign(__assign({}, this.props.imageProps), { onLoadingStateChange: this._onImageLoadingStateChange });\n var ImageType = (imageLoadError && imageErrorAs) || Image;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n var ariaLabel = this.props['aria-label'] || this.props.ariaLabel;\n var accessibleName = imageProps.alt || ariaLabel || this.props.title;\n var hasName = !!(accessibleName ||\n this.props['aria-labelledby'] ||\n imageProps['aria-label'] ||\n imageProps['aria-labelledby']);\n var containerProps = hasName\n ? {\n role: isImage || mergeImageProps ? undefined : 'img',\n 'aria-label': isImage || mergeImageProps ? undefined : accessibleName,\n }\n : {\n 'aria-hidden': true,\n };\n var finalIconContentChildren = iconContentChildren;\n if (mergeImageProps && iconContentChildren && typeof iconContentChildren === 'object' && accessibleName) {\n finalIconContentChildren = React.cloneElement(iconContentChildren, {\n alt: accessibleName,\n });\n }\n return (React.createElement(RootType, __assign({ \"data-icon-name\": iconName }, containerProps, nativeProps, (mergeImageProps\n ? {\n title: undefined,\n 'aria-label': undefined,\n }\n : {}), { className: classNames.root }), isImage ? React.createElement(ImageType, __assign({}, imageProps)) : children || finalIconContentChildren));\n };\n return IconBase;\n}(React.Component));\nexport { IconBase };\n//# sourceMappingURL=Icon.base.js.map","import { styled } from '../../Utilities';\nimport { IconBase } from './Icon.base';\nimport { getStyles } from './Icon.styles';\n/**\n * Legacy Icon component which can be targeted by customization. It's recommended to use `FontIcon`\n * or `ImageIcon` instead, especially in scenarios where rendering performance is important.\n * {@docCategory Icon}\n */\nexport var Icon = styled(IconBase, getStyles, undefined, {\n scope: 'Icon',\n}, true);\nIcon.displayName = 'Icon';\n//# sourceMappingURL=Icon.js.map","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { Image } from '../Image/Image';\nimport { css, getNativeProps, htmlElementProperties } from '../../Utilities';\nimport { classNames, MS_ICON } from './Icon.styles';\n/**\n * Fast icon component which only supports images (not font glyphs) and can't be targeted by customizations.\n * To style the icon, use `className` or reference `ms-Icon` in CSS.\n * {@docCategory Icon}\n */\nexport var ImageIcon = function (props) {\n var className = props.className, imageProps = props.imageProps;\n var nativeProps = getNativeProps(props, htmlElementProperties, [\n 'aria-label',\n 'aria-labelledby',\n 'title',\n 'aria-describedby',\n ]);\n var altText = imageProps.alt || props['aria-label'];\n var hasName = altText ||\n props['aria-labelledby'] ||\n props.title ||\n imageProps['aria-label'] ||\n imageProps['aria-labelledby'] ||\n imageProps.title;\n // move naming or describing attributes from the container (where they are invalid) to the image\n var imageNameProps = {\n 'aria-labelledby': props['aria-labelledby'],\n 'aria-describedby': props['aria-describedby'],\n title: props.title,\n };\n var containerProps = hasName\n ? {}\n : {\n 'aria-hidden': true,\n };\n return (React.createElement(\"div\", __assign({}, containerProps, nativeProps, { className: css(MS_ICON, classNames.root, classNames.image, className) }),\n React.createElement(Image, __assign({}, imageNameProps, imageProps, { alt: hasName ? altText : '' }))));\n};\n//# sourceMappingURL=ImageIcon.js.map","export var DirectionalHint = {\n /**\n * Appear above the target element, with the left edges of the callout and target aligning.\n */\n topLeftEdge: 0,\n /**\n * Appear above the target element, with the centers of the callout and target aligning.\n */\n topCenter: 1,\n /**\n * Appear above the target element, with the right edges of the callout and target aligning.\n */\n topRightEdge: 2,\n /**\n * Appear above the target element, aligning with the target element such that the callout tends toward\n * the center of the screen.\n */\n topAutoEdge: 3,\n /**\n * Appear below the target element, with the left edges of the callout and target aligning.\n */\n bottomLeftEdge: 4,\n /**\n * Appear below the target element, with the centers of the callout and target aligning.\n */\n bottomCenter: 5,\n /**\n * Appear below the target element, with the right edges of the callout and target aligning.\n */\n bottomRightEdge: 6,\n /**\n * Appear below the target element, aligning with the target element such that the callout tends toward\n * the center of the screen.\n */\n bottomAutoEdge: 7,\n /**\n * Appear to the left of the target element, with the top edges of the callout and target aligning.\n */\n leftTopEdge: 8,\n /**\n * Appear to the left of the target element, with the centers of the callout and target aligning.\n */\n leftCenter: 9,\n /**\n * Appear to the left of the target element, with the bottom edges of the callout and target aligning.\n */\n leftBottomEdge: 10,\n /**\n * Appear to the right of the target element, with the top edges of the callout and target aligning.\n */\n rightTopEdge: 11,\n /**\n * Appear to the right of the target element, with the centers of the callout and target aligning.\n */\n rightCenter: 12,\n /**\n * Appear to the right of the target element, with the bottom edges of the callout and target aligning.\n */\n rightBottomEdge: 13,\n};\n//# sourceMappingURL=DirectionalHint.js.map","export { DirectionalHint } from '../../common/DirectionalHint';\n/**\n * {@docCategory ContextualMenu}\n */\nexport var ContextualMenuItemType;\n(function (ContextualMenuItemType) {\n ContextualMenuItemType[ContextualMenuItemType[\"Normal\"] = 0] = \"Normal\";\n ContextualMenuItemType[ContextualMenuItemType[\"Divider\"] = 1] = \"Divider\";\n ContextualMenuItemType[ContextualMenuItemType[\"Header\"] = 2] = \"Header\";\n ContextualMenuItemType[ContextualMenuItemType[\"Section\"] = 3] = \"Section\";\n})(ContextualMenuItemType || (ContextualMenuItemType = {}));\n//# sourceMappingURL=ContextualMenu.types.js.map","/**\n * Determines the effective checked state of a menu item.\n *\n * @param item {IContextualMenuItem} to get the check state of.\n * @returns {true} if the item is checked.\n * @returns {false} if the item is unchecked.\n * @returns {null} if the item is not checkable.\n */\nexport function getIsChecked(item) {\n if (item.canCheck) {\n return !!(item.isChecked || item.checked);\n }\n if (typeof item.isChecked === 'boolean') {\n return item.isChecked;\n }\n if (typeof item.checked === 'boolean') {\n return item.checked;\n }\n // Item is not checkable.\n return null;\n}\nexport function hasSubmenu(item) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return !!(item.subMenuProps || item.items);\n}\nexport function isItemDisabled(item) {\n return !!(item.isDisabled || item.disabled);\n}\nexport function getMenuItemAriaRole(item) {\n var isChecked = getIsChecked(item);\n var canCheck = isChecked !== null;\n return canCheck ? 'menuitemcheckbox' : 'menuitem';\n}\n//# sourceMappingURL=contextualMenuUtility.js.map","export var RectangleEdge;\n(function (RectangleEdge) {\n RectangleEdge[RectangleEdge[\"top\"] = 1] = \"top\";\n RectangleEdge[RectangleEdge[\"bottom\"] = -1] = \"bottom\";\n RectangleEdge[RectangleEdge[\"left\"] = 2] = \"left\";\n RectangleEdge[RectangleEdge[\"right\"] = -2] = \"right\";\n})(RectangleEdge || (RectangleEdge = {}));\nexport var Position;\n(function (Position) {\n Position[Position[\"top\"] = 0] = \"top\";\n Position[Position[\"bottom\"] = 1] = \"bottom\";\n Position[Position[\"start\"] = 2] = \"start\";\n Position[Position[\"end\"] = 3] = \"end\";\n})(Position || (Position = {}));\n//# sourceMappingURL=positioning.types.js.map","var _a;\nimport { __assign } from \"tslib\";\nimport { DirectionalHint } from '../../common/DirectionalHint';\nimport { getScrollbarWidth, getRTL, getWindow } from '../../Utilities';\nimport { RectangleEdge } from './positioning.types';\nimport { Rectangle } from '../../Utilities';\nfunction _createPositionData(targetEdge, alignmentEdge, isAuto) {\n return {\n targetEdge: targetEdge,\n alignmentEdge: alignmentEdge,\n isAuto: isAuto,\n };\n}\n// Currently the beakPercent is set to 50 for all positions meaning that it should tend to the center of the target\nvar DirectionalDictionary = (_a = {},\n _a[DirectionalHint.topLeftEdge] = _createPositionData(RectangleEdge.top, RectangleEdge.left),\n _a[DirectionalHint.topCenter] = _createPositionData(RectangleEdge.top),\n _a[DirectionalHint.topRightEdge] = _createPositionData(RectangleEdge.top, RectangleEdge.right),\n _a[DirectionalHint.topAutoEdge] = _createPositionData(RectangleEdge.top, undefined, true),\n _a[DirectionalHint.bottomLeftEdge] = _createPositionData(RectangleEdge.bottom, RectangleEdge.left),\n _a[DirectionalHint.bottomCenter] = _createPositionData(RectangleEdge.bottom),\n _a[DirectionalHint.bottomRightEdge] = _createPositionData(RectangleEdge.bottom, RectangleEdge.right),\n _a[DirectionalHint.bottomAutoEdge] = _createPositionData(RectangleEdge.bottom, undefined, true),\n _a[DirectionalHint.leftTopEdge] = _createPositionData(RectangleEdge.left, RectangleEdge.top),\n _a[DirectionalHint.leftCenter] = _createPositionData(RectangleEdge.left),\n _a[DirectionalHint.leftBottomEdge] = _createPositionData(RectangleEdge.left, RectangleEdge.bottom),\n _a[DirectionalHint.rightTopEdge] = _createPositionData(RectangleEdge.right, RectangleEdge.top),\n _a[DirectionalHint.rightCenter] = _createPositionData(RectangleEdge.right),\n _a[DirectionalHint.rightBottomEdge] = _createPositionData(RectangleEdge.right, RectangleEdge.bottom),\n _a);\nfunction _isRectangleWithinBounds(rect, boundingRect) {\n if (rect.top < boundingRect.top) {\n return false;\n }\n if (rect.bottom > boundingRect.bottom) {\n return false;\n }\n if (rect.left < boundingRect.left) {\n return false;\n }\n if (rect.right > boundingRect.right) {\n return false;\n }\n return true;\n}\n/**\n * Gets all of the edges of a rectangle that are outside of the given bounds.\n * If there are no out of bounds edges it returns an empty array.\n */\nfunction _getOutOfBoundsEdges(rect, boundingRect) {\n var outOfBounds = [];\n if (rect.top < boundingRect.top) {\n outOfBounds.push(RectangleEdge.top);\n }\n if (rect.bottom > boundingRect.bottom) {\n outOfBounds.push(RectangleEdge.bottom);\n }\n if (rect.left < boundingRect.left) {\n outOfBounds.push(RectangleEdge.left);\n }\n if (rect.right > boundingRect.right) {\n outOfBounds.push(RectangleEdge.right);\n }\n return outOfBounds;\n}\nfunction _getEdgeValue(rect, edge) {\n return rect[RectangleEdge[edge]];\n}\nfunction _setEdgeValue(rect, edge, value) {\n rect[RectangleEdge[edge]] = value;\n return rect;\n}\n/**\n * Returns the middle value of an edge. Only returns 1 value rather than xy coordinates as\n * the itself already contains the other coordinate.\n * For instance, a bottom edge's current value is it's y coordinate, so the number returned is the x.\n */\nfunction _getCenterValue(rect, edge) {\n var edges = _getFlankingEdges(edge);\n return (_getEdgeValue(rect, edges.positiveEdge) + _getEdgeValue(rect, edges.negativeEdge)) / 2;\n}\n/**\n * Flips the value depending on the edge.\n * If the edge is a \"positive\" edge, Top or Left, then the value should stay as it is.\n * If the edge is a \"negative\" edge, Bottom or Right, then the value should be flipped.\n * This is to account for the fact that the coordinates are effectively reserved in certain cases for the\n * \"negative\" edges.\n *\n * For example, when testing to see if a bottom edge 1 is within the bounds of another bottom edge 2:\n * If edge 1 is greater than edge 2 then it is out of bounds. This is reversed for top edge 1 and top edge 2.\n * If top edge 1 is less than edge 2 then it is out of bounds.\n */\nfunction _getRelativeEdgeValue(edge, value) {\n if (edge > 0) {\n return value;\n }\n else {\n return value * -1;\n }\n}\nfunction _getRelativeRectEdgeValue(edge, rect) {\n return _getRelativeEdgeValue(edge, _getEdgeValue(rect, edge));\n}\nfunction _getRelativeEdgeDifference(rect, hostRect, edge) {\n var edgeDifference = _getEdgeValue(rect, edge) - _getEdgeValue(hostRect, edge);\n return _getRelativeEdgeValue(edge, edgeDifference);\n}\n/**\n * Moves the edge of a rectangle to the value given. It only moves the edge in a linear direction based on that edge.\n * For example, if it's a bottom edge it will only change y coordinates.\n * if maintainSize is set to false, it will only adjust the specified edge value\n */\nfunction _moveEdge(rect, edge, newValue, maintainSize) {\n if (maintainSize === void 0) { maintainSize = true; }\n var difference = _getEdgeValue(rect, edge) - newValue;\n var returnRect = _setEdgeValue(rect, edge, newValue);\n if (maintainSize) {\n returnRect = _setEdgeValue(rect, edge * -1, _getEdgeValue(rect, edge * -1) - difference);\n }\n return returnRect;\n}\n/**\n * Aligns the edge on the passed in rect to the target. If there is a gap then it will have that space between the two.\n */\nfunction _alignEdges(rect, target, edge, gap) {\n if (gap === void 0) { gap = 0; }\n return _moveEdge(rect, edge, _getEdgeValue(target, edge) + _getRelativeEdgeValue(edge, gap));\n}\n/**\n * Aligns the targetEdge on the passed in target to the rects corresponding opposite edge.\n * For instance if targetEdge is bottom, then the rects top will be moved to match it.\n */\nfunction _alignOppositeEdges(rect, target, targetEdge, gap) {\n if (gap === void 0) { gap = 0; }\n var oppositeEdge = targetEdge * -1;\n var adjustedGap = _getRelativeEdgeValue(oppositeEdge, gap);\n return _moveEdge(rect, targetEdge * -1, _getEdgeValue(target, targetEdge) + adjustedGap);\n}\n/**\n * Tests to see if the given edge is within the bounds of the given rectangle.\n */\nfunction _isEdgeInBounds(rect, bounds, edge) {\n var adjustedRectValue = _getRelativeRectEdgeValue(edge, rect);\n return adjustedRectValue > _getRelativeRectEdgeValue(edge, bounds);\n}\n/**\n * Returns a measure of how much a rectangle is out of bounds for a given alignment;\n * this can be used to compare which rectangle is more or less out of bounds.\n * A value of 0 means the rectangle is entirely in bounds\n */\nfunction _getOutOfBoundsDegree(rect, bounds) {\n var breakingEdges = _getOutOfBoundsEdges(rect, bounds);\n var total = 0;\n for (var _i = 0, breakingEdges_1 = breakingEdges; _i < breakingEdges_1.length; _i++) {\n var edge = breakingEdges_1[_i];\n total += Math.pow(_getRelativeEdgeDifference(rect, bounds, edge), 2);\n }\n return total;\n}\n/**\n * Returns true if scroll-resizing will move the target edge within the bounding rectangle,\n * and there is room between the target edge and the bounding edge for scrolled content.\n * Returns false otherwise.\n */\nfunction _canScrollResizeToFitEdge(target, bounding, targetEdge, minimumScrollResizeHeight) {\n if (minimumScrollResizeHeight === void 0) { minimumScrollResizeHeight = 200; }\n // Only scroll vertically to fit - cannot scroll to fit right or left edges\n if (targetEdge !== RectangleEdge.bottom && targetEdge !== RectangleEdge.top) {\n return false;\n }\n return _getRelativeEdgeDifference(target, bounding, targetEdge) >= minimumScrollResizeHeight;\n}\n/**\n * Attempts to move the rectangle through various sides of the target to find a place to fit.\n * If no fit is found, the least bad option should be returned.\n */\nfunction _flipToFit(rect, target, bounding, positionData, shouldScroll, minimumScrollResizeHeight, gap) {\n if (shouldScroll === void 0) { shouldScroll = false; }\n if (gap === void 0) { gap = 0; }\n var directions = [\n RectangleEdge.left,\n RectangleEdge.right,\n RectangleEdge.bottom,\n RectangleEdge.top,\n ];\n // In RTL page, RectangleEdge.right has a higher priority than RectangleEdge.left, so the order should be updated.\n if (getRTL()) {\n directions[0] *= -1;\n directions[1] *= -1;\n }\n var currentEstimate = rect;\n var currentEdge = positionData.targetEdge;\n var currentAlignment = positionData.alignmentEdge;\n // keep track of least bad option, in case no sides fit\n var oobDegree;\n var bestEdge = currentEdge;\n var bestAlignment = currentAlignment;\n // Keep switching sides until one is found with enough space.\n // If all sides don't fit then return the unmodified element.\n for (var i = 0; i < 4; i++) {\n if (_isEdgeInBounds(currentEstimate, bounding, currentEdge)) {\n // Edge is in bounds, return current estimate\n return {\n elementRectangle: currentEstimate,\n targetEdge: currentEdge,\n alignmentEdge: currentAlignment,\n };\n }\n else if (shouldScroll && _canScrollResizeToFitEdge(target, bounding, currentEdge, minimumScrollResizeHeight)) {\n // Scrolling will allow edge to fit, move the estimate currentEdge inside the bounds and return\n switch (currentEdge) {\n case RectangleEdge.bottom:\n currentEstimate.bottom = bounding.bottom;\n break;\n case RectangleEdge.top:\n currentEstimate.top = bounding.top;\n break;\n }\n return {\n elementRectangle: currentEstimate,\n targetEdge: currentEdge,\n alignmentEdge: currentAlignment,\n forcedInBounds: true,\n };\n }\n else {\n // update least-bad edges\n var currentOOBDegree = _getOutOfBoundsDegree(currentEstimate, bounding);\n if (!oobDegree || currentOOBDegree < oobDegree) {\n oobDegree = currentOOBDegree;\n bestEdge = currentEdge;\n bestAlignment = currentAlignment;\n }\n directions.splice(directions.indexOf(currentEdge), 1);\n if (directions.length > 0) {\n if (directions.indexOf(currentEdge * -1) > -1) {\n currentEdge = currentEdge * -1;\n }\n else {\n currentAlignment = currentEdge;\n currentEdge = directions.slice(-1)[0];\n }\n currentEstimate = _estimatePosition(rect, target, { targetEdge: currentEdge, alignmentEdge: currentAlignment }, gap);\n }\n }\n }\n // nothing fits, use least-bad option\n currentEstimate = _estimatePosition(rect, target, { targetEdge: bestEdge, alignmentEdge: bestAlignment }, gap);\n return {\n elementRectangle: currentEstimate,\n targetEdge: bestEdge,\n alignmentEdge: bestAlignment,\n };\n}\n/**\n * Flips only the alignment edge of an element rectangle. This is used instead of nudging the alignment edges\n * into position, when `alignTargetEdge` is specified.\n */\nfunction _flipAlignmentEdge(elementEstimate, target, gap, coverTarget) {\n var alignmentEdge = elementEstimate.alignmentEdge, targetEdge = elementEstimate.targetEdge, elementRectangle = elementEstimate.elementRectangle;\n var oppositeEdge = alignmentEdge * -1;\n var newEstimate = _estimatePosition(elementRectangle, target, { targetEdge: targetEdge, alignmentEdge: oppositeEdge }, gap, coverTarget);\n return {\n elementRectangle: newEstimate,\n targetEdge: targetEdge,\n alignmentEdge: oppositeEdge,\n };\n}\n/**\n * Adjusts a element rectangle to fit within the bounds given. If directionalHintFixed or covertarget is passed in\n * then the element will not flip sides on the target. They will, however, be nudged to fit within the bounds given.\n */\nfunction _adjustFitWithinBounds(element, target, bounding, positionData, shouldScroll, minimumScrollResizeHeight, gap, directionalHintFixed, coverTarget) {\n if (shouldScroll === void 0) { shouldScroll = false; }\n if (gap === void 0) { gap = 0; }\n var alignmentEdge = positionData.alignmentEdge, alignTargetEdge = positionData.alignTargetEdge;\n var elementEstimate = {\n elementRectangle: element,\n targetEdge: positionData.targetEdge,\n alignmentEdge: alignmentEdge,\n };\n if (!directionalHintFixed && !coverTarget) {\n elementEstimate = _flipToFit(element, target, bounding, positionData, shouldScroll, minimumScrollResizeHeight, gap);\n }\n var outOfBounds = _getOutOfBoundsEdges(elementEstimate.elementRectangle, bounding);\n // if directionalHintFixed is specified, we need to force the target edge to not change\n // we need *-1 because targetEdge refers to the target's edge; the callout edge is the opposite\n var fixedEdge = directionalHintFixed ? -elementEstimate.targetEdge : undefined;\n if (outOfBounds.length > 0) {\n if (alignTargetEdge) {\n // The edge opposite to the alignment edge might be out of bounds.\n // Flip alignment to see if we can get it within bounds.\n if (elementEstimate.alignmentEdge && outOfBounds.indexOf(elementEstimate.alignmentEdge * -1) > -1) {\n var flippedElementEstimate = _flipAlignmentEdge(elementEstimate, target, gap, coverTarget);\n if (_isRectangleWithinBounds(flippedElementEstimate.elementRectangle, bounding)) {\n return flippedElementEstimate;\n }\n else {\n // If the flipped elements edges are still out of bounds, try nudging it.\n elementEstimate = _alignOutOfBoundsEdges(_getOutOfBoundsEdges(flippedElementEstimate.elementRectangle, bounding), elementEstimate, bounding, fixedEdge);\n }\n }\n else {\n elementEstimate = _alignOutOfBoundsEdges(outOfBounds, elementEstimate, bounding, fixedEdge);\n }\n }\n else {\n elementEstimate = _alignOutOfBoundsEdges(outOfBounds, elementEstimate, bounding, fixedEdge);\n }\n }\n return elementEstimate;\n}\n/**\n * Iterates through a list of out of bounds edges and tries to nudge and align them.\n * @param outOfBoundsEdges - Array of edges that are out of bounds\n * @param elementEstimate - The current element positioning estimate\n * @param bounding - The current bounds\n * @param preserveEdge - Specify an edge that should not be modified\n */\nfunction _alignOutOfBoundsEdges(outOfBoundsEdges, elementEstimate, bounding, preserveEdge) {\n for (var _i = 0, outOfBoundsEdges_1 = outOfBoundsEdges; _i < outOfBoundsEdges_1.length; _i++) {\n var direction = outOfBoundsEdges_1[_i];\n var edgeAttempt = void 0;\n // if preserveEdge is specified, do not call _alignEdges, skip directly to _moveEdge\n // this is because _alignEdges will move the opposite edge\n if (preserveEdge && preserveEdge === direction * -1) {\n edgeAttempt = _moveEdge(elementEstimate.elementRectangle, direction, _getEdgeValue(bounding, direction), false);\n elementEstimate.forcedInBounds = true;\n }\n else {\n edgeAttempt = _alignEdges(elementEstimate.elementRectangle, bounding, direction);\n var inBounds = _isEdgeInBounds(edgeAttempt, bounding, direction * -1);\n // only update estimate if the attempt didn't break out of the opposite bounding edge\n if (!inBounds) {\n edgeAttempt = _moveEdge(edgeAttempt, direction * -1, _getEdgeValue(bounding, direction * -1), false);\n elementEstimate.forcedInBounds = true;\n }\n }\n elementEstimate.elementRectangle = edgeAttempt;\n }\n return elementEstimate;\n}\n/**\n * Moves the middle point on an edge to the point given.\n * Only moves in one direction. For instance if a bottom edge is passed in, then\n * the bottom edge will be moved in the x axis to match the point.\n */\nfunction _centerEdgeToPoint(rect, edge, point) {\n var positiveEdge = _getFlankingEdges(edge).positiveEdge;\n var elementMiddle = _getCenterValue(rect, edge);\n var distanceToMiddle = elementMiddle - _getEdgeValue(rect, positiveEdge);\n return _moveEdge(rect, positiveEdge, point - distanceToMiddle);\n}\n/**\n * Moves the element rectangle to be appropriately positioned relative to a given target.\n * Does not flip or adjust the element.\n */\nfunction _estimatePosition(elementToPosition, target, positionData, gap, coverTarget) {\n if (gap === void 0) { gap = 0; }\n var estimatedElementPosition = new Rectangle(elementToPosition.left, elementToPosition.right, elementToPosition.top, elementToPosition.bottom);\n var alignmentEdge = positionData.alignmentEdge, targetEdge = positionData.targetEdge;\n var elementEdge = coverTarget ? targetEdge : targetEdge * -1;\n estimatedElementPosition = coverTarget\n ? _alignEdges(estimatedElementPosition, target, targetEdge, gap)\n : _alignOppositeEdges(estimatedElementPosition, target, targetEdge, gap);\n // if no alignment edge is provided it's supposed to be centered.\n if (!alignmentEdge) {\n var targetMiddlePoint = _getCenterValue(target, targetEdge);\n estimatedElementPosition = _centerEdgeToPoint(estimatedElementPosition, elementEdge, targetMiddlePoint);\n }\n else {\n estimatedElementPosition = _alignEdges(estimatedElementPosition, target, alignmentEdge);\n }\n return estimatedElementPosition;\n}\n/**\n * Returns the non-opposite edges of the target edge.\n * For instance if bottom is passed in then left and right will be returned.\n */\nfunction _getFlankingEdges(edge) {\n if (edge === RectangleEdge.top || edge === RectangleEdge.bottom) {\n return {\n positiveEdge: RectangleEdge.left,\n negativeEdge: RectangleEdge.right,\n };\n }\n else {\n return {\n positiveEdge: RectangleEdge.top,\n negativeEdge: RectangleEdge.bottom,\n };\n }\n}\n/**\n * Retrieve the final value for the return edge of `elementRectangle`. If the `elementRectangle` is closer to one side\n * of the bounds versus the other, the return edge is flipped to grow inward.\n */\nfunction _finalizeReturnEdge(elementRectangle, returnEdge, bounds) {\n if (bounds &&\n Math.abs(_getRelativeEdgeDifference(elementRectangle, bounds, returnEdge)) >\n Math.abs(_getRelativeEdgeDifference(elementRectangle, bounds, returnEdge * -1))) {\n return returnEdge * -1;\n }\n return returnEdge;\n}\n/**\n * Whether or not the considered edge of the elementRectangle is lying on the edge of the bounds\n * @param elementRectangle The rectangle whose edge we are considering\n * @param bounds The rectangle marking the bounds\n * @param edge The target edge we're considering\n * @returns If the target edge of the elementRectangle is in the same location as that edge of the bounds\n */\nfunction _isEdgeOnBounds(elementRectangle, edge, bounds) {\n return bounds !== undefined && _getEdgeValue(elementRectangle, edge) === _getEdgeValue(bounds, edge);\n}\n/**\n * Finalizes the element position based on the hostElement. Only returns the\n * rectangle values to position such that they are anchored to the target.\n * This helps prevent resizing from looking very strange.\n * For instance, if the target edge is top and aligned with the left side then\n * the bottom and left values are returned so as the Callout shrinks it shrinks towards that corner.\n */\nfunction _finalizeElementPosition(elementRectangle, hostElement, targetEdge, bounds, alignmentEdge, coverTarget, doNotFinalizeReturnEdge, forceWithinBounds) {\n var returnValue = {};\n var hostRect = _getRectangleFromElement(hostElement);\n var elementEdge = coverTarget ? targetEdge : targetEdge * -1;\n var returnEdge = alignmentEdge ? alignmentEdge : _getFlankingEdges(targetEdge).positiveEdge;\n // If we are finalizing the return edge, choose the edge such that we grow away from the bounds\n // If we are not finalizing the return edge but the opposite edge is flush against the bounds,\n // choose that as the anchor edge so the element rect can grow away from the bounds' edge\n // In this case there will not be a visual difference because there is no more room for the elementRectangle to grow\n // in the usual direction\n if (!doNotFinalizeReturnEdge || _isEdgeOnBounds(elementRectangle, getOppositeEdge(returnEdge), bounds)) {\n returnEdge = _finalizeReturnEdge(elementRectangle, returnEdge, bounds);\n }\n returnValue[RectangleEdge[elementEdge]] = _getRelativeEdgeDifference(elementRectangle, hostRect, elementEdge);\n returnValue[RectangleEdge[returnEdge]] = _getRelativeEdgeDifference(elementRectangle, hostRect, returnEdge);\n // if the positioned element will still overflow, return all four edges with in-bounds values\n if (forceWithinBounds) {\n returnValue[RectangleEdge[elementEdge * -1]] = _getRelativeEdgeDifference(elementRectangle, hostRect, elementEdge * -1);\n returnValue[RectangleEdge[returnEdge * -1]] = _getRelativeEdgeDifference(elementRectangle, hostRect, returnEdge * -1);\n }\n return returnValue;\n}\n// Since the beak is rotated 45 degrees the actual height/width is the length of the diagonal.\n// We still want to position the beak based on it's midpoint which does not change. It will\n// be at (beakwidth / 2, beakwidth / 2)\nfunction _calculateActualBeakWidthInPixels(beakWidth) {\n return Math.sqrt(beakWidth * beakWidth * 2);\n}\n/**\n * Returns the appropriate IPositionData based on the props altered for RTL.\n * If directionalHintForRTL is passed in that is used if the page is RTL.\n * If directionalHint is specified, no directionalHintForRTL is available, and the page is RTL, the hint will be\n * flipped (e.g. bottomLeftEdge would become bottomRightEdge).\n *\n * If there is no directionalHint passed in, bottomAutoEdge is chosen automatically.\n */\nfunction _getPositionData(directionalHint, directionalHintForRTL, previousPositions) {\n if (directionalHint === void 0) { directionalHint = DirectionalHint.bottomAutoEdge; }\n if (previousPositions) {\n return {\n alignmentEdge: previousPositions.alignmentEdge,\n isAuto: previousPositions.isAuto,\n targetEdge: previousPositions.targetEdge,\n };\n }\n var positionInformation = __assign({}, DirectionalDictionary[directionalHint]);\n if (getRTL()) {\n // If alignment edge exists and that alignment edge is -2 or 2, right or left, then flip it.\n if (positionInformation.alignmentEdge && positionInformation.alignmentEdge % 2 === 0) {\n positionInformation.alignmentEdge = positionInformation.alignmentEdge * -1;\n }\n return directionalHintForRTL !== undefined ? DirectionalDictionary[directionalHintForRTL] : positionInformation;\n }\n return positionInformation;\n}\n/**\n * Gets the alignment data for the given information. This only really matters if the positioning is Auto.\n * If it is auto then the alignmentEdge should be chosen based on the target edge's position relative to\n * the center of the page.\n */\nfunction _getAlignmentData(positionData, target, boundingRect, coverTarget, alignTargetEdge) {\n if (positionData.isAuto) {\n positionData.alignmentEdge = getClosestEdge(positionData.targetEdge, target, boundingRect);\n }\n positionData.alignTargetEdge = alignTargetEdge;\n return positionData;\n}\nfunction getClosestEdge(targetEdge, target, boundingRect) {\n var targetCenter = _getCenterValue(target, targetEdge);\n var boundingCenter = _getCenterValue(boundingRect, targetEdge);\n var _a = _getFlankingEdges(targetEdge), positiveEdge = _a.positiveEdge, negativeEdge = _a.negativeEdge;\n if (targetCenter <= boundingCenter) {\n return positiveEdge;\n }\n else {\n return negativeEdge;\n }\n}\nfunction _positionElementWithinBounds(elementToPosition, target, bounding, positionData, gap, shouldScroll, minimumScrollResizeHeight, directionalHintFixed, coverTarget) {\n if (shouldScroll === void 0) { shouldScroll = false; }\n var estimatedElementPosition = _estimatePosition(elementToPosition, target, positionData, gap, coverTarget);\n if (_isRectangleWithinBounds(estimatedElementPosition, bounding)) {\n return {\n elementRectangle: estimatedElementPosition,\n targetEdge: positionData.targetEdge,\n alignmentEdge: positionData.alignmentEdge,\n };\n }\n else {\n return _adjustFitWithinBounds(estimatedElementPosition, target, bounding, positionData, shouldScroll, minimumScrollResizeHeight, gap, directionalHintFixed, coverTarget);\n }\n}\nfunction _finalizeBeakPosition(elementPosition, positionedBeak, bounds) {\n var targetEdge = elementPosition.targetEdge * -1;\n // The \"host\" element that we will use to help position the beak.\n var actualElement = new Rectangle(0, elementPosition.elementRectangle.width, 0, elementPosition.elementRectangle.height);\n var returnValue = {};\n var returnEdge = _finalizeReturnEdge(elementPosition.elementRectangle, elementPosition.alignmentEdge ? elementPosition.alignmentEdge : _getFlankingEdges(targetEdge).positiveEdge, bounds);\n // only show the beak if the callout is not fully covering the target\n var beakEdgeDifference = _getRelativeEdgeDifference(elementPosition.elementRectangle, elementPosition.targetRectangle, targetEdge);\n var showBeak = beakEdgeDifference > Math.abs(_getEdgeValue(positionedBeak, targetEdge));\n returnValue[RectangleEdge[targetEdge]] = _getEdgeValue(positionedBeak, targetEdge);\n returnValue[RectangleEdge[returnEdge]] = _getRelativeEdgeDifference(positionedBeak, actualElement, returnEdge);\n return {\n elementPosition: __assign({}, returnValue),\n closestEdge: getClosestEdge(elementPosition.targetEdge, positionedBeak, actualElement),\n targetEdge: targetEdge,\n hideBeak: !showBeak,\n };\n}\nfunction _positionBeak(beakWidth, elementPosition) {\n var target = elementPosition.targetRectangle;\n /**\n * Note about beak positioning: The actual beak width only matters for getting the gap between the callout and\n * target, it does not impact the beak placement within the callout. For example example, if the beakWidth is 8,\n * then the actual beakWidth is sqrroot(8^2 + 8^2) = 11.31x11.31. So the callout will need to be an extra 3 pixels\n * away from its target. While the beak is being positioned in the callout it still acts as though it were 8x8.\n */\n var _a = _getFlankingEdges(elementPosition.targetEdge), positiveEdge = _a.positiveEdge, negativeEdge = _a.negativeEdge;\n var beakTargetPoint = _getCenterValue(target, elementPosition.targetEdge);\n var elementBounds = new Rectangle(beakWidth / 2, elementPosition.elementRectangle.width - beakWidth / 2, beakWidth / 2, elementPosition.elementRectangle.height - beakWidth / 2);\n var beakPosition = new Rectangle(0, beakWidth, 0, beakWidth);\n beakPosition = _moveEdge(beakPosition, elementPosition.targetEdge * -1, -beakWidth / 2);\n beakPosition = _centerEdgeToPoint(beakPosition, elementPosition.targetEdge * -1, beakTargetPoint - _getRelativeRectEdgeValue(positiveEdge, elementPosition.elementRectangle));\n if (!_isEdgeInBounds(beakPosition, elementBounds, positiveEdge)) {\n beakPosition = _alignEdges(beakPosition, elementBounds, positiveEdge);\n }\n else if (!_isEdgeInBounds(beakPosition, elementBounds, negativeEdge)) {\n beakPosition = _alignEdges(beakPosition, elementBounds, negativeEdge);\n }\n return beakPosition;\n}\nfunction _getRectangleFromElement(element) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n var clientRect = element.getBoundingClientRect();\n return new Rectangle(clientRect.left, clientRect.right, clientRect.top, clientRect.bottom);\n}\nfunction _getRectangleFromIRect(rect) {\n return new Rectangle(rect.left, rect.right, rect.top, rect.bottom);\n}\nfunction _getTargetRect(bounds, target) {\n var targetRectangle;\n if (target) {\n // eslint-disable-next-line no-extra-boolean-cast\n if (!!target.preventDefault) {\n var ev = target;\n targetRectangle = new Rectangle(ev.clientX, ev.clientX, ev.clientY, ev.clientY);\n // eslint-disable-next-line no-extra-boolean-cast\n }\n else if (!!target.getBoundingClientRect) {\n targetRectangle = _getRectangleFromElement(target);\n // HTMLImgElements can have x and y values. The check for it being a point must go last.\n }\n else {\n var rectOrPoint = target;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n var left = rectOrPoint.left || rectOrPoint.x;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n var top_1 = rectOrPoint.top || rectOrPoint.y;\n var right = rectOrPoint.right || left;\n var bottom = rectOrPoint.bottom || top_1;\n targetRectangle = new Rectangle(left, right, top_1, bottom);\n }\n if (!_isRectangleWithinBounds(targetRectangle, bounds)) {\n var outOfBounds = _getOutOfBoundsEdges(targetRectangle, bounds);\n for (var _i = 0, outOfBounds_1 = outOfBounds; _i < outOfBounds_1.length; _i++) {\n var direction = outOfBounds_1[_i];\n targetRectangle[RectangleEdge[direction]] = bounds[RectangleEdge[direction]];\n }\n }\n }\n else {\n targetRectangle = new Rectangle(0, 0, 0, 0);\n }\n return targetRectangle;\n}\n/**\n * If max height is less than zero it returns the bounds height instead.\n */\nfunction _getMaxHeightFromTargetRectangle(targetRectangle, targetEdge, gapSpace, bounds, coverTarget) {\n var maxHeight = 0;\n var directionalHint = DirectionalDictionary[targetEdge];\n // If cover target is set, then the max height should be calculated using the opposite of the target edge since\n // that's the direction that the callout will expand in.\n // For instance, if the directionalhint is bottomLeftEdge then the callout will position so it's bottom edge\n // is aligned with the bottom of the target and expand up towards the top of the screen and the calculated max height\n // is (bottom of target) - (top of screen) - gapSpace.\n var target = coverTarget ? directionalHint.targetEdge * -1 : directionalHint.targetEdge;\n if (target === RectangleEdge.top) {\n maxHeight = _getEdgeValue(targetRectangle, directionalHint.targetEdge) - bounds.top - gapSpace;\n }\n else if (target === RectangleEdge.bottom) {\n maxHeight = bounds.bottom - _getEdgeValue(targetRectangle, directionalHint.targetEdge) - gapSpace;\n }\n else {\n maxHeight = bounds.bottom - targetRectangle.top - gapSpace;\n }\n return maxHeight > 0 ? maxHeight : bounds.height;\n}\nfunction _positionElementRelative(props, elementToPosition, boundingRect, previousPositions, shouldScroll, minimumScrollResizeHeight) {\n if (shouldScroll === void 0) { shouldScroll = false; }\n var gap = props.gapSpace ? props.gapSpace : 0;\n var targetRect = _getTargetRect(boundingRect, props.target);\n var positionData = _getAlignmentData(_getPositionData(props.directionalHint, props.directionalHintForRTL, previousPositions), targetRect, boundingRect, props.coverTarget, props.alignTargetEdge);\n var positionedElement = _positionElementWithinBounds(_getRectangleFromElement(elementToPosition), targetRect, boundingRect, positionData, gap, shouldScroll, minimumScrollResizeHeight, props.directionalHintFixed, props.coverTarget);\n return __assign(__assign({}, positionedElement), { targetRectangle: targetRect });\n}\nfunction _finalizePositionData(positionedElement, hostElement, bounds, coverTarget, doNotFinalizeReturnEdge) {\n var finalizedElement = _finalizeElementPosition(positionedElement.elementRectangle, hostElement, positionedElement.targetEdge, bounds, positionedElement.alignmentEdge, coverTarget, doNotFinalizeReturnEdge, positionedElement.forcedInBounds);\n return {\n elementPosition: finalizedElement,\n targetEdge: positionedElement.targetEdge,\n alignmentEdge: positionedElement.alignmentEdge,\n };\n}\nfunction _positionElement(props, hostElement, elementToPosition, previousPositions, win) {\n var theWin = win !== null && win !== void 0 ? win : getWindow();\n var boundingRect = props.bounds\n ? _getRectangleFromIRect(props.bounds)\n : new Rectangle(0, theWin.innerWidth - getScrollbarWidth(), 0, theWin.innerHeight);\n var positionedElement = _positionElementRelative(props, elementToPosition, boundingRect, previousPositions);\n return _finalizePositionData(positionedElement, hostElement, boundingRect, props.coverTarget);\n}\nfunction _calculateGapSpace(isBeakVisible, beakWidth, gapSpace) {\n if (beakWidth === void 0) { beakWidth = 0; }\n if (gapSpace === void 0) { gapSpace = 0; }\n return _calculateActualBeakWidthInPixels(isBeakVisible ? beakWidth : 0) / 2 + gapSpace;\n}\nfunction _positionCallout(props, hostElement, callout, previousPositions, shouldScroll, minimumScrollResizeHeight, doNotFinalizeReturnEdge, win) {\n if (shouldScroll === void 0) { shouldScroll = false; }\n var theWin = win !== null && win !== void 0 ? win : getWindow();\n var beakWidth = props.isBeakVisible ? props.beakWidth || 0 : 0;\n var gap = _calculateGapSpace(props.isBeakVisible, props.beakWidth, props.gapSpace);\n var positionProps = props;\n positionProps.gapSpace = gap;\n var boundingRect = props.bounds\n ? _getRectangleFromIRect(props.bounds)\n : new Rectangle(0, theWin.innerWidth - getScrollbarWidth(), 0, theWin.innerHeight);\n var positionedElement = _positionElementRelative(positionProps, callout, boundingRect, previousPositions, shouldScroll, minimumScrollResizeHeight);\n var beakPositioned = _positionBeak(beakWidth, positionedElement);\n var finalizedBeakPosition = _finalizeBeakPosition(positionedElement, beakPositioned, boundingRect);\n return __assign(__assign({}, _finalizePositionData(positionedElement, hostElement, boundingRect, props.coverTarget, doNotFinalizeReturnEdge)), { beakPosition: finalizedBeakPosition });\n}\nfunction _positionCard(props, hostElement, callout, previousPositions, win) {\n var theWin = win !== null && win !== void 0 ? win : getWindow();\n return _positionCallout(props, hostElement, callout, previousPositions, false, undefined, true, theWin);\n}\nfunction _getRectangleFromTarget(target) {\n var _a, _b, _c, _d;\n var mouseTarget = target;\n var elementTarget = target;\n var rectOrPointTarget = target;\n var targetRect;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n var left = (_a = rectOrPointTarget.left) !== null && _a !== void 0 ? _a : rectOrPointTarget.x;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n var top = (_b = rectOrPointTarget.top) !== null && _b !== void 0 ? _b : rectOrPointTarget.y;\n var right = (_c = rectOrPointTarget.right) !== null && _c !== void 0 ? _c : left;\n var bottom = (_d = rectOrPointTarget.bottom) !== null && _d !== void 0 ? _d : top;\n // eslint-disable-next-line no-extra-boolean-cast -- may not actually be a MouseEvent\n if (!!mouseTarget.stopPropagation) {\n targetRect = new Rectangle(mouseTarget.clientX, mouseTarget.clientX, mouseTarget.clientY, mouseTarget.clientY);\n }\n else if (left !== undefined && top !== undefined) {\n targetRect = new Rectangle(left, right, top, bottom);\n }\n else {\n targetRect = _getRectangleFromElement(elementTarget);\n }\n return targetRect;\n}\n// END PRIVATE FUNCTIONS\nexport var __positioningTestPackage = {\n _finalizePositionData: _finalizePositionData,\n _finalizeBeakPosition: _finalizeBeakPosition,\n _calculateActualBeakWidthInPixels: _calculateActualBeakWidthInPixels,\n _positionElementWithinBounds: _positionElementWithinBounds,\n _positionBeak: _positionBeak,\n _getPositionData: _getPositionData,\n _getMaxHeightFromTargetRectangle: _getMaxHeightFromTargetRectangle,\n};\n/**\n * Used to position an element relative to the given positioning props.\n * If positioning has been completed before, previousPositions can be passed to ensure that the positioning element\n * repositions based on its previous targets rather than starting with directionalhint.\n */\nexport function positionElement(props, hostElement, elementToPosition, previousPositions, win) {\n return _positionElement(props, hostElement, elementToPosition, previousPositions, win);\n}\nexport function positionCallout(props, hostElement, elementToPosition, previousPositions, shouldScroll, minimumScrollResizeHeight, win) {\n return _positionCallout(props, hostElement, elementToPosition, previousPositions, shouldScroll, minimumScrollResizeHeight, undefined, win);\n}\nexport function positionCard(props, hostElement, elementToPosition, previousPositions, win) {\n return _positionCard(props, hostElement, elementToPosition, previousPositions, win);\n}\n/**\n * Gets the maximum height that a rectangle can have in order to fit below or above a target.\n * If the directional hint specifies a left or right edge (i.e. leftCenter) it will limit the height to the topBorder\n * of the target given.\n * If no bounds are provided then the window is treated as the bounds.\n */\nexport function getMaxHeight(target, targetEdge, gapSpace, bounds, coverTarget, win) {\n if (gapSpace === void 0) { gapSpace = 0; }\n var theWin = win !== null && win !== void 0 ? win : getWindow();\n var targetRect = _getRectangleFromTarget(target);\n var boundingRectangle = bounds\n ? _getRectangleFromIRect(bounds)\n : new Rectangle(0, theWin.innerWidth - getScrollbarWidth(), 0, theWin.innerHeight);\n return _getMaxHeightFromTargetRectangle(targetRect, targetEdge, gapSpace, boundingRectangle, coverTarget);\n}\n/**\n * Returns the opposite edge of the given RectangleEdge.\n */\nexport function getOppositeEdge(edge) {\n return edge * -1;\n}\nfunction _getBoundsFromTargetWindow(target, targetWindow) {\n var segments = undefined;\n if (targetWindow.getWindowSegments) {\n segments = targetWindow.getWindowSegments();\n }\n // Identify if we're dealing with single screen scenarios.\n if (segments === undefined || segments.length <= 1) {\n return {\n top: 0,\n left: 0,\n right: targetWindow.innerWidth,\n bottom: targetWindow.innerHeight,\n width: targetWindow.innerWidth,\n height: targetWindow.innerHeight,\n };\n }\n // Logic for determining dual screen scenarios.\n var x = 0;\n var y = 0;\n // If the target is an Element get coordinates for its center.\n if (target !== null && !!target.getBoundingClientRect) {\n var clientRect = target.getBoundingClientRect();\n x = (clientRect.left + clientRect.right) / 2;\n y = (clientRect.top + clientRect.bottom) / 2;\n }\n // If the target is not null get x-axis and y-axis coordinates directly.\n else if (target !== null) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n x = target.left || target.x;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n y = target.top || target.y;\n }\n var bounds = { top: 0, left: 0, right: 0, bottom: 0, width: 0, height: 0 };\n // Define which window segment are the coordinates in and calculate bounds based on that.\n for (var _i = 0, segments_1 = segments; _i < segments_1.length; _i++) {\n var segment = segments_1[_i];\n if (x && segment.left <= x && segment.right >= x && y && segment.top <= y && segment.bottom >= y) {\n bounds = {\n top: segment.top,\n left: segment.left,\n right: segment.right,\n bottom: segment.bottom,\n width: segment.width,\n height: segment.height,\n };\n }\n }\n return bounds;\n}\nexport function getBoundsFromTargetWindow(target, targetWindow) {\n return _getBoundsFromTargetWindow(target, targetWindow);\n}\nexport function calculateGapSpace(isBeakVisible, beakWidth, gapSpace) {\n return _calculateGapSpace(isBeakVisible, beakWidth, gapSpace);\n}\nexport function getRectangleFromTarget(target) {\n return _getRectangleFromTarget(target);\n}\n//# sourceMappingURL=positioning.js.map","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { KeyCodes, divProperties, doesElementContainFocus, getDocument, getNativeProps, getPropsWithDefaults, getWindow, modalize, } from '../../Utilities';\nimport { useMergedRefs, useAsync, useOnEvent } from '@fluentui/react-hooks';\nimport { useWindow } from '@fluentui/react-window-provider';\nfunction useScrollbarAsync(props, root) {\n var async = useAsync();\n var _a = React.useState(false), needsVerticalScrollBarState = _a[0], setNeedsVerticalScrollBar = _a[1];\n React.useEffect(function () {\n async.requestAnimationFrame(function () {\n var _a;\n // If overflowY is overridden, don't waste time calculating whether the scrollbar is necessary.\n if (props.style && props.style.overflowY) {\n return;\n }\n var needsVerticalScrollBar = false;\n if (root && root.current && ((_a = root.current) === null || _a === void 0 ? void 0 : _a.firstElementChild)) {\n // ClientHeight returns the client height of an element rounded to an\n // integer. On some browsers at different zoom levels this rounding\n // can generate different results for the root container and child even\n // though they are the same height. This causes us to show a scroll bar\n // when not needed. Ideally we would use BoundingClientRect().height\n // instead however seems that the API is 90% slower than using ClientHeight.\n // Therefore instead we will calculate the difference between heights and\n // allow for a 1px difference to still be considered ok and not show the\n // scroll bar.\n var rootHeight = root.current.clientHeight;\n var firstChildHeight = root.current.firstElementChild.clientHeight;\n if (rootHeight > 0 && firstChildHeight > rootHeight) {\n needsVerticalScrollBar = firstChildHeight - rootHeight > 1;\n }\n }\n if (needsVerticalScrollBarState !== needsVerticalScrollBar) {\n setNeedsVerticalScrollBar(needsVerticalScrollBar);\n }\n });\n return function () { return async.dispose(); };\n });\n return needsVerticalScrollBarState;\n}\nfunction defaultFocusRestorer(options) {\n var originalElement = options.originalElement, containsFocus = options.containsFocus;\n if (originalElement && containsFocus && originalElement !== getWindow()) {\n // Make sure that the focus method actually exists\n // In some cases the object might exist but not be a real element.\n // This is primarily for IE 11 and should be removed once IE 11 is no longer in use.\n // This is wrapped in a setTimeout because of a React 16 bug that is resolved in 17.\n // Once we move to 17, the setTimeout should be removed (ref: https://github.com/facebook/react/issues/17894#issuecomment-656094405)\n setTimeout(function () {\n var _a;\n (_a = originalElement.focus) === null || _a === void 0 ? void 0 : _a.call(originalElement);\n }, 0);\n }\n}\nfunction useRestoreFocus(props, root) {\n var _a = props.onRestoreFocus, onRestoreFocus = _a === void 0 ? defaultFocusRestorer : _a;\n var originalFocusedElement = React.useRef();\n var containsFocus = React.useRef(false);\n React.useEffect(function () {\n originalFocusedElement.current = getDocument().activeElement;\n if (doesElementContainFocus(root.current)) {\n containsFocus.current = true;\n }\n return function () {\n var _a;\n onRestoreFocus === null || onRestoreFocus === void 0 ? void 0 : onRestoreFocus({\n originalElement: originalFocusedElement.current,\n containsFocus: containsFocus.current,\n documentContainsFocus: ((_a = getDocument()) === null || _a === void 0 ? void 0 : _a.hasFocus()) || false,\n });\n // De-reference DOM Node to avoid retainment via transpiled closure of _onKeyDown\n originalFocusedElement.current = undefined;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- should only run on first render\n }, []);\n useOnEvent(root, 'focus', React.useCallback(function () {\n containsFocus.current = true;\n }, []), true);\n useOnEvent(root, 'blur', React.useCallback(function (ev) {\n /** The popup should update this._containsFocus when:\n * relatedTarget exists AND\n * the relatedTarget is not contained within the popup.\n * If the relatedTarget is within the popup, that means the popup still has focus\n * and focused moved from one element to another within the popup.\n * If relatedTarget is undefined or null that usually means that a\n * keyboard event occurred and focus didn't change\n */\n if (root.current && ev.relatedTarget && !root.current.contains(ev.relatedTarget)) {\n containsFocus.current = false;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- should only run on first render\n }, []), true);\n}\nfunction useHideSiblingNodes(props, root) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n var shouldHideSiblings = String(props['aria-modal']).toLowerCase() === 'true' && props.enableAriaHiddenSiblings;\n React.useEffect(function () {\n if (!(shouldHideSiblings && root.current)) {\n return;\n }\n var unmodalize = modalize(root.current);\n return unmodalize;\n }, [root, shouldHideSiblings]);\n}\n/**\n * This adds accessibility to Dialog and Panel controls\n */\nexport var Popup = React.forwardRef(function (propsWithoutDefaults, forwardedRef) {\n var props = getPropsWithDefaults({ shouldRestoreFocus: true, enableAriaHiddenSiblings: true }, propsWithoutDefaults);\n var root = React.useRef();\n var mergedRootRef = useMergedRefs(root, forwardedRef);\n useHideSiblingNodes(props, root);\n useRestoreFocus(props, root);\n var role = props.role, className = props.className, ariaLabel = props.ariaLabel, ariaLabelledBy = props.ariaLabelledBy, ariaDescribedBy = props.ariaDescribedBy, style = props.style, children = props.children, onDismiss = props.onDismiss;\n var needsVerticalScrollBar = useScrollbarAsync(props, root);\n var onKeyDown = React.useCallback(function (ev) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n switch (ev.which) {\n case KeyCodes.escape:\n if (onDismiss) {\n onDismiss(ev);\n ev.preventDefault();\n ev.stopPropagation();\n }\n break;\n }\n }, [onDismiss]);\n var win = useWindow();\n useOnEvent(win, 'keydown', onKeyDown);\n return (React.createElement(\"div\", __assign({ ref: mergedRootRef }, getNativeProps(props, divProperties), { className: className, role: role, \"aria-label\": ariaLabel, \"aria-labelledby\": ariaLabelledBy, \"aria-describedby\": ariaDescribedBy, onKeyDown: onKeyDown, style: __assign({ overflowY: needsVerticalScrollBar ? 'scroll' : undefined, outline: 'none' }, style) }), children));\n});\nPopup.displayName = 'Popup';\n//# sourceMappingURL=Popup.js.map","var _a;\nimport { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { DirectionalHint } from '../../common/DirectionalHint';\nimport { css, divProperties, elementContains, focusFirstChild, getNativeProps, on, shallowCompare, getPropsWithDefaults, } from '../../Utilities';\nimport { calculateGapSpace, getRectangleFromTarget } from '../../utilities/positioning/positioning';\nimport { positionCallout, RectangleEdge, positionCard, getBoundsFromTargetWindow } from '../../Positioning';\nimport { Popup } from '../../Popup';\nimport { classNamesFunction } from '../../Utilities';\nimport { AnimationClassNames } from '../../Styling';\nimport { useMergedRefs, useAsync, useConst, useTarget, useOnEvent } from '@fluentui/react-hooks';\nimport { useWindowEx } from '../../utilities/dom';\nvar COMPONENT_NAME = 'CalloutContentBase';\nvar ANIMATIONS = (_a = {},\n _a[RectangleEdge.top] = AnimationClassNames.slideUpIn10,\n _a[RectangleEdge.bottom] = AnimationClassNames.slideDownIn10,\n _a[RectangleEdge.left] = AnimationClassNames.slideLeftIn10,\n _a[RectangleEdge.right] = AnimationClassNames.slideRightIn10,\n _a);\nvar BEAK_ORIGIN_POSITION = { top: 0, left: 0 };\n// Microsoft Edge will overwrite inline styles if there is an animation pertaining to that style.\n// To help ensure that edge will respect the offscreen style opacity\n// filter needs to be added as an additional way to set opacity.\n// Also set pointer-events: none so that the callout will not occlude the element it is\n// going to be positioned against\nvar OFF_SCREEN_STYLE = {\n opacity: 0,\n filter: 'opacity(0)',\n pointerEvents: 'none',\n};\n// role and role description go hand-in-hand. Both would be included by spreading getNativeProps for a basic element\n// This constant array can be used to filter these out of native props spread on callout root and apply them together on\n// calloutMain (the Popup component within the callout)\nvar ARIA_ROLE_ATTRIBUTES = ['role', 'aria-roledescription'];\nvar DEFAULT_PROPS = {\n preventDismissOnLostFocus: false,\n preventDismissOnScroll: false,\n preventDismissOnResize: false,\n isBeakVisible: true,\n beakWidth: 16,\n gapSpace: 0,\n minPagePadding: 8,\n directionalHint: DirectionalHint.bottomAutoEdge,\n};\nvar getClassNames = classNamesFunction({\n disableCaching: true, // disabling caching because stylesProp.position mutates often\n});\n/**\n * (Hook) to return a function to lazily fetch the bounds of the target element for the callout.\n */\nfunction useBounds(_a, targetRef, targetWindow) {\n var bounds = _a.bounds, _b = _a.minPagePadding, minPagePadding = _b === void 0 ? DEFAULT_PROPS.minPagePadding : _b, target = _a.target;\n var _c = React.useState(false), targetWindowResized = _c[0], setTargetWindowResized = _c[1];\n var cachedBounds = React.useRef();\n var getBounds = React.useCallback(function () {\n if (!cachedBounds.current || targetWindowResized) {\n var currentBounds = typeof bounds === 'function' ? (targetWindow ? bounds(target, targetWindow) : undefined) : bounds;\n if (!currentBounds && targetWindow) {\n currentBounds = getBoundsFromTargetWindow(targetRef.current, targetWindow);\n currentBounds = {\n top: currentBounds.top + minPagePadding,\n left: currentBounds.left + minPagePadding,\n right: currentBounds.right - minPagePadding,\n bottom: currentBounds.bottom - minPagePadding,\n width: currentBounds.width - minPagePadding * 2,\n height: currentBounds.height - minPagePadding * 2,\n };\n }\n cachedBounds.current = currentBounds;\n targetWindowResized && setTargetWindowResized(false);\n }\n return cachedBounds.current;\n }, [bounds, minPagePadding, target, targetRef, targetWindow, targetWindowResized]);\n var async = useAsync();\n useOnEvent(targetWindow, 'resize', async.debounce(function () {\n setTargetWindowResized(true);\n }, 500, { leading: true }));\n return getBounds;\n}\n/**\n * (Hook) to return the maximum available height for the Callout to render into.\n */\nfunction useMaxHeight(_a, getBounds, targetRef, positions) {\n var _b;\n var calloutMaxHeight = _a.calloutMaxHeight, finalHeight = _a.finalHeight, directionalHint = _a.directionalHint, directionalHintFixed = _a.directionalHintFixed, hidden = _a.hidden, gapSpace = _a.gapSpace, beakWidth = _a.beakWidth, isBeakVisible = _a.isBeakVisible, coverTarget = _a.coverTarget;\n var _c = React.useState(), maxHeight = _c[0], setMaxHeight = _c[1];\n var _d = (_b = positions === null || positions === void 0 ? void 0 : positions.elementPosition) !== null && _b !== void 0 ? _b : {}, top = _d.top, bottom = _d.bottom;\n var targetRect = (targetRef === null || targetRef === void 0 ? void 0 : targetRef.current) ? getRectangleFromTarget(targetRef.current) : undefined;\n React.useEffect(function () {\n var _a;\n var bounds = (_a = getBounds()) !== null && _a !== void 0 ? _a : {};\n var topBounds = bounds.top;\n var bottomBounds = bounds.bottom;\n var calculatedHeight;\n // If aligned to top edge of target and not covering target, update bottom bounds to the\n // top of the target (accounting for gap space and beak)\n if ((positions === null || positions === void 0 ? void 0 : positions.targetEdge) === RectangleEdge.top && (targetRect === null || targetRect === void 0 ? void 0 : targetRect.top) && !coverTarget) {\n bottomBounds = targetRect.top - calculateGapSpace(isBeakVisible, beakWidth, gapSpace);\n }\n if (typeof top === 'number' && bottomBounds) {\n calculatedHeight = bottomBounds - top;\n }\n else if (typeof bottom === 'number' && typeof topBounds === 'number' && bottomBounds) {\n calculatedHeight = bottomBounds - topBounds - bottom;\n }\n if ((!calloutMaxHeight && !hidden) ||\n (calloutMaxHeight && calculatedHeight && calloutMaxHeight > calculatedHeight)) {\n setMaxHeight(calculatedHeight);\n }\n else if (calloutMaxHeight) {\n setMaxHeight(calloutMaxHeight);\n }\n else {\n setMaxHeight(undefined);\n }\n }, [\n bottom,\n calloutMaxHeight,\n finalHeight,\n directionalHint,\n directionalHintFixed,\n getBounds,\n hidden,\n positions,\n top,\n gapSpace,\n beakWidth,\n isBeakVisible,\n targetRect,\n coverTarget,\n ]);\n return maxHeight;\n}\n/**\n * (Hook) to find the current position of Callout. If Callout is resized then a new position is calculated.\n */\nfunction usePositions(props, hostElement, calloutElement, targetRef, getBounds, popupRef) {\n var _a = React.useState(), positions = _a[0], setPositions = _a[1];\n var positionAttempts = React.useRef(0);\n var previousTarget = React.useRef();\n var async = useAsync();\n var hidden = props.hidden, target = props.target, finalHeight = props.finalHeight, calloutMaxHeight = props.calloutMaxHeight, onPositioned = props.onPositioned, directionalHint = props.directionalHint, hideOverflow = props.hideOverflow, preferScrollResizePositioning = props.preferScrollResizePositioning;\n var win = useWindowEx();\n var localRef = React.useRef();\n var popupStyles;\n if (localRef.current !== popupRef.current) {\n localRef.current = popupRef.current;\n popupStyles = popupRef.current ? win === null || win === void 0 ? void 0 : win.getComputedStyle(popupRef.current) : undefined;\n }\n var popupOverflowY = popupStyles === null || popupStyles === void 0 ? void 0 : popupStyles.overflowY;\n React.useEffect(function () {\n if (!hidden) {\n var timerId_1 = async.requestAnimationFrame(function () {\n var _a, _b;\n if (hostElement.current && calloutElement) {\n var currentProps = __assign(__assign({}, props), { target: targetRef.current, bounds: getBounds() });\n // duplicate calloutElement & remove useMaxHeight's maxHeight for position calc\n var dupeCalloutElement = calloutElement.cloneNode(true);\n dupeCalloutElement.style.maxHeight = calloutMaxHeight ? \"\".concat(calloutMaxHeight) : '';\n dupeCalloutElement.style.visibility = 'hidden';\n (_a = calloutElement.parentElement) === null || _a === void 0 ? void 0 : _a.appendChild(dupeCalloutElement);\n var previousPositions = previousTarget.current === target ? positions : undefined;\n // only account for scroll resizing if styles allow callout to scroll\n // (popup styles determine if callout will scroll)\n var isOverflowYHidden = hideOverflow || popupOverflowY === 'clip' || popupOverflowY === 'hidden';\n var shouldScroll = preferScrollResizePositioning && !isOverflowYHidden;\n // If there is a finalHeight given then we assume that the user knows and will handle\n // additional positioning adjustments so we should call positionCard\n var newPositions = finalHeight\n ? positionCard(currentProps, hostElement.current, dupeCalloutElement, previousPositions, win)\n : positionCallout(currentProps, hostElement.current, dupeCalloutElement, previousPositions, shouldScroll, undefined, win);\n // clean up duplicate calloutElement\n (_b = calloutElement.parentElement) === null || _b === void 0 ? void 0 : _b.removeChild(dupeCalloutElement);\n // Set the new position only when the positions do not exist or one of the new callout positions\n // is different. The position should not change if the position is within 2 decimal places.\n if ((!positions && newPositions) ||\n (positions && newPositions && !arePositionsEqual(positions, newPositions) && positionAttempts.current < 5)) {\n // We should not reposition the callout more than a few times, if it is then the content is likely resizing\n // and we should stop trying to reposition to prevent a stack overflow.\n positionAttempts.current++;\n setPositions(newPositions);\n }\n else if (positionAttempts.current > 0) {\n // Only call the onPositioned callback if the callout has been re-positioned at least once.\n positionAttempts.current = 0;\n onPositioned === null || onPositioned === void 0 ? void 0 : onPositioned(positions);\n }\n }\n }, calloutElement);\n previousTarget.current = target;\n return function () {\n async.cancelAnimationFrame(timerId_1);\n previousTarget.current = undefined;\n };\n }\n else {\n // When the callout is hidden, clear position state so that it is not accidentally used next render.\n setPositions(undefined);\n positionAttempts.current = 0;\n }\n }, [\n hidden,\n directionalHint,\n async,\n calloutElement,\n calloutMaxHeight,\n hostElement,\n targetRef,\n finalHeight,\n getBounds,\n onPositioned,\n positions,\n props,\n target,\n hideOverflow,\n preferScrollResizePositioning,\n popupOverflowY,\n win,\n ]);\n return positions;\n}\n/**\n * (Hook) to set up behavior to automatically focus the callout when it appears, if indicated by props.\n */\nfunction useAutoFocus(_a, positions, calloutElement) {\n var hidden = _a.hidden, setInitialFocus = _a.setInitialFocus;\n var async = useAsync();\n var hasPositions = !!positions;\n React.useEffect(function () {\n if (!hidden && setInitialFocus && hasPositions && calloutElement) {\n var timerId_2 = async.requestAnimationFrame(function () { return focusFirstChild(calloutElement); }, calloutElement);\n return function () { return async.cancelAnimationFrame(timerId_2); };\n }\n }, [hidden, hasPositions, async, calloutElement, setInitialFocus]);\n}\n/**\n * (Hook) to set up various handlers to dismiss the popup when it loses focus or the window scrolls or similar cases.\n */\nfunction useDismissHandlers(_a, positions, hostElement, targetRef, targetWindow) {\n var hidden = _a.hidden, onDismiss = _a.onDismiss, preventDismissOnScroll = _a.preventDismissOnScroll, preventDismissOnResize = _a.preventDismissOnResize, preventDismissOnLostFocus = _a.preventDismissOnLostFocus, dismissOnTargetClick = _a.dismissOnTargetClick, shouldDismissOnWindowFocus = _a.shouldDismissOnWindowFocus, preventDismissOnEvent = _a.preventDismissOnEvent;\n var isMouseDownOnPopup = React.useRef(false);\n var async = useAsync();\n var mouseDownHandlers = useConst([\n function () {\n isMouseDownOnPopup.current = true;\n },\n function () {\n isMouseDownOnPopup.current = false;\n },\n ]);\n var positionsExists = !!positions;\n React.useEffect(function () {\n var dismissOnScroll = function (ev) {\n if (positionsExists && !preventDismissOnScroll) {\n dismissOnClickOrScroll(ev);\n }\n };\n var dismissOnResize = function (ev) {\n if (!preventDismissOnResize && !(preventDismissOnEvent && preventDismissOnEvent(ev))) {\n onDismiss === null || onDismiss === void 0 ? void 0 : onDismiss(ev);\n }\n };\n var dismissOnLostFocus = function (ev) {\n if (!preventDismissOnLostFocus) {\n dismissOnClickOrScroll(ev);\n }\n };\n var dismissOnClickOrScroll = function (ev) {\n var eventPaths = ev.composedPath ? ev.composedPath() : [];\n var target = eventPaths.length > 0 ? eventPaths[0] : ev.target;\n var isEventTargetOutsideCallout = hostElement.current && !elementContains(hostElement.current, target);\n // If mouse is pressed down on callout but moved outside then released, don't dismiss the callout.\n if (isEventTargetOutsideCallout && isMouseDownOnPopup.current) {\n isMouseDownOnPopup.current = false;\n return;\n }\n if ((!targetRef.current && isEventTargetOutsideCallout) ||\n (ev.target !== targetWindow &&\n isEventTargetOutsideCallout &&\n (!targetRef.current ||\n 'stopPropagation' in targetRef.current ||\n dismissOnTargetClick ||\n (target !== targetRef.current && !elementContains(targetRef.current, target))))) {\n if (preventDismissOnEvent && preventDismissOnEvent(ev)) {\n return;\n }\n onDismiss === null || onDismiss === void 0 ? void 0 : onDismiss(ev);\n }\n };\n var dismissOnTargetWindowBlur = function (ev) {\n // Do nothing\n if (!shouldDismissOnWindowFocus) {\n return;\n }\n if (((preventDismissOnEvent && !preventDismissOnEvent(ev)) ||\n (!preventDismissOnEvent && !preventDismissOnLostFocus)) &&\n !(targetWindow === null || targetWindow === void 0 ? void 0 : targetWindow.document.hasFocus()) &&\n ev.relatedTarget === null) {\n onDismiss === null || onDismiss === void 0 ? void 0 : onDismiss(ev);\n }\n };\n // This is added so the callout will dismiss when the window is scrolled\n // but not when something inside the callout is scrolled. The delay seems\n // to be required to avoid React firing an async focus event in IE from\n // the target changing focus quickly prior to rendering the callout.\n var disposablesPromise = new Promise(function (resolve) {\n async.setTimeout(function () {\n if (!hidden && targetWindow) {\n var disposables_1 = [\n on(targetWindow, 'scroll', dismissOnScroll, true),\n on(targetWindow, 'resize', dismissOnResize, true),\n on(targetWindow.document.documentElement, 'focus', dismissOnLostFocus, true),\n on(targetWindow.document.documentElement, 'click', dismissOnLostFocus, true),\n on(targetWindow, 'blur', dismissOnTargetWindowBlur, true),\n ];\n resolve(function () {\n disposables_1.forEach(function (dispose) { return dispose(); });\n });\n }\n }, 0);\n });\n return function () {\n disposablesPromise.then(function (dispose) { return dispose(); });\n };\n }, [\n hidden,\n async,\n hostElement,\n targetRef,\n targetWindow,\n onDismiss,\n shouldDismissOnWindowFocus,\n dismissOnTargetClick,\n preventDismissOnLostFocus,\n preventDismissOnResize,\n preventDismissOnScroll,\n positionsExists,\n preventDismissOnEvent,\n ]);\n return mouseDownHandlers;\n}\nexport var CalloutContentBase = React.memo(React.forwardRef(function (propsWithoutDefaults, forwardedRef) {\n var props = getPropsWithDefaults(DEFAULT_PROPS, propsWithoutDefaults);\n var styles = props.styles, style = props.style, ariaLabel = props.ariaLabel, ariaDescribedBy = props.ariaDescribedBy, ariaLabelledBy = props.ariaLabelledBy, className = props.className, isBeakVisible = props.isBeakVisible, children = props.children, beakWidth = props.beakWidth, calloutWidth = props.calloutWidth, calloutMaxWidth = props.calloutMaxWidth, calloutMinWidth = props.calloutMinWidth, doNotLayer = props.doNotLayer, finalHeight = props.finalHeight, _a = props.hideOverflow, hideOverflow = _a === void 0 ? !!finalHeight : _a, backgroundColor = props.backgroundColor, calloutMaxHeight = props.calloutMaxHeight, onScroll = props.onScroll, \n // eslint-disable-next-line @typescript-eslint/no-deprecated\n _b = props.shouldRestoreFocus, \n // eslint-disable-next-line @typescript-eslint/no-deprecated\n shouldRestoreFocus = _b === void 0 ? true : _b, target = props.target, hidden = props.hidden, onLayerMounted = props.onLayerMounted, popupProps = props.popupProps;\n var hostElement = React.useRef(null);\n var popupRef = React.useRef(null);\n var mergedPopupRefs = useMergedRefs(popupRef, popupProps === null || popupProps === void 0 ? void 0 : popupProps.ref);\n var _c = React.useState(null), calloutElement = _c[0], setCalloutElement = _c[1];\n var calloutCallback = React.useCallback(function (calloutEl) {\n setCalloutElement(calloutEl);\n }, []);\n var rootRef = useMergedRefs(hostElement, forwardedRef);\n var _d = useTarget(props.target, {\n current: calloutElement,\n }), targetRef = _d[0], targetWindow = _d[1];\n var getBounds = useBounds(props, targetRef, targetWindow);\n var positions = usePositions(props, hostElement, calloutElement, targetRef, getBounds, mergedPopupRefs);\n var maxHeight = useMaxHeight(props, getBounds, targetRef, positions);\n var _e = useDismissHandlers(props, positions, hostElement, targetRef, targetWindow), mouseDownOnPopup = _e[0], mouseUpOnPopup = _e[1];\n // do not set both top and bottom css props from positions\n // instead, use maxHeight\n var isForcedInBounds = (positions === null || positions === void 0 ? void 0 : positions.elementPosition.top) && (positions === null || positions === void 0 ? void 0 : positions.elementPosition.bottom);\n var cssPositions = __assign(__assign({}, positions === null || positions === void 0 ? void 0 : positions.elementPosition), { maxHeight: maxHeight });\n if (isForcedInBounds) {\n cssPositions.bottom = undefined;\n }\n useAutoFocus(props, positions, calloutElement);\n React.useEffect(function () {\n if (!hidden) {\n onLayerMounted === null || onLayerMounted === void 0 ? void 0 : onLayerMounted();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- should only run if hidden changes\n }, [hidden]);\n // If there is no target window then we are likely in server side rendering and we should not render anything.\n if (!targetWindow) {\n return null;\n }\n var overflowYHidden = hideOverflow;\n var beakVisible = isBeakVisible && !!target;\n var classNames = getClassNames(styles, {\n theme: props.theme,\n className: className,\n overflowYHidden: overflowYHidden,\n calloutWidth: calloutWidth,\n positions: positions,\n beakWidth: beakWidth,\n backgroundColor: backgroundColor,\n calloutMaxWidth: calloutMaxWidth,\n calloutMinWidth: calloutMinWidth,\n doNotLayer: doNotLayer,\n });\n var overflowStyle = __assign(__assign({ maxHeight: calloutMaxHeight ? calloutMaxHeight : '100%' }, style), (overflowYHidden && { overflowY: 'hidden' }));\n var visibilityStyle = props.hidden ? { visibility: 'hidden' } : undefined;\n // React.CSSProperties does not understand IRawStyle, so the inline animations will need to be cast as any for now.\n return (React.createElement(\"div\", { ref: rootRef, className: classNames.container, style: visibilityStyle },\n React.createElement(\"div\", __assign({}, getNativeProps(props, divProperties, ARIA_ROLE_ATTRIBUTES), { className: css(classNames.root, positions && positions.targetEdge && ANIMATIONS[positions.targetEdge]), style: positions ? __assign({}, cssPositions) : OFF_SCREEN_STYLE, \n // Safari and Firefox on Mac OS requires this to back-stop click events so focus remains in the Callout.\n // See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#Clicking_and_focus\n tabIndex: -1, ref: calloutCallback }),\n beakVisible && React.createElement(\"div\", { className: classNames.beak, style: getBeakPosition(positions) }),\n beakVisible && React.createElement(\"div\", { className: classNames.beakCurtain }),\n React.createElement(Popup\n // don't use getNativeElementProps for role and roledescription because it will also\n // pass through data-* props (resulting in them being used in two places)\n , __assign({ \n // don't use getNativeElementProps for role and roledescription because it will also\n // pass through data-* props (resulting in them being used in two places)\n role: props.role, \"aria-roledescription\": props['aria-roledescription'], ariaDescribedBy: ariaDescribedBy, ariaLabel: ariaLabel, ariaLabelledBy: ariaLabelledBy, className: classNames.calloutMain, onDismiss: props.onDismiss, onMouseDown: mouseDownOnPopup, onMouseUp: mouseUpOnPopup, onRestoreFocus: props.onRestoreFocus, onScroll: onScroll, shouldRestoreFocus: shouldRestoreFocus, style: overflowStyle }, popupProps, { ref: mergedPopupRefs }), children))));\n}), function (previousProps, nextProps) {\n if (!nextProps.shouldUpdateWhenHidden && previousProps.hidden && nextProps.hidden) {\n // Do not update when hidden.\n return true;\n }\n return shallowCompare(previousProps, nextProps);\n});\n/**\n * (Utility) to find and return the current `Callout` Beak position.\n *\n * @param positions\n */\nfunction getBeakPosition(positions) {\n var _a, _b;\n var beakPositionStyle = __assign(__assign({}, (_a = positions === null || positions === void 0 ? void 0 : positions.beakPosition) === null || _a === void 0 ? void 0 : _a.elementPosition), { display: ((_b = positions === null || positions === void 0 ? void 0 : positions.beakPosition) === null || _b === void 0 ? void 0 : _b.hideBeak) ? 'none' : undefined });\n if (!beakPositionStyle.top && !beakPositionStyle.bottom && !beakPositionStyle.left && !beakPositionStyle.right) {\n beakPositionStyle.left = BEAK_ORIGIN_POSITION.left;\n beakPositionStyle.top = BEAK_ORIGIN_POSITION.top;\n }\n return beakPositionStyle;\n}\n/**\n * (Utility) used to compare two different elementPositions to determine whether they are equal.\n *\n * @param prevElementPositions\n * @param newElementPosition\n */\nfunction arePositionsEqual(prevElementPositions, newElementPosition) {\n return (comparePositions(prevElementPositions.elementPosition, newElementPosition.elementPosition) &&\n comparePositions(prevElementPositions.beakPosition.elementPosition, newElementPosition.beakPosition.elementPosition));\n}\n/**\n * (Utility) used in **arePositionsEqual** to compare two different elementPositions.\n *\n * @param prevElementPositions\n * @param newElementPositions\n */\nfunction comparePositions(prevElementPositions, newElementPositions) {\n for (var key in newElementPositions) {\n if (newElementPositions.hasOwnProperty(key)) {\n var oldPositionEdge = prevElementPositions[key];\n var newPositionEdge = newElementPositions[key];\n if (oldPositionEdge !== undefined && newPositionEdge !== undefined) {\n if (oldPositionEdge.toFixed(2) !== newPositionEdge.toFixed(2)) {\n return false;\n }\n }\n else {\n return false;\n }\n }\n }\n return true;\n}\nCalloutContentBase.displayName = COMPONENT_NAME;\n//# sourceMappingURL=CalloutContent.base.js.map","import { HighContrastSelector, focusClear, getGlobalClassNames, ZIndexes } from '../../Styling';\nfunction getBeakStyle(beakWidth) {\n return {\n height: beakWidth,\n width: beakWidth,\n };\n}\nvar GlobalClassNames = {\n container: 'ms-Callout-container',\n root: 'ms-Callout',\n beak: 'ms-Callout-beak',\n beakCurtain: 'ms-Callout-beakCurtain',\n calloutMain: 'ms-Callout-main',\n};\nexport var getStyles = function (props) {\n var _a;\n var theme = props.theme, className = props.className, overflowYHidden = props.overflowYHidden, calloutWidth = props.calloutWidth, beakWidth = props.beakWidth, backgroundColor = props.backgroundColor, calloutMaxWidth = props.calloutMaxWidth, calloutMinWidth = props.calloutMinWidth, doNotLayer = props.doNotLayer;\n var classNames = getGlobalClassNames(GlobalClassNames, theme);\n var semanticColors = theme.semanticColors, effects = theme.effects;\n return {\n container: [\n classNames.container,\n {\n position: 'relative',\n },\n ],\n root: [\n classNames.root,\n theme.fonts.medium,\n {\n position: 'absolute',\n display: 'flex',\n zIndex: doNotLayer ? ZIndexes.Layer : undefined,\n boxSizing: 'border-box',\n borderRadius: effects.roundedCorner2,\n boxShadow: effects.elevation16,\n selectors: (_a = {},\n _a[HighContrastSelector] = {\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: 'WindowText',\n },\n _a),\n },\n focusClear(),\n className,\n !!calloutWidth && { width: calloutWidth },\n !!calloutMaxWidth && { maxWidth: calloutMaxWidth },\n !!calloutMinWidth && { minWidth: calloutMinWidth },\n ],\n beak: [\n classNames.beak,\n {\n position: 'absolute',\n backgroundColor: semanticColors.menuBackground,\n boxShadow: 'inherit',\n border: 'inherit',\n boxSizing: 'border-box',\n transform: 'rotate(45deg)',\n },\n getBeakStyle(beakWidth),\n backgroundColor && {\n backgroundColor: backgroundColor,\n },\n ],\n beakCurtain: [\n classNames.beakCurtain,\n {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n backgroundColor: semanticColors.menuBackground,\n borderRadius: effects.roundedCorner2,\n },\n ],\n calloutMain: [\n classNames.calloutMain,\n {\n backgroundColor: semanticColors.menuBackground,\n overflowX: 'hidden',\n overflowY: 'auto',\n position: 'relative',\n width: '100%',\n borderRadius: effects.roundedCorner2,\n },\n overflowYHidden && {\n overflowY: 'hidden',\n },\n backgroundColor && {\n backgroundColor: backgroundColor,\n },\n ],\n };\n};\n//# sourceMappingURL=CalloutContent.styles.js.map","import { styled } from '../../Utilities';\nimport { CalloutContentBase } from './CalloutContent.base';\nimport { getStyles } from './CalloutContent.styles';\nexport var CalloutContent = styled(CalloutContentBase, getStyles, undefined, {\n scope: 'CalloutContent',\n});\n//# sourceMappingURL=CalloutContent.js.map","import * as React from 'react';\nvar PortalCompatContext = React.createContext(undefined);\nvar portalCompatContextDefaultValue = function() {\n return function() {\n return undefined;\n };\n};\nexport var PortalCompatContextProvider = PortalCompatContext.Provider;\nexport function usePortalCompat() {\n var _React_useContext;\n return (_React_useContext = React.useContext(PortalCompatContext)) !== null && _React_useContext !== void 0 ? _React_useContext : portalCompatContextDefaultValue;\n}\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { classNamesFunction, divProperties, getDocument, getNativeProps, getRTL, memoizeFunction, Customizer, FocusRectsProvider, } from '../../Utilities';\nimport { createTheme } from '../../Styling';\nimport { useMergedRefs } from '@fluentui/react-hooks';\nvar getClassNames = classNamesFunction();\nvar getFabricTheme = memoizeFunction(function (theme, isRTL) { return createTheme(__assign(__assign({}, theme), { rtl: isRTL })); });\nvar getDir = function (_a) {\n var theme = _a.theme, dir = _a.dir;\n var contextDir = getRTL(theme) ? 'rtl' : 'ltr';\n var pageDir = getRTL() ? 'rtl' : 'ltr';\n var componentDir = dir ? dir : contextDir;\n return {\n // If Fabric dir !== contextDir\n // Or If contextDir !== pageDir\n // Then we need to set dir of the Fabric root\n rootDir: componentDir !== contextDir || componentDir !== pageDir ? componentDir : dir,\n // If dir !== contextDir || pageDir\n // then set contextual theme around content\n needsTheme: componentDir !== contextDir,\n };\n};\nexport var FabricBase = React.forwardRef(function (props, ref) {\n var className = props.className, theme = props.theme, applyTheme = props.applyTheme, applyThemeToBody = props.applyThemeToBody, styles = props.styles;\n var classNames = getClassNames(styles, {\n theme: theme,\n applyTheme: applyTheme,\n className: className,\n });\n var rootElement = React.useRef(null);\n useApplyThemeToBody(applyThemeToBody, classNames, rootElement);\n return React.createElement(React.Fragment, null, useRenderedContent(props, classNames, rootElement, ref));\n});\nFabricBase.displayName = 'FabricBase';\nfunction useRenderedContent(props, _a, rootElement, ref) {\n var root = _a.root;\n var _b = props.as, Root = _b === void 0 ? 'div' : _b, dir = props.dir, theme = props.theme;\n var divProps = getNativeProps(props, divProperties, ['dir']);\n var _c = getDir(props), rootDir = _c.rootDir, needsTheme = _c.needsTheme;\n var renderedContent = (React.createElement(FocusRectsProvider, { providerRef: rootElement },\n React.createElement(Root, __assign({ dir: rootDir }, divProps, { className: root, ref: useMergedRefs(rootElement, ref) }))));\n // Create the contextual theme if component direction does not match parent direction.\n if (needsTheme) {\n // Disabling ThemeProvider here because theme doesn't need to be re-provided by ThemeProvider if dir has changed.\n renderedContent = (\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n React.createElement(Customizer, { settings: { theme: getFabricTheme(theme, dir === 'rtl') } }, renderedContent));\n }\n return renderedContent;\n}\nfunction useApplyThemeToBody(applyThemeToBody, _a, rootElement) {\n var bodyThemed = _a.bodyThemed;\n React.useEffect(function () {\n if (applyThemeToBody) {\n var currentDoc_1 = getDocument(rootElement.current);\n if (currentDoc_1) {\n currentDoc_1.body.classList.add(bodyThemed);\n return function () {\n currentDoc_1.body.classList.remove(bodyThemed);\n };\n }\n }\n }, [bodyThemed, applyThemeToBody, rootElement]);\n return rootElement;\n}\n//# sourceMappingURL=Fabric.base.js.map","import { getGlobalClassNames } from '../../Styling';\nvar inheritFont = { fontFamily: 'inherit' };\nvar GlobalClassNames = {\n root: 'ms-Fabric',\n bodyThemed: 'ms-Fabric-bodyThemed',\n};\nexport var getStyles = function (props) {\n var applyTheme = props.applyTheme, className = props.className, preventBlanketFontInheritance = props.preventBlanketFontInheritance, theme = props.theme;\n var classNames = getGlobalClassNames(GlobalClassNames, theme);\n return {\n root: [\n classNames.root,\n theme.fonts.medium,\n {\n color: theme.palette.neutralPrimary,\n },\n !preventBlanketFontInheritance && {\n '& button': inheritFont,\n '& input': inheritFont,\n '& textarea': inheritFont,\n },\n // apply theme to only if applyTheme is true\n applyTheme && {\n color: theme.semanticColors.bodyText,\n backgroundColor: theme.semanticColors.bodyBackground,\n },\n className,\n ],\n bodyThemed: [\n {\n backgroundColor: theme.semanticColors.bodyBackground,\n },\n ],\n };\n};\n//# sourceMappingURL=Fabric.styles.js.map","import { styled } from '../../Utilities';\nimport { FabricBase } from './Fabric.base';\nimport { getStyles } from './Fabric.styles';\n/**\n * @deprecated This component is deprecated as of `@fluentui/react` version 8. Use `ThemeProvider` instead.\n */\nexport var Fabric = styled(FabricBase, getStyles, undefined, {\n scope: 'Fabric',\n});\n//# sourceMappingURL=Fabric.js.map","var _layersByHostId = {};\nvar _layerHostsById = {};\nvar defaultHostId = 'fluent-default-layer-host';\nvar _defaultHostSelector = \"#\".concat(defaultHostId);\n/**\n * Register a layer for a given host id\n * @param hostId - Id of the layer host\n * @param layer - Layer instance\n */\nexport function registerLayer(hostId, callback) {\n if (!_layersByHostId[hostId]) {\n _layersByHostId[hostId] = [];\n }\n _layersByHostId[hostId].push(callback);\n var layerHosts = _layerHostsById[hostId];\n if (layerHosts) {\n for (var _i = 0, layerHosts_1 = layerHosts; _i < layerHosts_1.length; _i++) {\n var layerHost = layerHosts_1[_i];\n layerHost.notifyLayersChanged();\n }\n }\n}\n/**\n * Unregister a layer for a given host id\n * @param hostId - Id of the layer host\n * @param layer - Layer instance\n */\nexport function unregisterLayer(hostId, callback) {\n var layers = _layersByHostId[hostId];\n if (layers) {\n var idx = layers.indexOf(callback);\n if (idx >= 0) {\n layers.splice(idx, 1);\n if (layers.length === 0) {\n delete _layersByHostId[hostId];\n }\n }\n }\n var layerHosts = _layerHostsById[hostId];\n if (layerHosts) {\n for (var _i = 0, layerHosts_2 = layerHosts; _i < layerHosts_2.length; _i++) {\n var layerHost = layerHosts_2[_i];\n layerHost.notifyLayersChanged();\n }\n }\n}\n/**\n * Gets the number of layers currently registered with a host id.\n * @param hostId - Id of the layer host.\n * @returns The number of layers currently registered with the host.\n */\nexport function getLayerCount(hostId) {\n var layers = _layerHostsById[hostId];\n return layers ? layers.length : 0;\n}\n/**\n * Gets the Layer Host instance associated with a hostId, if applicable.\n * @param hostId - Id of the layer host\n * @returns A component ref for the associated layer host.\n */\nexport function getLayerHost(hostId) {\n var layerHosts = _layerHostsById[hostId];\n return (layerHosts && layerHosts[0]) || undefined;\n}\n/**\n * Registers a Layer Host with an associated hostId.\n * @param hostId - Id of the layer host\n * @param layerHost - layer host instance\n */\nexport function registerLayerHost(hostId, layerHost) {\n var layerHosts = _layerHostsById[hostId] || (_layerHostsById[hostId] = []);\n // Insert this at the start of an array to avoid race conditions between mount and unmount.\n // If a LayerHost is re-mounted, and mount of the new instance may occur before the unmount of the old one.\n // Putting the new instance at the start of this array ensures that calls to `getLayerHost` will immediately\n // get the new one even if the old one is around briefly.\n layerHosts.unshift(layerHost);\n}\n/**\n * Unregisters a Layer Host from the associated hostId.\n * @param hostId - Id of the layer host\n * @param layerHost - layer host instance\n */\nexport function unregisterLayerHost(hostId, layerHost) {\n var layerHosts = _layerHostsById[hostId];\n if (layerHosts) {\n var idx = layerHosts.indexOf(layerHost);\n if (idx >= 0) {\n layerHosts.splice(idx, 1);\n }\n if (layerHosts.length === 0) {\n delete _layerHostsById[hostId];\n }\n }\n}\n/**\n * When no default layer host is provided, this function is executed to create the default host.\n */\nexport function createDefaultLayerHost(doc, shadowRoot) {\n if (shadowRoot === void 0) { shadowRoot = null; }\n var host = doc.createElement('div');\n host.setAttribute('id', defaultHostId);\n host.style.cssText = 'position:fixed;z-index:1000000';\n if (shadowRoot) {\n shadowRoot.appendChild(host);\n }\n else {\n doc === null || doc === void 0 ? void 0 : doc.body.appendChild(host);\n }\n // doc?.body.appendChild(host);\n return host;\n}\n/**\n * This function can be optionally called to clean up the default layer host as needed.\n */\nexport function cleanupDefaultLayerHost(doc, shadowRoot) {\n if (shadowRoot === void 0) { shadowRoot = null; }\n var root = shadowRoot !== null && shadowRoot !== void 0 ? shadowRoot : doc;\n var host = root.querySelector(\"#\".concat(defaultHostId));\n if (host) {\n root.removeChild(host);\n }\n}\n/**\n * Used for notifying applicable Layers that a host is available/unavailable and to re-evaluate Layers that\n * care about the specific host.\n */\nexport function notifyHostChanged(id) {\n if (_layersByHostId[id]) {\n _layersByHostId[id].forEach(function (callback) { return callback(); });\n }\n}\n/**\n * Sets the default target selector to use when determining the host in which\n * Layered content will be injected into. If not provided, an element will be\n * created at the end of the document body.\n *\n * Passing in a falsy value will clear the default target and reset back to\n * using a created element at the end of document body.\n */\nexport function setDefaultTarget(selector) {\n _defaultHostSelector = selector;\n}\n/**\n * Get the default target selector when determining a host\n */\nexport function getDefaultTarget() {\n return _defaultHostSelector;\n}\n//# sourceMappingURL=Layer.notification.js.map","import { __assign } from \"tslib\";\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore \"react-portal-compat-context\" uses v9 configs via path aliases\nimport { usePortalCompat } from '@fluentui/react-portal-compat-context';\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { Fabric } from '../../Fabric';\nimport { classNamesFunction, css, getDocument, setPortalAttribute, setVirtualParent, FocusRectsProvider, FocusRectsContext, IsFocusVisibleClassName, } from '../../Utilities';\nimport { registerLayer, getDefaultTarget, unregisterLayer, getLayerHost, createDefaultLayerHost, } from './Layer.notification';\nimport { useIsomorphicLayoutEffect, useMergedRefs, useWarnings } from '@fluentui/react-hooks';\nvar getClassNames = classNamesFunction();\nvar getFocusVisibility = function (providerRef) {\n if (providerRef === null || providerRef === void 0 ? void 0 : providerRef.current) {\n return providerRef.current.classList.contains(IsFocusVisibleClassName);\n }\n return false;\n};\nexport var LayerBase = React.forwardRef(function (props, ref) {\n var registerPortalEl = usePortalCompat();\n var rootRef = React.useRef(null);\n var mergedRef = useMergedRefs(rootRef, ref);\n var layerRef = React.useRef();\n var fabricElementRef = React.useRef(null);\n var focusContext = React.useContext(FocusRectsContext);\n // Tracks if the layer mount events need to be raised.\n // Required to allow the DOM to render after the layer element is added.\n var _a = React.useState(false), needRaiseLayerMount = _a[0], setNeedRaiseLayerMount = _a[1];\n // Sets the focus visible className when the FocusRectsProvider for the layer is rendered\n // This allows the current focus visibility style to be carried over to the layer content\n var focusRectsRef = React.useCallback(function (el) {\n var isFocusVisible = getFocusVisibility(focusContext === null || focusContext === void 0 ? void 0 : focusContext.providerRef);\n if (el && isFocusVisible) {\n el.classList.add(IsFocusVisibleClassName);\n }\n }, [focusContext]);\n var children = props.children, className = props.className, eventBubblingEnabled = props.eventBubblingEnabled, fabricProps = props.fabricProps, hostId = props.hostId, insertFirst = props.insertFirst, _b = props.onLayerDidMount, onLayerDidMount = _b === void 0 ? function () { return undefined; } : _b, \n // eslint-disable-next-line @typescript-eslint/no-deprecated\n _c = props.onLayerMounted, \n // eslint-disable-next-line @typescript-eslint/no-deprecated\n onLayerMounted = _c === void 0 ? function () { return undefined; } : _c, onLayerWillUnmount = props.onLayerWillUnmount, styles = props.styles, theme = props.theme;\n var fabricRef = useMergedRefs(fabricElementRef, fabricProps === null || fabricProps === void 0 ? void 0 : fabricProps.ref, focusRectsRef);\n var classNames = getClassNames(styles, {\n theme: theme,\n className: className,\n isNotHost: !hostId,\n });\n // Returns the user provided hostId props element, the default target selector,\n // or undefined if document doesn't exist.\n var getHost = function (doc, shadowRoot) {\n var _a, _b;\n if (shadowRoot === void 0) { shadowRoot = null; }\n var root = shadowRoot !== null && shadowRoot !== void 0 ? shadowRoot : doc;\n if (hostId) {\n var layerHost = getLayerHost(hostId);\n if (layerHost) {\n return (_a = layerHost.rootRef.current) !== null && _a !== void 0 ? _a : null;\n }\n return (_b = root.getElementById(hostId)) !== null && _b !== void 0 ? _b : null;\n }\n else {\n var defaultHostSelector = getDefaultTarget();\n // Find the host.\n var host = defaultHostSelector ? root.querySelector(defaultHostSelector) : null;\n // If no host is available, create a container for injecting layers in.\n // Having a container scopes layout computation.\n if (!host) {\n host = createDefaultLayerHost(doc, shadowRoot);\n }\n return host;\n }\n };\n // Removes the current layer element's parentNode and runs onLayerWillUnmount prop if provided.\n var removeLayerElement = function () {\n onLayerWillUnmount === null || onLayerWillUnmount === void 0 ? void 0 : onLayerWillUnmount();\n var elem = layerRef.current;\n // Clear ref before removing from the DOM\n layerRef.current = undefined;\n if (elem && elem.parentNode) {\n elem.parentNode.removeChild(elem);\n }\n };\n // If a doc or host exists, it will remove and update layer parentNodes.\n var createLayerElement = function () {\n var _a, _b, _c, _d;\n var doc = getDocument(rootRef.current);\n var shadowRoot = ((_b = (_a = rootRef.current) === null || _a === void 0 ? void 0 : _a.getRootNode()) === null || _b === void 0 ? void 0 : _b.host)\n ? (_c = rootRef === null || rootRef === void 0 ? void 0 : rootRef.current) === null || _c === void 0 ? void 0 : _c.getRootNode()\n : undefined;\n if (!doc || (!doc && !shadowRoot)) {\n return;\n }\n var host = getHost(doc, shadowRoot);\n if (!host) {\n return;\n }\n // Tabster in V9 sets aria-hidden on the elements outside of the modal dialog. And it doesn't set aria-hidden\n // on the virtual children of the dialog. But the host element itself is not a virtual child of a dialog, it\n // might contain virtual children. noDirectAriaHidden flag makes Tabster to poke inside the element and set\n // aria-hidden on the children (if they are not virtual children of the active V9 dialog) not on the host element.\n // To avoid importing Tabster as a dependency here, we just set a flag on the host element which is checked by\n // Tabster.\n if (!host.__tabsterElementFlags) {\n host.__tabsterElementFlags = {};\n }\n host.__tabsterElementFlags.noDirectAriaHidden = true;\n // Remove and re-create any previous existing layer elements.\n removeLayerElement();\n var el = ((_d = host.ownerDocument) !== null && _d !== void 0 ? _d : doc).createElement('div');\n el.className = classNames.root;\n setPortalAttribute(el);\n setVirtualParent(el, rootRef.current);\n insertFirst ? host.insertBefore(el, host.firstChild) : host.appendChild(el);\n layerRef.current = el;\n setNeedRaiseLayerMount(true);\n };\n useIsomorphicLayoutEffect(function () {\n createLayerElement();\n // Check if the user provided a hostId prop and register the layer with the ID.\n if (hostId) {\n registerLayer(hostId, createLayerElement);\n }\n var unregisterPortalEl = layerRef.current ? registerPortalEl(layerRef.current) : undefined;\n return function () {\n if (unregisterPortalEl) {\n unregisterPortalEl();\n }\n removeLayerElement();\n if (hostId) {\n unregisterLayer(hostId, createLayerElement);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- should run if the hostId updates.\n }, [hostId]);\n React.useEffect(function () {\n if (layerRef.current && needRaiseLayerMount) {\n onLayerMounted === null || onLayerMounted === void 0 ? void 0 : onLayerMounted();\n onLayerDidMount === null || onLayerDidMount === void 0 ? void 0 : onLayerDidMount();\n setNeedRaiseLayerMount(false);\n }\n }, [needRaiseLayerMount, onLayerMounted, onLayerDidMount]);\n useDebugWarnings(props);\n return (React.createElement(\"span\", { className: \"ms-layer\", ref: mergedRef }, layerRef.current &&\n ReactDOM.createPortal(React.createElement(FocusRectsProvider, { layerRoot: true, providerRef: fabricRef },\n React.createElement(Fabric, __assign({}, (!eventBubblingEnabled && getFilteredEvents()), fabricProps, { className: css(classNames.content, fabricProps === null || fabricProps === void 0 ? void 0 : fabricProps.className), ref: fabricRef }), children)), layerRef.current)));\n});\nLayerBase.displayName = 'LayerBase';\nvar filteredEventProps;\nvar onFilterEvent = function (ev) {\n // We should just be able to check ev.bubble here and only stop events that are bubbling up. However, even though\n // mouseenter and mouseleave do NOT bubble up, they are showing up as bubbling. Therefore we stop events based on\n // event name rather than ev.bubble.\n if (ev.eventPhase === Event.BUBBLING_PHASE &&\n ev.type !== 'mouseenter' &&\n ev.type !== 'mouseleave' &&\n ev.type !== 'touchstart' &&\n ev.type !== 'touchend') {\n ev.stopPropagation();\n }\n};\nfunction getFilteredEvents() {\n if (!filteredEventProps) {\n filteredEventProps = {};\n [\n 'onClick',\n 'onContextMenu',\n 'onDoubleClick',\n 'onDrag',\n 'onDragEnd',\n 'onDragEnter',\n 'onDragExit',\n 'onDragLeave',\n 'onDragOver',\n 'onDragStart',\n 'onDrop',\n 'onMouseDown',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseOver',\n 'onMouseOut',\n 'onMouseUp',\n 'onTouchMove',\n 'onTouchStart',\n 'onTouchCancel',\n 'onTouchEnd',\n 'onKeyDown',\n 'onKeyPress',\n 'onKeyUp',\n 'onFocus',\n 'onBlur',\n 'onChange',\n 'onInput',\n 'onInvalid',\n 'onSubmit',\n ].forEach(function (name) { return (filteredEventProps[name] = onFilterEvent); });\n }\n return filteredEventProps;\n}\nfunction useDebugWarnings(props) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks -- build-time conditional\n useWarnings({\n name: 'Layer',\n props: props,\n deprecations: { onLayerMounted: 'onLayerDidMount' },\n });\n }\n}\n//# sourceMappingURL=Layer.base.js.map","import { ZIndexes, getGlobalClassNames } from '../../Styling';\nvar GlobalClassNames = {\n root: 'ms-Layer',\n rootNoHost: 'ms-Layer--fixed',\n content: 'ms-Layer-content',\n};\nexport var getStyles = function (props) {\n var className = props.className, isNotHost = props.isNotHost, theme = props.theme;\n var classNames = getGlobalClassNames(GlobalClassNames, theme);\n return {\n root: [\n classNames.root,\n theme.fonts.medium,\n isNotHost && [\n classNames.rootNoHost,\n {\n position: 'fixed',\n zIndex: ZIndexes.Layer,\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n visibility: 'hidden',\n },\n ],\n className,\n ],\n content: [\n classNames.content,\n {\n visibility: 'visible',\n },\n ],\n };\n};\n//# sourceMappingURL=Layer.styles.js.map","import { styled } from '../../Utilities';\nimport { LayerBase } from './Layer.base';\nimport { getStyles } from './Layer.styles';\nexport var Layer = styled(LayerBase, getStyles, undefined, {\n scope: 'Layer',\n fields: ['hostId', 'theme', 'styles'],\n});\n//# sourceMappingURL=Layer.js.map","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { CalloutContent } from './CalloutContent';\nimport { Layer } from '../../Layer';\nexport var Callout = React.forwardRef(function (_a, forwardedRef) {\n var layerProps = _a.layerProps, doNotLayer = _a.doNotLayer, rest = __rest(_a, [\"layerProps\", \"doNotLayer\"]);\n var content = React.createElement(CalloutContent, __assign({}, rest, { doNotLayer: doNotLayer, ref: forwardedRef }));\n return doNotLayer ? content : React.createElement(Layer, __assign({}, layerProps), content);\n});\nCallout.displayName = 'Callout';\n//# sourceMappingURL=Callout.js.map","import { __assign, __extends } from \"tslib\";\nimport * as React from 'react';\nimport { hasSubmenu, getIsChecked } from '../../utilities/contextualMenu/index';\nimport { getRTL, initializeComponentRef } from '../../Utilities';\nimport { Icon } from '../../Icon';\nvar defaultIconRenderer = function (props) {\n var item = props.item, classNames = props.classNames;\n var iconProps = item.iconProps;\n return React.createElement(Icon, __assign({}, iconProps, { className: classNames.icon }));\n};\nvar renderItemIcon = function (props) {\n var item = props.item, hasIcons = props.hasIcons;\n if (!hasIcons) {\n return null;\n }\n if (item.onRenderIcon) {\n return item.onRenderIcon(props, defaultIconRenderer);\n }\n return defaultIconRenderer(props);\n};\nvar renderCheckMarkIcon = function (_a) {\n var onCheckmarkClick = _a.onCheckmarkClick, item = _a.item, classNames = _a.classNames;\n var isItemChecked = getIsChecked(item);\n if (onCheckmarkClick) {\n // Ensures that the item is passed as the first argument to the checkmark click callback.\n var onClick = function (e) { return onCheckmarkClick(item, e); };\n return (React.createElement(Icon, { iconName: item.canCheck !== false && isItemChecked ? 'CheckMark' : '', className: classNames.checkmarkIcon, \n // eslint-disable-next-line react/jsx-no-bind\n onClick: onClick }));\n }\n return null;\n};\nvar renderItemName = function (_a) {\n var item = _a.item, classNames = _a.classNames;\n /* eslint-disable @typescript-eslint/no-deprecated */\n if (item.text || item.name) {\n return React.createElement(\"span\", { className: classNames.label }, item.text || item.name);\n }\n /* eslint-enable @typescript-eslint/no-deprecated */\n return null;\n};\nvar renderSecondaryText = function (_a) {\n var item = _a.item, classNames = _a.classNames;\n if (item.secondaryText) {\n return React.createElement(\"span\", { className: classNames.secondaryText }, item.secondaryText);\n }\n return null;\n};\nvar renderSubMenuIcon = function (_a) {\n var item = _a.item, classNames = _a.classNames, theme = _a.theme;\n if (hasSubmenu(item)) {\n return (React.createElement(Icon, __assign({ iconName: getRTL(theme) ? 'ChevronLeft' : 'ChevronRight' }, item.submenuIconProps, { className: classNames.subMenuIcon })));\n }\n return null;\n};\nvar ContextualMenuItemBase = /** @class */ (function (_super) {\n __extends(ContextualMenuItemBase, _super);\n function ContextualMenuItemBase(props) {\n var _this = _super.call(this, props) || this;\n _this.openSubMenu = function () {\n var _a = _this.props, item = _a.item, openSubMenu = _a.openSubMenu, getSubmenuTarget = _a.getSubmenuTarget;\n if (getSubmenuTarget) {\n var submenuTarget = getSubmenuTarget();\n if (hasSubmenu(item) && openSubMenu && submenuTarget) {\n openSubMenu(item, submenuTarget);\n }\n }\n };\n _this.dismissSubMenu = function () {\n var _a = _this.props, item = _a.item, dismissSubMenu = _a.dismissSubMenu;\n if (hasSubmenu(item) && dismissSubMenu) {\n dismissSubMenu();\n }\n };\n _this.dismissMenu = function (dismissAll) {\n var dismissMenu = _this.props.dismissMenu;\n if (dismissMenu) {\n dismissMenu(undefined /* ev */, dismissAll);\n }\n };\n initializeComponentRef(_this);\n return _this;\n }\n ContextualMenuItemBase.prototype.render = function () {\n var _a = this.props, item = _a.item, classNames = _a.classNames;\n var renderContent = item.onRenderContent || this._renderLayout;\n return (React.createElement(\"div\", { className: item.split ? classNames.linkContentMenu : classNames.linkContent }, renderContent(this.props, {\n renderCheckMarkIcon: renderCheckMarkIcon,\n renderItemIcon: renderItemIcon,\n renderItemName: renderItemName,\n renderSecondaryText: renderSecondaryText,\n renderSubMenuIcon: renderSubMenuIcon,\n })));\n };\n ContextualMenuItemBase.prototype._renderLayout = function (props, defaultRenders) {\n return (React.createElement(React.Fragment, null,\n defaultRenders.renderCheckMarkIcon(props),\n defaultRenders.renderItemIcon(props),\n defaultRenders.renderItemName(props),\n defaultRenders.renderSecondaryText(props),\n defaultRenders.renderSubMenuIcon(props)));\n };\n return ContextualMenuItemBase;\n}(React.Component));\nexport { ContextualMenuItemBase };\n//# sourceMappingURL=ContextualMenuItem.base.js.map","import { memoizeFunction } from '../../Utilities';\nimport { mergeStyleSets } from '../../Styling';\n/**\n * @deprecated use getStyles exported from VerticalDivider.styles.ts\n */\nexport var getDividerClassNames = memoizeFunction(\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nfunction (theme) {\n return mergeStyleSets({\n wrapper: {\n display: 'inline-flex',\n height: '100%',\n alignItems: 'center',\n },\n divider: {\n width: 1,\n height: '100%',\n backgroundColor: theme.palette.neutralTertiaryAlt,\n },\n });\n});\n//# sourceMappingURL=VerticalDivider.classNames.js.map","import { __assign } from \"tslib\";\nimport { concatStyleSets, getFocusStyle, HighContrastSelector, getScreenSelector, ScreenWidthMaxMedium, IconFontSizes, getHighContrastNoAdjustStyle, } from '../../Styling';\nimport { memoizeFunction } from '../../Utilities';\nexport var CONTEXTUAL_MENU_ITEM_HEIGHT = 36;\nvar MediumScreenSelector = getScreenSelector(0, ScreenWidthMaxMedium);\nexport var getMenuItemStyles = memoizeFunction(function (theme) {\n var _a, _b, _c, _d, _e;\n var semanticColors = theme.semanticColors, fonts = theme.fonts, palette = theme.palette;\n var ContextualMenuItemBackgroundHoverColor = semanticColors.menuItemBackgroundHovered;\n var ContextualMenuItemTextHoverColor = semanticColors.menuItemTextHovered;\n var ContextualMenuItemBackgroundSelectedColor = semanticColors.menuItemBackgroundPressed;\n var ContextualMenuItemDividerColor = semanticColors.bodyDivider;\n var menuItemStyles = {\n item: [\n fonts.medium,\n {\n color: semanticColors.bodyText,\n position: 'relative',\n boxSizing: 'border-box',\n },\n ],\n divider: {\n display: 'block',\n height: '1px',\n backgroundColor: ContextualMenuItemDividerColor,\n position: 'relative',\n },\n root: [\n getFocusStyle(theme),\n fonts.medium,\n {\n color: semanticColors.bodyText,\n backgroundColor: 'transparent',\n border: 'none',\n width: '100%',\n height: CONTEXTUAL_MENU_ITEM_HEIGHT,\n lineHeight: CONTEXTUAL_MENU_ITEM_HEIGHT,\n display: 'block',\n cursor: 'pointer',\n padding: '0px 8px 0 4px', // inner elements have a margin of 4px (4 + 4 = 8px as on right side)\n textAlign: 'left',\n },\n ],\n rootDisabled: {\n color: semanticColors.disabledBodyText,\n cursor: 'default',\n pointerEvents: 'none',\n selectors: (_a = {},\n _a[HighContrastSelector] = {\n // ensure disabled text looks different than enabled\n color: 'GrayText',\n opacity: 1,\n },\n _a),\n },\n rootHovered: {\n backgroundColor: ContextualMenuItemBackgroundHoverColor,\n color: ContextualMenuItemTextHoverColor,\n selectors: {\n '.ms-ContextualMenu-icon': {\n color: palette.themeDarkAlt,\n },\n '.ms-ContextualMenu-submenuIcon': {\n color: palette.neutralPrimary,\n },\n },\n },\n rootFocused: {\n backgroundColor: palette.white,\n },\n rootChecked: {\n selectors: {\n '.ms-ContextualMenu-checkmarkIcon': {\n color: palette.neutralPrimary,\n },\n },\n },\n rootPressed: {\n backgroundColor: ContextualMenuItemBackgroundSelectedColor,\n selectors: {\n '.ms-ContextualMenu-icon': {\n color: palette.themeDark,\n },\n '.ms-ContextualMenu-submenuIcon': {\n color: palette.neutralPrimary,\n },\n },\n },\n rootExpanded: {\n backgroundColor: ContextualMenuItemBackgroundSelectedColor,\n color: semanticColors.bodyTextChecked,\n selectors: (_b = {\n '.ms-ContextualMenu-submenuIcon': (_c = {},\n _c[HighContrastSelector] = {\n // icons inside of anchor tags are not properly inheriting color in high contrast\n color: 'inherit',\n },\n _c)\n },\n _b[HighContrastSelector] = __assign({}, getHighContrastNoAdjustStyle()),\n _b),\n },\n linkContent: {\n whiteSpace: 'nowrap',\n height: 'inherit',\n display: 'flex',\n alignItems: 'center',\n maxWidth: '100%',\n },\n anchorLink: {\n padding: '0px 8px 0 4px', // inner elements have a margin of 4px (4 + 4 = 8px as on right side)\n textRendering: 'auto',\n color: 'inherit',\n letterSpacing: 'normal',\n wordSpacing: 'normal',\n textTransform: 'none',\n textIndent: '0px',\n textShadow: 'none',\n textDecoration: 'none',\n boxSizing: 'border-box',\n },\n label: {\n margin: '0 4px',\n verticalAlign: 'middle',\n display: 'inline-block',\n flexGrow: '1',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n },\n secondaryText: {\n color: theme.palette.neutralSecondary,\n paddingLeft: '20px',\n textAlign: 'right',\n },\n icon: {\n display: 'inline-block',\n minHeight: '1px',\n maxHeight: CONTEXTUAL_MENU_ITEM_HEIGHT,\n fontSize: IconFontSizes.medium,\n width: IconFontSizes.medium,\n margin: '0 4px',\n verticalAlign: 'middle',\n flexShrink: '0',\n selectors: (_d = {},\n _d[MediumScreenSelector] = {\n fontSize: IconFontSizes.large,\n width: IconFontSizes.large,\n },\n _d),\n },\n iconColor: {\n color: semanticColors.menuIcon,\n },\n iconDisabled: {\n color: semanticColors.disabledBodyText,\n },\n checkmarkIcon: {\n color: semanticColors.bodySubtext,\n },\n subMenuIcon: {\n height: CONTEXTUAL_MENU_ITEM_HEIGHT,\n lineHeight: CONTEXTUAL_MENU_ITEM_HEIGHT,\n color: palette.neutralSecondary,\n textAlign: 'center',\n display: 'inline-block',\n verticalAlign: 'middle',\n flexShrink: '0',\n fontSize: IconFontSizes.small, // 12px\n selectors: (_e = {\n ':hover': {\n color: palette.neutralPrimary,\n },\n ':active': {\n color: palette.neutralPrimary,\n }\n },\n _e[MediumScreenSelector] = {\n fontSize: IconFontSizes.medium, // 16px\n },\n _e),\n },\n splitButtonFlexContainer: [\n getFocusStyle(theme),\n {\n display: 'flex',\n height: CONTEXTUAL_MENU_ITEM_HEIGHT,\n flexWrap: 'nowrap',\n justifyContent: 'center',\n alignItems: 'flex-start',\n },\n ],\n };\n return concatStyleSets(menuItemStyles);\n});\n//# sourceMappingURL=ContextualMenu.cnstyles.js.map","import { getDividerClassNames } from '../Divider/VerticalDivider.classNames';\nimport { getMenuItemStyles } from './ContextualMenu.cnstyles';\nimport { mergeStyleSets, getGlobalClassNames, getScreenSelector, ScreenWidthMaxMedium, hiddenContentStyle, } from '../../Styling';\nimport { memoizeFunction, IsFocusVisibleClassName } from '../../Utilities';\nvar CONTEXTUAL_SPLIT_MENU_MINWIDTH = '28px';\nvar MediumScreenSelector = getScreenSelector(0, ScreenWidthMaxMedium);\nexport var getSplitButtonVerticalDividerClassNames = memoizeFunction(\n/* eslint-disable @typescript-eslint/no-deprecated */\nfunction (theme) {\n var _a;\n return mergeStyleSets(getDividerClassNames(theme), {\n /* eslint-enable @typescript-eslint/no-deprecated */\n wrapper: {\n position: 'absolute',\n right: 28, // width of the splitMenu based on the padding plus icon fontSize\n selectors: (_a = {},\n _a[MediumScreenSelector] = {\n right: 32, // fontSize of the icon increased from 12px to 16px\n },\n _a),\n },\n divider: {\n height: 16,\n width: 1,\n },\n });\n});\nvar GlobalClassNames = {\n item: 'ms-ContextualMenu-item',\n divider: 'ms-ContextualMenu-divider',\n root: 'ms-ContextualMenu-link',\n isChecked: 'is-checked',\n isExpanded: 'is-expanded',\n isDisabled: 'is-disabled',\n linkContent: 'ms-ContextualMenu-linkContent',\n linkContentMenu: 'ms-ContextualMenu-linkContent',\n icon: 'ms-ContextualMenu-icon',\n iconColor: 'ms-ContextualMenu-iconColor',\n checkmarkIcon: 'ms-ContextualMenu-checkmarkIcon',\n subMenuIcon: 'ms-ContextualMenu-submenuIcon',\n label: 'ms-ContextualMenu-itemText',\n secondaryText: 'ms-ContextualMenu-secondaryText',\n splitMenu: 'ms-ContextualMenu-splitMenu',\n screenReaderText: 'ms-ContextualMenu-screenReaderText',\n};\n/**\n * @deprecated Will be removed in \\>= 7.0.\n * This is a package-internal method that has been depended on.\n * It is being kept in this form for backwards compatibility.\n * @internal\n */\n// TODO: Audit perf. impact of and potentially remove memoizeFunction.\n// https://github.com/microsoft/fluentui/issues/5534\nexport var getItemClassNames = memoizeFunction(function (theme, disabled, expanded, checked, isAnchorLink, knownIcon, itemClassName, dividerClassName, iconClassName, subMenuClassName, primaryDisabled, className) {\n var _a, _b, _c, _d;\n var styles = getMenuItemStyles(theme);\n var classNames = getGlobalClassNames(GlobalClassNames, theme);\n return mergeStyleSets({\n item: [classNames.item, styles.item, itemClassName],\n divider: [classNames.divider, styles.divider, dividerClassName],\n root: [\n classNames.root,\n styles.root,\n checked && [classNames.isChecked, styles.rootChecked],\n isAnchorLink && styles.anchorLink,\n expanded && [classNames.isExpanded, styles.rootExpanded],\n disabled && [classNames.isDisabled, styles.rootDisabled],\n !disabled &&\n !expanded && [\n {\n selectors: (_a = {\n ':hover': styles.rootHovered,\n ':active': styles.rootPressed\n },\n // eslint-disable-next-line @fluentui/max-len\n _a[\".\".concat(IsFocusVisibleClassName, \" &:focus, .\").concat(IsFocusVisibleClassName, \" &:focus:hover, :host(.\").concat(IsFocusVisibleClassName, \") &:focus, :host(.\").concat(IsFocusVisibleClassName, \") &:focus:hover\")] = styles.rootFocused,\n _a[\".\".concat(IsFocusVisibleClassName, \" &:hover, :host(.\").concat(IsFocusVisibleClassName, \") &:hover\")] = {\n background: 'inherit;',\n },\n _a),\n },\n ],\n className,\n ],\n splitPrimary: [\n styles.root,\n {\n width: \"calc(100% - \".concat(CONTEXTUAL_SPLIT_MENU_MINWIDTH, \")\"),\n },\n checked && ['is-checked', styles.rootChecked],\n (disabled || primaryDisabled) && ['is-disabled', styles.rootDisabled],\n !(disabled || primaryDisabled) &&\n !checked && [\n {\n selectors: (_b = {\n ':hover': styles.rootHovered\n },\n // when hovering over the splitPrimary also affect the splitMenu\n _b[\":hover ~ .\".concat(classNames.splitMenu)] = styles.rootHovered,\n _b[':active'] = styles.rootPressed,\n // eslint-disable-next-line @fluentui/max-len\n _b[\".\".concat(IsFocusVisibleClassName, \" &:focus, .\").concat(IsFocusVisibleClassName, \" &:focus:hover, :host(.\").concat(IsFocusVisibleClassName, \") &:focus, :host(.\").concat(IsFocusVisibleClassName, \") &:focus:hover\")] = styles.rootFocused,\n _b[\".\".concat(IsFocusVisibleClassName, \" &:hover, :host(.\").concat(IsFocusVisibleClassName, \") &:hover\")] = {\n background: 'inherit;',\n },\n _b),\n },\n ],\n ],\n splitMenu: [\n classNames.splitMenu,\n styles.root,\n {\n flexBasis: '0',\n padding: '0 8px',\n minWidth: CONTEXTUAL_SPLIT_MENU_MINWIDTH,\n },\n expanded && ['is-expanded', styles.rootExpanded],\n disabled && ['is-disabled', styles.rootDisabled],\n !disabled &&\n !expanded && [\n {\n selectors: (_c = {\n ':hover': styles.rootHovered,\n ':active': styles.rootPressed\n },\n // eslint-disable-next-line @fluentui/max-len\n _c[\".\".concat(IsFocusVisibleClassName, \" &:focus, .\").concat(IsFocusVisibleClassName, \" &:focus:hover, :host(.\").concat(IsFocusVisibleClassName, \") &:focus, :host(.\").concat(IsFocusVisibleClassName, \") &:focus:hover\")] = styles.rootFocused,\n _c[\".\".concat(IsFocusVisibleClassName, \" &:hover, :host(.\").concat(IsFocusVisibleClassName, \") &:hover\")] = {\n background: 'inherit;',\n },\n _c),\n },\n ],\n ],\n anchorLink: styles.anchorLink,\n linkContent: [classNames.linkContent, styles.linkContent],\n linkContentMenu: [\n classNames.linkContentMenu,\n styles.linkContent,\n {\n justifyContent: 'center',\n },\n ],\n icon: [\n classNames.icon,\n knownIcon && styles.iconColor,\n styles.icon,\n iconClassName,\n disabled && [classNames.isDisabled, styles.iconDisabled],\n ],\n iconColor: styles.iconColor,\n checkmarkIcon: [classNames.checkmarkIcon, knownIcon && styles.checkmarkIcon, styles.icon, iconClassName],\n subMenuIcon: [\n classNames.subMenuIcon,\n styles.subMenuIcon,\n subMenuClassName,\n expanded && { color: theme.palette.neutralPrimary },\n disabled && [styles.iconDisabled],\n ],\n label: [classNames.label, styles.label],\n secondaryText: [classNames.secondaryText, styles.secondaryText],\n splitContainer: [\n styles.splitButtonFlexContainer,\n !disabled &&\n !checked && [\n {\n selectors: (_d = {},\n // eslint-disable-next-line @fluentui/max-len\n _d[\".\".concat(IsFocusVisibleClassName, \" &:focus, .\").concat(IsFocusVisibleClassName, \" &:focus:hover, :host(.\").concat(IsFocusVisibleClassName, \") &:focus, :host(.\").concat(IsFocusVisibleClassName, \") &:focus:hover\")] = styles.rootFocused,\n _d),\n },\n ],\n ],\n screenReaderText: [\n classNames.screenReaderText,\n styles.screenReaderText,\n hiddenContentStyle,\n { visibility: 'hidden' },\n ],\n });\n});\n/**\n * Wrapper function for generating ContextualMenuItem classNames which adheres to\n * the getStyles API, but invokes memoized className generator function with\n * primitive values.\n *\n * @param props - the ContextualMenuItem style props used to generate its styles.\n */\nexport var getItemStyles = function (props) {\n var theme = props.theme, disabled = props.disabled, expanded = props.expanded, checked = props.checked, isAnchorLink = props.isAnchorLink, knownIcon = props.knownIcon, itemClassName = props.itemClassName, dividerClassName = props.dividerClassName, iconClassName = props.iconClassName, subMenuClassName = props.subMenuClassName, primaryDisabled = props.primaryDisabled, className = props.className;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return getItemClassNames(theme, disabled, expanded, checked, isAnchorLink, knownIcon, itemClassName, dividerClassName, iconClassName, subMenuClassName, primaryDisabled, className);\n};\n//# sourceMappingURL=ContextualMenu.classNames.js.map","import { styled } from '../../Utilities';\nimport { ContextualMenuItemBase } from './ContextualMenuItem.base';\nimport { getItemStyles } from './ContextualMenu.classNames';\n/**\n * ContextualMenuItem description\n */\nexport var ContextualMenuItem = styled(ContextualMenuItemBase, getItemStyles, undefined, { scope: 'ContextualMenuItem' });\n//# sourceMappingURL=ContextualMenuItem.js.map","import { __extends } from \"tslib\";\nimport * as React from 'react';\nimport { initializeComponentRef, shallowCompare } from '../../../Utilities';\nvar ContextualMenuItemWrapper = /** @class */ (function (_super) {\n __extends(ContextualMenuItemWrapper, _super);\n function ContextualMenuItemWrapper(props) {\n var _this = _super.call(this, props) || this;\n _this._onItemMouseEnter = function (ev) {\n var _a = _this.props, item = _a.item, onItemMouseEnter = _a.onItemMouseEnter;\n if (onItemMouseEnter) {\n onItemMouseEnter(item, ev, ev.currentTarget);\n }\n };\n _this._onItemClick = function (ev) {\n var _a = _this.props, item = _a.item, onItemClickBase = _a.onItemClickBase;\n if (onItemClickBase) {\n onItemClickBase(item, ev, ev.currentTarget);\n }\n };\n _this._onItemMouseLeave = function (ev) {\n var _a = _this.props, item = _a.item, onItemMouseLeave = _a.onItemMouseLeave;\n if (onItemMouseLeave) {\n onItemMouseLeave(item, ev);\n }\n };\n _this._onItemKeyDown = function (ev) {\n var _a = _this.props, item = _a.item, onItemKeyDown = _a.onItemKeyDown;\n if (onItemKeyDown) {\n onItemKeyDown(item, ev);\n }\n };\n _this._onItemMouseMove = function (ev) {\n var _a = _this.props, item = _a.item, onItemMouseMove = _a.onItemMouseMove;\n if (onItemMouseMove) {\n onItemMouseMove(item, ev, ev.currentTarget);\n }\n };\n _this._getSubmenuTarget = function () {\n return undefined;\n };\n initializeComponentRef(_this);\n return _this;\n }\n ContextualMenuItemWrapper.prototype.shouldComponentUpdate = function (newProps) {\n return !shallowCompare(newProps, this.props);\n };\n return ContextualMenuItemWrapper;\n}(React.Component));\nexport { ContextualMenuItemWrapper };\n//# sourceMappingURL=ContextualMenuItemWrapper.js.map","import { __spreadArray } from \"tslib\";\nimport { KTP_SEPARATOR, KTP_PREFIX, DATAKTP_TARGET, DATAKTP_EXECUTE_TARGET, KTP_LAYER_ID } from './KeytipConstants';\nimport { addElementAtIndex } from '../../Utilities';\n/**\n * Converts a whole set of KeySequences into one keytip ID, which will be the ID for the last keytip sequence specified\n * keySequences should not include the initial keytip 'start' sequence.\n *\n * @param keySequences - Full path of IKeySequences for one keytip.\n * @returns String to use for the keytip ID.\n */\nexport function sequencesToID(keySequences) {\n return keySequences.reduce(function (prevValue, keySequence) {\n return prevValue + KTP_SEPARATOR + keySequence.split('').join(KTP_SEPARATOR);\n }, KTP_PREFIX);\n}\n/**\n * Merges an overflow sequence with a key sequence.\n *\n * @param keySequences - Full sequence for one keytip.\n * @param overflowKeySequences - Full overflow keytip sequence.\n * @returns Sequence that will be used by the keytip when in the overflow.\n */\nexport function mergeOverflows(keySequences, overflowKeySequences) {\n var overflowSequenceLen = overflowKeySequences.length;\n var overflowSequence = __spreadArray([], overflowKeySequences, true).pop();\n var newKeySequences = __spreadArray([], keySequences, true);\n return addElementAtIndex(newKeySequences, overflowSequenceLen - 1, overflowSequence);\n}\n/**\n * Constructs the data-ktp-target attribute selector from a full key sequence.\n *\n * @param keySequences - Full string[] for a Keytip.\n * @returns String selector to use to query for the keytip target.\n */\nexport function ktpTargetFromSequences(keySequences) {\n return '[' + DATAKTP_TARGET + '=\"' + sequencesToID(keySequences) + '\"]';\n}\n/**\n * Constructs the data-ktp-execute-target attribute selector from a keytip ID.\n *\n * @param keytipId - ID of the Keytip.\n * @returns String selector to use to query for the keytip execute target.\n */\nexport function ktpTargetFromId(keytipId) {\n return '[' + DATAKTP_EXECUTE_TARGET + '=\"' + keytipId + '\"]';\n}\n/**\n * Gets the aria-describedby value to put on the component with this keytip.\n *\n * @param keySequences - KeySequences of the keytip.\n * @returns The aria-describedby value to set on the component with this keytip.\n */\nexport function getAriaDescribedBy(keySequences) {\n var describedby = ' ' + KTP_LAYER_ID;\n if (!keySequences.length) {\n // Return just the layer ID\n return describedby;\n }\n return describedby + ' ' + sequencesToID(keySequences);\n}\n//# sourceMappingURL=KeytipUtils.js.map","import { __assign, __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { useConst, useIsomorphicLayoutEffect, usePrevious } from '@fluentui/react-hooks';\nimport { mergeAriaAttributeValues } from '../../Utilities';\nimport { KeytipManager, mergeOverflows, sequencesToID, getAriaDescribedBy } from '../../utilities/keytips/index';\n/**\n * Hook that creates attributes for components which are enabled with Keytip.\n */\nexport function useKeytipData(options) {\n var uniqueId = React.useRef();\n var keytipProps = options.keytipProps\n ? __assign({ disabled: options.disabled }, options.keytipProps) : undefined;\n var keytipManager = useConst(KeytipManager.getInstance());\n var prevOptions = usePrevious(options);\n // useLayoutEffect used to strictly emulate didUpdate/didMount behavior\n useIsomorphicLayoutEffect(function () {\n if (uniqueId.current &&\n keytipProps &&\n ((prevOptions === null || prevOptions === void 0 ? void 0 : prevOptions.keytipProps) !== options.keytipProps || (prevOptions === null || prevOptions === void 0 ? void 0 : prevOptions.disabled) !== options.disabled)) {\n keytipManager.update(keytipProps, uniqueId.current);\n }\n });\n useIsomorphicLayoutEffect(function () {\n // Register Keytip in KeytipManager\n if (keytipProps) {\n uniqueId.current = keytipManager.register(keytipProps);\n }\n return function () {\n // Unregister Keytip in KeytipManager\n keytipProps && keytipManager.unregister(keytipProps, uniqueId.current);\n };\n // this is meant to run only at mount, and updates are handled separately\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n var nativeKeytipProps = {\n ariaDescribedBy: options.ariaDescribedBy,\n keytipId: undefined,\n };\n if (keytipProps) {\n nativeKeytipProps = getKeytipData(keytipManager, keytipProps, options.ariaDescribedBy);\n }\n return nativeKeytipProps;\n}\n/**\n * Gets the aria- and data- attributes to attach to the component\n * @param keytipProps - options for Keytip\n * @param describedByPrepend - ariaDescribedBy value to prepend\n */\nfunction getKeytipData(keytipManager, keytipProps, describedByPrepend) {\n // Add the parent overflow sequence if necessary\n var newKeytipProps = keytipManager.addParentOverflow(keytipProps);\n // Construct aria-describedby and data-ktp-id attributes\n var ariaDescribedBy = mergeAriaAttributeValues(describedByPrepend, getAriaDescribedBy(newKeytipProps.keySequences));\n var keySequences = __spreadArray([], newKeytipProps.keySequences, true);\n if (newKeytipProps.overflowSetSequence) {\n keySequences = mergeOverflows(keySequences, newKeytipProps.overflowSetSequence);\n }\n var keytipId = sequencesToID(keySequences);\n return {\n ariaDescribedBy: ariaDescribedBy,\n keytipId: keytipId,\n };\n}\n//# sourceMappingURL=useKeytipData.js.map","import { __rest } from \"tslib\";\nimport { DATAKTP_TARGET, DATAKTP_EXECUTE_TARGET } from '../../utilities/keytips/index';\nimport { useKeytipData } from './useKeytipData';\n/**\n * A small element to help the target component correctly read out its aria-describedby for its Keytip\n * {@docCategory Keytips}\n */\nexport var KeytipData = function (props) {\n var _a;\n var children = props.children, keytipDataProps = __rest(props, [\"children\"]);\n var _b = useKeytipData(keytipDataProps), keytipId = _b.keytipId, ariaDescribedBy = _b.ariaDescribedBy;\n return children((_a = {},\n _a[DATAKTP_TARGET] = keytipId,\n _a[DATAKTP_EXECUTE_TARGET] = keytipId,\n _a['aria-describedby'] = ariaDescribedBy,\n _a));\n};\n//# sourceMappingURL=KeytipData.js.map","import { __assign, __extends } from \"tslib\";\nimport * as React from 'react';\nimport { anchorProperties, getNativeProps, memoizeFunction, getId, mergeAriaAttributeValues, composeComponentAs, } from '../../../Utilities';\nimport { ContextualMenuItemWrapper } from './ContextualMenuItemWrapper';\nimport { KeytipData } from '../../../KeytipData';\nimport { isItemDisabled, hasSubmenu } from '../../../utilities/contextualMenu/index';\nimport { ContextualMenuItem } from '../ContextualMenuItem';\nvar ContextualMenuAnchor = /** @class */ (function (_super) {\n __extends(ContextualMenuAnchor, _super);\n function ContextualMenuAnchor() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._anchor = React.createRef();\n _this._getMemoizedMenuButtonKeytipProps = memoizeFunction(function (keytipProps) {\n return __assign(__assign({}, keytipProps), { hasMenu: true });\n });\n _this._getSubmenuTarget = function () {\n return _this._anchor.current ? _this._anchor.current : undefined;\n };\n _this._onItemClick = function (ev) {\n var _a = _this.props, item = _a.item, onItemClick = _a.onItemClick;\n if (onItemClick) {\n onItemClick(item, ev);\n }\n };\n _this._renderAriaDescription = function (ariaDescription, className) {\n // If ariaDescription is given, descriptionId will be assigned to ariaDescriptionSpan\n return ariaDescription ? (React.createElement(\"span\", { id: _this._ariaDescriptionId, className: className }, ariaDescription)) : null;\n };\n return _this;\n }\n ContextualMenuAnchor.prototype.render = function () {\n var _this = this;\n var _a = this.props, item = _a.item, classNames = _a.classNames, index = _a.index, focusableElementIndex = _a.focusableElementIndex, totalItemCount = _a.totalItemCount, hasCheckmarks = _a.hasCheckmarks, hasIcons = _a.hasIcons, expandedMenuItemKey = _a.expandedMenuItemKey, onItemClick = _a.onItemClick, openSubMenu = _a.openSubMenu, dismissSubMenu = _a.dismissSubMenu, dismissMenu = _a.dismissMenu;\n var ChildrenRenderer = ContextualMenuItem;\n if (this.props.item.contextualMenuItemAs) {\n ChildrenRenderer = composeComponentAs(this.props.item.contextualMenuItemAs, ChildrenRenderer);\n }\n if (this.props.contextualMenuItemAs) {\n ChildrenRenderer = composeComponentAs(this.props.contextualMenuItemAs, ChildrenRenderer);\n }\n var anchorRel = item.rel;\n if (item.target && item.target.toLowerCase() === '_blank') {\n anchorRel = anchorRel ? anchorRel : 'nofollow noopener noreferrer'; // Safe default to prevent tabjacking\n }\n var itemHasSubmenu = hasSubmenu(item);\n var nativeProps = getNativeProps(item, anchorProperties);\n var disabled = isItemDisabled(item);\n var itemProps = item.itemProps, ariaDescription = item.ariaDescription;\n var keytipProps = item.keytipProps;\n if (keytipProps && itemHasSubmenu) {\n keytipProps = this._getMemoizedMenuButtonKeytipProps(keytipProps);\n }\n // Check for ariaDescription to set the _ariaDescriptionId and render a hidden span with\n // the description in it to be added to ariaDescribedBy\n if (ariaDescription) {\n this._ariaDescriptionId = getId();\n }\n var ariaDescribedByIds = mergeAriaAttributeValues(item.ariaDescribedBy, ariaDescription ? this._ariaDescriptionId : undefined, nativeProps['aria-describedby']);\n var additionalItemProperties = {\n 'aria-describedby': ariaDescribedByIds,\n };\n return (React.createElement(\"div\", null,\n React.createElement(KeytipData, { keytipProps: item.keytipProps, ariaDescribedBy: ariaDescribedByIds, disabled: disabled }, function (keytipAttributes) { return (React.createElement(\"a\", __assign({}, additionalItemProperties, nativeProps, keytipAttributes, { ref: _this._anchor, href: item.href, target: item.target, rel: anchorRel, className: classNames.root, role: \"menuitem\", \"aria-haspopup\": itemHasSubmenu || undefined, \"aria-expanded\": itemHasSubmenu ? item.key === expandedMenuItemKey : undefined, \"aria-posinset\": focusableElementIndex + 1, \"aria-setsize\": totalItemCount, \"aria-disabled\": isItemDisabled(item), \n // eslint-disable-next-line @typescript-eslint/no-deprecated\n style: item.style, onClick: _this._onItemClick, onMouseEnter: _this._onItemMouseEnter, onMouseLeave: _this._onItemMouseLeave, onMouseMove: _this._onItemMouseMove, onKeyDown: itemHasSubmenu ? _this._onItemKeyDown : undefined }),\n React.createElement(ChildrenRenderer, __assign({ componentRef: item.componentRef, item: item, classNames: classNames, index: index, onCheckmarkClick: hasCheckmarks && onItemClick ? onItemClick : undefined, hasIcons: hasIcons, openSubMenu: openSubMenu, dismissSubMenu: dismissSubMenu, dismissMenu: dismissMenu, getSubmenuTarget: _this._getSubmenuTarget }, itemProps)),\n _this._renderAriaDescription(ariaDescription, classNames.screenReaderText))); })));\n };\n return ContextualMenuAnchor;\n}(ContextualMenuItemWrapper));\nexport { ContextualMenuAnchor };\n//# sourceMappingURL=ContextualMenuAnchor.js.map","import { __assign, __extends } from \"tslib\";\nimport * as React from 'react';\nimport { buttonProperties, getNativeProps, memoizeFunction, getId, mergeAriaAttributeValues, composeComponentAs, } from '../../../Utilities';\nimport { ContextualMenuItemWrapper } from './ContextualMenuItemWrapper';\nimport { KeytipData } from '../../../KeytipData';\nimport { getIsChecked, isItemDisabled, hasSubmenu, getMenuItemAriaRole } from '../../../utilities/contextualMenu/index';\nimport { ContextualMenuItem } from '../ContextualMenuItem';\nvar ContextualMenuButton = /** @class */ (function (_super) {\n __extends(ContextualMenuButton, _super);\n function ContextualMenuButton() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._btn = React.createRef();\n _this._getMemoizedMenuButtonKeytipProps = memoizeFunction(function (keytipProps) {\n return __assign(__assign({}, keytipProps), { hasMenu: true });\n });\n _this._renderAriaDescription = function (ariaDescription, className) {\n // If ariaDescription is given, descriptionId will be assigned to ariaDescriptionSpan\n return ariaDescription ? (React.createElement(\"span\", { id: _this._ariaDescriptionId, className: className }, ariaDescription)) : null;\n };\n _this._getSubmenuTarget = function () {\n return _this._btn.current ? _this._btn.current : undefined;\n };\n return _this;\n }\n ContextualMenuButton.prototype.render = function () {\n var _this = this;\n var _a = this.props, item = _a.item, classNames = _a.classNames, index = _a.index, focusableElementIndex = _a.focusableElementIndex, totalItemCount = _a.totalItemCount, hasCheckmarks = _a.hasCheckmarks, hasIcons = _a.hasIcons, contextualMenuItemAs = _a.contextualMenuItemAs, expandedMenuItemKey = _a.expandedMenuItemKey, onItemMouseDown = _a.onItemMouseDown, onItemClick = _a.onItemClick, openSubMenu = _a.openSubMenu, dismissSubMenu = _a.dismissSubMenu, dismissMenu = _a.dismissMenu;\n var ChildrenRenderer = ContextualMenuItem;\n if (item.contextualMenuItemAs) {\n ChildrenRenderer = composeComponentAs(item.contextualMenuItemAs, ChildrenRenderer);\n }\n if (contextualMenuItemAs) {\n ChildrenRenderer = composeComponentAs(contextualMenuItemAs, ChildrenRenderer);\n }\n var isChecked = getIsChecked(item);\n var canCheck = isChecked !== null;\n var defaultRole = getMenuItemAriaRole(item);\n var itemHasSubmenu = hasSubmenu(item);\n var itemProps = item.itemProps, ariaLabel = item.ariaLabel, ariaDescription = item.ariaDescription;\n var buttonNativeProperties = getNativeProps(item, buttonProperties);\n // Do not add the disabled attribute to the button so that it is focusable\n delete buttonNativeProperties.disabled;\n var itemRole = item.role || defaultRole;\n // Check for ariaDescription to set the _ariaDescriptionId and render a hidden span with\n // the description in it to be added to ariaDescribedBy\n if (ariaDescription) {\n this._ariaDescriptionId = getId();\n }\n var ariaDescribedByIds = mergeAriaAttributeValues(item.ariaDescribedBy, ariaDescription ? this._ariaDescriptionId : undefined, buttonNativeProperties['aria-describedby']);\n var itemButtonProperties = {\n className: classNames.root,\n onClick: this._onItemClick,\n onKeyDown: itemHasSubmenu ? this._onItemKeyDown : undefined,\n onMouseEnter: this._onItemMouseEnter,\n onMouseLeave: this._onItemMouseLeave,\n onMouseDown: function (ev) {\n return onItemMouseDown ? onItemMouseDown(item, ev) : undefined;\n },\n onMouseMove: this._onItemMouseMove,\n href: item.href,\n title: item.title,\n 'aria-label': ariaLabel,\n 'aria-describedby': ariaDescribedByIds,\n 'aria-haspopup': itemHasSubmenu || undefined,\n 'aria-expanded': itemHasSubmenu ? item.key === expandedMenuItemKey : undefined,\n 'aria-posinset': focusableElementIndex + 1,\n 'aria-setsize': totalItemCount,\n 'aria-disabled': isItemDisabled(item),\n 'aria-checked': (itemRole === 'menuitemcheckbox' || itemRole === 'menuitemradio') && canCheck ? !!isChecked : undefined,\n 'aria-selected': itemRole === 'menuitem' && canCheck ? !!isChecked : undefined,\n role: itemRole,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n style: item.style,\n };\n var keytipProps = item.keytipProps;\n if (keytipProps && itemHasSubmenu) {\n keytipProps = this._getMemoizedMenuButtonKeytipProps(keytipProps);\n }\n return (React.createElement(KeytipData, { keytipProps: keytipProps, ariaDescribedBy: ariaDescribedByIds, disabled: isItemDisabled(item) }, function (keytipAttributes) { return (React.createElement(\"button\", __assign({ ref: _this._btn }, buttonNativeProperties, itemButtonProperties, keytipAttributes),\n React.createElement(ChildrenRenderer, __assign({ componentRef: item.componentRef, item: item, classNames: classNames, index: index, onCheckmarkClick: hasCheckmarks && onItemClick ? onItemClick : undefined, hasIcons: hasIcons, openSubMenu: openSubMenu, dismissSubMenu: dismissSubMenu, dismissMenu: dismissMenu, getSubmenuTarget: _this._getSubmenuTarget }, itemProps)),\n _this._renderAriaDescription(ariaDescription, classNames.screenReaderText))); }));\n };\n return ContextualMenuButton;\n}(ContextualMenuItemWrapper));\nexport { ContextualMenuButton };\n//# sourceMappingURL=ContextualMenuButton.js.map","export var getStyles = function (props) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n var theme = props.theme, getClassNames = props.getClassNames, className = props.className;\n if (!theme) {\n throw new Error('Theme is undefined or null.');\n }\n if (getClassNames) {\n var names = getClassNames(theme);\n return {\n wrapper: [names.wrapper],\n divider: [names.divider],\n };\n }\n return {\n wrapper: [\n {\n display: 'inline-flex',\n height: '100%',\n alignItems: 'center',\n },\n className,\n ],\n divider: [\n {\n width: 1,\n height: '100%',\n backgroundColor: theme.palette.neutralTertiaryAlt,\n },\n ],\n };\n};\n//# sourceMappingURL=VerticalDivider.styles.js.map","import * as React from 'react';\nimport { classNamesFunction } from '../../Utilities';\nvar getClassNames = classNamesFunction();\nexport var VerticalDividerBase = React.forwardRef(function (props, ref) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n var styles = props.styles, theme = props.theme, deprecatedGetClassNames = props.getClassNames, className = props.className;\n var classNames = getClassNames(styles, { theme: theme, getClassNames: deprecatedGetClassNames, className: className });\n return (React.createElement(\"span\", { className: classNames.wrapper, ref: ref },\n React.createElement(\"span\", { className: classNames.divider })));\n});\nVerticalDividerBase.displayName = 'VerticalDividerBase';\n//# sourceMappingURL=VerticalDivider.base.js.map","import { getStyles } from './VerticalDivider.styles';\nimport { VerticalDividerBase } from './VerticalDivider.base';\nimport { styled } from '../../Utilities';\nexport var VerticalDivider = styled(VerticalDividerBase, getStyles, undefined, {\n scope: 'VerticalDivider',\n});\n//# sourceMappingURL=VerticalDivider.js.map","import { __assign, __extends } from \"tslib\";\nimport * as React from 'react';\nimport { buttonProperties, getNativeProps, KeyCodes, mergeAriaAttributeValues, memoizeFunction, Async, EventGroup, getId, composeComponentAs, } from '../../../Utilities';\nimport { ContextualMenuItem } from '../ContextualMenuItem';\nimport { getSplitButtonVerticalDividerClassNames } from '../ContextualMenu.classNames';\nimport { KeytipData } from '../../../KeytipData';\nimport { getIsChecked, getMenuItemAriaRole, hasSubmenu, isItemDisabled } from '../../../utilities/contextualMenu/index';\nimport { VerticalDivider } from '../../../Divider';\nimport { ContextualMenuItemWrapper } from './ContextualMenuItemWrapper';\nvar TouchIdleDelay = 500; /* ms */\nvar ContextualMenuSplitButton = /** @class */ (function (_super) {\n __extends(ContextualMenuSplitButton, _super);\n function ContextualMenuSplitButton(props) {\n var _this = _super.call(this, props) || this;\n _this._getMemoizedMenuButtonKeytipProps = memoizeFunction(function (keytipProps) {\n return __assign(__assign({}, keytipProps), { hasMenu: true });\n });\n _this._onItemKeyDown = function (ev) {\n var _a = _this.props, item = _a.item, onItemKeyDown = _a.onItemKeyDown;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (ev.which === KeyCodes.enter) {\n _this._executeItemClick(ev);\n ev.preventDefault();\n ev.stopPropagation();\n }\n else if (onItemKeyDown) {\n onItemKeyDown(item, ev);\n }\n };\n _this._getSubmenuTarget = function () {\n return _this._splitButton;\n };\n _this._renderAriaDescription = function (ariaDescription, className) {\n // If ariaDescription is given, descriptionId will be assigned to ariaDescriptionSpan\n return ariaDescription ? (React.createElement(\"span\", { id: _this._ariaDescriptionId, className: className }, ariaDescription)) : null;\n };\n _this._onItemMouseEnterPrimary = function (ev) {\n var _a = _this.props, item = _a.item, onItemMouseEnter = _a.onItemMouseEnter;\n if (onItemMouseEnter) {\n onItemMouseEnter(__assign(__assign({}, item), { subMenuProps: undefined, items: undefined }), ev, _this._splitButton);\n }\n };\n _this._onItemMouseEnterIcon = function (ev) {\n var _a = _this.props, item = _a.item, onItemMouseEnter = _a.onItemMouseEnter;\n if (onItemMouseEnter) {\n onItemMouseEnter(item, ev, _this._splitButton);\n }\n };\n _this._onItemMouseMovePrimary = function (ev) {\n var _a = _this.props, item = _a.item, onItemMouseMove = _a.onItemMouseMove;\n if (onItemMouseMove) {\n onItemMouseMove(__assign(__assign({}, item), { subMenuProps: undefined, items: undefined }), ev, _this._splitButton);\n }\n };\n _this._onItemMouseMoveIcon = function (ev) {\n var _a = _this.props, item = _a.item, onItemMouseMove = _a.onItemMouseMove;\n if (onItemMouseMove) {\n onItemMouseMove(item, ev, _this._splitButton);\n }\n };\n _this._onIconItemClick = function (ev) {\n var _a = _this.props, item = _a.item, onItemClickBase = _a.onItemClickBase;\n if (onItemClickBase) {\n onItemClickBase(item, ev, (_this._splitButton ? _this._splitButton : ev.currentTarget));\n }\n };\n _this._executeItemClick = function (ev) {\n var _a = _this.props, item = _a.item, executeItemClick = _a.executeItemClick, onItemClick = _a.onItemClick;\n if (item.disabled || item.isDisabled) {\n return;\n }\n if (_this._processingTouch && !item.canCheck && onItemClick) {\n return onItemClick(item, ev);\n }\n if (executeItemClick) {\n executeItemClick(item, ev);\n }\n };\n _this._onTouchStart = function (ev) {\n if (_this._splitButton && !('onpointerdown' in _this._splitButton)) {\n _this._handleTouchAndPointerEvent(ev);\n }\n };\n _this._onPointerDown = function (ev) {\n if (ev.pointerType === 'touch') {\n _this._handleTouchAndPointerEvent(ev);\n ev.preventDefault();\n ev.stopImmediatePropagation();\n }\n };\n _this._async = new Async(_this);\n _this._events = new EventGroup(_this);\n _this._dismissLabelId = getId();\n return _this;\n }\n ContextualMenuSplitButton.prototype.componentDidMount = function () {\n if (this._splitButton && 'onpointerdown' in this._splitButton) {\n this._events.on(this._splitButton, 'pointerdown', this._onPointerDown, true);\n }\n };\n ContextualMenuSplitButton.prototype.componentWillUnmount = function () {\n this._async.dispose();\n this._events.dispose();\n };\n ContextualMenuSplitButton.prototype.render = function () {\n var _this = this;\n var _a;\n var _b = this.props, item = _b.item, classNames = _b.classNames, index = _b.index, focusableElementIndex = _b.focusableElementIndex, totalItemCount = _b.totalItemCount, hasCheckmarks = _b.hasCheckmarks, hasIcons = _b.hasIcons, onItemMouseLeave = _b.onItemMouseLeave, expandedMenuItemKey = _b.expandedMenuItemKey;\n var itemHasSubmenu = hasSubmenu(item);\n var keytipProps = item.keytipProps;\n if (keytipProps) {\n keytipProps = this._getMemoizedMenuButtonKeytipProps(keytipProps);\n }\n // Check for ariaDescription to set the _ariaDescriptionId and render a hidden span with\n // the description in it to be added to ariaDescribedBy\n var ariaDescription = item.ariaDescription;\n if (ariaDescription) {\n this._ariaDescriptionId = getId();\n }\n var ariaChecked = (_a = getIsChecked(item)) !== null && _a !== void 0 ? _a : undefined;\n return (React.createElement(KeytipData, { keytipProps: keytipProps, disabled: isItemDisabled(item) }, function (keytipAttributes) { return (React.createElement(\"div\", { \"data-ktp-target\": keytipAttributes['data-ktp-target'], ref: function (splitButton) { return (_this._splitButton = splitButton); }, role: getMenuItemAriaRole(item), \"aria-label\": item.ariaLabel, className: classNames.splitContainer, \"aria-disabled\": isItemDisabled(item), \"aria-expanded\": itemHasSubmenu ? item.key === expandedMenuItemKey : undefined, \"aria-haspopup\": true, \"aria-describedby\": mergeAriaAttributeValues(item.ariaDescribedBy, ariaDescription ? _this._ariaDescriptionId : undefined, keytipAttributes['aria-describedby']), \"aria-checked\": ariaChecked, \"aria-posinset\": focusableElementIndex + 1, \"aria-setsize\": totalItemCount, onMouseEnter: _this._onItemMouseEnterPrimary, onMouseLeave: onItemMouseLeave ? onItemMouseLeave.bind(_this, __assign(__assign({}, item), { subMenuProps: null, items: null })) : undefined, onMouseMove: _this._onItemMouseMovePrimary, onKeyDown: _this._onItemKeyDown, onClick: _this._executeItemClick, onTouchStart: _this._onTouchStart, tabIndex: 0, \"data-is-focusable\": true, \"aria-roledescription\": item['aria-roledescription'] },\n _this._renderSplitPrimaryButton(item, classNames, index, hasCheckmarks, hasIcons),\n _this._renderSplitDivider(item),\n _this._renderSplitIconButton(item, classNames, index, keytipAttributes),\n _this._renderAriaDescription(ariaDescription, classNames.screenReaderText))); }));\n };\n ContextualMenuSplitButton.prototype._renderSplitPrimaryButton = function (item, \n // eslint-disable-next-line @typescript-eslint/no-deprecated\n classNames, index, hasCheckmarks, hasIcons) {\n var _a = this.props, _b = _a.contextualMenuItemAs, ChildrenRenderer = _b === void 0 ? ContextualMenuItem : _b, onItemClick = _a.onItemClick;\n var itemProps = {\n key: item.key,\n disabled: isItemDisabled(item) || item.primaryDisabled,\n /* eslint-disable @typescript-eslint/no-deprecated */\n name: item.name,\n text: item.text || item.name,\n secondaryText: item.secondaryText,\n /* eslint-enable @typescript-eslint/no-deprecated */\n className: classNames.splitPrimary,\n canCheck: item.canCheck,\n isChecked: item.isChecked,\n checked: item.checked,\n iconProps: item.iconProps,\n id: this._dismissLabelId,\n onClick: item.onClick,\n onRenderIcon: item.onRenderIcon,\n data: item.data,\n 'data-is-focusable': false,\n };\n var itemComponentProps = item.itemProps;\n return (React.createElement(\"button\", __assign({}, getNativeProps(itemProps, buttonProperties)),\n React.createElement(ChildrenRenderer, __assign({ \"data-is-focusable\": false, item: itemProps, classNames: classNames, index: index, onCheckmarkClick: hasCheckmarks && onItemClick ? onItemClick : undefined, hasIcons: hasIcons }, itemComponentProps))));\n };\n ContextualMenuSplitButton.prototype._renderSplitDivider = function (item) {\n var getDividerClassNames = item.getSplitButtonVerticalDividerClassNames || getSplitButtonVerticalDividerClassNames;\n return React.createElement(VerticalDivider, { getClassNames: getDividerClassNames });\n };\n ContextualMenuSplitButton.prototype._renderSplitIconButton = function (item, classNames, // eslint-disable-line @typescript-eslint/no-deprecated\n index, keytipAttributes) {\n var _a = this.props, onItemMouseLeave = _a.onItemMouseLeave, onItemMouseDown = _a.onItemMouseDown, openSubMenu = _a.openSubMenu, dismissSubMenu = _a.dismissSubMenu, dismissMenu = _a.dismissMenu;\n var ChildrenRenderer = ContextualMenuItem;\n if (this.props.item.contextualMenuItemAs) {\n ChildrenRenderer = composeComponentAs(this.props.item.contextualMenuItemAs, ChildrenRenderer);\n }\n if (this.props.contextualMenuItemAs) {\n ChildrenRenderer = composeComponentAs(this.props.contextualMenuItemAs, ChildrenRenderer);\n }\n var itemProps = {\n onClick: this._onIconItemClick,\n disabled: isItemDisabled(item),\n className: classNames.splitMenu,\n subMenuProps: item.subMenuProps,\n submenuIconProps: item.submenuIconProps,\n split: true,\n key: item.key,\n 'aria-labelledby': this._dismissLabelId,\n };\n var buttonProps = __assign(__assign({}, getNativeProps(itemProps, buttonProperties)), {\n onMouseEnter: this._onItemMouseEnterIcon,\n onMouseLeave: onItemMouseLeave ? onItemMouseLeave.bind(this, item) : undefined,\n onMouseDown: function (ev) {\n return onItemMouseDown ? onItemMouseDown(item, ev) : undefined;\n },\n onMouseMove: this._onItemMouseMoveIcon,\n 'data-is-focusable': false,\n 'data-ktp-execute-target': keytipAttributes['data-ktp-execute-target'],\n 'aria-haspopup': true,\n });\n var itemComponentProps = item.itemProps;\n return (React.createElement(\"button\", __assign({}, buttonProps),\n React.createElement(ChildrenRenderer, __assign({ componentRef: item.componentRef, item: itemProps, classNames: classNames, index: index, hasIcons: false, openSubMenu: openSubMenu, dismissSubMenu: dismissSubMenu, dismissMenu: dismissMenu, getSubmenuTarget: this._getSubmenuTarget }, itemComponentProps))));\n };\n ContextualMenuSplitButton.prototype._handleTouchAndPointerEvent = function (ev) {\n var _this = this;\n var onTap = this.props.onTap;\n if (onTap) {\n onTap(ev);\n }\n // If we already have an existing timeout from a previous touch/pointer event\n // cancel that timeout so we can set a new one.\n if (this._lastTouchTimeoutId) {\n this._async.clearTimeout(this._lastTouchTimeoutId);\n this._lastTouchTimeoutId = undefined;\n }\n this._processingTouch = true;\n this._lastTouchTimeoutId = this._async.setTimeout(function () {\n _this._processingTouch = false;\n _this._lastTouchTimeoutId = undefined;\n }, TouchIdleDelay);\n };\n return ContextualMenuSplitButton;\n}(ContextualMenuItemWrapper));\nexport { ContextualMenuSplitButton };\n//# sourceMappingURL=ContextualMenuSplitButton.js.map","import { __extends } from \"tslib\";\nimport * as React from 'react';\nimport { hoistMethods, unhoistMethods } from '../../Utilities';\nvar BaseDecorator = /** @class */ (function (_super) {\n __extends(BaseDecorator, _super);\n function BaseDecorator(props) {\n var _this = _super.call(this, props) || this;\n _this._updateComposedComponentRef = _this._updateComposedComponentRef.bind(_this);\n return _this;\n }\n /**\n * Updates the ref to the component composed by the decorator, which will also take care of hoisting\n * (and unhoisting as appropriate) methods from said component.\n *\n * Pass this method as the argument to the 'ref' property of the composed component.\n */\n BaseDecorator.prototype._updateComposedComponentRef = function (composedComponentInstance) {\n this._composedComponentInstance = composedComponentInstance;\n if (composedComponentInstance) {\n this._hoisted = hoistMethods(this, composedComponentInstance);\n }\n else if (this._hoisted) {\n unhoistMethods(this, this._hoisted);\n }\n };\n return BaseDecorator;\n}(React.Component));\nexport { BaseDecorator };\n//# sourceMappingURL=BaseDecorator.js.map","import { __assign, __extends } from \"tslib\";\nimport * as React from 'react';\nimport { BaseDecorator } from './BaseDecorator';\nimport { getWindow, hoistStatics, EventGroup } from '../../Utilities';\nimport { WindowContext } from '../../WindowProvider';\nexport var ResponsiveMode;\n(function (ResponsiveMode) {\n /** Width \\<= 479px */\n ResponsiveMode[ResponsiveMode[\"small\"] = 0] = \"small\";\n /** Width \\> 479px and \\<= 639px */\n ResponsiveMode[ResponsiveMode[\"medium\"] = 1] = \"medium\";\n /** Width \\> 639px and \\<= 1023px */\n ResponsiveMode[ResponsiveMode[\"large\"] = 2] = \"large\";\n /** Width \\> 1023px and \\<= 1365px */\n ResponsiveMode[ResponsiveMode[\"xLarge\"] = 3] = \"xLarge\";\n /** Width \\> 1365px and \\<= 1919px */\n ResponsiveMode[ResponsiveMode[\"xxLarge\"] = 4] = \"xxLarge\";\n /** Width \\> 1919px */\n ResponsiveMode[ResponsiveMode[\"xxxLarge\"] = 5] = \"xxxLarge\";\n ResponsiveMode[ResponsiveMode[\"unknown\"] = 999] = \"unknown\";\n})(ResponsiveMode || (ResponsiveMode = {}));\nvar RESPONSIVE_MAX_CONSTRAINT = [479, 639, 1023, 1365, 1919, 99999999];\n/**\n * User specified mode to default to, useful for server side rendering scenarios.\n */\nvar _defaultMode;\n/**\n * Tracking the last mode we successfully rendered, which allows us to\n * paint initial renders with the correct size.\n */\nvar _lastMode;\n/**\n * Allows a server rendered scenario to provide a **default** responsive mode.\n * This WILL NOT trigger any updates to components that have already consumed the responsive mode!\n */\nexport function setResponsiveMode(responsiveMode) {\n _defaultMode = responsiveMode;\n}\n/**\n * Initializes the responsive mode to the current window size. This can be used to avoid\n * a re-render during first component mount since the window would otherwise not be measured\n * until after mounting.\n *\n * This WILL NOT trigger any updates to components that have already consumed the responsive mode!\n */\nexport function initializeResponsiveMode(element) {\n var currentWindow = getWindow(element);\n if (currentWindow) {\n getResponsiveMode(currentWindow);\n }\n}\nexport function getInitialResponsiveMode() {\n var _a;\n return (_a = _defaultMode !== null && _defaultMode !== void 0 ? _defaultMode : _lastMode) !== null && _a !== void 0 ? _a : ResponsiveMode.large;\n}\n/**\n * @deprecated Decorator usage is deprecated. Either call `getResponsiveMode` manually, or\n * use the `useResponsiveMode` hook within a function component.\n */\nexport function withResponsiveMode(ComposedComponent) {\n var _a;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n var resultClass = (_a = /** @class */ (function (_super) {\n __extends(WithResponsiveMode, _super);\n function WithResponsiveMode(props) {\n var _this = _super.call(this, props) || this;\n _this._onResize = function () {\n var responsiveMode = getResponsiveMode(_this.context.window);\n if (responsiveMode !== _this.state.responsiveMode) {\n _this.setState({\n responsiveMode: responsiveMode,\n });\n }\n };\n _this._events = new EventGroup(_this);\n _this._updateComposedComponentRef = _this._updateComposedComponentRef.bind(_this);\n _this.state = {\n responsiveMode: getInitialResponsiveMode(),\n };\n return _this;\n }\n WithResponsiveMode.prototype.componentDidMount = function () {\n this._events.on(this.context.window, 'resize', this._onResize);\n this._onResize();\n };\n WithResponsiveMode.prototype.componentWillUnmount = function () {\n this._events.dispose();\n };\n WithResponsiveMode.prototype.render = function () {\n var responsiveMode = this.state.responsiveMode;\n return responsiveMode === ResponsiveMode.unknown ? null : (React.createElement(ComposedComponent, __assign({ ref: this._updateComposedComponentRef, responsiveMode: responsiveMode }, this.props)));\n };\n return WithResponsiveMode;\n }(BaseDecorator)),\n _a.contextType = WindowContext,\n _a);\n return hoistStatics(ComposedComponent, resultClass);\n}\nfunction getWidthOfCurrentWindow(currentWindow) {\n try {\n return currentWindow.document.documentElement.clientWidth;\n }\n catch (e) {\n return currentWindow.innerWidth;\n }\n}\n/**\n * Hook to get the current responsive mode (window size category).\n * @param currentWindow - Use this window when determining the responsive mode.\n */\nexport function getResponsiveMode(currentWindow) {\n var responsiveMode = ResponsiveMode.small;\n if (currentWindow) {\n try {\n while (getWidthOfCurrentWindow(currentWindow) > RESPONSIVE_MAX_CONSTRAINT[responsiveMode]) {\n responsiveMode++;\n }\n }\n catch (e) {\n // Return a best effort result in cases where we're in the browser but it throws on getting innerWidth.\n responsiveMode = getInitialResponsiveMode();\n }\n // Tracking last mode just gives us a better default in future renders,\n // which avoids starting with the wrong value if we've measured once.\n _lastMode = responsiveMode;\n }\n else {\n if (_defaultMode !== undefined) {\n responsiveMode = _defaultMode;\n }\n else {\n throw new Error('Content was rendered in a server environment without providing a default responsive mode. ' +\n 'Call setResponsiveMode to define what the responsive mode is.');\n }\n }\n return responsiveMode;\n}\n//# sourceMappingURL=withResponsiveMode.js.map","import * as React from 'react';\nimport { getWindow } from '@fluentui/utilities';\nimport { useOnEvent } from '@fluentui/react-hooks';\nimport { getResponsiveMode, getInitialResponsiveMode } from '../decorators/withResponsiveMode';\nimport { useWindow } from '../../WindowProvider';\n/**\n * Hook to get the current responsive mode (window size category).\n * @param elementRef - Use this element's parent window when determining the responsive mode.\n * @param overrideResponsiveMode - Override the responsive mode. If this param is present, it's always returned.\n */\nexport var useResponsiveMode = function (elementRef, overrideResponsiveMode) {\n var _a = React.useState(getInitialResponsiveMode()), lastResponsiveMode = _a[0], setLastResponsiveMode = _a[1];\n var onResize = React.useCallback(function () {\n var newResponsiveMode = getResponsiveMode(getWindow(elementRef.current));\n // Setting the same value should not cause a re-render.\n if (lastResponsiveMode !== newResponsiveMode) {\n setLastResponsiveMode(newResponsiveMode);\n }\n }, [elementRef, lastResponsiveMode]);\n var win = useWindow();\n useOnEvent(win, 'resize', onResize);\n // Call resize function initially on mount, or if the override changes from defined to undefined\n // (the effect will run on all override changes, but onResize will only be called if it changed to undefined)\n React.useEffect(function () {\n if (overrideResponsiveMode === undefined) {\n onResize();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- only meant to run on mount or when override changes\n }, [overrideResponsiveMode]);\n return overrideResponsiveMode !== null && overrideResponsiveMode !== void 0 ? overrideResponsiveMode : lastResponsiveMode;\n};\n//# sourceMappingURL=useResponsiveMode.js.map","import * as React from 'react';\nexport var MenuContext = React.createContext({});\nexport var useMenuContext = function () {\n return React.useContext(MenuContext);\n};\n//# sourceMappingURL=MenuContext.js.map","import { __assign, __rest, __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { ContextualMenuItemType } from './ContextualMenu.types';\nimport { DirectionalHint } from '../../common/DirectionalHint';\nimport { FocusZone, FocusZoneDirection, FocusZoneTabbableElements } from '../../FocusZone';\nimport { divProperties, getNativeProps, shallowCompare, assign, classNamesFunction, css, getFirstFocusable, getLastFocusable, getRTL, KeyCodes, shouldWrapFocus, isIOS, isMac, memoizeFunction, getPropsWithDefaults, getDocument, FocusRects, composeComponentAs, } from '../../Utilities';\nimport { hasSubmenu, getIsChecked, isItemDisabled } from '../../utilities/contextualMenu/index';\nimport { Callout } from '../../Callout';\nimport { ContextualMenuItem } from './ContextualMenuItem';\nimport { ContextualMenuSplitButton, ContextualMenuButton, ContextualMenuAnchor, } from './ContextualMenuItemWrapper/index';\nimport { concatStyleSetsWithProps } from '../../Styling';\nimport { getItemStyles } from './ContextualMenu.classNames';\nimport { useTarget, usePrevious, useAsync, useWarnings, useId, useIsomorphicLayoutEffect, } from '@fluentui/react-hooks';\nimport { useResponsiveMode, ResponsiveMode } from '../../ResponsiveMode';\nimport { MenuContext } from '../../utilities/MenuContext/index';\nvar getClassNames = classNamesFunction();\nvar getContextualMenuItemClassNames = classNamesFunction();\n// The default ContextualMenu properties have no items and beak, the default submenu direction is right and top.\nvar DEFAULT_PROPS = {\n items: [],\n shouldFocusOnMount: true,\n gapSpace: 0,\n directionalHint: DirectionalHint.bottomAutoEdge,\n beakWidth: 16,\n};\n/* return number of menu items, excluding headers and dividers */\nfunction getItemCount(items) {\n var totalItemCount = 0;\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n if (item.itemType !== ContextualMenuItemType.Divider && item.itemType !== ContextualMenuItemType.Header) {\n var itemCount = item.customOnRenderListLength ? item.customOnRenderListLength : 1;\n totalItemCount += itemCount;\n }\n }\n return totalItemCount;\n}\nexport function getSubmenuItems(item, options) {\n var target = options === null || options === void 0 ? void 0 : options.target;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n var items = item.subMenuProps ? item.subMenuProps.items : item.items;\n if (items) {\n var overrideItems = [];\n for (var _i = 0, items_2 = items; _i < items_2.length; _i++) {\n var subItem = items_2[_i];\n if (subItem.preferMenuTargetAsEventTarget) {\n // For sub-items which need an overridden target, intercept `onClick`\n var onClick = subItem.onClick, contextItem = __rest(subItem, [\"onClick\"]);\n overrideItems.push(__assign(__assign({}, contextItem), { onClick: getOnClickWithOverrideTarget(onClick, target) }));\n }\n else {\n overrideItems.push(subItem);\n }\n }\n return overrideItems;\n }\n}\n/**\n * Returns true if a list of menu items can contain a checkbox\n */\nexport function canAnyMenuItemsCheck(items) {\n return items.some(function (item) {\n if (item.canCheck) {\n return true;\n }\n // If the item is a section, check if any of the items in the section can check.\n if (item.sectionProps && item.sectionProps.items.some(function (submenuItem) { return submenuItem.canCheck === true; })) {\n return true;\n }\n return false;\n });\n}\nvar NavigationIdleDelay = 250; /* ms */\nvar COMPONENT_NAME = 'ContextualMenu';\nvar _getMenuItemStylesFunction = memoizeFunction(function () {\n var styles = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n styles[_i] = arguments[_i];\n }\n return function (styleProps) {\n return concatStyleSetsWithProps.apply(void 0, __spreadArray([styleProps, getItemStyles], styles, false));\n };\n});\n//#region Custom hooks\nfunction useVisibility(props, targetWindow) {\n var _a = props.hidden, hidden = _a === void 0 ? false : _a, onMenuDismissed = props.onMenuDismissed, onMenuOpened = props.onMenuOpened;\n var previousHidden = usePrevious(hidden);\n var onMenuOpenedRef = React.useRef(onMenuOpened);\n var onMenuClosedRef = React.useRef(onMenuDismissed);\n var propsRef = React.useRef(props);\n onMenuOpenedRef.current = onMenuOpened;\n onMenuClosedRef.current = onMenuDismissed;\n propsRef.current = props;\n React.useEffect(function () {\n var _a, _b;\n // Don't issue dismissed callbacks on initial mount\n if (hidden && previousHidden === false) {\n (_a = onMenuClosedRef.current) === null || _a === void 0 ? void 0 : _a.call(onMenuClosedRef, propsRef.current);\n }\n else if (!hidden && previousHidden !== false) {\n (_b = onMenuOpenedRef.current) === null || _b === void 0 ? void 0 : _b.call(onMenuOpenedRef, propsRef.current);\n }\n }, [hidden, previousHidden]);\n // Issue onDismissedCallback on unmount\n React.useEffect(function () { return function () { var _a; return (_a = onMenuClosedRef.current) === null || _a === void 0 ? void 0 : _a.call(onMenuClosedRef, propsRef.current); }; }, []);\n}\nfunction useSubMenuState(_a, dismiss) {\n var hidden = _a.hidden, items = _a.items, theme = _a.theme, className = _a.className, id = _a.id, menuTarget = _a.target;\n var _b = React.useState(), expandedMenuItemKey = _b[0], setExpandedMenuItemKey = _b[1];\n var _c = React.useState(), submenuTarget = _c[0], setSubmenuTarget = _c[1];\n /** True if the menu was expanded by mouse click OR hover (as opposed to by keyboard) */\n var _d = React.useState(), shouldFocusOnContainer = _d[0], setShouldFocusOnContainer = _d[1];\n var subMenuId = useId(COMPONENT_NAME, id);\n var closeSubMenu = React.useCallback(function () {\n setShouldFocusOnContainer(undefined);\n setExpandedMenuItemKey(undefined);\n setSubmenuTarget(undefined);\n }, []);\n var openSubMenu = React.useCallback(function (_a, target, focusContainer) {\n var submenuItemKey = _a.key;\n if (expandedMenuItemKey === submenuItemKey) {\n return;\n }\n target.focus();\n setShouldFocusOnContainer(focusContainer);\n setExpandedMenuItemKey(submenuItemKey);\n setSubmenuTarget(target);\n }, [expandedMenuItemKey]);\n React.useEffect(function () {\n if (hidden) {\n closeSubMenu();\n }\n }, [hidden, closeSubMenu]);\n var onSubMenuDismiss = useOnSubmenuDismiss(dismiss, closeSubMenu);\n var getSubmenuProps = function () {\n var item = findItemByKeyFromItems(expandedMenuItemKey, items);\n var submenuProps = null;\n if (item) {\n submenuProps = {\n items: getSubmenuItems(item, { target: menuTarget }),\n target: submenuTarget,\n onDismiss: onSubMenuDismiss,\n isSubMenu: true,\n id: subMenuId,\n shouldFocusOnMount: true,\n shouldFocusOnContainer: shouldFocusOnContainer,\n directionalHint: getRTL(theme) ? DirectionalHint.leftTopEdge : DirectionalHint.rightTopEdge,\n className: className,\n gapSpace: 0,\n isBeakVisible: false,\n };\n if (item.subMenuProps) {\n assign(submenuProps, item.subMenuProps);\n }\n if (item.preferMenuTargetAsEventTarget) {\n var onItemClick = item.onItemClick;\n submenuProps.onItemClick = getOnClickWithOverrideTarget(onItemClick, menuTarget);\n }\n }\n return submenuProps;\n };\n return [expandedMenuItemKey, openSubMenu, getSubmenuProps, onSubMenuDismiss];\n}\nfunction useShouldUpdateFocusOnMouseMove(_a) {\n var delayUpdateFocusOnHover = _a.delayUpdateFocusOnHover, hidden = _a.hidden;\n var shouldUpdateFocusOnMouseEvent = React.useRef(!delayUpdateFocusOnHover);\n var gotMouseMove = React.useRef(false);\n React.useEffect(function () {\n shouldUpdateFocusOnMouseEvent.current = !delayUpdateFocusOnHover;\n gotMouseMove.current = hidden ? false : !delayUpdateFocusOnHover && gotMouseMove.current;\n }, [delayUpdateFocusOnHover, hidden]);\n var onMenuFocusCapture = React.useCallback(function () {\n if (delayUpdateFocusOnHover) {\n shouldUpdateFocusOnMouseEvent.current = false;\n }\n }, [delayUpdateFocusOnHover]);\n return [shouldUpdateFocusOnMouseEvent, gotMouseMove, onMenuFocusCapture];\n}\nfunction usePreviousActiveElement(_a, targetWindow, hostElement) {\n var hidden = _a.hidden, onRestoreFocus = _a.onRestoreFocus;\n var previousActiveElement = React.useRef();\n var tryFocusPreviousActiveElement = React.useCallback(function (options) {\n var _a, _b;\n if (onRestoreFocus) {\n onRestoreFocus(options);\n }\n else if (options === null || options === void 0 ? void 0 : options.documentContainsFocus) {\n // Make sure that the focus method actually exists\n // In some cases the object might exist but not be a real element.\n // This is primarily for IE 11 and should be removed once IE 11 is no longer in use.\n (_b = (_a = previousActiveElement.current) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n }, [onRestoreFocus]);\n useIsomorphicLayoutEffect(function () {\n var _a, _b;\n if (!hidden) {\n var newElement = targetWindow === null || targetWindow === void 0 ? void 0 : targetWindow.document.activeElement;\n if (!((_a = hostElement.current) === null || _a === void 0 ? void 0 : _a.contains(newElement)) && newElement.tagName !== 'BODY') {\n previousActiveElement.current = newElement;\n }\n }\n else if (previousActiveElement.current) {\n tryFocusPreviousActiveElement({\n originalElement: previousActiveElement.current,\n containsFocus: true,\n documentContainsFocus: ((_b = getDocument()) === null || _b === void 0 ? void 0 : _b.hasFocus()) || false,\n });\n previousActiveElement.current = undefined;\n }\n }, [hidden, targetWindow === null || targetWindow === void 0 ? void 0 : targetWindow.document.activeElement, tryFocusPreviousActiveElement, hostElement]);\n return [tryFocusPreviousActiveElement];\n}\nfunction useKeyHandlers(_a, dismiss, hostElement, openSubMenu) {\n var theme = _a.theme, isSubMenu = _a.isSubMenu, _b = _a.focusZoneProps, _c = _b === void 0 ? {} : _b, checkForNoWrap = _c.checkForNoWrap, _d = _c.direction, focusZoneDirection = _d === void 0 ? FocusZoneDirection.vertical : _d;\n /** True if the most recent keydown event was for alt (option) or meta (command). */\n var lastKeyDownWasAltOrMeta = React.useRef();\n /**\n * Calls `shouldHandleKey` to determine whether the keyboard event should be handled;\n * if so, stops event propagation and dismisses menu(s).\n * @param ev - The keyboard event.\n * @param shouldHandleKey - Returns whether we should handle this keyboard event.\n * @param dismissAllMenus - If true, dismiss all menus. Otherwise, dismiss only the current menu.\n * Only does anything if `shouldHandleKey` returns true.\n * @returns Whether the event was handled.\n */\n var keyHandler = function (ev, shouldHandleKey, dismissAllMenus) {\n var handled = false;\n if (shouldHandleKey(ev)) {\n dismiss(ev, dismissAllMenus);\n ev.preventDefault();\n ev.stopPropagation();\n handled = true;\n }\n return handled;\n };\n /**\n * Checks if the submenu should be closed\n */\n var shouldCloseSubMenu = function (ev) {\n var submenuCloseKey = getRTL(theme) ? KeyCodes.right : KeyCodes.left;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (ev.which !== submenuCloseKey || !isSubMenu) {\n return false;\n }\n return !!(focusZoneDirection === FocusZoneDirection.vertical ||\n (checkForNoWrap && !shouldWrapFocus(ev.target, 'data-no-horizontal-wrap')));\n };\n var shouldHandleKeyDown = function (ev) {\n return (\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n ev.which === KeyCodes.escape ||\n shouldCloseSubMenu(ev) ||\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n (ev.which === KeyCodes.up && (ev.altKey || ev.metaKey)));\n };\n var onKeyDown = function (ev) {\n // Take note if we are processing an alt (option) or meta (command) keydown.\n // See comment in shouldHandleKeyUp for reasoning.\n lastKeyDownWasAltOrMeta.current = isAltOrMeta(ev);\n // On Mac, pressing escape dismisses all levels of native context menus\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n var dismissAllMenus = ev.which === KeyCodes.escape && (isMac() || isIOS());\n return keyHandler(ev, shouldHandleKeyDown, dismissAllMenus);\n };\n /**\n * We close the menu on key up only if ALL of the following are true:\n * - Most recent key down was alt or meta (command)\n * - The alt/meta key down was NOT followed by some other key (such as down/up arrow to\n * expand/collapse the menu)\n * - We're not on a Mac (or iOS)\n *\n * This is because on Windows, pressing alt moves focus to the application menu bar or similar,\n * closing any open context menus. There is not a similar behavior on Macs.\n */\n var shouldHandleKeyUp = function (ev) {\n var keyPressIsAltOrMetaAlone = lastKeyDownWasAltOrMeta.current && isAltOrMeta(ev);\n lastKeyDownWasAltOrMeta.current = false;\n return !!keyPressIsAltOrMetaAlone && !(isIOS() || isMac());\n };\n var onKeyUp = function (ev) {\n return keyHandler(ev, shouldHandleKeyUp, true /* dismissAllMenus */);\n };\n var onMenuKeyDown = function (ev) {\n // Mark as handled if onKeyDown returns true (for handling collapse cases)\n // or if we are attempting to expand a submenu\n var handled = onKeyDown(ev);\n if (handled || !hostElement.current) {\n return;\n }\n // If we have a modifier key being pressed, we do not want to move focus.\n // Otherwise, handle up and down keys.\n var hasModifier = !!(ev.altKey || ev.metaKey);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n var isUp = ev.which === KeyCodes.up;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n var isDown = ev.which === KeyCodes.down;\n if (!hasModifier && (isUp || isDown)) {\n var elementToFocus = isUp\n ? getLastFocusable(hostElement.current, hostElement.current.lastChild, true)\n : getFirstFocusable(hostElement.current, hostElement.current.firstChild, true);\n if (elementToFocus) {\n elementToFocus.focus();\n ev.preventDefault();\n ev.stopPropagation();\n }\n }\n };\n var onItemKeyDown = function (item, ev) {\n var openKey = getRTL(theme) ? KeyCodes.left : KeyCodes.right;\n if (!item.disabled &&\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n (ev.which === openKey || ev.which === KeyCodes.enter || (ev.which === KeyCodes.down && (ev.altKey || ev.metaKey)))) {\n openSubMenu(item, ev.currentTarget);\n ev.preventDefault();\n }\n };\n return [onKeyDown, onKeyUp, onMenuKeyDown, onItemKeyDown];\n}\nfunction useScrollHandler(asyncTracker) {\n var isScrollIdle = React.useRef(true);\n var scrollIdleTimeoutId = React.useRef();\n /**\n * Scroll handler for the callout to make sure the mouse events\n * for updating focus are not interacting during scroll\n */\n var onScroll = function () {\n if (!isScrollIdle.current && scrollIdleTimeoutId.current !== undefined) {\n asyncTracker.clearTimeout(scrollIdleTimeoutId.current);\n scrollIdleTimeoutId.current = undefined;\n }\n else {\n isScrollIdle.current = false;\n }\n scrollIdleTimeoutId.current = asyncTracker.setTimeout(function () {\n isScrollIdle.current = true;\n }, NavigationIdleDelay);\n };\n return [onScroll, isScrollIdle];\n}\nfunction useOnSubmenuDismiss(dismiss, closeSubMenu) {\n var isMountedRef = React.useRef(false);\n React.useEffect(function () {\n isMountedRef.current = true;\n return function () {\n isMountedRef.current = false;\n };\n }, []);\n /**\n * This function is called ASYNCHRONOUSLY, and so there is a chance it is called\n * after the component is unmounted. The isMountedRef is added to prevent\n * from calling setState() after unmount. Do NOT copy this pattern in synchronous\n * code.\n */\n var onSubMenuDismiss = function (ev, dismissAll) {\n if (dismissAll) {\n dismiss(ev, dismissAll);\n }\n else if (isMountedRef.current) {\n closeSubMenu();\n }\n };\n return onSubMenuDismiss;\n}\nfunction useSubmenuEnterTimer(_a, asyncTracker) {\n var _b = _a.subMenuHoverDelay, subMenuHoverDelay = _b === void 0 ? NavigationIdleDelay : _b;\n var enterTimerRef = React.useRef(undefined);\n var cancelSubMenuTimer = function () {\n if (enterTimerRef.current !== undefined) {\n asyncTracker.clearTimeout(enterTimerRef.current);\n enterTimerRef.current = undefined;\n }\n };\n var startSubmenuTimer = function (onTimerExpired) {\n enterTimerRef.current = asyncTracker.setTimeout(function () {\n onTimerExpired();\n cancelSubMenuTimer();\n }, subMenuHoverDelay);\n };\n return [cancelSubMenuTimer, startSubmenuTimer, enterTimerRef];\n}\nfunction useMouseHandlers(props, isScrollIdle, subMenuEntryTimer, targetWindow, shouldUpdateFocusOnMouseEvent, gotMouseMove, expandedMenuItemKey, hostElement, startSubmenuTimer, cancelSubMenuTimer, openSubMenu, onSubMenuDismiss, dismiss) {\n var menuTarget = props.target;\n var onItemMouseEnterBase = function (item, ev, target) {\n if (shouldUpdateFocusOnMouseEvent.current) {\n gotMouseMove.current = true;\n }\n if (shouldIgnoreMouseEvent()) {\n return;\n }\n updateFocusOnMouseEvent(item, ev, target);\n };\n var onItemMouseMoveBase = function (item, ev, target) {\n var targetElement = ev.currentTarget;\n // Always do this check to make sure we record a mouseMove if needed (even if we are timed out)\n if (shouldUpdateFocusOnMouseEvent.current) {\n gotMouseMove.current = true;\n }\n else {\n return;\n }\n if (!isScrollIdle.current ||\n subMenuEntryTimer.current !== undefined ||\n targetElement === (targetWindow === null || targetWindow === void 0 ? void 0 : targetWindow.document.activeElement)) {\n return;\n }\n updateFocusOnMouseEvent(item, ev, target);\n };\n var shouldIgnoreMouseEvent = function () {\n return !isScrollIdle.current || !gotMouseMove.current;\n };\n var onMouseItemLeave = function (item, ev) {\n var _a;\n if (shouldIgnoreMouseEvent()) {\n return;\n }\n cancelSubMenuTimer();\n if (expandedMenuItemKey !== undefined) {\n return;\n }\n /**\n * IE11 focus() method forces parents to scroll to top of element.\n * Edge and IE expose a setActive() function for focusable divs that\n * sets the page focus but does not scroll the parent element.\n */\n if (hostElement.current.setActive) {\n try {\n hostElement.current.setActive();\n }\n catch (e) {\n /* no-op */\n }\n }\n else {\n (_a = hostElement.current) === null || _a === void 0 ? void 0 : _a.focus();\n }\n };\n /**\n * Handles updating focus when mouseEnter or mouseMove fire.\n * As part of updating focus, This function will also update\n * the expand/collapse state accordingly.\n */\n var updateFocusOnMouseEvent = function (item, ev, target) {\n var targetElement = target ? target : ev.currentTarget;\n if (item.key === expandedMenuItemKey) {\n return;\n }\n cancelSubMenuTimer();\n // If the menu is not expanded we can update focus without any delay\n if (expandedMenuItemKey === undefined) {\n targetElement.focus();\n }\n // Delay updating expanding/dismissing the submenu\n // and only set focus if we have not already done so\n if (hasSubmenu(item)) {\n ev.stopPropagation();\n startSubmenuTimer(function () {\n targetElement.focus();\n openSubMenu(item, targetElement, true);\n });\n }\n else {\n startSubmenuTimer(function () {\n onSubMenuDismiss(ev);\n targetElement.focus();\n });\n }\n };\n var onItemClick = function (item, ev) {\n onItemClickBase(item, ev, ev.currentTarget);\n };\n var onItemClickBase = function (item, ev, target) {\n var items = getSubmenuItems(item, { target: menuTarget });\n // Cancel an async menu item hover timeout action from being taken and instead\n // just trigger the click event instead.\n cancelSubMenuTimer();\n if (!hasSubmenu(item) && (!items || !items.length)) {\n // This is an item without a menu. Click it.\n executeItemClick(item, ev);\n }\n else {\n if (item.key !== expandedMenuItemKey) {\n // This has a collapsed sub menu. Expand it.\n // focus on the container by default when the menu is opened with a click event\n // this differentiates from a keyboard interaction triggering the click event\n var shouldFocusOnContainer = typeof props.shouldFocusOnContainer === 'boolean'\n ? props.shouldFocusOnContainer\n : ev.nativeEvent.pointerType === 'mouse';\n openSubMenu(item, target, shouldFocusOnContainer);\n }\n }\n ev.stopPropagation();\n ev.preventDefault();\n };\n var onAnchorClick = function (item, ev) {\n executeItemClick(item, ev);\n ev.stopPropagation();\n };\n var executeItemClick = function (item, ev) {\n if (item.disabled || item.isDisabled) {\n return;\n }\n if (item.preferMenuTargetAsEventTarget) {\n overrideTarget(ev, menuTarget);\n }\n var shouldDismiss = false;\n if (item.onClick) {\n shouldDismiss = !!item.onClick(ev, item);\n }\n else if (props.onItemClick) {\n shouldDismiss = !!props.onItemClick(ev, item);\n }\n if (shouldDismiss || !ev.defaultPrevented) {\n dismiss(ev, true);\n }\n };\n return [\n onItemMouseEnterBase,\n onItemMouseMoveBase,\n onMouseItemLeave,\n onItemClick,\n onAnchorClick,\n executeItemClick,\n onItemClickBase,\n ];\n}\n//#endregion\nexport var ContextualMenuBase = React.memo(React.forwardRef(function (propsWithoutDefaults, forwardedRef) {\n var _a;\n var _b = getPropsWithDefaults(DEFAULT_PROPS, propsWithoutDefaults), ref = _b.ref, props = __rest(_b, [\"ref\"]);\n var hostElement = React.useRef(null);\n var asyncTracker = useAsync();\n var menuId = useId(COMPONENT_NAME, props.id);\n useWarnings({\n name: COMPONENT_NAME,\n props: props,\n deprecations: {\n getMenuClassNames: 'styles',\n },\n });\n var dismiss = function (ev, dismissAll) { var _a; return (_a = props.onDismiss) === null || _a === void 0 ? void 0 : _a.call(props, ev, dismissAll); };\n var _c = useTarget(props.target, hostElement), targetRef = _c[0], targetWindow = _c[1];\n var tryFocusPreviousActiveElement = usePreviousActiveElement(props, targetWindow, hostElement)[0];\n var _d = useSubMenuState(props, dismiss), expandedMenuItemKey = _d[0], openSubMenu = _d[1], getSubmenuProps = _d[2], onSubMenuDismiss = _d[3];\n var _e = useShouldUpdateFocusOnMouseMove(props), shouldUpdateFocusOnMouseEvent = _e[0], gotMouseMove = _e[1], onMenuFocusCapture = _e[2];\n var _f = useScrollHandler(asyncTracker), onScroll = _f[0], isScrollIdle = _f[1];\n var _g = useSubmenuEnterTimer(props, asyncTracker), cancelSubMenuTimer = _g[0], startSubmenuTimer = _g[1], subMenuEntryTimer = _g[2];\n var responsiveMode = useResponsiveMode(hostElement, props.responsiveMode);\n useVisibility(props, targetWindow);\n var _h = useKeyHandlers(props, dismiss, hostElement, openSubMenu), onKeyDown = _h[0], onKeyUp = _h[1], onMenuKeyDown = _h[2], onItemKeyDown = _h[3];\n var _j = useMouseHandlers(props, isScrollIdle, subMenuEntryTimer, targetWindow, shouldUpdateFocusOnMouseEvent, gotMouseMove, expandedMenuItemKey, hostElement, startSubmenuTimer, cancelSubMenuTimer, openSubMenu, onSubMenuDismiss, dismiss), onItemMouseEnterBase = _j[0], onItemMouseMoveBase = _j[1], onMouseItemLeave = _j[2], onItemClick = _j[3], onAnchorClick = _j[4], executeItemClick = _j[5], onItemClickBase = _j[6];\n //#region Render helpers\n var onDefaultRenderMenuList = function (menuListProps, \n // eslint-disable-next-line @typescript-eslint/no-deprecated\n menuClassNames, defaultRender) {\n var indexCorrection = 0;\n var items = menuListProps.items, totalItemCount = menuListProps.totalItemCount, hasCheckmarks = menuListProps.hasCheckmarks, hasIcons = menuListProps.hasIcons;\n return (React.createElement(\"ul\", { className: menuClassNames.list, onKeyDown: onKeyDown, onKeyUp: onKeyUp, role: 'presentation' }, items.map(function (item, index) {\n var menuItem = renderMenuItem(item, index, indexCorrection, totalItemCount, hasCheckmarks, hasIcons, menuClassNames);\n if (item.itemType !== ContextualMenuItemType.Divider && item.itemType !== ContextualMenuItemType.Header) {\n var indexIncrease = item.customOnRenderListLength ? item.customOnRenderListLength : 1;\n indexCorrection += indexIncrease;\n }\n return menuItem;\n })));\n };\n var renderFocusZone = function (children, adjustedFocusZoneProps) {\n var _a = props.focusZoneAs, ChildrenRenderer = _a === void 0 ? FocusZone : _a;\n return React.createElement(ChildrenRenderer, __assign({}, adjustedFocusZoneProps), children);\n };\n /**\n * !!!IMPORTANT!!! Avoid mutating `item: IContextualMenuItem` argument. It will\n * cause the menu items to always re-render because the component update is based on shallow comparison.\n */\n var renderMenuItem = function (item, index, focusableElementIndex, totalItemCount, hasCheckmarks, hasIcons, \n // eslint-disable-next-line @typescript-eslint/no-deprecated\n menuClassNames) {\n var _a;\n var renderedItems = [];\n var iconProps = item.iconProps || { iconName: 'None' };\n var getItemClassNames = item.getItemClassNames, // eslint-disable-line @typescript-eslint/no-deprecated\n itemProps = item.itemProps;\n var styles = itemProps ? itemProps.styles : undefined;\n // We only send a dividerClassName when the item to be rendered is a divider.\n // For all other cases, the default divider style is used.\n var dividerClassName = item.itemType === ContextualMenuItemType.Divider ? item.className : undefined;\n var subMenuIconClassName = item.submenuIconProps ? item.submenuIconProps.className : '';\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n var itemClassNames;\n // IContextualMenuItem#getItemClassNames for backwards compatibility\n // otherwise uses mergeStyles for class names.\n if (getItemClassNames) {\n itemClassNames = getItemClassNames(props.theme, isItemDisabled(item), expandedMenuItemKey === item.key, !!getIsChecked(item), !!item.href, iconProps.iconName !== 'None', item.className, dividerClassName, iconProps.className, subMenuIconClassName, item.primaryDisabled);\n }\n else {\n var itemStyleProps = {\n theme: props.theme,\n disabled: isItemDisabled(item),\n expanded: expandedMenuItemKey === item.key,\n checked: !!getIsChecked(item),\n isAnchorLink: !!item.href,\n knownIcon: iconProps.iconName !== 'None',\n itemClassName: item.className,\n dividerClassName: dividerClassName,\n iconClassName: iconProps.className,\n subMenuClassName: subMenuIconClassName,\n primaryDisabled: item.primaryDisabled,\n };\n // We need to generate default styles then override if styles are provided\n // since the ContextualMenu currently handles item classNames.\n itemClassNames = getContextualMenuItemClassNames(_getMenuItemStylesFunction((_a = menuClassNames.subComponentStyles) === null || _a === void 0 ? void 0 : _a.menuItem, styles), itemStyleProps);\n }\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (item.text === '-' || item.name === '-') {\n item.itemType = ContextualMenuItemType.Divider;\n }\n switch (item.itemType) {\n case ContextualMenuItemType.Divider:\n renderedItems.push(renderSeparator(index, itemClassNames));\n break;\n case ContextualMenuItemType.Header:\n renderedItems.push(renderSeparator(index, itemClassNames));\n var headerItem = renderHeaderMenuItem(item, itemClassNames, menuClassNames, index, hasCheckmarks, hasIcons);\n renderedItems.push(renderListItem(headerItem, item.key || index, itemClassNames, item.title));\n break;\n case ContextualMenuItemType.Section:\n renderedItems.push(renderSectionItem(item, itemClassNames, menuClassNames, index, hasCheckmarks, hasIcons));\n break;\n default:\n var defaultRenderNormalItem = function () {\n return renderNormalItem(item, itemClassNames, index, focusableElementIndex, totalItemCount, hasCheckmarks, hasIcons);\n };\n var menuItem = props.onRenderContextualMenuItem\n ? props.onRenderContextualMenuItem(item, defaultRenderNormalItem)\n : defaultRenderNormalItem();\n renderedItems.push(renderListItem(menuItem, item.key || index, itemClassNames, item.title));\n break;\n }\n // Since multiple nodes *could* be rendered, wrap them all in a fragment with this item's key.\n // This ensures the reconciler handles multi-item output per-node correctly and does not re-mount content.\n return React.createElement(React.Fragment, { key: item.key }, renderedItems);\n };\n var defaultMenuItemRenderer = function (item, \n // eslint-disable-next-line @typescript-eslint/no-deprecated\n menuClassNames) {\n var index = item.index, focusableElementIndex = item.focusableElementIndex, totalItemCount = item.totalItemCount, hasCheckmarks = item.hasCheckmarks, hasIcons = item.hasIcons;\n return renderMenuItem(item, index, focusableElementIndex, totalItemCount, hasCheckmarks, hasIcons, menuClassNames);\n };\n var renderSectionItem = function (sectionItem, \n // eslint-disable-next-line @typescript-eslint/no-deprecated\n itemClassNames, \n // eslint-disable-next-line @typescript-eslint/no-deprecated\n menuClassNames, index, hasCheckmarks, hasIcons) {\n var sectionProps = sectionItem.sectionProps;\n if (!sectionProps) {\n return;\n }\n var headerItem;\n var groupProps;\n if (sectionProps.title) {\n var headerContextualMenuItem = undefined;\n var ariaLabelledby = '';\n if (typeof sectionProps.title === 'string') {\n // Since title is a user-facing string, it needs to be stripped\n // of whitespace in order to build a valid element ID\n var id_1 = menuId + sectionProps.title.replace(/\\s/g, '');\n headerContextualMenuItem = {\n key: \"section-\".concat(sectionProps.title, \"-title\"),\n itemType: ContextualMenuItemType.Header,\n text: sectionProps.title,\n id: id_1,\n };\n ariaLabelledby = id_1;\n }\n else {\n var id_2 = sectionProps.title.id || menuId + sectionProps.title.key.replace(/\\s/g, '');\n headerContextualMenuItem = __assign(__assign({}, sectionProps.title), { id: id_2 });\n ariaLabelledby = id_2;\n }\n if (headerContextualMenuItem) {\n groupProps = {\n role: 'group',\n 'aria-labelledby': ariaLabelledby,\n };\n headerItem = renderHeaderMenuItem(headerContextualMenuItem, itemClassNames, menuClassNames, index, hasCheckmarks, hasIcons);\n }\n }\n if (sectionProps.items && sectionProps.items.length > 0) {\n var correctedIndex_1 = 0;\n return (React.createElement(\"li\", { role: \"presentation\", key: sectionProps.key || sectionItem.key || \"section-\".concat(index) },\n React.createElement(\"div\", __assign({}, groupProps),\n React.createElement(\"ul\", { className: menuClassNames.list, role: \"presentation\" },\n sectionProps.topDivider && renderSeparator(index, itemClassNames, true, true),\n headerItem && renderListItem(headerItem, sectionItem.key || index, itemClassNames, sectionItem.title),\n sectionProps.items.map(function (contextualMenuItem, itemsIndex) {\n var menuItem = renderMenuItem(contextualMenuItem, itemsIndex, correctedIndex_1, getItemCount(sectionProps.items), hasCheckmarks, hasIcons, menuClassNames);\n if (contextualMenuItem.itemType !== ContextualMenuItemType.Divider &&\n contextualMenuItem.itemType !== ContextualMenuItemType.Header) {\n var indexIncrease = contextualMenuItem.customOnRenderListLength\n ? contextualMenuItem.customOnRenderListLength\n : 1;\n correctedIndex_1 += indexIncrease;\n }\n return menuItem;\n }),\n sectionProps.bottomDivider && renderSeparator(index, itemClassNames, false, true)))));\n }\n };\n var renderListItem = function (content, key, classNames, // eslint-disable-line @typescript-eslint/no-deprecated\n title) {\n return (React.createElement(\"li\", { role: \"presentation\", title: title, key: key, className: classNames.item }, content));\n };\n var renderSeparator = function (index, classNames, // eslint-disable-line @typescript-eslint/no-deprecated\n top, fromSection) {\n if (fromSection || index > 0) {\n return (React.createElement(\"li\", { role: \"separator\", key: 'separator-' + index + (top === undefined ? '' : top ? '-top' : '-bottom'), className: classNames.divider, \"aria-hidden\": \"true\" }));\n }\n return null;\n };\n var renderNormalItem = function (item, classNames, // eslint-disable-line @typescript-eslint/no-deprecated\n index, focusableElementIndex, totalItemCount, hasCheckmarks, hasIcons) {\n if (item.onRender) {\n return item.onRender(__assign({ 'aria-posinset': focusableElementIndex + 1, 'aria-setsize': totalItemCount }, item), dismiss);\n }\n var contextualMenuItemAs = props.contextualMenuItemAs;\n var commonProps = {\n item: item,\n classNames: classNames,\n index: index,\n focusableElementIndex: focusableElementIndex,\n totalItemCount: totalItemCount,\n hasCheckmarks: hasCheckmarks,\n hasIcons: hasIcons,\n contextualMenuItemAs: contextualMenuItemAs,\n onItemMouseEnter: onItemMouseEnterBase,\n onItemMouseLeave: onMouseItemLeave,\n onItemMouseMove: onItemMouseMoveBase,\n onItemMouseDown: onItemMouseDown,\n executeItemClick: executeItemClick,\n onItemKeyDown: onItemKeyDown,\n expandedMenuItemKey: expandedMenuItemKey,\n openSubMenu: openSubMenu,\n dismissSubMenu: onSubMenuDismiss,\n dismissMenu: dismiss,\n };\n if (item.href) {\n var ContextualMenuAnchorAs = ContextualMenuAnchor;\n if (item.contextualMenuItemWrapperAs) {\n ContextualMenuAnchorAs = composeComponentAs(item.contextualMenuItemWrapperAs, ContextualMenuAnchorAs);\n }\n return React.createElement(ContextualMenuAnchorAs, __assign({}, commonProps, { onItemClick: onAnchorClick }));\n }\n if (item.split && hasSubmenu(item)) {\n var ContextualMenuSplitButtonAs = ContextualMenuSplitButton;\n if (item.contextualMenuItemWrapperAs) {\n ContextualMenuSplitButtonAs = composeComponentAs(item.contextualMenuItemWrapperAs, ContextualMenuSplitButtonAs);\n }\n return (React.createElement(ContextualMenuSplitButtonAs, __assign({}, commonProps, { onItemClick: onItemClick, onItemClickBase: onItemClickBase, onTap: cancelSubMenuTimer })));\n }\n var ContextualMenuButtonAs = ContextualMenuButton;\n if (item.contextualMenuItemWrapperAs) {\n ContextualMenuButtonAs = composeComponentAs(item.contextualMenuItemWrapperAs, ContextualMenuButtonAs);\n }\n return React.createElement(ContextualMenuButtonAs, __assign({}, commonProps, { onItemClick: onItemClick, onItemClickBase: onItemClickBase }));\n };\n var renderHeaderMenuItem = function (item, \n // eslint-disable-next-line @typescript-eslint/no-deprecated\n itemClassNames, \n // eslint-disable-next-line @typescript-eslint/no-deprecated\n menuClassNames, index, hasCheckmarks, hasIcons) {\n var ChildrenRenderer = ContextualMenuItem;\n if (item.contextualMenuItemAs) {\n ChildrenRenderer = composeComponentAs(item.contextualMenuItemAs, ChildrenRenderer);\n }\n if (props.contextualMenuItemAs) {\n ChildrenRenderer = composeComponentAs(props.contextualMenuItemAs, ChildrenRenderer);\n }\n var itemProps = item.itemProps, id = item.id;\n var divHtmlProperties = itemProps && getNativeProps(itemProps, divProperties);\n return (\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n React.createElement(\"div\", __assign({ id: id, className: menuClassNames.header }, divHtmlProperties, { style: item.style }),\n React.createElement(ChildrenRenderer, __assign({ item: item, classNames: itemClassNames, index: index, onCheckmarkClick: hasCheckmarks ? onItemClick : undefined, hasIcons: hasIcons }, itemProps))));\n };\n //#endregion\n //#region Main render\n var isBeakVisible = props.isBeakVisible;\n var items = props.items, labelElementId = props.labelElementId, id = props.id, className = props.className, beakWidth = props.beakWidth, directionalHint = props.directionalHint, directionalHintForRTL = props.directionalHintForRTL, alignTargetEdge = props.alignTargetEdge, gapSpace = props.gapSpace, coverTarget = props.coverTarget, ariaLabel = props.ariaLabel, doNotLayer = props.doNotLayer, target = props.target, bounds = props.bounds, useTargetWidth = props.useTargetWidth, useTargetAsMinWidth = props.useTargetAsMinWidth, directionalHintFixed = props.directionalHintFixed, shouldFocusOnMount = props.shouldFocusOnMount, shouldFocusOnContainer = props.shouldFocusOnContainer, title = props.title, styles = props.styles, theme = props.theme, calloutProps = props.calloutProps, _k = props.onRenderSubMenu, onRenderSubMenu = _k === void 0 ? onDefaultRenderSubMenu : _k, _l = props.onRenderMenuList, onRenderMenuList = _l === void 0 ? function (menuListProps, defaultRender) { return onDefaultRenderMenuList(menuListProps, classNames, defaultRender); } : _l, focusZoneProps = props.focusZoneProps, \n // eslint-disable-next-line @typescript-eslint/no-deprecated\n getMenuClassNames = props.getMenuClassNames;\n var classNames = getMenuClassNames\n ? getMenuClassNames(theme, className)\n : getClassNames(styles, {\n theme: theme,\n className: className,\n });\n var hasIcons = itemsHaveIcons(items);\n function itemsHaveIcons(contextualMenuItems) {\n for (var _i = 0, contextualMenuItems_1 = contextualMenuItems; _i < contextualMenuItems_1.length; _i++) {\n var item = contextualMenuItems_1[_i];\n if (item.iconProps) {\n return true;\n }\n if (item.itemType === ContextualMenuItemType.Section &&\n item.sectionProps &&\n itemsHaveIcons(item.sectionProps.items)) {\n return true;\n }\n }\n return false;\n }\n var adjustedFocusZoneProps = __assign(__assign({ direction: FocusZoneDirection.vertical, handleTabKey: FocusZoneTabbableElements.all, isCircularNavigation: true, 'data-tabster': '{\"uncontrolled\": {}, \"focusable\": { \"excludeFromMover\": true }}' }, focusZoneProps), { className: css(classNames.root, (_a = props.focusZoneProps) === null || _a === void 0 ? void 0 : _a.className) });\n var hasCheckmarks = canAnyMenuItemsCheck(items);\n var submenuProps = expandedMenuItemKey && props.hidden !== true ? getSubmenuProps() : null;\n isBeakVisible = isBeakVisible === undefined ? responsiveMode <= ResponsiveMode.medium : isBeakVisible;\n /**\n * When useTargetWidth is true, get the width of the target element and apply it for the context menu container\n */\n var contextMenuStyle;\n var targetAsHtmlElement = targetRef.current;\n if ((useTargetWidth || useTargetAsMinWidth) && targetAsHtmlElement && targetAsHtmlElement.offsetWidth) {\n var targetBoundingRect = targetAsHtmlElement.getBoundingClientRect();\n var targetWidth = targetBoundingRect.width - 2; /* Accounts for 1px border */\n if (useTargetWidth) {\n contextMenuStyle = {\n width: targetWidth,\n };\n }\n else if (useTargetAsMinWidth) {\n contextMenuStyle = {\n minWidth: targetWidth,\n };\n }\n }\n // The menu should only return if items were provided, if no items were provided then it should not appear.\n if (items && items.length > 0) {\n var totalItemCount_1 = getItemCount(items);\n var calloutStyles_1 = classNames.subComponentStyles\n ? classNames.subComponentStyles.callout\n : undefined;\n return (React.createElement(MenuContext.Consumer, null, function (menuContext) { return (React.createElement(Callout, __assign({ styles: calloutStyles_1, onRestoreFocus: tryFocusPreviousActiveElement }, calloutProps, { target: target || menuContext.target, isBeakVisible: isBeakVisible, beakWidth: beakWidth, directionalHint: directionalHint, directionalHintForRTL: directionalHintForRTL, gapSpace: gapSpace, coverTarget: coverTarget, doNotLayer: doNotLayer, className: css('ms-ContextualMenu-Callout', calloutProps && calloutProps.className), setInitialFocus: shouldFocusOnMount, onDismiss: props.onDismiss || menuContext.onDismiss, onScroll: onScroll, bounds: bounds, directionalHintFixed: directionalHintFixed, alignTargetEdge: alignTargetEdge, hidden: props.hidden || menuContext.hidden, ref: forwardedRef }),\n React.createElement(\"div\", { style: contextMenuStyle, ref: hostElement, id: id, className: classNames.container, tabIndex: shouldFocusOnContainer ? 0 : -1, onKeyDown: onMenuKeyDown, onKeyUp: onKeyUp, onFocusCapture: onMenuFocusCapture, \"aria-label\": ariaLabel, \"aria-labelledby\": labelElementId, role: 'menu' },\n title && React.createElement(\"div\", { className: classNames.title },\n \" \",\n title,\n \" \"),\n items && items.length\n ? renderFocusZone(onRenderMenuList({\n ariaLabel: ariaLabel,\n items: items,\n totalItemCount: totalItemCount_1,\n hasCheckmarks: hasCheckmarks,\n hasIcons: hasIcons,\n defaultMenuItemRenderer: function (item) {\n return defaultMenuItemRenderer(item, classNames);\n },\n labelElementId: labelElementId,\n }, function (menuListProps, defaultRender) { return onDefaultRenderMenuList(menuListProps, classNames, defaultRender); }), adjustedFocusZoneProps)\n : null,\n submenuProps && onRenderSubMenu(submenuProps, onDefaultRenderSubMenu)),\n React.createElement(FocusRects, null))); }));\n }\n else {\n return null;\n }\n //#endregion\n}), function (prevProps, newProps) {\n if (!newProps.shouldUpdateWhenHidden && prevProps.hidden && newProps.hidden) {\n // Do not update when hidden.\n return true;\n }\n return shallowCompare(prevProps, newProps);\n});\nContextualMenuBase.displayName = 'ContextualMenuBase';\n/**\n * Returns true if the key for the event is alt (Mac option) or meta (Mac command).\n */\nfunction isAltOrMeta(ev) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return ev.which === KeyCodes.alt || ev.key === 'Meta';\n}\nfunction onItemMouseDown(item, ev) {\n var _a;\n (_a = item.onMouseDown) === null || _a === void 0 ? void 0 : _a.call(item, item, ev);\n}\nfunction onDefaultRenderSubMenu(subMenuProps, defaultRender) {\n throw Error('ContextualMenuBase: onRenderSubMenu callback is null or undefined. ' +\n 'Please ensure to set `onRenderSubMenu` property either manually or with `styled` helper.');\n}\n/**\n * Returns the item that matches a given key if any.\n * @param key - The key of the item to match\n * @param items - The items to look for the key\n */\nfunction findItemByKeyFromItems(key, items) {\n for (var _i = 0, items_3 = items; _i < items_3.length; _i++) {\n var item = items_3[_i];\n if (item.itemType === ContextualMenuItemType.Section && item.sectionProps) {\n var match = findItemByKeyFromItems(key, item.sectionProps.items);\n if (match) {\n return match;\n }\n }\n else if (item.key && item.key === key) {\n return item;\n }\n }\n}\nfunction getOnClickWithOverrideTarget(onClick, target) {\n return onClick\n ? function (ev, item) {\n overrideTarget(ev, target);\n return onClick(ev, item);\n }\n : onClick;\n}\nfunction overrideTarget(ev, target) {\n if (ev && target) {\n ev.persist();\n if (target instanceof Event) {\n ev.target = target.target;\n }\n else if (target instanceof Element) {\n ev.target = target;\n }\n }\n}\n//# sourceMappingURL=ContextualMenu.base.js.map","import { getGlobalClassNames, FontWeights } from '../../Styling';\nimport { CONTEXTUAL_MENU_ITEM_HEIGHT } from './ContextualMenu.cnstyles';\nvar GlobalClassNames = {\n root: 'ms-ContextualMenu',\n container: 'ms-ContextualMenu-container',\n list: 'ms-ContextualMenu-list',\n header: 'ms-ContextualMenu-header',\n title: 'ms-ContextualMenu-title',\n isopen: 'is-open',\n};\nexport var getStyles = function (props) {\n var className = props.className, theme = props.theme;\n var classNames = getGlobalClassNames(GlobalClassNames, theme);\n var fonts = theme.fonts, semanticColors = theme.semanticColors, effects = theme.effects;\n return {\n root: [\n theme.fonts.medium,\n classNames.root,\n classNames.isopen,\n {\n backgroundColor: semanticColors.menuBackground,\n minWidth: '180px',\n },\n className,\n ],\n container: [\n classNames.container,\n {\n selectors: {\n ':focus': { outline: 0 },\n },\n },\n ],\n list: [\n classNames.list,\n classNames.isopen,\n {\n listStyleType: 'none',\n margin: '0',\n padding: '0',\n },\n ],\n header: [\n classNames.header,\n fonts.small,\n {\n fontWeight: FontWeights.semibold,\n color: semanticColors.menuHeader,\n background: 'none',\n backgroundColor: 'transparent',\n border: 'none',\n height: CONTEXTUAL_MENU_ITEM_HEIGHT,\n lineHeight: CONTEXTUAL_MENU_ITEM_HEIGHT,\n cursor: 'default',\n padding: '0px 6px',\n userSelect: 'none',\n textAlign: 'left',\n },\n ],\n title: [\n classNames.title,\n {\n fontSize: fonts.mediumPlus.fontSize,\n paddingRight: '14px',\n paddingLeft: '14px',\n paddingBottom: '5px',\n paddingTop: '5px',\n backgroundColor: semanticColors.menuItemBackgroundPressed,\n },\n ],\n subComponentStyles: {\n callout: {\n root: {\n boxShadow: effects.elevation8,\n },\n },\n menuItem: {},\n },\n };\n};\n//# sourceMappingURL=ContextualMenu.styles.js.map","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { styled, composeRenderFunction } from '../../Utilities';\nimport { ContextualMenuBase } from './ContextualMenu.base';\nimport { getStyles } from './ContextualMenu.styles';\nfunction onRenderSubMenu(subMenuProps) {\n return React.createElement(LocalContextualMenu, __assign({}, subMenuProps));\n}\n// This is to prevent cyclic import with ContextualMenu.base.tsx.\nvar LocalContextualMenu = styled(ContextualMenuBase, getStyles, function (props) { return ({\n onRenderSubMenu: props.onRenderSubMenu\n ? composeRenderFunction(props.onRenderSubMenu, onRenderSubMenu)\n : onRenderSubMenu,\n}); }, { scope: 'ContextualMenu' });\n/**\n * ContextualMenu description\n */\nexport var ContextualMenu = LocalContextualMenu;\nContextualMenu.displayName = 'ContextualMenu';\n//# sourceMappingURL=ContextualMenu.js.map","import { memoizeFunction } from '../../Utilities';\nimport { getGlobalClassNames, mergeStyleSets } from '../../Styling';\nexport var ButtonGlobalClassNames = {\n msButton: 'ms-Button',\n msButtonHasMenu: 'ms-Button--hasMenu',\n msButtonIcon: 'ms-Button-icon',\n msButtonMenuIcon: 'ms-Button-menuIcon',\n msButtonLabel: 'ms-Button-label',\n msButtonDescription: 'ms-Button-description',\n msButtonScreenReaderText: 'ms-Button-screenReaderText',\n msButtonFlexContainer: 'ms-Button-flexContainer',\n msButtonTextContainer: 'ms-Button-textContainer',\n};\nexport var getBaseButtonClassNames = memoizeFunction(function (theme, styles, className, variantClassName, iconClassName, menuIconClassName, disabled, hasMenu, checked, expanded, isSplit) {\n var _a, _b;\n var classNames = getGlobalClassNames(ButtonGlobalClassNames, theme || {});\n var isExpanded = expanded && !isSplit;\n return mergeStyleSets(styles.__shadowConfig__, {\n root: [\n classNames.msButton,\n styles.root,\n variantClassName,\n checked && ['is-checked', styles.rootChecked],\n isExpanded && [\n 'is-expanded',\n styles.rootExpanded,\n (_a = {},\n _a[\":hover .\".concat(classNames.msButtonIcon)] = styles.iconExpandedHovered,\n // menuIcon falls back to rootExpandedHovered to support original behavior\n _a[\":hover .\".concat(classNames.msButtonMenuIcon)] = styles.menuIconExpandedHovered || styles.rootExpandedHovered,\n _a[':hover'] = styles.rootExpandedHovered,\n _a),\n ],\n hasMenu && [ButtonGlobalClassNames.msButtonHasMenu, styles.rootHasMenu],\n disabled && ['is-disabled', styles.rootDisabled],\n !disabled &&\n !isExpanded &&\n !checked && (_b = {\n ':hover': styles.rootHovered\n },\n _b[\":hover .\".concat(classNames.msButtonLabel)] = styles.labelHovered,\n _b[\":hover .\".concat(classNames.msButtonIcon)] = styles.iconHovered,\n _b[\":hover .\".concat(classNames.msButtonDescription)] = styles.descriptionHovered,\n _b[\":hover .\".concat(classNames.msButtonMenuIcon)] = styles.menuIconHovered,\n _b[':focus'] = styles.rootFocused,\n _b[':active'] = styles.rootPressed,\n _b[\":active .\".concat(classNames.msButtonIcon)] = styles.iconPressed,\n _b[\":active .\".concat(classNames.msButtonDescription)] = styles.descriptionPressed,\n _b[\":active .\".concat(classNames.msButtonMenuIcon)] = styles.menuIconPressed,\n _b),\n disabled && checked && [styles.rootCheckedDisabled],\n !disabled &&\n checked && {\n ':hover': styles.rootCheckedHovered,\n ':active': styles.rootCheckedPressed,\n },\n className,\n ],\n flexContainer: [classNames.msButtonFlexContainer, styles.flexContainer],\n textContainer: [classNames.msButtonTextContainer, styles.textContainer],\n icon: [\n classNames.msButtonIcon,\n iconClassName,\n styles.icon,\n isExpanded && styles.iconExpanded,\n checked && styles.iconChecked,\n disabled && styles.iconDisabled,\n ],\n label: [classNames.msButtonLabel, styles.label, checked && styles.labelChecked, disabled && styles.labelDisabled],\n menuIcon: [\n classNames.msButtonMenuIcon,\n menuIconClassName,\n styles.menuIcon,\n checked && styles.menuIconChecked,\n disabled && !isSplit && styles.menuIconDisabled,\n !disabled &&\n !isExpanded &&\n !checked && {\n ':hover': styles.menuIconHovered,\n ':active': styles.menuIconPressed,\n },\n isExpanded && ['is-expanded', styles.menuIconExpanded],\n ],\n description: [\n classNames.msButtonDescription,\n styles.description,\n checked && styles.descriptionChecked,\n disabled && styles.descriptionDisabled,\n ],\n screenReaderText: [classNames.msButtonScreenReaderText, styles.screenReaderText],\n });\n});\n//# sourceMappingURL=BaseButton.classNames.js.map","import { memoizeFunction } from '../../../Utilities';\nimport { mergeStyles } from '../../../Styling';\nexport var SplitButtonGlobalClassNames = {\n msSplitButtonDivider: 'ms-SplitButton-divider',\n};\nexport var getSplitButtonClassNames = memoizeFunction(function (styles, disabled, expanded, checked, primaryDisabled) {\n return {\n root: mergeStyles(styles.splitButtonMenuButton, expanded && [styles.splitButtonMenuButtonExpanded], disabled && [styles.splitButtonMenuButtonDisabled], checked && !disabled && [styles.splitButtonMenuButtonChecked], primaryDisabled &&\n !disabled && [\n {\n ':focus': styles.splitButtonMenuFocused,\n },\n ]),\n splitButtonContainer: mergeStyles(styles.splitButtonContainer, !disabled &&\n checked && [\n styles.splitButtonContainerChecked,\n {\n ':hover': styles.splitButtonContainerCheckedHovered,\n },\n ], !disabled &&\n !checked && [\n {\n ':hover': styles.splitButtonContainerHovered,\n ':focus': styles.splitButtonContainerFocused,\n },\n ], disabled && styles.splitButtonContainerDisabled),\n icon: mergeStyles(styles.splitButtonMenuIcon, disabled && styles.splitButtonMenuIconDisabled, !disabled && primaryDisabled && styles.splitButtonMenuIcon),\n flexContainer: mergeStyles(styles.splitButtonFlexContainer),\n divider: mergeStyles(SplitButtonGlobalClassNames.msSplitButtonDivider, styles.splitButtonDivider, (primaryDisabled || disabled) && styles.splitButtonDividerDisabled),\n };\n});\n//# sourceMappingURL=SplitButton.classNames.js.map","import { __assign, __extends, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { anchorProperties, assign, buttonProperties, createMergedRef, css, getId, getNativeProps, initializeComponentRef, memoizeFunction, mergeAriaAttributeValues, nullRender, portalContainsElement, setFocusVisibility, warnConditionallyRequiredProps, warnDeprecations, Async, EventGroup, FocusRects, FocusRectsContext, KeyCodes, } from '../../Utilities';\nimport { Icon, FontIcon, ImageIcon } from '../../Icon';\nimport { DirectionalHint } from '../../common/DirectionalHint';\nimport { ContextualMenu } from '../../ContextualMenu';\nimport { getBaseButtonClassNames } from './BaseButton.classNames';\nimport { getSplitButtonClassNames as getBaseSplitButtonClassNames } from './SplitButton/SplitButton.classNames';\nimport { KeytipData } from '../../KeytipData';\nimport { composeComponentAs } from '../../Utilities';\nvar TouchIdleDelay = 500; /* ms */\nvar COMPONENT_NAME = 'BaseButton';\n/**\n * {@docCategory Button}\n */\nvar BaseButton = /** @class */ (function (_super) {\n __extends(BaseButton, _super);\n function BaseButton(props) {\n var _this = _super.call(this, props) || this;\n _this._buttonElement = React.createRef();\n _this._splitButtonContainer = React.createRef();\n _this._mergedRef = createMergedRef();\n _this._renderedVisibleMenu = false;\n _this._getMemoizedMenuButtonKeytipProps = memoizeFunction(function (keytipProps) {\n return __assign(__assign({}, keytipProps), { hasMenu: true });\n });\n _this._onRenderIcon = function (buttonProps, defaultRender) {\n var iconProps = _this.props.iconProps;\n if (iconProps && (iconProps.iconName !== undefined || iconProps.imageProps)) {\n var className = iconProps.className, imageProps = iconProps.imageProps, rest = __rest(iconProps, [\"className\", \"imageProps\"]);\n // If the styles prop is specified as part of iconProps, fall back to regular Icon as FontIcon and ImageIcon\n // do not have this prop.\n if (iconProps.styles) {\n return React.createElement(Icon, __assign({ className: css(_this._classNames.icon, className), imageProps: imageProps }, rest));\n }\n if (iconProps.iconName) {\n return React.createElement(FontIcon, __assign({ className: css(_this._classNames.icon, className) }, rest));\n }\n if (imageProps) {\n return React.createElement(ImageIcon, __assign({ className: css(_this._classNames.icon, className), imageProps: imageProps }, rest));\n }\n }\n return null;\n };\n _this._onRenderTextContents = function () {\n var _a = _this.props, text = _a.text, children = _a.children, \n // eslint-disable-next-line @typescript-eslint/no-deprecated\n _b = _a.secondaryText, \n // eslint-disable-next-line @typescript-eslint/no-deprecated\n secondaryText = _b === void 0 ? _this.props.description : _b, _c = _a.onRenderText, onRenderText = _c === void 0 ? _this._onRenderText : _c, _d = _a.onRenderDescription, onRenderDescription = _d === void 0 ? _this._onRenderDescription : _d;\n if (text || typeof children === 'string' || secondaryText) {\n return (React.createElement(\"span\", { className: _this._classNames.textContainer },\n onRenderText(_this.props, _this._onRenderText),\n onRenderDescription(_this.props, _this._onRenderDescription)));\n }\n return [onRenderText(_this.props, _this._onRenderText), onRenderDescription(_this.props, _this._onRenderDescription)];\n };\n _this._onRenderText = function () {\n var text = _this.props.text;\n var children = _this.props.children;\n // For backwards compat, we should continue to take in the text content from children.\n if (text === undefined && typeof children === 'string') {\n text = children;\n }\n if (_this._hasText()) {\n return (React.createElement(\"span\", { key: _this._labelId, className: _this._classNames.label, id: _this._labelId }, text));\n }\n return null;\n };\n _this._onRenderChildren = function () {\n var children = _this.props.children;\n // If children is just a string, either it or the text will be rendered via onRenderLabel\n // If children is another component, it will be rendered after text\n if (typeof children === 'string') {\n return null;\n }\n return children;\n };\n _this._onRenderDescription = function (props) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n var _a = props.secondaryText, secondaryText = _a === void 0 ? _this.props.description : _a;\n // ms-Button-description is only shown when the button type is compound.\n // In other cases it will not be displayed.\n return secondaryText ? (React.createElement(\"span\", { key: _this._descriptionId, className: _this._classNames.description, id: _this._descriptionId }, secondaryText)) : null;\n };\n _this._onRenderAriaDescription = function () {\n var ariaDescription = _this.props.ariaDescription;\n // If ariaDescription is given, descriptionId will be assigned to ariaDescriptionSpan,\n // otherwise it will be assigned to descriptionSpan.\n return ariaDescription ? (React.createElement(\"span\", { className: _this._classNames.screenReaderText, id: _this._ariaDescriptionId }, ariaDescription)) : null;\n };\n _this._onRenderMenuIcon = function (props) {\n var menuIconProps = _this.props.menuIconProps;\n return React.createElement(FontIcon, __assign({ iconName: \"ChevronDown\" }, menuIconProps, { className: _this._classNames.menuIcon }));\n };\n _this._onRenderMenu = function (menuProps) {\n var MenuType = _this.props.menuAs ? composeComponentAs(_this.props.menuAs, ContextualMenu) : ContextualMenu;\n return React.createElement(MenuType, __assign({}, menuProps));\n };\n _this._onDismissMenu = function (ev) {\n var menuProps = _this.props.menuProps;\n if (menuProps && menuProps.onDismiss) {\n menuProps.onDismiss(ev);\n }\n if (!ev || !ev.defaultPrevented) {\n _this._dismissMenu();\n }\n };\n _this._dismissMenu = function () {\n _this._menuShouldFocusOnMount = undefined;\n _this._menuShouldFocusOnContainer = undefined;\n _this.setState({ menuHidden: true });\n };\n _this._openMenu = function (shouldFocusOnContainer, shouldFocusOnMount) {\n if (shouldFocusOnMount === void 0) { shouldFocusOnMount = true; }\n if (_this.props.menuProps) {\n _this._menuShouldFocusOnContainer = shouldFocusOnContainer;\n _this._menuShouldFocusOnMount = shouldFocusOnMount;\n _this._renderedVisibleMenu = true;\n _this.setState({ menuHidden: false });\n }\n };\n _this._onToggleMenu = function (shouldFocusOnContainer) {\n var shouldFocusOnMount = true;\n if (_this.props.menuProps && _this.props.menuProps.shouldFocusOnMount === false) {\n shouldFocusOnMount = false;\n }\n _this.state.menuHidden ? _this._openMenu(shouldFocusOnContainer, shouldFocusOnMount) : _this._dismissMenu();\n };\n _this._onSplitContainerFocusCapture = function (ev) {\n var container = _this._splitButtonContainer.current;\n // If the target is coming from the portal we do not need to set focus on the container.\n if (!container || (ev.target && portalContainsElement(ev.target, container))) {\n return;\n }\n // We should never be able to focus the individual buttons in a split button. Focus\n // should always remain on the container.\n container.focus();\n };\n _this._onSplitButtonPrimaryClick = function (ev) {\n if (!_this.state.menuHidden) {\n _this._dismissMenu();\n }\n // toggle split buttons need two separate targets, even for touch\n var singleTouchTarget = _this._processingTouch && !_this.props.toggle;\n if (!singleTouchTarget && _this.props.onClick) {\n _this.props.onClick(ev);\n }\n else if (singleTouchTarget) {\n _this._onMenuClick(ev);\n }\n };\n _this._onKeyDown = function (ev) {\n // explicity cancelling event so click won't fire after this\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (_this.props.disabled && (ev.which === KeyCodes.enter || ev.which === KeyCodes.space)) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n else if (!_this.props.disabled) {\n if (_this.props.menuProps) {\n _this._onMenuKeyDown(ev);\n }\n else if (_this.props.onKeyDown !== undefined) {\n _this.props.onKeyDown(ev); // not cancelling event because it's not disabled\n }\n }\n };\n _this._onKeyUp = function (ev) {\n if (!_this.props.disabled && _this.props.onKeyUp !== undefined) {\n _this.props.onKeyUp(ev); // not cancelling event because it's not disabled\n }\n };\n _this._onKeyPress = function (ev) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (!_this.props.disabled && _this.props.onKeyPress !== undefined) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n _this.props.onKeyPress(ev); // not cancelling event because it's not disabled\n }\n };\n _this._onMouseUp = function (ev) {\n if (!_this.props.disabled && _this.props.onMouseUp !== undefined) {\n _this.props.onMouseUp(ev); // not cancelling event because it's not disabled\n }\n };\n _this._onMouseDown = function (ev) {\n if (!_this.props.disabled && _this.props.onMouseDown !== undefined) {\n _this.props.onMouseDown(ev); // not cancelling event because it's not disabled\n }\n };\n _this._onClick = function (ev) {\n if (!_this.props.disabled) {\n if (_this.props.menuProps) {\n _this._onMenuClick(ev);\n }\n else if (_this.props.onClick !== undefined) {\n _this.props.onClick(ev); // not cancelling event because it's not disabled\n }\n }\n };\n _this._onSplitButtonContainerKeyDown = function (ev) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (ev.which === KeyCodes.enter || ev.which === KeyCodes.space) {\n if (_this._buttonElement.current) {\n _this._buttonElement.current.click();\n ev.preventDefault();\n ev.stopPropagation();\n }\n }\n else {\n _this._onMenuKeyDown(ev);\n }\n };\n _this._onMenuKeyDown = function (ev) {\n var _a;\n if (_this.props.disabled) {\n return;\n }\n if (_this.props.onKeyDown) {\n _this.props.onKeyDown(ev);\n }\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n var isUp = ev.which === KeyCodes.up;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n var isDown = ev.which === KeyCodes.down;\n if (!ev.defaultPrevented && _this._isValidMenuOpenKey(ev)) {\n var onMenuClick = _this.props.onMenuClick;\n if (onMenuClick) {\n onMenuClick(ev, _this.props);\n }\n _this._onToggleMenu(false);\n ev.preventDefault();\n ev.stopPropagation();\n }\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (ev.which === KeyCodes.enter || ev.which === KeyCodes.space) {\n // We manually set the focus visibility to true if opening via Enter or Space to account for the scenario where\n // a user clicks on the button, closes the menu and then opens it via keyboard. In this scenario our default logic\n // for setting focus visibility is not triggered since there is no keyboard navigation present beforehand.\n setFocusVisibility(true, ev.target, (_a = _this.context) === null || _a === void 0 ? void 0 : _a.registeredProviders);\n }\n if (!(ev.altKey || ev.metaKey) && (isUp || isDown)) {\n // Suppose a menu, with shouldFocusOnMount: false, is open, and user wants to keyboard to the menu items\n // We need to re-render the menu with shouldFocusOnMount as true.\n if (!_this.state.menuHidden && _this.props.menuProps) {\n var currentShouldFocusOnMount = _this._menuShouldFocusOnMount !== undefined\n ? _this._menuShouldFocusOnMount\n : _this.props.menuProps.shouldFocusOnMount;\n if (!currentShouldFocusOnMount) {\n ev.preventDefault();\n ev.stopPropagation();\n _this._menuShouldFocusOnMount = true;\n _this.forceUpdate();\n }\n }\n }\n };\n _this._onTouchStart = function () {\n if (_this._isSplitButton &&\n _this._splitButtonContainer.current &&\n !('onpointerdown' in _this._splitButtonContainer.current)) {\n _this._handleTouchAndPointerEvent();\n }\n };\n _this._onMenuClick = function (ev) {\n var _a = _this.props, onMenuClick = _a.onMenuClick, menuProps = _a.menuProps;\n if (onMenuClick) {\n onMenuClick(ev, _this.props);\n }\n // focus on the container by default when the menu is opened with a click event\n // this differentiates from a keyboard interaction triggering the click event\n var shouldFocusOnContainer = typeof (menuProps === null || menuProps === void 0 ? void 0 : menuProps.shouldFocusOnContainer) === 'boolean'\n ? menuProps.shouldFocusOnContainer\n : ev.nativeEvent.pointerType === 'mouse';\n if (!ev.defaultPrevented) {\n _this._onToggleMenu(shouldFocusOnContainer);\n ev.preventDefault();\n ev.stopPropagation();\n }\n };\n initializeComponentRef(_this);\n _this._async = new Async(_this);\n _this._events = new EventGroup(_this);\n warnConditionallyRequiredProps(COMPONENT_NAME, props, ['menuProps', 'onClick'], 'split', _this.props.split);\n warnDeprecations(COMPONENT_NAME, props, {\n rootProps: undefined,\n description: 'secondaryText',\n toggled: 'checked',\n });\n _this._labelId = getId();\n _this._descriptionId = getId();\n _this._ariaDescriptionId = getId();\n _this.state = {\n menuHidden: true,\n };\n return _this;\n }\n Object.defineProperty(BaseButton.prototype, \"_isSplitButton\", {\n get: function () {\n return !!this.props.menuProps && !!this.props.onClick && this.props.split === true;\n },\n enumerable: false,\n configurable: true\n });\n BaseButton.prototype.render = function () {\n var _a;\n var _b = this.props, ariaDescription = _b.ariaDescription, ariaLabel = _b.ariaLabel, ariaHidden = _b.ariaHidden, className = _b.className, disabled = _b.disabled, allowDisabledFocus = _b.allowDisabledFocus, primaryDisabled = _b.primaryDisabled, \n // eslint-disable-next-line @typescript-eslint/no-deprecated\n _c = _b.secondaryText, \n // eslint-disable-next-line @typescript-eslint/no-deprecated\n secondaryText = _c === void 0 ? this.props.description : _c, href = _b.href, iconProps = _b.iconProps, menuIconProps = _b.menuIconProps, styles = _b.styles, checked = _b.checked, variantClassName = _b.variantClassName, theme = _b.theme, toggle = _b.toggle, getClassNames = _b.getClassNames, role = _b.role;\n var menuHidden = this.state.menuHidden;\n // Button is disabled if the whole button (in case of splitButton is disabled) or if the primary action is disabled\n var isPrimaryButtonDisabled = disabled || primaryDisabled;\n this._classNames = getClassNames\n ? getClassNames(theme, className, variantClassName, iconProps && iconProps.className, menuIconProps && menuIconProps.className, isPrimaryButtonDisabled, checked, !menuHidden, !!this.props.menuProps, this.props.split, !!allowDisabledFocus)\n : getBaseButtonClassNames(theme, styles, className, variantClassName, iconProps && iconProps.className, menuIconProps && menuIconProps.className, isPrimaryButtonDisabled, !!this.props.menuProps, checked, !menuHidden, this.props.split);\n var _d = this, _ariaDescriptionId = _d._ariaDescriptionId, _labelId = _d._labelId, _descriptionId = _d._descriptionId;\n // Anchor tag cannot be disabled hence in disabled state rendering\n // anchor button as normal button\n var renderAsAnchor = !isPrimaryButtonDisabled && !!href;\n var tag = renderAsAnchor ? 'a' : 'button';\n var nativeProps = getNativeProps(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n assign(renderAsAnchor ? {} : { type: 'button' }, this.props.rootProps, this.props), renderAsAnchor ? anchorProperties : buttonProperties, [\n 'disabled', // let disabled buttons be focused and styled as disabled.\n ]);\n // Check for ariaLabel passed in via Button props, and fall back to aria-label passed in via native props\n var resolvedAriaLabel = ariaLabel || nativeProps['aria-label'];\n // Check for ariaDescription, secondaryText or aria-describedby in the native props to determine source of\n // aria-describedby. Otherwise default to undefined so property does not appear in output.\n var ariaDescribedBy = undefined;\n if (ariaDescription) {\n ariaDescribedBy = _ariaDescriptionId;\n }\n else if (secondaryText && this.props.onRenderDescription !== nullRender) {\n // for buttons like CompoundButton with a valid onRenderDescription, we need to set an ariaDescribedBy\n // for buttons that do not render anything (via nullRender), we should not set an ariaDescribedBy\n ariaDescribedBy = _descriptionId;\n }\n else if (nativeProps['aria-describedby']) {\n ariaDescribedBy = nativeProps['aria-describedby'];\n }\n // If an explicit aria-labelledby is given, use that and we're done.\n // If any kind of description is given (which will end up as an aria-describedby attribute)\n // and no ariaLabel is specified, set the labelledby element.\n // Otherwise, the button is labeled implicitly by the descendent text on the button (if it exists).\n var ariaLabelledBy = undefined;\n if (nativeProps['aria-labelledby']) {\n ariaLabelledBy = nativeProps['aria-labelledby'];\n }\n else if (ariaDescribedBy && !resolvedAriaLabel) {\n ariaLabelledBy = this._hasText() ? _labelId : undefined;\n }\n var dataIsFocusable = this.props['data-is-focusable'] === false || (disabled && !allowDisabledFocus) || this._isSplitButton\n ? false\n : true;\n var isCheckboxTypeRole = role === 'menuitemcheckbox' || role === 'checkbox';\n // if isCheckboxTypeRole, always return a checked value.\n // Otherwise only return checked value if toggle is set to true.\n // This is because role=\"checkbox\" always needs to have an aria-checked value\n // but our checked prop only sets aria-pressed if we mark the button as a toggle=\"true\"\n var checkedOrPressedValue = isCheckboxTypeRole ? !!checked : toggle === true ? !!checked : undefined;\n var buttonProps = assign(nativeProps, (_a = {\n className: this._classNames.root,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n ref: this._mergedRef(this.props.elementRef, this._buttonElement),\n disabled: isPrimaryButtonDisabled && !allowDisabledFocus,\n onKeyDown: this._onKeyDown,\n onKeyPress: this._onKeyPress,\n onKeyUp: this._onKeyUp,\n onMouseDown: this._onMouseDown,\n onMouseUp: this._onMouseUp,\n onClick: this._onClick,\n 'aria-label': resolvedAriaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n 'aria-disabled': isPrimaryButtonDisabled,\n 'data-is-focusable': dataIsFocusable\n },\n // aria-pressed attribute should only be present for toggle buttons\n // aria-checked attribute should only be present for toggle buttons with checkbox type role\n _a[isCheckboxTypeRole ? 'aria-checked' : 'aria-pressed'] = checkedOrPressedValue,\n _a));\n if (ariaHidden) {\n buttonProps['aria-hidden'] = true;\n }\n if (this._isSplitButton) {\n return this._onRenderSplitButtonContent(tag, buttonProps);\n }\n else if (this.props.menuProps) {\n var _e = this.props.menuProps.id, id = _e === void 0 ? \"\".concat(this._labelId, \"-menu\") : _e;\n assign(buttonProps, {\n 'aria-expanded': !menuHidden,\n 'aria-controls': !menuHidden ? id : null,\n 'aria-haspopup': true,\n });\n }\n return this._onRenderContent(tag, buttonProps);\n };\n BaseButton.prototype.componentDidMount = function () {\n // For split buttons, touching anywhere in the button should drop the dropdown, which should contain the\n // primary action. This gives more hit target space for touch environments. We're setting the onpointerdown here,\n // because React does not support Pointer events yet.\n if (this._isSplitButton && this._splitButtonContainer.current) {\n if ('onpointerdown' in this._splitButtonContainer.current) {\n this._events.on(this._splitButtonContainer.current, 'pointerdown', this._onPointerDown, true);\n }\n if ('onpointerup' in this._splitButtonContainer.current && this.props.onPointerUp) {\n this._events.on(this._splitButtonContainer.current, 'pointerup', this.props.onPointerUp, true);\n }\n }\n };\n BaseButton.prototype.componentDidUpdate = function (prevProps, prevState) {\n // If Button's menu was closed, run onAfterMenuDismiss.\n if (this.props.onAfterMenuDismiss && !prevState.menuHidden && this.state.menuHidden) {\n this.props.onAfterMenuDismiss();\n }\n };\n BaseButton.prototype.componentWillUnmount = function () {\n this._async.dispose();\n this._events.dispose();\n };\n BaseButton.prototype.focus = function () {\n var _a, _b;\n if (this._isSplitButton && this._splitButtonContainer.current) {\n setFocusVisibility(true, undefined, (_a = this.context) === null || _a === void 0 ? void 0 : _a.registeredProviders);\n this._splitButtonContainer.current.focus();\n }\n else if (this._buttonElement.current) {\n setFocusVisibility(true, undefined, (_b = this.context) === null || _b === void 0 ? void 0 : _b.registeredProviders);\n this._buttonElement.current.focus();\n }\n };\n BaseButton.prototype.dismissMenu = function () {\n this._dismissMenu();\n };\n BaseButton.prototype.openMenu = function (shouldFocusOnContainer, shouldFocusOnMount) {\n this._openMenu(shouldFocusOnContainer, shouldFocusOnMount);\n };\n BaseButton.prototype._onRenderContent = function (tag, buttonProps) {\n var _this = this;\n var props = this.props;\n var Tag = tag;\n var menuIconProps = props.menuIconProps, menuProps = props.menuProps, _a = props.onRenderIcon, onRenderIcon = _a === void 0 ? this._onRenderIcon : _a, _b = props.onRenderAriaDescription, onRenderAriaDescription = _b === void 0 ? this._onRenderAriaDescription : _b, _c = props.onRenderChildren, onRenderChildren = _c === void 0 ? this._onRenderChildren : _c, \n // eslint-disable-next-line @typescript-eslint/no-deprecated\n _d = props.onRenderMenu, \n // eslint-disable-next-line @typescript-eslint/no-deprecated\n onRenderMenu = _d === void 0 ? this._onRenderMenu : _d, _e = props.onRenderMenuIcon, onRenderMenuIcon = _e === void 0 ? this._onRenderMenuIcon : _e, disabled = props.disabled;\n var keytipProps = props.keytipProps;\n if (keytipProps && menuProps) {\n keytipProps = this._getMemoizedMenuButtonKeytipProps(keytipProps);\n }\n var Button = function (keytipAttributes) { return (React.createElement(Tag, __assign({}, buttonProps, keytipAttributes),\n React.createElement(\"span\", { className: _this._classNames.flexContainer, \"data-automationid\": \"splitbuttonprimary\" },\n onRenderIcon(props, _this._onRenderIcon),\n _this._onRenderTextContents(),\n onRenderAriaDescription(props, _this._onRenderAriaDescription),\n onRenderChildren(props, _this._onRenderChildren),\n !_this._isSplitButton &&\n (menuProps || menuIconProps || _this.props.onRenderMenuIcon) &&\n onRenderMenuIcon(_this.props, _this._onRenderMenuIcon),\n menuProps &&\n !menuProps.doNotLayer &&\n _this._shouldRenderMenu() &&\n onRenderMenu(_this._getMenuProps(menuProps), _this._onRenderMenu)))); };\n var Content = keytipProps ? (\n // If we're making a split button, we won't put the keytip here\n React.createElement(KeytipData, { keytipProps: !this._isSplitButton ? keytipProps : undefined, ariaDescribedBy: buttonProps['aria-describedby'], disabled: disabled }, function (keytipAttributes) { return Button(keytipAttributes); })) : (Button());\n if (menuProps && menuProps.doNotLayer) {\n return (React.createElement(React.Fragment, null,\n Content,\n this._shouldRenderMenu() && onRenderMenu(this._getMenuProps(menuProps), this._onRenderMenu)));\n }\n return (React.createElement(React.Fragment, null,\n Content,\n React.createElement(FocusRects, null)));\n };\n /**\n * Method to help determine if the menu's component tree should\n * be rendered. It takes into account whether the menu is expanded,\n * whether it is a persisted menu and whether it has been shown to the user.\n */\n BaseButton.prototype._shouldRenderMenu = function () {\n var menuHidden = this.state.menuHidden;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n var _a = this.props, persistMenu = _a.persistMenu, renderPersistedMenuHiddenOnMount = _a.renderPersistedMenuHiddenOnMount;\n if (!menuHidden) {\n // Always should render a menu when it is expanded\n return true;\n }\n else if (persistMenu && (this._renderedVisibleMenu || renderPersistedMenuHiddenOnMount)) {\n // _renderedVisibleMenu ensures that the first rendering of\n // the menu happens on-screen, as edge's scrollbar calculations are off if done while hidden.\n return true;\n }\n return false;\n };\n BaseButton.prototype._hasText = function () {\n // _onRenderTextContents and _onRenderText do not perform the same checks. Below is parity with what _onRenderText\n // used to have before the refactor that introduced this function. _onRenderTextContents does not require props.\n // text to be undefined in order for props.children to be used as a fallback.\n // Purely a code maintainability/reuse issue, but logged as Issue #4979.\n return this.props.text !== null && (this.props.text !== undefined || typeof this.props.children === 'string');\n };\n BaseButton.prototype._getMenuProps = function (menuProps) {\n var persistMenu = this.props.persistMenu;\n var menuHidden = this.state.menuHidden;\n // the accessible menu label (accessible name) has a relationship to the button.\n // If the menu props do not specify an explicit value for aria-label or aria-labelledBy,\n // AND the button has text, we'll set the menu aria-labelledBy to the text element id.\n if (!menuProps.ariaLabel && !menuProps.labelElementId && this._hasText()) {\n menuProps = __assign(__assign({}, menuProps), { labelElementId: this._labelId });\n }\n return __assign(__assign({ id: this._labelId + '-menu', directionalHint: DirectionalHint.bottomLeftEdge }, menuProps), { shouldFocusOnContainer: this._menuShouldFocusOnContainer, shouldFocusOnMount: this._menuShouldFocusOnMount, hidden: persistMenu ? menuHidden : undefined, className: css('ms-BaseButton-menuhost', menuProps.className), target: this._isSplitButton ? this._splitButtonContainer.current : this._buttonElement.current, onDismiss: this._onDismissMenu });\n };\n BaseButton.prototype._onRenderSplitButtonContent = function (tag, buttonProps) {\n var _this = this;\n var _a = this.props, _b = _a.styles, styles = _b === void 0 ? {} : _b, disabled = _a.disabled, allowDisabledFocus = _a.allowDisabledFocus, checked = _a.checked, getSplitButtonClassNames = _a.getSplitButtonClassNames, primaryDisabled = _a.primaryDisabled, menuProps = _a.menuProps, toggle = _a.toggle, role = _a.role, primaryActionButtonProps = _a.primaryActionButtonProps;\n var keytipProps = this.props.keytipProps;\n var menuHidden = this.state.menuHidden;\n var classNames = getSplitButtonClassNames\n ? getSplitButtonClassNames(!!disabled, !menuHidden, !!checked, !!allowDisabledFocus)\n : styles && getBaseSplitButtonClassNames(styles, !!disabled, !menuHidden, !!checked, !!primaryDisabled);\n assign(buttonProps, {\n onClick: undefined,\n onPointerDown: undefined,\n onPointerUp: undefined,\n tabIndex: -1,\n 'data-is-focusable': false,\n });\n if (keytipProps && menuProps) {\n keytipProps = this._getMemoizedMenuButtonKeytipProps(keytipProps);\n }\n var containerProps = getNativeProps(buttonProps, [], ['disabled']);\n // Add additional props to apply on primary action button\n if (primaryActionButtonProps) {\n assign(buttonProps, primaryActionButtonProps);\n }\n var SplitButton = function (keytipAttributes) { return (React.createElement(\"div\", __assign({}, containerProps, { \"data-ktp-target\": keytipAttributes ? keytipAttributes['data-ktp-target'] : undefined, role: role ? role : 'button', \"aria-disabled\": disabled, \"aria-haspopup\": true, \"aria-expanded\": !menuHidden, \"aria-pressed\": toggle ? !!checked : undefined, \"aria-describedby\": mergeAriaAttributeValues(buttonProps['aria-describedby'], keytipAttributes ? keytipAttributes['aria-describedby'] : undefined), className: classNames && classNames.splitButtonContainer, onKeyDown: _this._onSplitButtonContainerKeyDown, onTouchStart: _this._onTouchStart, ref: _this._splitButtonContainer, \"data-is-focusable\": true, onClick: !disabled && !primaryDisabled ? _this._onSplitButtonPrimaryClick : undefined, tabIndex: (!disabled && !primaryDisabled) || allowDisabledFocus ? 0 : undefined, \"aria-roledescription\": buttonProps['aria-roledescription'], onFocusCapture: _this._onSplitContainerFocusCapture }),\n React.createElement(\"span\", { style: { display: 'flex', width: '100%' } },\n _this._onRenderContent(tag, buttonProps),\n _this._onRenderSplitButtonMenuButton(classNames, keytipAttributes),\n _this._onRenderSplitButtonDivider(classNames)))); };\n return keytipProps ? (React.createElement(KeytipData, { keytipProps: keytipProps, disabled: disabled }, function (keytipAttributes) { return SplitButton(keytipAttributes); })) : (SplitButton());\n };\n BaseButton.prototype._onRenderSplitButtonDivider = function (classNames) {\n if (classNames && classNames.divider) {\n var onClick = function (ev) {\n ev.stopPropagation();\n };\n return React.createElement(\"span\", { className: classNames.divider, \"aria-hidden\": true, onClick: onClick });\n }\n return null;\n };\n BaseButton.prototype._onRenderSplitButtonMenuButton = function (classNames, keytipAttributes) {\n var _a = this.props, allowDisabledFocus = _a.allowDisabledFocus, checked = _a.checked, disabled = _a.disabled, splitButtonMenuProps = _a.splitButtonMenuProps, splitButtonAriaLabel = _a.splitButtonAriaLabel, primaryDisabled = _a.primaryDisabled;\n var menuHidden = this.state.menuHidden;\n var menuIconProps = this.props.menuIconProps;\n if (menuIconProps === undefined) {\n menuIconProps = {\n iconName: 'ChevronDown',\n };\n }\n var splitButtonProps = __assign(__assign({}, splitButtonMenuProps), { styles: classNames, checked: checked, disabled: disabled, allowDisabledFocus: allowDisabledFocus, onClick: this._onMenuClick, menuProps: undefined, iconProps: __assign(__assign({}, menuIconProps), { className: this._classNames.menuIcon }), ariaLabel: splitButtonAriaLabel, 'aria-haspopup': true, 'aria-expanded': !menuHidden, 'data-is-focusable': false });\n // Add data-ktp-execute-target to the split button if the keytip is defined\n return (React.createElement(BaseButton, __assign({}, splitButtonProps, { \"data-ktp-execute-target\": keytipAttributes ? keytipAttributes['data-ktp-execute-target'] : keytipAttributes, onMouseDown: this._onMouseDown, tabIndex: primaryDisabled && !allowDisabledFocus ? 0 : -1 })));\n };\n BaseButton.prototype._onPointerDown = function (ev) {\n var onPointerDown = this.props.onPointerDown;\n if (onPointerDown) {\n onPointerDown(ev);\n }\n if (ev.pointerType === 'touch') {\n this._handleTouchAndPointerEvent();\n ev.preventDefault();\n ev.stopImmediatePropagation();\n }\n };\n BaseButton.prototype._handleTouchAndPointerEvent = function () {\n var _this = this;\n // If we already have an existing timeout from a previous touch and pointer event\n // cancel that timeout so we can set a new one.\n if (this._lastTouchTimeoutId !== undefined) {\n this._async.clearTimeout(this._lastTouchTimeoutId);\n this._lastTouchTimeoutId = undefined;\n }\n this._processingTouch = true;\n this._lastTouchTimeoutId = this._async.setTimeout(function () {\n _this._processingTouch = false;\n _this._lastTouchTimeoutId = undefined;\n // Touch and pointer events don't focus the button naturally,\n // so adding an imperative focus call to guarantee this behavior.\n // Only focus the button if a splitbutton menu is not open\n if (_this.state.menuHidden) {\n _this.focus();\n }\n }, TouchIdleDelay);\n };\n /**\n * Returns if the user hits a valid keyboard key to open the menu\n * @param ev - the keyboard event\n * @returns True if user clicks on custom trigger key if enabled or alt + down arrow if not. False otherwise.\n */\n BaseButton.prototype._isValidMenuOpenKey = function (ev) {\n if (this.props.menuTriggerKeyCode) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return ev.which === this.props.menuTriggerKeyCode;\n }\n else if (this.props.menuProps) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return ev.which === KeyCodes.down && (ev.altKey || ev.metaKey);\n }\n // Note: When enter is pressed, we will let the event continue to propagate\n // to trigger the onClick event on the button\n return false;\n };\n BaseButton.defaultProps = {\n baseClassName: 'ms-Button',\n styles: {},\n split: false,\n };\n // needed to access registeredProviders when manually setting focus visibility\n BaseButton.contextType = FocusRectsContext;\n return BaseButton;\n}(React.Component));\nexport { BaseButton };\n//# sourceMappingURL=BaseButton.js.map","import { memoizeFunction } from '../../Utilities';\nimport { HighContrastSelector, getFocusStyle, hiddenContentStyle } from '../../Styling';\nvar noOutline = {\n outline: 0,\n};\nvar iconStyle = function (fontSize) {\n return {\n fontSize: fontSize,\n margin: '0 4px',\n height: '16px',\n lineHeight: '16px',\n textAlign: 'center',\n flexShrink: 0,\n };\n};\n/**\n * Gets the base button styles. Note: because it is a base class to be used with the `mergeRules`\n * helper, it should have values for all class names in the interface. This let `mergeRules` optimize\n * mixing class names together.\n */\nexport var getStyles = memoizeFunction(function (theme) {\n var _a, _b;\n var semanticColors = theme.semanticColors, effects = theme.effects, fonts = theme.fonts;\n var border = semanticColors.buttonBorder;\n var disabledBackground = semanticColors.disabledBackground;\n var disabledText = semanticColors.disabledText;\n var buttonHighContrastFocus = {\n left: -2,\n top: -2,\n bottom: -2,\n right: -2,\n outlineColor: 'ButtonText',\n };\n return {\n root: [\n getFocusStyle(theme, { inset: 1, highContrastStyle: buttonHighContrastFocus, borderColor: 'transparent' }),\n theme.fonts.medium,\n {\n border: '1px solid ' + border,\n borderRadius: effects.roundedCorner2,\n boxSizing: 'border-box',\n cursor: 'pointer',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '0 16px',\n textDecoration: 'none',\n textAlign: 'center',\n userSelect: 'none',\n // IE11 workaround for preventing shift of child elements of a button when active.\n ':active > span': {\n position: 'relative',\n left: 0,\n top: 0,\n },\n },\n ],\n rootDisabled: [\n getFocusStyle(theme, { inset: 1, highContrastStyle: buttonHighContrastFocus, borderColor: 'transparent' }),\n {\n backgroundColor: disabledBackground,\n borderColor: disabledBackground,\n color: disabledText,\n cursor: 'default',\n ':hover': noOutline,\n ':focus': noOutline,\n },\n ],\n iconDisabled: (_a = {\n color: disabledText\n },\n _a[HighContrastSelector] = {\n color: 'GrayText',\n },\n _a),\n menuIconDisabled: (_b = {\n color: disabledText\n },\n _b[HighContrastSelector] = {\n color: 'GrayText',\n },\n _b),\n flexContainer: {\n display: 'flex',\n height: '100%',\n flexWrap: 'nowrap',\n justifyContent: 'center',\n alignItems: 'center',\n },\n description: {\n display: 'block',\n },\n textContainer: {\n flexGrow: 1,\n display: 'block',\n },\n icon: iconStyle(fonts.mediumPlus.fontSize),\n menuIcon: iconStyle(fonts.small.fontSize),\n label: {\n margin: '0 4px',\n lineHeight: '100%',\n display: 'block',\n },\n screenReaderText: hiddenContentStyle,\n };\n});\n//# sourceMappingURL=BaseButton.styles.js.map","import { __assign } from \"tslib\";\nimport { HighContrastSelector, concatStyleSets, getFocusStyle, getHighContrastNoAdjustStyle } from '../../../Styling';\nimport { memoizeFunction } from '../../../Utilities';\nexport var getStyles = memoizeFunction(function (theme, customStyles) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;\n var effects = theme.effects, palette = theme.palette, semanticColors = theme.semanticColors;\n var buttonHighContrastFocus = {\n left: -2,\n top: -2,\n bottom: -2,\n right: -2,\n border: 'none',\n };\n var splitButtonDividerBaseStyles = {\n position: 'absolute',\n width: 1,\n right: 31,\n top: 8,\n bottom: 8,\n };\n var splitButtonStyles = {\n splitButtonContainer: [\n getFocusStyle(theme, { highContrastStyle: buttonHighContrastFocus, inset: 2, pointerEvents: 'none' }),\n {\n display: 'inline-flex',\n '.ms-Button--default': {\n borderTopRightRadius: '0',\n borderBottomRightRadius: '0',\n borderRight: 'none',\n flexGrow: '1',\n },\n '.ms-Button--primary': (_a = {\n borderTopRightRadius: '0',\n borderBottomRightRadius: '0',\n border: 'none',\n flexGrow: '1',\n ':hover': {\n border: 'none',\n },\n ':active': {\n border: 'none',\n }\n },\n _a[HighContrastSelector] = __assign(__assign({ color: 'WindowText', backgroundColor: 'Window', border: '1px solid WindowText', borderRightWidth: '0' }, getHighContrastNoAdjustStyle()), { ':hover': {\n backgroundColor: 'Highlight',\n border: '1px solid Highlight',\n borderRightWidth: '0',\n color: 'HighlightText',\n }, ':active': {\n border: '1px solid Highlight',\n } }),\n _a),\n '.ms-Button--default + .ms-Button': (_b = {},\n _b[HighContrastSelector] = {\n border: '1px solid WindowText',\n borderLeftWidth: '0',\n ':hover': {\n backgroundColor: 'HighlightText',\n borderColor: 'Highlight',\n color: 'Highlight',\n '.ms-Button-menuIcon': __assign({ backgroundColor: 'HighlightText', color: 'Highlight' }, getHighContrastNoAdjustStyle()),\n },\n },\n _b),\n '.ms-Button--default + .ms-Button[aria-expanded=\"true\"]': (_c = {},\n _c[HighContrastSelector] = {\n backgroundColor: 'HighlightText',\n borderColor: 'Highlight',\n color: 'Highlight',\n '.ms-Button-menuIcon': __assign({ backgroundColor: 'HighlightText', color: 'Highlight' }, getHighContrastNoAdjustStyle()),\n },\n _c),\n '.ms-Button--primary + .ms-Button': (_d = {\n border: 'none'\n },\n _d[HighContrastSelector] = {\n border: '1px solid WindowText',\n borderLeftWidth: '0',\n ':hover': {\n borderLeftWidth: '0',\n backgroundColor: 'Highlight',\n borderColor: 'Highlight',\n color: 'HighlightText',\n '.ms-Button-menuIcon': __assign(__assign({}, getHighContrastNoAdjustStyle()), { color: 'HighlightText' }),\n },\n },\n _d),\n '.ms-Button--primary + .ms-Button[aria-expanded=\"true\"]': (_e = {},\n _e[HighContrastSelector] = __assign(__assign({ backgroundColor: 'Highlight', borderColor: 'Highlight', color: 'HighlightText' }, getHighContrastNoAdjustStyle()), { '.ms-Button-menuIcon': {\n color: 'HighlightText',\n } }),\n _e),\n '.ms-Button.is-disabled': (_f = {},\n _f[HighContrastSelector] = {\n color: 'GrayText',\n borderColor: 'GrayText',\n backgroundColor: 'Window',\n },\n _f),\n },\n ],\n splitButtonContainerHovered: {\n '.ms-Button--default.is-disabled': (_g = {\n backgroundColor: semanticColors.buttonBackgroundDisabled,\n color: semanticColors.buttonTextDisabled\n },\n _g[HighContrastSelector] = {\n color: 'GrayText',\n borderColor: 'GrayText',\n backgroundColor: 'Window',\n },\n _g),\n '.ms-Button--primary.is-disabled': (_h = {\n backgroundColor: semanticColors.primaryButtonBackgroundDisabled,\n color: semanticColors.primaryButtonTextDisabled\n },\n _h[HighContrastSelector] = {\n color: 'GrayText',\n borderColor: 'GrayText',\n backgroundColor: 'Window',\n },\n _h),\n },\n splitButtonContainerChecked: {\n '.ms-Button--primary': (_j = {},\n _j[HighContrastSelector] = __assign({ color: 'Window', backgroundColor: 'WindowText' }, getHighContrastNoAdjustStyle()),\n _j),\n },\n splitButtonContainerCheckedHovered: {\n '.ms-Button--primary': (_k = {},\n _k[HighContrastSelector] = __assign({ color: 'Window', backgroundColor: 'WindowText' }, getHighContrastNoAdjustStyle()),\n _k),\n },\n splitButtonContainerFocused: {\n outline: 'none!important',\n },\n splitButtonMenuButton: (_l = {\n padding: 6,\n height: 'auto',\n boxSizing: 'border-box',\n borderRadius: 0,\n borderTopRightRadius: effects.roundedCorner2,\n borderBottomRightRadius: effects.roundedCorner2,\n border: \"1px solid \".concat(palette.neutralSecondaryAlt),\n borderLeft: 'none',\n outline: 'transparent',\n userSelect: 'none',\n display: 'inline-block',\n textDecoration: 'none',\n textAlign: 'center',\n cursor: 'pointer',\n verticalAlign: 'top',\n width: 32,\n marginLeft: -1,\n marginTop: 0,\n marginRight: 0,\n marginBottom: 0\n },\n _l[HighContrastSelector] = {\n '.ms-Button-menuIcon': {\n color: 'WindowText',\n },\n },\n _l),\n splitButtonDivider: __assign(__assign({}, splitButtonDividerBaseStyles), (_m = {}, _m[HighContrastSelector] = {\n backgroundColor: 'WindowText',\n }, _m)),\n splitButtonDividerDisabled: __assign(__assign({}, splitButtonDividerBaseStyles), (_o = {}, _o[HighContrastSelector] = {\n backgroundColor: 'GrayText',\n }, _o)),\n splitButtonMenuButtonDisabled: (_p = {\n pointerEvents: 'none',\n border: 'none',\n ':hover': {\n cursor: 'default',\n },\n '.ms-Button--primary': (_q = {},\n _q[HighContrastSelector] = {\n color: 'GrayText',\n borderColor: 'GrayText',\n backgroundColor: 'Window',\n },\n _q),\n '.ms-Button-menuIcon': (_r = {},\n _r[HighContrastSelector] = {\n color: 'GrayText',\n },\n _r)\n },\n _p[HighContrastSelector] = {\n color: 'GrayText',\n border: '1px solid GrayText',\n backgroundColor: 'Window',\n },\n _p),\n splitButtonFlexContainer: {\n display: 'flex',\n height: '100%',\n flexWrap: 'nowrap',\n justifyContent: 'center',\n alignItems: 'center',\n },\n splitButtonContainerDisabled: (_s = {\n outline: 'none',\n border: 'none'\n },\n _s[HighContrastSelector] = __assign({ color: 'GrayText', borderColor: 'GrayText', backgroundColor: 'Window' }, getHighContrastNoAdjustStyle()),\n _s),\n splitButtonMenuFocused: __assign({}, getFocusStyle(theme, { highContrastStyle: buttonHighContrastFocus, inset: 2 })),\n };\n return concatStyleSets(splitButtonStyles, customStyles);\n});\n//# sourceMappingURL=SplitButton.styles.js.map","import { concatStyleSets, HighContrastSelector } from '../../../Styling';\nimport { memoizeFunction } from '../../../Utilities';\nimport { getStyles as getBaseButtonStyles } from '../BaseButton.styles';\nimport { getStyles as getSplitButtonStyles } from '../SplitButton/SplitButton.styles';\nexport var getStyles = memoizeFunction(function (theme, customStyles) {\n var _a;\n var baseButtonStyles = getBaseButtonStyles(theme);\n var splitButtonStyles = getSplitButtonStyles(theme);\n var palette = theme.palette, semanticColors = theme.semanticColors;\n var iconButtonStyles = {\n root: {\n padding: '0 4px',\n width: '32px',\n height: '32px',\n backgroundColor: 'transparent',\n border: 'none',\n color: semanticColors.link,\n },\n rootHovered: (_a = {\n color: palette.themeDarkAlt,\n backgroundColor: palette.neutralLighter\n },\n _a[HighContrastSelector] = {\n borderColor: 'Highlight',\n color: 'Highlight',\n },\n _a),\n rootHasMenu: {\n width: 'auto',\n },\n rootPressed: {\n color: palette.themeDark,\n backgroundColor: palette.neutralLight,\n },\n rootExpanded: {\n color: palette.themeDark,\n backgroundColor: palette.neutralLight,\n },\n rootChecked: {\n color: palette.themeDark,\n backgroundColor: palette.neutralLight,\n },\n rootCheckedHovered: {\n color: palette.themeDark,\n backgroundColor: palette.neutralQuaternaryAlt,\n },\n rootDisabled: {\n color: palette.neutralTertiaryAlt,\n },\n };\n return concatStyleSets(baseButtonStyles, iconButtonStyles, splitButtonStyles, customStyles);\n});\n//# sourceMappingURL=IconButton.styles.js.map","import { __assign, __decorate, __extends } from \"tslib\";\nimport * as React from 'react';\nimport { BaseButton } from '../BaseButton';\nimport { customizable, nullRender } from '../../../Utilities';\nimport { getStyles } from './IconButton.styles';\n/**\n * {@docCategory Button}\n */\nvar IconButton = /** @class */ (function (_super) {\n __extends(IconButton, _super);\n function IconButton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n IconButton.prototype.render = function () {\n var _a = this.props, styles = _a.styles, theme = _a.theme;\n return (React.createElement(BaseButton, __assign({}, this.props, { variantClassName: \"ms-Button--icon\", styles: getStyles(theme, styles), onRenderText: nullRender, onRenderDescription: nullRender })));\n };\n IconButton = __decorate([\n customizable('IconButton', ['theme', 'styles'], true)\n ], IconButton);\n return IconButton;\n}(React.Component));\nexport { IconButton };\n//# sourceMappingURL=IconButton.js.map","\r\nimport { IDirEntry, IEmbeddedSites, IEmbeddedThemes, INotifications, IPortalfile, IMetaData, IMetaDataFilemanager, IDataSet, IDataSetExtended, IDataSetColumn, EmailMethod, IAdminUsageSettings, IPortalConfig, IADDGroup, Itag, IFlows, IDataSetSearchResponse, apiendpointtype, ILinkingBitEntry, SharePointListsResourceMap, IPhraseLibrary, IPhraseLibrarySearchResponse, ISQlDatabases, ISQLTables, IValidation, ITestValidation, IApiHook, IEmailFileSettings, ISalesForce, IHiddenQuestionOverwrite, IAutoUpdateSettings } from '../../components/ddentities';\r\nimport { IDirectory, IUserDocuments, IUserDocumentVersion, IUserProps, ICacheUser, IQuestionnaireDocumentWithSharedUsers, ISites, IFolders, IAutoCreateUser, IUserFolder, IUserFolderBase, IUserDocumentsSearch, ITenantInfo, IScimKey } from '../../components/entitiesAPI';\r\nimport { getAuthObject } from '../authenticateFunctions';\r\nimport { getQuestionnaireUrl } from '../questionnairefunctions';\r\nvar _baseUrl = \"\";\r\n/*const BaseUrl = getBaseUrl();*/\r\n\r\nexport const GetDirectoryStructure = (userObj: IUserProps) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Directory/GetFolderStructure`;\r\n //let testEndpoint = \"https://localhost:44337/api/Directory/GetFolderStructure\";\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n })\r\n});\r\n\r\nexport const UpdateFíleEmailSettings = (userObj: IUserProps, dirEntryId: string, settings: IEmailFileSettings) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n\r\n let Endpoint = BaseUrl + `api/Directory/UpdateEmailSettings?templateid=${(dirEntryId)}`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(settings)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\n\r\nexport const AddGroupAccess = (userObj: IUserProps, dirEntryId: string, groups: string[]) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n\r\n let Endpoint = BaseUrl + `api/Directory/AccessGroupsAdd?id=${(dirEntryId)}`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(groups)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\nexport const AddUserAccess = (userObj: IUserProps, dirEntryId: string, users: string[]) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Directory/AccessUsersAdd?id=${(dirEntryId)}`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(users)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\nexport const AddDataSet = (userObj: IUserProps, name: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSets/Add?Name=${(name)}`;\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n});\r\n\r\n\r\nexport const AddSQLTableDataSet = (userObj: IUserProps, name: string, connectionString: string, dataBase:string, table:string,schema:string ) => new Promise((resolve) => {\r\n\r\n\r\n var dr = { Name: name, ConnectionString: connectionString, Database: dataBase, Table: table, Schema:schema };\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSetSqlTable/Add`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(dr)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n});\r\n\r\nexport const AddSalesForce = (userObj: IUserProps, name: string) => new Promise((resolve) => {\r\n\r\n\r\n var dr = { Name: name};\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/SalesForce/Add`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(dr)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n});\r\n\r\nexport const ChangeDataSetEnabled = (userObj: IUserProps, id: string, enabled: boolean): Promise => {\r\n return new Promise((resolve, reject) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSets/ChangeDataSetEnabled?id=${(id)}&enabled=${(enabled)}`;\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => {\r\n if (!response.ok) {\r\n return response.json().then(error => Promise.reject(error));\r\n }\r\n return response.json();\r\n })\r\n .then(result => {\r\n resolve(result);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n })\r\n .catch(error => {\r\n reject(error); // Make sure you handle the error from getBaseUrl() as well.\r\n });\r\n });\r\n};\r\n\r\nexport const ChangeDataSetSqlTableEnabled = (userObj: IUserProps, id: string, enabled: boolean): Promise => {\r\n return new Promise((resolve, reject) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSetSqlTable/ChangeDataSetEnabled?id=${(id)}&enabled=${(enabled)}`;\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => {\r\n if (!response.ok) {\r\n return response.json().then(error => Promise.reject(error));\r\n }\r\n return response.json();\r\n })\r\n .then(result => {\r\n resolve(result);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n })\r\n .catch(error => {\r\n reject(error); // Make sure you handle the error from getBaseUrl() as well.\r\n });\r\n });\r\n};\r\n\r\nexport const ChangeEndPointTypeDataSet = (userObj: IUserProps, id: string, endPointType: apiendpointtype): Promise => {\r\n return new Promise((resolve, reject) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSets/ChangeEndPointTypeDataSet?id=${(id)}&endPointType=${(endPointType)}`;\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => {\r\n if (!response.ok) {\r\n return response.json().then(error => Promise.reject(error));\r\n }\r\n return response.json();\r\n })\r\n .then(result => {\r\n resolve(result);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n })\r\n .catch(error => {\r\n reject(error); // Make sure you handle the error from getBaseUrl() as well.\r\n });\r\n });\r\n};\r\n\r\nexport const UpdateDataSet = (userObj: IUserProps, dataset: IDataSet) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSets/UpdateDataSet`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(dataset)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const UpdateDataSetSQlTable = (userObj: IUserProps, dataset: IDataSet) => new Promise ((resolve) => {\r\n\r\n var br = { id: dataset.id, name: dataset.name, connectionString: dataset.connectionString };\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSetSqlTable/UpdateDataSet`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(br)\r\n })\r\n .then(response => response)\r\n .then(result => {\r\n\r\n resolve(dataset);\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const UpdateSalesForce = (userObj: IUserProps, salesForce: ISalesForce) => new Promise((resolve) => {\r\n\r\n \r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/SalesForce/Update`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(salesForce)\r\n })\r\n .then(response => response)\r\n .then(result => {\r\n\r\n resolve(salesForce);\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n});\r\n\r\n\r\nexport const UpdateSalesForceName = (userObj: IUserProps, salesForce: ISalesForce) => new Promise((resolve) => {\r\n\r\n var br = { id: salesForce.id, name: salesForce.name };\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/SalesForce/UpdateName`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(br)\r\n })\r\n .then(response => response)\r\n .then(result => {\r\n\r\n resolve(salesForce);\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n});\r\n\r\n\r\nexport const UpdateDataSetRow = (userObj: IUserProps, id: string, data: any, isNew: boolean) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSets/UpdateDataSetRow?id=${(id)}&isNew=${(isNew)}`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n \r\n body: JSON.stringify(data)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\n\r\nexport const SearchDataSetServer = (userObj: IUserProps, id: string, query: string) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSets/GetRowsFromDataSet?id=${(id)}&` + query;\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n});\r\n\r\n\r\n\r\n\r\n\r\nexport const GetColumnsForSharePointLists = (userObj: IUserProps, tenantId: string, siteId: string, listId : string) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSets/GetColumnsForSharePointLists?tenantId=${(tenantId)}&siteId=${siteId}&listId=${listId}`;\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n});\r\n\r\n\r\nexport const SearchAllSharePointLists = (userObj: IUserProps, tenantId: string, query: string) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSets/SearchAllSharePointLists?tenantId=${(tenantId)}&search=` + encodeURIComponent(query);\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n});\r\n\r\n\r\nexport const ReOrderDataSetServer = (userObj: IUserProps, id: string, _fromIndex: number, _toIndex: number) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSets/ReOrderDataSet?id=${(id)}&fromIndex=${(_fromIndex)}&toIndex=${(_toIndex)}`;\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\nexport const DeleteDataSetRow = (userObj: IUserProps, id: string, rowId: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSets/DeleteDataSetRow?id=${(id)}&rowId=${(rowId)}`;\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\n\r\n\r\nexport const ExportDataSet = (userObj: IUserProps, id: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/datasets/ExportDataset?id=${(id)}`;\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\nexport const ExportPhraseLib = (userObj: IUserProps, id: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/phraselib/export?id=${(id)}`;\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\n\r\nexport const AddDataSetRow = (userObj: IUserProps, id: string, data: any) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSets/AddDataSetRow?id=${(id)}&isNew=true`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(data)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\nexport const ImportPreviewDataSet = (userObj: IUserProps, id: string, FileName: string, replace: boolean) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSets/UploadPreviewDataSet?id=${(id)}&replace=${(replace)}&fileName=${(FileName)}`;\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\n\r\nexport const LoadPreviewDataSet = (userObj: IUserProps, id: string, Blobfile: FormData) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSets/LoadPreviewDataSet?id=${(id)}`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: Blobfile\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\nexport const DeleteDataSet = (userObj: IUserProps, id: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSets/Delete?dataSetId=${(id)}`;\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\n\r\nexport const DeleteDataSetSQLTable = (userObj: IUserProps, id: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSetSQLTable/Delete?dataSetId=${(id)}`;\r\n fetch(Endpoint, {\r\n method: \"DELETE\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\n\r\nexport const DeleteSalesForceDocument = (userObj: IUserProps, id: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Salesforce/Delete?id=${(id)}`;\r\n fetch(Endpoint, {\r\n method: \"DELETE\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\nexport const AddColumnToDataSet = (userObj: IUserProps, dataSetId: string, col: IDataSetColumn) => new Promise((resolve) => {\r\n \r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSets/AddColumn?dataSetId=${(dataSetId)}`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(col)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\nexport const EditColumnDataSet = (userObj: IUserProps, dataSetId: string, col: IDataSetColumn) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSets/EditColumn?dataSetId=${(dataSetId)}`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(col)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\nexport const EditColumnDataSetSqlTable = (userObj: IUserProps, dataSetId: string, col: IDataSetColumn) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSetSqlTable/EditColumn?dataSetId=${(dataSetId)}`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(col)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\n\r\nexport const DeleteColumnDataSet = (userObj: IUserProps, dataSetId: string, col: IDataSetColumn) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSets/DeleteColumn?dataSetId=${(dataSetId)}`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(col)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\nexport const OpenDataSet = (userObj: IUserProps, id: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSets/open?dataSetId=${(id)}`;\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\nexport const setSharePointTenant = (userObj: IUserProps,tenantId : string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSets/SetSharePointTenant?TenantId=${tenantId}`;\r\n fetch(Endpoint, {\r\n method: \"PUT\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n\r\n})\r\nexport const GetAllSharePointSites = (userObj: IUserProps, tenantId: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSets/GetAllSharePointSites?TenantId=${tenantId}`;\r\n fetch(Endpoint, {\r\n method: \"PUT\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n\r\n})\r\n\r\n\r\n\r\nexport const getSharePointTenant = (userObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSets/GetSharePointTenant`;\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n\r\n})\r\n\r\n\r\nexport const ImportPreviewPhraseLib = (userObj: IUserProps, id: string, FileName: string, replace: boolean) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/phraselib/UploadPreview?id=${(id)}&replace=${(replace)}&fileName=${(FileName)}`;\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\nexport const UpdateDataSetAccess=(userObj: IUserProps, id: string, _usersToAdd: string[], _usersToRemove: string[], _groupsToAdd: string[], _groupsToRemove: string[]) => new Promise((resolve) => {\r\n\r\n var obj = { usersToAdd: _usersToAdd, usersToRemove: _usersToRemove, groupsToAdd: _groupsToAdd, groupsToRemove: _groupsToRemove };\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSets/UpdateDataSetAccess?id=${(id)}`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(obj)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\nexport const UpdateAccessSalesForce = (userObj: IUserProps, id: string, _usersToAdd: string[], _usersToRemove: string[], _groupsToAdd: string[], _groupsToRemove: string[]) => new Promise((resolve) => {\r\n\r\n var obj = { usersToAdd: _usersToAdd, usersToRemove: _usersToRemove, groupsToAdd: _groupsToAdd, groupsToRemove: _groupsToRemove };\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/SalesForce/UpdateAccess?id=${(id)}`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(obj)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\n\r\nexport const UpdateApiHookAccess = (userObj: IUserProps, id: string, _usersToAdd: string[], _usersToRemove: string[], _groupsToAdd: string[], _groupsToRemove: string[]) => new Promise((resolve) => {\r\n\r\n var obj = { usersToAdd: _usersToAdd, usersToRemove: _usersToRemove, groupsToAdd: _groupsToAdd, groupsToRemove: _groupsToRemove };\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/UpdateApiHookAccess?id=${(id)}`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(obj)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\n\r\nexport const GetAllDataSet = (userObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSets/ListDataSets`;\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\n\r\n\r\nexport const createSasToken = async (userObj: IUserProps, dataSetId: string, validityMonths: number) => new Promise((resolve) =>\r\n{\r\n try {\r\n\r\n getBaseUrl().then(async BaseUrl =>\r\n {\r\n\r\n const response = await fetch(BaseUrl + `api/datasets/GetTokenForUploadTables/${dataSetId}/?months=${validityMonths}`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n }\r\n\r\n });\r\n\r\n if (!response.ok) {\r\n throw new Error('Failed to create SAS token');\r\n }\r\n else {\r\n resolve(await response.json());\r\n }\r\n\r\n \r\n })\r\n }\r\n catch (error) {\r\n console.error('Error creating SAS token:', error);\r\n throw error;\r\n\r\n }\r\n\r\n});\r\n\r\n\r\nexport const UpdateAutoUpdateSettingsTable = async (userObj: IUserProps, dataSetId: string,\r\n autoUpdate: IAutoUpdateSettings,\r\n) => new Promise((resolve) => {\r\n try {\r\n\r\n var putObj = { sendOnSuccess: autoUpdate.sendOnSuccess, emailsNotifications: autoUpdate.emailsNotifications };\r\n\r\n\r\n\r\n getBaseUrl().then(async BaseUrl => {\r\n\r\n const response = await fetch(BaseUrl + `api/datasets/SaveAutoUpdate/${dataSetId}/`, {\r\n method: 'PUT',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n },\r\n body : JSON.stringify(putObj)\r\n\r\n });\r\n\r\n if (!response.ok) {\r\n throw new Error('Failed to saved settings');\r\n }\r\n else {\r\n resolve(await response.json());\r\n }\r\n\r\n\r\n })\r\n }\r\n catch (error) {\r\n console.error('Error saving settings:', error);\r\n throw error;\r\n\r\n }\r\n\r\n});\r\n\r\n\r\nexport const ShowSasToken = async (userObj: IUserProps, dataSetId: string) => new Promise((resolve) => {\r\n try {\r\n\r\n getBaseUrl().then(async BaseUrl => {\r\n\r\n const response = await fetch(BaseUrl + `api/datasets/DisplayToken/${dataSetId}/`, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n }\r\n\r\n });\r\n\r\n if (!response.ok) {\r\n throw new Error('Failed to get SAS token');\r\n }\r\n else {\r\n resolve(await response.json());\r\n }\r\n\r\n\r\n })\r\n }\r\n catch (error) {\r\n console.error('Error get SAS token:', error);\r\n throw error;\r\n\r\n }\r\n\r\n});\r\n\r\nexport const GetDataBases = (userObj: IUserProps, connection: string) => new Promise((resolve) => {\r\n var dr = { ConnectionString: connection };\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSetSQLTable/GetSQLDataBases`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(dr)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n\r\n});\r\n\r\nexport const GetSQlTables = (userObj: IUserProps, connection: string, database: string) => new Promise((resolve) => {\r\n var dr = { ConnectionString: connection, database:database };\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSetSQLTable/GetSQlTables`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(dr)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n\r\n});\r\n\r\nexport const RefreshTable = (userObj: IUserProps, tableId: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSetSQLTable/RefreshTable?tableId=${tableId}`;\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n\r\n});\r\n\r\nexport const GetAllSqlTableDataSets = (userObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/DataSetSQLTable/List`;\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\n\r\nexport const GetSalesForceDocument = (userObj: IUserProps, id:string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/SalesForce/Get?id=${(id)}`;\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\n\r\nexport const GetAllSalesForceDocuments = (userObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/SalesForce/List`;\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\nexport const GetSalesforceToken = (userObj: IUserProps, expireDate: Date) => new Promise((resolve) => {\r\n\r\n var _body = { ExpireDate: expireDate };\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/SalesForce/GetToken`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n 'Content-Type': 'application/json',\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(_body)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n});\r\n\r\n\r\n\r\n//PhraseLibs\r\nexport const LoadPreviewPhraseLib = (userObj: IUserProps, id: string, Blobfile: FormData) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/phraselib/LoadPreview?id=${(id)}`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: Blobfile\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\n\r\nexport const DeletePhraseLibRow = (userObj: IUserProps, id: string, rowId: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/phraselib/DeletePhraseLibRow?rowId=${(rowId)}`;\r\n fetch(Endpoint, {\r\n method: \"DELETE\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\n\r\nexport const ChangePhraseLibraryEnabled = (userObj: IUserProps, id: string, enabled: boolean): Promise => {\r\n return new Promise((resolve, reject) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/phraselib/ChangeEnabled?id=${(id)}&enabled=${(enabled)}`;\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => {\r\n if (!response.ok) {\r\n return response.json().then(error => Promise.reject(error));\r\n }\r\n return response.json();\r\n })\r\n .then(result => {\r\n resolve(result);\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n })\r\n .catch(error => {\r\n reject(error); // Make sure you handle the error from getBaseUrl() as well.\r\n });\r\n });\r\n};\r\n\r\nexport const AddPhraseLibRow = (userObj: IUserProps,id:string) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/phraselib/AddPhraseLibRow?phraseLibId=${(id)}`;\r\n fetch(Endpoint, {\r\n method: \"PUT\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n\r\n \r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\nexport const UpdatePhraseLibRow = (userObj: IUserProps, id: string, data: any) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/phraselib/UpdatePhraseLibRow?phraseLibId=${(id)}`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n\r\n body: JSON.stringify(data)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\nexport const UpdatePhraseLibRowNote = (userObj: IUserProps, id: string, data: any) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/phraselib/UpdatePhraseLibRowNote?phraseLibId=${(id)}`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n\r\n body: JSON.stringify(data)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\nexport const UpdatePhraseLib = (userObj: IUserProps, phraselib: IPhraseLibrary) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/phraselib/Update`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(phraselib)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n});\r\nexport const AddPhraseLib = (userObj: IUserProps, name: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/phraselib/Add?Name=${encodeURIComponent(name)}`;\r\n fetch(Endpoint, {\r\n method: \"PUT\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n});\r\n\r\nexport const SearchPhraseLibraries = (userObj: IUserProps, id: string, query: string) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/phraselib/GetRowsFromPhraseLibraries?id=${(id)}&` + query;\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const DeletePhraseLibrary = (userObj: IUserProps, id: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/phraselib/Delete?PhraseLibId=${(id)}`;\r\n fetch(Endpoint, {\r\n method: \"DELETE\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\n\r\nexport const CheckSystemHook = (userObj: IUserProps, hook:string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/config/CheckSystemHook?hook=${encodeURIComponent(hook)}`;\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\nexport const GetAllPhraseLibraries = (userObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/PhraseLib/List`;\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n//validations\r\n\r\nexport const AddValidation = (userObj: IUserProps, name: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/validation/Add?Name=${encodeURIComponent(name)}`;\r\n fetch(Endpoint, {\r\n method: \"PUT\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n});\r\n\r\nexport const GetAllValidations = (userObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Validation/List`;\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\nexport const DeleteValidation = (userObj: IUserProps, id: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Validation/Delete?id=${(id)}`;\r\n fetch(Endpoint, {\r\n method: \"DELETE\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\n\r\n\r\n\r\nexport const TestValidation = (userObj: IUserProps, testObj: ITestValidation) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/validation/Test`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(testObj)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n throw error;\r\n\r\n \r\n\r\n });\r\n\r\n });\r\n});\r\n\r\n\r\nexport const UpdateValidation = (userObj: IUserProps, phraselib: IValidation) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/validation/Update`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(phraselib)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n});\r\n\r\n\r\nexport const DeleteGroupAccess = (userObj: IUserProps, dirEntryId: string, groups: string[]) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Directory/AccessGroupsDelete?id=${(dirEntryId)}`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(groups)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n}\r\n\r\n)\r\nexport const DeleteUserAccess = (userObj: IUserProps, dirEntryId: string, users: string[]) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Directory/AccessUsersDelete?id=${(dirEntryId)}`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(users)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n});\r\n\r\nexport const GetNumberOfLinkedDirectories = (userObj: IUserProps, id: string, parentid: string = \"\") => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n\r\n let Endpoint = BaseUrl + `api/Directory/GetNumberOfLinkedDirectories?id=${(id)}&parentid=${(parentid)}`;\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n});\r\nexport const HaveAccessToAllDependedCheck = (userObj: IUserProps, id: string) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n\r\n let Endpoint = BaseUrl + `api/Directory/HaveAccessToAllDependedCheck?id=${(id)}`;\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n});\r\n\r\n\r\n\r\n\r\nexport const GetReleaseInfo = (userObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/GetReleaseInformation`;\r\n //let testEndpoint = \"https://localhost:44337/api/Directory/GetFolderStructure\";\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n });\r\n});\r\n\r\nexport const GetNotifications = (userObj: IUserProps) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/GetNotificationUsers`;\r\n //let testEndpoint = \"https://localhost:44337/api/Directory/GetFolderStructure\";\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n\r\n});\r\n\r\nexport const AddNotifications = (userObj: IUserProps, notification: INotifications) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n\r\n let Endpoint = BaseUrl + `api/Config/AddNotificationUser`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(notification)\r\n })\r\n\r\n .then(result => {\r\n\r\n resolve(result.ok);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n\r\n});\r\n\r\nexport const EditNotifications = (userObj: IUserProps, notification: INotifications) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/UpdateNotificationUser`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(notification)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result.ok);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n\r\n});\r\n\r\nexport const DeleteNotificationsf = (userObj: IUserProps, notification: INotifications) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/DeleteNotificationUser`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(notification)\r\n })\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n });\r\n\r\n});\r\n\r\nexport const GetAutoCreateUsers = (userObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/GetAutoCreateUsers`;\r\n\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n }).then(response => response.json())\r\n .then(result => {\r\n resolve(result);\r\n }).catch(error => {\r\n console.error('error', error)\r\n });\r\n });\r\n});\r\n\r\nexport const SaveAutoCreateUser = (userObj: IUserProps, autoCreateUser: IAutoCreateUser) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/SaveAutoCreateUser`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(autoCreateUser)\r\n }).then(response => response.json())\r\n .then(result => {\r\n resolve(result);\r\n }).catch(error => {\r\n console.error('error', error)\r\n });\r\n });\r\n});\r\n\r\nexport const RemoveAutoCreateUser = (userObj: IUserProps, id: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/RemoveAutoCreateUser?id=${(id)}`;\r\n\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n })\r\n .then(result => {\r\n resolve(result);\r\n }).catch(error => {\r\n console.error('error', error)\r\n });\r\n });\r\n});\r\n\r\nexport const GetEmbeddedThemes = (userObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/EmbeddedThemes/GetAll`;\r\n //let testEndpoint = \"https://localhost:44337/api/Directory/GetFolderStructure\";\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n\r\n});\r\n\r\nexport const AddEmbeddedThemes = (userObj: IUserProps, themeInfo: IEmbeddedThemes) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/EmbeddedThemes`;\r\n //let testEndpoint = \"https://localhost:44337/api/Directory/GetFolderStructure\";\r\n //const formData = new FormData();\r\n //formData.append(\"SiteInfo\", JSON.stringify(siteInfo));\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(themeInfo)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n\r\n});\r\n\r\nexport const EditEmbeddedThemes = (userObj: IUserProps, themeInfo: IEmbeddedThemes) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/EmbeddedThemes`;\r\n //let Endpoint = \"https://localhost:44337/api/EmbeddedThemes\";\r\n //const formData = new FormData();\r\n //formData.append(\"SiteInfo\", JSON.stringify(siteInfo));\r\n\r\n fetch(Endpoint, {\r\n method: \"PUT\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(themeInfo)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n\r\n });\r\n\r\n});\r\n\r\nexport const DeleteEmbeddedThemes = (userObj: IUserProps, id: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/EmbeddedThemes?id=${(id)}`;\r\n //let testEndpoint = \"https://localhost:44337/api/Directory/GetFolderStructure\";\r\n //const formData = new FormData();\r\n //formData.append(\"SiteInfo\", JSON.stringify(siteInfo));\r\n\r\n fetch(Endpoint, {\r\n method: \"DELETE\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const GetEmbeddedSites = (userObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/EmbeddedSites`;\r\n //let testEndpoint = \"https://localhost:44337/api/Directory/GetFolderStructure\";\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n\r\n});\r\n\r\nexport const AddEmbeddedSites = (userObj: IUserProps, siteInfo: IEmbeddedSites) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/EmbeddedSites`;\r\n //let testEndpoint = \"https://localhost:44337/api/Directory/GetFolderStructure\";\r\n //const formData = new FormData();\r\n //formData.append(\"SiteInfo\", JSON.stringify(siteInfo));\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(siteInfo)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n\r\n});\r\n\r\nexport const EditEmbeddedSites = (userObj: IUserProps, siteInfo: IEmbeddedSites) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/EmbeddedSites`;\r\n //let testEndpoint = \"https://localhost:44337/api/Directory/GetFolderStructure\";\r\n //const formData = new FormData();\r\n //formData.append(\"SiteInfo\", JSON.stringify(siteInfo));\r\n\r\n fetch(Endpoint, {\r\n method: \"Put\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(siteInfo)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n\r\n });\r\n\r\n});\r\n\r\nexport const DeleteEmbeddedSites = (userObj: IUserProps, id: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/EmbeddedSites?id=${(id)}`;\r\n //let testEndpoint = \"https://localhost:44337/api/Directory/GetFolderStructure\";\r\n //const formData = new FormData();\r\n //formData.append(\"SiteInfo\", JSON.stringify(siteInfo));\r\n\r\n fetch(Endpoint, {\r\n method: \"DELETE\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n });\r\n\r\n});\r\n\r\nexport const HandleReport = (userObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n\r\n let Endpoint = BaseUrl + `api/Directory/GetFilesReport`;\r\n\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n }).then((response) => {\r\n const reader = response.body.getReader();\r\n return new ReadableStream({\r\n start(controller) {\r\n return pump();\r\n function pump() {\r\n return reader.read().then(({ done, value }) => {\r\n // When no more data needs to be consumed, close the stream\r\n if (done) {\r\n controller.close();\r\n return;\r\n }\r\n // Enqueue the next data chunk into our target stream\r\n controller.enqueue(value);\r\n return pump();\r\n });\r\n }\r\n }\r\n })\r\n })\r\n // Create a new response out of the stream\r\n .then((stream) => new Response(stream))\r\n // Create an object URL for the response\r\n .then((response) => response.blob())\r\n .then((blob) => resolve(blob))\r\n .catch(error => {\r\n console.error('error:', error)\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const CreateYourQuestionnaireFolder = (UserObj: IUserProps, folder: IUserFolderBase) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n\r\n let Endpoint = BaseUrl + `api/Documents/CreateFolder`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid,\r\n /*'X-CHANNELID': UserObj.ChannelId*/\r\n },\r\n body: JSON.stringify(folder)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error)\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const SearchUserDocuments = (UserObj: IUserProps, searchString: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n\r\n let Endpoint = BaseUrl + `api/Documents/SearchDocuments?search=${(searchString)}`;\r\n\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid,\r\n /*'X-CHANNELID': UserObj.ChannelId*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error)\r\n });\r\n\r\n });\r\n});\r\n\r\n\r\n\r\n\r\nexport const GetDocumentsOnParentId = (UserObj: IUserProps, parentId: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n\r\n let Endpoint = BaseUrl + `api/Documents/GetDocumentsOnParentId?parentId=${(parentId)}`;\r\n\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid,\r\n /*'X-CHANNELID': UserObj.ChannelId*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error)\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const GetUserDocuments = (UserObj: IUserProps, getFolders: boolean = false, portalQuestionnaire: boolean = false) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n\r\n let Endpoint = BaseUrl + `api/Documents/GetUserDocuments?getFolders=${(getFolders)}&portalQuestionnaire=${(portalQuestionnaire)}`;\r\n\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid,\r\n /*'X-CHANNELID': UserObj.ChannelId*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error)\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const GetCacheUsersOnIds = (UserObj: IUserProps, userIDs: string[]) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/User/GetCacheUsersOnIds`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n body: JSON.stringify(userIDs),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const getShareUsers = (UserObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Documents/GetShareUsers`;\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const GetVersionsDocument = (UserObj: IUserProps, docId: string) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Documents/GetVersionsDocument?id=${(docId)}`;\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n let versions: IUserDocumentVersion[] = result;\r\n\r\n //let vNumber = 1;\r\n //for (let i = versions.length - 1; i >= 0; i--) {\r\n // versions[i].versionIndex = (vNumber);\r\n // vNumber++;\r\n //}\r\n for (let i = 1; i < versions.length + 1; i++) {\r\n versions[i - 1].versionIndex = i;\r\n\r\n }\r\n resolve(versions.reverse());\r\n\r\n\r\n }).catch(error => {\r\n console.error('error', error)\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const CopyUserDocument = (UserObj: IUserProps, docId: string, parentid: string) => new Promise((resolve) => {\r\n getQuestionnaireUrl().then(questUrl => {\r\n let Endpoint = questUrl + `api/Config/CopyDocument?documentId=${(docId)}&parentId=${(parentid)}`;\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n console.error('error', error)\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const DeleteDocument = (UserObj: IUserProps, docIds: string[]) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n\r\n let Endpoint = BaseUrl + `api/Documents/DeleteDocument`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n body: JSON.stringify(docIds)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error)\r\n });\r\n });\r\n});\r\n\r\nexport const RenameDocument = (UserObj: IUserProps, docId: string, newName: string) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Documents/RenameDocument?id=${(docId)}&Name=${(newName)}`;\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error)\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const MoveUserEntries = (UserObj: IUserProps, ids: string[], parentid: string) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Documents/MoveUserEntries?parentId=${(parentid)}`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n body: JSON.stringify(ids)\r\n })\r\n //.then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(true);\r\n\r\n }).catch(error => {\r\n console.error('error', error)\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const GetUserFoldersOnParentId = (UserObj: IUserProps, parentid: string) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Documents/GetFoldersOnParentId?parentId=${(parentid)}`;\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error)\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const updateShareList = (UserObj: IUserProps, docId: string, shareList: string[], sendEmail: boolean) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Documents/UpdateShareListDocument?id=${(docId)}&sendEmail=${(sendEmail)}`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n body: JSON.stringify(shareList)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error)\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const getDocumentInformation = (UserObj: IUserProps, docId: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Documents/GetDocumentInfo?id=${(docId)}`;\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n resolve(error);\r\n });\r\n\r\n });\r\n});\r\n\r\n\r\nexport const getTenantInfo = (UserObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/GetTenantId`;\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n resolve(error);\r\n });\r\n\r\n });\r\n});\r\n\r\n\r\nexport const SaveTenantAndCreateScimKey = (UserObj: IUserProps,tenantId:string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/SaveTenantAndCreateScimKey?tenantid=${(tenantId)}`;\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n method: \"POST\"\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n resolve(error);\r\n });\r\n\r\n });\r\n});\r\n\r\n\r\n\r\n//High Q\r\nexport const GetSitesStorageProvider = (UserObj: IUserProps, providerName: string, keyValuePair: { key: string, value: string }[]) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Storage/GetSites?ProviderShortName=${(providerName)}`;\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n method: \"POST\",\r\n body: JSON.stringify(keyValuePair)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n resolve(error);\r\n });\r\n });\r\n\r\n});\r\n\r\nexport const saveAADgrps = (grpid: string, grps: IADDGroup[]) => new Promise((resolve) => {\r\n\r\n getAuthObject().then((authResult) => {\r\n getBaseUrl().then((BaseUrl) => {\r\n fetch(BaseUrl + `api/Config/SaveAADGroups?grpid=${(grpid)}`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': authResult.requestToken,\r\n 'X-AUTH-USERID': authResult.userid\r\n /*'X-CHANNELID': null*/\r\n\r\n },\r\n method: \"POST\",\r\n body: JSON.stringify(grps)\r\n\r\n\r\n }).then(response => {\r\n response.json().then(data => {\r\n\r\n resolve(data);\r\n });\r\n\r\n }).catch(err => {\r\n console.error('error', err);\r\n resolve(err);\r\n\r\n });\r\n });\r\n });\r\n\r\n\r\n\r\n\r\n});\r\n\r\n\r\n\r\nexport const GetSiteFoldersStorageProvider = (UserObj: IUserProps, providerName: string, keyValuePair: { key: string, value: string }[], siteFolderID: string) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Storage/GetSiteFolders?ProviderShortName=${(providerName)}&siteFolderID=${(siteFolderID)}`;\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n method: \"POST\",\r\n body: JSON.stringify(keyValuePair)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n resolve(error);\r\n });\r\n });\r\n\r\n});\r\n//Metadata\r\n\r\nexport const GetMetaItems = (userObj: IUserProps) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n\r\n let Endpoint = BaseUrl + `api/Config/GetMetaDataConfig`;\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n });\r\n});\r\nexport const SetMetaData = (userObj: IUserProps, selectedValues: string[], metaID: string, dirEntryID: string, documentID: string) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n\r\n let Endpoint = BaseUrl + `api/Directory/SetMetaData?entryId=${(dirEntryID)}`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n ,\r\n body: JSON.stringify({ MetaId: metaID, SelectedValues: selectedValues, FileId: documentID })\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n });\r\n});\r\n\r\nexport const GetMetaDataForFilemanager = (userObj: IUserProps, docId: string, fileId: string) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n\r\n let Endpoint = BaseUrl + `api/Directory/GetMetaData?entryid=${(docId)}&fileId=${(fileId)}`;\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n });\r\n});\r\n\r\nexport const updateHiddenQuestionOverwrites = (userObj: IUserProps, dirId: string, overwrites: IHiddenQuestionOverwrite[]) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n\r\n let Endpoint = BaseUrl + `api/Directory/UpdateHiddenQuestionOverwrites?dirId=${(dirId)}`;\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n method: \"POST\",\r\n body: JSON.stringify(overwrites)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n });\r\n});\r\n\r\nexport const AddMetaItems = (userObj: IUserProps, metaDataInfo: IMetaData) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/SaveMetaDataConfigItem`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(metaDataInfo)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n });\r\n});\r\n\r\nexport const CheckIfMetadataTagIsUsed = (userObj: IUserProps, metadataId: string, tag: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/CheckMetadataTagUsage?metadataId=${(metadataId)}&tag=${(tag)}`;\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n });\r\n\r\n});\r\n\r\nexport const DeleteMetaItems = (userObj: IUserProps, metaDataInfo: IMetaData) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/RemoveMetaDataConfigItem?configItemId=${(metaDataInfo.id)}`;\r\n\r\n fetch(Endpoint, {\r\n headers: {\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n\r\n })\r\n\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n });\r\n\r\n\r\n\r\n});\r\n\r\n\r\nexport const updateTemplateTags = (UserObj: IUserProps, tags: []) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/UpdateSystemTags`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n body: JSON.stringify(tags)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error)\r\n });\r\n\r\n });\r\n});\r\n\r\n//FILEMANAGER START\r\n\r\nexport const updateDirEntryTags = (UserObj: IUserProps, dirEntry: string, tags: Itag[]) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/FileManager/SaveTags?DirEntryId=${(dirEntry)}`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n body: JSON.stringify(tags)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error)\r\n });\r\n\r\n });\r\n});\r\n\r\n\r\nexport const DownloadFileWithoutLinks = (UserObj: IUserProps, directoryid: string, fileid: string) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/FileManager/downloadFileWithoutLinks?DirEntryId=${(directoryid)}&FileId=${(fileid)}`;\r\n fetch(Endpoint, {\r\n headers: {\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid,\r\n 'Content-Type': 'blob',\r\n }\r\n })\r\n .then((response) => {\r\n const reader = response.body.getReader();\r\n return new ReadableStream({\r\n start(controller) {\r\n return pump();\r\n function pump() {\r\n return reader.read().then(({ done, value }) => {\r\n // When no more data needs to be consumed, close the stream\r\n if (done) {\r\n controller.close();\r\n return;\r\n }\r\n // Enqueue the next data chunk into our target stream\r\n controller.enqueue(value);\r\n return pump();\r\n });\r\n }\r\n }\r\n })\r\n })\r\n // Create a new response out of the stream\r\n .then((stream) => new Response(stream))\r\n // Create an object URL for the response\r\n .then((response) => response.blob())\r\n .then((blob) => resolve(blob))\r\n .catch(error => {\r\n console.error('error:', error)\r\n });\r\n });\r\n\r\n});\r\n\r\n\r\n\r\n//LinkingBitFunctions\r\n\r\nexport const GetFolderLinkingBit = (userObj: IUserProps, folderId: string,parentId:string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/LinkingBit/GetFolder?folderid=${folderId}&parentId=${parentId}`;\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\nexport const RenameLinkingBit = (userObj: IUserProps, id: string, name: string) => new Promise((resolve) => {\r\n\r\n let encodedName = encodeURIComponent(name);\r\n\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/LinkingBit/Rename?id=${id}&name=${encodedName}`;\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\nexport const CreateFolderLinkingBit = (userObj: IUserProps, folderId: string, name: string) => new Promise((resolve) => {\r\n let encodedName = encodeURIComponent(name);\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/LinkingBit/CreateFolder?folderId=${folderId}&name=${encodedName}`;\r\n fetch(Endpoint, {\r\n method: \"PUT\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\nexport const DeleteFolderLinkingBit = (userObj: IUserProps, folderId: string) => new Promise((resolve) => {\r\n \r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/LinkingBit/DeleteFolder?folderId=${folderId}`;\r\n fetch(Endpoint, {\r\n method: \"DELETE\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\nexport const DeleteLinkingBit = (userObj: IUserProps, id: string) => new Promise((resolve) => {\r\n\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/LinkingBit/DeleteLinkingBit?id=${id}`;\r\n fetch(Endpoint, {\r\n method: \"DELETE\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error)\r\n\r\n });\r\n\r\n });\r\n\r\n})\r\n\r\n\r\n\r\nexport const getHelpPortalUrl = () => new Promise((resolve) => {\r\n\r\n\r\n getAuthObject().then((authResult) => {\r\n getBaseUrl().then((BaseUrl) => {\r\n fetch(BaseUrl + `api/PortalSupport/GetHelpPortalUrl`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': authResult.requestToken,\r\n 'X-AUTH-USERID': authResult.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n\r\n\r\n }).then(response => {\r\n response.json().then(data => {\r\n\r\n resolve(data);\r\n });\r\n\r\n }).catch(err => console.log('e', err));\r\n });\r\n });\r\n});\r\n\r\n\r\nexport function formatDate(dateobj: Date, Usetime: Boolean) {\r\n\r\n if (!Usetime) {\r\n\r\n var twoDigitMonth = (dateobj.getMonth() + 1) + \"\";\r\n if (twoDigitMonth.length === 1) twoDigitMonth = \"0\" + twoDigitMonth;\r\n\r\n var twoDigitDate = dateobj.getDate() + \"\";\r\n if (twoDigitDate.length === 1) twoDigitDate = \"0\" + twoDigitDate;\r\n var currentDate = twoDigitMonth + \"/\" + twoDigitDate + \"/\" + dateobj.getFullYear();\r\n\r\n return currentDate;\r\n } else {\r\n\r\n\r\n var today = new Date(dateobj).toLocaleDateString('en-GB',\r\n {\r\n day: 'numeric',\r\n month: 'short',\r\n year: 'numeric'\r\n\r\n }).split(' ').join(' ');\r\n\r\n\r\n var timeoffset = new Date(dateobj).toLocaleTimeString('en-GB',\r\n {\r\n hour: '2-digit',\r\n minute: '2-digit'\r\n }).split(' ').join(' ');\r\n\r\n return today + '-' + timeoffset;\r\n\r\n }\r\n}\r\n\r\n\r\nexport const getBaseUrl = () => new Promise((resolve) => {\r\n\r\n if (_baseUrl == \"\") {\r\n let domainUrl = document.domain;\r\n if (document.location.port != undefined) {\r\n domainUrl += ':' + document.location.port;\r\n }\r\n\r\n let Endpoint = `https://` + domainUrl + `/api/Configuration/GetApiUrl?Api=BaseApi`;\r\n fetch(Endpoint, {\r\n method: \"GET\"\r\n\r\n })\r\n .then(response => response.text()\r\n .then((data) => {\r\n _baseUrl = data;\r\n resolve(_baseUrl);\r\n\r\n\r\n }))\r\n }\r\n else {\r\n resolve(_baseUrl);\r\n }\r\n});\r\n\r\n//function getBaseUrl() {\r\n// if (document.location.href.toLowerCase().indexOf(\".qa.documentdrafter.com\") > -1) {\r\n// return \"https://dd-qa-basepi.azurewebsites.net/\";\r\n// } else if (document.location.href.toLowerCase().indexOf(\".dev.documentdrafter.com\") > -1 || document.location.href.toLowerCase().indexOf(\"localhost\") > -1) {\r\n// return \"https://dd-dev-baseapi.azurewebsites.net/\";\r\n// } else if (document.location.href.toLowerCase().indexOf(\"pre-production.documentdrafter.com\") > -1) {\r\n// return \"https://dd-prod-baseapi-preproduction.azurewebsites.net/\";\r\n// }\r\n// else return \"https://dd-base-api.documentdrafter.com/\";\r\n//}\r\n","import { IAutoCreateUser, IUserDocuments } from './entitiesAPI';\r\n\r\n\r\nexport const PolicyDefaultID = \"5b36a467-4015-default-policy\";\r\n\r\nexport enum APIResponseStatus {\r\n Success = 0,\r\n Error = 1,\r\n Warning = 2,\r\n Info = 3,\r\n Unauthorized = 4,\r\n}\r\n\r\nexport interface ApiResponse {\r\n status: APIResponseStatus;\r\n msg: string;\r\n result: T;\r\n}\r\n\r\nexport interface IConfigLogin {\r\n config: IPortalConfig;\r\n ssoDirect: string;\r\n useOnlySSO: boolean;\r\n clientId: string;\r\n}\r\n\r\nexport interface sqlDbInfo {\r\n enabled: boolean;\r\n noDataFields: boolean;\r\n passWord: string;\r\n}\r\nexport interface IPortalConfig {\r\n id: string;\r\n Permissions: IPortalPermissions[];\r\n Groups: IPortalUserGroups[];\r\n Roles: PortalRoles[];\r\n Security: IPortalSecurity;\r\n apifunctions: IPortalConfigApiLink[];\r\n office365domains: string;\r\n casenumberdomains: string;\r\n whitelistedextensions: string;\r\n autodeletegrps: string;\r\n portaltitle: string;\r\n headertitle: string;\r\n small_logo: string;\r\n footer: string;\r\n footer2: string;\r\n TermsUrl: string;\r\n HelpUrl: string;\r\n UseCss: boolean;\r\n emailMultipleFiles: EmailMethod;\r\n publicQuestionnaireReturnLink: string;\r\n themesettings: string;\r\n logoheight: string;\r\n logoPaddingTop: string;\r\n logoPaddingBottom: string\r\n //logovposition: string;\r\n fullsizeborder: boolean;\r\n footerbackgroundcolor: string;\r\n _etag: string;\r\n sharedomains: string;\r\n approveddomains: string;\r\n autoShareUserAddin: boolean;\r\n systemTags: ISystemTag[];\r\n headerColor: string;\r\n headerIconColor: string;\r\n headerButtonHoverColor: string;\r\n headerButtonClickColor: string;\r\n slimlogo: string;\r\n slimlogoHeight: string;\r\n autoCreateUsers: IAutoCreateUser[];\r\n\r\n favicon: string;\r\n loginHeader: string;\r\n loginSubText: string;\r\n passwordHeader: string;\r\n o365LogoutHeader: string;\r\n o365LogoutSubText: string;\r\n nativeLogoutHeader: string;\r\n nativeLogoutSubText: string;\r\n resetPasswordHeader: string;\r\n resetPasswordSubtext: string;\r\n changePasswordHeader: string;\r\n changePasswordSubtext: string;\r\n\r\n //new v2020 properties;\r\n themeBrandColor: string;\r\n loginLogoPath: string;\r\n loginLogoPathDark: string;\r\n loginLogoHeight: string;\r\n loginLogoTopMargin: string;\r\n headerLogoPath: string;\r\n headerLogoPathDark: string;\r\n headerLogoHeight: string;\r\n headerLogoTopMargin: string;\r\n headerHeight: string;\r\n headerBottomPadding: string;\r\n\r\n colorConfiguration: IColorConfiguration;\r\n\r\n releaseNotesEnabled: boolean;\r\n linkingBitsEnabled: boolean;\r\n\r\n emailSizeLimit: number;\r\n}\r\n\r\nexport interface IPolicy {\r\n\r\n id: string;\r\n name: string;\r\n retentionDocuments: number;\r\n retentionDownloadLinks: number;\r\n retentionGuestLinks: number;\r\n applyFor: string[];\r\n\r\n}\r\n\r\nexport interface IColorConfiguration {\r\n lightThemeColors: IBrandColorsLight;\r\n darkThemeColors: IBrandColorsDark;\r\n personaColors: IPersonaColorsConfiguration;\r\n}\r\n\r\nexport interface IBrandColorsLight {\r\n brandPrimary: string;\r\n brand1shadeDarker: string;\r\n brand2shadeDarker: string;\r\n brand4shadeDarker: string;\r\n brand6shadeLighter: string;\r\n brand7shadeLighter: string;\r\n brand8shadeLighter: string;\r\n}\r\n\r\nexport interface IBrandColorsDark {\r\n brandPrimary: string;\r\n brand3shadeDarker: string;\r\n brand5shadeDarker: string;\r\n brand1shadeLighter: string;\r\n brand2shadeLighter: string;\r\n brand3shadeLighter: string;\r\n brand4shadeLighter: string;\r\n brand7shadeLighter: string;\r\n brand8shadeLighter: string;\r\n brand9shadeLighter: string;\r\n}\r\n\r\nexport interface IPersonaColorsConfiguration {\r\n lightForegroundColor: string;\r\n darkForegroundColor: string;\r\n personaColorPalette: IPersonaColor[];\r\n}\r\n\r\nexport interface IPersonaColor {\r\n colorId: number;\r\n colorLight: string;\r\n colorDark: string;\r\n}\r\n\r\nexport interface IPortalConfigApiLink {\r\n id: string;\r\n system: boolean;\r\n}\r\nexport interface IasdPortalConfig {\r\n id: string;\r\n Permissions: IPortalPermissions[];\r\n Groups: IPortalUserGroups[];\r\n Roles: PortalRoles[];\r\n Security: IPortalSecurity;\r\n apifunctions: IPortalConfigApiLink[];\r\n office365domains: string;\r\n casenumberdomains: string;\r\n whitelistedextensions: string;\r\n autodeletegrps: string;\r\n portaltitle: string;\r\n headertitle: string;\r\n small_logo: string;\r\n footer: string;\r\n footer2: string;\r\n TermsUrl: string;\r\n HelpUrl: string;\r\n UseCss: boolean;\r\n emailMultipleFiles: EmailMethod;\r\n publicQuestionnaireReturnLink: string;\r\n themesettings: string;\r\n logoheight: string;\r\n logovposition: string;\r\n fullsizeborder: boolean\r\n footerbackgroundcolor: string;\r\n _etag: string;\r\n sharedomains: string;\r\n approveddomains: string;\r\n headerColor: string;\r\n headerIconColor: string;\r\n headerButtonHoverColor: string;\r\n headerButtonClickColor: string;\r\n slimlogo: string;\r\n slimlogoHeight: string;\r\n autoCreateUsers: IAutoCreateUser[];\r\n\r\n favicon: string;\r\n\r\n loginHeader: string;\r\n loginSubText: string;\r\n passwordHeader: string;\r\n o365LogoutHeader: string;\r\n o365LogoutSubText: string;\r\n nativeLogoutHeader: string;\r\n nativeLogoutSubText: string;\r\n\r\n resetPasswordHeader: string;\r\n resetPasswordSubtext: string;\r\n changePasswordHeader: string;\r\n changePasswordSubtext: string;\r\n\r\n\r\n}\r\n\r\nexport interface ILoginObject {\r\n PortalConfig: IPortalConfig;\r\n session: IuserSession;\r\n status: string;\r\n authenticationKey: string;\r\n loginMethod: ILoginMethod;\r\n emailAccount:string;\r\n}\r\n\r\nexport interface INotifications {\r\n id: string;\r\n email: string;\r\n parameters: keyValue[];\r\n}\r\n\r\nexport interface DMSRequest {\r\n guid: string,\r\n dms_id: string,\r\n parameters: keyValue[];\r\n}\r\n\r\nexport interface IMetaData {\r\n id: string;\r\n name: string;\r\n dataType: number;\r\n tags: string[];\r\n changeDate: Date | string;\r\n changeUserId: string;\r\n changeUser: string;\r\n sortOrder: number;\r\n isColumn: boolean;\r\n}\r\n\r\nexport interface IMetaDataFilemanager {\r\n configItem: IMetaData;\r\n fileId: string;\r\n selectedValues: string[];\r\n}\r\n\r\nexport interface IFlows {\r\n type: \"Flow\",\r\n flowType: FlowType;\r\n documentsInScope: IDocumentsInScope[],\r\n usersInScope: IUsersInScope[],\r\n triggers: ITrigger[],\r\n id: string,\r\n name: string,\r\n created: Date,\r\n modified: Date,\r\n createdBy: string,\r\n modifiedBy: string,\r\n description: string,\r\n directories: IDirEntry[],\r\n enabled: boolean,\r\n flowScope: FlowScopeType\r\n popupConfig: IFlowPopupConfig;\r\n states: IFlowState[];\r\n}\r\nexport interface IFlowState {\r\n name: string;\r\n id: string;\r\n triggers: ITrigger[];\r\n}\r\n\r\nexport enum FlowType {\r\n Flow = 0,\r\n PostAction = 1\r\n}\r\n\r\nexport interface IFlowPopupConfig {\r\n flowId: string;\r\n triggerId: string;\r\n title: string;\r\n bodyText: string;\r\n confirmationPopupConfig: IFlowConfirmationPopupConfig;\r\n popupType: FlowPopupType;\r\n warningType: FlowIncompleteQuestionnaireWarningType\r\n popupButton: IFlowPopupButtons;\r\n additionalDataPopupConfig: IFlowAdditionalDataPopupConfig;\r\n}\r\n\r\nexport interface IFlowAdditionalDataPopupConfig {\r\n title: string;\r\n bodyText: string;\r\n inputLabel: string;\r\n extraData: ExtraTriggerData;\r\n\r\n}\r\n\r\nexport interface IFlowConfirmationPopupConfig {\r\n title: string;\r\n bodyText: string;\r\n shouldShow: boolean;\r\n}\r\n\r\nexport interface IFlowPopupButtons {\r\n text: string;\r\n action: string;\r\n included: boolean\r\n}\r\n\r\nexport enum FlowIncompleteQuestionnaireWarningType {\r\n none = 0,\r\n overwriteable = 1,\r\n block = 2\r\n}\r\n\r\nexport enum FlowPopupType {\r\n simple = 0,\r\n standard = 1,\r\n fullScreen = 2,\r\n fullScreenLink = 3\r\n}\r\n\r\nexport enum FlowScopeType {\r\n All = 0,\r\n Selected = 1\r\n}\r\nexport interface IDocumentsInScope {\r\n id: string,\r\n}\r\n\r\nexport interface IUsersInScope {\r\n scopeType: number,\r\n scope: string,\r\n}\r\n\r\nexport interface ITrigger {\r\n button: string,\r\n include: boolean,\r\n includeConditional: boolean,\r\n useAsTrigger: boolean,\r\n buttonText: string,\r\n condition: string,\r\n postActionScript: string,\r\n id: string,\r\n mandatory: boolean,\r\n stateChange: string,\r\n popupConfig: IFlowPopupConfig\r\n\r\n}\r\n\r\nexport enum ExtraTriggerData {\r\n none = 0,\r\n multilineText = 1\r\n}\r\n\r\nexport interface IDirEntryMeta {\r\n MetaId: string;\r\n SelectedValues: string[];\r\n FileId: string;\r\n}\r\n\r\nexport interface IEmbeddedSites {\r\n\r\n id: string;\r\n name: string;\r\n changedBy: string;\r\n changeDate: Date | string;\r\n description: string;\r\n themeId: string;\r\n objectKey: string;\r\n referrer: string;\r\n model: EmbeddedModel;\r\n saveModel: EmbeddedSaveModel;\r\n type: 'EmbeddedSites';\r\n saveParameters: keyValue[];\r\n runUserId: string;\r\n isDefault: boolean;\r\n\r\n}\r\nexport interface keyValue {\r\n key: string;\r\n value: string;\r\n}\r\nexport interface IEmbeddedThemes {\r\n id: string;\r\n type: 'EmbeddedCSS';\r\n changedBy: string;\r\n changeDate: Date | string;\r\n name: string;\r\n css: string;\r\n\r\n}\r\n\r\nexport enum EmbeddedModel {\r\n templateMode = 0,\r\n folderMode = 1\r\n}\r\n\r\nexport enum EmbeddedSaveModel {\r\n download = 0,\r\n highQ = 1\r\n}\r\n\r\nexport interface ISystemTag {\r\n key: string;\r\n status: tagStatus;\r\n\r\n}\r\nexport enum tagStatus {\r\n useable = 0,\r\n renaming = 1,\r\n deleting = 2,\r\n}\r\n\r\nexport interface PortalRoles {\r\n id: string;\r\n name: string;\r\n\r\n permissions: IPortalPermissions[];\r\n\r\n new(): PortalRoles;\r\n\r\n\r\n}\r\n\r\nexport interface IUserShare {\r\n id: string;\r\n email: string;\r\n name: string;\r\n}\r\n\r\n\r\n\r\nexport interface PortalRolesSlim {\r\n id: string;\r\n name: string;\r\n}\r\nexport interface PortalGroupSlim {\r\n id: string;\r\n name: string;\r\n}\r\n\r\n\r\nexport enum EmailMethod {\r\n Zipfile = 0,\r\n IndividualFiles = 1\r\n}\r\n\r\nexport interface IPortalUserGroups {\r\n id: string;\r\n name: string;\r\n system: boolean;\r\n roles: PortalRolesSlim[];\r\n channelID: string;\r\n directoryaccess: IPortalUserGroupsDirectoryAccess[];\r\n AADgroups: IADDGroup[];\r\n new(): IPortalUserGroups;\r\n\r\n}\r\n\r\nexport interface IADDGroup {\r\n id: string;\r\n name: string;\r\n}\r\n\r\nexport interface IPortalUserGroupsDirectoryAccess {\r\n id: string;\r\n foldername: string;\r\n}\r\n\r\nexport interface IPortalSecurity {\r\n noinvalidattempts: number;\r\n expirationpassword: number;\r\n minlengthpassword: number;\r\n complexitypassword: number;\r\n historyexpiration: number;\r\n downloadexpiration: number;\r\n sharelinksexpiration: number;\r\n timeOutScreen: number;\r\n mfa: number;\r\n enableExternalGrps: number;\r\n autoupdatedrafter: boolean;\r\n embeddedDomains: string[];\r\n\r\n}\r\n\r\nexport interface IPortalPermissions {\r\n id: string;\r\n name: string;\r\n permissiongroup: string;\r\n}\r\n\r\n//NOT USED ANYMORE\r\n//export interface IUserDocuments {\r\n// documentname: string;\r\n// documentid: string;\r\n// date: Date | string;\r\n// shared: number;\r\n// shareUsers: string[];\r\n// lastuser: string;\r\n// lastuserEmail: string;\r\n// caseref: string;\r\n// versions: number;\r\n//}\r\n\r\nexport enum ILoginMethod {\r\n native = 0,\r\n office365 = 1,\r\n authProvider = 2,\r\n notvalidated = 99\r\n}\r\n\r\n\r\nexport enum ILoginstatus {\r\n unverified = 99,\r\n verified = 1,\r\n resetuser = 66,\r\n unknownuser = 88,\r\n lockedoutuser = 77,\r\n expirpassword = 78,\r\n mfainprogress = 55\r\n}\r\n\r\n//NOT USED ANYMORE\r\n//export interface IUserDocuments {\r\n// documentname: string;\r\n// documentid: string;\r\n// date: Date | string;\r\n// shared: number;\r\n// lastuser: string;\r\n// caseref: string;\r\n// versions: number;\r\n//}\r\nexport interface IPortalUserDescription {\r\n email: string;\r\n name: string;\r\n}\r\n\r\nexport interface IPortalUserCredentials {\r\n password: string;\r\n temppassword: string;\r\n retries: number;\r\n resetpassword: boolean;\r\n locked: boolean;\r\n lastpasswordupdate: Date | string;\r\n}\r\n\r\nexport interface IPortalUser {\r\n new(newuser: boolean): IPortalUser;\r\n id: string;\r\n Description: IPortalUserDescription;\r\n Credentials: IPortalUserCredentials;\r\n Groups: string[];\r\n DocumentAccessFrom: string[];\r\n DocumentAcessTo: string[];\r\n lastWorkspace: string;\r\n IsPublicUser: boolean;\r\n}\r\n\r\nexport interface IuserSession {\r\n status: string;\r\n lastsearch: string;\r\n continuetoken: string;\r\n totalusers: number;\r\n rightslist: string[];\r\n portalUser: IPortalUser;\r\n documents: IUserDocuments[];\r\n FeatureFlags: string[];\r\n casenumberrequired: boolean;\r\n permissions: string[];\r\n environment: string;\r\n timezone: number;\r\n TLScheckFail: boolean;\r\n o365auth: boolean;\r\n customername: string;\r\n customerid: string;\r\n urlsystemmanual: string;\r\n AADToken: string;\r\n MainUrl: string;\r\n requestToken: string;\r\n}\r\n\r\nexport interface apirequestparm {\r\n param: string;\r\n value: string;\r\n}\r\n\r\nexport enum apischemetype {\r\n _integer = 0,\r\n _string = 1,\r\n _decimail = 2,\r\n _date = 3,\r\n\r\n}\r\n\r\nexport enum apiendpointtype {\r\n selector = 0,\r\n datarequest = 1,\r\n cascadedSelector = 2,\r\n list = 3\r\n}\r\n\r\nexport interface apirequestinfo {\r\n serviceurl: string;\r\n secret: string;\r\n timeout: number;\r\n}\r\n\r\n\r\n\r\nexport interface apiparameterschema {\r\n type: apischemetype;\r\n minimum: number;\r\n maximum: number;\r\n}\r\n\r\n\r\n\r\nexport interface apiparameter {\r\n name: string;\r\n required: boolean;\r\n description: string;\r\n schema: apiparameterschema;\r\n\r\n}\r\n\r\n\r\nexport interface apiendpoint {\r\n\r\n id: string;\r\n name: string;\r\n endpoint: string;\r\n apiendpointtype: apiendpointtype;\r\n inputparameters: apiparameter[];\r\n sampleurl: string;\r\n selectorfields: string;\r\n nextendpointdatavalue: string;\r\n}\r\n\r\n\r\n\r\nexport interface apiservice {\r\n id: string;\r\n name: string;\r\n requestinfo: apirequestinfo;\r\n endpoints: apiendpoint[];\r\n}\r\n\r\n\r\n\r\n\r\n\r\nexport interface IFullDirectory {\r\n directory: IDirEntry[];\r\n clauses: IDirEntry[];\r\n metaDataConfigItems: IMetaData[];\r\n}\r\n\r\n\r\n\r\n\r\nexport interface IMyDocument {\r\n key: string;\r\n name: string;\r\n date: string;\r\n shared: number;\r\n modifiedby: string;\r\n sharedList: string[];\r\n casereference: string;\r\n downloadVersion: number;\r\n\r\n}\r\n\r\n\r\nexport interface IShareDocument {\r\n document: IMyDocument;\r\n OnUpdate: any;\r\n IsOpen: boolean;\r\n handleClose: any;\r\n dummy: any;\r\n openedFrom: string;\r\n}\r\n\r\nexport interface IDirectory {\r\n entries: IDirEntry[];\r\n directory: IDirEntry[];\r\n}\r\nexport interface ISubscriptionData {\r\n id: string,\r\n type: number,\r\n hostUrl: string,\r\n localUrl: string,\r\n workSpaceID: string,\r\n token: string,\r\n hashcode: number\r\n}\r\n\r\nexport enum IDataSetColumnType {\r\n SingleLineText = 0,\r\n MultiLineText = 1,\r\n Date = 2,\r\n Number = 3,\r\n GuidanceNote = 4,\r\n}\r\nexport interface IDataSetColumn {\r\n edit: boolean;\r\n id: string,\r\n name: string,\r\n index: number,\r\n columnType: IDataSetColumnType,\r\n searchable: boolean,\r\n inDropDown: boolean,\r\n autoFill: boolean,\r\n isForeignKey: boolean\r\n isSortColumn : boolean\r\n}\r\n\r\n\r\nexport interface DataSetRowData {\r\n columnId: string;\r\n value: string;\r\n}\r\n\r\nexport interface DataSetRows {\r\n id: string;\r\n dataSetId: string;\r\n data: DataSetRowData[];\r\n}\r\n\r\nexport interface SharePointListsResourceMap {\r\n id: string;\r\n displayName: string;\r\n parentReference: string;\r\n}\r\n\r\nexport interface IPhraseLibrarySearchResponse {\r\n result: any[]; // Replace 'any' with the actual type of your results if known\r\n continuationToken: string;\r\n count: number;\r\n}\r\nexport interface IDataSetSearchResponse {\r\n result: any[]; // Replace 'any' with the actual type of your results if known\r\n continuationToken: string;\r\n count: number;\r\n}\r\n\r\nexport interface Cell {\r\n colSpan: number;\r\n style: Style;\r\n value: string;\r\n format: string;\r\n formula: string;\r\n}\r\n\r\nexport interface Column {\r\n width: number;\r\n}\r\n\r\nexport interface ConditionalFormat {\r\n type: string;\r\n range: string;\r\n cFColor: string;\r\n value: string;\r\n format: Format;\r\n}\r\n\r\nexport interface Format {\r\n style: Style;\r\n}\r\n\r\nexport interface WorkBookRoot {\r\n workbook: Workbook;\r\n}\r\n\r\nexport interface Row {\r\n cells: Cell[];\r\n height: number;\r\n}\r\n\r\nexport interface Sheet {\r\n columns: Column[];\r\n conditionalFormats: ConditionalFormat[];\r\n name: string;\r\n rows: Row[];\r\n selectedRange: string;\r\n}\r\n\r\nexport interface Style {\r\n backgroundColor: string;\r\n fontWeight: string;\r\n fontSize: string;\r\n textAlign: string;\r\n verticalAlign: string;\r\n}\r\n\r\nexport interface Workbook {\r\n definedNames: any[];\r\n sheets: Sheet[];\r\n}\r\n\r\n\r\nexport interface ILoginResponse {\r\n status:string\r\n}\r\n\r\nexport interface ILinkingBitEntry {\r\n id: string,\r\n parentId: string,\r\n name: string,\r\n entryType: IEntryType;\r\n templateFile: string;\r\n xmlPath: string;\r\n}\r\n\r\nexport interface IPhraseLibrary {\r\n id: string,\r\n name: string,\r\n type: 'PhraseLib',\r\n updated: Date,\r\n dataUpdated: Date,\r\n updatedBy: string,\r\n dataUpdatedBy: string,\r\n enabled: boolean,\r\n\r\n}\r\n\r\n\r\nexport interface ITestValidation {\r\n Script: string,\r\n FunctionName: string,\r\n Args: string[],\r\n}\r\n\r\nexport interface IValidation {\r\n id: string,\r\n name: string,\r\n type: 'Validation',\r\n updated: Date,\r\n dataUpdated: Date,\r\n updatedBy: string,\r\n dataUpdatedBy: string,\r\n enabled: boolean,\r\n code: string\r\n\r\n}\r\n\r\nexport interface IDataBase {\r\n id: string,\r\n name: string,\r\n schema: string,\r\n\r\n\r\n}\r\nexport interface ISQlDatabases {\r\n status: string,\r\n dataBases: IDataBase[]\r\n}\r\n\r\nexport interface ISQLTables {\r\n status: string,\r\n tables: IDataBase[]\r\n}\r\n\r\nexport interface IAutoUpdateSettings {\r\n \r\n emailsNotifications: string[],\r\n expireDate: Date,\r\n sendOnSuccess:boolean\r\n}\r\nexport interface IDataSet {\r\n id: string,\r\n name: string,\r\n type: 'DataSet',\r\n updated: Date,\r\n dataUpdated: Date,\r\n updatedBy: string,\r\n dataUpdatedBy: string,\r\n columns: IDataSetColumn[],\r\n enabled: boolean,\r\n endPointType: apiendpointtype,\r\n groupsWithAccess: string[],\r\n usersWithAccess: string[],\r\n connectionString: string,\r\n database: IDataBase\r\n tableInfo: IDataBase,\r\n autoUpdate: IAutoUpdateSettings,\r\n\r\n\r\n\r\n}\r\n\r\nexport interface ISalesForceFieldMapping{\r\n id: string,\r\n q_Id: string,\r\n sF_Field:string\r\n}\r\n\r\nexport interface ISalesForceLinkMapping {\r\n id: string,\r\n tableField: string,\r\n tableField2 :string\r\n\r\n}\r\n\r\n\r\nexport interface ISalesForce {\r\n id: string,\r\n name: string,\r\n templateId: string,\r\n templateName: string,\r\n type: 'SalesForce',\r\n updated: Date,\r\n dataUpdated: Date,\r\n updatedBy: string,\r\n dataUpdatedBy: string,\r\n fields: ISalesForceFieldMapping[],\r\n links: ISalesForceLinkMapping[]\r\n //columns: IDataSetColumn[],\r\n enabled: boolean,\r\n // endPointType: apiendpointtype,\r\n groupsWithAccess: string[],\r\n usersWithAccess: string[],\r\n connectionString: string,\r\n autoGrpShare: string[]\r\n //database: IDataBase\r\n //tableInfo: IDataBase,\r\n\r\n\r\n\r\n}\r\n\r\n\r\nexport interface IDataSetRowData {\r\n columnId: string,\r\n Value: string\r\n}\r\n\r\nexport interface IDataSetRows {\r\n id: string,\r\n dataSetId: string,\r\n data: IDataSetRowData[]\r\n\r\n}\r\n\r\nexport interface IEmailFileSettings {\r\n enabled:boolean,\r\n fileId: string,\r\n msgTo: string,\r\n msgCc: string,\r\n msgBcc: string,\r\n subject: string,\r\n seperator: string,\r\n attachments : string[] //fileID\r\n}\r\n\r\n\r\n\r\nexport interface IDirEntry {\r\n id: string;\r\n parentid: string;\r\n entrytype: IEntryType;\r\n name: string;\r\n versions: IDirVersion[];\r\n linkDirEntry: string;\r\n linkedFileEntryID: string;\r\n linkedFileName: string;\r\n automations: IDirEntryAutomation[];\r\n calcdatalevel: number;\r\n isClause: boolean;\r\n masterLinkId: string;\r\n allUsers: IUserShare[];\r\n subscriptionID: string;\r\n lockedBy: string;\r\n output: IFileOutput;\r\n groupsWithAccess: string[];\r\n usersWithAccess: string[];\r\n metaData: IDirEntryMeta[];\r\n bodyText: string;\r\n imageUrl: string;\r\n directDownload: boolean;\r\n releaseSettings: IReleaseSettings;\r\n emailSettings: IEmailFileSettings[];\r\n deleteInfo: IDeleteInfo;\r\n hiddenQuestionOverwrites: IHiddenQuestionOverwrite[];\r\n}\r\n\r\nexport interface IHiddenQuestionOverwrite\r\n{\r\n questionId: string,\r\n groups: string[]\r\n}\r\n\r\nexport interface IDeleteInfo {\r\n\r\n deletedBy: string,\r\n deletedDate: Date\r\n}\r\n\r\nexport interface IReleaseSettings {\r\n triggers: string[];\r\n}\r\n\r\nexport interface IFileview {\r\n FolderId: string\r\n onChangeFolderId: any;\r\n onChangeSelection: any;\r\n onEmailSettingsClicked: any;\r\n FolderEntries: IDocument[];\r\n Filter: string[];\r\n Search: string;\r\n onMoveItems: any;\r\n infoLinkClicked: boolean;\r\n update: boolean;\r\n allUsers: IUserShare[];\r\n subscriptions: ISubscriptionData[];\r\n metaDataList: IMetaData[];\r\n setForceUpdate: any;\r\n forceUpdate: string;\r\n publicSiteEnabled: boolean;\r\n updateItem: any;\r\n}\r\n\r\n\r\nexport enum IEntryType {\r\n Workspace = -1,\r\n Folder = 0,\r\n Template = 1,\r\n Mirrored = 2,\r\n StaticFile = 3,\r\n MaskedFile = 10,\r\n MiniXMLFile = 20,\r\n LinkingBitTemplate = 500\r\n}\r\n\r\nexport interface Itag {\r\n question_id: string;\r\n answer_id: string;\r\n tag: string;\r\n}\r\n\r\nexport interface IDirVersion {\r\n number: number;\r\n createuser: string;\r\n createtime: Date | string;\r\n files: IDirectoryFileLink[];\r\n clauses: Iclause[];\r\n tags: Itag[];\r\n note: string;\r\n}\r\n\r\nexport interface IDirectoryFileLink {\r\n file_id: string;\r\n name: string;\r\n path: string;\r\n linkType: IFileLinkType;\r\n previewCreated: boolean;\r\n output: IFileOutput;\r\n templateSize: number;\r\n clauselinks: string[];\r\n userId: string,\r\n date: string,\r\n mappingData: string;\r\n}\r\n\r\nexport enum IFileOutput {\r\n Original = 0,\r\n PDF = 1\r\n}\r\n\r\nexport enum IFileLinkType {\r\n Questionnaire = 0,\r\n Template = 1,\r\n LinkedTemplate = 2,\r\n StaticFile = 3\r\n}\r\n\r\nexport interface Iclause {\r\n id: string;\r\n name: string;\r\n}\r\n\r\n\r\n\r\nexport interface IDirEntryAutomation {\r\n question_id: string;\r\n hide: boolean;\r\n prefillanswers: IAutomationAnswers[];\r\n}\r\n\r\nexport interface IAutomationAnswers {\r\n answer_id: string;\r\n value: string;\r\n isChecked: boolean;\r\n hide: boolean;\r\n}\r\nexport interface IDocument {\r\n key: string;\r\n name: string;\r\n parentid: string;\r\n iconName: string;\r\n fileType: string;\r\n modifiedBy: string;\r\n dateModified: string;\r\n asDateModified: string;\r\n docType: string;\r\n IsPackage: boolean;\r\n IsPackageFile: number;\r\n Files: IDocument[];\r\n lockedBy: string,\r\n linkedDirEntry: string;\r\n linkedFileEntryID: string;\r\n entrytype: number;\r\n ContainClauses: boolean;\r\n ContainTags: boolean;\r\n IsSubscription: boolean;\r\n groupsWithAccess: string[];\r\n usersWithAccess: string[];\r\n output: IFileOutput;\r\n metaData: IDirEntryMeta[];\r\n bodyText: string;\r\n imageUrl: string;\r\n directDownload: boolean;\r\n releaseSettings: IReleaseSettings;\r\n mappingData: string;\r\n emailSettings?: IDirEntryEmailSettings[];\r\n deleteInfo?: IDeleteInfo;\r\n hiddenQuestionOverwrites: IHiddenQuestionOverwrite[];\r\n\r\n}\r\n\r\nexport interface IDirEntryEmailSettings {\r\n enabled: boolean;\r\n fileId: string;\r\n msgTo: string;\r\n msgCc: string;\r\n msgBcc: string;\r\n subject: string;\r\n seperator: string;\r\n attachments: string[]\r\n}\r\n\r\nexport interface ITemplate {\r\n Name: string;\r\n DownloadName: string;\r\n Id: string;\r\n Conditions: string;\r\n Clauses: Clause[];\r\n Calculations: Icalculation[];\r\n RepeatId: string;\r\n}\r\n\r\nexport interface Icalculation {\r\n Id: string;\r\n DisplayNuber: number;\r\n Formula: string;\r\n Format: number;\r\n Decimals: number;\r\n LimitSpace: boolean;\r\n}\r\n\r\nexport interface APIAutofill {\r\n Version: number;\r\n CheckType: CheckType | null;\r\n CheckTypeData: string;\r\n QuestionId: string;\r\n APIData: string;\r\n HideIfAutofilled: boolean | null;\r\n\r\n}\r\n\r\nexport enum CheckType {\r\n equal,\r\n less,\r\n greater,\r\n equalOrLess,\r\n equalOrGreat,\r\n notEqual,\r\n contains,\r\n startsWith,\r\n EndsWith,\r\n equalString\r\n}\r\n\r\n\r\nexport interface IAnswer {\r\n Id: string;\r\n DisplayNumber: number;\r\n AnswerSelected: boolean;\r\n Conditions: string;\r\n Autofill: APIAutofill;\r\n Text: string;\r\n ExplanatoryNote: string;\r\n DefaultSelected: boolean;\r\n Visible: boolean;\r\n SourceId: string;\r\n}\r\nexport interface IQuestion {\r\n DisplayNumber: number;\r\n Id: string;\r\n Sequence: number;\r\n HeadLineLevel: HeadLineLevelValues;\r\n Type: QuestionType;\r\n Multiline: boolean;\r\n AnswerType: AnswerTypeValues;\r\n DataFieldType: DataFieldTypeValues;\r\n //apiConfiguration: APIConfiguration;\r\n InputFormat: OutputFormat;\r\n LimitSpace: boolean;\r\n OutputFormats: OutputFormat[];\r\n SelectedAnswer: string;\r\n Conditions: string;\r\n Text: string;\r\n ExplanatoryNote: string;\r\n // apiSearchResult: apisearchresult[];\r\n Answers: IAnswer[];\r\n AutoListType: AutoListType;\r\n SourceId: string;\r\n DataId: string;\r\n Questions: string[];\r\n QuestionsWithRepeatNumbers: string[];\r\n ExcludeList: string[];\r\n IncludeList: string[];\r\n PlaceHolder: string;\r\n //dividers: Divider[];\r\n DocumentPlaceholder: string;\r\n DecimalPlaces: number;\r\n MinValue: number;\r\n MaxValue: number;\r\n Visible: boolean;\r\n flags: number;\r\n}\r\n\r\nexport enum HeadLineLevelValues {\r\n First,\r\n Second,\r\n Section\r\n}\r\n\r\nexport enum QuestionType {\r\n DATA_FIELD,\r\n ALTERNATIVE_TEXT,\r\n HEADING,\r\n AUTOLIST,\r\n REPEAT_SPIN\r\n}\r\n\r\nexport enum AutoListType {\r\n Repeat,\r\n API,\r\n PreselectedRepeat,\r\n PreselectedAPI\r\n}\r\n\r\nexport enum DataFieldTypeValues {\r\n Text,\r\n Date,\r\n Number,\r\n Database,\r\n DROPDOWNMULTI\r\n}\r\n\r\nexport enum AnswerTypeValues {\r\n RADIOBTN,\r\n CHKBOX,\r\n DROPDOWN,\r\n DROPDOWNMULTI\r\n}\r\n\r\nexport interface OutputFormat {\r\n id: string;\r\n displayName: string;\r\n language: string;\r\n format: string;\r\n}\r\n\r\n\r\nexport interface IPackage {\r\n xMLVersion: number;\r\n PortalUrl: string;\r\n Version: number;\r\n Name: string;\r\n Id: string;\r\n Templates: ITemplate[];\r\n Questions: IQuestion[];\r\n Automations: IDirEntryAutomation[];\r\n //dividers: Divider[];\r\n //repeats: Repeat[];\r\n //apiservices: apiservice[];\r\n //apiResults: apiresult[];\r\n /*flushData: string[];*/\r\n}\r\n\r\nexport interface IAutoSelection {\r\n QuestionId: string;\r\n AnswerId: string;\r\n}\r\n\r\n\r\nexport interface IWebTemplateSimple {\r\n package: IPackage;\r\n document: IDocument;\r\n directory: IDirEntry;\r\n userId: string;\r\n userEmail: string;\r\n automations: IDirEntryAutomation[];\r\n isClause: boolean;\r\n clauseId: string;\r\n autoSelectedAnswers: IAutoSelection[];\r\n dependencies: { [key: string]: string[]; };\r\n\r\n}\r\n\r\n\r\n\r\nexport interface IDocumentClientData {\r\n key: string;\r\n value: string;\r\n}\r\n\r\n\r\n\r\nexport enum IDocumentActionType {\r\n Generated = 0,\r\n Save = 1,\r\n ExternalSave = 2,\r\n Sendlink = 3\r\n}\r\n\r\n\r\n\r\nexport interface IDocumentAction {\r\n userid: string;\r\n userEmail: string;\r\n actiondate: Date | string;\r\n actiontype: IDocumentActionType;\r\n filelink: IDirectoryFileLink[];\r\n\r\n}\r\n\r\nexport interface IDocumentActionWrapper {\r\n number: number;\r\n userid: string;\r\n userEmail: string;\r\n actiondate: Date | string;\r\n actiontype: IDocumentActionType;\r\n filelink: IDirectoryFileLink[];\r\n\r\n}\r\n\r\nexport interface IQuestionaireDocument {\r\n id: string;\r\n reference: string;\r\n templatename: string;\r\n created: Date | string;\r\n updated: Date | string;\r\n access_link_id: string;\r\n access_link_valid_to: string;\r\n userid: string;\r\n ChangeUserId: string;\r\n client_data: IDocumentClientData[];\r\n user_access: string[];\r\n directory_version: number;\r\n directory_id: string;\r\n PreFillDirEntryId: string;\r\n action: IDocumentAction[];\r\n currentaction: IDocumentActionType;\r\n isUpdated: boolean;\r\n tagEntries: [];\r\n\r\n}\r\nexport interface IAppInsightData {\r\n customer: string;\r\n page: string;\r\n mobile: boolean;\r\n documentID: string[];\r\n\r\n\r\n}\r\n\r\nexport interface ApiParm {\r\n key: string;\r\n value: string;\r\n}\r\nexport interface groupData {\r\n name: string;\r\n AADgroups: IADDGroup[];\r\n key: string;\r\n roles: roleData[];\r\n channelID: string | null;\r\n}\r\nexport interface roleData {\r\n key: string;\r\n name: string;\r\n}\r\n//export class NavgrpWithFilter implements INavLink {\r\n// ariaCurrent?: 'page' | 'step' | 'location' | 'date' | 'time' | 'true';\r\n// ariaLabel?: string;\r\n// automationId?: string;\r\n// collapseAriaLabel?: string;\r\n// disabled?: boolean;\r\n// expandAriaLabel?: string;\r\n// forceAnchor?: boolean;\r\n// icon?: string;\r\n// iconClassName?: string;\r\n// iconProps?: IIconProps;\r\n// isExpanded?: boolean;\r\n// key?: string;\r\n// links?: INavLink[];\r\n// name: string;\r\n// onClick?: (ev?: React.MouseEvent, item?: INavLink) => void;\r\n// target?: string;\r\n// title?: string;\r\n// url: string;\r\n// filterTypes: string[];\r\n\r\n//}\r\n\r\nexport interface IPortalfile {\r\n id: string;\r\n filename: string;\r\n uploadtime: Date;\r\n uploadedby: string;\r\n version: string;\r\n info: string;\r\n components: IPortalfileComponent[];\r\n\r\n}\r\n\r\nexport interface IPortalfileComponent {\r\n name: string;\r\n version: string;\r\n type: string;\r\n}\r\n\r\nexport interface IAdminUsageSettings {\r\n sharedomains: string;\r\n casenumberdomains: string;\r\n emailMultipleFiles: EmailMethod;\r\n whitelistedextensions: string;\r\n publicQuestionnaireReturnLink: string;\r\n autodeletegrps: string;\r\n releaseNotesEnabled: boolean;\r\n linkingBitsEnabled: boolean;\r\n emailSizeLimit: number;\r\n \r\n}\r\nexport interface IAdminAAD {\r\n office365domains: string;\r\n enableExternalGrps: number;\r\n deletedAutoCreateUsers: IAutoCreateUser[];\r\n}\r\n\r\nexport interface IadminSecuritySettings {\r\n complexitypassword: number;\r\n minlengthpassword: number;\r\n expirationpassword: number;\r\n noinvalidattempts: number;\r\n historyexpiration: number;\r\n downloadexpiration: number;\r\n sharelinksexpiration: number;\r\n timeoutScreen: number;\r\n mfa: number;\r\n autoupdatedrafter: boolean;\r\n embeddedDomains: string[];\r\n}\r\n\r\nexport interface IAdminUpdateLoginTextsSettings {\r\n TermsUrl: string;\r\n HelpUrl: string;\r\n loginHeader: string;\r\n loginSubText: string;\r\n passwordHeader: string;\r\n resetPasswordHeader: string;\r\n resetPasswordSubtext: string;\r\n changePasswordHeader: string;\r\n changePasswordSubtext: string;\r\n o365LogoutHeader: string;\r\n o365LogoutSubText: string;\r\n nativeLogoutHeader: string;\r\n nativeLogoutSubText: string;\r\n\r\n}\r\n\r\nexport interface IAdminUpdateFooterStyle {\r\n footer: string;\r\n footer2: string;\r\n fullsizeborder: boolean;\r\n footerbackgroundcolor: string;\r\n\r\n}\r\n\r\nexport interface IAdminUpdateCssSettings {\r\n useCss: boolean;\r\n}\r\n\r\nexport interface IAdminGeneralStyleSettings {\r\n portaltitle: string;\r\n headertitle: string;\r\n logoheight: string;\r\n logoPaddingTop: string;\r\n logoPaddingBottom: string;\r\n //logovposition: string;\r\n small_logo: string;\r\n favicon: string;\r\n\r\n}\r\n\r\nexport interface IAdminUpdateThemeStyleSettings {\r\n\r\n themesettings: string;\r\n headerColor: string;\r\n headerIconColor: string;\r\n headerButtonHoverColor: string;\r\n headerButtonClickColor: string;\r\n slimlogo: string;\r\n slimlogoHeight: string;\r\n\r\n}\r\n\r\nexport interface IAdminUpdateThemeStyleSettingsV2020 {\r\n\r\n loginLogoPath: string;\r\n loginLogoPathDark: string;\r\n loginLogoHeight: string;\r\n loginLogoTopMargin: string;\r\n headerLogoPath: string;\r\n headerLogoPathDark: string;\r\n headerLogoHeight: string;\r\n headerLogoTopMargin: string;\r\n headerHeight: string;\r\n headerBottomPadding: string;\r\n\r\n}\r\n\r\n\r\ninterface apirequestheaders {\r\n header: string;\r\n value: string;\r\n}\r\n\r\nexport enum DMSProvider {\r\n notSelected = -1,\r\n iManage = 0\r\n}\r\n\r\nexport interface IDMSintegration {\r\n id: string;\r\n enabled: boolean;\r\n name: string;\r\n provider: DMSProvider;\r\n properties: keyValue[];\r\n domains: string[];\r\n buttonText: string;\r\n}\r\n\r\ninterface IUrlhook {\r\n id: string;\r\n type: number;\r\n enabled: boolean;\r\n name: string;\r\n eventhook: number;\r\n method: number;\r\n url: string;\r\n headers: apirequestheaders[];\r\n email: string;\r\n datasets: number[];\r\n scope: string[];\r\n\r\n}\r\n\r\nexport interface IAuthProvider {\r\n id: string;\r\n name: string;\r\n ValidDomains: string;\r\n OpenIDConfig: string;\r\n OAuthConfig: string;\r\n\r\n}\r\n\r\nexport interface IGenerateReport {\r\n type: string;\r\n scope: string;\r\n timeZone: number;\r\n itemization: string;\r\n fromdate: Date;\r\n todate: Date;\r\n\r\n}\r\n\r\n\r\nexport interface IApiHook {\r\n id: string,\r\n issystem: boolean,\r\n enabled: boolean,\r\n name: string,\r\n apidefinition: IApiService,\r\n Updated: Date,\r\n UpdatedBy: string,\r\n GroupsWithAccess: string[],\r\n UsersWithAccess: string[]\r\n\r\n}\r\n\r\nexport interface IApiService {\r\n id: string,\r\n name: string,\r\n requestinfo: IApiRequestInfo,\r\n endpoints: IApiEndpoint[]\r\n\r\n}\r\n\r\nexport interface IApiRequestInfo {\r\n serviceurl: string,\r\n secret: string,\r\n timeout: number\r\n}\r\n\r\nexport interface IApiEndpoint {\r\n id: string,\r\n name: string,\r\n endpoint: string,\r\n apiendpointtype: apiEndpointType,\r\n inputparameters: IApiParameter[],\r\n sampleurl: string,\r\n nextendpoint: string,\r\n nextendpointdatavalue: string,\r\n selectorfields: string\r\n}\r\n\r\nexport interface IApiParameter {\r\n name: string,\r\n required: boolean,\r\n description: string,\r\n schema: IApiParameterSchema\r\n}\r\n\r\nexport interface IApiParameterSchema {\r\n type: apiSchemeType,\r\n minimum: number,\r\n maximum: number\r\n}\r\n\r\nexport enum apiSchemeType {\r\n _integer = 0,\r\n _string = 1,\r\n _decimal = 2,\r\n _date = 3\r\n}\r\n\r\nexport enum apiEndpointType {\r\n selector = 0,\r\n datarequest = 1\r\n}\r\n\r\n\r\nexport interface ISubscriptionData {\r\n\r\n id: string,\r\n type: number,\r\n hostUrl: string,\r\n localUrl: string,\r\n workSpaceID: string,\r\n token: string,\r\n hashcode: number\r\n\r\n}\r\n\r\nexport interface IPortalFilesInfo {\r\n files: iPortalfile[];\r\n pfstoragename: string;\r\n}\r\n\r\nexport interface iPortalfile {\r\n id: string;\r\n filename: string;\r\n uploadtime: Date;\r\n uploadedby: string;\r\n version: string;\r\n info: string;\r\n}\r\n\r\nexport interface ISaveMailTemplate {\r\n id: string;\r\n name: string;\r\n htmlbody: string;\r\n subject: string;\r\n}\r\n\r\nexport interface ICreateUser {\r\n userEmails: string[];\r\n groups: string[];\r\n sendInvite: boolean;\r\n}\r\n\r\ninterface IPermissionGroups {\r\n id: string,\r\n name: string;\r\n}\r\n\r\nexport interface IUpdateFolderGroupData {\r\n folderids: string[];\r\n groups: IPermissionGroups[];\r\n}\r\n\r\n//Workspace styling\r\nexport interface IWorkspaceStyleConfig {\r\n id: string;\r\n type: string;\r\n workspaceId: string;\r\n\r\n updatedBy: string;\r\n updated: Date;\r\n\r\n hasChanges: boolean;\r\n\r\n headerConfig: IWorkspaceHeaderConfig | undefined;\r\n level1Config: IWorkspaceBodyConfig;\r\n level2Config: IWorkspaceBodyConfig | undefined;\r\n documentConfig: IWorkspaceBodyConfig | undefined;\r\n\r\n removeCardIcons: boolean;\r\n removeTemplateIcons: boolean;\r\n showDateModified: boolean;\r\n}\r\n\r\nexport interface IWorkspaceHeaderConfig {\r\n imageUrl: string;\r\n header: string;\r\n subHeader: string;\r\n layoutType: WorkspaceLayoutType;\r\n enabled: boolean;\r\n}\r\n\r\nexport interface IWorkspaceBodyConfig {\r\n presentationType: WorkspacePresentationType;\r\n cardSize: WorkspaceCardSize;\r\n cardType: WorkspaceCardType;\r\n}\r\nexport enum WorkspaceCardType {\r\n TextOnly = 0,\r\n PictureOnly = 1,\r\n TextPicture = 2,\r\n}\r\nexport enum WorkspacePresentationType {\r\n default = 0,\r\n icons = 1,\r\n cards = 2\r\n}\r\nexport enum WorkspaceCardSize {\r\n small = 0,\r\n medium = 1,\r\n large = 2,\r\n}\r\nexport enum WorkspaceLayoutType {\r\n Default = 0,\r\n PictureText = 1,\r\n TextOnly = 2,\r\n}\r\n\r\nexport interface IWorkSpaceShimmerInformation {\r\n presentationType: WorkspacePresentationType;\r\n cardSize: WorkspaceCardSize;\r\n hasHeader: boolean;\r\n headerHasPicture: boolean;\r\n}\r\n\r\nexport interface IMainState {\r\n activeTab: string;\r\n openItem: string;\r\n}\r\n\r\nexport interface IPortalPageLinks {\r\n id: string;\r\n type: string;\r\n header: string;\r\n page: LinksPageTypes;\r\n links: ILinksPageGroup[];\r\n\r\n}\r\n\r\nexport interface ILinksPageGroup {\r\n displayName: string;\r\n url: string;\r\n}\r\n\r\nexport enum LinksPageTypes {\r\n Main = 0,\r\n Questionnaire = 1\r\n}\r\n\r\nexport interface IIndexSearch {\r\n value: IIndexDocument[];\r\n searchnextPageParameters: ISearchNextPageParameters;\r\n}\r\n\r\nexport interface IIndexDocument {\r\n searchscrore: number;\r\n templateid: string;\r\n fileid: string;\r\n filename: string;\r\n}\r\n\r\nexport interface ISearchNextPageParameters {\r\n skip: number;\r\n}\r\n\r\nexport interface ILanguage {\r\n type: \"Language\";\r\n id: string;\r\n name: string;\r\n isoAlpha2: string;\r\n isDefault: boolean;\r\n isEnabled: boolean;\r\n translations: ITranslation[];\r\n}\r\n\r\nexport interface ITranslation {\r\n key: string;\r\n text: string;\r\n}","import { IAdminUsageSettings, IPortalConfig, IAdminAAD, IadminSecuritySettings, IPortalFilesInfo, ISubscriptionData, IAdminUpdateLoginTextsSettings, IUpdateUserAddinSettingsData, IAdminUpdateFooterStyle, IUrlhook, IAuthProvider, IAdminGeneralStyleSettings, IAdminUpdateThemeStyleSettings, IAdminUpdateCssSettings, PortalRoles, IDirEntry, IGenerateReport, ISaveMailTemplate, IPortalfile, IApiService, ITrigger, ISystemTag, IDMSintegration, IAdminUpdateThemeStyleSettingsV2020, IColorConfiguration, sqlDbInfo, FlowType, ILanguage, IPolicy, ApiResponse } from '../../components/ddentities';\r\nimport { IUserProps } from '../../components/entitiesAPI';\r\nimport { IApiHook, IFlows, IWorkspaceStyleConfig, IPortalPageLinks } from \"../../components/ddentities\";\r\nimport { getBaseUrl } from './baseFunctions';\r\n\r\nexport const GetPortalConfig = (UserObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/GetPortalConfig`;\r\n\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n\r\n});\r\n\r\nexport const GetSystemTags = (UserObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/GetSystemTags`;\r\n\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n\r\n});\r\n\r\n\r\nexport const GetSqlInfo = (UserObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/GetCustomerSqlInfo`;\r\n\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n\r\n});\r\n\r\n\r\n\r\nexport const ResetReportUserPassword = (UserObj: IUserProps, password: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/ResetReportUserPassword`;\r\n\r\n fetch(Endpoint, {\r\n method: 'PUT',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n body: JSON.stringify(password)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n\r\n});\r\n\r\n\r\nexport const SetNoDataFieldsInSQl = (UserObj: IUserProps, enabled: boolean) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/SetNoDataFieldsInSQl?Enabled=${(enabled)}`;\r\n\r\n fetch(Endpoint, {\r\n method: 'PUT',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n\r\n});\r\n\r\n\r\nexport const ShowReportUserPassword = (UserObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/ShowReportUserPassword`;\r\n\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n\r\n});\r\nexport const GenerateNewSQLPassword = (UserObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/GenerateNewSQLPassword`;\r\n\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n\r\n});\r\n\r\nexport const updateSystemTags = (UserObj: IUserProps, tags: ISystemTag[]) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/UpdateSystemTags`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n body: JSON.stringify(tags)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error)\r\n });\r\n\r\n });\r\n});\r\n\r\n\r\nexport const updateUsageSettings = (UserObj: IUserProps, settings: IAdminUsageSettings) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/UpdateUsageSettings`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n body: JSON.stringify(settings)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const updateAzureDomain = (UserObj: IUserProps, settings: IAdminAAD) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/UpdateAADSettings`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n body: JSON.stringify(settings)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n});\r\n\r\n\r\n\r\nexport const updateAdminSecurity = (UserObj: IUserProps, settings: IadminSecuritySettings) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/UpdateSecuritySettings`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n body: JSON.stringify(settings)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n});\r\n\r\n\r\nexport const updateAdminLoginTexts = (UserObj: IUserProps, settings: IAdminUpdateLoginTextsSettings) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/UpdateLoginTextsSettings`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n body: JSON.stringify(settings)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n});\r\n\r\n\r\n\r\n\r\nexport const UpdateFooterStyleSettings = (UserObj: IUserProps, settings: IAdminUpdateFooterStyle) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/UpdateFooterStyleSettings`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n body: JSON.stringify(settings)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n});\r\n\r\n\r\n\r\nexport const UpdateGeneralStyleSettings = (UserObj: IUserProps, settings: IAdminGeneralStyleSettings) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/UpdateGeneralStyleSettings`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n body: JSON.stringify(settings)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const UpdateCustomCSSSettings = (UserObj: IUserProps, settings: IAdminUpdateCssSettings) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/UpdateCustomCSSSettings`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n body: JSON.stringify(settings)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const UploadToBlob = (UserObj: IUserProps, formData: FormData) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Upload/UploadFileToBlob`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n /* 'Content-Type': 'multipart/form-data',*/\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n body: formData\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const UpdateThemeStyleSettings = (UserObj: IUserProps, settings: IAdminUpdateThemeStyleSettings) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/UpdateThemeStyleSettings`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n body: JSON.stringify(settings)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const UpdateThemeStyleSettingsV2020 = (UserObj: IUserProps, settings: IAdminUpdateThemeStyleSettingsV2020) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/UpdateThemeStyleSettingsV2020`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n body: JSON.stringify(settings)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const UpdateColorSettingsV2020 = (UserObj: IUserProps, settings: IColorConfiguration) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/UpdateColorSettingsV2020`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n body: JSON.stringify(settings)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n});\r\n\r\n\r\nexport const SaveUrlWebhook = (UserObj: IUserProps, urlHook: IUrlhook) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/SaveUrlWebhook`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n body: JSON.stringify(urlHook)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const SaveDMSIntegration = (UserObj: IUserProps, dms: IDMSintegration) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/SaveDMSIntegration`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n body: JSON.stringify(dms)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n});\r\n\r\n\r\n\r\n\r\nexport const DeleteUrlWebhooks = (UserObj: IUserProps, urlHook: IUrlhook[]) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/DeleteUrlWebhooks`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n body: JSON.stringify(urlHook)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n});\r\nexport const DeleteDMSIntegration = (UserObj: IUserProps, dms: IDMSintegration[]) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/DeleteDMSIntegration`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n body: JSON.stringify(dms)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n});\r\n\r\n\r\n\r\nexport const GetUrlHooks = (userObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/GetUrlHooks`;\r\n\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n\r\n});\r\n\r\nexport const GetDMSIntegrations = (userObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/GetDMSintegrations`;\r\n\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n\r\n});\r\n\r\nexport const GetIsPublicSiteEnabled = (userObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/FileManager/GetPublicSiteEnabled`;\r\n\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n\r\n});\r\n\r\n\r\n\r\nexport const SaveAuthProvider = (UserObj: IUserProps, authProvider: IAuthProvider) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/SaveAuthProvider`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n body: JSON.stringify(authProvider)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n var items: IAuthProvider[] = [];\r\n for (let i = 0; i < result.length; i++) {\r\n items.push({ id: result[i].id, name: result[i].Name, OpenIDConfig: result[i].OpenIDConfig, OAuthConfig: result[i].OAuthConfig, ValidDomains: result[i].ValidDomains });\r\n }\r\n resolve(items);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const DeleteAuthProviders = (UserObj: IUserProps, urlHook: IAuthProvider[]) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/DeleteAuthProvider`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': UserObj.requestToken,\r\n 'X-AUTH-USERID': UserObj.userid\r\n },\r\n body: JSON.stringify(urlHook)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n var items: IAuthProvider[] = [];\r\n for (let i = 0; i < result.length; i++) {\r\n items.push({ id: result[i].id, name: result[i].Name, OpenIDConfig: result[i].OpenIDConfig, OAuthConfig: result[i].OAuthConfig, ValidDomains: result[i].ValidDomains });\r\n }\r\n resolve(items);\r\n\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const GetAuthProviders = (userObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/GetAuthProviders`;\r\n\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n var items: IAuthProvider[] = [];\r\n for (let i = 0; i < result.length; i++) {\r\n items.push({ id: result[i].id, name: result[i].Name, OpenIDConfig: result[i].OpenIDConfig, OAuthConfig: result[i].OAuthConfig, ValidDomains: result[i].ValidDomains });\r\n }\r\n resolve(items);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n\r\n});\r\n\r\nexport const AddSystemRole = (userObj: IUserProps, rolename: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/AddNewRole`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(rolename)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n\r\n});\r\nexport const DeleteSystemRole = (userObj: IUserProps, roleid: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/DeleteRole`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(roleid)\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n else {\r\n resolve(false);\r\n }\r\n })\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n\r\n});\r\n\r\nexport const UpdateSystemRoles = (userObj: IUserProps, role: PortalRoles) => new Promise((resolve) => {\r\n\r\n try {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/UpdateRoles`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify([role])\r\n }).then(response => response.json())\r\n .catch(error => {\r\n throw new Error(error);\r\n })\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n throw new Error(error);\r\n\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n\r\n } catch (e) {\r\n throw new Error(e);\r\n }\r\n\r\n});\r\n\r\n\r\nexport const GetApiHooks = (userObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/GetApiHooks`;\r\n\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n});\r\nexport const ValidateApiHook = (userObj: IUserProps, apihookService: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/ValidateApiHook`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'text/plain',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }, body: apihookService\r\n\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n\r\n response.json().then((result) => {\r\n resolve(result);\r\n });\r\n }\r\n else {\r\n resolve(\"incomplete JSON structure\");\r\n }\r\n\r\n }).catch(error => {\r\n\r\n });\r\n\r\n });\r\n});\r\nexport const SaveApiHook = (userObj: IUserProps, apihook: IApiHook) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/SaveApiHook`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }, body: JSON.stringify(apihook)\r\n })\r\n .then(response => {\r\n\r\n response.json().then((result) => {\r\n resolve(result);\r\n });\r\n\r\n\r\n\r\n }).catch(error => {\r\n\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const DeleteApiHooks = (userObj: IUserProps, apihooks: IApiHook[]) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/DeleteApiHooks`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }, body: JSON.stringify(apihooks)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const GenerateReport = (userObj: IUserProps, reportData: IGenerateReport) => new Promise((resolve) => {\r\n\r\n var parsedReportData;\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Report/GenerateReport`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(reportData)\r\n })\r\n .then(result => {\r\n\r\n resolve(true);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n\r\n});\r\n\r\nexport const GetWorkspaces = (userObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Directory/GetWorkspaces`;\r\n\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n\r\n});\r\n\r\nexport const GetSubscriptions = (userObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Subscription/GetSubScriptions`;\r\n\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n\r\n});\r\n\r\nexport const SaveSubscription = (userObj: IUserProps, Subscription: ISubscriptionData) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Subscription/SaveSubScription`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(Subscription)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const DeleteSubscriptions = (userObj: IUserProps, Subscriptions: ISubscriptionData[]) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Subscription/DeleteSubScriptions`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(Subscriptions)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const UpdateUserAddinSettings = (userObj: IUserProps, settings: IUpdateUserAddinSettingsData) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/UpdateUserAddinSettings`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(settings)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n});\r\n\r\n\r\n\r\nexport const GetPortalFilesInformation = (userObj: IUserProps, info: string[]) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/GetSystemFilesInformation`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(info)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const SaveMailTemplate = (userObj: IUserProps, mail: ISaveMailTemplate) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/SaveMailTemplate`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(mail)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const SavePortalStrings = (userObj: IUserProps, mail: ISaveMailTemplate) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/SavePortalStrings`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(mail)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const GetMailTemplate = (userObj: IUserProps, id: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/GetMailTemplate?templateId=${(id)}`;\r\n\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n\r\n});\r\n\r\nexport const GetCustomerCss = (userObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/GetCustomerCss`;\r\n\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n\r\n});\r\n\r\nexport const UploadCustomerCss = (userObj: IUserProps, css: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Config/UploadCustomerCss`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(css)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const CreateFlow = (userObj: IUserProps, name: string, type: FlowType = FlowType.Flow) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Flow/CreateFlow?Name=${(name)}&type=${type}`;\r\n\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const UpdateFlow = (userObj: IUserProps, flow: IFlows) => new Promise((resolve) => {\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + \"api/Flow/UpdateFlow\";\r\n\r\n fetch(Endpoint, {\r\n method: \"PUT\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(flow)\r\n })\r\n .then(result => {\r\n resolve(true);\r\n }).catch(error => {\r\n console.error('error', error);\r\n });\r\n });\r\n});\r\n\r\nexport const getFlows = (userObj: IUserProps, flowType: FlowType = FlowType.Flow) => new Promise(resolve => {\r\n getBaseUrl().then(BaseUrl => {\r\n fetch(`${BaseUrl}api/Flow/GetFlows?flowType=${flowType}`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => resolve(result))\r\n .catch(error => console.error('error', error));\r\n });\r\n});\r\n\r\n\r\nexport const getPolicies = (userObj: IUserProps) => new Promise>(resolve => {\r\n getBaseUrl().then(BaseUrl => {\r\n fetch(`${BaseUrl}api/Policy/GetPolicies`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => resolve(result))\r\n .catch(error => console.error('error', error));\r\n });\r\n});\r\n\r\n\r\nexport const AddPolicy = (userObj: IUserProps, policy:IPolicy) => new Promise>(resolve => {\r\n getBaseUrl().then(BaseUrl => {\r\n fetch(`${BaseUrl}api/Policy/AddPolicy`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n },\r\n method: \"POST\",\r\n body: JSON.stringify(policy)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => resolve(result))\r\n .catch(error => console.error('error', error));\r\n });\r\n});\r\n\r\nexport const SavePolicy = (userObj: IUserProps, policy: IPolicy) => new Promise>(resolve => {\r\n getBaseUrl().then(BaseUrl => {\r\n fetch(`${BaseUrl}api/Policy/SavePolicy`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n },\r\n method: \"PUT\",\r\n body: JSON.stringify(policy)\r\n\r\n })\r\n .then(response => response.json())\r\n .then(result => resolve(result))\r\n .catch(error => console.error('error', error));\r\n });\r\n});\r\n\r\nexport const deletePolicy = (userObj: IUserProps, id:string) => new Promise>(resolve => {\r\n getBaseUrl().then(BaseUrl => {\r\n fetch(`${BaseUrl}api/Policy/DeletePolicy?id=${(id)}`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n },\r\n method: \"DELETE\"\r\n })\r\n .then(response => response.json())\r\n .then(result => resolve(result))\r\n .catch(error => console.error('error', error));\r\n });\r\n});\r\n\r\n\r\n\r\nexport const getPowerAutomateToken = (userObj: IUserProps) => new Promise(resolve => {\r\n getBaseUrl().then(BaseUrl => {\r\n fetch(`${BaseUrl}api/Flow/GetPowerAutomateToken`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => resolve(result))\r\n .catch(error => console.error('error', error));\r\n });\r\n});\r\n\r\nexport const getFlow = (userObj: IUserProps, id: string) => new Promise(resolve => {\r\n getBaseUrl().then(BaseUrl => {\r\n fetch(`${BaseUrl}api/Flow/GetFlow?id=${id}`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => resolve(result))\r\n .catch(error => console.error('error', error));\r\n });\r\n});\r\n\r\nexport const RenameFlow = (userObj: IUserProps, flowId: string, name: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Flow/RenameFlow?FlowId=${(flowId)}&Name=${(name)}`;\r\n\r\n fetch(Endpoint, {\r\n method: \"PUT\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n\r\n resolve(result);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const DeleteFlow = (userObj: IUserProps, flowId: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Flow/DeleteFlow?FlowId=${(flowId)}`;\r\n\r\n fetch(Endpoint, {\r\n method: \"DELETE\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(result => {\r\n\r\n resolve(true);\r\n\r\n\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n});\r\n\r\nexport const DownLoadSystemFileFromBlob = (userObj: IUserProps, fileName: string) => new Promise<{ resultName: string, blob: Blob; }>((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Download/DownLoadSystemFileFromBlob?filename=${(fileName)}`;\r\n\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n })\r\n .then(response => {\r\n response.headers.forEach(console.log);\r\n var header = response.headers.get(\"content-disposition\");\r\n var parts = header.split(\";\");\r\n var filename = parts[1].split('=')[1].split(\"\\\"\").join(\"\");\r\n // create a clone of the response\r\n const clone = response.clone();\r\n\r\n\r\n return Promise.all([filename, clone.blob()]);\r\n }).then(([filename, blobData]) => {\r\n\r\n resolve({ resultName: filename, blob: blobData });\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n\r\n });\r\n\r\n});\r\n\r\nexport const GetSystemFile = (userObj: IUserProps, key: string) => new Promise/**/<{ resultName: string, blob: Blob; }>((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Download/GetSystemFile?key=${(key)}`;\r\n\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n mode: \"cors\",\r\n headers: {\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n })\r\n .then(response => {\r\n response.headers.forEach(console.log);\r\n var header = response.headers.get(\"content-disposition\");\r\n var parts = header.split(\";\");\r\n var filename = parts[1].split('=')[1].split(\"\\\"\").join(\"\");\r\n // create a clone of the response\r\n const clone = response.clone();\r\n\r\n\r\n return Promise.all([filename, clone.blob()]);\r\n }).then(([filename, blobData]) => {\r\n\r\n resolve({ resultName: filename, blob: blobData });\r\n })\r\n\r\n // Create an object URL for the response\r\n //.then((response) => response.blob())\r\n //.then((blob) => resolve(blob))\r\n .catch(error => {\r\n console.error('error', error);\r\n\r\n });\r\n\r\n\r\n });\r\n\r\n});\r\n\r\n\r\n\r\n//Workspace styling\r\n\r\nexport const GetCreateWorkspaceStyleDraft = (userObj: IUserProps, workSpaceId: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Workspace/GetCreateDraft?workSpaceId=${(workSpaceId)}`;\r\n\r\n fetch(Endpoint, {\r\n method: \"PUT\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n resolve(result);\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n });\r\n\r\n});\r\n\r\nexport const SaveWorkspaceStyleDraft = (userObj: IUserProps, styleDraft: IWorkspaceStyleConfig) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Workspace/SaveStyleDraft`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(styleDraft)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n resolve(result);\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n });\r\n\r\n});\r\n\r\nexport const PublishWorkspaceStyle = (userObj: IUserProps, workSpaceId: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Workspace/PublishDraft?workSpaceId=${(workSpaceId)}`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n resolve(result);\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n });\r\n\r\n});\r\n\r\nexport const DiscardWorkspaceStyleDraft = (userObj: IUserProps, workSpaceId: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Workspace/DiscardDraft?workSpaceId=${(workSpaceId)}`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n resolve(result);\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n });\r\n\r\n});\r\n\r\nexport const UpdateWorkspaceReleaseTriggers = (userObj: IUserProps, workspaceId: string, triggers: string[]) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Workspace/UpdateWorkspaceReleaseTriggers?workspaceId=${(workspaceId)}`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(triggers)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n resolve(result);\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n });\r\n\r\n});\r\n\r\nexport const GetPortalLinks = (userObj: IUserProps) => new Promise((resolve, reject) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/PortalLinks/GetLinks`;\r\n\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => {\r\n if (response.status === 401) {\r\n // Handle 401 Unauthorized response\r\n // For example, redirect to login or show a message\r\n reject('Unauthorized access. Please login again.');\r\n } else if (!response.ok) {\r\n // Handle other non-successful responses\r\n reject(`Server returned ${response.status}: ${response.statusText}`);\r\n } else {\r\n // Response is ok, proceed to parse JSON\r\n return response.json();\r\n }\r\n })\r\n .then(result => {\r\n if (result) {\r\n resolve(result);\r\n }\r\n }).catch(error => {\r\n console.error('error', error);\r\n reject(error);\r\n });\r\n });\r\n\r\n});\r\n\r\nexport const CreatePortalLinks = (userObj: IUserProps, item: IPortalPageLinks) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/PortalLinks/Create`;\r\n\r\n fetch(Endpoint, {\r\n method: \"PUT\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(item)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n resolve(result);\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n });\r\n\r\n});\r\n\r\nexport const SavePortalLinks = (userObj: IUserProps, item: IPortalPageLinks) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/PortalLinks/Save`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(item)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n resolve(result);\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n });\r\n\r\n});\r\n\r\nexport const GetSystemLanguages = (userObj: IUserProps) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Language/GetSystemLanguages`;\r\n\r\n fetch(Endpoint, {\r\n method: \"GET\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n resolve(result);\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n });\r\n\r\n});\r\n\r\nexport const DeleteSystemLanguages = (userObj: IUserProps, languageId: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Language/DeleteSystemLanguage?id=${languageId}`;\r\n\r\n fetch(Endpoint, {\r\n method: \"DELETE\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n //.then(response => response.json())\r\n .then(result => {\r\n resolve(true);\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n });\r\n\r\n});\r\n\r\nexport const SaveSystemLanguages = (userObj: IUserProps, languages: ILanguage[]) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Language/SaveSystemLanguages`;\r\n\r\n fetch(Endpoint, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n },\r\n body: JSON.stringify(languages)\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n resolve(result);\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n });\r\n\r\n});\r\nexport const isLocalOrDevHost = (): boolean => {\r\n const host = window.location.host;\r\n return host.startsWith('localhost') || host.startsWith('v2020.dev');\r\n};\r\n\r\n\r\nexport const CreateLanguage = (userObj: IUserProps, name: string) => new Promise((resolve) => {\r\n\r\n getBaseUrl().then(BaseUrl => {\r\n let Endpoint = BaseUrl + `api/Language/CreateSystemLanguage?name=${name}`;\r\n\r\n fetch(Endpoint, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': userObj.requestToken,\r\n 'X-AUTH-USERID': userObj.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n resolve(result);\r\n }).catch(error => {\r\n\r\n console.error('error', error);\r\n\r\n });\r\n });\r\n\r\n});\r\n","/*!\n * Compressor.js v1.2.1\n * https://fengyuanchen.github.io/compressorjs\n *\n * Copyright 2018-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2023-02-28T14:09:41.732Z\n */\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nvar canvasToBlob = {exports: {}};\n\n/*\n * JavaScript Canvas to Blob\n * https://github.com/blueimp/JavaScript-Canvas-to-Blob\n *\n * Copyright 2012, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on stackoverflow user Stoive's code snippet:\n * http://stackoverflow.com/q/4998908\n */\n(function (module) {\n if (typeof window === 'undefined') {\n return;\n }\n (function (window) {\n\n var CanvasPrototype = window.HTMLCanvasElement && window.HTMLCanvasElement.prototype;\n var hasBlobConstructor = window.Blob && function () {\n try {\n return Boolean(new Blob());\n } catch (e) {\n return false;\n }\n }();\n var hasArrayBufferViewSupport = hasBlobConstructor && window.Uint8Array && function () {\n try {\n return new Blob([new Uint8Array(100)]).size === 100;\n } catch (e) {\n return false;\n }\n }();\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;\n var dataURIPattern = /^data:((.*?)(;charset=.*?)?)(;base64)?,/;\n var dataURLtoBlob = (hasBlobConstructor || BlobBuilder) && window.atob && window.ArrayBuffer && window.Uint8Array && function (dataURI) {\n var matches, mediaType, isBase64, dataString, byteString, arrayBuffer, intArray, i, bb;\n // Parse the dataURI components as per RFC 2397\n matches = dataURI.match(dataURIPattern);\n if (!matches) {\n throw new Error('invalid data URI');\n }\n // Default to text/plain;charset=US-ASCII\n mediaType = matches[2] ? matches[1] : 'text/plain' + (matches[3] || ';charset=US-ASCII');\n isBase64 = !!matches[4];\n dataString = dataURI.slice(matches[0].length);\n if (isBase64) {\n // Convert base64 to raw binary data held in a string:\n byteString = atob(dataString);\n } else {\n // Convert base64/URLEncoded data component to raw binary:\n byteString = decodeURIComponent(dataString);\n }\n // Write the bytes of the string to an ArrayBuffer:\n arrayBuffer = new ArrayBuffer(byteString.length);\n intArray = new Uint8Array(arrayBuffer);\n for (i = 0; i < byteString.length; i += 1) {\n intArray[i] = byteString.charCodeAt(i);\n }\n // Write the ArrayBuffer (or ArrayBufferView) to a blob:\n if (hasBlobConstructor) {\n return new Blob([hasArrayBufferViewSupport ? intArray : arrayBuffer], {\n type: mediaType\n });\n }\n bb = new BlobBuilder();\n bb.append(arrayBuffer);\n return bb.getBlob(mediaType);\n };\n if (window.HTMLCanvasElement && !CanvasPrototype.toBlob) {\n if (CanvasPrototype.mozGetAsFile) {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this;\n setTimeout(function () {\n if (quality && CanvasPrototype.toDataURL && dataURLtoBlob) {\n callback(dataURLtoBlob(self.toDataURL(type, quality)));\n } else {\n callback(self.mozGetAsFile('blob', type));\n }\n });\n };\n } else if (CanvasPrototype.toDataURL && dataURLtoBlob) {\n if (CanvasPrototype.msToBlob) {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this;\n setTimeout(function () {\n if ((type && type !== 'image/png' || quality) && CanvasPrototype.toDataURL && dataURLtoBlob) {\n callback(dataURLtoBlob(self.toDataURL(type, quality)));\n } else {\n callback(self.msToBlob(type));\n }\n });\n };\n } else {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this;\n setTimeout(function () {\n callback(dataURLtoBlob(self.toDataURL(type, quality)));\n });\n };\n }\n }\n }\n if (module.exports) {\n module.exports = dataURLtoBlob;\n } else {\n window.dataURLtoBlob = dataURLtoBlob;\n }\n })(window);\n})(canvasToBlob);\nvar toBlob = canvasToBlob.exports;\n\nvar isBlob = function isBlob(value) {\n if (typeof Blob === 'undefined') {\n return false;\n }\n return value instanceof Blob || Object.prototype.toString.call(value) === '[object Blob]';\n};\n\nvar DEFAULTS = {\n /**\n * Indicates if output the original image instead of the compressed one\n * when the size of the compressed image is greater than the original one's\n * @type {boolean}\n */\n strict: true,\n /**\n * Indicates if read the image's Exif Orientation information,\n * and then rotate or flip the image automatically.\n * @type {boolean}\n */\n checkOrientation: true,\n /**\n * Indicates if retain the image's Exif information after compressed.\n * @type {boolean}\n */\n retainExif: false,\n /**\n * The max width of the output image.\n * @type {number}\n */\n maxWidth: Infinity,\n /**\n * The max height of the output image.\n * @type {number}\n */\n maxHeight: Infinity,\n /**\n * The min width of the output image.\n * @type {number}\n */\n minWidth: 0,\n /**\n * The min height of the output image.\n * @type {number}\n */\n minHeight: 0,\n /**\n * The width of the output image.\n * If not specified, the natural width of the source image will be used.\n * @type {number}\n */\n width: undefined,\n /**\n * The height of the output image.\n * If not specified, the natural height of the source image will be used.\n * @type {number}\n */\n height: undefined,\n /**\n * Sets how the size of the image should be resized to the container\n * specified by the `width` and `height` options.\n * @type {string}\n */\n resize: 'none',\n /**\n * The quality of the output image.\n * It must be a number between `0` and `1`,\n * and only available for `image/jpeg` and `image/webp` images.\n * Check out {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob canvas.toBlob}.\n * @type {number}\n */\n quality: 0.8,\n /**\n * The mime type of the output image.\n * By default, the original mime type of the source image file will be used.\n * @type {string}\n */\n mimeType: 'auto',\n /**\n * Files whose file type is included in this list,\n * and whose file size exceeds the `convertSize` value will be converted to JPEGs.\n * @type {string|Array}\n */\n convertTypes: ['image/png'],\n /**\n * PNG files over this size (5 MB by default) will be converted to JPEGs.\n * To disable this, just set the value to `Infinity`.\n * @type {number}\n */\n convertSize: 5000000,\n /**\n * The hook function to execute before draw the image into the canvas for compression.\n * @type {Function}\n * @param {CanvasRenderingContext2D} context - The 2d rendering context of the canvas.\n * @param {HTMLCanvasElement} canvas - The canvas for compression.\n * @example\n * function (context, canvas) {\n * context.fillStyle = '#fff';\n * }\n */\n beforeDraw: null,\n /**\n * The hook function to execute after drew the image into the canvas for compression.\n * @type {Function}\n * @param {CanvasRenderingContext2D} context - The 2d rendering context of the canvas.\n * @param {HTMLCanvasElement} canvas - The canvas for compression.\n * @example\n * function (context, canvas) {\n * context.filter = 'grayscale(100%)';\n * }\n */\n drew: null,\n /**\n * The hook function to execute when success to compress the image.\n * @type {Function}\n * @param {File} file - The compressed image File object.\n * @example\n * function (file) {\n * console.log(file);\n * }\n */\n success: null,\n /**\n * The hook function to execute when fail to compress the image.\n * @type {Function}\n * @param {Error} err - An Error object.\n * @example\n * function (err) {\n * console.log(err.message);\n * }\n */\n error: null\n};\n\nvar IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nvar WINDOW = IS_BROWSER ? window : {};\n\n/**\n * Check if the given value is a positive number.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a positive number, else `false`.\n */\nvar isPositiveNumber = function isPositiveNumber(value) {\n return value > 0 && value < Infinity;\n};\nvar slice = Array.prototype.slice;\n\n/**\n * Convert array-like or iterable object to an array.\n * @param {*} value - The value to convert.\n * @returns {Array} Returns a new array.\n */\nfunction toArray(value) {\n return Array.from ? Array.from(value) : slice.call(value);\n}\nvar REGEXP_IMAGE_TYPE = /^image\\/.+$/;\n\n/**\n * Check if the given value is a mime type of image.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given is a mime type of image, else `false`.\n */\nfunction isImageType(value) {\n return REGEXP_IMAGE_TYPE.test(value);\n}\n\n/**\n * Convert image type to extension.\n * @param {string} value - The image type to convert.\n * @returns {boolean} Returns the image extension.\n */\nfunction imageTypeToExtension(value) {\n var extension = isImageType(value) ? value.substr(6) : '';\n if (extension === 'jpeg') {\n extension = 'jpg';\n }\n return \".\".concat(extension);\n}\nvar fromCharCode = String.fromCharCode;\n\n/**\n * Get string from char code in data view.\n * @param {DataView} dataView - The data view for read.\n * @param {number} start - The start index.\n * @param {number} length - The read length.\n * @returns {string} The read result.\n */\nfunction getStringFromCharCode(dataView, start, length) {\n var str = '';\n var i;\n length += start;\n for (i = start; i < length; i += 1) {\n str += fromCharCode(dataView.getUint8(i));\n }\n return str;\n}\nvar btoa = WINDOW.btoa;\n\n/**\n * Transform array buffer to Data URL.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to transform.\n * @param {string} mimeType - The mime type of the Data URL.\n * @returns {string} The result Data URL.\n */\nfunction arrayBufferToDataURL(arrayBuffer, mimeType) {\n var chunks = [];\n var chunkSize = 8192;\n var uint8 = new Uint8Array(arrayBuffer);\n while (uint8.length > 0) {\n // XXX: Babel's `toConsumableArray` helper will throw error in IE or Safari 9\n // eslint-disable-next-line prefer-spread\n chunks.push(fromCharCode.apply(null, toArray(uint8.subarray(0, chunkSize))));\n uint8 = uint8.subarray(chunkSize);\n }\n return \"data:\".concat(mimeType, \";base64,\").concat(btoa(chunks.join('')));\n}\n\n/**\n * Get orientation value from given array buffer.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to read.\n * @returns {number} The read orientation value.\n */\nfunction resetAndGetOrientation(arrayBuffer) {\n var dataView = new DataView(arrayBuffer);\n var orientation;\n\n // Ignores range error when the image does not have correct Exif information\n try {\n var littleEndian;\n var app1Start;\n var ifdStart;\n\n // Only handle JPEG image (start by 0xFFD8)\n if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {\n var length = dataView.byteLength;\n var offset = 2;\n while (offset + 1 < length) {\n if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {\n app1Start = offset;\n break;\n }\n offset += 1;\n }\n }\n if (app1Start) {\n var exifIDCode = app1Start + 4;\n var tiffOffset = app1Start + 10;\n if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {\n var endianness = dataView.getUint16(tiffOffset);\n littleEndian = endianness === 0x4949;\n if (littleEndian || endianness === 0x4D4D /* bigEndian */) {\n if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) {\n var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian);\n if (firstIFDOffset >= 0x00000008) {\n ifdStart = tiffOffset + firstIFDOffset;\n }\n }\n }\n }\n }\n if (ifdStart) {\n var _length = dataView.getUint16(ifdStart, littleEndian);\n var _offset;\n var i;\n for (i = 0; i < _length; i += 1) {\n _offset = ifdStart + i * 12 + 2;\n if (dataView.getUint16(_offset, littleEndian) === 0x0112 /* Orientation */) {\n // 8 is the offset of the current tag's value\n _offset += 8;\n\n // Get the original orientation value\n orientation = dataView.getUint16(_offset, littleEndian);\n\n // Override the orientation with its default value\n dataView.setUint16(_offset, 1, littleEndian);\n break;\n }\n }\n }\n } catch (e) {\n orientation = 1;\n }\n return orientation;\n}\n\n/**\n * Parse Exif Orientation value.\n * @param {number} orientation - The orientation to parse.\n * @returns {Object} The parsed result.\n */\nfunction parseOrientation(orientation) {\n var rotate = 0;\n var scaleX = 1;\n var scaleY = 1;\n switch (orientation) {\n // Flip horizontal\n case 2:\n scaleX = -1;\n break;\n\n // Rotate left 180°\n case 3:\n rotate = -180;\n break;\n\n // Flip vertical\n case 4:\n scaleY = -1;\n break;\n\n // Flip vertical and rotate right 90°\n case 5:\n rotate = 90;\n scaleY = -1;\n break;\n\n // Rotate right 90°\n case 6:\n rotate = 90;\n break;\n\n // Flip horizontal and rotate right 90°\n case 7:\n rotate = 90;\n scaleX = -1;\n break;\n\n // Rotate left 90°\n case 8:\n rotate = -90;\n break;\n }\n return {\n rotate: rotate,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\nvar REGEXP_DECIMALS = /\\.\\d*(?:0|9){12}\\d*$/;\n\n/**\n * Normalize decimal number.\n * Check out {@link https://0.30000000000000004.com/}\n * @param {number} value - The value to normalize.\n * @param {number} [times=100000000000] - The times for normalizing.\n * @returns {number} Returns the normalized number.\n */\nfunction normalizeDecimalNumber(value) {\n var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000000000;\n return REGEXP_DECIMALS.test(value) ? Math.round(value * times) / times : value;\n}\n\n/**\n * Get the max sizes in a rectangle under the given aspect ratio.\n * @param {Object} data - The original sizes.\n * @param {string} [type='contain'] - The adjust type.\n * @returns {Object} The result sizes.\n */\nfunction getAdjustedSizes(_ref) {\n var aspectRatio = _ref.aspectRatio,\n height = _ref.height,\n width = _ref.width;\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'none';\n var isValidWidth = isPositiveNumber(width);\n var isValidHeight = isPositiveNumber(height);\n if (isValidWidth && isValidHeight) {\n var adjustedWidth = height * aspectRatio;\n if ((type === 'contain' || type === 'none') && adjustedWidth > width || type === 'cover' && adjustedWidth < width) {\n height = width / aspectRatio;\n } else {\n width = height * aspectRatio;\n }\n } else if (isValidWidth) {\n height = width / aspectRatio;\n } else if (isValidHeight) {\n width = height * aspectRatio;\n }\n return {\n width: width,\n height: height\n };\n}\n\n/**\n * Get Exif information from the given array buffer.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to read.\n * @returns {Array} The read Exif information.\n */\nfunction getExif(arrayBuffer) {\n var array = toArray(new Uint8Array(arrayBuffer));\n var length = array.length;\n var segments = [];\n var start = 0;\n while (start + 3 < length) {\n var value = array[start];\n var next = array[start + 1];\n\n // SOS (Start of Scan)\n if (value === 0xFF && next === 0xDA) {\n break;\n }\n\n // SOI (Start of Image)\n if (value === 0xFF && next === 0xD8) {\n start += 2;\n } else {\n var offset = array[start + 2] * 256 + array[start + 3];\n var end = start + offset + 2;\n var segment = array.slice(start, end);\n segments.push(segment);\n start = end;\n }\n }\n return segments.reduce(function (exifArray, current) {\n if (current[0] === 0xFF && current[1] === 0xE1) {\n return exifArray.concat(current);\n }\n return exifArray;\n }, []);\n}\n\n/**\n * Insert Exif information into the given array buffer.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to transform.\n * @param {Array} exifArray - The Exif information to insert.\n * @returns {ArrayBuffer} The transformed array buffer.\n */\nfunction insertExif(arrayBuffer, exifArray) {\n var array = toArray(new Uint8Array(arrayBuffer));\n if (array[2] !== 0xFF || array[3] !== 0xE0) {\n return arrayBuffer;\n }\n var app0Length = array[4] * 256 + array[5];\n var newArrayBuffer = [0xFF, 0xD8].concat(exifArray, array.slice(4 + app0Length));\n return new Uint8Array(newArrayBuffer);\n}\n\nvar ArrayBuffer$1 = WINDOW.ArrayBuffer,\n FileReader = WINDOW.FileReader;\nvar URL = WINDOW.URL || WINDOW.webkitURL;\nvar REGEXP_EXTENSION = /\\.\\w+$/;\nvar AnotherCompressor = WINDOW.Compressor;\n\n/**\n * Creates a new image compressor.\n * @class\n */\nvar Compressor = /*#__PURE__*/function () {\n /**\n * The constructor of Compressor.\n * @param {File|Blob} file - The target image file for compressing.\n * @param {Object} [options] - The options for compressing.\n */\n function Compressor(file, options) {\n _classCallCheck(this, Compressor);\n this.file = file;\n this.exif = [];\n this.image = new Image();\n this.options = _objectSpread2(_objectSpread2({}, DEFAULTS), options);\n this.aborted = false;\n this.result = null;\n this.init();\n }\n _createClass(Compressor, [{\n key: \"init\",\n value: function init() {\n var _this = this;\n var file = this.file,\n options = this.options;\n if (!isBlob(file)) {\n this.fail(new Error('The first argument must be a File or Blob object.'));\n return;\n }\n var mimeType = file.type;\n if (!isImageType(mimeType)) {\n this.fail(new Error('The first argument must be an image File or Blob object.'));\n return;\n }\n if (!URL || !FileReader) {\n this.fail(new Error('The current browser does not support image compression.'));\n return;\n }\n if (!ArrayBuffer$1) {\n options.checkOrientation = false;\n options.retainExif = false;\n }\n var isJPEGImage = mimeType === 'image/jpeg';\n var checkOrientation = isJPEGImage && options.checkOrientation;\n var retainExif = isJPEGImage && options.retainExif;\n if (URL && !checkOrientation && !retainExif) {\n this.load({\n url: URL.createObjectURL(file)\n });\n } else {\n var reader = new FileReader();\n this.reader = reader;\n reader.onload = function (_ref) {\n var target = _ref.target;\n var result = target.result;\n var data = {};\n var orientation = 1;\n if (checkOrientation) {\n // Reset the orientation value to its default value 1\n // as some iOS browsers will render image with its orientation\n orientation = resetAndGetOrientation(result);\n if (orientation > 1) {\n _extends(data, parseOrientation(orientation));\n }\n }\n if (retainExif) {\n _this.exif = getExif(result);\n }\n if (checkOrientation || retainExif) {\n if (!URL\n\n // Generate a new URL with the default orientation value 1.\n || orientation > 1) {\n data.url = arrayBufferToDataURL(result, mimeType);\n } else {\n data.url = URL.createObjectURL(file);\n }\n } else {\n data.url = result;\n }\n _this.load(data);\n };\n reader.onabort = function () {\n _this.fail(new Error('Aborted to read the image with FileReader.'));\n };\n reader.onerror = function () {\n _this.fail(new Error('Failed to read the image with FileReader.'));\n };\n reader.onloadend = function () {\n _this.reader = null;\n };\n if (checkOrientation || retainExif) {\n reader.readAsArrayBuffer(file);\n } else {\n reader.readAsDataURL(file);\n }\n }\n }\n }, {\n key: \"load\",\n value: function load(data) {\n var _this2 = this;\n var file = this.file,\n image = this.image;\n image.onload = function () {\n _this2.draw(_objectSpread2(_objectSpread2({}, data), {}, {\n naturalWidth: image.naturalWidth,\n naturalHeight: image.naturalHeight\n }));\n };\n image.onabort = function () {\n _this2.fail(new Error('Aborted to load the image.'));\n };\n image.onerror = function () {\n _this2.fail(new Error('Failed to load the image.'));\n };\n\n // Match all browsers that use WebKit as the layout engine in iOS devices,\n // such as Safari for iOS, Chrome for iOS, and in-app browsers.\n if (WINDOW.navigator && /(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(WINDOW.navigator.userAgent)) {\n // Fix the `The operation is insecure` error (#57)\n image.crossOrigin = 'anonymous';\n }\n image.alt = file.name;\n image.src = data.url;\n }\n }, {\n key: \"draw\",\n value: function draw(_ref2) {\n var _this3 = this;\n var naturalWidth = _ref2.naturalWidth,\n naturalHeight = _ref2.naturalHeight,\n _ref2$rotate = _ref2.rotate,\n rotate = _ref2$rotate === void 0 ? 0 : _ref2$rotate,\n _ref2$scaleX = _ref2.scaleX,\n scaleX = _ref2$scaleX === void 0 ? 1 : _ref2$scaleX,\n _ref2$scaleY = _ref2.scaleY,\n scaleY = _ref2$scaleY === void 0 ? 1 : _ref2$scaleY;\n var file = this.file,\n image = this.image,\n options = this.options;\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n var is90DegreesRotated = Math.abs(rotate) % 180 === 90;\n var resizable = (options.resize === 'contain' || options.resize === 'cover') && isPositiveNumber(options.width) && isPositiveNumber(options.height);\n var maxWidth = Math.max(options.maxWidth, 0) || Infinity;\n var maxHeight = Math.max(options.maxHeight, 0) || Infinity;\n var minWidth = Math.max(options.minWidth, 0) || 0;\n var minHeight = Math.max(options.minHeight, 0) || 0;\n var aspectRatio = naturalWidth / naturalHeight;\n var width = options.width,\n height = options.height;\n if (is90DegreesRotated) {\n var _ref3 = [maxHeight, maxWidth];\n maxWidth = _ref3[0];\n maxHeight = _ref3[1];\n var _ref4 = [minHeight, minWidth];\n minWidth = _ref4[0];\n minHeight = _ref4[1];\n var _ref5 = [height, width];\n width = _ref5[0];\n height = _ref5[1];\n }\n if (resizable) {\n aspectRatio = width / height;\n }\n var _getAdjustedSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: maxWidth,\n height: maxHeight\n }, 'contain');\n maxWidth = _getAdjustedSizes.width;\n maxHeight = _getAdjustedSizes.height;\n var _getAdjustedSizes2 = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: minWidth,\n height: minHeight\n }, 'cover');\n minWidth = _getAdjustedSizes2.width;\n minHeight = _getAdjustedSizes2.height;\n if (resizable) {\n var _getAdjustedSizes3 = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: width,\n height: height\n }, options.resize);\n width = _getAdjustedSizes3.width;\n height = _getAdjustedSizes3.height;\n } else {\n var _getAdjustedSizes4 = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: width,\n height: height\n });\n var _getAdjustedSizes4$wi = _getAdjustedSizes4.width;\n width = _getAdjustedSizes4$wi === void 0 ? naturalWidth : _getAdjustedSizes4$wi;\n var _getAdjustedSizes4$he = _getAdjustedSizes4.height;\n height = _getAdjustedSizes4$he === void 0 ? naturalHeight : _getAdjustedSizes4$he;\n }\n width = Math.floor(normalizeDecimalNumber(Math.min(Math.max(width, minWidth), maxWidth)));\n height = Math.floor(normalizeDecimalNumber(Math.min(Math.max(height, minHeight), maxHeight)));\n var destX = -width / 2;\n var destY = -height / 2;\n var destWidth = width;\n var destHeight = height;\n var params = [];\n if (resizable) {\n var srcX = 0;\n var srcY = 0;\n var srcWidth = naturalWidth;\n var srcHeight = naturalHeight;\n var _getAdjustedSizes5 = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: naturalWidth,\n height: naturalHeight\n }, {\n contain: 'cover',\n cover: 'contain'\n }[options.resize]);\n srcWidth = _getAdjustedSizes5.width;\n srcHeight = _getAdjustedSizes5.height;\n srcX = (naturalWidth - srcWidth) / 2;\n srcY = (naturalHeight - srcHeight) / 2;\n params.push(srcX, srcY, srcWidth, srcHeight);\n }\n params.push(destX, destY, destWidth, destHeight);\n if (is90DegreesRotated) {\n var _ref6 = [height, width];\n width = _ref6[0];\n height = _ref6[1];\n }\n canvas.width = width;\n canvas.height = height;\n if (!isImageType(options.mimeType)) {\n options.mimeType = file.type;\n }\n var fillStyle = 'transparent';\n\n // Converts PNG files over the `convertSize` to JPEGs.\n if (file.size > options.convertSize && options.convertTypes.indexOf(options.mimeType) >= 0) {\n options.mimeType = 'image/jpeg';\n }\n var isJPEGImage = options.mimeType === 'image/jpeg';\n if (isJPEGImage) {\n fillStyle = '#fff';\n }\n\n // Override the default fill color (#000, black)\n context.fillStyle = fillStyle;\n context.fillRect(0, 0, width, height);\n if (options.beforeDraw) {\n options.beforeDraw.call(this, context, canvas);\n }\n if (this.aborted) {\n return;\n }\n context.save();\n context.translate(width / 2, height / 2);\n context.rotate(rotate * Math.PI / 180);\n context.scale(scaleX, scaleY);\n context.drawImage.apply(context, [image].concat(params));\n context.restore();\n if (options.drew) {\n options.drew.call(this, context, canvas);\n }\n if (this.aborted) {\n return;\n }\n var callback = function callback(blob) {\n if (!_this3.aborted) {\n var done = function done(result) {\n return _this3.done({\n naturalWidth: naturalWidth,\n naturalHeight: naturalHeight,\n result: result\n });\n };\n if (blob && isJPEGImage && options.retainExif && _this3.exif && _this3.exif.length > 0) {\n var next = function next(arrayBuffer) {\n return done(toBlob(arrayBufferToDataURL(insertExif(arrayBuffer, _this3.exif), options.mimeType)));\n };\n if (blob.arrayBuffer) {\n blob.arrayBuffer().then(next).catch(function () {\n _this3.fail(new Error('Failed to read the compressed image with Blob.arrayBuffer().'));\n });\n } else {\n var reader = new FileReader();\n _this3.reader = reader;\n reader.onload = function (_ref7) {\n var target = _ref7.target;\n next(target.result);\n };\n reader.onabort = function () {\n _this3.fail(new Error('Aborted to read the compressed image with FileReader.'));\n };\n reader.onerror = function () {\n _this3.fail(new Error('Failed to read the compressed image with FileReader.'));\n };\n reader.onloadend = function () {\n _this3.reader = null;\n };\n reader.readAsArrayBuffer(blob);\n }\n } else {\n done(blob);\n }\n }\n };\n if (canvas.toBlob) {\n canvas.toBlob(callback, options.mimeType, options.quality);\n } else {\n callback(toBlob(canvas.toDataURL(options.mimeType, options.quality)));\n }\n }\n }, {\n key: \"done\",\n value: function done(_ref8) {\n var naturalWidth = _ref8.naturalWidth,\n naturalHeight = _ref8.naturalHeight,\n result = _ref8.result;\n var file = this.file,\n image = this.image,\n options = this.options;\n if (URL && image.src.indexOf('blob:') === 0) {\n URL.revokeObjectURL(image.src);\n }\n if (result) {\n // Returns original file if the result is greater than it and without size related options\n if (options.strict && !options.retainExif && result.size > file.size && options.mimeType === file.type && !(options.width > naturalWidth || options.height > naturalHeight || options.minWidth > naturalWidth || options.minHeight > naturalHeight || options.maxWidth < naturalWidth || options.maxHeight < naturalHeight)) {\n result = file;\n } else {\n var date = new Date();\n result.lastModified = date.getTime();\n result.lastModifiedDate = date;\n result.name = file.name;\n\n // Convert the extension to match its type\n if (result.name && result.type !== file.type) {\n result.name = result.name.replace(REGEXP_EXTENSION, imageTypeToExtension(result.type));\n }\n }\n } else {\n // Returns original file if the result is null in some cases.\n result = file;\n }\n this.result = result;\n if (options.success) {\n options.success.call(this, result);\n }\n }\n }, {\n key: \"fail\",\n value: function fail(err) {\n var options = this.options;\n if (options.error) {\n options.error.call(this, err);\n } else {\n throw err;\n }\n }\n }, {\n key: \"abort\",\n value: function abort() {\n if (!this.aborted) {\n this.aborted = true;\n if (this.reader) {\n this.reader.abort();\n } else if (!this.image.complete) {\n this.image.onload = null;\n this.image.onabort();\n } else {\n this.fail(new Error('The compression process has been aborted.'));\n }\n }\n }\n\n /**\n * Get the no conflict compressor class.\n * @returns {Compressor} The compressor class.\n */\n }], [{\n key: \"noConflict\",\n value: function noConflict() {\n window.Compressor = AnotherCompressor;\n return Compressor;\n }\n\n /**\n * Change the default options.\n * @param {Object} options - The new default options.\n */\n }, {\n key: \"setDefaults\",\n value: function setDefaults(options) {\n _extends(DEFAULTS, options);\n }\n }]);\n return Compressor;\n}();\n\nexport { Compressor as default };\n","import { IPortalConfig, IDocument, IDirEntry, IuserSession, apiservice, apiendpoint, apirequestparm, IADDGroup } from \"./ddentities\";\r\nimport { mergeStyleSets, loadTheme, ITheme, IPalette, getTheme, createTheme } from \"@fluentui/react\";\r\nimport { getBaseUrl } from '../apiFunctions/baseFunctions/baseFunctions';\r\nimport { GetPortalConfig } from '../apiFunctions/baseFunctions/adminFunctions';\r\nimport { getAuthObject } from '../apiFunctions/authenticateFunctions';\r\nimport Compressor from 'compressorjs';\r\n\r\n\r\n\r\n\r\nexport function getSessionStorageItem(key: string): Promise {\r\n return new Promise((resolve) => {\r\n const value = sessionStorage.getItem(key);\r\n if (value == null) {\r\n getCurrentUser().then(data => {\r\n resolve(JSON.stringify(data));\r\n })\r\n }\r\n resolve(value);\r\n });\r\n}\r\n\r\n\r\nexport function debugLog(message: any, value: any = \"\") {\r\n let debugMode = sessionStorage.getItem(\"debugmode\");\r\n let href = window.location.href;\r\n\r\n if ((debugMode != null && debugMode != undefined) || href.indexOf(\"localhost\") > -1 || href.indexOf(\"sprint.dev\") > -1 || href.indexOf(\"v2020.dev\") > -1)\r\n console.log(message, value);\r\n}\r\n\r\n\r\nexport const callapiservices = (apiservice: apiservice, endpoint: apiendpoint, params: apirequestparm[]) => new Promise((resolve, reject) => {\r\n\r\n debugLog(\"call API...\");\r\n\r\n let FETCH_TIMEOUT = apiservice.requestinfo.timeout;\r\n let didTimeOut = false;\r\n\r\n new Promise(function (noTimeOut, rejectTimeOut) {\r\n const timeout = setTimeout(function () {\r\n didTimeOut = true;\r\n reject(new Error('Request timed out'));\r\n }, FETCH_TIMEOUT);\r\n\r\n\r\n\r\n var fullUrl = new URL(apiservice.requestinfo.serviceurl + endpoint.endpoint) + \"?\";\r\n\r\n for (var i = 0; i < params.length; i++) {\r\n fullUrl += params[i].param + \"=\" + params[i].value + \"&\";\r\n }\r\n\r\n\r\n fetch(fullUrl.toString(), {\r\n method: 'GET',\r\n headers: {\r\n 'Authorization': apiservice.requestinfo.secret,\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json',\r\n\r\n }\r\n\r\n }).then(response => {\r\n response.json().then(data => {\r\n clearTimeout(timeout);\r\n if (!didTimeOut) {\r\n\r\n noTimeOut(data);\r\n }\r\n\r\n });\r\n\r\n }).catch(err => {\r\n if (didTimeOut) return;\r\n reject(err);\r\n\r\n });\r\n\r\n }).then(function (data) {\r\n //success no error\r\n resolve(data);\r\n })\r\n .catch(function (err) {\r\n // Error: response error, request timeout or runtime error\r\n reject(err);\r\n });\r\n\r\n});\r\n\r\n\r\nexport function alphabeticallyAscendingSort(arr: []) {\r\n arr.sort(function (a, b) {\r\n var d, e, f;\r\n function getIntArray(c) {\r\n var array = [];\r\n c = c.toLowerCase();\r\n for (var i = 0; i < c.length; i++) {\r\n if (c.substring(i, 2) == 'aa') {\r\n array.push(300);\r\n i++;\r\n } else {\r\n switch (c.charCodeAt(i)) {\r\n case 229: //å\r\n array.push(299);\r\n break;\r\n case 248: //ø\r\n array.push(298);\r\n break;\r\n case 230: //æ\r\n array.push(297);\r\n break;\r\n default:\r\n array.push(c.charCodeAt(i));\r\n break;\r\n }\r\n }\r\n }\r\n return array;\r\n }\r\n d = getIntArray(a);\r\n e = getIntArray(b);\r\n for (f = 0; f < d.length; f++) {\r\n if (d[f] != e[f]) {\r\n return d[f] - e[f];\r\n }\r\n }\r\n });\r\n}\r\n\r\nexport function GetFileTypeFromEntry(entrytype: number, IsPackage: boolean) {\r\n\r\n if (entrytype === 0) {\r\n\r\n return \"Folder\"\r\n\r\n\r\n }\r\n else if (entrytype === 1 && !IsPackage) {\r\n return \"docx\"\r\n\r\n }\r\n else if (entrytype === 1 && IsPackage) {\r\n return \"package\"\r\n\r\n }\r\n\r\n else if (entrytype === 3) {\r\n return \"pdf\"\r\n\r\n }\r\n else if (entrytype === 10) {\r\n return \"docx\"\r\n\r\n }\r\n\r\n else if (entrytype === 99) {\r\n return 'dummy'\r\n }\r\n\r\n else {\r\n return \"docx\"\r\n\r\n }\r\n}\r\n\r\nexport const getClauseName = (clauses, bindingID) => {\r\n for (let i = 0; i < clauses.length; i++) {\r\n if (clauses[i].id === bindingID) {\r\n return clauses[i].name;\r\n break;\r\n }\r\n }\r\n return \"\";\r\n}\r\n\r\nexport const base64ToBlob = (base64, mimetype, slicesize) => {\r\n if (!window.atob || !window.Uint8Array) {\r\n // The current browser doesn't have the atob function. Cannot continue\r\n return null;\r\n }\r\n mimetype = mimetype || '';\r\n slicesize = slicesize || 512;\r\n var bytechars = atob(base64);\r\n var bytearrays = [];\r\n for (var offset = 0; offset < bytechars.length; offset += slicesize) {\r\n var slice = bytechars.slice(offset, offset + slicesize);\r\n var bytenums = new Array(slice.length);\r\n for (var i = 0; i < slice.length; i++) {\r\n bytenums[i] = slice.charCodeAt(i);\r\n }\r\n var bytearray = new Uint8Array(bytenums);\r\n bytearrays[bytearrays.length] = bytearray;\r\n }\r\n return new Blob(bytearrays, { type: mimetype });\r\n}\r\n\r\n\r\nexport const GetFileIcon = (FileType: string, fileName: string) => {\r\n\r\n\r\n if (FileType === \"dummy\") {\r\n return \"\"\r\n }\r\n\r\n\r\n if (FileType === \"Package\") {\r\n return \"https://static2.sharepointonline.com/files/fabric/assets/document/svg/Package_16x1.svg\"\r\n }\r\n\r\n if (FileType === \"Folder\") {\r\n return \"https://static2.sharepointonline.com/files/fabric/assets/item-types-fluent/20/folder.svg\"\r\n }\r\n else if (FileType === \"pdf\") {\r\n\r\n let re = /(?:\\.([^.]+))?$/;\r\n\r\n let ext: string = re.exec(fileName)[0];\r\n\r\n if (ext !== undefined) {\r\n ext = ext.replace(\".\", \"\");\r\n\r\n let imgtxt = FileTypeIconMap(ext.toLowerCase());\r\n if (imgtxt === \"Page\") {\r\n return imgtxt;\r\n }\r\n\r\n return \"https://static2.sharepointonline.com/files/fabric/assets/item-types-fluent/20/\" + imgtxt + \".svg\";\r\n }\r\n else return \"https://static2.sharepointonline.com/files/fabric/assets/item-types-fluent/20/pdf.svg\"\r\n }\r\n else {\r\n\r\n return \"https://static2.sharepointonline.com/files/fabric/assets/item-types-fluent/20/docx.svg?v6\"\r\n }\r\n}\r\n\r\n\r\nexport const getCurrentUser = () => new Promise((resolve) => {\r\n var d = new Date();\r\n var n = d.getTimezoneOffset();\r\n\r\n fetch('/handlers/services.ashx/?context=getactiveuser&timezone=' + n, {\r\n\r\n credentials: \"same-origin\"\r\n\r\n\r\n }).then(response => {\r\n response.json().then(data => {\r\n sessionStorage.setItem(\"user\", JSON.stringify(data));\r\n (window as any).userResult = data;\r\n resolve(data);\r\n });\r\n\r\n }).catch(err => debugLog('e', err));\r\n\r\n})\r\n\r\nexport const getHelpPortalUrl = () => new Promise((resolve) => {\r\n\r\n\r\n getAuthObject().then((authResult) => {\r\n getBaseUrl().then((BaseUrl) => {\r\n fetch(BaseUrl + `api/PortalSupport/GetHelpPortalUrl`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-AUTH-TOKEN': authResult.requestToken,\r\n 'X-AUTH-USERID': authResult.userid,\r\n /*'X-CHANNELID': null*/\r\n }\r\n\r\n\r\n }).then(response => {\r\n response.json().then(data => {\r\n\r\n resolve(data);\r\n });\r\n\r\n }).catch(err => debugLog('e', err));\r\n });\r\n });\r\n})\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nexport function getClientID(): string {\r\n if (window.location.host.toLowerCase().indexOf(\".dev.\")) return \"5186f80f-4cc1-4c5c-8a2b-c4ba50e4bbf2\";\r\n if (window.location.host.toLowerCase().indexOf(\".qa.\")) return \"728a89e9-46b0-4663-a765-b17d732696cc\";\r\n return \"e6aa2806-7a01-4452-a34a-33cce1c1652e\";\r\n}\r\n\r\n\r\nexport function getUserObject(): IuserSession {\r\n if (sessionStorage.getItem(\"user\") == null || sessionStorage.getItem(\"user\").length < 50) {\r\n try {\r\n return (window as any).userResult as IuserSession;\r\n } catch (e) {\r\n return null;\r\n }\r\n\r\n }\r\n else {\r\n return JSON.parse(sessionStorage.getItem(\"user\")) as IuserSession;\r\n }\r\n}\r\n\r\nexport function getConfigObject(): IPortalConfig {\r\n\r\n let _config = sessionStorage.getItem(\"config\");\r\n\r\n if (_config == null || _config.toString().length < 50) {\r\n\r\n try {\r\n return (window as any).configResult as IPortalConfig;\r\n } catch (e) {\r\n return null;\r\n }\r\n\r\n }\r\n else {\r\n\r\n return JSON.parse(sessionStorage.getItem(\"config\")) as IPortalConfig;\r\n }\r\n}\r\n\r\nexport const GetCurrentConfig = () => new Promise((resolve) => {\r\n\r\n let portalConfig: IPortalConfig;\r\n\r\n if (sessionStorage.getItem(\"config\") === null || sessionStorage.getItem(\"config\").length < 50) {\r\n\r\n\r\n getAuthObject().then((authResult) => {\r\n GetPortalConfig(authResult).then((configResult) => {\r\n\r\n sessionStorage.setItem(\"config\", JSON.stringify(configResult));\r\n (window as any).configResult = configResult;\r\n resolve(configResult);\r\n\r\n });\r\n\r\n });\r\n\r\n }\r\n else {\r\n\r\n resolve(JSON.parse(sessionStorage.getItem(\"config\")));\r\n\r\n }\r\n\r\n\r\n})\r\n\r\n\r\n\r\nexport function newGuid(): string {\r\n return Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);\r\n}\r\n\r\nexport const classNamesMessageBar = mergeStyleSets(\r\n {\r\n MessageIcon: {\r\n\r\n },\r\n\r\n MessageBarContainer: {\r\n background: `${theme()?.palette.black}`,\r\n width: '100%',\r\n position: 'fixed',\r\n top: '0',\r\n zIndex: 101,\r\n textAlign: 'center'\r\n },\r\n MessageBarContainerFrontPage: {\r\n background: `${theme()?.palette.black}`,\r\n width: '100%',\r\n position: 'fixed',\r\n top: '0',\r\n left: '0',\r\n zIndex: 101,\r\n textAlign: 'center'\r\n },\r\n MessageBarContainerInline: {\r\n background: `${theme()?.palette.black}`,\r\n width: '100%',\r\n position: 'absolute',\r\n zIndex: 101,\r\n textAlign: 'center'\r\n }\r\n });\r\n\r\nexport const classNamesQuestionnaire = mergeStyleSets(\r\n {\r\n Hidden: {\r\n display: 'none'\r\n },\r\n fillThemePrimary: {\r\n fill: `${theme()?.palette.themePrimary}`,\r\n stroke: 'transparent'\r\n },\r\n noselect: {\r\n userSelect: 'none'\r\n },\r\n Questionnaire: {\r\n color: `${theme()?.palette.neutralPrimary}`,\r\n //marginTop: '138px',\r\n padding: '0px 0px 40px 0px'\r\n },\r\n QuestionnaireWithPreview: {\r\n padding: '78px 0px 18px 0px',\r\n minHeight: \"calc(100vh - 96px)\"\r\n },\r\n QuestionHeads: {\r\n width: 'calc(100% - 828px)',\r\n display: 'inline-block'\r\n },\r\n PaperReceiverMoveLeft: {\r\n transform: 'translateX(-822px)',\r\n transition: 'transform .3s ease-in-out'\r\n },\r\n //below class has been given 20px top margin\r\n PaperReceiver: {\r\n overflowY: 'scroll',\r\n overflowX: 'scroll',\r\n left: '100%',\r\n transition: 'transform .3s ease-in-out',\r\n /* border: '15px solid #696969',*/\r\n backgroundColor: '#f2f2f0',\r\n marginTop: '20px',\r\n width: '820px',\r\n height: 'calc(100vh - 93px)',\r\n position: 'fixed',\r\n top: '58px',\r\n right: '0px',\r\n //padding: '5px',\r\n //paddingTop: '20px',\r\n //paddingBottom : '20px'\r\n },\r\n //below class has been given 20px top margin\r\n noselectPaperReceiver: {\r\n overflowY: 'scroll',\r\n left: '100%',\r\n transition: 'transform .3s ease-in-out',\r\n /* border: '15px solid #696969',*/\r\n backgroundColor: '#f2f2f0',\r\n marginTop: '20px',\r\n width: '820px',\r\n height: 'calc(100vh - 93px)',\r\n position: 'fixed',\r\n top: '58px',\r\n right: '0px',\r\n /*padding: '35px',*/\r\n userSelect: 'none'\r\n },\r\n //below class has been given 2px top margin\r\n PaperReceiverFull: {\r\n height: 'calc(100vh - 144px)',\r\n overflowY: 'scroll',\r\n marginTop: '64px',\r\n /* border: '15px solid #696969',*/\r\n backgroundColor: '#f2f2f0',\r\n top: '94px',\r\n right: '0px',\r\n padding: '35px'\r\n },\r\n\r\n Header: {\r\n width: '100%',\r\n backgroundColor: `${theme()?.palette.white}`,\r\n zIndex: 100,\r\n position: 'fixed',\r\n top: '0px'\r\n },\r\n container: {\r\n width: '1170px'\r\n },\r\n SubHeader: {\r\n width: '100%',\r\n backgroundColor: `${theme()?.palette.white}`,\r\n zIndex: 100,\r\n transition: 'all .3s ease-in-out'\r\n },\r\n SubHeaderFixed: {\r\n width: '100%',\r\n backgroundColor: `${theme()?.palette.white}`,\r\n zIndex: 100,\r\n transition: 'all .3s ease-in-out',\r\n position: 'fixed',\r\n top: '0px',\r\n paddingTop: \"10px\"\r\n },\r\n CommandBar: {\r\n width: 'calc(100% - 828px)',\r\n display: 'inline-block'\r\n },\r\n CommandBarTemplateName: {\r\n\r\n },\r\n PreviewCommandBar: {\r\n display: 'inline-block',\r\n float: 'right',\r\n right: '0px'\r\n },\r\n PreviewCommandBarFull: {\r\n top: '0px',\r\n width: '100%',\r\n backgroundColor: `${theme()?.palette.white}`,\r\n position: 'fixed',\r\n zIndex: 100,\r\n right: '0px'\r\n },\r\n QuestionHeadPanel: {\r\n backgroundColor: `${theme()?.palette.white}`,\r\n margin: '0px 0px 18px 0px',\r\n padding: '24px 0px 0px 0px'\r\n },\r\n QuestionPanel: {\r\n lineHeight: '1.6em',\r\n margin: '0px 0px 0px 25px',\r\n padding: '0px 0px 30px 0px',\r\n //overflow: 'hidden',\r\n },\r\n QuestionPanelPrefill: {\r\n lineHeight: '1.6em',\r\n margin: '0px 0px 0px 25px',\r\n padding: '0px 0px 30px 0px',\r\n overflow: 'hidden',\r\n },\r\n QuestionPanelIncomplete: {\r\n lineHeight: '1.6em',\r\n margin: '0px 0px 0px 0px',\r\n borderLeft: '10px solid #A4262C',\r\n padding: '0px 0px 30px 15px',\r\n //overflow: 'hidden',\r\n },\r\n QuestionPanelHeadingFirstLevel: {\r\n width: '70%',\r\n float: 'left',\r\n lineHeight: '1.25em',\r\n margin: '0px 0px 26px 25px',\r\n fontSize: '20px',\r\n fontWeight: '400',\r\n textTransform: 'uppercase',\r\n selectors:\r\n {\r\n '@media(max-width: 1024px)': {\r\n width: '84%'\r\n\r\n }\r\n }\r\n },\r\n QuestionPanelHeadingSecondLevel: {\r\n width: '45%',\r\n float: 'left',\r\n lineHeight: '1.45em',\r\n margin: '0px 0px 29px 25px',\r\n fontSize: '17px',\r\n fontWeight: '600',\r\n textTransform: 'uppercase',\r\n selectors:\r\n {\r\n '@media(max-width: 1024px)': {\r\n width: '84%'\r\n\r\n }\r\n }\r\n },\r\n QuestionPanelWithSeperator: {\r\n margin: '2px 0px 0px 0px',\r\n padding: '5px 0px 0px 25px'\r\n },\r\n QuestionLabel: {\r\n lineHeight: '1.6em',\r\n marginTop: '0px'\r\n },\r\n Heading: {\r\n marginTop: '16px',\r\n textTransform: 'uppercase'\r\n },\r\n QuestionPartLeft: {\r\n width: '45%',\r\n float: 'left',\r\n transition: 'margin-left .4s ease-in-out',\r\n selectors: {\r\n '@media(max-width: 1024px)': {\r\n width: '84%'\r\n },\r\n\r\n }\r\n },\r\n QuestionPartLeftWithPreview: {\r\n width: '50%',\r\n float: 'left',\r\n transition: 'all .4s ease-in-out',\r\n selectors: {\r\n '@media(max-width: 1650px)': {\r\n width: '84%'\r\n },\r\n\r\n }\r\n },\r\n Helptext: {\r\n height: '0px',\r\n marginLeft: '6%',\r\n width: '43%',\r\n float: 'left',\r\n transform: 'translateX(1024px)',\r\n transition: 'all .4s ease-in-out',\r\n outline: \"none\",\r\n selectors: {\r\n '@media(max-width: 1024px)': {\r\n width: '84%',\r\n paddingTop: '20px'\r\n }\r\n }\r\n },\r\n HelptextWithPreview: {\r\n height: '0px',\r\n marginLeft: '3%',\r\n width: '43%',\r\n float: 'left',\r\n paddingTop: '20px',\r\n transform: 'translateX(1024px)',\r\n transition: 'all .4s ease-in-out',\r\n selectors: {\r\n '@media(max-width: 1650px)': {\r\n width: '84%'\r\n },\r\n\r\n }\r\n },\r\n HelptextIcon: {\r\n float: 'right',\r\n marginRight: '2%'\r\n },\r\n HelpTextCloseIcon: {\r\n float: 'right',\r\n transform: 'translateX(100%)'\r\n },\r\n BtnHelpText: {\r\n\r\n transform: 'translateY(3px)',\r\n selectors: {\r\n //'i': {\r\n //\t'paddingBottom': '9px'\r\n //},\r\n '&:hover': {\r\n backgroundColor: 'transparent'\r\n }\r\n }\r\n },\r\n BtnHelpTextAnswers: {\r\n\r\n transform: 'translateY(3px)',\r\n selectors: {\r\n //'i': {\r\n //\t'paddingBottom': '9px'\r\n //},\r\n '&:hover': {\r\n backgroundColor: 'transparent'\r\n }\r\n }\r\n },\r\n Answers: {\r\n margin: '20px 0px 8px 0px'\r\n },\r\n AnswerChoiceGroup: {\r\n margin: '4px 0px 0px 0px',\r\n lineHeight: \"1.4em\"\r\n },\r\n AnswerChoiceOption: {\r\n margin: '4px 0px 0px 0px'\r\n },\r\n AnswerChoiceField: {\r\n paddingLeft: \"24px\",\r\n width: \"100%\",\r\n selectors: {\r\n 'span': {\r\n position: 'relative',\r\n top: '-1px'\r\n }\r\n }\r\n },\r\n\r\n AnswerDropDown: {\r\n margin: '20px 0px 0px 0px'\r\n },\r\n AnswerCheckBox: {\r\n margin: '10px 0px 0px 0px',\r\n lineHeight: \"1.4em !important\"\r\n\r\n },\r\n AnswerDataField: {\r\n margin: '16px 0px 0px 0px'\r\n },\r\n Seperator: {\r\n height: '2px',\r\n margin: '0px 0px 24px 0px',\r\n background: '#f2f2f0'\r\n },\r\n DivCaseNumberSection: {\r\n paddingTop: '24px',\r\n paddingBottom: '24px',\r\n backgroundColor: `${theme()?.palette.white}`,\r\n margin: '0px 0px 18px 0px'\r\n },\r\n TxtCaseNumber: {\r\n margin: '19px 0px 0px 0px'\r\n },\r\n DivRetrieveDocuments: {\r\n padding: '25px',\r\n backgroundColor: `${theme()?.palette.white}`,\r\n textAlign: 'right'\r\n },\r\n LblRetrieveDocument: {\r\n verticalAlign: 'sub'\r\n },\r\n BtnDownload: {\r\n margin: '0px 0px 0px 50px'\r\n },\r\n BtnEmail: {\r\n margin: '0px 0px 0px 10px'\r\n },\r\n MsgBox: {\r\n maxWidth: '1000px'\r\n },\r\n questionnaireTitleColor: {\r\n color: `${theme()?.palette.neutralPrimary}`\r\n },\r\n conditionCheckBox: {\r\n float: 'left',\r\n marginRight: \"20px\"\r\n },\r\n conditionsPanel: {\r\n backgroundColor: `${theme()?.palette.white}`,\r\n paddingLeft: \"25px\",\r\n paddingRight: \"25px\"\r\n },\r\n repeatUIPrefillEditor: {\r\n width: \"20px\",\r\n display: \"inline-block\",\r\n backgroundColor: \"#d2d2d2\",\r\n height: \"100%\",\r\n position: \"absolute\"\r\n },\r\n innerRepeatUIPrefillEditor: {\r\n position: \"absolute\",\r\n bottom: \"4px\",\r\n transform: \"rotate(270deg)\",\r\n left: \"0px\",\r\n right: \"0px\"\r\n },\r\n innerSubRepeatUIPrefillEditor: {\r\n position: \"absolute\",\r\n bottom: \"4px\",\r\n transform: \"rotate(270deg)\"\r\n },\r\n CollaborationCalloutTitle:\r\n {\r\n padding: \"0px 12px\",\r\n fontSize: \"12px\",\r\n color: `${theme()?.palette.themePrimary}`,\r\n lineHeight: \"40px\",\r\n borderBottom: `1px solid ${theme()?.palette.neutralLight}`\r\n },\r\n CollaborationCalloutContainer: {\r\n overflow: \"hidden auto\",\r\n maxHeight: \"300px\",\r\n font: \"inherit\",\r\n verticalAlign: \"baseline\",\r\n textDecoration: \"none\"\r\n\r\n },\r\n CollaborationCalloutItemContainer: {\r\n width: \"100%\",\r\n padding: \"4px 12px\"\r\n }\r\n\r\n\r\n }\r\n);\r\n\r\nexport const classNames = mergeStyleSets(\r\n {\r\n rootParent:\r\n {\r\n selectors: {\r\n \"a\": {\r\n textDecoration: \"none\",\r\n color: `${theme()?.palette.themePrimary}`,\r\n selectors: {\r\n \":hover\": {\r\n\r\n textDecoration: \"underline\",\r\n color: `${theme()?.palette.themeDarker}`\r\n\r\n\r\n }\r\n }\r\n }\r\n\r\n }\r\n },\r\n hidden: {\r\n display: \"none\"\r\n },\r\n\r\n accesssavebtn: {\r\n paddingRight: 8,\r\n paddingBottom: 24,\r\n paddingTop: 24,\r\n backgroundColor: `${theme()?.palette.white}`\r\n\r\n },\r\n colorNeutralSecondary: {\r\n color: `${theme()?.palette.neutralSecondary}`\r\n },\r\n\r\n folder: {\r\n backgroundColor: `${theme()?.palette.white}`,\r\n selectors: {\r\n '.ms-Nav-linkText': {\r\n color: `${theme()?.palette.neutralPrimary}`\r\n },\r\n '.ms-Nav-chevron': {\r\n color: `${theme()?.palette.neutralPrimary}`\r\n },\r\n '.ms-Icon': {\r\n color: `${theme()?.palette.neutralPrimary} !important`\r\n }\r\n }\r\n },\r\n header: {\r\n backgroundColor: `${theme()?.palette.white}`\r\n },\r\n fixedHeader: {\r\n width: '100%',\r\n zIndex: 100,\r\n transition: 'all .3s ease-in-out',\r\n position: 'fixed',\r\n top: '0px',\r\n height: '0px'\r\n }\r\n ,\r\n headercontainer: {\r\n\r\n backgroundColor: `${theme()?.palette.white}`,\r\n\r\n },\r\n headercontainerMoveUp: {\r\n marginTop: '-160px',\r\n transition: 'all .3s ease-in-out'\r\n },\r\n headercontainerMoveDown: {\r\n transition: 'all .3s ease-in-out'\r\n },\r\n PageTopheader: {\r\n backgroundColor: theme()?.palette.white,\r\n width: '100%'\r\n\r\n },\r\n userPaneButton:\r\n {\r\n border: `1px solid ${theme()?.palette.themePrimary} !important`\r\n },\r\n subLinkNeutralPrimary: {\r\n\r\n selectors: {\r\n '.ms-Link': {\r\n color: `${theme()?.palette.neutralPrimary} !important`,\r\n }\r\n }\r\n },\r\n themeFont: {\r\n fontFamily: GetCSSvalueFromElement(document.getElementsByTagName(\"body\")[0], 'font-family')\r\n },\r\n defaultBackGround: {\r\n backgroundColor: theme()?.palette.white\r\n },\r\n linkTransformer: {\r\n selectors: {\r\n 'a': {\r\n color: `${theme()?.palette.themePrimary}`,\r\n textDecoration: \"none\",\r\n selectors: {\r\n \":hover\": {\r\n textDecoration: \"underline\",\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n }\r\n },\r\n\r\n deleteboxinfo: {\r\n fontSize: '14px'\r\n\r\n },\r\n helpCell: {\r\n width: '50%'\r\n },\r\n TopMenu: {\r\n selectors: {\r\n '.ms-Button-icon': {\r\n color: `${theme()?.palette.neutralTertiary} !important`\r\n }\r\n }\r\n },\r\n radioButtonIE: {\r\n selectors: {\r\n 'label': {\r\n selectors: {\r\n ':hover::after': {\r\n backgroundColor: `${theme()?.palette.white}`\r\n }\r\n },\r\n }\r\n }\r\n },\r\n accessPaneWrapHead: {\r\n backgroundColor: `${theme()?.palette.neutralLighterAlt}`\r\n\r\n },\r\n customPanel:\r\n {\r\n position: \"absolute\",\r\n top: 0,\r\n right: 0,\r\n height: \"100vh\",\r\n width: \"400px\",\r\n zIndex: 1001,\r\n boxShadow: \"rgba(0, 0, 0, 0.22) 0px 25.6px 57.6px 0px, rgba(0, 0, 0, 0.18) 0px 4.8px 14.4px 0px\",\r\n backgroundColor: \"#FFF\",\r\n paddingLeft: \"10px\",\r\n paddingRight: \"10px\"\r\n },\r\n filler44px: {\r\n height: '44px'\r\n\r\n\r\n },\r\n\r\n filler5px: {\r\n height: '5px',\r\n\r\n\r\n },\r\n TestUIMedJens: {\r\n fontSize: \"14px\"\r\n },\r\n columnPadding: {\r\n paddingRight: \"8px\",\r\n paddingLeft: \"8px\"\r\n },\r\n wrapperAccessPane: {\r\n height: 'calc(100vh - 185px)',\r\n position: 'relative',\r\n maxHeight: 'inherit',\r\n backgroundColor: `${theme()?.palette.neutralLighterAlt}`,\r\n marginRight: '3px'\r\n\r\n\r\n },\r\n additionalInfo: {\r\n height: '32px',\r\n position: 'relative',\r\n zIndex: 100,\r\n backgroundColor: `${theme()?.palette.white}`,\r\n right: 0,\r\n top: 'calc(100vh - 217px)',\r\n overflow: 'hidden',\r\n }\r\n ,\r\n innerwrapperAccessPane: {\r\n maxHeight: '256px',\r\n marginRight: \"-10px\",\r\n position: 'relative',\r\n //backgroundColor: `${theme()?.palette.neutralLighterAlt}`,\r\n },\r\n\r\n containerHelp: {\r\n maxWidth: '1108px',\r\n display: 'flex',\r\n flexFlow: 'column nowrap',\r\n alignItems: 'stretch'\r\n },\r\n\r\n workspaceDropdownContainer: {\r\n selectors: {\r\n \".ms-Dropdown-title\": {\r\n borderStyle: \"none none solid none\",\r\n color: `${theme()?.palette.neutralPrimary}`\r\n },\r\n \".ms-Dropdown\": {\r\n selectors: {\r\n \"&::after\": {\r\n content: \"\",\r\n borderStyle: \"none none solid none\",\r\n borderColor: `${theme()?.palette.neutralPrimary}`,\r\n }\r\n }\r\n }\r\n }\r\n\r\n },\r\n workspaceCallout: {\r\n color: `${theme()?.palette.neutralPrimary} !important`,\r\n selectors: {\r\n '.ms-Dropdown-item': {\r\n color: `${theme()?.palette.neutralPrimary} !important`\r\n }\r\n }\r\n },\r\n\r\n modalHelp: {\r\n\r\n },\r\n\r\n padding5px: {\r\n padding: 5\r\n },\r\n wrapperSearchMain: {\r\n\r\n\r\n height: 'calc(100vh - 206px)',\r\n position: 'relative',\r\n maxHeight: 'inherit'\r\n\r\n },\r\n filemanagerPersonaContainer:\r\n {\r\n width: \"250px\",\r\n boxShadow: \"0 1.6px 3.6px 0 rgba(0,0,0,0.132), 0 0.3px 0.9px 0 rgba(0,0,0,0.108)\",\r\n borderRadius: \"10px\",\r\n padding: \"10px\",\r\n transition: \"0.2s all\",\r\n cursor: \"pointer\",\r\n selectors: {\r\n \":active\": {\r\n transform: \"scale(0.98)\"\r\n }\r\n }\r\n },\r\n fabricLinkLookalike: {\r\n color: `${theme()?.palette.themePrimary}`,\r\n selectors: {\r\n ':Hover': {\r\n color: `${theme()?.palette.themeDarker}`,\r\n textDecoration: \"underline\"\r\n }\r\n }\r\n },\r\n wrapper: {\r\n height: 'calc(100vh - 185px)',\r\n position: 'relative',\r\n maxHeight: 'inherit'\r\n },\r\n wrapperSearch: {\r\n height: 'calc(100vh - 185px)',\r\n position: 'relative',\r\n maxHeight: 'inherit'\r\n },\r\n wrapperAccessNotShown: {\r\n height: 'calc(100vh - 115px)',\r\n position: 'relative',\r\n maxHeight: 'inherit',\r\n backgroundColor: \"white\"\r\n },\r\n wrapperNav: {\r\n height: 'calc(100vh - 90px)',\r\n position: 'relative',\r\n maxHeight: 'inherit',\r\n selectors: {\r\n \".ms-DetailsRow\": {\r\n backgroundColor: `${theme()?.palette.neutralLighter}`,\r\n cursor: \"pointer\",\r\n selectors: {\r\n \":hover\": {\r\n backgroundColor: `${theme()?.palette.neutralLight}`\r\n }\r\n }\r\n },\r\n \".ms-DetailsRow-cell\": {\r\n padding: \"0px\"\r\n }\r\n }\r\n\r\n },\r\n wrapperNavAdmin: {\r\n height: 'calc(100vh - 46px)',\r\n position: 'relative',\r\n maxHeight: 'inherit',\r\n selectors: {\r\n \".ms-DetailsRow\": {\r\n backgroundColor: `${theme()?.palette.neutralLighter}`,\r\n cursor: \"pointer\",\r\n selectors: {\r\n \":hover\": {\r\n backgroundColor: `${theme()?.palette.neutralLight}`\r\n }\r\n }\r\n },\r\n \".ms-DetailsRow-cell\": {\r\n padding: \"0px\"\r\n }\r\n }\r\n\r\n },\r\n\r\n wrapperNavTable: {\r\n height: 'calc(100vh - 51px)',\r\n width: \"234px\",\r\n position: 'relative',\r\n maxHeight: 'inherit',\r\n selectors: {\r\n \".ms-DetailsRow\": {\r\n backgroundColor: `${theme()?.palette.neutralLighter}`,\r\n cursor: \"pointer\",\r\n selectors: {\r\n \":hover\": {\r\n backgroundColor: `${theme()?.palette.neutralLight}`\r\n }\r\n }\r\n },\r\n \".ms-DetailsRow-cell\": {\r\n padding: \"0px\"\r\n }\r\n }\r\n\r\n },\r\n adminMenuItemLeftBorder: {\r\n borderLeft: `2px solid ${theme()?.palette.themePrimary}`\r\n },\r\n borderRightNeutralLighter: {\r\n borderRight: `1px solid ${theme()?.palette.neutralLighterAlt}`\r\n\r\n },\r\n cmdSticky: {\r\n position: 'sticky',\r\n top: 0\r\n\r\n\r\n },\r\n accessPane: {\r\n width: '100%',\r\n backgroundColor: `${theme()?.palette.neutralLighterAlt}`\r\n\r\n },\r\n accessPaneSearchBox: {\r\n padding: 8,\r\n border: 'none'\r\n },\r\n userPaneNavLink: {\r\n border: \"none !important\",\r\n fontSize: \"14px\",\r\n fontWeight: 400,\r\n color: `${theme()?.palette.neutralPrimary}`,\r\n paddingLeft: \"13px\",\r\n\r\n },\r\n filemanagerSearchResultCheckCell: {\r\n marginTop: \"7px !important\"\r\n },\r\n userScreenNavItem: {\r\n /* paddingLeft: \"13px\",*/\r\n selectors: {\r\n \".is-selected\": {\r\n selectors: {\r\n \".ms-Nav-link\": {\r\n backgroundColor: `${theme()?.palette.neutralQuaternaryAlt} !important`\r\n }\r\n }\r\n\r\n }\r\n }\r\n },\r\n backgroundThemeNeutralLighter: {\r\n backgroundColor: `${theme()?.palette.neutralLighter}`\r\n },\r\n topBorderThemeNaturalLighter: {\r\n borderTop: `1px solid ${theme()?.palette.neutralLighter}`\r\n },\r\n bottomBorderThemeNaturalLighter: {\r\n borderBottom: `1px solid ${theme()?.palette.neutralLighter}`\r\n },\r\n bottomBorderThemeNaturalLight: {\r\n borderBottom: `1px solid ${theme()?.palette.neutralLight}`\r\n },\r\n RightBorderThemeNaturalLighter: {\r\n borderRight: `1px solid ${theme()?.palette.neutralLighter}`\r\n },\r\n userPaneTextField:\r\n {\r\n backgroundColor: `${theme()?.palette.neutralLight}`,\r\n height: \"200px\",\r\n maxHeight: \"680px\"\r\n\r\n\r\n\r\n },\r\n userPaneTextFieldGroup: {\r\n selectors: {\r\n '::after': {\r\n border: \"1px solid black !important\"\r\n }\r\n }\r\n },\r\n accessPaneBottomBorder:\r\n {\r\n borderBottom: `1px solid ${theme()?.palette.neutralLighter}`\r\n },\r\n accessPaneTopBorder: {\r\n borderTop: `1px solid ${theme()?.palette.neutralLighter}`\r\n },\r\n mainpageHeaderButton: {\r\n\r\n backgroundColor: `${theme()?.palette.themePrimary}`,\r\n height: \"46px\"\r\n },\r\n mergeFieldsTable:\r\n {\r\n selectors:\r\n {\r\n \"tr\": {\r\n borderTop: `1px solid ${theme()?.palette.neutralLighter}`,\r\n borderBottom: `1px solid ${theme()?.palette.neutralLighter}`\r\n }\r\n }\r\n },\r\n infopaneBreadcrumbs: {\r\n\r\n selectors: {\r\n '.ms-TooltipHost': {\r\n color: `${theme()?.palette.neutralPrimary}`\r\n }\r\n }\r\n },\r\n accessPaneLink:\r\n {\r\n color: `${theme()?.palette.themePrimary}`,\r\n selectors: {\r\n ':hover': {\r\n color: `${theme()?.palette.themeDarker}`,\r\n\r\n }\r\n }\r\n },\r\n accessReportLink: {\r\n color: `${theme()?.palette.themePrimary}`,\r\n textDecoration: \"none\",\r\n selectors: {\r\n ':hover': {\r\n color: `${theme()?.palette.themeDarker}`,\r\n textDecoration: 'underline'\r\n }\r\n }\r\n },\r\n topMenuColor:\r\n {\r\n selectors:\r\n {\r\n '.ms-Button-icon': {\r\n\r\n color: `${theme()?.palette.neutralTertiary} !important`\r\n }\r\n }\r\n },\r\n accessPaneFont: {\r\n color: `${theme()?.palette.neutralPrimary}`,\r\n fontSize: \"14px\"\r\n },\r\n fontSize14AndBlackColor: {\r\n color: `${theme()?.palette.neutralPrimary}`,\r\n fontSize: \"14px\"\r\n },\r\n colorNeutralPrimary: {\r\n color: `${theme()?.palette.neutralPrimary}`,\r\n\r\n },\r\n colorNeutralPrimaryAnd14FontSize: {\r\n color: `${theme()?.palette.neutralPrimary}`,\r\n fontSize: \"14px\"\r\n\r\n },\r\n seperator: {\r\n height: \"1px\",\r\n width: \"100%\",\r\n background: `${theme()?.palette.neutralLighter}`,\r\n },\r\n colorNeutralPrimaryBreadCrumbs:\r\n {\r\n color: `${theme()?.palette.neutralPrimary}`,\r\n selectors: {\r\n '.ms-TooltipHost':\r\n {\r\n color: `${theme()?.palette.neutralPrimary}`\r\n }\r\n }\r\n },\r\n accessPaneLabel: {\r\n paddingTop: \"11px\",\r\n paddingBottom: \"5px\",\r\n paddingLeft: \"8px\",\r\n paddingRight: \"8px\",\r\n backgroundColor: `${theme()?.palette.white}`,\r\n fontSize: '14px'\r\n },\r\n folderInAccessPane: {\r\n width: \"calc(100 % - 16px)\",\r\n float: \"right\"\r\n },\r\n headerFilemanagerDialog:\r\n {\r\n selectors: {\r\n '.ms-Panel-header ': {\r\n marginTop: \"0px\",\r\n paddingLeft: \"20px\"\r\n },\r\n '[data-icon-name=\"Cancel\"]': {\r\n color: `${theme()?.palette.neutralTertiary}`\r\n }\r\n }\r\n\r\n },\r\n colorThemeneutralTertiary: {\r\n color: `${theme()?.palette.blackTranslucent40}`\r\n },\r\n backgroundColorThemeNeutralLighter: {\r\n\r\n backgroundColor: `${theme()?.palette.neutralLighter}`\r\n },\r\n filemanagerLeftpaneItem: {\r\n backgroundColor: `${theme()?.palette.neutralLighter}`,\r\n selectors: {\r\n \":hover\": {\r\n backgroundColor: `${theme()?.palette.neutralLight}`\r\n }\r\n }\r\n },\r\n colorThemePrimary: {\r\n color: `${theme()?.palette.themePrimary}`\r\n },\r\n backgroundColorThemePrimary: {\r\n backgroundColor: `${theme()?.palette.themePrimary}`\r\n },\r\n backgroundColorThemeDarkAlt: {\r\n backgroundColor: `${theme()?.palette.themeDarkAlt}`\r\n },\r\n backgroundColorThemeDark: {\r\n backgroundColor: `${theme()?.palette.themeDark}`\r\n },\r\n backgroundColorThemeDarker: {\r\n backgroundColor: `${theme()?.palette.themeDarker}`\r\n },\r\n colorThemeWhite: {\r\n color: `${theme()?.palette.white} !important`\r\n },\r\n filemanagerDialogFont: {\r\n color: `${theme()?.palette.neutralPrimary}`,\r\n selectors: {\r\n \":focus\": {\r\n color: `${theme()?.palette.neutralPrimary}`\r\n }\r\n }\r\n },\r\n headerContainerThemePrimary:\r\n {\r\n backgroundColor: `${theme()?.palette.themePrimary}`,\r\n paddingLeft: \"17px\"\r\n },\r\n itemCell: {\r\n minHeight: 20,\r\n padding: 8,\r\n display: \"flex\",\r\n backgroundColor: `${theme()?.palette.white}`\r\n },\r\n itemContent: {\r\n marginLeft: 10,\r\n overflow: \"hidden\",\r\n flexGrow: 1,\r\n marginTop: -2\r\n },\r\n searchbox: {\r\n width: '250px',\r\n background: 'transparent',\r\n marginTop: '6px'\r\n\r\n\r\n },\r\n callout: {\r\n maxWidth: 300,\r\n padding: '10px',\r\n fontSize: '10px'\r\n\r\n },\r\n breadCrumFilemanagerDialog: {\r\n marginTop: \"0px\",\r\n marginBottom: \"14px\",\r\n selectors: {\r\n '.ms-TooltipHost': {\r\n fontSize: '14px',\r\n color: \"initial\"\r\n }\r\n }\r\n },\r\n smallBreadCum: {\r\n selectors: {\r\n '.ms-TooltipHost': {\r\n fontSize: '12px'\r\n }\r\n }\r\n\r\n },\r\n myDocumentsLink:\r\n {\r\n color: `${theme()?.palette.neutralPrimary}`,\r\n fontSize: \"14px\",\r\n cursor: 'pointer',\r\n selectors: {\r\n '&:focus': {\r\n color: `${theme()?.palette.neutralPrimary} !important`\r\n },\r\n '&:hover': {\r\n color: `${theme()?.palette.themeDarker} !important`,\r\n textDecoration: 'underline'\r\n },\r\n '&:active': {\r\n color: `${theme()?.palette.themeDarker} !important`,\r\n textDecoration: 'underline'\r\n }\r\n }\r\n },\r\n fillerMyDoc: {\r\n height: '44px',\r\n backgroundColor: `${theme().palette.white}`\r\n },\r\n fileViewLink: {\r\n color: `${theme()?.palette.neutralPrimary}`,\r\n selectors: {\r\n '&:focus': {\r\n color: `${theme()?.palette.neutralPrimary}`\r\n }\r\n }\r\n\r\n },\r\n fileIconHeaderIcon: {\r\n padding: 0,\r\n fontSize: '16px'\r\n },\r\n overflowAuto: {\r\n overflow: 'auto'\r\n },\r\n fileIconCell: {\r\n textAlign: 'center',\r\n selectors: {\r\n '&:before': {\r\n content: '.',\r\n display: 'inline-block',\r\n verticalAlign: 'middle',\r\n height: '100%',\r\n width: '0px',\r\n visibility: 'hidden'\r\n }\r\n }\r\n },\r\n plusSeperateCell: {\r\n paddingLeft: \"0px !important\",\r\n paddingRight: \"0px !important\"\r\n },\r\n fileIconImg: {\r\n verticalAlign: 'middle',\r\n maxHeight: '16px',\r\n maxWidth: '16px'\r\n },\r\n controlWrapper: {\r\n display: 'flex',\r\n flexWrap: 'wrap'\r\n },\r\n exampleToggle: {\r\n display: 'inline-block',\r\n marginBottom: '10px',\r\n marginRight: '30px'\r\n },\r\n selectionDetails: {\r\n marginBottom: '20px'\r\n },\r\n selectHover: {\r\n selectors: {\r\n ':hover': {\r\n cursor: 'pointer'\r\n }\r\n }\r\n }\r\n });\r\nexport const controlStyles = {\r\n root: {\r\n margin: '0 30px 20px 0',\r\n maxWidth: '300px'\r\n }\r\n};\r\nexport const classNamesTagEditor = mergeStyleSets({\r\n\r\n tagText: {\r\n border: \"none\",\r\n },\r\n tagTextSelected: {\r\n\r\n border: \"1px solid #0078D4\",\r\n borderColor: \"#0078D4 !important\"\r\n\r\n },\r\n tagPickerContainer: {\r\n /* width: \"500px\",*/\r\n\r\n },\r\n\r\n\r\n\r\n tagDocumentName: {\r\n fontWeight: 700,\r\n paddingBottom: \"23px\",\r\n width: \"33vw\",\r\n display: \"inline-block\",\r\n '&:hover': {\r\n color: 'blue'\r\n }\r\n },\r\n\r\n tagIndexStyling: {\r\n fontWeight: 600,\r\n\r\n\r\n },\r\n tagQuestionIndex: {\r\n fontWeight: 700,\r\n display: \"flex\",\r\n justifyContent: \"flex-start\",\r\n lineHeight: \"20px\",\r\n\r\n },\r\n tagAnswerIndex: {\r\n paddingLeft: \"20px\",\r\n fontWeight: 700,\r\n lineHeight: \"20px\",\r\n\r\n },\r\n\r\n tagQuestions: {\r\n //textOverflow: \"ellipsis\",\r\n //overFlow: \"hidden\",\r\n },\r\n\r\n fetchedText: {\r\n display: \"inlineBlock\"\r\n },\r\n});\r\n\r\n\r\nexport const classNamesTagContainer = mergeStyleSets({\r\n\r\n tagText: {\r\n fontFamily: \"inherit\",\r\n lineHeight: \"20px\",\r\n\r\n style: \"normal\",\r\n overflow: 'hidden !important',\r\n textOverflow: 'ellipsis !important',\r\n whiteSpace: \"nowrap !important\",\r\n\r\n\r\n },\r\n\r\n tagIndexQuestion: {\r\n fontWeight: 600,\r\n style: \"normal\",\r\n lineHeight: \"20px\",\r\n marginRight: \"14px\",\r\n\r\n },\r\n tagIndexAnswer: {\r\n fontWeight: 600,\r\n style: \"normal\",\r\n lineHeight: \"20px\",\r\n\r\n margin: \"0px 20px 0px 28px\",\r\n\r\n\r\n },\r\n headerText: {\r\n\r\n fontWeight: 700,\r\n paddingLeft: \"4px\",\r\n\r\n },\r\n});\r\n\r\n\r\n\r\n\r\nexport function parseJsonDate(jsonDate, withTime) {\r\n\r\n var fullDate = new Date(parseInt(jsonDate.substr(6)));\r\n\r\n\r\n if (!withTime) {\r\n\r\n var twoDigitMonth = (fullDate.getMonth() + 1) + \"\";\r\n if (twoDigitMonth.length === 1) twoDigitMonth = \"0\" + twoDigitMonth;\r\n\r\n var twoDigitDate = fullDate.getDate() + \"\";\r\n if (twoDigitDate.length === 1) twoDigitDate = \"0\" + twoDigitDate;\r\n var currentDate = twoDigitMonth + \"/\" + twoDigitDate + \"/\" + fullDate.getFullYear();\r\n\r\n return currentDate;\r\n } else {\r\n\r\n\r\n var today = new Date(fullDate).toLocaleDateString('en-GB',\r\n {\r\n day: 'numeric',\r\n month: 'short',\r\n year: 'numeric'\r\n\r\n }).split(' ').join(' ');\r\n\r\n\r\n var timeoffset = new Date(fullDate).toLocaleTimeString('en-GB',\r\n {\r\n hour: '2-digit',\r\n minute: '2-digit'\r\n }).split(' ').join(' ');\r\n\r\n return today + ' - ' + timeoffset;\r\n\r\n }\r\n}\r\n\r\n\r\nexport function FileTypeIconMap(extension: string): string {\r\n\r\n switch (extension) {\r\n case 'pdf': return 'pdf';\r\n case 'accdb': case 'mdb': return 'accdb';\r\n case 'vcf': return 'contact';\r\n case 'csv': return 'csv';\r\n case 'doc': case 'docm': case 'docx': case 'docb': return 'docx';\r\n case 'dot': case 'dotm': case 'dotx': return 'dotx';\r\n case 'gif': case 'ico': case 'jpeg': case 'jpg': case 'png': case 'psd': case 'tiff': case 'tif': return 'photo'\r\n case 'pot': case 'potm': case 'potx': return 'potx';\r\n case 'xls': case 'xlsx': return 'xlsx';\r\n default: return \"Page\";\r\n }\r\n\r\n};\r\n\r\nexport function _copyAndSort(items: T[], columnKey: string, isSortedDescending?: boolean): T[] {\r\n const key = columnKey as keyof T;\r\n\r\n if (key.toString().toLowerCase().indexOf(\"datemodified\") !== -1 || key.toString().toLowerCase().indexOf(\"date\") !== -1 ) {\r\n var dateKey = \"asDateModified\" as keyof T;\r\n\r\n if (key === \"dateModifiedSkin\") dateKey = \"dateModified\" as keyof T;\r\n if (key === \"date\") dateKey = \"date\" as keyof T;\r\n\r\n return items.slice(0).sort((a: T, b: T) => ((isSortedDescending ? a[dateKey] < b[dateKey] : a[dateKey] > b[dateKey]) ? 1 : -1));\r\n }\r\n\r\n //date modified in datamanager\r\n if (key.toString().toLowerCase().indexOf(\"updated\") !== -1) {\r\n return items.slice(0).sort((a: T, b: T) => ((isSortedDescending ? a[key] < b[key] : a[key] > b[key]) ? 1 : -1));\r\n }\r\n\r\n if (key.toString().toLowerCase().indexOf(\"casereference\") !== -1 || key.toString().toLowerCase().indexOf(\"caseref\") !== -1) {\r\n return items.slice(0).sort((a: T, b: T) => (isSortedDescending ? (a[key] == null ? \"\" : a[key]).toString().toLowerCase() < (b[key] === null ? \"\" : b[key]).toString().toLowerCase() : (a[key] == null ? \"\" : a[key]).toString().toLowerCase() > (b[key] == null ? \"\" : b[key]).toString().toLowerCase()) ? 1 : -1);\r\n } else {\r\n const regex = /^\\d+/;\r\n const numStart = items.filter(item => regex.test(item[columnKey]));\r\n const nonNumStart = items.filter(item => !regex.test(item[columnKey]));\r\n\r\n numStart.sort((a: T, b: T) => {\r\n const numAMatch = a[columnKey].match(regex);\r\n const numBMatch = b[columnKey].match(regex);\r\n\r\n const numAStart = numAMatch ? parseInt(numAMatch[0], 10) : 0;\r\n const numBStart = numBMatch ? parseInt(numBMatch[0], 10) : 0;\r\n\r\n const numAEndMatch = a[columnKey].match(/\\d+$/);\r\n const numBEndMatch = b[columnKey].match(/\\d+$/);\r\n\r\n const numAEnd = numAEndMatch ? parseInt(numAEndMatch[0], 10) : 0;\r\n const numBEnd = numBEndMatch ? parseInt(numBEndMatch[0], 10) : 0;\r\n\r\n if (numAStart === numBStart) {\r\n return isSortedDescending ? numBEnd - numAEnd : numAEnd - numBEnd;\r\n } else {\r\n return isSortedDescending ? numBStart - numAStart : numAStart - numBStart;\r\n }\r\n });\r\n\r\n nonNumStart.sort((a: T, b: T) => {\r\n const strAStart = a[columnKey].toString().toLowerCase();\r\n const strBStart = b[columnKey].toString().toLowerCase();\r\n const strAEnd = a[columnKey].toString().toLowerCase().slice(-1);\r\n const strBEnd = b[columnKey].toString().toLowerCase().slice(-1);\r\n\r\n if (strAStart === strBStart) {\r\n return isSortedDescending ? (strBEnd < strAEnd ? -1 : 1) : (strAEnd < strBEnd ? -1 : 1);\r\n } else {\r\n return isSortedDescending ? (strBStart < strAStart ? -1 : 1) : (strAStart < strBStart ? -1 : 1);\r\n }\r\n });\r\n\r\n return numStart.concat(nonNumStart)\r\n }\r\n}\r\n\r\nexport function formatDate(dateobj: Date, Usetime: Boolean) {\r\n\r\n if (!Usetime) {\r\n\r\n var twoDigitMonth = (dateobj.getMonth() + 1) + \"\";\r\n if (twoDigitMonth.length === 1) twoDigitMonth = \"0\" + twoDigitMonth;\r\n\r\n var twoDigitDate = dateobj.getDate() + \"\";\r\n if (twoDigitDate.length === 1) twoDigitDate = \"0\" + twoDigitDate;\r\n var currentDate = twoDigitMonth + \"/\" + twoDigitDate + \"/\" + dateobj.getFullYear();\r\n\r\n return currentDate;\r\n } else {\r\n\r\n\r\n var today = new Date(dateobj).toLocaleDateString('en-GB',\r\n {\r\n day: 'numeric',\r\n month: 'short',\r\n year: 'numeric'\r\n\r\n }).split(' ').join(' ');\r\n\r\n\r\n var timeoffset = new Date(dateobj).toLocaleTimeString('en-GB',\r\n {\r\n hour: '2-digit',\r\n minute: '2-digit'\r\n }).split(' ').join(' ');\r\n\r\n return today + '-' + timeoffset;\r\n\r\n }\r\n}\r\n\r\n\r\n\r\nexport function b64EncodeUnicode(str): string {\r\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function (match, p1) {\r\n return String.fromCharCode(parseInt(p1, 16))\r\n }));\r\n}\r\n\r\nexport function b64DecodeUnicode(str): string {\r\n return decodeURIComponent(Array.prototype.map.call(atob(str), function (c) {\r\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)\r\n }).join(''));\r\n}\r\n\r\n\r\n\r\nexport function GetAllDirChildren(FullDir: IDirEntry[], parentid: string, children: IDirEntry[]) {\r\n let myChildren: IDirEntry[] = [];\r\n\r\n myChildren = FullDir.filter(x => x.parentid == parentid);\r\n\r\n\r\n if (myChildren.length > 0) {\r\n\r\n children.push(...myChildren);\r\n\r\n myChildren.forEach(child => {\r\n GetAllDirChildren(FullDir, child.id, children);\r\n });\r\n }\r\n}\r\nexport function GetAllDirParents(FullDir: IDirEntry[], parentid: string, children: IDirEntry[]) {\r\n let myParent: IDirEntry;\r\n\r\n myParent = FullDir.find(x => x.id == parentid);\r\n\r\n\r\n if (myParent !== undefined) {\r\n\r\n children.push(myParent);\r\n\r\n GetAllDirParents(FullDir, myParent.parentid, children);\r\n\r\n }\r\n}\r\nexport function GetAllDirEntryParents(FullDir: IDirEntry[], parentid: string, children: IDirEntry[]) {\r\n let myParent: IDirEntry;\r\n\r\n myParent = FullDir.find(x => x.id == parentid);\r\n\r\n\r\n if (myParent !== undefined) {\r\n\r\n children.push(myParent);\r\n\r\n GetAllDirEntryParents(FullDir, myParent.linkDirEntry, children);\r\n\r\n }\r\n}\r\nexport function GetAllDocumentParents(FullDir: IDocument[], parentid: string, children: IDocument[]) {\r\n let myParent: IDocument;\r\n\r\n myParent = FullDir.find(x => x.key == parentid);\r\n\r\n\r\n if (myParent !== undefined) {\r\n\r\n children.push(myParent);\r\n\r\n GetAllDocumentParents(FullDir, myParent.parentid, children);\r\n\r\n }\r\n}\r\n\r\nexport function PopulateChildren(FolderEntries: IDocument[], parentId: string, children: IDocument[]) {\r\n let myChildren: IDocument[] = [];\r\n\r\n myChildren = FolderEntries.filter(x => x.parentid == parentId);\r\n\r\n\r\n if (myChildren.length > 0) {\r\n children.push(...myChildren);\r\n\r\n myChildren.forEach(child => {\r\n PopulateChildren(FolderEntries, child.key, children);\r\n });\r\n }\r\n}\r\n\r\nexport function PopulateDependant(FolderEntries: IDocument[], parentId: string, children: IDocument[]) {\r\n let myChildren: IDocument[] = [];\r\n\r\n myChildren = FolderEntries.filter(x => x.linkedDirEntry == parentId);\r\n\r\n\r\n if (myChildren.length > 0) {\r\n children.push(...myChildren);\r\n\r\n myChildren.forEach(child => {\r\n PopulateDependant(FolderEntries, child.key, children);\r\n });\r\n }\r\n}\r\n\r\nexport function PopulateLinkedDirectories(FolderEntries: IDocument[], linkedDirEntry: string, children: IDocument[]) {\r\n let myChildren: IDocument[] = [];\r\n\r\n myChildren = FolderEntries.filter(x => x.key == linkedDirEntry);\r\n\r\n\r\n if (myChildren.length > 0) {\r\n children.push(...myChildren);\r\n\r\n myChildren.forEach(child => {\r\n PopulateLinkedDirectories(FolderEntries, child.linkedDirEntry, children);\r\n });\r\n }\r\n}\r\n\r\nfunction GetCSSvalueFromElement(element, property) {\r\n if (element !== undefined) {\r\n return window.getComputedStyle(element, null).getPropertyValue(property);\r\n }\r\n else if (property === \"font-family\") {\r\n return \"GM Segoe\";\r\n }\r\n else {\r\n return \"\";\r\n }\r\n}\r\n\r\nexport const getThemeSettings = () => new Promise((resolve) => {\r\n let themeSettings: ITheme;\r\n\r\n\r\n\r\n themeSettings = theme();\r\n if (themeSettings != undefined) {\r\n return resolve(themeSettings);\r\n }\r\n\r\n GetCurrentConfig().then(activeConfig => {\r\n\r\n if (activeConfig.themesettings.length > 0) {\r\n\r\n try {\r\n let palette = JSON.parse(activeConfig.themesettings);\r\n\r\n let t = createTheme({\r\n palette: palette\r\n });\r\n //let t;\r\n //t.palette = palette;\r\n\r\n let fontf = GetCSSvalueFromElement(document.getElementsByTagName(\"body\")[0], 'font-family');\r\n //t = Fabric.createTheme({ palette: palette, defaultFontStyle: { fontFamily: fontf } });\r\n\r\n\r\n let myTheme1: ITheme;\r\n\r\n if (activeConfig.UseCss) {\r\n let fontf = GetCSSvalueFromElement(document.getElementsByTagName(\"body\")[0], 'font-family');\r\n myTheme1 = createTheme({ palette: palette, defaultFontStyle: { fontFamily: fontf } });\r\n\r\n\r\n }\r\n else {\r\n myTheme1 = createTheme(t);\r\n myTheme1.palette = palette;\r\n }\r\n\r\n loadTheme(myTheme1);\r\n\r\n themeSettings = myTheme1;\r\n }\r\n catch (e) {\r\n let t = getTheme();\r\n let fontf = GetCSSvalueFromElement(document.getElementsByTagName(\"body\")[0], 'font-family');\r\n themeSettings = createTheme({ palette: t.palette, defaultFontStyle: { fontFamily: fontf } });\r\n }\r\n\r\n }\r\n else {\r\n if (activeConfig.UseCss) {\r\n let fontf = GetCSSvalueFromElement(document.getElementsByTagName(\"body\")[0], 'font-family');\r\n fontf += \" !important\";\r\n themeSettings = createTheme({ palette: getTheme()?.palette, defaultFontStyle: { fontFamily: fontf } });\r\n\r\n }\r\n else {\r\n themeSettings = getTheme();\r\n }\r\n\r\n }\r\n\r\n\r\n sessionStorage.setItem(\"MyTheme2\", JSON.stringify(themeSettings));\r\n\r\n resolve(themeSettings);\r\n\r\n })\r\n})\r\nexport const footerWidth = mergeStyleSets({\r\n fullWidth: {\r\n width: '100%'\r\n },\r\n restrainedWidth: {\r\n paddingLeft: '19%',\r\n paddingRight: '19%'\r\n\r\n\r\n }\r\n\r\n});\r\n\r\nexport function getLogoStyle(isMobile: boolean, logoHeight: string, logovposition: string, currentPage: string): React.CSSProperties {\r\n let s: React.CSSProperties = {};\r\n\r\n //if (props.CurrentPage == \"Users\" || props.CurrentPage == \"Administration\" || props.CurrentPage == \"Filemanager\") {\r\n //\treturn s;\r\n //}\r\n s.maxHeight = \"initial\";\r\n s.maxWidth = \"initial\";\r\n s.display = \"initial\";\r\n if (!isMobile) {\r\n if (logoHeight != \"\") {\r\n s.height = logoHeight + \"px\";\r\n\r\n\r\n if (currentPage === \"Users\" || currentPage === \"Administration\" || currentPage === \"Filemanager\" || currentPage === \"Editor\" || currentPage === \"Sections\") {\r\n\r\n\r\n\r\n var heightSplit = s.height.toString().split(\"p\");\r\n var heightNumber: number = +heightSplit[0];\r\n if (heightNumber > 50) {\r\n s.height = \"50px\";\r\n }\r\n return s;\r\n }\r\n if (logovposition != \"\") s.marginTop = + logovposition + \"px\";\r\n }\r\n else if (logovposition != \"\" && (currentPage !== \"Users\" && currentPage !== \"Administration\" && currentPage !== \"Filemanager\" && currentPage !== \"Editor\" && currentPage !== \"Sections\")) {\r\n s.marginTop = + logovposition + \"px\";\r\n }\r\n }\r\n else {\r\n s.marginTop = \"-5px\";\r\n }\r\n\r\n\r\n return s;\r\n\r\n}\r\n\r\nexport function checkFolderFilesAccess(folder: IDocument, FolderEntries: IDocument[]): boolean {\r\n let user = JSON.parse(sessionStorage.getItem(\"user\"));\r\n if (user !== undefined && user.permissions.includes(\"Access management for file manager\")) { return true };\r\n if (folder.usersWithAccess.length > 0 || folder.groupsWithAccess.length > 0) {\r\n\r\n if (folder.usersWithAccess.indexOf(user.portalUser.id) === -1 && folder.groupsWithAccess.findIndex(x => user.portalUser.Groups.indexOf(x) > -1) === -1) {\r\n return false;\r\n }\r\n }\r\n else {\r\n let parents: IDocument[] = [];\r\n GetAllDocumentParents(FolderEntries, folder.parentid, parents);\r\n\r\n for (let i = 0; i < parents.length; i++) {\r\n let userAccessFound = false;\r\n let groupAccessFound = false;\r\n\r\n if (parents[i].usersWithAccess.indexOf(user.portalUser.id) > -1) {\r\n userAccessFound = true;\r\n }\r\n if (parents[i].groupsWithAccess.findIndex(x => user.portalUser.Groups.indexOf(x) > -1) > -1) {\r\n groupAccessFound = true;\r\n }\r\n\r\n if (userAccessFound || groupAccessFound) {\r\n return true;\r\n }\r\n else if ((parents[i].usersWithAccess.length > 0 && !userAccessFound) || (parents[i].groupsWithAccess.length > 0 && !groupAccessFound)) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\n\r\n\r\nexport function detectIE() {\r\n var ua = window.navigator.userAgent;\r\n\r\n var msie = ua.indexOf('MSIE ');\r\n if (msie > 0) {\r\n // IE 10 or older => return version number\r\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\r\n }\r\n\r\n var trident = ua.indexOf('Trident/');\r\n if (trident > 0) {\r\n // IE 11 => return version number\r\n var rv = ua.indexOf('rv:');\r\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\r\n }\r\n\r\n var edge = ua.indexOf('Edge/');\r\n if (edge > 0) {\r\n // Edge (IE 12+) => return version number\r\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\r\n }\r\n\r\n // other browser\r\n return false;\r\n}\r\n\r\nexport function getPlainText(html: string) {\r\n return html.replace(/<[^>]+>/g, '');\r\n}\r\n\r\n\r\nfunction _createTheme() {\r\n \r\n\r\n}\r\n\r\n\r\nexport function theme(): ITheme {\r\n\r\n try {\r\n if (sessionStorage.getItem(\"MyTheme2\") != null && sessionStorage.getItem(\"MyTheme2\").length > 5) {\r\n //console.info('Reading theme from SessionStorage');\r\n return JSON.parse(sessionStorage.getItem(\"MyTheme2\")) as ITheme;\r\n }\r\n else {\r\n //console.info('Reading theme from window');\r\n\r\n var _theme = (window as any).themeSettings;\r\n if (_theme != undefined)\r\n return _theme;\r\n\r\n let t = getTheme();\r\n /*let fontf = GetCSSvalueFromElement(document.getElementsByTagName(\"body\")[0], 'font-family');*/\r\n //_theme = createTheme({ palette: t.palette, defaultFontStyle: { fontFamily: fontf } });\r\n _theme = createTheme({ palette: t.palette });\r\n\r\n sessionStorage.setItem(\"MyTheme2\", JSON.stringify(_theme));\r\n return _theme;\r\n\r\n \r\n }\r\n\r\n } catch (e) {\r\n console.info('Catch - Reading theme from window');\r\n\r\n var _theme = (window as any).themeSettings;\r\n if (_theme != undefined)\r\n return _theme;\r\n let t = getTheme();\r\n //let fontf = GetCSSvalueFromElement(document.getElementsByTagName(\"body\")[0], 'font-family');\r\n //_theme = createTheme({ palette: t.palette, defaultFontStyle: { fontFamily: fontf } });\r\n _theme = createTheme({ palette: t.palette });\r\n\r\n\r\n sessionStorage.setItem(\"MyTheme2\", JSON.stringify(_theme));\r\n\r\n return _theme;\r\n\r\n\r\n /* return undefined;*/\r\n }\r\n\r\n}\r\n\r\nexport async function compressImage(file, size: number = 600): Promise {\r\n return new Promise((resolve, reject) => {\r\n\r\n const originalSize = file.size;\r\n if (originalSize < 100000)\r\n resolve(file);\r\n\r\n const options: Compressor.Options = {\r\n maxWidth: size, // Resize width (optional)\r\n maxHeight: size, // Resize height (optional)\r\n //mimeType: 'image/png', // Output image type\r\n //quality: 0.8,\r\n success(result) {\r\n\r\n const compressedFile = new File([result], `compressed_${file.name}`);\r\n //const compressedSize = compressedFile.size;\r\n //console.log(`Original file size: ${originalSize} bytes`);\r\n //console.log(`Compressed file size: ${compressedSize} bytes`);\r\n\r\n resolve(compressedFile);\r\n },\r\n error(error) {\r\n reject(error);\r\n },\r\n };\r\n\r\n new Compressor(file, options);\r\n });\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"],"names":["Async","parent","onError","id","callback","duration","_this","timeoutId","e","targetElement","immediateId","win","getWindow","setImmediateCallback","intervalId","func","wait","options","waitMS","leading","trailing","lastExecuteTime","lastResult","lastArgs","userCall","now","delta","waitLength","resultFunction","args","_i","noOpFunction","maxWait","lastCallTime","markExecuted","time","invokeFunction","executeImmediately","maxWaitDelta","maxWaitExpired","pending","cancel","flush","animationFrameId","animationFrameCallback","isVirtualElement","element","getVirtualParent","child","getParent","allowVirtualParents","_a","_b","elementContains","isContained","nextParent","findElementRecursive","matchFunction","doc","elementContainsAttribute","attribute","elementMatch","testElement","DATA_PORTAL_ATTRIBUTE","setPortalAttribute","portalContainsElement","target","setVirtualParent","virtualChild","virtualParent","oldParent","index","IS_FOCUSABLE_ATTRIBUTE","IS_VISIBLE_ATTRIBUTE","FOCUSZONE_ID_ATTRIBUTE","FOCUSZONE_SUB_ATTRIBUTE","getFirstFocusable","rootElement","currentElement","includeElementsInFocusZones","includeShadowRoots","getNextElement","getLastFocusable","getPreviousElement","getFirstTabbable","checkNode","getLastTabbable","focusFirstChild","bypassHiddenElements","focusAsync","suppressParentTraversal","traverseChildren","allowFocusRoot","tabbable","isCurrentElementVisible","isElementVisible","isElementFocusZone","isElementFocusSubZone","lastElementChild","childMatch","isElementTabbable","childMatchSiblingMatch","childMatchParent","childMatchParentMatch","siblingMatch","suppressChildTraversal","checkElementVisibility","isElementVisibleAndNotHidden","firstElementchild","visibilityAttribute","theWin","checkTabIndex","checkShadowRoot","tabIndex","tabIndexAttributeValue","isFocusableAttribute","isTabIndexSet","delegatesFocus","result","doesElementContainFocus","getDocument","currentActiveElement","shouldWrapFocus","noWrapDataAttribute","theDoc","animationId","getFocusableByIndexPath","path","path_1","nextChild","getElementIndexPath","fromElement","toElement","parent_1","on","eventName","shallowCompare","a","b","propName","assign","filteredAssign","isAllowed","args_1","sourceObject","EventGroup","eventArgs","bubbleEvent","retVal","ev","evObj","events","eventRecords","eventRecordList","listIndex","record","declaredEvents","event","useCapture","i","eventRecord","processElementEvent","processObjectEvent","targetArrayLookup","targetArray","mergeStyles","mergeCss","getStyleOptions","styleArgs","opts","hasShadowConfig","isShadowConfig","Stylesheet","extractStyleParts","classes","objects","styleToClassName","concatStyleSetsWithProps","styleProps","allStyles","allStyles_1","styles","concatStyleSets","keyframes","timeline","stylesheet","rulesArray","prop","serializeRuleEntries","rules","className","name","_scrollbarWidth","_bodyScrollDisabledCount","DisabledScrollClassName","DATA_IS_SCROLLABLE_ATTRIBUTE","allowScrollOnElement","window","_previousClientY","_element","computedStyles","_saveClientY","_preventOverscrolling","clientY","scrollableParent","findScrollableParent","scrollTop","isColumnReverse","allowOverscrollOnElement","_allowElementScroll","_disableIosBodyScroll","disableBodyScroll","enableBodyScroll","getScrollbarWidth","scrollDiv","startingElement","el","overflowY","_warningCallback","warn","message","warnConditionallyRequiredProps","componentName","props","requiredProps","conditionalPropName","condition","requiredProps_1","requiredPropName","_super","__extends","BaseComponent","context","_makeAllSafe","prevProps","prevState","len","disposable","funcNameRegex","results","refName","ref","currentProps","newProps","deprecationMap","mutuallyExclusiveMap","value","React.Component","obj","prototype","methodNames","_makeSafe","methodName","classMethod","prototypeMethod","nullRender","KeyCodes","Rectangle","left","right","top","bottom","rect","appendFunction","functions","f","mergeAriaAttributeValues","ariaAttributes","mergedAttribute","arg","findIndex","array","cb","fromIndex","find","addElementAtIndex","itemToAdd","copy","arraysEqual","array1","array2","RTL_LOCAL_STORAGE_KEY","_isRTL","getRTL","theme","savedRTL","getItem","setRTL","mergeStylesSetRTL","isRTL","persistSetting","setItem","getRTLSafeKeyCode","key","MAX_CACHE_COUNT","DEFAULT_SPECIFICITY_MULTIPLIER","_memoizedClassNames","classNamesFunction","windowMap","styleCalcCount","getClassNamesCount","currentMemoizedClassNames","getClassNames","styleFunctionOrObject","shadowConfig","current","rtl","disableCaching","_traverseMap","mergeCssSets","_traverseEdge","_normalizeValue","inputs","cachedInputsFromStyled","input","_initializedStylesheetResets","_resetCounter","_emptyObject","_dictionary","_weakMap","resetMemoizations","memoizeFunction","maxCacheSize","ignoreNullOrUndefinedResult","rootNode","cacheSize","localResetCounter","currentNode","_createNode","_normalizeArg","createMemoizer","getValue","cache","memoizedGetValue","val","createComposedComponent","outer","Outer","outerMemoizer","inner","Inner","innerMemoizer","defaultRender","InnerWithDefaultRender","innerProps","React.createElement","__assign","OuterWithDefaultRender","outerProps","componentAsMemoizer","composeComponentAs","css","CustomizerContext","React.createContext","mergeSettings","oldSettings","newSettings","mergeSettingsWith","_isSettingsFunction","_settingsMergeWith","mergeScopedSettings","_scopedSettingsMergeWith","settings","scopedSettingsFromProps","oldScopedSettings","newScopedSettings","scopeName","mergeCustomizations","parentContext","customizations","Customizer","Customizations","contextTransform","newContext","hoistStatics","source","dest","name_1","noop","noopShadow","DEFAULT_SHADOW_CONFIG","noopRootStylesheets","noopUndefined","getNewContext","MergeStylesDefaultContext","useMergeStylesHooks","ctx","React.useContext","MergeStylesShadowRootContext","useHasMergeStylesShadowRootContext","useMergeStylesShadowRootContext","MergeStylesShadowRootConsumer","stylesheetKey","children","useAdoptedStylesheetEx","useMergeStylesRootStylesheets","useWindow","shadowCtx","rootMergeStyles","GLOBAL_STYLESHEET_KEY","WindowContext","useDocument","memoizedMakeShadowConfig","makeShadowConfig","mergeComponentStyles","defaultStyles","componentStyles","customizable","scope","fields","concatStyles","ComposedComponent","resultClass","ComponentWithInjectedProps","inShadow","defaultProps","componentProps","mergedStyles","useCustomizationSettings","properties","forceUpdate","useForceUpdate","inCustomizerContext","React.useEffect","React.useState","setValue","extendComponent","methods","CURRENT_ID_PROPERTY","DEFAULT_ID_STRING","_global","getId","prefix","resetIds","counter","toObjectMap","items","items_1","item","keys","keys_1","baseElementEvents","baseElementProperties","htmlElementProperties","labelProperties","audioProperties","videoProperties","olProperties","liProperties","anchorProperties","buttonProperties","inputProperties","textAreaProperties","selectProperties","optionProperties","tableProperties","trProperties","thProperties","tdProperties","colGroupProperties","colProperties","formProperties","iframeProperties","imgProperties","divProperties","getNativeProps","allowedPropNames","excludedPropNames","isArray","keys_2","isNativeProp","REACT_LIFECYCLE_EXCLUSIONS","hoistMethods","destination","exclusions","hoisted","_loop_1","unhoistMethods","initializeComponentRef","_onMount","_onUpdate","_onUnmount","_setComponentRef","componentRef","DirectionalKeyCodes","isDirectionalKeyCode","which","IsFocusVisibleClassName","IsFocusHiddenClassName","updateClassList","enabled","setFocusVisibility","registeredProviders","mountCounters","callbackMap","setMountCounters","newValue","currValue","setCallbackMap","callbacks","onMouseDown","_onMouseDown","onPointerDown","_onPointerDown","onKeyDown","_onKeyDown","onKeyUp","_onKeyUp","FocusRectsContext","useFocusRects","rootRef","_c","_d","count","FocusRects","FocusRectsProvider","providerRef","layerRoot","inheritParentContext","React.useMemo","React.Fragment","isIOS","tagsToIgnore","modalize","targetDocument","affectedNodes","sibling","ariaHidden","node","unmodalize","originalValue","isMacResult","isMac","reset","userAgent","createComposedRenderFunction","memoizer","composeRenderFunction","DefaultFields","styled","Component","baseStyles","getProps","pure","Wrapped","React.forwardRef","forwardedRef","React.useRef","customizedStyles","rest","__rest","additionalProps","useStyled","propStyles","concatenatedStyles","pureComponent","React.memo","getPropsWithDefaults","propsWithoutDefaults","createResolver","local","createMergedRef","newRefs","useIsomorphicLayoutEffect","canUseDOM","React.useLayoutEffect","useAsync","asyncRef","useConst","initialValue","useId","providedId","useMergedRefs","refs","mergedCallback","React.useCallback","refs_1","__spreadArray","useOnEvent","callbackRef","actualElement","dispose","usePrevious","useRef","useEffect","useTarget","hostElement","previousTargetProp","targetRef","targetWindow","currentDoc","KTP_PREFIX","KTP_SEPARATOR","DATAKTP_TARGET","DATAKTP_EXECUTE_TARGET","KTP_LAYER_ID","KeytipEvents","KeytipManager","delayUpdatingKeytipChange","keytipProps","persisted","uniqueKeytip","event_1","uniqueID","newKeytipProps","oldKeyTip","keytipToRemove","fullSequence","parentKeytip","overflowButtonSequences","keytipSequences","useDocumentEx","useWindowEx","getDocumentEx","getWindowEx","FocusZoneTabbableElements","FocusZoneDirection","buildClassMap","styleName","className_1","ICON_SETTING_NAME","_iconSettings","GlobalSettings","normalizeIconName","registerIcons","iconSubset","subset","icons","iconName","code","normalizedIconName","_warnDuplicateIcon","registerIconAlias","mappedToName","getIcon","icon","fontFace","_missingIcons","_missingIconsTimer","warningDelay","maxIconsInMessage","EASING_FUNCTION_1","EASING_FUNCTION_2","DURATION_1","DURATION_2","DURATION_3","DURATION_4","FADE_IN","FADE_OUT","SLIDE_RIGHT_IN10","_createSlideInX","SLIDE_RIGHT_IN20","SLIDE_RIGHT_IN40","SLIDE_RIGHT_IN400","SLIDE_LEFT_IN10","SLIDE_LEFT_IN20","SLIDE_LEFT_IN40","SLIDE_LEFT_IN400","SLIDE_UP_IN10","_createSlideInY","SLIDE_UP_IN20","SLIDE_DOWN_IN10","SLIDE_DOWN_IN20","SLIDE_RIGHT_OUT10","_createSlideOutX","SLIDE_RIGHT_OUT20","SLIDE_RIGHT_OUT40","SLIDE_RIGHT_OUT400","SLIDE_LEFT_OUT10","SLIDE_LEFT_OUT20","SLIDE_LEFT_OUT40","SLIDE_LEFT_OUT400","SLIDE_UP_OUT10","_createSlideOutY","SLIDE_UP_OUT20","SLIDE_DOWN_OUT10","SLIDE_DOWN_OUT20","SCALE_UP100","SCALE_DOWN98","SCALE_DOWN100","SCALE_UP103","ROTATE90","ROTATE_N90","AnimationVariables","AnimationStyles","_createAnimation","animationName","animationDuration","animationTimingFunction","fromX","fromY","toX","toY","HighContrastSelector","HighContrastSelectorWhite","ScreenWidthMinSmall","ScreenWidthMinMedium","ScreenWidthMinLarge","ScreenWidthMinXLarge","ScreenWidthMinXXLarge","ScreenWidthMaxSmall","ScreenWidthMaxMedium","ScreenWidthMinUhfMobile","getScreenSelector","min","max","minSelector","maxSelector","getHighContrastNoAdjustStyle","ZIndexes","getFocusStyle","insetOrOptions","position","highContrastStyle","borderColor","outlineColor","isFocusedOnly","borderRadius","_getFocusStyleInternal","inset","width","_e","_f","_g","_h","pointerEvents","focusClear","getInputFocusStyle","borderType","borderPosition","isBorderBottom","hiddenContentStyle","_getGlobalClassNames","classNames","disableGlobalClassNames","styleSheet","acc","getGlobalClassNames","AnimationClassNames","IS_ENTER_DISABLED_ATTRIBUTE","TABINDEX","NO_VERTICAL_WRAP","NO_HORIZONTAL_WRAP","LARGE_DISTANCE_FROM_CENTER","LARGE_NEGATIVE_DISTANCE_FROM_CENTER","focusZoneStyles","focusZoneClass","raiseClickFromKeyboardEvent","getRootClass","_allInstances","_outerZones","ALLOWED_INPUT_TYPES","ALLOW_VIRTUAL_ELEMENTS","FocusZone","React.createRef","onActiveElementChanged","doNotAllowFocusEventToPropagate","stopFocusPropagation","onFocusNotification","onFocus","shouldFocusInnerElementWhenReceivedFocus","defaultTabbableElement","isImmediateDescendant","newActiveElement","parentElement","maybeElementToFocus","initialElementFocused","disabled","direction","isInnerZoneKeystroke","pagingSupportDisabled","shouldEnterInnerZone","innerZone","focusChanged","tabWithDirection","firstChild","lastChild","isForward","activeRect","targetRect","leftAlignment","targetRectTop","activeRectBottom","targetRectBottom","activeRectTop","isValidCandidateOnpagingDown","isValidCandidateOnpagingUp","shouldRaiseClicksFallback","zone","root","elementToFocus","tag","elementType","rootProps","ariaDescribedBy","ariaLabelledBy","divProps","Tag","getTheme","forceIntoFirstElement","ownerZoneElement","ownerZone","forceAlignment","onBeforeFocus","shouldReceiveFocus","point","focusedElement","shouldRestoreFocus","isParked","previousActiveElement","match","getDistanceFromCenter","useDefaultWrap","candidateDistance","candidateElement","changedFocus","isBidirectional","elementDistance","targetTop","distance","shouldWrap","topBottomComparison","targetBottom","pagesize","isElementPassedPageSizeOnPagingDown","isElementPassedPageSizeOnPagingUp","isHorizontal","isVertical","top_1","childNodes","childIndex","selectionStart","selectionEnd","isRangeSelected","inputValue","isReadonly","IconType","ImageFit","ImageCoverStyle","ImageLoadState","SVG_REGEX","KEY_PREFIX","useLoadState","imageElement","onLoadingStateChange","onLoad","src","loadState","setLoadState","isLoaded","onImageLoaded","onImageError","ImageBase","frameElement","imageProps","alt","height","shouldFadeIn","shouldStartVisible","imageFit","role","maximizeFrame","loading","coverStyle","useCoverStyle","previousLoadState","computeCoverStyle","desiredRatio","naturalRatio","GlobalClassNames","getStyles","isLandscape","isCenter","isContain","isCover","isCenterContain","isCenterCover","isNone","isError","isNotImageFit","ImageFitStyles","supportsObjectFit","fallbackObjectFitStyles","Image","mergeStyleSets","MS_ICON","iconClassName","isPlaceholder","isImage","getIconContent","FontIcon","style","iconContent","fontFamily","mergeImageProps","nativeProps","accessibleName","containerProps","finalChildren","React.cloneElement","ariaLabel","IconBase","state","imageErrorAs","iconContentChildren","RootType","imageLoadError","ImageType","hasName","finalIconContentChildren","Icon","ImageIcon","altText","imageNameProps","DirectionalHint","ContextualMenuItemType","getIsChecked","hasSubmenu","isItemDisabled","getMenuItemAriaRole","isChecked","canCheck","RectangleEdge","Position","_createPositionData","targetEdge","alignmentEdge","isAuto","DirectionalDictionary","_isRectangleWithinBounds","boundingRect","_getOutOfBoundsEdges","outOfBounds","_getEdgeValue","edge","_setEdgeValue","_getCenterValue","edges","_getFlankingEdges","_getRelativeEdgeValue","_getRelativeRectEdgeValue","_getRelativeEdgeDifference","hostRect","edgeDifference","_moveEdge","maintainSize","difference","returnRect","_alignEdges","gap","_alignOppositeEdges","oppositeEdge","adjustedGap","_isEdgeInBounds","bounds","adjustedRectValue","_getOutOfBoundsDegree","breakingEdges","total","breakingEdges_1","_canScrollResizeToFitEdge","bounding","minimumScrollResizeHeight","_flipToFit","positionData","shouldScroll","directions","currentEstimate","currentEdge","currentAlignment","oobDegree","bestEdge","bestAlignment","currentOOBDegree","_estimatePosition","_flipAlignmentEdge","elementEstimate","coverTarget","elementRectangle","newEstimate","_adjustFitWithinBounds","directionalHintFixed","alignTargetEdge","fixedEdge","flippedElementEstimate","_alignOutOfBoundsEdges","outOfBoundsEdges","preserveEdge","outOfBoundsEdges_1","edgeAttempt","inBounds","_centerEdgeToPoint","positiveEdge","elementMiddle","distanceToMiddle","elementToPosition","estimatedElementPosition","elementEdge","targetMiddlePoint","_finalizeReturnEdge","returnEdge","_isEdgeOnBounds","_finalizeElementPosition","doNotFinalizeReturnEdge","forceWithinBounds","returnValue","_getRectangleFromElement","getOppositeEdge","_calculateActualBeakWidthInPixels","beakWidth","_getPositionData","directionalHint","directionalHintForRTL","previousPositions","positionInformation","_getAlignmentData","getClosestEdge","targetCenter","boundingCenter","negativeEdge","_positionElementWithinBounds","_finalizeBeakPosition","elementPosition","positionedBeak","beakEdgeDifference","showBeak","_positionBeak","beakTargetPoint","elementBounds","beakPosition","clientRect","_getRectangleFromIRect","_getTargetRect","targetRectangle","rectOrPoint","outOfBounds_1","_positionElementRelative","positionedElement","_finalizePositionData","finalizedElement","_calculateGapSpace","isBeakVisible","gapSpace","_positionCallout","callout","positionProps","beakPositioned","finalizedBeakPosition","_positionCard","_getRectangleFromTarget","mouseTarget","elementTarget","rectOrPointTarget","positionCallout","positionCard","_getBoundsFromTargetWindow","segments","x","y","segments_1","segment","getBoundsFromTargetWindow","calculateGapSpace","getRectangleFromTarget","useScrollbarAsync","async","needsVerticalScrollBarState","setNeedsVerticalScrollBar","needsVerticalScrollBar","rootHeight","firstChildHeight","defaultFocusRestorer","originalElement","containsFocus","useRestoreFocus","onRestoreFocus","originalFocusedElement","useHideSiblingNodes","shouldHideSiblings","Popup","mergedRootRef","onDismiss","COMPONENT_NAME","ANIMATIONS","BEAK_ORIGIN_POSITION","OFF_SCREEN_STYLE","ARIA_ROLE_ATTRIBUTES","DEFAULT_PROPS","useBounds","minPagePadding","targetWindowResized","setTargetWindowResized","cachedBounds","getBounds","currentBounds","useMaxHeight","positions","calloutMaxHeight","finalHeight","hidden","maxHeight","setMaxHeight","topBounds","bottomBounds","calculatedHeight","usePositions","calloutElement","popupRef","setPositions","positionAttempts","previousTarget","onPositioned","hideOverflow","preferScrollResizePositioning","localRef","popupStyles","popupOverflowY","timerId_1","dupeCalloutElement","isOverflowYHidden","newPositions","arePositionsEqual","useAutoFocus","setInitialFocus","hasPositions","timerId_2","useDismissHandlers","preventDismissOnScroll","preventDismissOnResize","preventDismissOnLostFocus","dismissOnTargetClick","shouldDismissOnWindowFocus","preventDismissOnEvent","isMouseDownOnPopup","mouseDownHandlers","positionsExists","dismissOnScroll","dismissOnClickOrScroll","dismissOnResize","dismissOnLostFocus","eventPaths","isEventTargetOutsideCallout","dismissOnTargetWindowBlur","disposablesPromise","resolve","disposables_1","CalloutContentBase","calloutWidth","calloutMaxWidth","calloutMinWidth","doNotLayer","backgroundColor","onScroll","onLayerMounted","popupProps","mergedPopupRefs","setCalloutElement","calloutCallback","calloutEl","mouseDownOnPopup","mouseUpOnPopup","isForcedInBounds","cssPositions","overflowYHidden","beakVisible","overflowStyle","visibilityStyle","getBeakPosition","previousProps","nextProps","beakPositionStyle","prevElementPositions","newElementPosition","comparePositions","newElementPositions","oldPositionEdge","newPositionEdge","getBeakStyle","semanticColors","effects","CalloutContent","PortalCompatContext","portalCompatContextDefaultValue","usePortalCompat","_React_useContext","getFabricTheme","createTheme","getDir","dir","contextDir","pageDir","componentDir","FabricBase","applyTheme","applyThemeToBody","useApplyThemeToBody","useRenderedContent","Root","rootDir","needsTheme","renderedContent","bodyThemed","currentDoc_1","inheritFont","preventBlanketFontInheritance","Fabric","_layersByHostId","_layerHostsById","defaultHostId","_defaultHostSelector","registerLayer","hostId","layerHosts","layerHosts_1","layerHost","unregisterLayer","layers","idx","layerHosts_2","getLayerHost","createDefaultLayerHost","shadowRoot","host","getDefaultTarget","getFocusVisibility","LayerBase","registerPortalEl","mergedRef","layerRef","fabricElementRef","focusContext","needRaiseLayerMount","setNeedRaiseLayerMount","focusRectsRef","isFocusVisible","eventBubblingEnabled","fabricProps","insertFirst","onLayerDidMount","onLayerWillUnmount","fabricRef","getHost","defaultHostSelector","removeLayerElement","elem","createLayerElement","unregisterPortalEl","ReactDOM.createPortal","getFilteredEvents","filteredEventProps","onFilterEvent","isNotHost","Layer","Callout","layerProps","content","defaultIconRenderer","iconProps","renderItemIcon","hasIcons","renderCheckMarkIcon","onCheckmarkClick","isItemChecked","onClick","renderItemName","renderSecondaryText","renderSubMenuIcon","ContextualMenuItemBase","openSubMenu","getSubmenuTarget","submenuTarget","dismissSubMenu","dismissAll","dismissMenu","renderContent","defaultRenders","getDividerClassNames","CONTEXTUAL_MENU_ITEM_HEIGHT","MediumScreenSelector","getMenuItemStyles","fonts","palette","ContextualMenuItemBackgroundHoverColor","ContextualMenuItemTextHoverColor","ContextualMenuItemBackgroundSelectedColor","ContextualMenuItemDividerColor","menuItemStyles","IconFontSizes","CONTEXTUAL_SPLIT_MENU_MINWIDTH","getSplitButtonVerticalDividerClassNames","getItemClassNames","expanded","checked","isAnchorLink","knownIcon","itemClassName","dividerClassName","subMenuClassName","primaryDisabled","getItemStyles","ContextualMenuItem","ContextualMenuItemWrapper","onItemMouseEnter","onItemClickBase","onItemMouseLeave","onItemKeyDown","onItemMouseMove","sequencesToID","keySequences","prevValue","keySequence","mergeOverflows","overflowKeySequences","overflowSequenceLen","overflowSequence","newKeySequences","getAriaDescribedBy","describedby","useKeytipData","uniqueId","keytipManager","prevOptions","nativeKeytipProps","getKeytipData","describedByPrepend","keytipId","KeytipData","keytipDataProps","ContextualMenuAnchor","onItemClick","ariaDescription","focusableElementIndex","totalItemCount","hasCheckmarks","expandedMenuItemKey","ChildrenRenderer","anchorRel","itemHasSubmenu","itemProps","ariaDescribedByIds","additionalItemProperties","keytipAttributes","ContextualMenuButton","contextualMenuItemAs","onItemMouseDown","defaultRole","buttonNativeProperties","itemRole","itemButtonProperties","names","VerticalDividerBase","deprecatedGetClassNames","VerticalDivider","TouchIdleDelay","ContextualMenuSplitButton","executeItemClick","ariaChecked","splitButton","itemComponentProps","buttonProps","onTap","BaseDecorator","composedComponentInstance","ResponsiveMode","RESPONSIVE_MAX_CONSTRAINT","_lastMode","getInitialResponsiveMode","withResponsiveMode","WithResponsiveMode","responsiveMode","getResponsiveMode","getWidthOfCurrentWindow","currentWindow","useResponsiveMode","elementRef","overrideResponsiveMode","lastResponsiveMode","setLastResponsiveMode","onResize","newResponsiveMode","MenuContext","getContextualMenuItemClassNames","getItemCount","itemCount","getSubmenuItems","overrideItems","items_2","subItem","contextItem","getOnClickWithOverrideTarget","canAnyMenuItemsCheck","submenuItem","NavigationIdleDelay","_getMenuItemStylesFunction","useVisibility","onMenuDismissed","onMenuOpened","previousHidden","onMenuOpenedRef","onMenuClosedRef","propsRef","useSubMenuState","dismiss","menuTarget","setExpandedMenuItemKey","setSubmenuTarget","shouldFocusOnContainer","setShouldFocusOnContainer","subMenuId","closeSubMenu","focusContainer","submenuItemKey","onSubMenuDismiss","useOnSubmenuDismiss","getSubmenuProps","findItemByKeyFromItems","submenuProps","useShouldUpdateFocusOnMouseMove","delayUpdateFocusOnHover","shouldUpdateFocusOnMouseEvent","gotMouseMove","onMenuFocusCapture","usePreviousActiveElement","tryFocusPreviousActiveElement","newElement","useKeyHandlers","isSubMenu","checkForNoWrap","focusZoneDirection","lastKeyDownWasAltOrMeta","keyHandler","shouldHandleKey","dismissAllMenus","handled","shouldCloseSubMenu","submenuCloseKey","shouldHandleKeyDown","isAltOrMeta","shouldHandleKeyUp","keyPressIsAltOrMetaAlone","onMenuKeyDown","hasModifier","isUp","isDown","openKey","useScrollHandler","asyncTracker","isScrollIdle","scrollIdleTimeoutId","isMountedRef","useSubmenuEnterTimer","subMenuHoverDelay","enterTimerRef","cancelSubMenuTimer","startSubmenuTimer","onTimerExpired","useMouseHandlers","subMenuEntryTimer","onItemMouseEnterBase","shouldIgnoreMouseEvent","updateFocusOnMouseEvent","onItemMouseMoveBase","onMouseItemLeave","onAnchorClick","overrideTarget","shouldDismiss","ContextualMenuBase","menuId","_j","onDefaultRenderMenuList","menuListProps","menuClassNames","indexCorrection","menuItem","renderMenuItem","indexIncrease","renderFocusZone","adjustedFocusZoneProps","renderedItems","subMenuIconClassName","itemClassNames","itemStyleProps","renderSeparator","headerItem","renderHeaderMenuItem","renderListItem","renderSectionItem","defaultRenderNormalItem","renderNormalItem","defaultMenuItemRenderer","sectionItem","sectionProps","groupProps","headerContextualMenuItem","ariaLabelledby","id_1","id_2","correctedIndex_1","contextualMenuItem","itemsIndex","title","fromSection","commonProps","ContextualMenuAnchorAs","ContextualMenuSplitButtonAs","ContextualMenuButtonAs","divHtmlProperties","labelElementId","useTargetWidth","useTargetAsMinWidth","shouldFocusOnMount","calloutProps","_k","onRenderSubMenu","onDefaultRenderSubMenu","_l","onRenderMenuList","focusZoneProps","getMenuClassNames","itemsHaveIcons","contextualMenuItems","contextualMenuItems_1","contextMenuStyle","targetAsHtmlElement","targetBoundingRect","targetWidth","totalItemCount_1","calloutStyles_1","menuContext","subMenuProps","items_3","FontWeights","LocalContextualMenu","ContextualMenu","ButtonGlobalClassNames","getBaseButtonClassNames","variantClassName","menuIconClassName","hasMenu","isSplit","isExpanded","SplitButtonGlobalClassNames","getSplitButtonClassNames","BaseButton","text","secondaryText","onRenderText","onRenderDescription","menuIconProps","menuProps","MenuType","container","singleTouchTarget","onMenuClick","currentShouldFocusOnMount","allowDisabledFocus","href","toggle","menuHidden","isPrimaryButtonDisabled","_ariaDescriptionId","_labelId","_descriptionId","renderAsAnchor","resolvedAriaLabel","dataIsFocusable","isCheckboxTypeRole","checkedOrPressedValue","onRenderIcon","onRenderAriaDescription","onRenderChildren","onRenderMenu","onRenderMenuIcon","Button","Content","persistMenu","renderPersistedMenuHiddenOnMount","primaryActionButtonProps","getBaseSplitButtonClassNames","SplitButton","splitButtonMenuProps","splitButtonAriaLabel","splitButtonProps","noOutline","iconStyle","fontSize","border","disabledBackground","disabledText","buttonHighContrastFocus","customStyles","_m","_o","_p","_q","_r","_s","splitButtonDividerBaseStyles","splitButtonStyles","baseButtonStyles","getBaseButtonStyles","getSplitButtonStyles","iconButtonStyles","IconButton","__decorate","_baseUrl","UpdateFíleEmailSettings","userObj","dirEntryId","getBaseUrl","BaseUrl","Endpoint","response","error","AddGroupAccess","groups","AddUserAccess","users","AddDataSet","AddSQLTableDataSet","connectionString","dataBase","table","schema","dr","AddSalesForce","ChangeDataSetEnabled","reject","ChangeDataSetSqlTableEnabled","ChangeEndPointTypeDataSet","endPointType","UpdateDataSet","dataset","UpdateDataSetSQlTable","br","UpdateSalesForce","salesForce","UpdateSalesForceName","UpdateDataSetRow","data","isNew","SearchDataSetServer","query","GetColumnsForSharePointLists","tenantId","siteId","listId","SearchAllSharePointLists","DeleteDataSetRow","rowId","ExportDataSet","ExportPhraseLib","ImportPreviewDataSet","FileName","replace","LoadPreviewDataSet","Blobfile","DeleteDataSet","DeleteDataSetSQLTable","DeleteSalesForceDocument","AddColumnToDataSet","dataSetId","col","EditColumnDataSet","EditColumnDataSetSqlTable","DeleteColumnDataSet","setSharePointTenant","getSharePointTenant","ImportPreviewPhraseLib","UpdateDataSetAccess","_usersToAdd","_usersToRemove","_groupsToAdd","_groupsToRemove","UpdateAccessSalesForce","UpdateApiHookAccess","GetAllDataSet","createSasToken","validityMonths","UpdateAutoUpdateSettingsTable","autoUpdate","putObj","ShowSasToken","GetDataBases","connection","GetSQlTables","database","RefreshTable","tableId","GetAllSqlTableDataSets","GetSalesForceDocument","GetAllSalesForceDocuments","GetSalesforceToken","expireDate","_body","LoadPreviewPhraseLib","DeletePhraseLibRow","ChangePhraseLibraryEnabled","AddPhraseLibRow","UpdatePhraseLibRow","UpdatePhraseLibRowNote","UpdatePhraseLib","phraselib","AddPhraseLib","SearchPhraseLibraries","DeletePhraseLibrary","CheckSystemHook","hook","GetAllPhraseLibraries","AddValidation","GetAllValidations","DeleteValidation","TestValidation","testObj","UpdateValidation","DeleteGroupAccess","DeleteUserAccess","GetNumberOfLinkedDirectories","parentid","HaveAccessToAllDependedCheck","GetReleaseInfo","GetNotifications","AddNotifications","notification","EditNotifications","DeleteNotificationsf","SaveAutoCreateUser","autoCreateUser","RemoveAutoCreateUser","GetEmbeddedThemes","AddEmbeddedThemes","themeInfo","EditEmbeddedThemes","DeleteEmbeddedThemes","GetEmbeddedSites","AddEmbeddedSites","siteInfo","EditEmbeddedSites","DeleteEmbeddedSites","HandleReport","reader","controller","pump","done","stream","blob","GetUserDocuments","UserObj","getFolders","portalQuestionnaire","getShareUsers","getTenantInfo","SaveTenantAndCreateScimKey","GetSitesStorageProvider","providerName","keyValuePair","saveAADgrps","grpid","grps","getAuthObject","authResult","err","GetSiteFoldersStorageProvider","siteFolderID","GetMetaItems","SetMetaData","selectedValues","metaID","dirEntryID","documentID","GetMetaDataForFilemanager","docId","fileId","updateHiddenQuestionOverwrites","dirId","overwrites","AddMetaItems","metaDataInfo","CheckIfMetadataTagIsUsed","metadataId","DeleteMetaItems","updateDirEntryTags","dirEntry","tags","GetFolderLinkingBit","folderId","parentId","RenameLinkingBit","encodedName","CreateFolderLinkingBit","DeleteFolderLinkingBit","DeleteLinkingBit","getHelpPortalUrl","domainUrl","PolicyDefaultID","APIResponseStatus","FlowType","FlowIncompleteQuestionnaireWarningType","FlowPopupType","FlowScopeType","ExtraTriggerData","EmbeddedModel","EmbeddedSaveModel","ILoginMethod","apiendpointtype","IDataSetColumnType","IEntryType","IFileOutput","IFileLinkType","QuestionType","QuestionType2","DMSProvider","WorkspacePresentationType","WorkspaceCardSize","WorkspaceLayoutType","LinksPageTypes","GetPortalConfig","GetSystemTags","GetSqlInfo","ResetReportUserPassword","password","SetNoDataFieldsInSQl","ShowReportUserPassword","GenerateNewSQLPassword","updateSystemTags","updateUsageSettings","updateAzureDomain","updateAdminSecurity","updateAdminLoginTexts","UpdateFooterStyleSettings","UpdateGeneralStyleSettings","UpdateCustomCSSSettings","UploadToBlob","formData","UpdateThemeStyleSettingsV2020","UpdateColorSettingsV2020","SaveUrlWebhook","urlHook","SaveDMSIntegration","dms","DeleteUrlWebhooks","DeleteDMSIntegration","GetUrlHooks","GetDMSIntegrations","GetIsPublicSiteEnabled","SaveAuthProvider","authProvider","DeleteAuthProviders","GetAuthProviders","AddSystemRole","rolename","DeleteSystemRole","roleid","UpdateSystemRoles","GetApiHooks","ValidateApiHook","apihookService","SaveApiHook","apihook","DeleteApiHooks","apihooks","GenerateReport","reportData","GetWorkspaces","GetSubscriptions","SaveSubscription","Subscription","DeleteSubscriptions","Subscriptions","UpdateUserAddinSettings","GetPortalFilesInformation","info","SaveMailTemplate","mail","SavePortalStrings","GetMailTemplate","GetCustomerCss","UploadCustomerCss","CreateFlow","type","UpdateFlow","flow","getFlows","flowType","getPolicies","AddPolicy","policy","SavePolicy","deletePolicy","getPowerAutomateToken","getFlow","RenameFlow","flowId","DeleteFlow","DownLoadSystemFileFromBlob","fileName","header","parts","filename","clone","blobData","GetSystemFile","GetCreateWorkspaceStyleDraft","workSpaceId","SaveWorkspaceStyleDraft","styleDraft","PublishWorkspaceStyle","DiscardWorkspaceStyleDraft","UpdateWorkspaceReleaseTriggers","workspaceId","triggers","GetPortalLinks","CreatePortalLinks","SavePortalLinks","GetSystemLanguages","DeleteSystemLanguages","languageId","SaveSystemLanguages","languages","isLocalOrDevHost","CreateLanguage","ownKeys","object","enumerableOnly","symbols","sym","_objectSpread2","_defineProperty","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_toPropertyKey","_createClass","protoProps","staticProps","_extends","_toPrimitive","hint","prim","res","canvasToBlob","module","CanvasPrototype","hasBlobConstructor","hasArrayBufferViewSupport","BlobBuilder","dataURIPattern","dataURLtoBlob","dataURI","matches","mediaType","isBase64","dataString","byteString","arrayBuffer","intArray","bb","quality","self","toBlob","isBlob","DEFAULTS","IS_BROWSER","WINDOW","isPositiveNumber","slice","toArray","REGEXP_IMAGE_TYPE","isImageType","imageTypeToExtension","extension","fromCharCode","getStringFromCharCode","dataView","start","length","str","btoa","arrayBufferToDataURL","mimeType","chunks","chunkSize","uint8","resetAndGetOrientation","orientation","littleEndian","app1Start","ifdStart","offset","exifIDCode","tiffOffset","endianness","firstIFDOffset","_length","_offset","parseOrientation","rotate","scaleX","scaleY","REGEXP_DECIMALS","normalizeDecimalNumber","times","getAdjustedSizes","_ref","aspectRatio","isValidWidth","isValidHeight","adjustedWidth","getExif","next","end","exifArray","insertExif","app0Length","newArrayBuffer","ArrayBuffer$1","FileReader","URL","REGEXP_EXTENSION","AnotherCompressor","Compressor","file","isJPEGImage","checkOrientation","retainExif","_this2","image","_ref2","_this3","naturalWidth","naturalHeight","_ref2$rotate","_ref2$scaleX","_ref2$scaleY","canvas","is90DegreesRotated","resizable","maxWidth","minWidth","minHeight","_ref3","_ref4","_ref5","_getAdjustedSizes","_getAdjustedSizes2","_getAdjustedSizes3","_getAdjustedSizes4","_getAdjustedSizes4$wi","_getAdjustedSizes4$he","destX","destY","destWidth","destHeight","params","srcX","srcY","srcWidth","srcHeight","_getAdjustedSizes5","_ref6","fillStyle","_ref7","_ref8","date","debugLog","debugMode","base64ToBlob","base64","mimetype","slicesize","bytechars","bytearrays","bytenums","bytearray","GetFileIcon","FileType","ext","imgtxt","FileTypeIconMap","getCurrentUser","d","n","getUserObject","getConfigObject","_config","GetCurrentConfig","configResult","newGuid","classNamesMessageBar","classNamesQuestionnaire","GetCSSvalueFromElement","_n","_t","_u","_v","_w","_x","_y","_z","_A","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_S","_T","_U","_V","_W","_X","_Y","_Z","__","_$","_aa","_ba","_ca","_da","_ea","_fa","_ga","_ha","_ia","_ja","_ka","_la","_ma","_na","_oa","_pa","_qa","_ra","_sa","_ta","_ua","_va","_wa","_xa","_ya","_za","_Aa","_Ba","_Ca","classNamesTagEditor","classNamesTagContainer","_copyAndSort","columnKey","isSortedDescending","dateKey","regex","numStart","nonNumStart","numAMatch","numBMatch","numAStart","numBStart","numAEndMatch","numBEndMatch","numAEnd","numBEnd","strAStart","strBStart","strAEnd","strBEnd","formatDate","dateobj","Usetime","today","timeoffset","twoDigitMonth","twoDigitDate","currentDate","b64EncodeUnicode","p1","b64DecodeUnicode","c","GetAllDirParents","FullDir","myParent","GetAllDocumentParents","PopulateChildren","FolderEntries","myChildren","PopulateDependant","PopulateLinkedDirectories","linkedDirEntry","property","getThemeSettings","themeSettings","activeConfig","t","fontf","myTheme1","loadTheme","footerWidth","checkFolderFilesAccess","folder","user","parents","userAccessFound","groupAccessFound","getPlainText","html","_theme","compressImage","size","compressedFile"],"mappings":"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CA,UACA,WACA,SACA,UACA,YACA,mBACA,aACA,UACA,UACA,YACA,mBACA,mBACA,YACA,cACA,UACA,eACA,mBACA,cACA,UACA,SACA,YACA,aACA,eACA,WACA,YACA,YACA,YACA,eACA,iBACA,YACA,UACA,iBACA,gBACA,gBACA,SACA,YACA,cACA,aACA,cACA,aACA,cACA,SACA,cACA,qBACA,eACA,eACA,cACA,aACA,cACA,YACA,mBACA,WACA,gBACA,aACA,cACA,eACA,WACA,UACA,kBACA,gBACA,iBACA,iBACA,gBACA,eACA,gBACA,cACA,sBACA,sBACJ,CAAC,EAMUO,GAAwBP,EAAY,CAC3C,YACA,WACA,YACA,kBACA,MACA,YACA,SACA,UACA,KACA,OACA,MACA,OACA,QACA,WACA,QACA,YACA,aACA,MACJ,CAAC,EAMUQ,EAAwBR,EAAYO,GAAuBD,EAAiB,EAM5EG,GAAkBT,EAAYQ,EAAuB,CAC5D,MACJ,CAAC,EAMUE,GAAkBV,EAAYQ,EAAuB,CAC5D,SACA,OACA,QACA,UACA,MACA,OACJ,CAAC,EAMUG,GAAkBX,EAAYU,GAAiB,CACtD,QACJ,CAAC,EAMUE,GAAeZ,EAAYQ,EAAuB,CACzD,OACJ,CAAC,EAMUK,GAAeb,EAAYQ,EAAuB,CACzD,OACJ,CAAC,EAMUM,GAAmBd,EAAYQ,EAAuB,CAC7D,WACA,OACA,WACA,QACA,MACA,SACA,MACJ,CAAC,EAMUO,GAAmBf,EAAYQ,EAAuB,CAC7D,YACA,WACA,OACA,aACA,cACA,aACA,iBACA,aACA,OACA,OACJ,CAAC,EAMUQ,GAAkBhB,EAAYe,GAAkB,CACvD,SACA,MACA,iBACA,eACA,UACA,UACA,OACA,SACA,YACA,OACA,MACA,YACA,MACA,YACA,WACA,UACA,cACA,WACA,WACA,MACA,OACA,OACA,OACA,QACA,OACJ,CAAC,EAMUE,GAAqBjB,EAAYe,GAAkB,CAC1D,iBACA,OACA,UACA,OACA,YACA,YACA,cACA,WACA,WACA,OACA,MACJ,CAAC,EAMUG,GAAmBlB,EAAYe,GAAkB,CACxD,OACA,W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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,142]}