@bitrix24/b24jssdk
Version:
Bitrix24 REST API JavaScript SDK
132 lines (129 loc) • 3.38 kB
JavaScript
/**
* @package @bitrix24/b24jssdk
* @version 1.0.1
* @copyright (c) 2026 Bitrix24
* @license MIT
* @see https://github.com/bitrix24/b24jssdk
* @see https://bitrix24.github.io/b24jssdk/
*/
import { Type } from '../tools/type.mjs';
import { MessageCommands } from './message/commands.mjs';
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
class PlacementManager {
static {
__name(this, "PlacementManager");
}
#messageManager;
#placement = "";
#options = {};
constructor(messageManager) {
this.#messageManager = messageManager;
}
/**
* Initializes the data received from the parent window message.
* @param data
*/
initData(data) {
this.#placement = data.PLACEMENT || "DEFAULT";
this.#options = Object.freeze(data.PLACEMENT_OPTIONS);
return this;
}
/**
* Symlink on `placement`
* For backward compatibility
*/
get title() {
return this.#placement;
}
get placement() {
return this.#placement;
}
get isDefault() {
return this.placement === "DEFAULT";
}
get options() {
return this.#options;
}
get isSliderMode() {
return this.options?.IFRAME === "Y";
}
/**
* Get Information About the JS Interface of the Current Embedding Location
*
* @return {Promise<any>}
*
* @link https://apidocs.bitrix24.com/api-reference/widgets/ui-interaction/bx24-placement-get-interface.html
*/
async getInterface() {
return this.#messageManager.send(
MessageCommands.getInterface,
{
isSafely: true
}
);
}
/**
* Set Up the Interface Event Handler
* @param {string} eventName
* @param {(...args: any[]) => void} callBack
* @return {Promise<any>}
*
* @link https://apidocs.bitrix24.com/api-reference/widgets/ui-interaction/bx24-placement-bind-event.html
*/
async bindEvent(eventName, callBack) {
return this.#messageManager.send(
MessageCommands.placementBindEvent,
{
event: eventName,
callBack,
isSafely: true
}
);
}
/**
* Call the Registered Interface Command
* @param { string } command
* @param { Record<string, any> } parameters
* @return { Promise<any> }
*
* @link https://apidocs.bitrix24.com/api-reference/widgets/ui-interaction/bx24-placement-call.html
* @memo For the `setValue` command, use the following parameters { value: string }
*/
async call(command, parameters = {}) {
return this.#messageManager.send(
command,
{
...parameters,
isSafely: true,
isRawValue: ["setValue"].includes(command)
}
);
}
/**
* Set Up the Interface Event Handler
* @param {string} command
* @param {null | string | Record<string, any>} parameters
* @param {(...args: any[]) => void} callBack
*
* @return {Promise<any>}
*/
async callCustomBind(command, parameters = null, callBack) {
let options = {};
if (Type.isString(parameters)) {
options["singleOption"] = parameters;
} else if (Type.isObjectLike(parameters)) {
options = { ...parameters };
}
return this.#messageManager.send(
command,
{
...options,
callBack,
isSafely: true
}
);
}
}
export { PlacementManager };
//# sourceMappingURL=placement.mjs.map