{"version":3,"file":"loader-b24frame.mjs","sources":["../../src/loader-b24frame.ts"],"sourcesContent":["import type { B24FrameQueryParams } from './types/auth'\nimport type { RestrictionParams } from './types/limiters'\nimport type { ApiVersion } from './types/b24'\nimport { B24Frame } from './frame'\nimport { SdkError } from './core/sdk-error'\n\ntype whileB24InitCallback = {\n  resolve: (b24Frame: B24Frame) => void\n  reject: (error: any) => void\n}\n\nconst delay = 50\n\nlet $b24Frame: null | B24Frame = null\nlet isInit = false\nlet connectError: null | Error = null\nlet isMakeFirstCall = false\n\nlet listCallBack: whileB24InitCallback[] = []\nlet isStartWatch = false\n\n// region Watch ////\nfunction startWatch() {\n  window.setTimeout(() => {\n    if (!isInit || $b24Frame === null) {\n      startWatch()\n      return\n    }\n\n    processResult()\n    listCallBack = []\n  }, delay)\n}\n\nfunction processResult(): void {\n  if (null !== connectError) {\n    for (const callBack of listCallBack) {\n      callBack.reject(connectError)\n    }\n  }\n\n  if (!isInit || $b24Frame === null) {\n    return\n  }\n\n  for (const callBack of listCallBack) {\n    callBack.resolve($b24Frame as B24Frame)\n  }\n}\n// endregion ////\n\nexport async function initializeB24Frame(\n  options?: {\n    version?: ApiVersion\n    restrictionParams?: Partial<RestrictionParams>\n  }\n): Promise<B24Frame> {\n  // region isInit ////\n  if (isInit && null !== $b24Frame) {\n    return Promise.resolve($b24Frame)\n  }\n  // endregion ////\n\n  // region Not First Call ///\n  if (isMakeFirstCall) {\n    // region startWatch ///\n    if (!isStartWatch) {\n      isStartWatch = true\n      startWatch()\n    }\n    // endregion ////\n\n    return new Promise((resolve, reject) => {\n      listCallBack.push({\n        resolve: resolve,\n        reject: reject\n      })\n    })\n  }\n  // endregion ////\n\n  // region First Call ///\n  isMakeFirstCall = true\n\n  return new Promise((resolve, reject) => {\n    const queryParams: B24FrameQueryParams = {\n      DOMAIN: null,\n      PROTOCOL: false,\n      APP_SID: null,\n      LANG: null\n    }\n\n    if (window.name) {\n      const [domain, protocol, appSid] = window.name.split('|')\n      queryParams.DOMAIN = domain\n      queryParams.PROTOCOL = Number.parseInt(protocol ?? '0') === 1\n      queryParams.APP_SID = appSid\n      queryParams.LANG = null\n    }\n\n    if (!queryParams.DOMAIN || !queryParams.APP_SID) {\n      // throw new Error('Unable to initialize Bitrix24Frame library!')\n      connectError = new SdkError({\n        code: 'JSSDK_CLIENT_SIDE_WARNING',\n        description: 'Well done! Now paste this URL into the Bitrix24 app settings',\n        status: 500\n      })\n      reject(connectError)\n    }\n\n    $b24Frame = new B24Frame(\n      queryParams,\n      options\n    )\n\n    $b24Frame\n      .init()\n      .then(() => {\n        isInit = true\n        resolve($b24Frame as B24Frame)\n      })\n      .catch((error) => {\n        connectError = error\n        reject(connectError)\n      })\n  })\n  // endregion ////\n}\n"],"names":[],"mappings":"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"}