@bitrix24/b24jssdk 1.0.6 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README-AI.md +26 -3
- package/dist/esm/_virtual/_commonjsHelpers.mjs +1 -1
- package/dist/esm/_virtual/protobuf.mjs +1 -1
- package/dist/esm/_virtual/protobuf2.mjs +1 -1
- package/dist/esm/core/abstract-b24.mjs +1 -1
- package/dist/esm/core/actions/abstract-action.mjs +1 -1
- package/dist/esm/core/actions/abstract-batch.mjs +1 -1
- package/dist/esm/core/actions/manager.mjs +1 -1
- package/dist/esm/core/actions/v2/batch-by-chunk.mjs +1 -1
- package/dist/esm/core/actions/v2/batch.mjs +1 -1
- package/dist/esm/core/actions/v2/call-list.mjs +1 -1
- package/dist/esm/core/actions/v2/call.mjs +1 -1
- package/dist/esm/core/actions/v2/fetch-list.mjs +1 -1
- package/dist/esm/core/actions/v2/manager-v2.mjs +1 -1
- package/dist/esm/core/actions/v3/batch-by-chunk.mjs +1 -1
- package/dist/esm/core/actions/v3/batch.mjs +1 -1
- package/dist/esm/core/actions/v3/call-list.mjs +1 -1
- package/dist/esm/core/actions/v3/call.mjs +1 -1
- package/dist/esm/core/actions/v3/fetch-list.mjs +1 -1
- package/dist/esm/core/actions/v3/manager-v3.mjs +1 -1
- package/dist/esm/core/http/abstract-http.mjs +2 -2
- package/dist/esm/core/http/ajax-error.mjs +1 -1
- package/dist/esm/core/http/ajax-result.mjs +44 -4
- package/dist/esm/core/http/ajax-result.mjs.map +1 -1
- package/dist/esm/core/http/limiters/adaptive-delayer.mjs +1 -1
- package/dist/esm/core/http/limiters/manager.mjs +1 -1
- package/dist/esm/core/http/limiters/operating-limiter.mjs +1 -1
- package/dist/esm/core/http/limiters/params-factory.mjs +1 -1
- package/dist/esm/core/http/limiters/rate-limiter.mjs +1 -1
- package/dist/esm/core/http/v2.mjs +2 -2
- package/dist/esm/core/http/v3.mjs +2 -2
- package/dist/esm/core/interaction/batch/abstract-interaction-batch.mjs +1 -1
- package/dist/esm/core/interaction/batch/parse-row.mjs +1 -1
- package/dist/esm/core/interaction/batch/processing/interface-strategy.mjs +1 -1
- package/dist/esm/core/interaction/batch/processing/v2/abstract-processing.mjs +1 -1
- package/dist/esm/core/interaction/batch/processing/v2/abstract-processing.mjs.map +1 -1
- package/dist/esm/core/interaction/batch/processing/v2/as-array.mjs +1 -1
- package/dist/esm/core/interaction/batch/processing/v2/as-object.mjs +1 -1
- package/dist/esm/core/interaction/batch/processing/v3/abstract-processing.mjs +1 -1
- package/dist/esm/core/interaction/batch/processing/v3/abstract-processing.mjs.map +1 -1
- package/dist/esm/core/interaction/batch/processing/v3/as-array.mjs +1 -1
- package/dist/esm/core/interaction/batch/processing/v3/as-object.mjs +1 -1
- package/dist/esm/core/interaction/batch/v2.mjs +1 -1
- package/dist/esm/core/interaction/batch/v3.mjs +1 -1
- package/dist/esm/core/language/list.mjs +1 -1
- package/dist/esm/core/request-id-generator.mjs +1 -1
- package/dist/esm/core/result.mjs +1 -1
- package/dist/esm/core/sdk-error.mjs +1 -1
- package/dist/esm/core/tools/abstract-tool.mjs +1 -1
- package/dist/esm/core/tools/healthcheck.mjs +1 -1
- package/dist/esm/core/tools/manager.mjs +1 -1
- package/dist/esm/core/tools/ping.mjs +1 -1
- package/dist/esm/core/version-manager.mjs +1 -1
- package/dist/esm/frame/auth.mjs +1 -1
- package/dist/esm/frame/b24.mjs +1 -1
- package/dist/esm/frame/dialog.mjs +45 -5
- package/dist/esm/frame/dialog.mjs.map +1 -1
- package/dist/esm/frame/frame.mjs +1 -1
- package/dist/esm/frame/message/commands.mjs +1 -1
- package/dist/esm/frame/message/controller.mjs +1 -1
- package/dist/esm/frame/options.mjs +1 -1
- package/dist/esm/frame/parent.mjs +1 -1
- package/dist/esm/frame/placement.mjs +32 -9
- package/dist/esm/frame/placement.mjs.map +1 -1
- package/dist/esm/frame/slider.mjs +1 -1
- package/dist/esm/helper/abstract-helper.mjs +1 -1
- package/dist/esm/helper/app-manager.mjs +1 -1
- package/dist/esm/helper/currency-manager.mjs +1 -1
- package/dist/esm/helper/helper-manager.mjs +1 -1
- package/dist/esm/helper/license-manager.mjs +1 -1
- package/dist/esm/helper/options-manager.mjs +1 -1
- package/dist/esm/helper/payment-manager.mjs +1 -1
- package/dist/esm/helper/profile-manager.mjs +1 -1
- package/dist/esm/helper/use-b24-helper.mjs +1 -1
- package/dist/esm/hook/auth.mjs +1 -1
- package/dist/esm/hook/b24.mjs +1 -1
- package/dist/esm/index.d.mts +105 -9
- package/dist/esm/index.d.ts +105 -9
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/loader-b24frame.mjs +1 -1
- package/dist/esm/logger/abstract-logger.mjs +1 -1
- package/dist/esm/logger/browser.mjs +1 -1
- package/dist/esm/logger/formatter/abstract-formatter.mjs +1 -1
- package/dist/esm/logger/formatter/json-formatter.mjs +1 -1
- package/dist/esm/logger/formatter/line-formatter.mjs +1 -1
- package/dist/esm/logger/formatter/telegram-formatter.mjs +1 -1
- package/dist/esm/logger/handler/abstract-handler.mjs +1 -1
- package/dist/esm/logger/handler/consola-adapter.mjs +1 -1
- package/dist/esm/logger/handler/console-handler.mjs +1 -1
- package/dist/esm/logger/handler/console-v2-handler.mjs +1 -1
- package/dist/esm/logger/handler/memory-handler.mjs +1 -1
- package/dist/esm/logger/handler/stream-handler.mjs +1 -1
- package/dist/esm/logger/handler/telegram-handler.mjs +1 -1
- package/dist/esm/logger/handler/winston-adapter.mjs +1 -1
- package/dist/esm/logger/logger-factory.mjs +1 -1
- package/dist/esm/logger/logger.mjs +1 -1
- package/dist/esm/logger/null-logger.mjs +1 -1
- package/dist/esm/logger/processor/memory-usage-processor.mjs +1 -1
- package/dist/esm/logger/processor/pid-processor.mjs +1 -1
- package/dist/esm/oauth/auth.mjs +1 -1
- package/dist/esm/oauth/b24.mjs +1 -1
- package/dist/esm/oauth/refresh-token-error.mjs +1 -1
- package/dist/esm/pullClient/abstract-connector.mjs +1 -1
- package/dist/esm/pullClient/channel-manager.mjs +1 -1
- package/dist/esm/pullClient/channel-manager.mjs.map +1 -1
- package/dist/esm/pullClient/client.mjs +1 -1
- package/dist/esm/pullClient/errors.mjs +1 -1
- package/dist/esm/pullClient/json-rpc.mjs +1 -1
- package/dist/esm/pullClient/long-polling-connector.mjs +1 -1
- package/dist/esm/pullClient/protobuf/index.mjs +1 -1
- package/dist/esm/pullClient/protobuf/model.mjs +1 -1
- package/dist/esm/pullClient/protobuf/protobuf.mjs +1 -1
- package/dist/esm/pullClient/shared-config.mjs +1 -1
- package/dist/esm/pullClient/storage-manager.mjs +1 -1
- package/dist/esm/pullClient/web-socket-connector.mjs +1 -1
- package/dist/esm/tools/browser.mjs +1 -1
- package/dist/esm/tools/environment.mjs +1 -1
- package/dist/esm/tools/formatters/iban.mjs +1 -1
- package/dist/esm/tools/formatters/numbers.mjs +1 -1
- package/dist/esm/tools/index.mjs +1 -1
- package/dist/esm/tools/scroll-size.mjs +1 -1
- package/dist/esm/tools/text.mjs +1 -1
- package/dist/esm/tools/type.mjs +1 -1
- package/dist/esm/tools/use-formatters.mjs +1 -1
- package/dist/esm/tools/uuidv7.mjs +1 -1
- package/dist/esm/types/b24-helper.mjs +1 -1
- package/dist/esm/types/b24.mjs +1 -1
- package/dist/esm/types/bizproc/index.mjs +1 -1
- package/dist/esm/types/catalog/index.mjs +1 -1
- package/dist/esm/types/common.mjs +1 -1
- package/dist/esm/types/crm/entity-type.mjs +1 -1
- package/dist/esm/types/crm/productrow.mjs +1 -1
- package/dist/esm/types/logger.mjs +1 -1
- package/dist/esm/types/pull.mjs +1 -1
- package/dist/umd/index.js +122 -19
- package/dist/umd/index.js.map +1 -1
- package/dist/umd/index.min.js +17 -17
- package/dist/umd/index.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-processing.mjs","sources":["../../../../../../../src/core/interaction/batch/processing/v3/abstract-processing.ts"],"sourcesContent":["import type { BatchCommandV3, ICallBatchResult } from '../../../../../types/http'\nimport type { IProcessingStrategy, ResponseHelper, ResultItems } from '../interface-strategy'\nimport type { BatchResponseData } from '../../abstract-interaction-batch'\nimport { AbstractProcessing } from '../interface-strategy'\nimport { SdkError } from '../../../../sdk-error'\nimport { AjaxResult } from '../../../../http/ajax-result'\nimport { Result } from '../../../../result'\n\nexport abstract class AbstractProcessingV3 extends AbstractProcessing implements IProcessingStrategy {\n public buildCommands(commands: BatchCommandV3[]): BatchCommandV3[] {\n if (commands.length < 1) {\n throw new SdkError({\n code: 'JSSDK_INTERACTION_BATCH_BUILD_STRATEGY_V3_EMPTY_COMMANDS',\n description: 'commands not set',\n status: 500\n })\n }\n\n return commands\n }\n\n // region prepareItems ////\n public override async prepareItems<T>(\n commands: BatchCommandV3[],\n responseHelper: ResponseHelper<T>\n ): Promise<ResultItems<T>> {\n const results: ResultItems<T> = new Map()\n\n /**\n * In API V3, batch processing does not return data for each row in case of parallel processing errors.\n *\n * @see AbstractProcessingV3.handleResults()\n *\n * @todo ! api ver3 waite docs - this fake\n */\n if (!responseHelper.response.isSuccess) {\n return results\n }\n\n for (const [index, command] of commands.entries()) {\n await this._processResponseItem<T>(\n command,\n // @memo for apiVer3 in this pace we get objectIndex from array `index` from `commands[]`\n index,\n responseHelper,\n results\n )\n }\n\n return results\n }\n\n /**\n * @todo ! api ver3 waite docs\n */\n protected override async _processResponseItem<T>(\n command: BatchCommandV3,\n index: string | number,\n responseHelper: ResponseHelper<T>,\n results: Map<string | number, AjaxResult<T>>\n ): Promise<void> {\n const responseResult = responseHelper.response.getData()!.result as BatchResponseData<T>\n const resultData = this._getBatchResultByIndex((responseResult as T[] | Record<string | number, T> | undefined), index)\n const methodName = command.method\n\n /**\n * @todo ! api ver3 waite docs - this fake\n */\n const resultError = undefined\n\n /**\n * @todo ! api ver3 waite docs - this fake\n */\n const resultTime = responseHelper.response.getData()!.time\n // Update operating statistics for each method in the batch\n if (typeof resultTime !== 'undefined') {\n await responseHelper.restrictionManager.updateStats(responseHelper.requestId, `batch::${methodName}`, resultTime)\n }\n\n const result = new AjaxResult<T>({\n answer: {\n result: (resultData ?? {}) as T,\n error: resultError,\n time: resultTime\n },\n query: {\n method: command.method,\n params: command.query || {},\n requestId: responseHelper.requestId\n },\n status: responseHelper.response.getStatus()\n })\n\n results.set(index, result)\n return\n }\n // endregion ////\n\n // region handleResults ////\n public override async handleResults<T>(commands: BatchCommandV3[], results: ResultItems<T>, responseHelper: ResponseHelper<T>): Promise<Result<ICallBatchResult<T>>> {\n const result = new Result<ICallBatchResult<T>>()\n const dataResult: ResultItems<T> = new Map()\n /**\n * In API V3, batch processing does not return data for each row in case of parallel processing errors.\n *\n * @see AbstractProcessingV3.prepareItems()\n *\n * @todo ! api ver3 waite docs - this fake\n */\n if (!responseHelper.response.isSuccess) {\n for (const [index, error] of responseHelper.response.errors) {\n result.addError(error, index)\n }\n result.setData({\n result: dataResult,\n time: undefined\n })\n return result\n }\n\n for (const [index, data] of results) {\n const rowIndex = Number.parseInt(`${index}`)\n const command = commands[rowIndex]\n if (typeof command === 'undefined') {\n throw new SdkError({\n code: 'JSSDK_INTERACTION_BATCH_BUILD_STRATEGY_V3_EMPTY_COMMAND',\n description: `command for index ${index} not set`,\n status: 500\n })\n }\n\n const commandIndex = command.as ?? index\n if (data.getStatus() !== 200 || !data.isSuccess) {\n const ajaxError = this._createErrorFromAjaxResult(data)\n\n /*\n * This should contain code similar to #isOperatingLimitError with a check for\n * the error 'Method is blocked due to operation time limit.'\n * However, `batch` is executed without retries, so there will be an immediate error.\n */\n\n // @todo fix docs\n // @memo we not throw ajaxError\n this._processResponseError<T>(result, ajaxError, `${commandIndex}`)\n dataResult.set(commandIndex, data)\n\n // if (responseHelper.parallelDefaultValue && !data.isSuccess) {\n // this._processResponseError<T>(result, ajaxError, `${index}`)\n // dataResult.set(index, data)\n // continue\n // }\n //\n // throw ajaxError\n }\n\n dataResult.set(commandIndex, data)\n }\n\n result.setData({\n result: dataResult,\n time: responseHelper.response.getData()!.time\n })\n\n return result\n }\n // endregion ////\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"abstract-processing.mjs","sources":["../../../../../../../src/core/interaction/batch/processing/v3/abstract-processing.ts"],"sourcesContent":["import type { BatchCommandV3, ICallBatchResult } from '../../../../../types/http'\nimport type { IProcessingStrategy, ResponseHelper, ResultItems } from '../interface-strategy'\nimport type { BatchResponseData } from '../../abstract-interaction-batch'\nimport { AbstractProcessing } from '../interface-strategy'\nimport { SdkError } from '../../../../sdk-error'\nimport { AjaxResult } from '../../../../http/ajax-result'\nimport { Result } from '../../../../result'\n\nexport abstract class AbstractProcessingV3 extends AbstractProcessing implements IProcessingStrategy {\n public buildCommands(commands: BatchCommandV3[]): BatchCommandV3[] {\n if (commands.length < 1) {\n throw new SdkError({\n code: 'JSSDK_INTERACTION_BATCH_BUILD_STRATEGY_V3_EMPTY_COMMANDS',\n description: 'commands not set',\n status: 500\n })\n }\n\n return commands\n }\n\n // region prepareItems ////\n public override async prepareItems<T>(\n commands: BatchCommandV3[],\n responseHelper: ResponseHelper<T>\n ): Promise<ResultItems<T>> {\n const results: ResultItems<T> = new Map()\n\n /**\n * In API V3, batch processing does not return data for each row in case of parallel processing errors.\n *\n * @see AbstractProcessingV3.handleResults()\n *\n * @todo ! api ver3 waite docs - this fake\n */\n if (!responseHelper.response.isSuccess) {\n return results\n }\n\n for (const [index, command] of commands.entries()) {\n await this._processResponseItem<T>(\n command,\n // @memo for apiVer3 in this pace we get objectIndex from array `index` from `commands[]`\n index,\n responseHelper,\n results\n )\n }\n\n return results\n }\n\n /**\n * @todo ! api ver3 waite docs\n */\n protected override async _processResponseItem<T>(\n command: BatchCommandV3,\n index: string | number,\n responseHelper: ResponseHelper<T>,\n results: Map<string | number, AjaxResult<T>>\n ): Promise<void> {\n const responseResult = responseHelper.response.getData()!.result as unknown as BatchResponseData<T>\n const resultData = this._getBatchResultByIndex((responseResult as T[] | Record<string | number, T> | undefined), index)\n const methodName = command.method\n\n /**\n * @todo ! api ver3 waite docs - this fake\n */\n const resultError = undefined\n\n /**\n * @todo ! api ver3 waite docs - this fake\n */\n const resultTime = responseHelper.response.getData()!.time\n // Update operating statistics for each method in the batch\n if (typeof resultTime !== 'undefined') {\n await responseHelper.restrictionManager.updateStats(responseHelper.requestId, `batch::${methodName}`, resultTime)\n }\n\n const result = new AjaxResult<T>({\n answer: {\n result: (resultData ?? {}) as T,\n error: resultError,\n time: resultTime\n },\n query: {\n method: command.method,\n params: command.query || {},\n requestId: responseHelper.requestId\n },\n status: responseHelper.response.getStatus()\n })\n\n results.set(index, result)\n return\n }\n // endregion ////\n\n // region handleResults ////\n public override async handleResults<T>(commands: BatchCommandV3[], results: ResultItems<T>, responseHelper: ResponseHelper<T>): Promise<Result<ICallBatchResult<T>>> {\n const result = new Result<ICallBatchResult<T>>()\n const dataResult: ResultItems<T> = new Map()\n /**\n * In API V3, batch processing does not return data for each row in case of parallel processing errors.\n *\n * @see AbstractProcessingV3.prepareItems()\n *\n * @todo ! api ver3 waite docs - this fake\n */\n if (!responseHelper.response.isSuccess) {\n for (const [index, error] of responseHelper.response.errors) {\n result.addError(error, index)\n }\n result.setData({\n result: dataResult,\n time: undefined\n })\n return result\n }\n\n for (const [index, data] of results) {\n const rowIndex = Number.parseInt(`${index}`)\n const command = commands[rowIndex]\n if (typeof command === 'undefined') {\n throw new SdkError({\n code: 'JSSDK_INTERACTION_BATCH_BUILD_STRATEGY_V3_EMPTY_COMMAND',\n description: `command for index ${index} not set`,\n status: 500\n })\n }\n\n const commandIndex = command.as ?? index\n if (data.getStatus() !== 200 || !data.isSuccess) {\n const ajaxError = this._createErrorFromAjaxResult(data)\n\n /*\n * This should contain code similar to #isOperatingLimitError with a check for\n * the error 'Method is blocked due to operation time limit.'\n * However, `batch` is executed without retries, so there will be an immediate error.\n */\n\n // @todo fix docs\n // @memo we not throw ajaxError\n this._processResponseError<T>(result, ajaxError, `${commandIndex}`)\n dataResult.set(commandIndex, data)\n\n // if (responseHelper.parallelDefaultValue && !data.isSuccess) {\n // this._processResponseError<T>(result, ajaxError, `${index}`)\n // dataResult.set(index, data)\n // continue\n // }\n //\n // throw ajaxError\n }\n\n dataResult.set(commandIndex, data)\n }\n\n result.setData({\n result: dataResult,\n time: responseHelper.response.getData()!.time\n })\n\n return result\n }\n // endregion ////\n}\n"],"names":[],"mappings":"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"}
|
package/dist/esm/core/result.mjs
CHANGED
package/dist/esm/frame/auth.mjs
CHANGED
package/dist/esm/frame/b24.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @package @bitrix24/b24jssdk
|
|
3
|
-
* @version 1.0
|
|
3
|
+
* @version 1.1.0
|
|
4
4
|
* @copyright (c) 2026 Bitrix24
|
|
5
5
|
* @license MIT
|
|
6
6
|
* @see https://github.com/bitrix24/b24jssdk
|
|
@@ -58,19 +58,59 @@ class DialogManager {
|
|
|
58
58
|
});
|
|
59
59
|
}
|
|
60
60
|
/**
|
|
61
|
-
*
|
|
61
|
+
* Invokes the system dialog for selecting CRM entities
|
|
62
|
+
* (leads, contacts, companies, deals, quotes).
|
|
62
63
|
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
64
|
+
* The resolved `SelectedCRM` object contains a separate bucket per
|
|
65
|
+
* entity type. Each present bucket is a real `Array`, so consumers can
|
|
66
|
+
* use `.length`, `.map()`, `for..of`, etc. directly. Buckets for entity
|
|
67
|
+
* types that were not selected (or not requested via `entityType`) are
|
|
68
|
+
* left `undefined` rather than being set to an empty array.
|
|
69
|
+
*
|
|
70
|
+
* Note: the parent window historically returned each bucket as a
|
|
71
|
+
* `Record<string, SelectedCRMEntity>` (e.g. `{ 0: {...}, 1: {...} }`).
|
|
72
|
+
* The SDK normalizes that response to a real array before returning it.
|
|
73
|
+
*
|
|
74
|
+
* @param {SelectCRMParams} [params] - Filter and behavior options.
|
|
75
|
+
* - `entityType`: which entity types are shown in the dialog.
|
|
76
|
+
* - `multiple`: allow multiple selection (default `false`).
|
|
77
|
+
* - `value`: pre-selected entities (only applied when `multiple` is `true`).
|
|
78
|
+
* @return {Promise<SelectedCRM>} Resolves to an object whose properties
|
|
79
|
+
* (`lead`, `contact`, `company`, `deal`, `quote`) are arrays of
|
|
80
|
+
* {@link SelectedCRMEntity} objects.
|
|
65
81
|
*
|
|
66
82
|
* @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/system-dialogues/bx24-select-crm.html
|
|
67
83
|
*/
|
|
68
84
|
async selectCRM(params) {
|
|
69
|
-
|
|
85
|
+
const response = await this.#messageManager.send(MessageCommands.selectCRM, {
|
|
70
86
|
entityType: params?.entityType,
|
|
71
87
|
multiple: params?.multiple,
|
|
72
88
|
value: params?.value
|
|
73
89
|
});
|
|
90
|
+
const result = {};
|
|
91
|
+
if (!response) {
|
|
92
|
+
return result;
|
|
93
|
+
}
|
|
94
|
+
const toArray = /* @__PURE__ */ __name((bucket) => {
|
|
95
|
+
if (bucket === void 0 || bucket === null) {
|
|
96
|
+
return void 0;
|
|
97
|
+
}
|
|
98
|
+
if (Array.isArray(bucket)) {
|
|
99
|
+
return bucket;
|
|
100
|
+
}
|
|
101
|
+
return Object.values(bucket);
|
|
102
|
+
}, "toArray");
|
|
103
|
+
const lead = toArray(response.lead);
|
|
104
|
+
if (lead) result.lead = lead;
|
|
105
|
+
const contact = toArray(response.contact);
|
|
106
|
+
if (contact) result.contact = contact;
|
|
107
|
+
const company = toArray(response.company);
|
|
108
|
+
if (company) result.company = company;
|
|
109
|
+
const deal = toArray(response.deal);
|
|
110
|
+
if (deal) result.deal = deal;
|
|
111
|
+
const quote = toArray(response.quote);
|
|
112
|
+
if (quote) result.quote = quote;
|
|
113
|
+
return result;
|
|
74
114
|
}
|
|
75
115
|
}
|
|
76
116
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.mjs","sources":["../../../src/frame/dialog.ts"],"sourcesContent":["import type { MessageManager } from './message'\nimport { MessageCommands } from './message'\nimport type { NumberString } from '../types/common'\n\nexport type SelectedUser = {\n /**\n * user identifier\n */\n id: NumberString\n\n /**\n * formatted username\n */\n name: string\n\n photo: string\n\n position: string\n\n url: string\n\n /**\n * The flag indicates that the selected user is a subordinate of the current user\n */\n sub: boolean\n\n /**\n * The flag indicates that the selected user is the manager of the current user\n */\n sup: boolean\n}\n\nexport type SelectedAccess = {\n /**\n * access permission identifier. Examples of identifiers:\n * - U1 — user with identifier 1\n * - IU1 — employees with identifier 1\n * - DR2 — all department and subdepartment employees with identifier 2\n * - D6 — all department employees with identifier 6\n * - G2 — group with identifier 2 (all visitors)\n * - SG4 — social network group with identifier 4\n * - AU — all authorized users\n * - CR — current user\n */\n id:\n | `AU`\n | `CR`\n | `U${number}`\n | `IU${number}`\n | `DR${number}`\n | `D${number}`\n | `G${number}`\n | `SG${number}`\n\n /**\n * name of the access permission\n */\n name: string\n}\n\nexport type SelectCRMParamsEntityType\n = | 'lead'\n | 'contact'\n | 'company'\n | 'deal'\n | 'quote'\n\nexport type SelectCRMParamsValue = {\n lead?: number[]\n contact?: number[]\n company?: number[]\n deal?: number[]\n quote?: number[]\n}\n\nexport type SelectCRMParams = {\n /**\n * Which types of objects to display in the dialog. Possible values:\n * - lead — Leads\n * - contact — Contacts\n * - company — Companies\n * - deal — Deals\n * - quote — Estimates\n */\n entityType: SelectCRMParamsEntityType[]\n\n /**\n * Whether multiple objects can be selected. Default is `false`\n */\n multiple: boolean\n\n /**\n * Which objects to initially add to the selected in the dialog. Works only if `multiple = true`\n */\n value?: SelectCRMParamsValue\n}\n\nexport type SelectedCRMEntity = {\n id: string\n type: SelectCRMParamsEntityType\n place: string\n title: string\n desc: string\n url: string\n}\n\nexport type SelectedCRM = {\n lead?: (SelectedCRMEntity & { id: `L_${number}` })[]\n contact?: (SelectedCRMEntity & { id: `C_${number}`, image: string })[]\n company?: (SelectedCRMEntity & { id: `CO_${number}`, image: string })[]\n deal?: (SelectedCRMEntity & { id: `D_${number}` })[]\n quote?: (SelectedCRMEntity & { id: `Q_${number}` })[]\n}\n\n/**\n * Select dialog manager\n *\n * @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/system-dialogues/index.html\n */\nexport class DialogManager {\n #messageManager: MessageManager\n\n constructor(messageManager: MessageManager) {\n this.#messageManager = messageManager\n }\n\n /**\n * Method displays the standard single user selection dialog\n * It only shows company employees\n *\n * @return {Promise<null|SelectedUser>}\n *\n * @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/system-dialogues/bx24-select-user.html\n */\n async selectUser(): Promise<null | SelectedUser> {\n return this.#messageManager.send(MessageCommands.selectUser, {\n mult: false\n })\n }\n\n /**\n * Method displays the standard multiple user selection dialog\n * It only shows company employees\n *\n * @return {Promise<SelectedUser[]>}\n *\n * @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/system-dialogues/bx24-select-users.html\n */\n async selectUsers(): Promise<SelectedUser[]> {\n return this.#messageManager.send(MessageCommands.selectUser, {\n mult: true\n })\n }\n\n /**\n * Method displays a standard access permission selection dialog\n *\n * @param {string[]} blockedAccessPermissions\n * @return {Promise<SelectedAccess[]>}\n *\n * @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/system-dialogues/bx24-select-access.html\n */\n async selectAccess(\n blockedAccessPermissions: string[] = []\n ): Promise<SelectedAccess[]> {\n return this.#messageManager.send(MessageCommands.selectAccess, {\n value: blockedAccessPermissions\n })\n }\n\n /**\n *
|
|
1
|
+
{"version":3,"file":"dialog.mjs","sources":["../../../src/frame/dialog.ts"],"sourcesContent":["import type { MessageManager } from './message'\nimport { MessageCommands } from './message'\nimport type { NumberString } from '../types/common'\n\nexport type SelectedUser = {\n /**\n * user identifier\n */\n id: NumberString\n\n /**\n * formatted username\n */\n name: string\n\n photo: string\n\n position: string\n\n url: string\n\n /**\n * The flag indicates that the selected user is a subordinate of the current user\n */\n sub: boolean\n\n /**\n * The flag indicates that the selected user is the manager of the current user\n */\n sup: boolean\n}\n\nexport type SelectedAccess = {\n /**\n * access permission identifier. Examples of identifiers:\n * - U1 — user with identifier 1\n * - IU1 — employees with identifier 1\n * - DR2 — all department and subdepartment employees with identifier 2\n * - D6 — all department employees with identifier 6\n * - G2 — group with identifier 2 (all visitors)\n * - SG4 — social network group with identifier 4\n * - AU — all authorized users\n * - CR — current user\n */\n id:\n | `AU`\n | `CR`\n | `U${number}`\n | `IU${number}`\n | `DR${number}`\n | `D${number}`\n | `G${number}`\n | `SG${number}`\n\n /**\n * name of the access permission\n */\n name: string\n}\n\nexport type SelectCRMParamsEntityType\n = | 'lead'\n | 'contact'\n | 'company'\n | 'deal'\n | 'quote'\n\nexport type SelectCRMParamsValue = {\n lead?: number[]\n contact?: number[]\n company?: number[]\n deal?: number[]\n quote?: number[]\n}\n\nexport type SelectCRMParams = {\n /**\n * Which types of objects to display in the dialog. Possible values:\n * - lead — Leads\n * - contact — Contacts\n * - company — Companies\n * - deal — Deals\n * - quote — Estimates\n */\n entityType: SelectCRMParamsEntityType[]\n\n /**\n * Whether multiple objects can be selected. Default is `false`\n */\n multiple: boolean\n\n /**\n * Which objects to initially add to the selected in the dialog. Works only if `multiple = true`\n */\n value?: SelectCRMParamsValue\n}\n\nexport type SelectedCRMEntity = {\n id: string\n type: SelectCRMParamsEntityType\n place: string\n title: string\n desc: string\n url: string\n}\n\nexport type SelectedCRM = {\n lead?: (SelectedCRMEntity & { id: `L_${number}` })[]\n contact?: (SelectedCRMEntity & { id: `C_${number}`, image: string })[]\n company?: (SelectedCRMEntity & { id: `CO_${number}`, image: string })[]\n deal?: (SelectedCRMEntity & { id: `D_${number}` })[]\n quote?: (SelectedCRMEntity & { id: `Q_${number}` })[]\n}\n\n/**\n * Select dialog manager\n *\n * @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/system-dialogues/index.html\n */\nexport class DialogManager {\n #messageManager: MessageManager\n\n constructor(messageManager: MessageManager) {\n this.#messageManager = messageManager\n }\n\n /**\n * Method displays the standard single user selection dialog\n * It only shows company employees\n *\n * @return {Promise<null|SelectedUser>}\n *\n * @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/system-dialogues/bx24-select-user.html\n */\n async selectUser(): Promise<null | SelectedUser> {\n return this.#messageManager.send(MessageCommands.selectUser, {\n mult: false\n })\n }\n\n /**\n * Method displays the standard multiple user selection dialog\n * It only shows company employees\n *\n * @return {Promise<SelectedUser[]>}\n *\n * @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/system-dialogues/bx24-select-users.html\n */\n async selectUsers(): Promise<SelectedUser[]> {\n return this.#messageManager.send(MessageCommands.selectUser, {\n mult: true\n })\n }\n\n /**\n * Method displays a standard access permission selection dialog\n *\n * @param {string[]} blockedAccessPermissions\n * @return {Promise<SelectedAccess[]>}\n *\n * @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/system-dialogues/bx24-select-access.html\n */\n async selectAccess(\n blockedAccessPermissions: string[] = []\n ): Promise<SelectedAccess[]> {\n return this.#messageManager.send(MessageCommands.selectAccess, {\n value: blockedAccessPermissions\n })\n }\n\n /**\n * Invokes the system dialog for selecting CRM entities\n * (leads, contacts, companies, deals, quotes).\n *\n * The resolved `SelectedCRM` object contains a separate bucket per\n * entity type. Each present bucket is a real `Array`, so consumers can\n * use `.length`, `.map()`, `for..of`, etc. directly. Buckets for entity\n * types that were not selected (or not requested via `entityType`) are\n * left `undefined` rather than being set to an empty array.\n *\n * Note: the parent window historically returned each bucket as a\n * `Record<string, SelectedCRMEntity>` (e.g. `{ 0: {...}, 1: {...} }`).\n * The SDK normalizes that response to a real array before returning it.\n *\n * @param {SelectCRMParams} [params] - Filter and behavior options.\n * - `entityType`: which entity types are shown in the dialog.\n * - `multiple`: allow multiple selection (default `false`).\n * - `value`: pre-selected entities (only applied when `multiple` is `true`).\n * @return {Promise<SelectedCRM>} Resolves to an object whose properties\n * (`lead`, `contact`, `company`, `deal`, `quote`) are arrays of\n * {@link SelectedCRMEntity} objects.\n *\n * @link https://apidocs.bitrix24.com/sdk/bx24-js-sdk/system-dialogues/bx24-select-crm.html\n */\n async selectCRM(params?: SelectCRMParams): Promise<SelectedCRM> {\n const response = await this.#messageManager.send(MessageCommands.selectCRM, {\n entityType: params?.entityType,\n multiple: params?.multiple,\n value: params?.value\n }) as Partial<Record<SelectCRMParamsEntityType, unknown>> | null | undefined\n\n // The parent window returns each entity bucket as a Record<string, SelectedCRMEntity>\n // (e.g. { 0: {...}, 1: {...} }) rather than a real array. Normalize to arrays so\n // the runtime shape matches the documented `SelectedCRM` types.\n const result: SelectedCRM = {}\n if (!response) {\n return result\n }\n\n const toArray = <T>(bucket: unknown): T[] | undefined => {\n if (bucket === undefined || bucket === null) {\n return undefined\n }\n if (Array.isArray(bucket)) {\n return bucket as T[]\n }\n return Object.values(bucket as Record<string, T>)\n }\n\n const lead = toArray<SelectedCRMEntity & { id: `L_${number}` }>(response.lead)\n if (lead) result.lead = lead\n\n const contact = toArray<SelectedCRMEntity & { id: `C_${number}`, image: string }>(response.contact)\n if (contact) result.contact = contact\n\n const company = toArray<SelectedCRMEntity & { id: `CO_${number}`, image: string }>(response.company)\n if (company) result.company = company\n\n const deal = toArray<SelectedCRMEntity & { id: `D_${number}` }>(response.deal)\n if (deal) result.deal = deal\n\n const quote = toArray<SelectedCRMEntity & { id: `Q_${number}` }>(response.quote)\n if (quote) result.quote = quote\n\n return result\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAuHO,MAAM,aAAA,CAAc;AAAA,EAvH3B;AAuH2B,IAAA,MAAA,CAAA,IAAA,EAAA,eAAA,CAAA;AAAA;AAAA,EACzB,eAAA;AAAA,EAEA,YAAY,cAAA,EAAgC;AAC1C,IAAA,IAAA,CAAK,eAAA,GAAkB,cAAA;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,UAAA,GAA2C;AAC/C,IAAA,OAAO,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,eAAA,CAAgB,UAAA,EAAY;AAAA,MAC3D,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,WAAA,GAAuC;AAC3C,IAAA,OAAO,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,eAAA,CAAgB,UAAA,EAAY;AAAA,MAC3D,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,YAAA,CACJ,wBAAA,GAAqC,EAAC,EACX;AAC3B,IAAA,OAAO,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,eAAA,CAAgB,YAAA,EAAc;AAAA,MAC7D,KAAA,EAAO;AAAA,KACR,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA0BA,MAAM,UAAU,MAAA,EAAgD;AAC9D,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,gBAAgB,SAAA,EAAW;AAAA,MAC1E,YAAY,MAAA,EAAQ,UAAA;AAAA,MACpB,UAAU,MAAA,EAAQ,QAAA;AAAA,MAClB,OAAO,MAAA,EAAQ;AAAA,KAChB,CAAA;AAKD,IAAA,MAAM,SAAsB,EAAC;AAC7B,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,OAAO,MAAA;AAAA,IACT;AAEA,IAAA,MAAM,OAAA,2BAAc,MAAA,KAAqC;AACvD,MAAA,IAAI,MAAA,KAAW,MAAA,IAAa,MAAA,KAAW,IAAA,EAAM;AAC3C,QAAA,OAAO,MAAA;AAAA,MACT;AACA,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,EAAG;AACzB,QAAA,OAAO,MAAA;AAAA,MACT;AACA,MAAA,OAAO,MAAA,CAAO,OAAO,MAA2B,CAAA;AAAA,IAClD,CAAA,EARgB,SAAA,CAAA;AAUhB,IAAA,MAAM,IAAA,GAAO,OAAA,CAAmD,QAAA,CAAS,IAAI,CAAA;AAC7E,IAAA,IAAI,IAAA,SAAa,IAAA,GAAO,IAAA;AAExB,IAAA,MAAM,OAAA,GAAU,OAAA,CAAkE,QAAA,CAAS,OAAO,CAAA;AAClG,IAAA,IAAI,OAAA,SAAgB,OAAA,GAAU,OAAA;AAE9B,IAAA,MAAM,OAAA,GAAU,OAAA,CAAmE,QAAA,CAAS,OAAO,CAAA;AACnG,IAAA,IAAI,OAAA,SAAgB,OAAA,GAAU,OAAA;AAE9B,IAAA,MAAM,IAAA,GAAO,OAAA,CAAmD,QAAA,CAAS,IAAI,CAAA;AAC7E,IAAA,IAAI,IAAA,SAAa,IAAA,GAAO,IAAA;AAExB,IAAA,MAAM,KAAA,GAAQ,OAAA,CAAmD,QAAA,CAAS,KAAK,CAAA;AAC/E,IAAA,IAAI,KAAA,SAAc,KAAA,GAAQ,KAAA;AAE1B,IAAA,OAAO,MAAA;AAAA,EACT;AACF;;;;"}
|
package/dist/esm/frame/frame.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @package @bitrix24/b24jssdk
|
|
3
|
-
* @version 1.0
|
|
3
|
+
* @version 1.1.0
|
|
4
4
|
* @copyright (c) 2026 Bitrix24
|
|
5
5
|
* @license MIT
|
|
6
6
|
* @see https://github.com/bitrix24/b24jssdk
|
|
@@ -82,22 +82,45 @@ class PlacementManager {
|
|
|
82
82
|
}
|
|
83
83
|
);
|
|
84
84
|
}
|
|
85
|
+
async call(command, parameters = {}) {
|
|
86
|
+
if (command === "setValue" && !Type.isString(parameters?.["value"])) {
|
|
87
|
+
throw new TypeError(
|
|
88
|
+
"placement.call('setValue', { value }) expects `value` to be a JSON-serialized string. Use placement.setValue(value) to serialize automatically, or call JSON.stringify yourself."
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
return this.#messageManager.send(
|
|
92
|
+
command,
|
|
93
|
+
{
|
|
94
|
+
...parameters,
|
|
95
|
+
isSafely: true,
|
|
96
|
+
isRawValue: ["setValue"].includes(command)
|
|
97
|
+
}
|
|
98
|
+
);
|
|
99
|
+
}
|
|
85
100
|
/**
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
101
|
+
* Set Value for the Current Embedding Location
|
|
102
|
+
*
|
|
103
|
+
* Convenience wrapper around `placement.call('setValue', ...)` that handles
|
|
104
|
+
* JSON serialization. Pass any value (string, number, boolean, object, array)
|
|
105
|
+
* — it will be serialized via `JSON.stringify` before being sent to the
|
|
106
|
+
* parent window, which performs `JSON.parse` on receipt.
|
|
107
|
+
*
|
|
108
|
+
* @param { unknown } value Any JSON-serializable value
|
|
89
109
|
* @return { Promise<any> }
|
|
90
110
|
*
|
|
91
111
|
* @link https://apidocs.bitrix24.com/api-reference/widgets/ui-interaction/bx24-placement-call.html
|
|
92
|
-
*
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* await b24.placement.setValue('test')
|
|
115
|
+
* await b24.placement.setValue({ id: 1, title: 'demo' })
|
|
93
116
|
*/
|
|
94
|
-
async
|
|
117
|
+
async setValue(value) {
|
|
95
118
|
return this.#messageManager.send(
|
|
96
|
-
|
|
119
|
+
"setValue",
|
|
97
120
|
{
|
|
98
|
-
|
|
121
|
+
value: JSON.stringify(value),
|
|
99
122
|
isSafely: true,
|
|
100
|
-
isRawValue:
|
|
123
|
+
isRawValue: true
|
|
101
124
|
}
|
|
102
125
|
);
|
|
103
126
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"placement.mjs","sources":["../../../src/frame/placement.ts"],"sourcesContent":["import type { MessageManager } from './message'\nimport type { MessageInitData } from '../types/auth'\nimport { MessageCommands } from './message'\nimport { Type } from '../tools/type'\n\n/**\n * Placement Manager\n *\n * @see https://apidocs.bitrix24.com/api-reference/widgets/ui-interaction/index.html\n */\nexport class PlacementManager {\n #messageManager: MessageManager\n #placement: string = ''\n #options: object = {}\n\n constructor(messageManager: MessageManager) {\n this.#messageManager = messageManager\n }\n\n /**\n * Initializes the data received from the parent window message.\n * @param data\n */\n initData(data: MessageInitData): PlacementManager {\n this.#placement = data.PLACEMENT || 'DEFAULT'\n this.#options = Object.freeze(data.PLACEMENT_OPTIONS)\n\n return this\n }\n\n /**\n * Symlink on `placement`\n * For backward compatibility\n */\n get title(): string {\n return this.#placement\n }\n\n get placement(): string {\n return this.#placement\n }\n\n get isDefault(): boolean {\n return this.placement === 'DEFAULT'\n }\n\n get options(): any {\n return this.#options\n }\n\n get isSliderMode(): boolean {\n return this.options?.IFRAME === 'Y'\n }\n\n /**\n * Get Information About the JS Interface of the Current Embedding Location\n *\n * @return {Promise<any>}\n *\n * @link https://apidocs.bitrix24.com/api-reference/widgets/ui-interaction/bx24-placement-get-interface.html\n */\n async getInterface(): Promise<any> {\n return this.#messageManager.send(\n MessageCommands.getInterface,\n {\n isSafely: true\n }\n )\n }\n\n /**\n * Set Up the Interface Event Handler\n * @param {string} eventName\n * @param {(...args: any[]) => void} callBack\n * @return {Promise<any>}\n *\n * @link https://apidocs.bitrix24.com/api-reference/widgets/ui-interaction/bx24-placement-bind-event.html\n */\n async bindEvent(\n eventName: string,\n callBack: (...args: any[]) => void\n ): Promise<any> {\n return this.#messageManager.send(\n MessageCommands.placementBindEvent,\n {\n event: eventName,\n callBack,\n isSafely: true\n }\n )\n }\n\n /**\n * Call the Registered Interface Command\n * @
|
|
1
|
+
{"version":3,"file":"placement.mjs","sources":["../../../src/frame/placement.ts"],"sourcesContent":["import type { MessageManager } from './message'\nimport type { MessageInitData } from '../types/auth'\nimport { MessageCommands } from './message'\nimport { Type } from '../tools/type'\n\n/**\n * Placement Manager\n *\n * @see https://apidocs.bitrix24.com/api-reference/widgets/ui-interaction/index.html\n */\nexport class PlacementManager {\n #messageManager: MessageManager\n #placement: string = ''\n #options: object = {}\n\n constructor(messageManager: MessageManager) {\n this.#messageManager = messageManager\n }\n\n /**\n * Initializes the data received from the parent window message.\n * @param data\n */\n initData(data: MessageInitData): PlacementManager {\n this.#placement = data.PLACEMENT || 'DEFAULT'\n this.#options = Object.freeze(data.PLACEMENT_OPTIONS)\n\n return this\n }\n\n /**\n * Symlink on `placement`\n * For backward compatibility\n */\n get title(): string {\n return this.#placement\n }\n\n get placement(): string {\n return this.#placement\n }\n\n get isDefault(): boolean {\n return this.placement === 'DEFAULT'\n }\n\n get options(): any {\n return this.#options\n }\n\n get isSliderMode(): boolean {\n return this.options?.IFRAME === 'Y'\n }\n\n /**\n * Get Information About the JS Interface of the Current Embedding Location\n *\n * @return {Promise<any>}\n *\n * @link https://apidocs.bitrix24.com/api-reference/widgets/ui-interaction/bx24-placement-get-interface.html\n */\n async getInterface(): Promise<any> {\n return this.#messageManager.send(\n MessageCommands.getInterface,\n {\n isSafely: true\n }\n )\n }\n\n /**\n * Set Up the Interface Event Handler\n * @param {string} eventName\n * @param {(...args: any[]) => void} callBack\n * @return {Promise<any>}\n *\n * @link https://apidocs.bitrix24.com/api-reference/widgets/ui-interaction/bx24-placement-bind-event.html\n */\n async bindEvent(\n eventName: string,\n callBack: (...args: any[]) => void\n ): Promise<any> {\n return this.#messageManager.send(\n MessageCommands.placementBindEvent,\n {\n event: eventName,\n callBack,\n isSafely: true\n }\n )\n }\n\n /**\n * Call the Registered Interface Command\n *\n * @link https://apidocs.bitrix24.com/api-reference/widgets/ui-interaction/bx24-placement-call.html\n *\n * @memo The `setValue` command is special: the parent window calls `JSON.parse(value)`\n * on the received payload, so `value` MUST be a JSON-serialized string\n * (e.g. `JSON.stringify('test')` or `JSON.stringify({ a: 1 })`).\n * Prefer {@link PlacementManager.setValue} which serializes for you.\n *\n * @throws {TypeError} when `command === 'setValue'` and `parameters.value` is not a string.\n */\n async call(command: 'setValue', parameters: { value: string }): Promise<any>\n async call(command: string, parameters?: Record<string, any>): Promise<any>\n async call(command: string, parameters: Record<string, any> = {}): Promise<any> {\n if (command === 'setValue' && !Type.isString(parameters?.['value'])) {\n throw new TypeError(\n 'placement.call(\\'setValue\\', { value }) expects `value` to be a JSON-serialized string. '\n + 'Use placement.setValue(value) to serialize automatically, or call JSON.stringify yourself.'\n )\n }\n\n return this.#messageManager.send(\n command,\n {\n ...parameters,\n isSafely: true,\n isRawValue: ['setValue'].includes(command)\n }\n )\n }\n\n /**\n * Set Value for the Current Embedding Location\n *\n * Convenience wrapper around `placement.call('setValue', ...)` that handles\n * JSON serialization. Pass any value (string, number, boolean, object, array)\n * — it will be serialized via `JSON.stringify` before being sent to the\n * parent window, which performs `JSON.parse` on receipt.\n *\n * @param { unknown } value Any JSON-serializable value\n * @return { Promise<any> }\n *\n * @link https://apidocs.bitrix24.com/api-reference/widgets/ui-interaction/bx24-placement-call.html\n *\n * @example\n * await b24.placement.setValue('test')\n * await b24.placement.setValue({ id: 1, title: 'demo' })\n */\n async setValue(value: unknown): Promise<any> {\n return this.#messageManager.send(\n 'setValue',\n {\n value: JSON.stringify(value),\n isSafely: true,\n isRawValue: true\n }\n )\n }\n\n /**\n * Set Up the Interface Event Handler\n * @param {string} command\n * @param {null | string | Record<string, any>} parameters\n * @param {(...args: any[]) => void} callBack\n *\n * @return {Promise<any>}\n */\n async callCustomBind(\n command: string,\n parameters: null | string | Record<string, any> = null,\n callBack: (...args: any[]) => void\n ): Promise<any> {\n let options: Record<string, any> = {}\n if (Type.isString(parameters)) {\n options['singleOption'] = parameters\n } else if (Type.isObjectLike(parameters)) {\n options = { ...(parameters as object) }\n }\n\n return this.#messageManager.send(\n command,\n {\n ...options,\n callBack,\n isSafely: true\n }\n )\n }\n}\n"],"names":[],"mappings":"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"}
|
package/dist/esm/hook/auth.mjs
CHANGED