$_bx Library Documentation
🔧 Core Properties
state
- Type:
Object
- Description: The main plugin state object containing all plugin data
- Usage:
$_bx.state.propertyName
global
- Type:
Object
- Description: Global system state including user info, answer status, and UI controls
- Properties:
answerRequired
: Boolean - whether answer is requiredassignmentRequired
: Boolean - whether assignment is requiredhasAnswer
: Boolean - whether answer is presentanswerMessage
: String - feedback messageuser
: Object - user information (id, firstName, lastName, email, avatar)saveButtonEnabled
: Boolean - save button state
📊 State Management Methods
getState()
- Returns:
Object
- complete plugin state - Description: Retrieves the current plugin state
- Usage:
const state = $_bx.getState()
get(key)
- Parameters:
key
(String) - dot-notation path to state property - Returns:
Any
- value at the specified path - Description: Gets a nested state property using dot notation
- Usage:
const value = $_bx.get('nested.property')
push(key, value)
- Parameters:
key
(String) - state property namevalue
(Any) - value to set
- Returns:
Promise
- event emission promise - Description: Sets a state property and emits change events
- Events:
before_push
,change_${key}
,after_push
- Usage:
$_bx.push('title', 'New Title')
clean(key)
- Parameters:
key
(String) - state property name - Returns:
Promise
- event emission promise - Description: Clears a state property by setting it to empty string
- Events:
before_clean
,after_clean
- Usage:
$_bx.clean('content')
async saveState()
- Returns:
Promise<void>
- Description: Saves the current state to the system (syllabus mode only)
- Events:
before_save_state
,after_save_state
- Usage:
await $_bx.saveState()
putState()
- Description: Sends state to parent system with settings
- Events:
before_put_state
,after_put_state
- Usage:
$_bx.putState()
⚙️ Settings Management
getSettings(key = null)
Parameters:
key
(String, optional) - specific setting keyReturns:
Object|Any
- settings object or specific setting valueDescription: Retrieves plugin settings from state._settings
Usage:
const allSettings = $_bx.getSettings(); const specificSetting = $_bx.getSettings('theme');
🎯 Answer & Assessment Methods
isCorrect()
- Returns:
Boolean
- whether the answer is correct - Description: Checks if the current answer is marked as correct
- Usage:
if ($_bx.isCorrect()) { ... }
answerSubmit()
Returns:
Promise<Object>
- submission resultDescription: Submits the current answer for evaluation
Events:
before_submit
,after_submit
Usage:
try { const result = await $_bx.answerSubmit(); console.log('Submission successful:', result); } catch (error) { console.error('Submission failed:', error); }
isAnswerRequired()
- Returns:
Boolean
- whether answer is required - Description: Checks if the plugin requires an answer
- Usage:
if ($_bx.isAnswerRequired()) { ... }
isAssignmentRequired()
- Returns:
Boolean
- whether assignment is required - Description: Checks if the plugin requires an assignment submission
- Usage:
if ($_bx.isAssignmentRequired()) { ... }
hasAnswer()
- Returns:
Boolean
- whether answer is present - Description: Checks if user has provided an answer
- Usage:
if ($_bx.hasAnswer()) { ... }
answerMessage()
- Returns:
String
- feedback message - Description: Gets the current answer feedback message
- Usage:
const message = $_bx.answerMessage()
parseMessage()
- Returns:
Object
- parsed message with type and content - Description: Parses answer message to extract type and content
- Returns:
{type: 'success|feedback|wrong|info', content: String}
- Usage:
const parsed = $_bx.parseMessage()
isPendingApproval()
- Returns:
Boolean
- whether answer is pending approval - Description: Checks if answer requires manual approval
- Usage:
if ($_bx.isPendingApproval()) { ... }
👤 User & System Information
getUser()
- Returns:
Object
- user information - Description: Gets current user information
- Properties:
{id, firstName, lastName, email, avatar}
- Usage:
const user = $_bx.getUser()
getComponentID()
- Returns:
String
- component identifier - Description: Gets the current component ID
- Usage:
const id = $_bx.getComponentID()
getResponseId()
- Returns:
String
- response identifier - Description: Gets the current response ID
- Usage:
const responseId = $_bx.getResponseId()
mode()
- Returns:
String
- 'light' or 'dark' - Description: Gets current theme mode
- Usage:
const mode = $_bx.mode()
language()
- Returns:
String
- language code (e.g., 'en', 'ru') - Description: Gets current language setting
- Usage:
const lang = $_bx.language()
isSyllabus()
- Returns:
Boolean
- whether in syllabus mode - Description: Checks if component is in syllabus/editing mode
- Usage:
if ($_bx.isSyllabus()) { ... }
🎨 Theme & UI Methods
isDark()
- Returns:
Boolean
- whether dark theme is active - Description: Checks if dark mode is enabled
- Usage:
if ($_bx.isDark()) { ... }
isLight()
- Returns:
Boolean
- whether light theme is active - Description: Checks if light mode is enabled
- Usage:
if ($_bx.isLight()) { ... }
setSaveButtonEnabled(value)
- Parameters:
value
(Boolean) - enable/disable save button - Description: Controls the save button state
- Usage:
$_bx.setSaveButtonEnabled(false)
isSaveButtonEnabled()
- Returns:
Boolean
- save button state - Description: Checks if save button is enabled
- Usage:
if ($_bx.isSaveButtonEnabled()) { ... }
📤 Messaging & Communication
sendMessage(e)
- Parameters:
e
(String|Object) - message to send - Description: Sends message to parent window
- Usage:
$_bx.sendMessage(JSON.stringify({type: 'custom', data: 'value'}))
event()
Returns:
EventEmitter
- event emitter instanceDescription: Gets the event emitter for custom events
Usage:
$_bx.event().on('custom_event', (data) => { console.log('Custom event:', data); }); $_bx.event().emit('custom_event', {data: 'value'});
📁 File Upload Methods
uploadFile(blob, onProgress, originalFileName)
Parameters:
blob
(Blob) - file to uploadonProgress
(Function, optional) - progress callbackoriginalFileName
(String, optional) - original filename
Returns:
Promise<Object>
- upload resultDescription: Uploads a file and returns file information
Usage:
const result = await $_bx.uploadFile(fileBlob, (progress) => { console.log('Upload progress:', progress); }, 'document.pdf'); // Returns: {fileURL, fileSize, fileID}
uploadImage(blob)
- Parameters:
blob
(Blob) - image file to upload - Returns:
Promise<String>
- image URL - Description: Uploads an image and returns the URL
- Usage:
const imageUrl = await $_bx.uploadImage(imageBlob)
uploadVideo(blob, onProgress)
⚠️ DEPRECATED
- Parameters:
blob
(Blob) - video file to uploadonProgress
(Function, optional) - progress callback
- Returns:
Promise<Object>
- upload result - Description: Uploads a video (deprecated, use uploadTVideo)
- Usage:
const result = await $_bx.uploadVideo(videoBlob)
uploadTVideo(blob, mimeType, onProgress)
Parameters:
blob
(Blob) - video file to uploadmimeType
(String) - video MIME typeonProgress
(Function, optional) - progress callback
Returns:
Promise<Object>
- upload resultDescription: Uploads a video with MIME type specification
Usage:
const result = await $_bx.uploadTVideo(videoBlob, 'video/mp4', (progress) => { console.log('Video upload progress:', progress); }); // Returns: {videoURL, thumbnail, videoID}
fetchFile(fileId)
- Parameters:
fileId
(String) - file identifier - Returns:
Promise<Object>
- file information - Description: Retrieves file information by ID
- Usage:
const file = await $_bx.fetchFile('file_123')
🖥️ UI & Display Methods
refreshHeight()
- Description: Automatically adjusts iframe height based on content
- Usage:
$_bx.refreshHeight()
fixView()
- Description: Requests view fix from parent system
- Usage:
$_bx.fixView()
contentLoaded()
- Description: Notifies system that content has loaded
- Usage:
$_bx.contentLoaded()
scroll(scrollTop)
- Parameters:
scrollTop
(Number) - scroll position - Description: Sends scroll position to parent system
- Usage:
$_bx.scroll(500)
💬 Message Box & Modal Methods
showMessageBox(variant, message)
- Parameters:
variant
(String) - 'success', 'error', 'warning', 'info'message
(String) - message text
- Description: Shows a message box with specified variant
- Usage:
$_bx.showMessageBox('success', 'Operation completed!')
showModal(title, message)
- Parameters:
title
(String) - modal titlemessage
(String) - modal message
- Description: Shows a modal dialog
- Usage:
$_bx.showModal('Confirm', 'Are you sure?')
dangerouslyShowModal(title, html)
- Parameters:
title
(String) - modal titlehtml
(String) - HTML content
- Description: Shows a modal with custom HTML content
- Usage:
$_bx.dangerouslyShowModal('Custom', 'Custom HTML')
showSuccessMessage(message)
- Parameters:
message
(String) - success message - Description: Shows a success message box
- Usage:
$_bx.showSuccessMessage('Saved successfully!')
showErrorMessage(message)
- Parameters:
message
(String) - error message - Description: Shows an error message box and throws error
- Usage:
$_bx.showErrorMessage('Operation failed!')
showWarningMessage(message)
- Parameters:
message
(String) - warning message - Description: Shows a warning message box
- Usage:
$_bx.showWarningMessage('Please check your input')
showInfoMessage(message)
- Parameters:
message
(String) - info message - Description: Shows an info message box
- Usage:
$_bx.showInfoMessage('Please wait...')
⚙️ Settings & Configuration
isShowSettings()
- Returns:
Boolean
- whether settings dialog should be shown - Description: Checks if plugin has settings configuration
- Usage:
if ($_bx.isShowSettings()) { ... }
showSettings()
- Description: Opens the settings dialog (syllabus mode only)
- Usage:
$_bx.showSettings()
showAbout()
- Description: Shows plugin information dialog (syllabus mode only)
- Usage:
$_bx.showAbout()
🔄 System Control Methods
reset()
- Description: Resets the plugin state (syllabus mode only)
- Usage:
$_bx.reset()
_doubleClickEdit()
- Description: Triggers double-click edit mode
- Usage:
$_bx._doubleClickEdit()
_onClick()
- Description: Triggers click event
- Usage:
$_bx._onClick()
⏰ Lifecycle & Ready Methods
onReady(callback)
Parameters:
callback
(Function) - function to execute when readyDescription: Executes callback when DOM and data are ready
Usage:
$_bx.onReady((element) => { console.log('Plugin is ready:', element); });
waitForElement(elementId, callback)
Parameters:
elementId
(String) - element ID to wait forcallback
(Function) - function to execute when element is found
Description: Waits for specific element to appear in DOM
Usage:
$_bx.waitForElement('my-element', (element) => { console.log('Element found:', element); });
📝 Usage Examples
Basic State Management
// Get state
const state = $_bx.getState();
// Set state property
$_bx.push('title', 'My Plugin Title');
// Get nested property
const content = $_bx.get('content.text');
// Save state
await $_bx.saveState();
File Upload
// Upload file with progress
const fileInput = document.getElementById('file-input');
const file = fileInput.files[0];
if (file) {
try {
const result = await $_bx.uploadFile(file, (progress) => {
console.log(`Upload progress: ${progress}%`);
});
console.log('File uploaded:', result.fileURL);
} catch (error) {
console.error('Upload failed:', error);
}
}
Answer Submission
// Submit answer
try {
const result = await $_bx.answerSubmit();
if ($_bx.isCorrect()) {
$_bx.showSuccessMessage('Correct answer!');
} else {
const message = $_bx.answerMessage();
$_bx.showInfoMessage(message);
}
} catch (error) {
$_bx.showErrorMessage('Submission failed');
}
Event Handling
// Listen for state changes
$_bx.event().on('change_title', (data) => {
console.log('Title changed from', data.old_value, 'to', data.new_value);
});
// Listen for before save
$_bx.event().on('before_save_state', (data) => {
console.log('Saving state:', data);
});
Theme Detection
// Check theme and apply styles
if ($_bx.isDark()) {
document.body.classList.add('dark-theme');
} else {
document.body.classList.add('light-theme');
}
// Check language
const lang = $_bx.language();
if (lang === 'ru') {
// Apply Russian translations
}
⚠️ Important Notes
- Syllabus Mode: Some methods only work in syllabus/editing mode (
isSyllabus()
returns true) - Async Operations: File uploads and answer submission are asynchronous
- Error Handling: Always wrap async operations in try-catch blocks
- Event Cleanup: Remove event listeners when components are destroyed
- Height Management: Call
refreshHeight()
after dynamic content changes - State Validation: Validate state before saving or submitting
🔄 Version History
- Current Version: 1.0
- Last Updated: 2024
- Deprecated Methods:
uploadVideo()
- useuploadTVideo()
instead
This documentation covers all public methods and properties of the $_bx library. For internal implementation details, refer to the source code.