@inpageedit/core 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -20
- package/README.md +55 -55
- package/dist/ActionButton-BgbTKTg7.js +24 -0
- package/dist/ActionButton-BgbTKTg7.js.map +1 -0
- package/dist/InPageEdit.d.ts +8 -7
- package/dist/InputBox-FIzJ-rPN.js.map +1 -1
- package/dist/Preferences-Bg3J5Ur9.js.map +1 -1
- package/dist/{RadioBox-BZFhTEo5.js → RadioBox-CaA8VgLu.js} +16 -16
- package/dist/RadioBox-CaA8VgLu.js.map +1 -0
- package/dist/components/TwinSwapInput/index.d.ts +1 -0
- package/dist/components/index.js +21 -22
- package/dist/components/index.js.map +1 -1
- package/dist/{index-BPsDFq9U.js → index-Bh70Udzi.js} +14 -13
- package/dist/index-Bh70Udzi.js.map +1 -0
- package/dist/index-Bo1hNwWJ.js +96 -0
- package/dist/index-Bo1hNwWJ.js.map +1 -0
- package/dist/{index-Ch5DJDZZ.js → index-BxR7MsNM.js} +105 -102
- package/dist/index-BxR7MsNM.js.map +1 -0
- package/dist/{index-BsYzf3Yw.js → index-CUXLgVhg.js} +11 -11
- package/dist/index-CUXLgVhg.js.map +1 -0
- package/dist/index-CvhkVj_L.js.map +1 -1
- package/dist/{index-BByzm2Fz.js → index-D3yG7jFv.js} +119 -111
- package/dist/{index-BByzm2Fz.js.map → index-D3yG7jFv.js.map} +1 -1
- package/dist/{index-D-zQLFuZ.js → index-K73DMVec.js} +13 -20
- package/dist/index-K73DMVec.js.map +1 -0
- package/dist/index-jKU6cYcH.js +165 -0
- package/dist/index-jKU6cYcH.js.map +1 -0
- package/dist/{index-X1X416tZ.js → index-mMAGhnbR.js} +40 -24
- package/dist/index-mMAGhnbR.js.map +1 -0
- package/dist/index-z5MR2HJ2.js +4820 -0
- package/dist/index-z5MR2HJ2.js.map +1 -0
- package/dist/index.js +3008 -2546
- package/dist/index.js.map +1 -1
- package/dist/plugins/BasePlugin.d.ts +1 -1
- package/dist/plugins/_debug/index.d.ts +1 -1
- package/dist/plugins/quick-diff/PluginQuickDiffCore.d.ts +2 -1
- package/dist/plugins/quick-edit/index.d.ts +2 -1
- package/dist/plugins/quick-move/index.d.ts +1 -1
- package/dist/plugins/quick-preview/index.d.ts +4 -3
- package/dist/plugins/quick-redirect/index.d.ts +1 -1
- package/dist/plugins/toolbox/index.d.ts +2 -2
- package/dist/services/ModalService/IPEModal.d.ts +235 -0
- package/dist/services/ModalService/index.d.ts +35 -0
- package/dist/sleep-DpyIipK-.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/utils/interpolate.d.ts +20 -0
- package/dist/utils/interpolate.spec.d.ts +1 -0
- package/lib/index.umd.js +53 -26
- package/lib/index.umd.js.map +1 -1
- package/lib/style.css +1 -1
- package/package.json +8 -9
- package/dist/ActionButton-ByMKIthQ.js +0 -24
- package/dist/ActionButton-ByMKIthQ.js.map +0 -1
- package/dist/RadioBox-BZFhTEo5.js.map +0 -1
- package/dist/index-BPsDFq9U.js.map +0 -1
- package/dist/index-BTngTj1f.js +0 -4682
- package/dist/index-BTngTj1f.js.map +0 -1
- package/dist/index-BsYzf3Yw.js.map +0 -1
- package/dist/index-Ch5DJDZZ.js.map +0 -1
- package/dist/index-Cq9xxVsu.js +0 -149
- package/dist/index-Cq9xxVsu.js.map +0 -1
- package/dist/index-D-zQLFuZ.js.map +0 -1
- package/dist/index-HyxA2rYz.js +0 -87
- package/dist/index-HyxA2rYz.js.map +0 -1
- package/dist/index-X1X416tZ.js.map +0 -1
- package/dist/services/SsiModalService.d.ts +0 -36
- package/dist/utils/Logger.d.ts +0 -106
|
@@ -14,6 +14,6 @@ export default class BasePlugin<T extends unknown = any> {
|
|
|
14
14
|
protected removeDisposeHandler(fn: DisposeHandler): void;
|
|
15
15
|
set name(name: string);
|
|
16
16
|
get name(): string;
|
|
17
|
-
get logger(): import('
|
|
17
|
+
get logger(): import('@inpageedit/logger').Logger;
|
|
18
18
|
}
|
|
19
19
|
export {};
|
|
@@ -3,6 +3,6 @@ declare class PluginDebug extends BasePlugin {
|
|
|
3
3
|
ctx: InPageEdit;
|
|
4
4
|
constructor(ctx: InPageEdit);
|
|
5
5
|
protected start(): Promise<void>;
|
|
6
|
-
showModal():
|
|
6
|
+
showModal(): import('../../services/ModalService').CustomIPEModal;
|
|
7
7
|
}
|
|
8
8
|
export default PluginDebug;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { InPageEdit } from '../../InPageEdit';
|
|
2
2
|
import { JsDiffDiffType } from './JsDiffService';
|
|
3
|
+
import { IPEModal } from '../../services/ModalService/IPEModal.js';
|
|
3
4
|
declare module '../../InPageEdit' {
|
|
4
5
|
interface InPageEdit {
|
|
5
6
|
quickDiff: PluginQuickDiffCore;
|
|
@@ -65,5 +66,5 @@ export declare class PluginQuickDiffCore extends BasePlugin {
|
|
|
65
66
|
*/
|
|
66
67
|
renderJsDiff(oldStr: string, newStr: string, diffType?: JsDiffDiffType): DocumentFragment;
|
|
67
68
|
readonly COMPARE_API_DEFAULT_OPTIONS: Partial<CompareApiRequestOptions>;
|
|
68
|
-
comparePages(options: Partial<CompareApiRequestOptions
|
|
69
|
+
comparePages(options: Partial<CompareApiRequestOptions>, modal?: IPEModal): IPEModal;
|
|
69
70
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { InPageEdit } from '../../InPageEdit';
|
|
2
2
|
import { WikiPage } from '../../models/WikiPage';
|
|
3
3
|
import { WatchlistAction } from '../../models/WikiPage/types/WatchlistAction';
|
|
4
|
+
import { IPEModal } from '../../services/ModalService/IPEModal';
|
|
4
5
|
declare module '../../InPageEdit' {
|
|
5
6
|
interface InPageEdit {
|
|
6
7
|
quickEdit: PluginQuickEdit['quickEdit'];
|
|
@@ -29,7 +30,7 @@ export interface QuickEditOptions {
|
|
|
29
30
|
export interface QuickEditInitPayload {
|
|
30
31
|
ctx: InPageEdit;
|
|
31
32
|
options: QuickEditOptions;
|
|
32
|
-
modal:
|
|
33
|
+
modal: IPEModal;
|
|
33
34
|
wikiPage: WikiPage;
|
|
34
35
|
}
|
|
35
36
|
export interface QuickEditSubmitPayload {
|
|
@@ -22,6 +22,6 @@ export declare class PluginQuickMove extends BasePlugin {
|
|
|
22
22
|
constructor(ctx: InPageEdit);
|
|
23
23
|
protected start(): Promise<void> | void;
|
|
24
24
|
private injectToolbox;
|
|
25
|
-
quickMove(options?: Partial<QuickMoveOptions>):
|
|
25
|
+
quickMove(options?: Partial<QuickMoveOptions>): import('../../services/ModalService').CustomIPEModal;
|
|
26
26
|
movePage(options: MovePageOptions): Promise<import('fexios').FexiosFinalContext<any>>;
|
|
27
27
|
}
|
|
@@ -2,6 +2,7 @@ import { InPageEdit } from '../../InPageEdit';
|
|
|
2
2
|
import { WikiPage } from '../../models/WikiPage';
|
|
3
3
|
import { MwApiParams } from 'wiki-saikou';
|
|
4
4
|
import { PageParseData } from '../../models/WikiPage/types/PageParseData';
|
|
5
|
+
import { IPEModal } from '../../services/ModalService/IPEModal.js';
|
|
5
6
|
declare module '../../InPageEdit' {
|
|
6
7
|
interface InPageEdit {
|
|
7
8
|
quickPreview: PluginQuickPreview['quickPreview'];
|
|
@@ -10,12 +11,12 @@ declare module '../../InPageEdit' {
|
|
|
10
11
|
'quickPreview/showModal'(payload: {
|
|
11
12
|
ctx: InPageEdit;
|
|
12
13
|
text: string;
|
|
13
|
-
modal:
|
|
14
|
+
modal: IPEModal;
|
|
14
15
|
wikiPage: WikiPage;
|
|
15
16
|
}): void;
|
|
16
17
|
'quickPreview/loaded'(payload: {
|
|
17
18
|
ctx: InPageEdit;
|
|
18
|
-
modal:
|
|
19
|
+
modal: IPEModal;
|
|
19
20
|
wikiPage: WikiPage;
|
|
20
21
|
text: string;
|
|
21
22
|
parseData: PageParseData;
|
|
@@ -28,5 +29,5 @@ export declare class PluginQuickPreview extends BasePlugin {
|
|
|
28
29
|
protected start(): Promise<void> | void;
|
|
29
30
|
protected stop(): Promise<void> | void;
|
|
30
31
|
private injectQuickEdit;
|
|
31
|
-
quickPreview(text: string, params?: MwApiParams, wikiPage?: WikiPage):
|
|
32
|
+
quickPreview(text: string, params?: MwApiParams, wikiPage?: WikiPage, modal?: IPEModal): IPEModal;
|
|
32
33
|
}
|
|
@@ -19,6 +19,6 @@ export declare class PluginQuickRedirect extends BasePlugin {
|
|
|
19
19
|
constructor(ctx: InPageEdit);
|
|
20
20
|
protected start(): Promise<void> | void;
|
|
21
21
|
protected stop(): Promise<void> | void;
|
|
22
|
-
quickRedirect(options?: Partial<QuickRedirectOptions>):
|
|
22
|
+
quickRedirect(options?: Partial<QuickRedirectOptions>): import('../../services/ModalService').CustomIPEModal;
|
|
23
23
|
redirectPage(options: RedirectPageOptions): Promise<import('fexios').FexiosFinalContext<any>>;
|
|
24
24
|
}
|
|
@@ -28,8 +28,8 @@ export declare class PluginToolbox extends Service {
|
|
|
28
28
|
addButton(payload: {
|
|
29
29
|
id: string;
|
|
30
30
|
group?: 'auto' | 'group1' | 'group2';
|
|
31
|
-
icon: string | HTMLElement | SVGElement |
|
|
32
|
-
tooltip?: string | HTMLElement
|
|
31
|
+
icon: string | HTMLElement | SVGElement | ReactElement;
|
|
32
|
+
tooltip?: string | HTMLElement;
|
|
33
33
|
buttonProps?: Record<string, any>;
|
|
34
34
|
onClick?: (event: MouseEvent) => void;
|
|
35
35
|
index?: number;
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
export type SsiModalSizeClass = 'dialog' | 'small' | 'smallToMedium' | 'medium' | 'mediumToLarge' | 'large' | 'full' | 'auto';
|
|
2
|
+
export type IPEModalAnimation = string | {
|
|
3
|
+
/** animation name when showing; set false to disable */
|
|
4
|
+
show?: string | false;
|
|
5
|
+
/** animation name when hiding; set false to disable */
|
|
6
|
+
hide?: string | false;
|
|
7
|
+
} | false;
|
|
8
|
+
export type AnyContent = string | Node | any;
|
|
9
|
+
export interface IPEModalButtonOptions {
|
|
10
|
+
/** Button label content (text node by default; not parsed as HTML). */
|
|
11
|
+
label: AnyContent;
|
|
12
|
+
/** Render as <button> (default) or <a>. */
|
|
13
|
+
type?: 'button' | 'link';
|
|
14
|
+
/** Extra class names. */
|
|
15
|
+
className?: string;
|
|
16
|
+
/** Enable the button after N ms; set false to skip. */
|
|
17
|
+
enableAfter?: number | false;
|
|
18
|
+
/** Element id attribute. */
|
|
19
|
+
id?: string;
|
|
20
|
+
/** Click handler; `this` is the element; receives mouse event and modal instance. */
|
|
21
|
+
method?: (this: HTMLButtonElement | HTMLAnchorElement, event: MouseEvent, modal: IPEModal) => void;
|
|
22
|
+
/** Button group side within footer. */
|
|
23
|
+
side?: 'left' | 'right';
|
|
24
|
+
/** Keyboard shortcut for this button (e.g. 'Enter' | 'Escape' | 'y'). */
|
|
25
|
+
keyPress?: string;
|
|
26
|
+
/** Close modal after N ms once the button is clicked; set false to skip. */
|
|
27
|
+
closeAfter?: number | false;
|
|
28
|
+
/** Only for type:'link'. */
|
|
29
|
+
href?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface IPEModalOptions {
|
|
32
|
+
/** Extra class names applied to the window element. */
|
|
33
|
+
className?: string;
|
|
34
|
+
/** Predefined size class. */
|
|
35
|
+
sizeClass?: SsiModalSizeClass;
|
|
36
|
+
/** Center the modal (adds .is-centered on host). */
|
|
37
|
+
center?: boolean;
|
|
38
|
+
/** Keep a fixed height (px) or enable fixed-height mode; layout via CSS. */
|
|
39
|
+
fixedHeight?: boolean | number;
|
|
40
|
+
/** Fullscreen layout helper. */
|
|
41
|
+
fitScreen?: boolean;
|
|
42
|
+
/** Render icon-style buttons in header (styling only). */
|
|
43
|
+
iconButtons?: boolean;
|
|
44
|
+
/** Show close (×) icon in header. */
|
|
45
|
+
closeIcon?: boolean;
|
|
46
|
+
title?: AnyContent;
|
|
47
|
+
content?: AnyContent;
|
|
48
|
+
buttons?: Partial<IPEModalButtonOptions>[];
|
|
49
|
+
/**
|
|
50
|
+
* Backdrop behavior:
|
|
51
|
+
* - true (default): dedicated backdrop per modal
|
|
52
|
+
* - 'shared' or 'byKindShared': reserved for external coordination
|
|
53
|
+
* - false: no backdrop (floating window)
|
|
54
|
+
*/
|
|
55
|
+
backdrop?: boolean | 'shared' | 'byKindShared';
|
|
56
|
+
/**
|
|
57
|
+
* Close when clicking on the backdrop. Ignored when `backdrop === false`.
|
|
58
|
+
*/
|
|
59
|
+
outSideClose?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Allow body scrolling while the modal is open. Default: **false** (lock scroll).
|
|
62
|
+
*/
|
|
63
|
+
bodyScroll?: boolean;
|
|
64
|
+
/** Stack behavior placeholder (kept for parity). */
|
|
65
|
+
stack?: boolean;
|
|
66
|
+
/** Navigation placeholder (kept for parity). */
|
|
67
|
+
navigation?: boolean;
|
|
68
|
+
/** Enable drag only when `backdrop === false`. */
|
|
69
|
+
draggable?: boolean;
|
|
70
|
+
/** Window animation (or legacy `animation`). */
|
|
71
|
+
animation?: IPEModalAnimation;
|
|
72
|
+
/** Preferred: animation for modal window element. */
|
|
73
|
+
modalAnimation?: IPEModalAnimation;
|
|
74
|
+
/** Animation for backdrop element. */
|
|
75
|
+
backdropAnimation?: IPEModalAnimation;
|
|
76
|
+
/**
|
|
77
|
+
* Fallback duration (ms) used when CSS events are not observable.
|
|
78
|
+
*/
|
|
79
|
+
animationSpeed?: number;
|
|
80
|
+
/** Auto-close options. */
|
|
81
|
+
closeAfter?: {
|
|
82
|
+
/**
|
|
83
|
+
* Close the modal/toast after `time` ms. For toast: defaults to 3000ms.
|
|
84
|
+
*/
|
|
85
|
+
time: number;
|
|
86
|
+
/** Not used by library (reserved for UI display). */
|
|
87
|
+
displayTime?: number;
|
|
88
|
+
/** Reset countdown when hovered. */
|
|
89
|
+
resetOnHover?: boolean;
|
|
90
|
+
} | number;
|
|
91
|
+
/** Kept for parity; CSS controls actual layout. */
|
|
92
|
+
position?: 'right top' | 'right bottom' | 'left top' | 'left bottom' | 'center top' | 'center bottom';
|
|
93
|
+
/** Return false to cancel showing. */
|
|
94
|
+
beforeShow?: (modal: IPEModal) => boolean | void;
|
|
95
|
+
onShow?: (modal: IPEModal) => void;
|
|
96
|
+
/** Return false to cancel closing. */
|
|
97
|
+
beforeClose?: (modal: IPEModal) => boolean | void;
|
|
98
|
+
onClose?: (modal: IPEModal) => void;
|
|
99
|
+
/**
|
|
100
|
+
* Called when clicking the close icon. If a function returns false or value is `false`,
|
|
101
|
+
* the modal will NOT close. If value is `true` or omitted, it closes as usual.
|
|
102
|
+
*/
|
|
103
|
+
onClickClose?: boolean | ((modal: IPEModal) => boolean | void);
|
|
104
|
+
}
|
|
105
|
+
export type IPEModalNotifyType = 'success' | 'error' | 'warning' | 'info' | 'dialog' | 'confirm' | string;
|
|
106
|
+
export type IPEModalNotifyPosition = 'top right' | 'top left' | 'bottom right' | 'bottom left';
|
|
107
|
+
export declare enum IPEModalEvent {
|
|
108
|
+
Init = "modal.init",
|
|
109
|
+
BeforeShow = "modal.beforeShow",
|
|
110
|
+
Show = "modal.show",
|
|
111
|
+
BeforeClose = "modal.beforeClose",
|
|
112
|
+
Close = "modal.close",
|
|
113
|
+
Destroy = "modal.destroy",
|
|
114
|
+
ToastShow = "toast.show",
|
|
115
|
+
ToastClose = "toast.close"
|
|
116
|
+
}
|
|
117
|
+
export type IPEModalHook = (ev: CustomEvent<IPEModal>) => boolean | void;
|
|
118
|
+
declare global {
|
|
119
|
+
interface HTMLElementEventMap {
|
|
120
|
+
'modal.init': CustomEvent<IPEModal>;
|
|
121
|
+
'modal.beforeShow': CustomEvent<IPEModal>;
|
|
122
|
+
'modal.show': CustomEvent<IPEModal>;
|
|
123
|
+
'modal.beforeClose': CustomEvent<IPEModal>;
|
|
124
|
+
'modal.close': CustomEvent<IPEModal>;
|
|
125
|
+
'modal.destroy': CustomEvent<IPEModal>;
|
|
126
|
+
'toast.show': CustomEvent<IPEModal>;
|
|
127
|
+
'toast.close': CustomEvent<IPEModal>;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
export declare class IPEModal {
|
|
131
|
+
readonly backdropId: string;
|
|
132
|
+
readonly modalId: string;
|
|
133
|
+
readonly numberId: string;
|
|
134
|
+
private _isDestroyed;
|
|
135
|
+
get isDestroyed(): boolean;
|
|
136
|
+
options: IPEModalOptions;
|
|
137
|
+
/** Logical grouping for stack ops (e.g., 'toast'). */
|
|
138
|
+
pluginName: string;
|
|
139
|
+
private $backdrop?;
|
|
140
|
+
private $modal?;
|
|
141
|
+
private $window?;
|
|
142
|
+
private $header?;
|
|
143
|
+
private $title?;
|
|
144
|
+
private $icons?;
|
|
145
|
+
private $content?;
|
|
146
|
+
private $footer?;
|
|
147
|
+
private $buttonsLeft?;
|
|
148
|
+
private $buttonsRight?;
|
|
149
|
+
private buttonElsLeft;
|
|
150
|
+
private buttonElsRight;
|
|
151
|
+
private keyMap;
|
|
152
|
+
private isOpen;
|
|
153
|
+
private lastFocused?;
|
|
154
|
+
private closeTimer?;
|
|
155
|
+
private isToast;
|
|
156
|
+
private isDragging;
|
|
157
|
+
private dragStartX;
|
|
158
|
+
private dragStartY;
|
|
159
|
+
private modalStartX;
|
|
160
|
+
private modalStartY;
|
|
161
|
+
Event: typeof IPEModalEvent;
|
|
162
|
+
DEFAULT_OPTIONS: IPEModalOptions;
|
|
163
|
+
constructor(options?: Partial<IPEModalOptions>);
|
|
164
|
+
init(): this;
|
|
165
|
+
show(): this;
|
|
166
|
+
close(): this;
|
|
167
|
+
/** Immediately removes DOM and listeners */
|
|
168
|
+
destroy(): this;
|
|
169
|
+
get$backdrop(): HTMLDivElement | undefined;
|
|
170
|
+
get$modal(): HTMLDivElement;
|
|
171
|
+
get$window(): HTMLDivElement;
|
|
172
|
+
get$header(): HTMLDivElement;
|
|
173
|
+
get$title(): HTMLHeadingElement;
|
|
174
|
+
get$content(): HTMLDivElement;
|
|
175
|
+
get$icons(): HTMLDivElement;
|
|
176
|
+
get$buttons(type?: 'buttons' | 'leftButtons' | 'rightButtons'): HTMLDivElement;
|
|
177
|
+
setTitle(title: AnyContent): this;
|
|
178
|
+
setContent(content: AnyContent, method?: 'replace' | 'append' | 'prepend'): this;
|
|
179
|
+
setIcons(icons: {
|
|
180
|
+
className: string;
|
|
181
|
+
method: () => void;
|
|
182
|
+
}[]): this;
|
|
183
|
+
setButtons(buttons: Partial<IPEModalButtonOptions>[], area?: HTMLElement): this;
|
|
184
|
+
generateButton(opts: Partial<IPEModalButtonOptions>): HTMLButtonElement | HTMLAnchorElement;
|
|
185
|
+
/** Dynamically add button(s) into footer. Supports insertion index per side. */
|
|
186
|
+
addButton(opts: Partial<IPEModalButtonOptions>, index?: number): this;
|
|
187
|
+
/** Remove button by element / id / global index (left first, then right). */
|
|
188
|
+
removeButton(target: number | string | HTMLElement): this;
|
|
189
|
+
changePreviewState(): this;
|
|
190
|
+
setModalHeight(offset: number, option?: 'height' | 'min-height' | 'max-height'): number;
|
|
191
|
+
setOptions<T extends keyof IPEModalOptions>(option: T, value: IPEModalOptions[T]): this;
|
|
192
|
+
setOptions(options: Partial<IPEModalOptions>): this;
|
|
193
|
+
setPluginName(name: string): this;
|
|
194
|
+
private applyAnimation;
|
|
195
|
+
private _hooks;
|
|
196
|
+
on(type: IPEModalEvent, listener: IPEModalHook): () => this;
|
|
197
|
+
off(type: IPEModalEvent, listener: IPEModalHook): this;
|
|
198
|
+
once(type: IPEModalEvent, listener: IPEModalHook): () => this;
|
|
199
|
+
private emit;
|
|
200
|
+
private focusFirst;
|
|
201
|
+
private onKeyDown;
|
|
202
|
+
private startCloseTimer;
|
|
203
|
+
private stopCloseTimer;
|
|
204
|
+
setZIndex(z: number): void;
|
|
205
|
+
/** Bring this modal to the top of the stack. */
|
|
206
|
+
bringToFront(): this;
|
|
207
|
+
private isAnimationDisabled;
|
|
208
|
+
private shouldLockBodyOnOpen;
|
|
209
|
+
private shouldUnlockBodyOnClose;
|
|
210
|
+
private onDragStart;
|
|
211
|
+
private onDragMove;
|
|
212
|
+
private onDragEnd;
|
|
213
|
+
/** Show as toast (no backdrop, container stack). */
|
|
214
|
+
showToast(options: Partial<{
|
|
215
|
+
position: IPEModalNotifyPosition;
|
|
216
|
+
}>): this;
|
|
217
|
+
static show(options: Partial<IPEModalOptions>, _element?: AnyContent): IPEModal;
|
|
218
|
+
static createObject(options: Partial<IPEModalOptions>, _element?: AnyContent): IPEModal;
|
|
219
|
+
static close(modalId?: string | HTMLElement): IPEModal | undefined;
|
|
220
|
+
static closeAll(group?: string | string[], except?: string | string[]): IPEModal;
|
|
221
|
+
static removeAll(): void;
|
|
222
|
+
static dialog(options: Partial<IPEModalOptions>, method: (e: MouseEvent, m: IPEModal) => void): IPEModal;
|
|
223
|
+
static confirm(options: Partial<IPEModalOptions> & Partial<{
|
|
224
|
+
okBtn: Pick<IPEModalButtonOptions, 'label' | 'className'>;
|
|
225
|
+
cancelBtn: Pick<IPEModalButtonOptions, 'label' | 'className'>;
|
|
226
|
+
}>, method: (e: MouseEvent, m: IPEModal) => void): IPEModal;
|
|
227
|
+
static notifyIcons: Record<IPEModalNotifyType, string>;
|
|
228
|
+
static notify(type: IPEModalNotifyType, options: Partial<IPEModalOptions> & Partial<{
|
|
229
|
+
icon: string;
|
|
230
|
+
okBtn: Pick<IPEModalButtonOptions, 'label' | 'className'>;
|
|
231
|
+
cancelBtn: Pick<IPEModalButtonOptions, 'label' | 'className'>;
|
|
232
|
+
overrideOther: boolean;
|
|
233
|
+
position: IPEModalNotifyPosition;
|
|
234
|
+
}>, callback?: (result: boolean) => void): IPEModal;
|
|
235
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { InPageEdit } from '../../InPageEdit';
|
|
2
|
+
import { IPEModal, IPEModalButtonOptions, IPEModalEvent, IPEModalOptions } from './IPEModal.js';
|
|
3
|
+
export * from './IPEModal.js';
|
|
4
|
+
declare module '../../InPageEdit' {
|
|
5
|
+
interface InPageEdit {
|
|
6
|
+
modal: ModalService;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export declare class CustomIPEModal extends IPEModal {
|
|
10
|
+
constructor(options?: Partial<IPEModalOptions>);
|
|
11
|
+
private _tmpDisabledActiveInputs?;
|
|
12
|
+
setLoadingState(state: boolean): void;
|
|
13
|
+
}
|
|
14
|
+
export declare class ModalService {
|
|
15
|
+
ctx: InPageEdit;
|
|
16
|
+
constructor(ctx: InPageEdit);
|
|
17
|
+
IPEModal: typeof CustomIPEModal;
|
|
18
|
+
IPEModalEvent: typeof IPEModalEvent;
|
|
19
|
+
show: (options: Partial<IPEModalOptions>) => CustomIPEModal;
|
|
20
|
+
createObject: (options: Partial<IPEModalOptions>) => CustomIPEModal;
|
|
21
|
+
close: typeof IPEModal.close;
|
|
22
|
+
closeAll: typeof IPEModal.closeAll;
|
|
23
|
+
removeAll: typeof IPEModal.removeAll;
|
|
24
|
+
dialog: (options: Partial<IPEModalOptions>) => CustomIPEModal;
|
|
25
|
+
confirm: (options: Partial<IPEModalOptions> & Partial<{
|
|
26
|
+
okBtn: Pick<IPEModalButtonOptions, "label" | "className">;
|
|
27
|
+
cancelBtn: Pick<IPEModalButtonOptions, "label" | "className">;
|
|
28
|
+
}>, method: (e: MouseEvent, m: IPEModal) => void) => CustomIPEModal;
|
|
29
|
+
notify: (type: "success" | "error" | "warning" | "info" | "dialog" | "confirm" | string, options: Partial<IPEModalOptions> & Partial<{
|
|
30
|
+
icon: string;
|
|
31
|
+
okBtn: Pick<IPEModalButtonOptions, "label" | "className">;
|
|
32
|
+
cancelBtn: Pick<IPEModalButtonOptions, "label" | "className">;
|
|
33
|
+
overrideOther: boolean;
|
|
34
|
+
}>, callback?: (result: boolean) => void) => CustomIPEModal;
|
|
35
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sleep-DpyIipK-.js","sources":["../src/utils/sleep.ts"],"sourcesContent":["export const sleep = (ms: number = 0) =>\
|
|
1
|
+
{"version":3,"file":"sleep-DpyIipK-.js","sources":["../src/utils/sleep.ts"],"sourcesContent":["export const sleep = (ms: number = 0) =>\n new Promise((resolve) => setTimeout(resolve, ms))\n"],"names":["sleep","ms","resolve"],"mappings":"AAAO,MAAMA,IAAQ,CAACC,IAAa,MACjC,IAAI,QAAQ,CAACC,MAAY,WAAWA,GAASD,CAAE,CAAC;"}
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@charset "UTF-8";._ipe_progress_so6hn_1{position:relative;display:inline-block;width:100%;overflow:hidden;border:1px solid #c5c5c5;border-radius:100vmax;background-color:#fff;height:1em;--progress: 0%}._ipe_progress_so6hn_1[data-indeterminate=true]:before,._ipe_progress_so6hn_1[data-indeterminate=true]:after{content:"";position:absolute;top:0;bottom:0;left:0;background-color:#36c}._ipe_progress_so6hn_1[data-indeterminate=true]:before{animation:_progress-indeterminate-long_so6hn_1 2s linear infinite}._ipe_progress_so6hn_1[data-indeterminate=true]:after{animation:_progress-indeterminate-short_so6hn_1 2s linear infinite}._ipe_progress_so6hn_1[data-indeterminate=false]:before{content:"";position:absolute;top:0;bottom:0;left:0;width:var(--progress);background-color:#36c;transition:width .3s ease-in-out}@keyframes _progress-indeterminate-long_so6hn_1{0%{left:0;width:0}50%{left:30%;width:70%}75%{left:100%;width:0}}@keyframes _progress-indeterminate-short_so6hn_1{0%{left:0;width:0}50%{left:0;width:0}75%{left:0;width:25%}to{left:110%;width:0}}._mbox_v5fz5_1{--border-color: #dfdfdf;--title-color: #efefef;--content-color: #ffffff;border-radius:.5rem;border:1px solid var(--title-color);border-left:6px solid var(--border-color);overflow:hidden;margin:1rem 0;position:relative}._mbox_v5fz5_1 ._title_v5fz5_12{background-color:var(--title-color);padding:.5rem 1rem;font-weight:700;font-size:1rem;line-height:1.2}._mbox_v5fz5_1 ._content_v5fz5_19{background-color:var(--content-color);padding:.5rem 1rem;font-size:1rem;line-height:1.5;max-height:14em;overflow:auto}._mbox_v5fz5_1 ._close_v5fz5_27{position:absolute;top:.5rem;right:.5rem;font-size:1.25rem;line-height:1rem;color:var(--border-color);cursor:pointer;user-select:none}._mbox_v5fz5_1 ._close_v5fz5_27:hover{filter:brightness(1.2)}._mbox_v5fz5_1 ._close_v5fz5_27:active{filter:brightness(.8)}._mbox_v5fz5_1.mbox-type-note,._mbox_v5fz5_1.mbox-type-info{--border-color: #1f6feb;--title-color: #AFD1FE;--content-color: #f3f9ff}._mbox_v5fz5_1.mbox-type-tip,._mbox_v5fz5_1.mbox-type-success{--border-color: #238636;--title-color: #E0F1E3;--content-color: #f9f9f9}._mbox_v5fz5_1.mbox-type-important,._mbox_v5fz5_1.mbox-type-done{--border-color: #8957e5;--title-color: #DDCBFC;--content-color: #f9f9f9}._mbox_v5fz5_1.mbox-type-warning{--border-color: #9e6a03;--title-color: #E4CC9D;--content-color: #fff9db}._mbox_v5fz5_1.mbox-type-caution,._mbox_v5fz5_1.mbox-type-error{--border-color: #da3633;--title-color: #FCB9B6;--content-color: #f9f9f9}._twinSwapInput_1gdgl_9{display:grid;grid-template-columns:1fr auto 1fr;grid-template-areas:"input-left swap-button input-right";gap:1rem;align-items:end}@media (max-width: 768px){._twinSwapInput_1gdgl_9{grid-template-columns:1fr;grid-template-areas:"input-left" "swap-button" "input-right";gap:.75rem}}._twinSwapInput_1gdgl_9 ._inputWrapper_1gdgl_23{display:flex;flex-direction:column}._twinSwapInput_1gdgl_9 ._inputWrapper_1gdgl_23._inputLeft_1gdgl_27{grid-area:input-left}._twinSwapInput_1gdgl_9 ._inputWrapper_1gdgl_23._inputRight_1gdgl_30{grid-area:input-right}._twinSwapInput_1gdgl_9 ._inputWrapper_1gdgl_23 label{display:block;margin-bottom:.5em;font-weight:500;font-size:.875rem}._twinSwapInput_1gdgl_9 ._inputWrapper_1gdgl_23 input{width:100%}._twinSwapInput_1gdgl_9 ._inputWrapper_1gdgl_23 input:disabled{opacity:.75;cursor:not-allowed}._twinSwapInput_1gdgl_9 ._swapButton_1gdgl_46{grid-area:swap-button;display:flex;align-items:center;justify-content:center}._twinSwapInput_1gdgl_9 ._swapButton_1gdgl_46 button{position:relative;display:flex;align-items:center;justify-content:center;padding:0;border-radius:50%;width:2rem;height:2rem;border:none;background:#efefef;cursor:pointer;transition:all .2s ease}._twinSwapInput_1gdgl_9 ._swapButton_1gdgl_46 button:hover{background:#e0e0e0}._twinSwapInput_1gdgl_9 ._swapButton_1gdgl_46 button:active{background:#d0d0d0}._twinSwapInput_1gdgl_9 ._swapButton_1gdgl_46 button:disabled{opacity:.75;cursor:not-allowed}._twinSwapInput_1gdgl_9 ._swapButton_1gdgl_46 button svg{transition:all .2s ease;width:1.25rem;height:1.25rem}@media (max-width: 768px){._twinSwapInput_1gdgl_9 ._swapButton_1gdgl_46 button{transform:rotate(90deg)}}._tabview_zlbug_1{font-size:14px}._tabview_zlbug_1 ._labels_container_zlbug_4{font-size:16px;list-style:none;margin:0;white-space:nowrap;overflow-x:auto}._tabview_zlbug_1 ._labels_container_zlbug_4 ._label_zlbug_4{flex:auto;padding:0;margin:0;display:inline-block;text-align:center;text-transform:uppercase}._tabview_zlbug_1 ._labels_container_zlbug_4 ._label_zlbug_4:not(:first-child){margin-left:.5em}._tabview_zlbug_1 ._labels_container_zlbug_4 ._label_zlbug_4 a{display:inline-block;padding:.25em .5em;text-decoration:none;color:#08d;cursor:pointer}._tabview_zlbug_1 ._labels_container_zlbug_4 ._label_zlbug_4:hover a{box-shadow:0 -2px #0088dd40 inset}._tabview_zlbug_1 ._labels_container_zlbug_4 ._label_zlbug_4._active_zlbug_32 a{box-shadow:0 -2px #08d inset}._tabview_zlbug_1 ._contents_container_zlbug_35{margin-top:1em}._diff-container_lq0si_2{--primary-text-color: #333;--secondary-text-color: #888;--container-bg-color: #fff;--border-color: #ccc;--del-bg: #fadad7;--del-color: #b30000;--ins-bg: #eaf2c2;--ins-color: #406619;--chunk-header-color: #8a008b;--result-bg: #f5f5f5;background:var(--result-bg);padding:1rem;margin:0;border-radius:3px;font-family:Maple Mono NF CN,Maple Mono NF,Maple Mono,JetBrainsMono Nerd Font,JetBrains Mono NF,JetBrains Mono,Consolas,Courier New,monospace;white-space:pre-wrap;overflow-x:auto;line-height:1.4em;color:var(--secondary-text-color);transition:color .25s ease}._diff-container_lq0si_2:hover{color:var(--primary-text-color)}._diff-container_lq0si_2 del{text-decoration:line-through;color:var(--del-color);background:var(--del-bg)}._diff-container_lq0si_2 ins{background:var(--ins-bg);color:var(--ins-color);text-decoration:underline}._diff-container_lq0si_2 del,._diff-container_lq0si_2 ins{font-weight:700}._diff-container_lq0si_2 ._chunk-header_lq0si_44{color:var(--chunk-header-color);text-decoration:none}.tabs[data-v-46564df3]{--border-color: #efefef;--tab-color: #666;--active-color: #3366bb;display:flex;gap:.5em;border-bottom:1px solid #efefef;margin-bottom:1em}.tabs .tab[data-v-46564df3]{padding:.25em .5em;cursor:pointer;user-select:none;color:var(--tab-color);display:inline-block;transition:color .3s ease,box-shadow .3s ease}.tabs .tab.active[data-v-46564df3]{color:var(--active-color);box-shadow:inset 0 -.15em 0 0 var(--active-color)}
|
|
1
|
+
@charset "UTF-8";._ipe_progress_so6hn_1{position:relative;display:inline-block;width:100%;overflow:hidden;border:1px solid #c5c5c5;border-radius:100vmax;background-color:#fff;height:1em;--progress: 0%}._ipe_progress_so6hn_1[data-indeterminate=true]:before,._ipe_progress_so6hn_1[data-indeterminate=true]:after{content:"";position:absolute;top:0;bottom:0;left:0;background-color:#36c}._ipe_progress_so6hn_1[data-indeterminate=true]:before{animation:_progress-indeterminate-long_so6hn_1 2s linear infinite}._ipe_progress_so6hn_1[data-indeterminate=true]:after{animation:_progress-indeterminate-short_so6hn_1 2s linear infinite}._ipe_progress_so6hn_1[data-indeterminate=false]:before{content:"";position:absolute;top:0;bottom:0;left:0;width:var(--progress);background-color:#36c;transition:width .3s ease-in-out}@keyframes _progress-indeterminate-long_so6hn_1{0%{left:0;width:0}50%{left:30%;width:70%}75%{left:100%;width:0}}@keyframes _progress-indeterminate-short_so6hn_1{0%{left:0;width:0}50%{left:0;width:0}75%{left:0;width:25%}to{left:110%;width:0}}:root{--ipe-modal-z: 1000;--ipe-modal-backdrop-bg: rgba(0, 0, 0, .5);--ipe-modal-bg: #ffffff;--ipe-modal-fg: #111827;--ipe-modal-fg--rgb: 17, 24, 39;--ipe-modal-muted: #6b7280;--ipe-modal-accent: #3b82f6;--ipe-modal-accent--rgb: 59, 130, 246;--ipe-modal-danger: #ef4444;--ipe-modal-danger--rgb: 239, 68, 68;--ipe-modal-radius: 16px;--ipe-modal-button-radius: 10px;--ipe-modal-shadow: 0 20px 40px rgba(0, 0, 0, .18);--ipe-modal-spacing: 16px;--ipe-modal-viewport-gap-y: 20px;--ipe-modal-window-max-w: 720px;--ipe-modal-anim: none;--ipe-modal-safe-area-top: env(safe-area-inset-top);--ipe-modal-safe-area-bottom: env(safe-area-inset-bottom);--ipe-modal-vh: 100vh}@supports (height: 100dvh){:root{--ipe-modal-vh: 100dvh}}:root{--ipe-modal-window-max-h: calc( var(--ipe-modal-vh) - var(--ipe-modal-safe-area-top) - var(--ipe-modal-safe-area-bottom) - (var(--ipe-modal-viewport-gap-y) * 2) )}html.ipe-modal-no-scroll,body.ipe-modal-no-scroll{overflow:hidden!important;touch-action:none;-webkit-overflow-scrolling:auto}body.ipe-modal-no-scroll{position:fixed;width:100%;left:0;right:0}.ipe-modal-backdrop{position:fixed;inset:0;z-index:var(--ipe-modal-z);background:transparent;transition:background .18s ease;pointer-events:none}.ipe-modal-backdrop.is-open{background:var(--ipe-modal-backdrop-bg);pointer-events:auto}.ipe-modal-modal{position:fixed;inset:0;z-index:calc(var(--ipe-modal-z) + 1);outline:none;overflow:auto;opacity:0;transform:translateY(8px) scale(.98);transition:opacity .18s ease,transform .22s ease;pointer-events:none;align-items:start;justify-items:center}.ipe-modal-modal.is-open{opacity:1;transform:none}.ipe-modal-modal.is-centered{display:grid;align-items:center}.ipe-modal-modal.is-centered .ipe-modal-modal__content{max-height:75dvh;overflow:auto}.ipe-modal-modal.is-fullscreen .ipe-modal-modal__window{width:100vw;height:var(--ipe-modal-vh);max-width:none;max-height:none;border-radius:0}.ipe-modal-modal.no-backdrop{position:absolute;inset:auto;display:block;padding:0;overflow:visible}.ipe-modal-modal.is-dragging{transition:none}.ipe-modal-modal.is-dragging .ipe-modal-modal__window{animation:none}.ipe-modal-modal.is-dragging .ipe-modal-modal__header{cursor:grabbing!important}.ipe-modal-modal__window{position:relative;background:var(--ipe-modal-bg);color:var(--ipe-modal-fg);border-radius:var(--ipe-modal-radius);box-shadow:var(--ipe-modal-shadow);max-width:var(--ipe-modal-window-max-w);width:min(92vw,var(--ipe-modal-window-max-w));overflow:hidden;display:block;animation:var(--ipe-modal-anim, none) .22s ease both;pointer-events:auto;overscroll-behavior:contain;margin-top:var(--ipe-modal-viewport-gap-y, 20px);margin-bottom:var(--ipe-modal-viewport-gap-y, 20px)}.size--dialog{max-width:420px}.size--small{max-width:520px}.size--smallToMedium{max-width:640px}.size--medium{max-width:720px}.size--mediumToLarge{max-width:860px}.size--large{max-width:1040px}.size--full{width:100vw;height:var(--ipe-modal-vh);max-width:none;max-height:none;border-radius:0}.size--auto{max-width:var(--ipe-modal-window-max-w)}.ipe-modal-modal__window.is-fixed-height{height:min(var(--ipe-modal-window-max-h),80vh)}.ipe-modal-modal__header{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;padding:calc(var(--ipe-modal-spacing) * .75) var(--ipe-modal-spacing);border-bottom:1px solid color-mix(in oklab,black 6%,transparent)}.ipe-modal-modal__title{font-size:1.1rem;font-weight:600;margin:0}.ipe-modal-modal__icons{display:inline-flex;gap:6px}.ipe-modal-modal__icon{width:28px;height:28px;border-radius:8px;border:0;background:transparent}.ipe-modal-modal__close{margin-left:6px;width:32px;height:32px;display:grid;place-items:center;border:0;border-radius:var(--ipe-modal-button-radius);background:transparent;font-size:22px;line-height:1;color:var(--ipe-modal-muted);cursor:pointer}.ipe-modal-modal__close:hover{background:#0000000f;color:var(--ipe-modal-fg)}.ipe-modal-modal__content{padding:var(--ipe-modal-spacing);overflow:visible;-webkit-overflow-scrolling:touch}.ipe-modal-modal__footer{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:calc(var(--ipe-modal-spacing) * .75) var(--ipe-modal-spacing);border-top:1px solid color-mix(in oklab,black 6%,transparent)}.ipe-modal-modal__buttons{display:inline-flex;gap:8px}.ipe-modal-toast-container{position:fixed;z-index:2000;display:flex;flex-direction:column;gap:8px;align-items:flex-end;pointer-events:none}.ipe-modal-toast-container.top{top:16px}.ipe-modal-toast-container.bottom{bottom:16px;flex-direction:column-reverse}.ipe-modal-toast-container.right{right:16px}.ipe-modal-toast-container.left{left:16px}.ipe-modal-modal__window.plugin--toast{width:300px;border-radius:calc(var(--ipe-modal-radius) * .5)}.ipe-modal-modal__window.plugin--toast .ipe-modal-modal__header{padding:.5em}.ipe-modal-modal__window.plugin--toast .ipe-modal-modal__close{width:20px;height:20px;font-size:16px}.ipe-modal-modal__window.plugin--toast .ipe-modal-modal__content{padding:1em .5em}.ipe-modal-modal__window.plugin--toast .ipe-modal-modal__footer{padding:0 .5em .5em}.ipe-modal-modal__window.plugin--toast .ipe-modal-btn{padding:.5em .75em}.ipe-modal-btn{--accent-color: #fff;--text-color: var(--ipe-modal-fg);--active-color: rgba(0, 0, 0, .1);appearance:none;border:1px solid rgba(0,0,0,.14);background:var(--accent-color);color:var(--text-color);padding:8px 12px;border-radius:var(--ipe-modal-button-radius);cursor:pointer;font:inherit;transition:all .2s}.ipe-modal-btn:hover{background:#0000000a}.ipe-modal-btn:disabled{opacity:.6;cursor:not-allowed}.ipe-modal-btn:active{background:#0000000f;box-shadow:0 0 0 2px var(--active-color)}.ipe-modal-btn:focus{box-shadow:0 0 0 2px var(--active-color)}.ipe-modal-btn.is-primary{--accent-color: var(--ipe-modal-accent);--text-color: #fff;--active-color: rgba(var(--ipe-modal-accent--rgb), .5);border-color:var(--accent-color);background:var(--accent-color)}.ipe-modal-btn.is-danger{--accent-color: var(--ipe-modal-danger);--text-color: #fff;--active-color: rgba(var(--ipe-modal-danger--rgb), .2);border-color:var(--accent-color);background:var(--accent-color);color:var(--text-color)}.ipe-modal-btn.is-ghost,.ipe-modal-btn.is-text{background:transparent}.ipe-modal-btn.is-ghost.is-primary{color:var(--ipe-modal-accent)}.ipe-modal-btn.is-ghost.is-danger{color:var(--ipe-modal-danger)}.ipe-modal-btn.is-text{border:0}.ipe-modal-modal__window.size--dialog .ipe-modal-modal__footer,.ipe-modal-modal__window.compact-buttons .ipe-modal-modal__footer{padding:0}.ipe-modal-modal__window.size--dialog .ipe-modal-modal__buttons--left,.ipe-modal-modal__window.compact-buttons .ipe-modal-modal__buttons--left{display:none}.ipe-modal-modal__window.size--dialog .ipe-modal-modal__buttons--right,.ipe-modal-modal__window.compact-buttons .ipe-modal-modal__buttons--right{flex:1;width:100%;display:flex;gap:0}.ipe-modal-modal__window.size--dialog .ipe-modal-btn,.ipe-modal-modal__window.compact-buttons .ipe-modal-btn{flex:1;border:0;margin:0;padding:1rem;border-radius:0}.ipe-modal-modal__window.size--dialog .ipe-modal-btn:not(:first-child),.ipe-modal-modal__window.compact-buttons .ipe-modal-btn:not(:first-child){border-left:1px solid rgba(0,0,0,.06)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.theme-ipe{--color-primary: #36c;--color-primary-hover: #447ff5;--color-primary-active: #2a4b8d;--color-promary--rgb: 51, 102, 204;--color-white: #fff;--color-text-dark: #222;--color-text-medium: #252525;--color-text-hover: #454545;--color-bg-light: #f8f9fa;--color-bg-lighter: #fafafa;--color-bg-lightest: #f8f8f8;--color-bg-gray: #f4f4f4;--color-border-gray: #c8ccd1;--color-border-light: #efefef;--color-border-input: #ccc;--color-border-dark: #72777d;--color-border-disabled: #d6d6d6;--color-danger: #d33;--color-danger-hover: #ff4242;--color-danger-active: #d00;--color-danger--rgb: 211, 51, 51;--color-disabled-bg: #c8ccd1;--color-disabled-dark: #a0a0a0;--font-size-button: 14px;--font-size-label: 1rem;--font-weight-label: 700;--border-width: 1px;--border-width-radio-checked: 6px;--border-radius-button: 6px;--border-radius-input: 4px;--padding-button-y: .5em;--padding-button-x: 1em;--padding-button-dialog: 1em;--padding-input-y: .25em;--padding-input-x: .35em;--size-checkbox: 1.2em;--size-radio: 1.4em;--margin-checkbox-top: .15em;--margin-checkbox-right: .375em;--textarea-height: 50vh;--textarea-min-height: 20em;--line-height-input: 1.5em;--line-height-checkbox: 1.2em;--transition-fast: .1s;--transition-medium: .12s;--transition-slow: .2s;--ipe-modal-accent: var(--color-primary);--ipe-modal-danger: var(--color-danger);--ipe-modal-button-radius: var(--border-radius-button);font-size:14px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}.theme-ipe textarea[name=text]{width:100%;height:var(--textarea-height);min-height:var(--textarea-min-height);resize:vertical;border:var(--border-width) solid var(--color-border-input);border-radius:var(--border-radius-input);transition:all var(--transition-slow);line-height:var(--line-height-input);padding:var(--padding-input-y) var(--padding-input-x);outline:none}.theme-ipe textarea[name=text]:focus{border-color:var(--color-primary);box-shadow:inset 0 0 0 var(--border-width) var(--color-primary)}.theme-ipe textarea[name=text]:disabled{background-color:var(--color-disabled-bg);color:var(--color-white);cursor:not-allowed}.theme-ipe .ipe-input-box label{display:block;font-size:.875rem;margin-bottom:.5em;font-weight:500}.theme-ipe .ipe-input-box input[type=text],.theme-ipe .ipe-input-box input[type=number],.theme-ipe .ipe-input-box input[type=email],.theme-ipe .ipe-input-box input[type=password],.theme-ipe .ipe-input-box input[type=url],.theme-ipe .ipe-input-box input[type=tel],.theme-ipe .ipe-input-box input[type=search]{width:100%}.theme-ipe input{padding:var(--padding-input-y) var(--padding-input-x);border:var(--border-width) solid var(--color-border-input);border-radius:var(--border-radius-input);transition:all var(--transition-slow);line-height:var(--line-height-input);outline:none}.theme-ipe input:focus{border-color:var(--color-primary);box-shadow:inset 0 0 0 var(--border-width) var(--color-primary)}.theme-ipe label input[type=checkbox]+span,.theme-ipe label input[type=radio]+span{user-select:none;line-height:var(--line-height-checkbox)}.theme-ipe label input[type=checkbox]+span:before,.theme-ipe label input[type=radio]+span:before{content:" ";display:inline-block;width:var(--size-checkbox);height:var(--size-checkbox);margin-top:var(--margin-checkbox-top);margin-right:var(--margin-checkbox-right);border-radius:var(--border-radius-input);background-color:var(--color-bg-lightest);border:var(--border-width) solid var(--color-border-dark);cursor:pointer;transition:all var(--transition-medium)}.theme-ipe label input[type=radio]+span:before{border-radius:50%;box-sizing:border-box;vertical-align:text-bottom;width:var(--size-radio);height:var(--size-radio)}.theme-ipe label input[type=checkbox]:checked+span:before{content:" ";background-color:var(--color-primary);background-image:url(data:image/svg+xml;base64,PHN2ZyBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kOyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMTYgMTYiPjxnIGlkPSJjaGVja21hcmsiPjxwYXRoIGQ9Ik0xMy43NDkyKzMuNDkwOTVMNS44NjMxMisxMS42MzM3TDIuMjUwNzcrNy45NjA4MkwxLjQ4NzYrOC43NTc3OEw1Ljg2MzEyKzEzLjE5M0wxNC41MTI0KzQuMjg3OUwxMy43NDkyKzMuNDkwOTVaIiBvcGFjaXR5PSIxIiBmaWxsPSIjZmZmZmZmIi8+PC9nPjwvc3ZnPg==);background-repeat:no-repeat}.theme-ipe label input[type=radio]:checked+span:before{border-color:var(--color-primary);border-width:var(--border-width-radio-checked)}.theme-ipe label input[type=checkbox]:checked+span:hover:before{background-color:var(--color-primary-hover)}.theme-ipe label input[type=radio]:checked+span:hover:before{border-color:var(--color-primary-hover)}.theme-ipe label input[type=checkbox]:active+span:before,.theme-ipe label input[type=checkbox]:focus+span:before{box-shadow:0 0 0 2px rgba(var(--color-promary--rgb),.5);border-color:var(--color-primary)}.theme-ipe label input[type=checkbox],.theme-ipe label input[type=radio]{position:absolute;clip:rect(0,0,0,0)}.theme-ipe .cm-panel label input[type=checkbox],.theme-ipe .cm-panel label input[type=radio]{position:initial;clip:initial}.theme-ipe label input[type=checkbox]:disabled+span:before{border-color:var(--color-border-disabled)}.theme-ipe label input[type=radio]:disabled+span:before{background-color:var(--color-disabled-bg);border-color:var(--color-disabled-bg)}.theme-ipe label input[type=checkbox]:disabled:checked+span:before{background-color:var(--color-disabled-dark)}.theme-ipe label input[type=radio]:disabled:checked+span:before{background-color:var(--color-white)}.theme-ipe .ipe-radio-box span,.theme-ipe .ipe-checkbox span{vertical-align:middle}._mbox_5x43w_1{--border-color: #dfdfdf;--title-color: #efefef;--content-color: #ffffff;border-radius:.5rem;border:1px solid var(--title-color);border-left:6px solid var(--border-color);overflow:hidden;margin-bottom:1rem;position:relative}._mbox_5x43w_1 ._title_5x43w_12{background-color:var(--title-color);padding:.5rem 1rem;font-weight:700;font-size:1rem;line-height:1.2}._mbox_5x43w_1 ._content_5x43w_19{background-color:var(--content-color);padding:.5rem 1rem;font-size:1rem;line-height:1.5;max-height:14em;overflow:auto}._mbox_5x43w_1 ._close_5x43w_27{position:absolute;top:.5rem;right:.5rem;font-size:1.25rem;line-height:1rem;color:var(--border-color);cursor:pointer;user-select:none}._mbox_5x43w_1 ._close_5x43w_27:hover{filter:brightness(1.2)}._mbox_5x43w_1 ._close_5x43w_27:active{filter:brightness(.8)}._mbox_5x43w_1.mbox-type-note,._mbox_5x43w_1.mbox-type-info{--border-color: #1f6feb;--title-color: #AFD1FE;--content-color: #f3f9ff}._mbox_5x43w_1.mbox-type-tip,._mbox_5x43w_1.mbox-type-success{--border-color: #238636;--title-color: #E0F1E3;--content-color: #f9f9f9}._mbox_5x43w_1.mbox-type-important,._mbox_5x43w_1.mbox-type-done{--border-color: #8957e5;--title-color: #DDCBFC;--content-color: #f9f9f9}._mbox_5x43w_1.mbox-type-warning{--border-color: #9e6a03;--title-color: #E4CC9D;--content-color: #fff9db}._mbox_5x43w_1.mbox-type-caution,._mbox_5x43w_1.mbox-type-error{--border-color: #da3633;--title-color: #FCB9B6;--content-color: #f9f9f9}._twinSwapInput_1gdgl_9{display:grid;grid-template-columns:1fr auto 1fr;grid-template-areas:"input-left swap-button input-right";gap:1rem;align-items:end}@media (max-width: 768px){._twinSwapInput_1gdgl_9{grid-template-columns:1fr;grid-template-areas:"input-left" "swap-button" "input-right";gap:.75rem}}._twinSwapInput_1gdgl_9 ._inputWrapper_1gdgl_23{display:flex;flex-direction:column}._twinSwapInput_1gdgl_9 ._inputWrapper_1gdgl_23._inputLeft_1gdgl_27{grid-area:input-left}._twinSwapInput_1gdgl_9 ._inputWrapper_1gdgl_23._inputRight_1gdgl_30{grid-area:input-right}._twinSwapInput_1gdgl_9 ._inputWrapper_1gdgl_23 label{display:block;margin-bottom:.5em;font-weight:500;font-size:.875rem}._twinSwapInput_1gdgl_9 ._inputWrapper_1gdgl_23 input{width:100%}._twinSwapInput_1gdgl_9 ._inputWrapper_1gdgl_23 input:disabled{opacity:.75;cursor:not-allowed}._twinSwapInput_1gdgl_9 ._swapButton_1gdgl_46{grid-area:swap-button;display:flex;align-items:center;justify-content:center}._twinSwapInput_1gdgl_9 ._swapButton_1gdgl_46 button{position:relative;display:flex;align-items:center;justify-content:center;padding:0;border-radius:50%;width:2rem;height:2rem;border:none;background:#efefef;cursor:pointer;transition:all .2s ease}._twinSwapInput_1gdgl_9 ._swapButton_1gdgl_46 button:hover{background:#e0e0e0}._twinSwapInput_1gdgl_9 ._swapButton_1gdgl_46 button:active{background:#d0d0d0}._twinSwapInput_1gdgl_9 ._swapButton_1gdgl_46 button:disabled{opacity:.75;cursor:not-allowed}._twinSwapInput_1gdgl_9 ._swapButton_1gdgl_46 button svg{transition:all .2s ease;width:1.25rem;height:1.25rem}@media (max-width: 768px){._twinSwapInput_1gdgl_9 ._swapButton_1gdgl_46 button{transform:rotate(90deg)}}._tabview_zlbug_1{font-size:14px}._tabview_zlbug_1 ._labels_container_zlbug_4{font-size:16px;list-style:none;margin:0;white-space:nowrap;overflow-x:auto}._tabview_zlbug_1 ._labels_container_zlbug_4 ._label_zlbug_4{flex:auto;padding:0;margin:0;display:inline-block;text-align:center;text-transform:uppercase}._tabview_zlbug_1 ._labels_container_zlbug_4 ._label_zlbug_4:not(:first-child){margin-left:.5em}._tabview_zlbug_1 ._labels_container_zlbug_4 ._label_zlbug_4 a{display:inline-block;padding:.25em .5em;text-decoration:none;color:#08d;cursor:pointer}._tabview_zlbug_1 ._labels_container_zlbug_4 ._label_zlbug_4:hover a{box-shadow:0 -2px #0088dd40 inset}._tabview_zlbug_1 ._labels_container_zlbug_4 ._label_zlbug_4._active_zlbug_32 a{box-shadow:0 -2px #08d inset}._tabview_zlbug_1 ._contents_container_zlbug_35{margin-top:1em}._diff-container_lq0si_2{--primary-text-color: #333;--secondary-text-color: #888;--container-bg-color: #fff;--border-color: #ccc;--del-bg: #fadad7;--del-color: #b30000;--ins-bg: #eaf2c2;--ins-color: #406619;--chunk-header-color: #8a008b;--result-bg: #f5f5f5;background:var(--result-bg);padding:1rem;margin:0;border-radius:3px;font-family:Maple Mono NF CN,Maple Mono NF,Maple Mono,JetBrainsMono Nerd Font,JetBrains Mono NF,JetBrains Mono,Consolas,Courier New,monospace;white-space:pre-wrap;overflow-x:auto;line-height:1.4em;color:var(--secondary-text-color);transition:color .25s ease}._diff-container_lq0si_2:hover{color:var(--primary-text-color)}._diff-container_lq0si_2 del{text-decoration:line-through;color:var(--del-color);background:var(--del-bg)}._diff-container_lq0si_2 ins{background:var(--ins-bg);color:var(--ins-color);text-decoration:underline}._diff-container_lq0si_2 del,._diff-container_lq0si_2 ins{font-weight:700}._diff-container_lq0si_2 ._chunk-header_lq0si_44{color:var(--chunk-header-color);text-decoration:none}#ipe-edit-toolbox{position:fixed;right:32px;bottom:32px;user-select:none;z-index:199}@media print{#ipe-edit-toolbox{display:none}}#ipe-edit-toolbox .ipe-toolbox-btn{color:#fff;background:#bebebe;text-align:center;height:35px;width:35px;font-size:20px;border:0;border-radius:50%;box-shadow:0 0 5px gray;text-shadow:0 0 2px #4c4c4c;padding:0;margin:0;cursor:pointer}#ipe-edit-toolbox #toolbox-toggle{position:absolute;right:0;bottom:0;width:42px;height:42px;background:#3f51b5;font-size:24px;line-height:1;margin:0;transition:all .26s ease-in-out;transform:rotate(0)}#ipe-edit-toolbox #toolbox-toggle.opened{transform:rotate(45deg)}#ipe-edit-toolbox .btn-group.group1 .btn-tip-group{transform:translate3d(0,100%,0)}#ipe-edit-toolbox .btn-group.group2 .btn-tip-group{transform:translate3d(100%,0,0)}#ipe-edit-toolbox .btn-group .btn-tip-group{transition-timing-function:ease-in-out;transition-duration:.3s;opacity:0}#ipe-edit-toolbox .btn-group.opened .btn-tip-group{transform:translateZ(0);opacity:1}#ipe-edit-toolbox .btn-group.opened .btn-tip-group:nth-of-type(1),#ipe-edit-toolbox .btn-group:not(.opened) .btn-tip-group:nth-of-type(3){transition-delay:0s}#ipe-edit-toolbox .btn-group .btn-tip-group:nth-of-type(2){transition-delay:.06s}#ipe-edit-toolbox .btn-group:not(.opened) .btn-tip-group:nth-of-type(1),#ipe-edit-toolbox .btn-group.opened .btn-tip-group:nth-of-type(3){transition-delay:.108s}#ipe-edit-toolbox .btn-group:not(.opened){transform:scaleZ(0);transition-delay:.408s}#ipe-edit-toolbox .btn-group.opened{transform:scaleZ(1)}#ipe-edit-toolbox .ipe-toolbox-btn#toolbox-toggle.click{box-shadow:0 0 4px gray,0 0 10px #444 inset}#toolbox-toggle.click:before{content:"";font-family:FontAwesome;display:block;position:absolute;bottom:50%;right:0;font-size:12px;transform:rotate(-45deg)}#ipe-edit-toolbox .ipe-toolbox-btn#edit-btn{background:#2196f3}#ipe-edit-toolbox .ipe-toolbox-btn#redirectfrom-btn{background:#00bcd4}#ipe-edit-toolbox .ipe-toolbox-btn#redirectto-btn{background:#009688}#ipe-edit-toolbox .ipe-toolbox-btn#deletepage-btn{background:#e91e63}#ipe-edit-toolbox .ipe-toolbox-btn#renamepage-btn{background:#ff5722}#ipe-edit-toolbox .ipe-toolbox-btn#preference-btn{background:#ffc107}#ipe-edit-toolbox .btn-group{position:absolute;float:right;list-style:none;margin:0}#ipe-edit-toolbox .btn-group.group1{bottom:41px;right:2px}#ipe-edit-toolbox .btn-group.group2{bottom:0;right:41px}#ipe-edit-toolbox .btn-group.group1 .btn-tip-group{margin-bottom:6px}#ipe-edit-toolbox .btn-group.group2 .btn-tip-group{margin-right:6px}#ipe-edit-toolbox .btn-group.opened{visibility:visible}#ipe-edit-toolbox .btn-tip-group .btn-tip{position:absolute;text-align:center;font-size:12px;width:6em;right:-20px;top:-2.1em;background:#fff;padding:0 4px;box-shadow:0 0 4px gray;pointer-events:none;display:none}#ipe-edit-toolbox .btn-tip-group:hover .btn-tip{display:block}#ipe-edit-toolbox .btn-tip-group .btn-tip:after{content:"";display:block;border:5px solid transparent;border-right-color:#fff;border-bottom-color:#fff;position:absolute;bottom:-4px;left:calc(50% - 2.5px);transform:rotate(45deg)}.tabs[data-v-1f988771]{--border-color: #efefef;--tab-color: #666;--active-color: #3366bb;display:flex;gap:.5em;border-bottom:1px solid #efefef;margin-bottom:1em}.tabs .tab[data-v-1f988771]{padding:.5em 1em;cursor:pointer;user-select:none;color:var(--tab-color);display:inline-block;transition:color .3s ease,box-shadow .3s ease}.tabs .tab.active[data-v-1f988771]{color:var(--active-color);box-shadow:inset 0 -.15em 0 0 var(--active-color)}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* interpolate
|
|
3
|
+
* - 具名插值:`{{expr}}`,其中 expr 可为标识符或简单表达式(如 `{{ name || "world" }}`、`{{ name ? 'hi ' + name : '' }}`)。
|
|
4
|
+
* - 匿名插值:使用 `{{ $1 }}`、`{{ $2 }}`...,可用可变参数或数组提供位置参数。
|
|
5
|
+
* - 具名与匿名可混用;若缺失值,替换为空字符串。
|
|
6
|
+
*
|
|
7
|
+
* 示例:
|
|
8
|
+
* ```ts
|
|
9
|
+
* interpolate('hello, {{ name }}') // 'hello, '
|
|
10
|
+
* interpolate('hello, {{ name || "world" }}') // 'hello, world'
|
|
11
|
+
* interpolate('hello, {{ name || "world" }}', { name: 'dragon' }) // 'hello, dragon'
|
|
12
|
+
* interpolate('hello, {{ $1 }}. {{ $2 }}', 'dragon', 'yeah') // 'hello, dragon. yeah'
|
|
13
|
+
* interpolate('hello, {{ $1 }}. {{ $2 }}', ['dragon', 'yeah']) // 'hello, dragon. yeah'
|
|
14
|
+
* interpolate('hello, {{ $1 }}. {{ greeting || "" }}', { $1: 'dragon', greeting: 'yeah' }) // 'hello, dragon. yeah'
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare function interpolate(template: string): string;
|
|
18
|
+
export declare function interpolate(template: string, context: Record<string, unknown>): string;
|
|
19
|
+
export declare function interpolate(template: string, ...numricContext: string[]): string;
|
|
20
|
+
export declare function interpolate(template: string, numricContext: string[]): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|