@elementor/editor-elements
Advanced tools
Comparing version
# @elementor/editor-elements | ||
## 0.8.0 | ||
### Minor Changes | ||
- f644084: Added a "take me there" button in link-in-link restriction info-tip | ||
### Patch Changes | ||
- @elementor/editor-styles@0.6.5 | ||
## 0.7.1 | ||
### Patch Changes | ||
- 548209b: Add link restriction infotip | ||
## 0.7.0 | ||
@@ -4,0 +20,0 @@ |
@@ -89,2 +89,3 @@ import { PropsSchema, PropValue, Props } from '@elementor/editor-props'; | ||
declare function getContainer(id: string): V1Element | null; | ||
declare const selectElement: (elementId: string) => void; | ||
@@ -134,6 +135,16 @@ declare const getElementSetting: <TValue>(elementId: ElementID, settingKey: string) => TValue | null; | ||
declare function getDescendantWithAnchorTag(elementId: string): string | null; | ||
declare function getAncestorWithAnchorTag(elementId: string): string | null; | ||
declare function doesElementHaveAnchorTag(elementId: string): boolean; | ||
type LinkInLinkRestriction = { | ||
shouldRestrict: true; | ||
reason: 'ancestor' | 'descendant'; | ||
elementId: string | null; | ||
} | { | ||
shouldRestrict: false; | ||
reason?: never; | ||
elementId?: never; | ||
}; | ||
declare function getLinkInLinkRestriction(elementId: string): LinkInLinkRestriction; | ||
declare function getAnchoredDescendantId(elementId: string): string | null; | ||
declare function getAnchoredAncestorId(elementId: string): string | null; | ||
declare function isElementAnchored(elementId: string): boolean; | ||
export { type Control, type ControlItem, type ControlsSection, type CreateElementStyleArgs, ELEMENT_STYLE_CHANGE_EVENT, type Element, type ElementID, type ElementType, type UpdateElementSettingsArgs, type UpdateElementStyleArgs, type V1Element, type V1ElementConfig, type V1ElementModelProps, type V1ElementSettingsProps, createElementStyle, deleteElementStyle, doesElementHaveAnchorTag, getAncestorWithAnchorTag, getContainer, getDescendantWithAnchorTag, getElementLabel, getElementSetting, getElementStyles, getElements, getSelectedElements, getWidgetsCache, styleRerenderEvents, updateElementSettings, updateElementStyle, useElementSetting, useElementType, useParentElement, useSelectedElement }; | ||
export { type Control, type ControlItem, type ControlsSection, type CreateElementStyleArgs, ELEMENT_STYLE_CHANGE_EVENT, type Element, type ElementID, type ElementType, type LinkInLinkRestriction, type UpdateElementSettingsArgs, type UpdateElementStyleArgs, type V1Element, type V1ElementConfig, type V1ElementModelProps, type V1ElementSettingsProps, createElementStyle, deleteElementStyle, getAnchoredAncestorId, getAnchoredDescendantId, getContainer, getElementLabel, getElementSetting, getElementStyles, getElements, getLinkInLinkRestriction, getSelectedElements, getWidgetsCache, isElementAnchored, selectElement, styleRerenderEvents, updateElementSettings, updateElementStyle, useElementSetting, useElementType, useParentElement, useSelectedElement }; |
@@ -26,6 +26,5 @@ "use strict"; | ||
deleteElementStyle: () => deleteElementStyle, | ||
doesElementHaveAnchorTag: () => doesElementHaveAnchorTag, | ||
getAncestorWithAnchorTag: () => getAncestorWithAnchorTag, | ||
getAnchoredAncestorId: () => getAnchoredAncestorId, | ||
getAnchoredDescendantId: () => getAnchoredDescendantId, | ||
getContainer: () => getContainer, | ||
getDescendantWithAnchorTag: () => getDescendantWithAnchorTag, | ||
getElementLabel: () => getElementLabel, | ||
@@ -35,4 +34,7 @@ getElementSetting: () => getElementSetting, | ||
getElements: () => getElements, | ||
getLinkInLinkRestriction: () => getLinkInLinkRestriction, | ||
getSelectedElements: () => getSelectedElements, | ||
getWidgetsCache: () => getWidgetsCache, | ||
isElementAnchored: () => isElementAnchored, | ||
selectElement: () => selectElement, | ||
styleRerenderEvents: () => styleRerenderEvents, | ||
@@ -49,5 +51,6 @@ updateElementSettings: () => updateElementSettings, | ||
// src/hooks/use-element-setting.ts | ||
var import_editor_v1_adapters = require("@elementor/editor-v1-adapters"); | ||
var import_editor_v1_adapters2 = require("@elementor/editor-v1-adapters"); | ||
// src/sync/get-container.ts | ||
var import_editor_v1_adapters = require("@elementor/editor-v1-adapters"); | ||
function getContainer(id) { | ||
@@ -58,2 +61,9 @@ const extendedWindow = window; | ||
} | ||
var selectElement = (elementId) => { | ||
try { | ||
const container = getContainer(elementId); | ||
(0, import_editor_v1_adapters.__privateRunCommand)("document/elements/select", { container }); | ||
} catch { | ||
} | ||
}; | ||
@@ -69,4 +79,4 @@ // src/sync/get-element-setting.ts | ||
var useElementSetting = (elementId, settingKey) => { | ||
return (0, import_editor_v1_adapters.__privateUseListenTo)( | ||
(0, import_editor_v1_adapters.commandEndEvent)("document/elements/set-settings"), | ||
return (0, import_editor_v1_adapters2.__privateUseListenTo)( | ||
(0, import_editor_v1_adapters2.commandEndEvent)("document/elements/set-settings"), | ||
() => getElementSetting(elementId, settingKey), | ||
@@ -78,3 +88,3 @@ [elementId, settingKey] | ||
// src/hooks/use-element-type.ts | ||
var import_editor_v1_adapters2 = require("@elementor/editor-v1-adapters"); | ||
var import_editor_v1_adapters3 = require("@elementor/editor-v1-adapters"); | ||
@@ -89,4 +99,4 @@ // src/sync/get-widgets-cache.ts | ||
function useElementType(type) { | ||
return (0, import_editor_v1_adapters2.__privateUseListenTo)( | ||
(0, import_editor_v1_adapters2.commandEndEvent)("editor/documents/load"), | ||
return (0, import_editor_v1_adapters3.__privateUseListenTo)( | ||
(0, import_editor_v1_adapters3.commandEndEvent)("editor/documents/load"), | ||
() => { | ||
@@ -116,3 +126,3 @@ if (!type) { | ||
// src/hooks/use-selected-element.ts | ||
var import_editor_v1_adapters3 = require("@elementor/editor-v1-adapters"); | ||
var import_editor_v1_adapters4 = require("@elementor/editor-v1-adapters"); | ||
@@ -137,8 +147,8 @@ // src/sync/get-selected-elements.ts | ||
function useSelectedElement() { | ||
const elements = (0, import_editor_v1_adapters3.__privateUseListenTo)( | ||
const elements = (0, import_editor_v1_adapters4.__privateUseListenTo)( | ||
[ | ||
(0, import_editor_v1_adapters3.commandEndEvent)("document/elements/select"), | ||
(0, import_editor_v1_adapters3.commandEndEvent)("document/elements/deselect"), | ||
(0, import_editor_v1_adapters3.commandEndEvent)("document/elements/select-all"), | ||
(0, import_editor_v1_adapters3.commandEndEvent)("document/elements/deselect-all") | ||
(0, import_editor_v1_adapters4.commandEndEvent)("document/elements/select"), | ||
(0, import_editor_v1_adapters4.commandEndEvent)("document/elements/deselect"), | ||
(0, import_editor_v1_adapters4.commandEndEvent)("document/elements/select-all"), | ||
(0, import_editor_v1_adapters4.commandEndEvent)("document/elements/deselect-all") | ||
], | ||
@@ -156,6 +166,6 @@ getSelectedElements | ||
// src/hooks/use-parent-element.ts | ||
var import_editor_v1_adapters4 = require("@elementor/editor-v1-adapters"); | ||
var import_editor_v1_adapters5 = require("@elementor/editor-v1-adapters"); | ||
function useParentElement(elementId) { | ||
return (0, import_editor_v1_adapters4.__privateUseListenTo)( | ||
[(0, import_editor_v1_adapters4.commandEndEvent)("document/elements/create")], | ||
return (0, import_editor_v1_adapters5.__privateUseListenTo)( | ||
[(0, import_editor_v1_adapters5.commandEndEvent)("document/elements/create")], | ||
() => { | ||
@@ -234,3 +244,3 @@ if (!elementId) { | ||
// src/sync/update-element-settings.ts | ||
var import_editor_v1_adapters5 = require("@elementor/editor-v1-adapters"); | ||
var import_editor_v1_adapters6 = require("@elementor/editor-v1-adapters"); | ||
var updateElementSettings = ({ id, props, withHistory = true }) => { | ||
@@ -243,5 +253,5 @@ const container = getContainer(id); | ||
if (withHistory) { | ||
(0, import_editor_v1_adapters5.__privateRunCommandSync)("document/elements/settings", args); | ||
(0, import_editor_v1_adapters6.__privateRunCommandSync)("document/elements/settings", args); | ||
} else { | ||
(0, import_editor_v1_adapters5.__privateRunCommandSync)("document/elements/set-settings", args, { internal: true }); | ||
(0, import_editor_v1_adapters6.__privateRunCommandSync)("document/elements/set-settings", args, { internal: true }); | ||
} | ||
@@ -251,10 +261,10 @@ }; | ||
// src/styles/consts.ts | ||
var import_editor_v1_adapters6 = require("@elementor/editor-v1-adapters"); | ||
var import_editor_v1_adapters7 = require("@elementor/editor-v1-adapters"); | ||
var ELEMENT_STYLE_CHANGE_EVENT = "elementor/editor-v2/editor-elements/style"; | ||
var styleRerenderEvents = [ | ||
(0, import_editor_v1_adapters6.commandEndEvent)("document/elements/create"), | ||
(0, import_editor_v1_adapters6.commandEndEvent)("document/elements/duplicate"), | ||
(0, import_editor_v1_adapters6.commandEndEvent)("document/elements/import"), | ||
(0, import_editor_v1_adapters6.commandEndEvent)("document/elements/paste"), | ||
(0, import_editor_v1_adapters6.windowEvent)(ELEMENT_STYLE_CHANGE_EVENT) | ||
(0, import_editor_v1_adapters7.commandEndEvent)("document/elements/create"), | ||
(0, import_editor_v1_adapters7.commandEndEvent)("document/elements/duplicate"), | ||
(0, import_editor_v1_adapters7.commandEndEvent)("document/elements/import"), | ||
(0, import_editor_v1_adapters7.commandEndEvent)("document/elements/paste"), | ||
(0, import_editor_v1_adapters7.windowEvent)(ELEMENT_STYLE_CHANGE_EVENT) | ||
]; | ||
@@ -268,3 +278,3 @@ | ||
var import_editor_props = require("@elementor/editor-props"); | ||
var import_editor_v1_adapters7 = require("@elementor/editor-v1-adapters"); | ||
var import_editor_v1_adapters8 = require("@elementor/editor-v1-adapters"); | ||
function mutateElementStyles(elementId, mutator) { | ||
@@ -323,3 +333,3 @@ const container = getContainer(elementId); | ||
dispatchChangeEvent(); | ||
(0, import_editor_v1_adapters7.__privateRunCommandSync)("document/save/set-is-modified", { status: true }, { internal: true }); | ||
(0, import_editor_v1_adapters8.__privateRunCommandSync)("document/save/set-is-modified", { status: true }, { internal: true }); | ||
} | ||
@@ -400,3 +410,24 @@ function dispatchChangeEvent() { | ||
// src/link-restriction.ts | ||
function getDescendantWithAnchorTag(elementId) { | ||
function getLinkInLinkRestriction(elementId) { | ||
const anchoredDescendantId = getAnchoredDescendantId(elementId); | ||
if (anchoredDescendantId) { | ||
return { | ||
shouldRestrict: true, | ||
reason: "descendant", | ||
elementId: anchoredDescendantId | ||
}; | ||
} | ||
const ancestor = getAnchoredAncestorId(elementId); | ||
if (ancestor) { | ||
return { | ||
shouldRestrict: true, | ||
reason: "ancestor", | ||
elementId: ancestor | ||
}; | ||
} | ||
return { | ||
shouldRestrict: false | ||
}; | ||
} | ||
function getAnchoredDescendantId(elementId) { | ||
const element = getElementDOM(elementId); | ||
@@ -414,3 +445,3 @@ if (!element) { | ||
} | ||
function getAncestorWithAnchorTag(elementId) { | ||
function getAnchoredAncestorId(elementId) { | ||
const element = getElementDOM(elementId); | ||
@@ -423,3 +454,3 @@ if (!element || element.parentElement === null) { | ||
} | ||
function doesElementHaveAnchorTag(elementId) { | ||
function isElementAnchored(elementId) { | ||
const element = getElementDOM(elementId); | ||
@@ -432,5 +463,5 @@ if (!element) { | ||
} | ||
return doesElementHaveAnchorTagInScope(element); | ||
return doesElementContainAnchor(element); | ||
} | ||
function doesElementHaveAnchorTagInScope(element) { | ||
function doesElementContainAnchor(element) { | ||
for (const child of element.children) { | ||
@@ -443,3 +474,3 @@ if (isElementorElement(child)) { | ||
} | ||
if (doesElementHaveAnchorTagInScope(child)) { | ||
if (doesElementContainAnchor(child)) { | ||
return true; | ||
@@ -454,4 +485,7 @@ } | ||
function getElementDOM(id) { | ||
const elementContainer = getContainer(id); | ||
return elementContainer?.view?.el || null; | ||
try { | ||
return getContainer(id)?.view?.el || null; | ||
} catch { | ||
return null; | ||
} | ||
} | ||
@@ -469,6 +503,5 @@ function isAnchorTag(tagName) { | ||
deleteElementStyle, | ||
doesElementHaveAnchorTag, | ||
getAncestorWithAnchorTag, | ||
getAnchoredAncestorId, | ||
getAnchoredDescendantId, | ||
getContainer, | ||
getDescendantWithAnchorTag, | ||
getElementLabel, | ||
@@ -478,4 +511,7 @@ getElementSetting, | ||
getElements, | ||
getLinkInLinkRestriction, | ||
getSelectedElements, | ||
getWidgetsCache, | ||
isElementAnchored, | ||
selectElement, | ||
styleRerenderEvents, | ||
@@ -482,0 +518,0 @@ updateElementSettings, |
{ | ||
"name": "@elementor/editor-elements", | ||
"description": "This package contains the elements model for the Elementor editor", | ||
"version": "0.7.0", | ||
"version": "0.8.0", | ||
"private": false, | ||
@@ -44,3 +44,3 @@ "author": "Elementor Team", | ||
"@elementor/editor-props": "0.11.1", | ||
"@elementor/editor-styles": "0.6.4", | ||
"@elementor/editor-styles": "0.6.5", | ||
"@elementor/editor-v1-adapters": "0.11.0", | ||
@@ -47,0 +47,0 @@ "@elementor/utils": "0.4.0" |
@@ -12,3 +12,3 @@ // types | ||
// utils | ||
export { getContainer } from './sync/get-container'; | ||
export { getContainer, selectElement } from './sync/get-container'; | ||
export { getElementSetting } from './sync/get-element-setting'; | ||
@@ -26,2 +26,8 @@ export { getElementStyles } from './sync/get-element-styles'; | ||
export { deleteElementStyle } from './styles/delete-element-style'; | ||
export { doesElementHaveAnchorTag, getDescendantWithAnchorTag, getAncestorWithAnchorTag } from './link-restriction'; | ||
export { | ||
isElementAnchored, | ||
getAnchoredDescendantId, | ||
getAnchoredAncestorId, | ||
getLinkInLinkRestriction, | ||
type LinkInLinkRestriction, | ||
} from './link-restriction'; |
import { getContainer } from './sync/get-container'; | ||
export function getDescendantWithAnchorTag( elementId: string ): string | null { | ||
export type LinkInLinkRestriction = | ||
| { | ||
shouldRestrict: true; | ||
reason: 'ancestor' | 'descendant'; | ||
elementId: string | null; | ||
} | ||
| { | ||
shouldRestrict: false; | ||
reason?: never; | ||
elementId?: never; | ||
}; | ||
export function getLinkInLinkRestriction( elementId: string ): LinkInLinkRestriction { | ||
const anchoredDescendantId = getAnchoredDescendantId( elementId ); | ||
if ( anchoredDescendantId ) { | ||
return { | ||
shouldRestrict: true, | ||
reason: 'descendant', | ||
elementId: anchoredDescendantId, | ||
}; | ||
} | ||
const ancestor = getAnchoredAncestorId( elementId ); | ||
if ( ancestor ) { | ||
return { | ||
shouldRestrict: true, | ||
reason: 'ancestor', | ||
elementId: ancestor, | ||
}; | ||
} | ||
return { | ||
shouldRestrict: false, | ||
}; | ||
} | ||
export function getAnchoredDescendantId( elementId: string ): string | null { | ||
const element = getElementDOM( elementId ); | ||
@@ -22,3 +60,3 @@ | ||
export function getAncestorWithAnchorTag( elementId: string ): string | null { | ||
export function getAnchoredAncestorId( elementId: string ): string | null { | ||
const element = getElementDOM( elementId ); | ||
@@ -35,3 +73,3 @@ | ||
export function doesElementHaveAnchorTag( elementId: string ): boolean { | ||
export function isElementAnchored( elementId: string ): boolean { | ||
const element = getElementDOM( elementId ); | ||
@@ -47,6 +85,6 @@ | ||
return doesElementHaveAnchorTagInScope( element ); | ||
return doesElementContainAnchor( element ); | ||
} | ||
function doesElementHaveAnchorTagInScope( element: Element ): boolean { | ||
function doesElementContainAnchor( element: Element ): boolean { | ||
for ( const child of element.children ) { | ||
@@ -61,3 +99,3 @@ if ( isElementorElement( child ) ) { | ||
if ( doesElementHaveAnchorTagInScope( child ) ) { | ||
if ( doesElementContainAnchor( child ) ) { | ||
return true; | ||
@@ -75,5 +113,7 @@ } | ||
function getElementDOM( id: string ) { | ||
const elementContainer = getContainer( id ); | ||
return elementContainer?.view?.el || null; | ||
try { | ||
return getContainer( id )?.view?.el || null; | ||
} catch { | ||
return null; | ||
} | ||
} | ||
@@ -80,0 +120,0 @@ |
@@ -0,1 +1,3 @@ | ||
import { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters'; | ||
import { type ExtendedWindow } from './types'; | ||
@@ -9,1 +11,9 @@ | ||
} | ||
export const selectElement = ( elementId: string ) => { | ||
try { | ||
const container = getContainer( elementId ); | ||
runCommand( 'document/elements/select', { container } ); | ||
} catch {} | ||
}; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
122933
5.88%1622
8.64%+ Added
+ Added
- Removed
- Removed