/* object-assign (c) Sindre Sorhus @license MIT */ /* @__PURE__ */ /* Close */ /* Closed */ /* Opened */ /* UPDATED */ /* webpack/runtime/compat get default export */ /* webpack/runtime/define property getters */ /* webpack/runtime/global */ /* webpack/runtime/hasOwnProperty shorthand */ /*! * Codex JavaScript Notification module * https://github.com/codex-team/js-notifier */ /*! * CodeX.Tooltips * * @version 1.0.5 * * @licence MIT * @author CodeX * * */ /*! * Library for handling keyboard shortcuts * @copyright CodeX (https://codex.so) * @license MIT * @author CodeX (https://codex.so) * @version 1.2.0 */ /*! exports provided: default */ /*! no static exports found */ /*!**************************!*\ !*** ./src/Hyperlink.js ***! \**************************/ /*!***************************!*\ !*** ./src/Hyperlink.css ***! \***************************/ /*!*******************************!*\ !*** ./src/SelectionUtils.js ***! \*******************************/ /*!*****************************************************!*\ !*** ./node_modules/css-loader/dist/runtime/api.js ***! \*****************************************************/ /*!*****************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./src/Hyperlink.css ***! \*****************************************************************/ /*!****************************************************************************!*\ !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***! \****************************************************************************/ /*#__PURE__*/ /** * Assigns event listener on DOM element and pushes into special array that might be removed * * @param {EventTarget} element - DOM Element * @param {string} eventType - Event name * @param {Function} handler - Event handler * @param {boolean|AddEventListenerOptions} options - Listening options */ /** * Base Block styles */ /** * Clears all mutable listeners */ /** * Drag n drop file from into the Editor */ /** * Element that holds all the Blocks */ /** * Inline Tools styles */ /** * Paste HTML into Editor */ /** * Paste URL of image into the Editor */ /** * Settings styles */ /** * There can be added some UI methods, like toggleThinMode() etc */ /** * To create Quote data from string, simple fill 'text' property */ /** * To create string from Quote data, concatenate text and caption * * @param {QuoteData} quoteData * @returns {string} */ /** * Tool's classes */ /** * Top-level editor instance wrapper */ /** * UI elements */ /** * Used to prevent focusing on the input by Tab key * (Popover in the Toolbar lays below the blocks, * so Tab in the last block will focus this hidden input if this property is not set) */ /** * .ce-block element, that wraps plugin contents * * @returns {HTMLElement} */ /** * Allows to say Editor that Block was changed. Used to manually trigger Editor's 'onChange' callback * Can be useful for block changes invisible for editor core. */ /** * Block id * * @returns {string} */ /** * Call Tool method with errors handler under-the-hood * * @param {string} methodName - method to call * @param {object} param - object with parameters * @returns {unknown} */ /** * Save Block content * * @returns {Promise} */ /** * Set Block's stretch state * * @param {boolean} state — state to set */ /** * Tool config passed on Editor's initialization * * @returns {ToolConfig} */ /** * Tool name * * @returns {string} */ /** * True if Block content is empty * * @returns {boolean} */ /** * True if Block has inputs to be focused */ /** * True if Block is selected with Cross-Block selection * * @returns {boolean} */ /** * True if Block is stretched * * @returns {boolean} */ /** * Validate Block data * * @param {BlockToolData} data - data to validate * @returns {Promise} */ /** * If there is cross block selection started, target will be equal to redactor so we need additional check */ /** * Prevent caret jumping (to last block) when clicking between blocks */ /** * Moving / appearance * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /** * Used by Editor.js paste handling API. * Provides configuration to handle CODE tag. * * @static * @returns {{tags: string[]}} */ /** * Working with Tools * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /** * '/' + 'command' keydown inside a Block */ /** * '/' keydown inside a Block */ /** * - Toggles item active state, if clicked popover item has property 'toggle' set to true. * * - Performs radiobutton-like behavior if the item has property 'toggle' set to string key. * (All the other items with the same key get inactive, and the item gets active) * * @param clickedItem - popover item that was clicked */ /** * 1) Find first-level Block from passed child Node * 2) Mark it as current * * @param {Node} childNode - look ahead from this node. * @returns {Block | undefined} can return undefined in case when the passed child note is not a part of the current editor instance */ /** * @class * @param config - tools config * @param editorConfig - EditorJS config * @param api - EditorJS API module */ /** * @class * @param moduleConfiguration - Module Configuration * @param moduleConfiguration.config - Editor's config * @param moduleConfiguration.eventsDispatcher - Editor's event dispatcher */ /** * @class * @param options - Module options * @param options.config - Module config * @param options.eventsDispatcher - Common event bus */ /** * @class * @param {ConstructorOptions} options - Constructor options */ /** * @class * @param {HTMLElement} workingArea — editor`s working node */ /** * @param api - Editor.js API */ /** * @param moduleConfiguration - Module Configuration * @param moduleConfiguration.config - Editor's config * @param moduleConfiguration.eventsDispatcher - Editor's event dispatcher */ /** * @param options - available config * @param options.items - searchable items list * @param options.onSearch - search callback * @param options.placeholder - input placeholder */ /** * @param options - block constructor options * @param [options.id] - block's id. Will be generated if omitted. * @param options.data - Tool's initial data * @param options.tool — block's tool * @param options.api - Editor API module for pass it to the Block Tunes * @param options.readOnly - Read-Only flag * @param [eventBus] - Editor common event bus. Allows to subscribe on some Editor events. Could be omitted when "virtual" Block is created. See BlocksAPI@composeBlockData. */ /** * @param options - constructor options * @param options.data - stub tool data * @param options.api - Editor.js API */ /** * @param {DragEvent} dragEvent - drag event */ /** * @param {EditorConfig|string|undefined} [configuration] - user configuration */ /** * @param {EditorConfig} config - user configuration */ /** * @param {EmbedData} data - embed data * @param {RegExp} [data.regex] - pattern of source URLs * @param {string} [data.embedUrl] - URL scheme to embedded page. Use '<%= remote_id %>' to define a place to insert resource id * @param {string} [data.html] - iframe which contains embedded content * @param {number} [data.height] - iframe height * @param {number} [data.width] - iframe width * @param {string} [data.caption] - caption */ /** * @param {FlipperOptions} options - different constructing settings */ /** * @param {HTMLElement[]} nodeList — the list of iterable HTML-items * @param {string} focusedCssClass - user-provided CSS-class that will be set in flipping process */ /** * @param {KeyboardEvent} event - keyboard event */ /** * @param {MouseEvent} mouseEvent - mouse event payload */ /** * @param {boolean} needFocus - on link creation we need to focus input. On editing - nope. */ /** * @param {object} options - constructor options * @param {PopoverItem[]} options.items - constructor options */ /** * @param {object} params - uploader module params * @param {ImageConfig} params.config - image tool config * @param {Function} params.onUpload - one callback for all uploading (file, url, d-n-d, pasting) * @param {Function} params.onError - callback for uploading errors */ /** * @param {object} tool - tool properties got from editor.js * @param {ImageToolData} tool.data - previously saved data * @param {ImageConfig} tool.config - user config for Tool * @param {object} tool.api - Editor.js API * @param {boolean} tool.readOnly - read-only mode flag * @param {BlockAPI|{}} tool.block - current Block API */ /** * @param {object} ui - image tool Ui module * @param {object} ui.api - Editor.js API * @param {ImageConfig} ui.config - user config * @param {Function} ui.onSelectFile - callback for clicks on Select file button * @param {boolean} ui.readOnly - read-only mode flag */ /** * @param {{api: object}} - Editor.js API */ /** * @param {{data: EmbedData, config: EmbedConfig, api: object}} * data — previously saved data * config - user config for Tool * api - Editor.js API * readOnly - read-only mode flag */ /** * @returns {EmbedData} */ /** * @typedef {object} CodeData — plugin saved data * @property {string} code - previously saved plugin code */ /** * @typedef {object} level * @property {number} number - level number * @property {string} tag - tag corresponds with level number * @property {string} svg - icon */ /** * A helper to get config value. * * @param {string} configName - the key to get from the config. * @param {any} defaultValue - default value if config doesn't have passed key * @param {object} savedData - previously saved data. If passed, the key will be got from there, otherwise from the config * @returns {any} - config value. */ /** * Activates confirmation mode for the item. * * @param newState - new popover item params that should be applied */ /** * Activates scrolling if blockSelection is active and mouse is in scroll zone * * @param {number} speed - speed of scrolling */ /** * Active tab/arrows handling by flipper * * @param items - Some modules (like, InlineToolbar, BlockSettings) might refresh buttons dynamically * @param cursorPosition - index of the item that should be focused once flipper is activated */ /** * Add 'http' protocol to the links like 'vc.ru', 'google.com' * * @param {string} link - string to process */ /** * Add column in table on index place * Add cells in each row * * @param {number} columnIndex - number in the array of columns, where new column to insert, -1 if insert at the end * @param {boolean} [setFocus] - pass true to focus the first cell */ /** * Add drag events listeners to editor zone */ /** * Add drop target styles * * @param {DragEvent} event - drag over event */ /** * Add effect of a selected column * * @param {number} index */ /** * Add effect of a selected row * * @param {number} index */ /** * Add indentation to current item * * @param {KeyboardEvent} event - keydown */ /** * Add new promise to queue * * @param operation - promise should be added to queue */ /** * Add row in table on index place * * @param {number} index - number in the array of rows, where new column to insert, -1 if insert at the end * @param {boolean} [setFocus] - pass true to focus the inserted row * @returns {HTMLElement} row */ /** * Add tool button and activate clicks * * @param {InlineTool} tool - InlineTool object */ /** * Add tool to the Conversion Toolbar * * @param toolName - name of Tool to add * @param toolboxItem - tool's toolbox item data */ /** * Adds a block to the selection and determines which blocks should be selected * * @param {object} index - index of new block in the reactor */ /** * Adds an attribute for displaying the placeholder in the cell */ /** * Adds custom html content to the popover * * @param content - html content to append */ /** * Adds fake cursor to the current range */ /** * Adds focus event listeners to all inputs and contenteditable */ /** * Adds search to the popover */ /** * Adjust module for using external dictionary * * @param dictionary - new messages list to override default */ /** * Ads a DOM event listener. Return it's id. * * @param {HTMLElement} element - Element to set handler to * @param {string} eventType - event type * @param {() => void} handler - event handler * @param {boolean} useCapture - capture event or not */ /** * All clicks on document * * @param {MouseEvent} event - Click event */ /** * All clicks on the redactor zone * * @param {MouseEvent} event - click event * @description * - By clicks on the Editor's bottom zone: * - if last Block is empty, set a Caret to this * - otherwise, add a new empty Block and set a Caret to that */ /** * All keydowns on Block * * @param {KeyboardEvent} event - keydown */ /** * All keydowns on document * * @param {KeyboardEvent} event - keyboard event */ /** * Allow Header to be converted to/from other blocks */ /** * Allow Quote to be converted to/from other blocks */ /** * Allow Tool to have no content * @return {boolean} */ /** * Allow to leaf buttons by arrows / tab * Buttons will be filled on opening */ /** * Allow to press Enter inside the CodeTool textarea * * @returns {boolean} * @public */ /** * Allow to press Enter inside the Quote * * @public * @returns {boolean} */ /** * Allow to use native Enter behaviour * * @returns {boolean} * @public */ /** * Allowed caret positions in input * * @static * @returns {{START: string, END: string, DEFAULT: string}} */ /** * Allowed quote alignments * * @public * @returns {{left: string, center: string}} */ /** * Allows to say Editor that Block was changed. Used to manually trigger Editor's 'onChange' callback * Can be useful for block changes invisible for editor core. */ /** * Always inserts at the end * * @returns {Block} */ /** * Analyze provided config and make object with services to use * * @param {EmbedConfig} config - configuration of embed block element */ /** * Animates item which symbolizes that error occured while executing 'onActivate()' callback */ /** * Append children list to passed item * * @param {Element} parentItem - item that should contain passed sub-items * @param {ListItem[]} items - sub items to append */ /** * Append element or a couple to the beginning of the parent elements * * @param {Element} parent - where to append * @param {Element|Element[]} elements - element or elements list */ /** * Append one or several elements to the parent * * @param {Element|DocumentFragment} parent - where to append * @param {Element|Element[]|DocumentFragment|Text|Text[]} elements - element or elements list */ /** * Append only allowed Tools * * @param {boolean} needToShowConversionToolbar - pass false to not to show Conversion Toolbar (e.g. for Footnotes-like tools) */ /** * Appends CSS */ /** * Apply visual representation of activated tune * * @param {string} tuneName - one of available tunes {@link Tunes.tunes} * @param {boolean} status - true for enable, false for disable * @returns {void} */ /** * Array of keys (codes) that is handled by Flipper * Used to: * - preventDefault only for this keys, not all keydowns (@see constructor) * - to skip external behaviours only for these keys, when filler is activated (@see BlockEvents@arrowRightAndDown) */ /** * Assign enabled Block Tunes for Block Tool * * @param tool — Block Tool */ /** * Assign enabled Inline Tools and Block Tunes for Block Tool */ /** * Assign enabled Inline Tools for Block Tool * * @param tool - Block Tool */ /** * Assigns event listener on element and returns unique identifier * * @param {EventTarget} element - DOM element that needs to be listened * @param {string} eventType - event type * @param {Function} handler - method that will be fired on event * @param {boolean|AddEventListenerOptions} options - useCapture or {capture, passive, once} */ /** * Attention! * After removing insert the new default typed Block and focus on it * Removes all blocks */ /** * Automatic sanitize config * * @returns {{code: boolean}} */ /** * Available header levels * * @returns {level[]} */ /** * Available image tools * * @returns {Array} */ /** * Available methods * * @returns {Blocks} */ /** * Available methods * * @returns {Caret} */ /** * Available methods * * @returns {Events} */ /** * Available methods * * @returns {InlineToolbar} */ /** * Available methods * * @returns {Listeners} */ /** * Available methods * * @returns {SanitizerConfig} */ /** * Available methods * * @returns {Saver} */ /** * Available methods * * @returns {SelectionAPIInterface} */ /** * Available methods * * @returns {Toolbar} */ /** * Available methods */ /** * Available methods / getters */ /** * Bind Block events * * @param {Block} block - Block to which event should be bound */ /** * Bind events on the Editor.js interface */ /** * Binds prepare function of plugins with user or default config * * @returns {Array} list of functions that needs to be fired sequentially * @param config - tools config */ /** * Block Settings CSS */ /** * Block actions appearance manipulations */ /** * Block mutation callback * * @param mutationType - what happened with block * @param block - mutated block * @param detailData - additional data to pass with change event */ /** * CSS classes * * @returns {object} */ /** * CSS classes for the Block * * @returns {{wrapper: string, content: string}} */ /** * CSS getter */ /** * CSS styles * * @returns {Object} */ /** * CSS styles * * @returns {object} */ /** * Calculates position and size of selected text * * @returns {DOMRect | ClientRect} */ /** * Calculates the row and column that the cursor is currently hovering over * The search was optimized from O(n) to O (log n) via bin search to reduce the number of calculations * * @param {Event} event - mousemove event * @returns hovered cell coordinates as an integer row and column */ /** * Call Block Manager method that swap Blocks * * @param {number} fromIndex - position of first Block * @param {number} toIndex - position of second Block * @deprecated — use 'move' instead */ /** * Call Tool instance destroy method */ /** * Call onChange event passed to Editor.js configuration * * @param event - some of our custom change events */ /** * Call plugins merge method * * @param {BlockToolData} data - data to merge */ /** * Callback fired when Block Tune is activated * * @private * * @param {string} tuneName - tune that has been clicked * @returns {void} */ /** * Callback for Block's settings buttons * * @param {number} level - level to set */ /** * Called on popover item click */ /** * Calls Tool's method * * Method checks tool property {MethodName}. Fires method with passes params If it is instance of Function * * @param {string} methodName - method to call * @param {object} params - method argument */ /** * Calls Tool's prepare method */ /** * Calls Tool's reset method */ /** * Calls each Tool reset method to clean up anything set by Tool */ /** * Cases when we need to close Toolbar * * @param {KeyboardEvent} event - keyboard event */ /** * Change blocks selection state between passed two blocks. * * @param {Block} firstBlock - first block in range * @param {Block} lastBlock - last block in range */ /** * Change selection state of the next Block * Used for CBS via Shift + arrow keys * * @param {boolean} next - if true, toggle next block. Previous otherwise */ /** * Changes Conversion Dropdown content for current block's Tool */ /** * Changes UI status * * @param {string} status - see {@link Ui.status} constants * @returns {void} */ /** * Check Tools` state by selection */ /** * Check and change Term's state for current selection */ /** * Check block for emptiness * * @returns {boolean} */ /** * Check current selection if it is at Editor's zone * * @returns {boolean} */ /** * Check for mobile mode and cache a result */ /** * Check for some Flipper-buttons is under focus */ /** * Check if Editor is empty and set CSS class to wrapper */ /** * Check if Service config is valid * * @param {Service} config - configuration of embed block element * @returns {boolean} */ /** * Check if block has a media content such as images, iframe and other * * @returns {boolean} */ /** * Check if browser behavior suits better * * @param {EventTarget} element - element where content has been pasted * @returns {boolean} */ /** * Check if current range exists and belongs to container * * @param container - where range should be */ /** * Check if each Block is empty * * @returns {boolean} */ /** * Check if element is BR or WBR * * @param {HTMLElement} element - element to check * @returns {boolean} */ /** * Check if node is contained by Inline Toolbar * * @param {Node} node — node to check */ /** * Check if object is DOM node * * @param {*} node - object to check * @returns {boolean} */ /** * Check if object is DocumentFragment node * * @param {object} node - object to check * @returns {boolean} */ /** * Check if one of Toolbar is opened * Used to prevent global keydowns (for example, Enter) conflicts with Enter-on-toolbar * * @returns {boolean} */ /** * Check if passed content includes only inline elements * * @param {string|HTMLElement} data - element or html string * @returns {boolean} */ /** * Check if passed element contains a fake cursor * * @param el - where to check */ /** * Check if passed element is contenteditable * * @param {HTMLElement} element - html element to check * @returns {boolean} */ /** * Check if passed item has the confirmation state * * @returns {boolean} */ /** * Check if passed range at Editor zone * * @param range - range to check */ /** * Check if passed selection is at Editor's zone * * @param selection - Selection object to check */ /** * Check if passed tag has no closed tag * * @param {HTMLElement} tag - element to check * @returns {boolean} */ /** * Check if string contains html elements * * @param {string} str - string to check * @returns {boolean} */ /** * Check if text content is empty and set empty string to inner html. * We need this because some browsers (e.g. Safari) insert
into empty contenteditanle elements * * @param {KeyboardEvent} e - key up event */ /** * Check if the caret placed at the start of the contenteditable element * * @returns {void} */ /** * Check if user clicks on the Editor's bottom zone: * - set caret to the last block * - or add new empty block * * @param event - click event */ /** * Check selection and set activated state to button if there are tag */ /** * Check selection and set activated state to button if there are tag * * @returns {boolean} */ /** * Check selection and set activated state to button if there are tag */ /** * Checks for required fields in Editor's config */ /** * Checks if popover should be opened bottom. * It should happen when there is enough space below or not enough space above */ /** * Checks if we can set caret * * @param {HTMLElement} target - target to check * @returns {boolean} */ /** * Checks node if it is empty * * @description Method checks simple Node without any childs for emptiness * If you have Node with 2 or more children id depth, you better use {@link Dom#isEmpty} method * @param {Node} node - node to check * @param {string} [ignoreChars] - char or substring to treat as empty * @returns {boolean} true if it is empty */ /** * Checks target if it is native input * * @param {*} target - HTML element or string * @returns {boolean} */ /** * Checks that mutations in DOM have finished after appending iframe content * * @param {HTMLElement} targetNode - HTML-element mutations of which to listen * @returns {Promise} - result that all mutations have finished */ /** * Class name for term-tag * * @type {string} */ /** * Clean editor`s UI */ /** * Cleans up all the block tools' resources * This is called when editor is destroyed */ /** * Clear Editor's area */ /** * Clear all params to end selection */ /** * Clear anyBlockSelected cache */ /** * Clear orientation classes and reset position */ /** * Clear saved state * * @param {Event} reason - event caused clear of selection */ /** * Clear selection from Blocks * * @param {Event} reason - event caused clear of selection * @param {boolean} restoreSelection - if true, restore saved selection */ /** * Clears Editor * * @param {boolean} needToAddDefaultBlock - 1) in internal calls (for example, in api.blocks.render) * we don't need to add an empty default block * 2) in api.blocks.clear we should add empty block */ /** * Clears inputs cached value */ /** * Clears memory */ /** * Clears saved selection */ /** * Clears search query and results */ /** * Clicks on the Block Settings toggler */ /** * Close Block Settings pane */ /** * Close Inline Toolbar */ /** * Close Toolbox */ /** * Close all Editor's toolbars */ /** * Close input * * @param {boolean} clearSavedSelection — we don't need to clear saved selection * on toggle-clicks on the icon of opened Toolbar */ /** * Close the Toolbar */ /** * Close toolbar and all included elements */ /** * Closes Conversion Toolbar */ /** * Closes popover */ /** * Closes the popover * * @returns {void} */ /** * Collapse current selection */ /** * Collects data from cells into a two-dimensional array * * @returns {string[][]} */ /** * Collects information needed to determine the behavior of the rectangle * * @returns {object} index - index next Block, leftPos - start of left border of Block, rightPos - right border */ /** * Compose paste event with passed type and detail * * @param {string} type - event type * @param {PasteEventDetail} detail - event detail */ /** * Composes Block event with passed type and details * * @param {string} type - event type * @param {object} detail - event detail */ /** * Composes new chain of Promises to fire them alternatelly * * @returns {OutputData} */ /** * Configures and creates the toolbox for manipulating with columns * * @returns {Toolbox} */ /** * Configures and creates the toolbox for manipulating with rows * * @returns {Toolbox} */ /** * Constructs HTML element corresponding to popover */ /** * Constructs HTML element corresponding to popover item params * * @param params - item construction params */ /** * Constructs new BlockTune instance from constructable * * @param data - Tune data * @param block - Block API object */ /** * Constructs new InlineTool instance from constructable */ /** * Constructs popover item instance * * @param params - popover item construction params */ /** * Constructs the instance * * @param params - popover construction params */ /** * Contains logic for checking whether passed item conforms the search query * * @param item - item to be checked */ /** * Convert from list to text for conversionConfig * * @param {ListData} data * @returns {string} */ /** * Convert from text to list with import and export list to text */ /** * Converts passed Block to the new Tool * Uses Conversion Config * * @param blockToConvert - Block that should be converted * @param targetToolName - name of the Tool to convert to * @param blockDataOverrides - optional new Block data overrides */ /** * Copy and Delete selected Blocks * * @param {ClipboardEvent} event - clipboard event */ /** * Copying selected blocks * Before putting to the clipboard we sanitize all blocks and then copy to the clipboard * * @param {ClipboardEvent} event - clipboard event */ /** * Create Quote Tool container with inputs * * @returns {Element} */ /** * Create Tool html markup * * @returns {HTMLElement} */ /** * Create Tool's view * * @returns {HTMLElement} * @private */ /** * Create Tool's view * @return {HTMLElement} * @private */ /** * Create UI of Conversion Toolbar */ /** * Create a toggler for Conversion Dropdown * and prepend it to the buttons list */ /** * Create a wrapper containing a table, toolboxes * and buttons for adding rows and columns * * @returns {HTMLElement} wrapper - where all buttons for a table and the table itself will be */ /** * Create button element for Toolbar * * @return {HTMLElement} */ /** * Create button for Inline Toolbar */ /** * Create data for the Stub Tool that will be used instead of unavailable tool * * @param tool - unavailable tool name to stub * @param data - data of unavailable block * @param [id] - id of unavailable block */ /** * Create wrapper for Tool`s settings buttons: * 1. Left alignment * 2. Center alignment * * @returns {TunesMenuConfig} * */ /** * Creates * * @constructor * @param {boolean} readOnly - read-only mode flag * @param {object} api - Editor.js API * @param {TableData} data - Editor.js API * @param {TableConfig} config - Editor.js API */ /** * Creates Block Tune allowing to change the list style * * @public * @returns {Array} */ /** * Creates Block instance by tool name * * @param {object} options - block creation options * @param {string} options.tool - tools passed in editor config {@link EditorConfig#tools} * @param {string} [options.id] - unique id for this block * @param {BlockToolData} [options.data] - constructor params * @returns {Block} */ /** * Creates Document Range and sets caret to the element with offset * * @param {HTMLElement} element - target node. * @param {number} offset - offset */ /** * Creates Flipper instance which allows to navigate between popover items via keyboard */ /** * Creates Text Node with the passed content * * @param {string} content - text content * @returns {Text} */ /** * Creates instances via passed or default configuration * * @returns {Promise} */ /** * Creates main