{"version":3,"sources":["./node_modules/@heartlandone/vega/dist/esm/accessibility-e5fd0fab.js","./node_modules/@heartlandone/vega/dist/esm/effect-8efd2c3c.js","./node_modules/@heartlandone/vega/dist/esm/injectPageResizeObserver-abdf0f8a.js","./node_modules/@heartlandone/vega/dist/esm/minNumberRule-b73285c8.js","./node_modules/@heartlandone/vega/dist/esm/minStringLengthRule-f294684c.js","./node_modules/@heartlandone/vega/dist/esm/misc-58f3604c.js","./node_modules/@heartlandone/vega/dist/esm/requiredFieldRule-3effaf8b.js","./src/app/core/permissions/settings-permission.ts","./src/app/quickbooks/services/quickbooks.service.ts","./src/app/shared/components/accordion/helpers.ts","./src/app/shared/models/userlocation.model.ts"],"names":["QuickbooksService","constructor","httpClient","cookieService","EventEmitter","BehaviorSubject","qbImportSubject","asObservable","baseRoute","environment","thirdPartyConfigAPIRoout","syncBaseRoute","replace","startImport","isImporting","next","loginToQuickbooks","link","post","disconnectToQuickbooks","locationId","syncData","get","saveQuickbooksConfig","quickbooksConfig","initiateSaveQuickbooksEventfunc","initiateSaveQuickBooksEvent","emit","login","isSignedIn","setAuthToken","params","code","realmId","state","syncCustomers","syncItems","userId","saveSendingOptions","option","syncInvoices","merchantName","subDomain","window","location","origin","split","indexOf","developmentConfig","i0","factory","providedIn"],"mappings":";;;;;;;;;;;;;AAAA;AACA;AACA;AACA,aAAa,4BAA4B;AACzC;AACA;AACA;AACA;AACA;AACA,4GAA4G,gDAAgD;AAC5J;AACA;AACA;;AAEoD;;;;;;;;;;;;;;;;;ACdpD;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEoD;;;;;;;;;;;;;;;;;AChDkB;;AAEtE;AACA;AACA;AACA;AACA,WAAW,8BAA8B;AACzC;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA,WAAW,4DAA4D;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,2DAAoB;AAC5D;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEyC;;;;;;;;;;;;;;;;;;AC9CmB;;AAE5D;AACA;AACA;AACA,gBAAgB;AAChB,eAAe,oBAAoB;AACnC;AACA;AACA;AACA;AACA;AACA,cAAc,oBAAoB;AAClC,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,eAAe;AAC9B,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA,mDAAmD,aAAa,IAAI,MAAM;AAC1E;AACA;AACA;AACA,eAAe,sDAAe;AAC9B,eAAe,sDAAe,yDAAyD,SAAS;AAChG;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,oBAAoB;AACjC,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA,kBAAkB,sDAAe;AACjC;AACA;;AAEA;AACA;AACA;AACA,gBAAgB;AAChB,eAAe,oBAAoB;AACnC;AACA;AACA;AACA;AACA;AACA,cAAc,oBAAoB;AAClC,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,eAAe;AAC9B,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA,mDAAmD,aAAa,IAAI,MAAM;AAC1E;AACA;AACA;AACA,eAAe,sDAAe;AAC9B,eAAe,sDAAe,yDAAyD,SAAS;AAChG;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,oBAAoB;AACjC,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA,kBAAkB,sDAAe;AACjC;AACA;;AAEkD;;;;;;;;;;;;;;;;;ACtIlD;AACA;AACA;AACA,gBAAgB;AAChB,eAAe,wBAAwB;AACvC;AACA;AACA;AACA;AACA;AACA,cAAc,wBAAwB;AACtC,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,eAAe;AAC9B,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA,mDAAmD,aAAa,IAAI,MAAM;AAC1E;AACA;AACA;AACA;AACA,kFAAkF,aAAa;AAC/F;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,oBAAoB;AACjC,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB;AAChB,eAAe,wBAAwB;AACvC;AACA;AACA;AACA;AACA;AACA,cAAc,wBAAwB;AACtC,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,eAAe;AAC9B,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA,mDAAmD,aAAa,IAAI,MAAM;AAC1E;AACA;AACA;AACA;AACA,kFAAkF,aAAa;AAC/F;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,oBAAoB;AACjC,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAE8D;;;;;;;;;;;;;;;;;;;ACpI9D;AACA;AACA;AACA;;AAEiJ;;;;;;;;;;;;;;;;ACLjJ;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,6BAA6B;AAC1C,eAAe,eAAe;AAC9B;AACA;AACA;AACA,mDAAmD,aAAa,IAAI,MAAM;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,oBAAoB;AACjC,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEkC;;;;;;;;;;;;;;;;;;;;AC3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","file":"common.11a521274118ce87993e.js","sourcesContent":["/**\n * It returns a function that takes a KeyboardEvent and dispatches a click event on the currentTarget if the key is Enter.\n *\n * @returns {(e: KeyboardEvent) => void } A function that takes a KeyboardEvent and dispatches a click event on the currentTarget.\n */\nfunction createEnterKeyHandlerToTriggerClick() {\n return function (e) {\n var _a;\n if (e.key === 'Enter') {\n (_a = e.currentTarget) === null || _a === void 0 ? void 0 : _a.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, view: window }));\n }\n };\n}\n\nexport { createEnterKeyHandlerToTriggerClick as c };\n","/**\n * Utility method to apply ripple effect for the given event by:\n * 1. create a mask element,\n * 2. add it to the target element,\n * 3. and add a ripple element to the mask\n *\n * @param {MouseEvent} e - The event object that was triggered.\n */\n/**\n * Takes an element and returns its offsetHeight to trigger reflow,\n * which can be used to reset the animation.\n * For more details, {@see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation}\n *\n * Note: we cannot simply invoke `element.offsetHeight` to trigger reflow\n * as the statement will get erased during VM optimization phase\n *\n * @param {HTMLElement} element - HTMLElement - The element to be measured.\n * return the offsetHeight of the given element\n */\nconst reflow = (element) => {\n const offsetHeight = element.offsetHeight;\n if (!isNaN(offsetHeight)) {\n element.dataset['vegaReflow'] = offsetHeight.toString();\n }\n};\n/**\n * Executes a callback after a transition has ended on a given element\n *\n * @param {() => void} callback - The function to execute after the transition ends\n * @param {HTMLElement} element - The element to listen for transitionend event on\n * @param {number} [timeout] - The timeout in milliseconds after which the callback will be executed even if the\n * transitionend event hasn't been fired.\n */\nfunction executeAfterTransition(callback, element, timeout) {\n // timeoutId cannot be number since typescript/jest is taking it as NodeJS.Timeout instead of window.setTimeout\n let timeoutId = 0;\n /**\n * The handler used to listen for transitionend event\n */\n const handler = () => {\n element.removeEventListener('transitionend', handler);\n timeout && clearTimeout(timeoutId);\n callback();\n };\n element.addEventListener('transitionend', handler);\n timeoutId = timeout ? setTimeout(handler, timeout) : 0;\n}\n\nexport { executeAfterTransition as e, reflow as r };\n","import { g as getCurrentBreakpoint } from './breakpoints-011b5bc5.js';\n\n/**\n * It creates a new `ResizeObserver` instance and observes the elements returned by the `targets`\n * function\n *\n * @param {InjectPageResizeObserverEntry} [observerEntry] - InjectPageResizeObserverEntry - This is the object that contains the\n * callback function.\n * @returns {void} A decorator function that takes a component class as an argument.\n */\nfunction InjectPageResizeObserver(observerEntry) {\n return (componentClass, currentBreakpointName) => {\n const { connectedCallback, componentDidLoad, disconnectedCallback } = componentClass;\n /* eslint-disable jsdoc/require-jsdoc */\n const createResizeObserver = (host, observerEntry) => {\n var _a;\n (_a = host.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n const VegaResizeObserver = window['VegaResizeObserver'] || ResizeObserver;\n host.resizeObserver = new VegaResizeObserver(() => {\n if (observerEntry) {\n observerEntry.callback(host);\n }\n else {\n host[currentBreakpointName] = getCurrentBreakpoint();\n }\n });\n host.resizeObserver.observe((observerEntry === null || observerEntry === void 0 ? void 0 : observerEntry.target) ? observerEntry.target(host) : document.body);\n };\n componentClass.componentDidLoad = function () {\n createResizeObserver(this, observerEntry);\n return componentDidLoad === null || componentDidLoad === void 0 ? void 0 : componentDidLoad.call(this);\n };\n componentClass.connectedCallback = function () {\n if (this.resizeObserver === null) {\n createResizeObserver(this, observerEntry);\n }\n return connectedCallback === null || connectedCallback === void 0 ? void 0 : connectedCallback.call(this);\n };\n componentClass.disconnectedCallback = function () {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n return disconnectedCallback === null || disconnectedCallback === void 0 ? void 0 : disconnectedCallback.call(this);\n };\n };\n}\n\nexport { InjectPageResizeObserver as I };\n","import { c as convertToNumber } from './number-400b3bf2.js';\n\n/**\n * A rule that checks if the input is less than or equal to a maximum value\n *\n * @implements {FormFieldValidationRule}\n * @property {{ maxValue: number }} config config including the maxValue limit for validation\n */\nclass MaxNumberRule {\n /**\n * It creates a new instance of the class with the given config.\n *\n * @param {{ maxValue: number }} config config including the maxValue limit for validation\n * @param {number} config.maxValue number of the maxValue\n */\n constructor(config) {\n this.config = config;\n }\n /**\n * If the input is a number, return true if it's less than or equal to the maximum value, false otherwise\n *\n * @param {unknown} input - The input value to be evaluated.\n * @returns {EvaluateResult} The result of the evaluation.\n * @throws {Error} if input is unable to evaluate\n */\n evaluate(input) {\n var _a;\n if (!this.isAcceptedInputType(input)) {\n throw new Error(`Unexpected type of input: ${typeof input}: ${input}`);\n }\n const maxValue = ((_a = this.config) === null || _a === void 0 ? void 0 : _a.maxValue) || Number.MAX_VALUE;\n return {\n isValid: convertToNumber(input) <= maxValue,\n message: convertToNumber(input) <= maxValue ? '' : `The maximum input value is ${maxValue}`,\n };\n }\n /**\n * If the input is accepted and the status is not disabled and visible, then return true\n *\n * @param {unknown} input - The input to be evaluated.\n * @param {FormFieldStatusMeta} [status] - FormFieldStatusMeta\n * @returns {boolean} A boolean value.\n */\n canEvaluate(input, status) {\n return status\n ? this.isAcceptedInputType(input) && !status.disabled && status.visible\n : this.isAcceptedInputType(input);\n }\n /**\n * If the field is not disabled, visible, and has been touched or modified, then show the error\n *\n * @param {FormFieldStatusMeta} status - FormFieldStatusMeta\n * @returns {boolean} A boolean value.\n */\n shouldShowError(status) {\n return !status.disabled && status.visible && (status.touched || status.modified);\n }\n /**\n * If the input is not a number, then return false, otherwise return true.\n *\n * @param {unknown} input - The input value to be converted.\n * @returns {boolean} a boolean value.\n */\n isAcceptedInputType(input) {\n return !isNaN(convertToNumber(input));\n }\n}\n\n/**\n * A rule that checks if the input is larger than or equal to a minimum value\n *\n * @implements {FormFieldValidationRule}\n * @property {{ minValue: number }} config config including the minValue limit for validation\n */\nclass MinNumberRule {\n /**\n * It creates a new instance of the class with the given config.\n *\n * @param {{ minValue: number }} config config including the minValue limit for validation\n * @param {number} config.minValue number of the minValue\n */\n constructor(config) {\n this.config = config;\n }\n /**\n * If the input is a number, return true if it's more than or equal to the minimum value, false otherwise\n *\n * @param {unknown} input - The input value to be evaluated.\n * @returns {EvaluateResult} The result of the evaluation.\n * @throws {Error} if input is unable to evaluate\n */\n evaluate(input) {\n var _a;\n if (!this.isAcceptedInputType(input)) {\n throw new Error(`Unexpected type of input: ${typeof input}: ${input}`);\n }\n const minValue = ((_a = this.config) === null || _a === void 0 ? void 0 : _a.minValue) || 0;\n return {\n isValid: convertToNumber(input) >= minValue,\n message: convertToNumber(input) >= minValue ? '' : `The minimum input value is ${minValue}`,\n };\n }\n /**\n * If the input is accepted and the status is not disabled and visible, then return true\n *\n * @param {unknown} input - The input to be evaluated.\n * @param {FormFieldStatusMeta} [status] - FormFieldStatusMeta\n * @returns {boolean} A boolean value.\n */\n canEvaluate(input, status) {\n return status\n ? this.isAcceptedInputType(input) && !status.disabled && status.visible\n : this.isAcceptedInputType(input);\n }\n /**\n * If the field is not disabled, visible, and has been touched or modified, then show the error\n *\n * @param {FormFieldStatusMeta} status - FormFieldStatusMeta\n * @returns {boolean} A boolean value.\n */\n shouldShowError(status) {\n return !status.disabled && status.visible && (status.touched || status.modified);\n }\n /**\n * If the input is not a number, then return false, otherwise return true.\n *\n * @param {unknown} input - The input value to be converted.\n * @returns {boolean} a boolean value.\n */\n isAcceptedInputType(input) {\n return !isNaN(convertToNumber(input));\n }\n}\n\nexport { MinNumberRule as M, MaxNumberRule as a };\n","/**\n * A rule that checks if the length of input is less than or equal to a maximum value\n *\n * @implements {FormFieldValidationRule}\n * @property {{ maxStrLength: number }} config config including the maxStrLength limit for validation\n */\nclass MaxStringLengthRule {\n /**\n * It creates a new instance of the class with the given config.\n *\n * @param {{ maxStrLength: number }} config config including the maxStrLength limit for validation\n * @param {number} config.maxStrLength number of the maxStrLength\n */\n constructor(config) {\n this.config = config;\n }\n /**\n * It checks if the input is a string and if it's shorter than the maximum string length\n *\n * @param {string} input - string\n * @returns {EvaluateResult} An object with two properties: isValid and message.\n * @throws {Error} if input is unable to evaluate\n */\n evaluate(input) {\n var _a;\n if (!this.isAcceptedInputType(input)) {\n throw new Error(`Unexpected type of input: ${typeof input}: ${input}`);\n }\n const maxStrLength = ((_a = this.config) === null || _a === void 0 ? void 0 : _a.maxStrLength) || Number.MAX_VALUE;\n return {\n isValid: input.length <= maxStrLength,\n message: input.length <= maxStrLength ? '' : `The maximum input length is ${maxStrLength}`,\n };\n }\n /**\n * It returns true if the input is of an accepted type and the field is not disabled and visible\n *\n * @param {unknown} input - The input to be evaluated.\n * @param {FormFieldStatusMeta} [status] - FormFieldStatusMeta\n * @returns {boolean} A boolean value.\n */\n canEvaluate(input, status) {\n return status\n ? this.isAcceptedInputType(input) && !status.disabled && status.visible\n : this.isAcceptedInputType(input);\n }\n /**\n * If the field is not disabled, visible, and has been touched or modified, then show the error\n *\n * @param {FormFieldStatusMeta} status - FormFieldStatusMeta\n * @returns {boolean} A boolean value.\n */\n shouldShowError(status) {\n return !status.disabled && status.visible && (status.touched || status.modified);\n }\n /**\n * This function returns true if the input is a string, and false otherwise.\n *\n * @param {unknown} input - The input to be validated.\n * @returns {boolean} A boolean value.\n */\n isAcceptedInputType(input) {\n return typeof input === 'string';\n }\n}\n\n/**\n * A rule that checks if the length of input is more than or equal to a minimum value\n *\n * @implements {FormFieldValidationRule}\n * @property {{ minStrLength: number }} config config including the minStrLength limit for validation\n */\nclass MinStringLengthRule {\n /**\n * It creates a new instance of the class with the given config.\n *\n * @param {{ minStrLength: number }} config config including the minStrLength limit for validation\n * @param {number} config.minStrLength number of the minStrLength\n */\n constructor(config) {\n this.config = config;\n }\n /**\n * It checks if the input is a string and if it's longer than the minimum string length\n *\n * @param {string} input - string\n * @returns {EvaluateResult} An object with two properties: isValid and message.\n * @throws {Error} if input is unable to evaluate\n */\n evaluate(input) {\n var _a;\n if (!this.isAcceptedInputType(input)) {\n throw new Error(`Unexpected type of input: ${typeof input}: ${input}`);\n }\n const minStrLength = ((_a = this.config) === null || _a === void 0 ? void 0 : _a.minStrLength) || 0;\n return {\n isValid: input.length >= minStrLength,\n message: input.length >= minStrLength ? '' : `The minimum input length is ${minStrLength}`,\n };\n }\n /**\n * If the input is accepted and the status is not disabled and visible, then return true\n *\n * @param {unknown} input - The input to be evaluated.\n * @param {FormFieldStatusMeta} [status] - FormFieldStatusMeta\n * @returns {boolean} A boolean value.\n */\n canEvaluate(input, status) {\n return status\n ? this.isAcceptedInputType(input) && !status.disabled && status.visible\n : this.isAcceptedInputType(input);\n }\n /**\n * If the field is not disabled, visible, and has been touched or modified, then show the error\n *\n * @param {FormFieldStatusMeta} status - FormFieldStatusMeta\n * @returns {boolean} A boolean value.\n */\n shouldShowError(status) {\n return !status.disabled && status.visible && (status.touched || status.modified);\n }\n /**\n * This function returns true if the input is a string, and false otherwise.\n *\n * @param {unknown} input - The input value to be validated.\n * @returns {boolean} A boolean value.\n */\n isAcceptedInputType(input) {\n return typeof input === 'string';\n }\n}\n\nexport { MinStringLengthRule as M, MaxStringLengthRule as a };\n","const HEARTLAND_TOS_URL = 'https://www.heartland.us/terms';\nconst HEARTLAND_PRIVACY_URL = 'https://www.heartland.us/privacy-policy';\nconst HEARTLAND_GOOGLE_PRIVACY_POLICY_URL = 'https://policies.google.com/privacy';\nconst HEARTLAND_GOOGLE_TREMS_SERVICE_URL = 'https://policies.google.com/terms';\n\nexport { HEARTLAND_TOS_URL as H, HEARTLAND_PRIVACY_URL as a, HEARTLAND_GOOGLE_PRIVACY_POLICY_URL as b, HEARTLAND_GOOGLE_TREMS_SERVICE_URL as c };\n","/**\n * A rule that checks if a string is empty or not\n *\n * @implements {FormFieldValidationRule}\n */\nclass RequiredFieldRule {\n constructor() {\n /**\n * A function that checks if the item is a string, number, or boolean.\n *\n * @param {unknown} item - The item to be checked.\n * @returns {boolean} The return value is a boolean that indicates whether the item is string, number or boolean.\n */\n this.checkArrayItemType = (item) => typeof item === 'string' || typeof item === 'number' || typeof item === 'boolean';\n }\n /**\n * If the input is a number or a boolean, return true. If the input is a string, return true if the string is not empty\n *\n * @param {Primitive | Array} input - The input to be evaluated.\n * @returns {EvaluateResult} An object with two properties: isValid and message.\n */\n evaluate(input) {\n if (!this.isAcceptedInputType(input)) {\n throw new Error(`Unexpected type of input: ${typeof input}: ${input}`);\n }\n else if (typeof input === 'number' || typeof input === 'boolean') {\n return {\n isValid: true,\n message: '',\n };\n }\n else if (typeof input === 'string' || Array.isArray(input)) {\n return {\n isValid: input.length > 0,\n message: input.length <= 0 ? 'This field is required' : '',\n };\n }\n else if (input === null) {\n return {\n isValid: false,\n message: 'This field is required',\n };\n }\n }\n /**\n * If the input is accepted and the status is not disabled and visible, then return true\n *\n * @param {unknown} input - The input to be evaluated.\n * @param {FormFieldStatusMeta} [status] - FormFieldStatusMeta\n * @returns {boolean} The return value is a boolean that indicates whether the input can be evaluated.\n */\n canEvaluate(input, status) {\n return status\n ? this.isAcceptedInputType(input) && !status.disabled && status.visible\n : this.isAcceptedInputType(input);\n }\n /**\n * If the field is not disabled, visible, and has been touched or modified, then show the error\n *\n * @param {FormFieldStatusMeta} status - FormFieldStatusMeta\n * @returns {boolean} A boolean value.\n */\n shouldShowError(status) {\n return !status.disabled && status.visible && (status.touched || status.modified);\n }\n /**\n * If the input is a string, number, boolean, or null, return true, otherwise return false.\n *\n * @param {unknown} input - The input value to be validated.\n * @returns {boolean} a boolean value.\n */\n isAcceptedInputType(input) {\n return (typeof input === 'string' ||\n typeof input === 'number' ||\n typeof input === 'boolean' ||\n (Array.isArray(input) && input.every(this.checkArrayItemType)) ||\n input === null);\n }\n}\n\nexport { RequiredFieldRule as R };\n","import { Injectable } from '@angular/core';\r\nimport { AuthService } from '../auth.service';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SettingsPermission {\r\n adminSettingModules: string[];\r\n constructor(private authService: AuthService) {\r\n this.adminSettingModules = [\r\n 'locations',\r\n 'terminals',\r\n 'users',\r\n 'settings',\r\n 'notifications',\r\n 'audit',\r\n ];\r\n }\r\n\r\n mapPermissions() {\r\n let mappedPermission = [];\r\n if (!this.authService.user) return [];\r\n this.authService.user.AccessRoles.forEach((item) => {\r\n if (\r\n this.adminSettingModules.indexOf(item.ModuleName.toLowerCase()) > -1\r\n ) {\r\n mappedPermission.push({\r\n ModuleName: item.ModuleName,\r\n CanView: item.View,\r\n CanEdit: item.Edit,\r\n CanAdd: item.Add,\r\n CanUpdate: item.Update,\r\n CanDelete: item.Delete,\r\n });\r\n }\r\n });\r\n return mappedPermission;\r\n }\r\n\r\n adminSettingModulesCanView() {\r\n return this.mapPermissions().filter((item) => {\r\n return item.CanView === true;\r\n });\r\n }\r\n\r\n canAccessAdminSettingMenu() {\r\n if (!this.authService.user) return false;\r\n return Number(this.authService.user.RoleId) === 1;\r\n }\r\n}\r\n","import { EventEmitter, Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { environment } from 'src/environments/environment';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { QuickBooksConfig } from 'src/app/shared/models/third-party-software-config/quickbooks-config';\r\nimport { developmentConfig } from 'src/environments/merchant';\r\nimport { CookieService } from 'ngx-cookie-service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class QuickbooksService {\r\n initiateSaveQuickBooksEvent: EventEmitter = new EventEmitter();\r\n private baseRoute: string;\r\n private syncBaseRoute: string;\r\n private thirdPartyConfigAPIRoout: string;\r\n\r\n private qbImportSubject = new BehaviorSubject(false);\r\n qbImport = this.qbImportSubject.asObservable();\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n private cookieService: CookieService\r\n ) {\r\n this.baseRoute = environment.quickbooksAPIRoot;\r\n this.thirdPartyConfigAPIRoout = environment.thirdPartyConfigAPIRoout;\r\n this.syncBaseRoute = this.baseRoute.replace(\r\n 'api/quickbooks',\r\n 'quickbooks/api/quickbooks'\r\n );\r\n }\r\n\r\n startImport(isImporting: boolean) {\r\n this.qbImportSubject.next(isImporting);\r\n }\r\n\r\n loginToQuickbooks(link: any): Observable {\r\n return this.httpClient.post(\r\n `${this.baseRoute}/login?redirectLink=${link}`,\r\n null\r\n );\r\n }\r\n\r\n disconnectToQuickbooks(locationId: number): Observable {\r\n return this.httpClient.post(\r\n `${this.syncBaseRoute}/disconnect?locationId=${locationId}`,\r\n null\r\n );\r\n }\r\n\r\n syncData(): Observable {\r\n return this.httpClient.get(`${this.baseRoute}/syncdata`);\r\n }\r\n\r\n saveQuickbooksConfig(quickbooksConfig: QuickBooksConfig): Observable {\r\n return this.httpClient.post(\r\n `${this.baseRoute}/insertqbconfig`,\r\n quickbooksConfig\r\n );\r\n }\r\n\r\n initiateSaveQuickbooksEventfunc(): void {\r\n this.initiateSaveQuickBooksEvent.emit('');\r\n }\r\n\r\n // Sync functions\r\n login(locationId: number): Observable {\r\n return this.httpClient.post(\r\n `${this.syncBaseRoute}/login?LocationId=${locationId}`,\r\n null\r\n );\r\n }\r\n\r\n isSignedIn(locationId?: number): Observable {\r\n return this.httpClient.get(\r\n `${this.syncBaseRoute}/active?locationId=${locationId}`\r\n );\r\n }\r\n\r\n setAuthToken(params: any): Observable {\r\n return this.httpClient.get(\r\n `${this.syncBaseRoute}/getauthtokensasync?code=${params.code}&realmId=${\r\n params.realmId\r\n }&state=${params.state}&subdomain=${this.cookieService.get(\r\n 'merchantSubdomain'\r\n )}`\r\n );\r\n }\r\n\r\n syncCustomers(locationId: number): Observable {\r\n return this.httpClient.get(\r\n `${this.syncBaseRoute}/customer/pullqbcustomertocashjar?locationId=${locationId}`\r\n );\r\n }\r\n\r\n syncItems(userId: number, locationId: number): Observable {\r\n return this.httpClient.post(\r\n `${this.syncBaseRoute}/item/pullqbitemstocashjar?userId=${userId}&locationId=${locationId}`,\r\n null\r\n );\r\n }\r\n\r\n saveSendingOptions(locationId: number, option: number): Observable {\r\n return this.httpClient.post(\r\n `${this.thirdPartyConfigAPIRoout}/updateqbsendoption?locationId=${locationId}&qbSendOption=${option}`,\r\n null\r\n );\r\n }\r\n\r\n syncInvoices(locationId: number): Observable {\r\n let merchantName = '';\r\n let subDomain = window.location.origin.split('.')[0]; //WHERE [0] IS http(s)://subdomainName\r\n\r\n if (\r\n subDomain.indexOf('http://localhost') > -1 ||\r\n subDomain.indexOf('http://127') > -1\r\n ) {\r\n merchantName = developmentConfig.merchant;\r\n } else {\r\n merchantName = subDomain.replace(/^https:/, '').replace('//', '');\r\n merchantName = merchantName.replace(/^http:/, '').replace('//', '');\r\n }\r\n\r\n return this.httpClient.post(\r\n `${this.syncBaseRoute}/invoice/pullqbinvoicestocashjar?locationId=${locationId}&businessCode=${merchantName}`,\r\n null\r\n );\r\n }\r\n}\r\n","/**\r\n * @license\r\n * Copyright Akveo. All Rights Reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n */\r\n\r\nexport type NbNullableInput = string | null | undefined;\r\nexport type NbBooleanInput = boolean | NbNullableInput;\r\n\r\nexport function convertToBoolProperty(val: any): boolean {\r\n if (typeof val === 'string') {\r\n val = val.toLowerCase().trim();\r\n\r\n return val === 'true' || val === '';\r\n }\r\n\r\n return !!val;\r\n}\r\n\r\nexport function getElementHeight(el) {\r\n /**\r\n *\r\n * TODO: Move helpers in separate common module.\r\n * TODO: Provide window through di token.\r\n * */\r\n const style = window.getComputedStyle(el);\r\n const marginTop = parseInt(style.getPropertyValue('margin-top'), 10);\r\n const marginBottom = parseInt(style.getPropertyValue('margin-bottom'), 10);\r\n return el.offsetHeight + marginTop + marginBottom;\r\n}\r\n\r\nexport function findValueByKey(key) {\r\n // Check if localStorage is supported by the browser\r\n if (typeof localStorage === 'undefined') {\r\n console.error('localStorage is not supported by your browser.');\r\n return;\r\n }\r\n\r\n // Loop through all items in localStorage\r\n for (let i = 0; i < localStorage.length; i++) {\r\n // Get the key at index i\r\n const storedKey = localStorage.key(i);\r\n try {\r\n const value = JSON.parse(localStorage.getItem(storedKey));\r\n // Check if the current key matches the desired key\r\n if (value[key]) {\r\n return value[key];\r\n }\r\n } catch (error) {}\r\n }\r\n}\r\n\r\nexport function findObjectByKeyAndValue(key: string, search: string) {\r\n // Check if localStorage is supported by the browser\r\n if (typeof localStorage === 'undefined') {\r\n console.error('localStorage is not supported by your browser.');\r\n return;\r\n }\r\n\r\n // Loop through all items in localStorage\r\n for (let i = 0; i < localStorage.length; i++) {\r\n // Get the key at index i\r\n const storedKey = localStorage.key(i);\r\n try {\r\n const value = JSON.parse(localStorage.getItem(storedKey));\r\n // Check if the current key matches the desired key\r\n if (value[key] === search) {\r\n return value;\r\n }\r\n } catch (error) {}\r\n }\r\n\r\n // If key is not found, return null\r\n return null;\r\n}\r\n","export class UserLocation {\r\n public LocationId : number;\r\n public MID : string;\r\n public Public_API_Key : string;\r\n public Secret_API_Key : string; \r\n}"],"sourceRoot":"webpack:///"}