@elementor/editor-v1-adapters
Advanced tools
Comparing version 0.8.3 to 0.8.4
# Change Log | ||
## 0.8.4 | ||
### Patch Changes | ||
- 0c6bcb6: Introduce `undoable` function which allows creating an action with undo/redo support based on V1. | ||
- Updated dependencies [e7f4706] | ||
- @elementor/utils@0.3.0 | ||
## 0.8.3 | ||
@@ -4,0 +12,0 @@ |
@@ -73,7 +73,7 @@ declare function runCommand(command: string, args?: object): Promise<any>; | ||
type Options = { | ||
type Options$1 = { | ||
blockOnKitRoutes?: boolean; | ||
blockOnPreviewMode?: boolean; | ||
}; | ||
declare function useRouteStatus(route: RouteEventDescriptor['name'], { blockOnKitRoutes, blockOnPreviewMode }?: Options): { | ||
declare function useRouteStatus(route: RouteEventDescriptor['name'], { blockOnKitRoutes, blockOnPreviewMode }?: Options$1): { | ||
isActive: boolean; | ||
@@ -88,2 +88,16 @@ isBlocked: boolean; | ||
export { type CommandEvent, type CommandEventDescriptor, type EventDescriptor, type ExtendedWindow, type ListenerCallback, type ListenerEvent, type RouteEvent, type RouteEventDescriptor, type WindowEvent, type WindowEventDescriptor, blockDataCommand as __privateBlockDataCommand, dispatchReadyEvent as __privateDispatchReadyEvent, flushListeners as __privateFlushListeners, getCurrentEditMode as __privateGetCurrentEditMode, isRouteActive as __privateIsRouteActive, listenTo as __privateListenTo, openRoute as __privateOpenRoute, registerRoute as __privateRegisterRoute, runCommand as __privateRunCommand, setReady as __privateSetReady, useIsPreviewMode as __privateUseIsPreviewMode, useIsRouteActive as __privateUseIsRouteActive, useListenTo as __privateUseListenTo, useRouteStatus as __privateUseRouteStatus, commandEndEvent, commandStartEvent, dispatchReadyEvent, editModeChangeEvent, flushListeners, isReady, listenTo, routeCloseEvent, routeOpenEvent, setReady, v1ReadyEvent, windowEvent }; | ||
type Payload = Record<string, any> | undefined; | ||
type LabelGenerator<TPayload extends Payload, TDoReturn> = (payload: TPayload, doReturn: Awaited<TDoReturn>) => string; | ||
type Actions<TPayload extends Payload, TDoReturn, TUndoReturn> = { | ||
do: (payload: TPayload) => TDoReturn; | ||
undo: (payload: TPayload, doReturn: Awaited<TDoReturn>) => TUndoReturn; | ||
redo?: (payload: TPayload, doReturn: Awaited<TDoReturn>) => TDoReturn; | ||
}; | ||
type Options<TPayload extends Payload, TDoReturn> = { | ||
title: string | LabelGenerator<TPayload, TDoReturn>; | ||
subtitle?: string | LabelGenerator<TPayload, TDoReturn>; | ||
}; | ||
declare function undoable<TDoReturn, TUndoReturn>(actions: Actions<undefined, TDoReturn, TUndoReturn>, options: Options<undefined, TDoReturn>): () => Promise<Awaited<TDoReturn>>; | ||
declare function undoable<TPayload extends NonNullable<Payload>, TDoReturn, TUndoReturn>(actions: Actions<TPayload, TDoReturn, TUndoReturn>, options: Options<TPayload, TDoReturn>): (payload: TPayload) => Promise<Awaited<TDoReturn>>; | ||
export { type CommandEvent, type CommandEventDescriptor, type EventDescriptor, type ExtendedWindow, type ListenerCallback, type ListenerEvent, type RouteEvent, type RouteEventDescriptor, type WindowEvent, type WindowEventDescriptor, blockDataCommand as __privateBlockDataCommand, dispatchReadyEvent as __privateDispatchReadyEvent, flushListeners as __privateFlushListeners, getCurrentEditMode as __privateGetCurrentEditMode, isRouteActive as __privateIsRouteActive, listenTo as __privateListenTo, openRoute as __privateOpenRoute, registerRoute as __privateRegisterRoute, runCommand as __privateRunCommand, setReady as __privateSetReady, useIsPreviewMode as __privateUseIsPreviewMode, useIsRouteActive as __privateUseIsRouteActive, useListenTo as __privateUseListenTo, useRouteStatus as __privateUseRouteStatus, commandEndEvent, commandStartEvent, dispatchReadyEvent, editModeChangeEvent, flushListeners, isReady, listenTo, routeCloseEvent, routeOpenEvent, setReady, undoable, v1ReadyEvent, windowEvent }; |
@@ -42,2 +42,3 @@ "use strict"; | ||
routeOpenEvent: () => routeOpenEvent, | ||
undoable: () => undoable, | ||
v1ReadyEvent: () => v1ReadyEvent, | ||
@@ -131,5 +132,2 @@ windowEvent: () => windowEvent | ||
// src/hooks/use-listen-to.ts | ||
var import_react = require("react"); | ||
// src/listeners/event-creators.ts | ||
@@ -298,3 +296,14 @@ var commandStartEvent = (command) => { | ||
// src/readers/index.ts | ||
function isRouteActive(route) { | ||
const extendedWindow = window; | ||
return !!extendedWindow.$e?.routes?.isPartOf(route); | ||
} | ||
function getCurrentEditMode() { | ||
const extendedWindow = window; | ||
return extendedWindow.elementor?.channels?.dataEditMode?.request?.("activeMode"); | ||
} | ||
// src/hooks/use-listen-to.ts | ||
var import_react = require("react"); | ||
function useListenTo(event, getSnapshot, deps = []) { | ||
@@ -310,12 +319,2 @@ const [snapshot, setSnapshot] = (0, import_react.useState)(() => getSnapshot()); | ||
// src/readers/index.ts | ||
function isRouteActive(route) { | ||
const extendedWindow = window; | ||
return !!extendedWindow.$e?.routes?.isPartOf(route); | ||
} | ||
function getCurrentEditMode() { | ||
const extendedWindow = window; | ||
return extendedWindow.elementor?.channels?.dataEditMode?.request?.("activeMode"); | ||
} | ||
// src/hooks/use-is-preview-mode.ts | ||
@@ -345,2 +344,38 @@ function useIsPreviewMode() { | ||
} | ||
// src/undoable/get-history-manager.ts | ||
var import_utils4 = require("@elementor/utils"); | ||
var HistoryManagerNotAvailable = (0, import_utils4.createError)({ | ||
code: "history_manager_not_available", | ||
message: "Cannot access History manager." | ||
}); | ||
function getHistoryManager() { | ||
const extendedWindow = window; | ||
const historyManger = extendedWindow.elementor?.documents?.getCurrent?.()?.history; | ||
if (!historyManger) { | ||
throw new HistoryManagerNotAvailable(); | ||
} | ||
return historyManger; | ||
} | ||
// src/undoable/undoable.ts | ||
function undoable(actions, options) { | ||
actions.redo ??= (payload) => actions.do(payload); | ||
return async (payload) => { | ||
const _payload = payload; | ||
const _actions = actions; | ||
const history = getHistoryManager(); | ||
const result = await _actions.do(_payload); | ||
history.addItem({ | ||
title: normalizeToGenerator(options.title)(_payload, result), | ||
subTitle: normalizeToGenerator(options.subtitle)(_payload, result), | ||
type: "", | ||
restore: (_, isRedo) => isRedo ? _actions.redo(_payload, result) : _actions.undo(_payload, result) | ||
}); | ||
return result; | ||
}; | ||
} | ||
function normalizeToGenerator(value) { | ||
return typeof value === "function" ? value : () => value ?? ""; | ||
} | ||
// Annotate the CommonJS export names for ESM import in node: | ||
@@ -367,2 +402,3 @@ 0 && (module.exports = { | ||
routeOpenEvent, | ||
undoable, | ||
v1ReadyEvent, | ||
@@ -369,0 +405,0 @@ windowEvent |
{ | ||
"name": "@elementor/editor-v1-adapters", | ||
"version": "0.8.3", | ||
"version": "0.8.4", | ||
"private": false, | ||
@@ -41,2 +41,5 @@ "author": "Elementor Team", | ||
}, | ||
"dependencies": { | ||
"@elementor/utils": "^0.3.0" | ||
}, | ||
"peerDependencies": { | ||
@@ -43,0 +46,0 @@ "react": "^18.3.1" |
@@ -1,2 +0,2 @@ | ||
import { ExtendedWindow } from './types'; | ||
import { type ExtendedWindow } from './types'; | ||
import { isJQueryDeferred, promisifyJQueryDeferred } from './utils'; | ||
@@ -3,0 +3,0 @@ |
@@ -1,2 +0,2 @@ | ||
import { jQueryDeferred } from './types'; | ||
import { type jQueryDeferred } from './types'; | ||
@@ -3,0 +3,0 @@ export function isJQueryDeferred< T >( value: unknown ): value is jQueryDeferred< T > { |
@@ -0,4 +1,4 @@ | ||
import { editModeChangeEvent } from '../listeners'; | ||
import { getCurrentEditMode } from '../readers'; | ||
import useListenTo from './use-listen-to'; | ||
import { getCurrentEditMode } from '../readers'; | ||
import { editModeChangeEvent } from '../listeners'; | ||
@@ -5,0 +5,0 @@ export default function useIsPreviewMode() { |
@@ -0,4 +1,4 @@ | ||
import { routeCloseEvent, type RouteEventDescriptor, routeOpenEvent } from '../listeners'; | ||
import { isRouteActive } from '../readers'; | ||
import useListenTo from './use-listen-to'; | ||
import { isRouteActive } from '../readers'; | ||
import { routeCloseEvent, routeOpenEvent, RouteEventDescriptor } from '../listeners'; | ||
@@ -5,0 +5,0 @@ export default function useIsRouteActive( route: RouteEventDescriptor[ 'name' ] ) { |
import { useEffect, useState } from 'react'; | ||
import { EventDescriptor, listenTo } from '../listeners'; | ||
import { type EventDescriptor, listenTo } from '../listeners'; | ||
export default function useListenTo< T >( | ||
@@ -5,0 +6,0 @@ event: EventDescriptor | EventDescriptor[], |
@@ -0,4 +1,4 @@ | ||
import { type RouteEventDescriptor } from '../listeners'; | ||
import useIsPreviewMode from './use-is-preview-mode'; | ||
import useIsRouteActive from './use-is-route-active'; | ||
import { RouteEventDescriptor } from '../listeners'; | ||
@@ -5,0 +5,0 @@ type Options = { |
@@ -32,1 +32,3 @@ export { | ||
export { isRouteActive as __privateIsRouteActive, getCurrentEditMode as __privateGetCurrentEditMode } from './readers'; | ||
export { undoable } from './undoable'; |
@@ -1,2 +0,2 @@ | ||
import { CommandEventDescriptor, RouteEventDescriptor, WindowEventDescriptor } from './types'; | ||
import { type CommandEventDescriptor, type RouteEventDescriptor, type WindowEventDescriptor } from './types'; | ||
@@ -3,0 +3,0 @@ export const commandStartEvent = ( command: CommandEventDescriptor[ 'name' ] ): CommandEventDescriptor => { |
@@ -1,10 +0,10 @@ | ||
import { normalizeEvent } from './utils'; | ||
import { isReady, setReady } from './is-ready'; | ||
import { | ||
CommandEventDescriptor, | ||
EventDescriptor, | ||
ListenerCallback, | ||
RouteEventDescriptor, | ||
WindowEventDescriptor, | ||
type CommandEventDescriptor, | ||
type EventDescriptor, | ||
type ListenerCallback, | ||
type RouteEventDescriptor, | ||
type WindowEventDescriptor, | ||
} from './types'; | ||
import { isReady, setReady } from './is-ready'; | ||
import { normalizeEvent } from './utils'; | ||
@@ -11,0 +11,0 @@ const callbacksByEvent = new Map< EventDescriptor[ 'name' ], ListenerCallback[] >(); |
@@ -1,3 +0,3 @@ | ||
import { ExtendedWindow, ListenerEvent } from './types'; | ||
import { setReady } from './is-ready'; | ||
import { type ExtendedWindow, type ListenerEvent } from './types'; | ||
@@ -4,0 +4,0 @@ export function dispatchReadyEvent() { |
@@ -1,2 +0,2 @@ | ||
import { ExtendedWindow } from './types'; | ||
import { type ExtendedWindow } from './types'; | ||
@@ -3,0 +3,0 @@ export function isRouteActive( route: string ) { |
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
100278
30
1349
2
+ Added@elementor/utils@^0.3.0
+ Added@elementor/utils@0.3.0(transitive)