{"version":3,"file":"b24.mjs","sources":["../../../src/frame/b24.ts"],"sourcesContent":["import type { LoggerInterface } from '../logger'\nimport type { B24LangList } from '../core/language/list'\nimport type { AuthActions, MessageInitData, B24FrameQueryParams } from '../types/auth'\nimport type { RestrictionParams } from '../types/limiters'\nimport type { TypeB24, ApiVersion } from '../types/b24'\nimport { AbstractB24 } from '../core/abstract-b24'\nimport { HttpV2 } from '../core/http/v2'\nimport { HttpV3 } from '../core/http/v3'\nimport { AppFrame } from './frame'\nimport { MessageManager, MessageCommands } from './message'\nimport { AuthManager } from './auth'\nimport { ParentManager } from './parent'\nimport { OptionsManager } from './options'\nimport { DialogManager } from './dialog'\nimport { SliderManager } from './slider'\nimport { PlacementManager } from './placement'\n\n/**\n * B24 Manager. Replacement api.bitrix24.com\n *\n * @link https://api.bitrix24.com/api/v1/\n * @link https://bitrix24.github.io/b24jssdk/docs/frame/\n * @see /bitrix/js/rest/applayout.js\n *\n * @todo add docs\n */\nexport class B24Frame extends AbstractB24 implements TypeB24 {\n  #isInstallMode: boolean = false\n  #isFirstRun: boolean = false\n\n  readonly #appFrame: AppFrame\n  readonly #messageManager: MessageManager\n  readonly #authManager: AuthManager\n  readonly #parentManager: ParentManager\n  readonly #optionsManager: OptionsManager\n  readonly #dialogManager: DialogManager\n  readonly #sliderManager: SliderManager\n  readonly #placementManager: PlacementManager\n\n  readonly #restrictionParams: undefined | Partial<RestrictionParams>\n\n  // region Init ////\n  constructor(\n    queryParams: B24FrameQueryParams,\n    options?: {\n      restrictionParams?: Partial<RestrictionParams>\n    }\n  ) {\n    super()\n\n    this.#restrictionParams = options?.restrictionParams\n\n    this.#appFrame = new AppFrame(queryParams)\n\n    this.#messageManager = new MessageManager(this.#appFrame)\n    this.#messageManager.subscribe()\n\n    this.#authManager = new AuthManager(\n      this.#appFrame,\n      this.#messageManager\n    )\n    this.#parentManager = new ParentManager(this.#messageManager)\n    this.#optionsManager = new OptionsManager(this.#messageManager)\n    this.#dialogManager = new DialogManager(this.#messageManager)\n    this.#sliderManager = new SliderManager(\n      this.#appFrame,\n      this.#messageManager\n    )\n    this.#placementManager = new PlacementManager(this.#messageManager)\n\n    this._isInit = false\n  }\n\n  public override setLogger(logger: LoggerInterface): void {\n    super.setLogger(logger)\n    this.#messageManager.setLogger(this.getLogger())\n  }\n\n  get isFirstRun(): boolean {\n    this._ensureInitialized()\n    return this.#isFirstRun\n  }\n\n  get isInstallMode(): boolean {\n    this._ensureInitialized()\n    return this.#isInstallMode\n  }\n\n  get parent(): ParentManager {\n    this._ensureInitialized()\n    return this.#parentManager\n  }\n\n  override get auth(): AuthActions {\n    this._ensureInitialized()\n    return this.#authManager\n  }\n\n  get slider(): SliderManager {\n    this._ensureInitialized()\n    return this.#sliderManager\n  }\n\n  get placement(): PlacementManager {\n    this._ensureInitialized()\n    return this.#placementManager\n  }\n\n  get options(): OptionsManager {\n    this._ensureInitialized()\n    return this.#optionsManager\n  }\n\n  get dialog(): DialogManager {\n    this._ensureInitialized()\n    return this.#dialogManager\n  }\n\n  public override async init(): Promise<void> {\n    const data: MessageInitData = await this.#messageManager.send(MessageCommands.getInitData, {})\n\n    this.getLogger().debug('init data', { data })\n\n    this.#appFrame.initData(data)\n    this.#authManager.initData(data)\n    this.#placementManager.initData(data)\n    this.#optionsManager.initData(data)\n\n    this.#isInstallMode = data.INSTALL\n    this.#isFirstRun = data.FIRST_RUN\n\n    this._httpV2 = new HttpV2(this.#authManager, this._getHttpOptions(), this.#restrictionParams)\n    this._httpV3 = new HttpV3(this.#authManager, this._getHttpOptions(), this.#restrictionParams)\n\n    this._isInit = true\n\n    /**\n     * @memo Writes the fact of the 1st launch to `app_options`\n     */\n    if (this.#isFirstRun) {\n      return this.#messageManager.send(MessageCommands.setInstall, { install: true })\n    }\n\n    return Promise.resolve()\n  }\n\n  /**\n   * Destructor.\n   * Removes an event subscription\n   */\n  public override destroy() {\n    this.#messageManager.unsubscribe()\n    super.destroy()\n  }\n  // endregion ////\n\n  // region Core ////\n  /**\n   * Signals that the installer or application setup has finished running.\n   *\n   * @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/system-functions/bx24-install-finish.html\n   */\n  public async installFinish(): Promise<any> {\n    if (!this.isInstallMode) {\n      return Promise.reject(new Error('Application was previously installed. You cannot call installFinish'))\n    }\n\n    return this.#messageManager.send(MessageCommands.setInstallFinish, {})\n  }\n  // endregion ////\n\n  // region Get ////\n  /**\n   * @inheritDoc\n   */\n  public override getTargetOrigin(): string {\n    this._ensureInitialized()\n    return this.#authManager.getTargetOrigin()\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public override getTargetOriginWithPath(): Map<ApiVersion, string> {\n    this._ensureInitialized()\n    return this.#authManager.getTargetOriginWithPath()\n  }\n\n  /**\n   * Returns the sid of the application relative to the parent window like this `9c33468728e1d2c8c97562475edfd96`\n   */\n  public getAppSid(): string {\n    this._ensureInitialized()\n    return this.#appFrame.getAppSid()\n  }\n\n  /**\n   * Returns the localization of the B24 interface\n   *\n   * @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/additional-functions/bx24-get-lang.html\n   */\n  public getLang(): B24LangList {\n    this._ensureInitialized()\n    return this.#appFrame.getLang()\n  }\n  // endregion ////\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA0BO,MAAM,iBAAiB,WAAA,CAA+B;AAAA,EA1B7D;AA0B6D,IAAA,MAAA,CAAA,IAAA,EAAA,UAAA,CAAA;AAAA;AAAA,EAC3D,cAAA,GAA0B,KAAA;AAAA,EAC1B,WAAA,GAAuB,KAAA;AAAA,EAEd,SAAA;AAAA,EACA,eAAA;AAAA,EACA,YAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,iBAAA;AAAA,EAEA,kBAAA;AAAA;AAAA,EAGT,WAAA,CACE,aACA,OAAA,EAGA;AACA,IAAA,KAAA,EAAM;AAEN,IAAA,IAAA,CAAK,qBAAqB,OAAA,EAAS,iBAAA;AAEnC,IAAA,IAAA,CAAK,SAAA,GAAY,IAAI,QAAA,CAAS,WAAW,CAAA;AAEzC,IAAA,IAAA,CAAK,eAAA,GAAkB,IAAI,cAAA,CAAe,IAAA,CAAK,SAAS,CAAA;AACxD,IAAA,IAAA,CAAK,gBAAgB,SAAA,EAAU;AAE/B,IAAA,IAAA,CAAK,eAAe,IAAI,WAAA;AAAA,MACtB,IAAA,CAAK,SAAA;AAAA,MACL,IAAA,CAAK;AAAA,KACP;AACA,IAAA,IAAA,CAAK,cAAA,GAAiB,IAAI,aAAA,CAAc,IAAA,CAAK,eAAe,CAAA;AAC5D,IAAA,IAAA,CAAK,eAAA,GAAkB,IAAI,cAAA,CAAe,IAAA,CAAK,eAAe,CAAA;AAC9D,IAAA,IAAA,CAAK,cAAA,GAAiB,IAAI,aAAA,CAAc,IAAA,CAAK,eAAe,CAAA;AAC5D,IAAA,IAAA,CAAK,iBAAiB,IAAI,aAAA;AAAA,MACxB,IAAA,CAAK,SAAA;AAAA,MACL,IAAA,CAAK;AAAA,KACP;AACA,IAAA,IAAA,CAAK,iBAAA,GAAoB,IAAI,gBAAA,CAAiB,IAAA,CAAK,eAAe,CAAA;AAElE,IAAA,IAAA,CAAK,OAAA,GAAU,KAAA;AAAA,EACjB;AAAA,EAEgB,UAAU,MAAA,EAA+B;AACvD,IAAA,KAAA,CAAM,UAAU,MAAM,CAAA;AACtB,IAAA,IAAA,CAAK,eAAA,CAAgB,SAAA,CAAU,IAAA,CAAK,SAAA,EAAW,CAAA;AAAA,EACjD;AAAA,EAEA,IAAI,UAAA,GAAsB;AACxB,IAAA,IAAA,CAAK,kBAAA,EAAmB;AACxB,IAAA,OAAO,IAAA,CAAK,WAAA;AAAA,EACd;AAAA,EAEA,IAAI,aAAA,GAAyB;AAC3B,IAAA,IAAA,CAAK,kBAAA,EAAmB;AACxB,IAAA,OAAO,IAAA,CAAK,cAAA;AAAA,EACd;AAAA,EAEA,IAAI,MAAA,GAAwB;AAC1B,IAAA,IAAA,CAAK,kBAAA,EAAmB;AACxB,IAAA,OAAO,IAAA,CAAK,cAAA;AAAA,EACd;AAAA,EAEA,IAAa,IAAA,GAAoB;AAC/B,IAAA,IAAA,CAAK,kBAAA,EAAmB;AACxB,IAAA,OAAO,IAAA,CAAK,YAAA;AAAA,EACd;AAAA,EAEA,IAAI,MAAA,GAAwB;AAC1B,IAAA,IAAA,CAAK,kBAAA,EAAmB;AACxB,IAAA,OAAO,IAAA,CAAK,cAAA;AAAA,EACd;AAAA,EAEA,IAAI,SAAA,GAA8B;AAChC,IAAA,IAAA,CAAK,kBAAA,EAAmB;AACxB,IAAA,OAAO,IAAA,CAAK,iBAAA;AAAA,EACd;AAAA,EAEA,IAAI,OAAA,GAA0B;AAC5B,IAAA,IAAA,CAAK,kBAAA,EAAmB;AACxB,IAAA,OAAO,IAAA,CAAK,eAAA;AAAA,EACd;AAAA,EAEA,IAAI,MAAA,GAAwB;AAC1B,IAAA,IAAA,CAAK,kBAAA,EAAmB;AACxB,IAAA,OAAO,IAAA,CAAK,cAAA;AAAA,EACd;AAAA,EAEA,MAAsB,IAAA,GAAsB;AAC1C,IAAA,MAAM,IAAA,GAAwB,MAAM,IAAA,CAAK,eAAA,CAAgB,KAAK,eAAA,CAAgB,WAAA,EAAa,EAAE,CAAA;AAE7F,IAAA,IAAA,CAAK,WAAU,CAAE,KAAA,CAAM,WAAA,EAAa,EAAE,MAAM,CAAA;AAE5C,IAAA,IAAA,CAAK,SAAA,CAAU,SAAS,IAAI,CAAA;AAC5B,IAAA,IAAA,CAAK,YAAA,CAAa,SAAS,IAAI,CAAA;AAC/B,IAAA,IAAA,CAAK,iBAAA,CAAkB,SAAS,IAAI,CAAA;AACpC,IAAA,IAAA,CAAK,eAAA,CAAgB,SAAS,IAAI,CAAA;AAElC,IAAA,IAAA,CAAK,iBAAiB,IAAA,CAAK,OAAA;AAC3B,IAAA,IAAA,CAAK,cAAc,IAAA,CAAK,SAAA;AAExB,IAAA,IAAA,CAAK,OAAA,GAAU,IAAI,MAAA,CAAO,IAAA,CAAK,cAAc,IAAA,CAAK,eAAA,EAAgB,EAAG,IAAA,CAAK,kBAAkB,CAAA;AAC5F,IAAA,IAAA,CAAK,OAAA,GAAU,IAAI,MAAA,CAAO,IAAA,CAAK,cAAc,IAAA,CAAK,eAAA,EAAgB,EAAG,IAAA,CAAK,kBAAkB,CAAA;AAE5F,IAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AAKf,IAAA,IAAI,KAAK,WAAA,EAAa;AACpB,MAAA,OAAO,IAAA,CAAK,gBAAgB,IAAA,CAAK,eAAA,CAAgB,YAAY,EAAE,OAAA,EAAS,MAAM,CAAA;AAAA,IAChF;AAEA,IAAA,OAAO,QAAQ,OAAA,EAAQ;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMgB,OAAA,GAAU;AACxB,IAAA,IAAA,CAAK,gBAAgB,WAAA,EAAY;AACjC,IAAA,KAAA,CAAM,OAAA,EAAQ;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,aAAA,GAA8B;AACzC,IAAA,IAAI,CAAC,KAAK,aAAA,EAAe;AACvB,MAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,IAAI,KAAA,CAAM,qEAAqE,CAAC,CAAA;AAAA,IACxG;AAEA,IAAA,OAAO,KAAK,eAAA,CAAgB,IAAA,CAAK,eAAA,CAAgB,gBAAA,EAAkB,EAAE,CAAA;AAAA,EACvE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOgB,eAAA,GAA0B;AACxC,IAAA,IAAA,CAAK,kBAAA,EAAmB;AACxB,IAAA,OAAO,IAAA,CAAK,aAAa,eAAA,EAAgB;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA,EAKgB,uBAAA,GAAmD;AACjE,IAAA,IAAA,CAAK,kBAAA,EAAmB;AACxB,IAAA,OAAO,IAAA,CAAK,aAAa,uBAAA,EAAwB;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA,EAKO,SAAA,GAAoB;AACzB,IAAA,IAAA,CAAK,kBAAA,EAAmB;AACxB,IAAA,OAAO,IAAA,CAAK,UAAU,SAAA,EAAU;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,OAAA,GAAuB;AAC5B,IAAA,IAAA,CAAK,kBAAA,EAAmB;AACxB,IAAA,OAAO,IAAA,CAAK,UAAU,OAAA,EAAQ;AAAA,EAChC;AAAA;AAEF;;;;"}