@inpageedit/core 0.9.0 → 0.9.3
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/dist/InPageEdit.d.ts +1 -1
- package/dist/Preferences-DS4-CFWe.js +9 -0
- package/dist/Preferences-DS4-CFWe.js.map +1 -0
- package/dist/decorators/Preferences.d.ts +2 -3
- package/dist/index-BJ2aqva1.js +357 -0
- package/dist/index-BJ2aqva1.js.map +1 -0
- package/dist/index-BKxuoVoX.js +5738 -0
- package/dist/index-BKxuoVoX.js.map +1 -0
- package/dist/{index-DMNUP3fg.js → index-CA_JNRF8.js} +3 -3
- package/dist/index-CA_JNRF8.js.map +1 -0
- package/dist/{index-CBQsBfc2.js → index-CMuITxgX.js} +2 -2
- package/dist/{index-CBQsBfc2.js.map → index-CMuITxgX.js.map} +1 -1
- package/dist/{index-CYdxWw9g.js → index-CNsfHvio.js} +3 -3
- package/dist/{index-CYdxWw9g.js.map → index-CNsfHvio.js.map} +1 -1
- package/dist/{index-G3k3kjCU.js → index-CiceXP5j.js} +2 -2
- package/dist/{index-G3k3kjCU.js.map → index-CiceXP5j.js.map} +1 -1
- package/dist/{index-dp6_MU68.js → index-D8zKl2eU.js} +3 -3
- package/dist/{index-dp6_MU68.js.map → index-D8zKl2eU.js.map} +1 -1
- package/dist/{index-BDVcDlsf.js → index-D968kDLW.js} +3 -3
- package/dist/{index-BDVcDlsf.js.map → index-D968kDLW.js.map} +1 -1
- package/dist/{index-D7SQwFxl.js → index-DRaYlg2d.js} +3 -3
- package/dist/{index-D7SQwFxl.js.map → index-DRaYlg2d.js.map} +1 -1
- package/dist/{index-CNsB3Vcb.js → index-DtLiqtR8.js} +1568 -1505
- package/dist/{index-CNsB3Vcb.js.map → index-DtLiqtR8.js.map} +1 -1
- package/dist/index.js +1 -1
- package/dist/models/WikiPage/index.d.ts +1 -2
- package/dist/plugins/BasePlugin.d.ts +0 -2
- package/dist/plugins/{preferences/ui → preferences-ui}/index.d.ts +4 -3
- package/dist/plugins/quick-delete/index.d.ts +2 -2
- package/dist/plugins/quick-diff/components/DiffTable.d.ts +2 -2
- package/dist/plugins/quick-diff/index.d.ts +60 -1
- package/dist/plugins/quick-edit/index.d.ts +2 -2
- package/dist/plugins/quick-move/index.d.ts +2 -2
- package/dist/plugins/quick-redirect/index.d.ts +2 -2
- package/dist/services/ApiService.d.ts +1 -1
- package/dist/services/CurrentPageService.d.ts +2 -2
- package/dist/{plugins/preferences/index.d.ts → services/PreferencesService.d.ts} +9 -9
- package/dist/services/WikiMetadataService.d.ts +1 -1
- package/dist/services/WikiPageService.d.ts +2 -2
- package/dist/services/WikiTitleService.d.ts +7 -3
- package/dist/services/storage/IDBStorage.d.ts +90 -0
- package/dist/services/storage/index.d.ts +53 -0
- package/dist/style.css +1 -1
- package/dist/utils/vueHooks.d.ts +2 -1
- package/lib/index.umd.js +36 -47
- package/lib/index.umd.js.map +1 -1
- package/lib/style.css +1 -1
- package/package.json +8 -14
- package/dist/Preferences-Bg3J5Ur9.js +0 -9
- package/dist/Preferences-Bg3J5Ur9.js.map +0 -1
- package/dist/index-9Z4ds-WM.js +0 -6339
- package/dist/index-9Z4ds-WM.js.map +0 -1
- package/dist/index-BB9MXkUv.js +0 -171
- package/dist/index-BB9MXkUv.js.map +0 -1
- package/dist/index-CADkQBg0.js +0 -1249
- package/dist/index-CADkQBg0.js.map +0 -1
- package/dist/index-DMNUP3fg.js.map +0 -1
- package/dist/plugins/quick-diff/JsDiffService.d.ts +0 -23
- package/dist/plugins/quick-diff/PluginQuickDiffCore.d.ts +0 -72
- package/dist/services/StorageService.d.ts +0 -56
package/dist/index.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { FexiosFinalContext } from 'fexios';
|
|
2
1
|
import { PageInfo } from './types/PageInfo';
|
|
3
2
|
import { PageParseData } from './types/PageParseData';
|
|
4
3
|
import { WatchlistAction } from './types/WatchlistAction';
|
|
5
|
-
import { MediaWikiApi, MwApiParams, MwApiResponse } from 'wiki-saikou/browser';
|
|
4
|
+
import { MediaWikiApi, MwApiParams, MwApiResponse, FexiosFinalContext } from 'wiki-saikou/browser';
|
|
6
5
|
export interface WikiPageEditPayload {
|
|
7
6
|
text?: string;
|
|
8
7
|
prependtext?: string;
|
|
@@ -13,8 +13,6 @@ export default class BasePlugin<ConfigType extends unknown = any> {
|
|
|
13
13
|
static reusable: boolean;
|
|
14
14
|
/** 插件的偏好设置模式 */
|
|
15
15
|
static PreferencesSchema?: Schema;
|
|
16
|
-
/** 插件的偏好设置默认值 */
|
|
17
|
-
static PreferencesDefaults?: Record<string, any>;
|
|
18
16
|
constructor(ctx: InPageEdit, config?: ConfigType, name?: string);
|
|
19
17
|
protected start(): Promise<void> | void;
|
|
20
18
|
protected stop(): Promise<void> | void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { InPageEdit } from '
|
|
2
|
-
declare module '
|
|
1
|
+
import { InPageEdit } from '../../InPageEdit';
|
|
2
|
+
declare module '../../InPageEdit' {
|
|
3
3
|
interface InPageEdit {
|
|
4
4
|
preferencesUI: PluginPreferencesUI;
|
|
5
5
|
}
|
|
@@ -7,6 +7,7 @@ declare module '../../../InPageEdit' {
|
|
|
7
7
|
export declare class PluginPreferencesUI extends BasePlugin {
|
|
8
8
|
ctx: InPageEdit;
|
|
9
9
|
constructor(ctx: InPageEdit);
|
|
10
|
+
protected stop(): Promise<void> | void;
|
|
10
11
|
showModal(): void;
|
|
11
|
-
|
|
12
|
+
createForm(): import('vue').App<Element>;
|
|
12
13
|
}
|
|
@@ -40,9 +40,9 @@ export declare class PluginQuickDelete extends BasePlugin {
|
|
|
40
40
|
constructor(ctx: InPageEdit);
|
|
41
41
|
protected start(): Promise<void> | void;
|
|
42
42
|
showModal(payload?: string | Partial<QuickDeleteOptions>): Promise<void>;
|
|
43
|
-
handleSubmit(payload: QuickDeleteSubmitPayload): Promise<import('
|
|
43
|
+
handleSubmit(payload: QuickDeleteSubmitPayload): Promise<Required<import('wiki-saikou').FexiosContext<import('wiki-saikou').MwApiResponse<{
|
|
44
44
|
success: boolean;
|
|
45
|
-
}
|
|
45
|
+
}>>>>;
|
|
46
46
|
getWikiPageFromPayload(payload: Partial<QuickDeleteOptions>): Promise<IWikiPage>;
|
|
47
47
|
private injectToolbox;
|
|
48
48
|
protected removeToolbox(ctx: InPageEdit): void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { JSX } from 'jsx-dom/jsx-runtime';
|
|
2
|
-
import { CompareApiResponse } from '../
|
|
3
|
-
import { InPageEdit } from '../../../InPageEdit';
|
|
2
|
+
import { CompareApiResponse } from '../index.js';
|
|
3
|
+
import { InPageEdit } from '../../../InPageEdit.js';
|
|
4
4
|
export type DiffTableProps = {
|
|
5
5
|
data: Partial<CompareApiResponse['compare']>;
|
|
6
6
|
ctx: InPageEdit;
|
|
@@ -1,6 +1,65 @@
|
|
|
1
1
|
import { InPageEdit } from '../../InPageEdit';
|
|
2
|
+
import { IPEModal, IPEModalOptions } from '@inpageedit/modal';
|
|
3
|
+
declare module '../../InPageEdit' {
|
|
4
|
+
interface InPageEdit {
|
|
5
|
+
quickDiff: PluginQuickDiff;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export interface CompareApiRequestOptions {
|
|
9
|
+
fromtitle: string;
|
|
10
|
+
fromid: number;
|
|
11
|
+
fromrev: number;
|
|
12
|
+
frompst: boolean;
|
|
13
|
+
totitle: string;
|
|
14
|
+
toid: number;
|
|
15
|
+
torev: number;
|
|
16
|
+
torelative?: 'cur' | 'prev' | 'next';
|
|
17
|
+
topst: boolean;
|
|
18
|
+
prop: string;
|
|
19
|
+
difftype: 'table' | 'unified';
|
|
20
|
+
fromtext: string;
|
|
21
|
+
fromsection: string | number;
|
|
22
|
+
fromcontentmodel: string;
|
|
23
|
+
totext: string;
|
|
24
|
+
tosection: string | number;
|
|
25
|
+
tocontentmodel: string;
|
|
26
|
+
}
|
|
27
|
+
export interface CompareApiResponse {
|
|
28
|
+
compare: Partial<{
|
|
29
|
+
fromid: number;
|
|
30
|
+
fromrevid: number;
|
|
31
|
+
fromns: number;
|
|
32
|
+
fromtitle: string;
|
|
33
|
+
fromsize: number;
|
|
34
|
+
fromtimestamp: string;
|
|
35
|
+
fromuser: string;
|
|
36
|
+
fromuserid: number;
|
|
37
|
+
fromcomment: string;
|
|
38
|
+
fromparsedcomment?: string;
|
|
39
|
+
toid: number;
|
|
40
|
+
torevid: number;
|
|
41
|
+
tons: number;
|
|
42
|
+
totitle: string;
|
|
43
|
+
tosize: number;
|
|
44
|
+
totimestamp: string;
|
|
45
|
+
touser: string;
|
|
46
|
+
touserid: number;
|
|
47
|
+
tocomment: string;
|
|
48
|
+
toparsedcomment: string;
|
|
49
|
+
diffsize: number;
|
|
50
|
+
prev: number;
|
|
51
|
+
next: number;
|
|
52
|
+
}> & {
|
|
53
|
+
body: string;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
2
56
|
export declare class PluginQuickDiff extends BasePlugin {
|
|
3
57
|
ctx: InPageEdit;
|
|
4
|
-
static readonly inject: string[];
|
|
5
58
|
constructor(ctx: InPageEdit);
|
|
59
|
+
protected start(): Promise<void> | void;
|
|
60
|
+
protected stop(): Promise<void> | void;
|
|
61
|
+
private injectHistoryPage;
|
|
62
|
+
private injectQuickEdit;
|
|
63
|
+
readonly COMPARE_API_DEFAULT_OPTIONS: Partial<CompareApiRequestOptions>;
|
|
64
|
+
comparePages(options: Partial<CompareApiRequestOptions>, modal?: IPEModal, modalOptions?: Partial<IPEModalOptions>): IPEModal;
|
|
6
65
|
}
|
|
@@ -54,9 +54,9 @@ export declare class PluginQuickEdit extends BasePlugin {
|
|
|
54
54
|
constructor(ctx: InPageEdit);
|
|
55
55
|
protected start(): Promise<void> | void;
|
|
56
56
|
showModal(payload?: string | Partial<QuickEditOptions>): Promise<void>;
|
|
57
|
-
handleSubmit(payload: QuickEditSubmitPayload): Promise<import('
|
|
57
|
+
handleSubmit(payload: QuickEditSubmitPayload): Promise<Required<import('wiki-saikou').FexiosContext<import('wiki-saikou').MwApiResponse<{
|
|
58
58
|
success: boolean;
|
|
59
|
-
}
|
|
59
|
+
}>>>>;
|
|
60
60
|
getWikiPageFromPayload(payload: Partial<QuickEditOptions>): Promise<IWikiPage>;
|
|
61
61
|
private injectToolbox;
|
|
62
62
|
protected removeToolbox(ctx: InPageEdit): void;
|
|
@@ -23,7 +23,7 @@ export declare class PluginQuickMove extends BasePlugin {
|
|
|
23
23
|
protected start(): Promise<void> | void;
|
|
24
24
|
private injectToolbox;
|
|
25
25
|
quickMove(options?: Partial<QuickMoveOptions>): import('../../services/ModalService').CustomIPEModal;
|
|
26
|
-
movePage(options: MovePageOptions): Promise<import('
|
|
26
|
+
movePage(options: MovePageOptions): Promise<Required<import('wiki-saikou').FexiosContext<import('wiki-saikou').MwApiResponse<{
|
|
27
27
|
success: boolean;
|
|
28
|
-
}
|
|
28
|
+
}>>>>;
|
|
29
29
|
}
|
|
@@ -20,7 +20,7 @@ export declare class PluginQuickRedirect extends BasePlugin {
|
|
|
20
20
|
protected start(): Promise<void> | void;
|
|
21
21
|
protected stop(): Promise<void> | void;
|
|
22
22
|
quickRedirect(options?: Partial<QuickRedirectOptions>): import('../../services/ModalService').CustomIPEModal;
|
|
23
|
-
redirectPage(options: RedirectPageOptions): Promise<import('
|
|
23
|
+
redirectPage(options: RedirectPageOptions): Promise<Required<import('wiki-saikou').FexiosContext<import('wiki-saikou').MwApiResponse<{
|
|
24
24
|
success: boolean;
|
|
25
|
-
}
|
|
25
|
+
}>>>>;
|
|
26
26
|
}
|
|
@@ -12,7 +12,7 @@ export declare class CurrentPageService extends Service {
|
|
|
12
12
|
#private;
|
|
13
13
|
readonly ctx: InPageEdit;
|
|
14
14
|
constructor(ctx: InPageEdit);
|
|
15
|
-
private
|
|
15
|
+
private get logger();
|
|
16
16
|
protected start(): Promise<void>;
|
|
17
17
|
protected stop(): void | Promise<void>;
|
|
18
18
|
url: URL;
|
|
@@ -24,5 +24,5 @@ export declare class CurrentPageService extends Service {
|
|
|
24
24
|
* @returns IWikiTitle or null if cannot be determined
|
|
25
25
|
*/
|
|
26
26
|
wikiTitle: IWikiTitle | null;
|
|
27
|
-
|
|
27
|
+
get wikiAction(): string;
|
|
28
28
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { InPageEdit, Schema } from '
|
|
2
|
-
import {
|
|
3
|
-
import { ComputeAble } from '
|
|
4
|
-
declare module '
|
|
1
|
+
import { InPageEdit, Schema, Service } from '../InPageEdit.js';
|
|
2
|
+
import { IPEStorageRecord } from './storage/index.js';
|
|
3
|
+
import { ComputeAble } from '../utils/computeable.js';
|
|
4
|
+
declare module '../InPageEdit' {
|
|
5
5
|
interface InPageEdit {
|
|
6
|
-
preferences:
|
|
6
|
+
preferences: PreferencesService;
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
9
|
export interface InPageEditPreferenceUICategory {
|
|
@@ -15,23 +15,23 @@ export interface InPageEditPreferenceUICategory {
|
|
|
15
15
|
export interface InPageEditPreferenceUIRegistryItem {
|
|
16
16
|
name: string;
|
|
17
17
|
schema: Schema;
|
|
18
|
-
defaults: Record<string, any>;
|
|
19
18
|
category: string;
|
|
20
19
|
}
|
|
21
|
-
export declare class
|
|
20
|
+
export declare class PreferencesService extends Service {
|
|
22
21
|
ctx: InPageEdit;
|
|
23
22
|
private db;
|
|
24
23
|
customRegistries: InPageEditPreferenceUIRegistryItem[];
|
|
25
24
|
categoryDefinitions: InPageEditPreferenceUICategory[];
|
|
26
25
|
private _defaultPreferences;
|
|
27
26
|
constructor(ctx: InPageEdit);
|
|
27
|
+
get logger(): import('@inpageedit/logger').Logger;
|
|
28
28
|
start(): Promise<void>;
|
|
29
29
|
get<T = any>(key: string, fallback?: ComputeAble<T>): Promise<T | null>;
|
|
30
30
|
getDefaultValue(key: string): unknown;
|
|
31
|
-
set<T = any>(key: string, value: T): Promise<
|
|
31
|
+
set<T = any>(key: string, value: T): Promise<IPEStorageRecord<T> | void>;
|
|
32
32
|
getAll(): Promise<Record<string, any>>;
|
|
33
33
|
private loadDefaultConfigs;
|
|
34
|
-
registerCustomConfig(name: string, schema: Schema, category: string
|
|
34
|
+
registerCustomConfig(name: string, schema: Schema, category: string): this;
|
|
35
35
|
getConfigRegistries(category?: string): InPageEditPreferenceUIRegistryItem[];
|
|
36
36
|
defineCategory(category: InPageEditPreferenceUICategory): this;
|
|
37
37
|
getConfigCategories(): InPageEditPreferenceUICategory[];
|
|
@@ -27,7 +27,7 @@ export declare class WikiMetadataService extends Service {
|
|
|
27
27
|
get metadataCacheId(): string;
|
|
28
28
|
fetchFromApi(): Promise<any>;
|
|
29
29
|
fetchFromCache(): Promise<WikiMetadata | null>;
|
|
30
|
-
saveToCache(data: WikiMetadata): Promise<import('./
|
|
30
|
+
saveToCache(data: WikiMetadata): Promise<import('./storage').IPEStorageRecord<WikiMetadata>>;
|
|
31
31
|
invalidateCache(): Promise<void>;
|
|
32
32
|
get _raw(): WikiMetadata;
|
|
33
33
|
get general(): import('../types/WikiMetadata').WikiSiteInfo;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Inject, InPageEdit, Service } from '../InPageEdit';
|
|
2
2
|
import { IWikiPage, WikiPageConstructor } from '../models/WikiPage';
|
|
3
3
|
import { PageInfo } from '../models/WikiPage/types/PageInfo';
|
|
4
|
+
import { IWikiTitle } from '../models/WikiTitle/index.js';
|
|
4
5
|
declare module '../InPageEdit' {
|
|
5
6
|
interface InPageEdit {
|
|
6
7
|
wikiPage: WikiPageService;
|
|
@@ -11,9 +12,8 @@ export declare class WikiPageService extends Service {
|
|
|
11
12
|
static readonly inject: Inject;
|
|
12
13
|
WikiPage: WikiPageConstructor;
|
|
13
14
|
constructor(ctx: InPageEdit);
|
|
14
|
-
readonly logger: import('@inpageedit/logger').Logger;
|
|
15
15
|
createInstance(payload: Record<string, any>, noCache?: boolean): Promise<IWikiPage>;
|
|
16
|
-
newFromTitle(title: string, converttitles?: boolean, rvsection?: number | string, noCache?: boolean): Promise<IWikiPage>;
|
|
16
|
+
newFromTitle(title: string | IWikiTitle, converttitles?: boolean, rvsection?: number | string, noCache?: boolean): Promise<IWikiPage>;
|
|
17
17
|
newFromPageId(pageid: number, rvsection?: number | string, noCache?: boolean): Promise<IWikiPage>;
|
|
18
18
|
newFromRevision(revid: number, rvsection?: number | string, noCache?: boolean): Promise<IWikiPage>;
|
|
19
19
|
newBlankPage(init?: Partial<PageInfo>): IWikiPage;
|
|
@@ -6,8 +6,9 @@ declare module '../InPageEdit' {
|
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
8
|
export interface WikiLinkMetadata {
|
|
9
|
-
title
|
|
10
|
-
pageId
|
|
9
|
+
title?: IWikiTitle;
|
|
10
|
+
pageId?: number;
|
|
11
|
+
revId?: number;
|
|
11
12
|
url: URL;
|
|
12
13
|
params: URLSearchParams;
|
|
13
14
|
hash: string;
|
|
@@ -20,9 +21,12 @@ export declare class WikiTitleService extends Service {
|
|
|
20
21
|
constructor(ctx: InPageEdit);
|
|
21
22
|
private readonly logger;
|
|
22
23
|
newTitle(title: string, namespace?: number): IWikiTitle;
|
|
24
|
+
newMainPageTitle(): IWikiTitle;
|
|
23
25
|
newTitleFromUrl(url: string | URL): Promise<IWikiTitle | null>;
|
|
24
|
-
private
|
|
26
|
+
private _cachedTitles;
|
|
27
|
+
private newTitleFromAnyId;
|
|
25
28
|
newTitleFromPageId(pageId: number): Promise<IWikiTitle | null>;
|
|
29
|
+
newTitleFromRevision(revId: number): Promise<IWikiTitle | null>;
|
|
26
30
|
/**
|
|
27
31
|
* Resolve **special** special pages to it's real target
|
|
28
32
|
*
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
export interface IDBIndexDef {
|
|
2
|
+
name: string;
|
|
3
|
+
keyPath: string | string[];
|
|
4
|
+
options?: IDBIndexParameters;
|
|
5
|
+
}
|
|
6
|
+
export interface EnsureStoreOptions {
|
|
7
|
+
/** keyPath for objectStore; default undefined (out-of-line keys) */
|
|
8
|
+
keyPath?: string | string[] | null;
|
|
9
|
+
/** autoIncrement for objectStore; default false */
|
|
10
|
+
autoIncrement?: boolean;
|
|
11
|
+
/** indexes to ensure exist on the store (missing ones will be created on upgrade) */
|
|
12
|
+
indexes?: IDBIndexDef[];
|
|
13
|
+
}
|
|
14
|
+
export interface IDBStoreHandle {
|
|
15
|
+
dbName: string;
|
|
16
|
+
storeName: string;
|
|
17
|
+
/** Always returns a *current* connection; no stale db caching leaks to callers. */
|
|
18
|
+
getDb(): Promise<IDBDatabase>;
|
|
19
|
+
}
|
|
20
|
+
export declare namespace IDBHelper {
|
|
21
|
+
/** Promisify IDBRequest */
|
|
22
|
+
function promisifyRequest<T = unknown>(req: IDBRequest<T>): Promise<T>;
|
|
23
|
+
/** Open a database with a cached long-lived connection. */
|
|
24
|
+
function openDatabase(dbName: string): Promise<IDBDatabase>;
|
|
25
|
+
/** Close a given database connection (and drop cache). */
|
|
26
|
+
function closeDatabase(dbName: string): Promise<void>;
|
|
27
|
+
/** Close all cached database connections. */
|
|
28
|
+
function closeAllDatabases(): Promise<void>;
|
|
29
|
+
/** Delete a database completely (closes cached connection first). */
|
|
30
|
+
function deleteDatabase(dbName: string): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Ensure an object store (and optional indexes) exist. If missing, bump version to create.
|
|
33
|
+
* Concurrent calls are serialized per db to avoid racing upgrades.
|
|
34
|
+
*/
|
|
35
|
+
function ensureStore(dbName: string, storeName: string, opts?: EnsureStoreOptions): Promise<IDBDatabase>;
|
|
36
|
+
/** Convenience: open & ensure store, return a store handle. */
|
|
37
|
+
function createStore(dbName: string, storeName: string, opts?: EnsureStoreOptions): Promise<IDBStoreHandle>;
|
|
38
|
+
/**
|
|
39
|
+
* Run a function inside a transaction on one object store.
|
|
40
|
+
* Auto-recovers from transient IDB failures by reopening/ensuring and retrying (limited attempts).
|
|
41
|
+
*/
|
|
42
|
+
function withObjectStore<T>(handle: IDBStoreHandle, mode: IDBTransactionMode, fn: (os: IDBObjectStore) => Promise<T> | T,
|
|
43
|
+
/** customize retry attempts/backoff if needed */
|
|
44
|
+
retry?: {
|
|
45
|
+
attempts?: number;
|
|
46
|
+
baseDelayMs?: number;
|
|
47
|
+
}): Promise<T>;
|
|
48
|
+
function get<T = unknown>(handle: IDBStoreHandle, key: IDBValidKey): Promise<T | undefined>;
|
|
49
|
+
function set(handle: IDBStoreHandle, key: IDBValidKey, value: unknown): Promise<void>;
|
|
50
|
+
function del(handle: IDBStoreHandle, key: IDBValidKey): Promise<void>;
|
|
51
|
+
function clear(handle: IDBStoreHandle): Promise<void>;
|
|
52
|
+
function entries(handle: IDBStoreHandle, batchSize?: number): AsyncIterable<[IDBValidKey, any]>;
|
|
53
|
+
function keys(handle: IDBStoreHandle, batchSize?: number): AsyncIterable<IDBValidKey>;
|
|
54
|
+
}
|
|
55
|
+
export interface IDBStoreOptions {
|
|
56
|
+
/** 每次迭代拉取的批大小;兼容 iterBtch/iterBatch 两种写法 */
|
|
57
|
+
iterBatch?: number;
|
|
58
|
+
/** 建库/建表定义(可选)。若设置了 keyPath,则视为“内联主键”模式 */
|
|
59
|
+
ensure?: EnsureStoreOptions;
|
|
60
|
+
/** 重试参数(可选) */
|
|
61
|
+
retry?: {
|
|
62
|
+
attempts?: number;
|
|
63
|
+
baseDelayMs?: number;
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export declare class IDBStorage<K extends IDBValidKey = IDBValidKey, V = any> implements AsyncIterable<[K, V]> {
|
|
67
|
+
readonly dbName: string;
|
|
68
|
+
readonly storeName: string;
|
|
69
|
+
private readonly iterBatch;
|
|
70
|
+
private readonly retry?;
|
|
71
|
+
private readonly inlineKey;
|
|
72
|
+
private readonly idbStoreHandle;
|
|
73
|
+
constructor(dbName: string, storeName: string, options?: IDBStoreOptions);
|
|
74
|
+
private handle;
|
|
75
|
+
get(key: K): Promise<V | undefined>;
|
|
76
|
+
set(key: K, value: V): Promise<void>;
|
|
77
|
+
delete(key: K): Promise<void>;
|
|
78
|
+
clear(): Promise<void>;
|
|
79
|
+
has(key: K): Promise<boolean>;
|
|
80
|
+
count(): Promise<number>;
|
|
81
|
+
entries(): AsyncIterable<[K, V]>;
|
|
82
|
+
keys(): AsyncIterable<K>;
|
|
83
|
+
values(): AsyncIterable<V>;
|
|
84
|
+
[Symbol.asyncIterator](): AsyncIterator<[K, V]>;
|
|
85
|
+
forEach(cb: (value: V, key: K, store: IDBStorage<K, V>) => void | Promise<void>): Promise<void>;
|
|
86
|
+
setMany(entries: Iterable<[K, V]> | AsyncIterable<[K, V]>): Promise<void>;
|
|
87
|
+
deleteMany(keys: Iterable<K> | AsyncIterable<K>): Promise<void>;
|
|
88
|
+
tx<T>(mode: IDBTransactionMode, fn: (os: IDBObjectStore) => Promise<T> | T): Promise<T>;
|
|
89
|
+
close(): Promise<void>;
|
|
90
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { InPageEdit, Service } from '../../InPageEdit.js';
|
|
2
|
+
import { IDBStorage } from './IDBStorage.js';
|
|
3
|
+
declare module '../../InPageEdit' {
|
|
4
|
+
interface InPageEdit {
|
|
5
|
+
storage: StorageService;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export declare class StorageService extends Service {
|
|
9
|
+
constructor(ctx: InPageEdit);
|
|
10
|
+
createDatabse<T = any>(storeName: string, ttl?: number, version?: number): IDBStorageManager<T>;
|
|
11
|
+
}
|
|
12
|
+
export interface IPEStorageRecord<T = any> {
|
|
13
|
+
/** last update time */
|
|
14
|
+
time: number;
|
|
15
|
+
/** stored value */
|
|
16
|
+
value: T;
|
|
17
|
+
/** version */
|
|
18
|
+
version?: number;
|
|
19
|
+
}
|
|
20
|
+
export interface AbstactIPEStorageManager<T = unknown> {
|
|
21
|
+
get(key: string, ttl?: number, setter?: () => Promise<any> | any): Promise<T | null>;
|
|
22
|
+
set(key: string, value: null | undefined): Promise<void>;
|
|
23
|
+
set(key: string, value: T): Promise<IPEStorageRecord<T>>;
|
|
24
|
+
has(key: string, ttl?: number): Promise<boolean>;
|
|
25
|
+
delete(key: string): Promise<void>;
|
|
26
|
+
keys(): AsyncIterable<string>;
|
|
27
|
+
values(): AsyncIterable<IPEStorageRecord<T>>;
|
|
28
|
+
entries(): AsyncIterable<[string, IPEStorageRecord<T>]>;
|
|
29
|
+
clear(): Promise<this>;
|
|
30
|
+
}
|
|
31
|
+
export declare class IDBStorageManager<T = unknown> implements AbstactIPEStorageManager<T> {
|
|
32
|
+
readonly dbName: string;
|
|
33
|
+
readonly storeName: string;
|
|
34
|
+
ttl: number;
|
|
35
|
+
version?: number | undefined;
|
|
36
|
+
readonly db: IDBStorage<string, IPEStorageRecord<T>>;
|
|
37
|
+
keys: () => AsyncIterable<string>;
|
|
38
|
+
values: () => AsyncIterable<IPEStorageRecord<T>>;
|
|
39
|
+
entries: () => AsyncIterable<[string, IPEStorageRecord<T>]>;
|
|
40
|
+
constructor(dbName: string, storeName: string, ttl?: number, version?: number | undefined);
|
|
41
|
+
get(key: string, ttl?: number, setter?: () => Promise<T> | T): Promise<T | null>;
|
|
42
|
+
set(key: string, value: null | undefined): Promise<void>;
|
|
43
|
+
set(key: string, value: T): Promise<IPEStorageRecord<T>>;
|
|
44
|
+
has(key: string, ttl?: number): Promise<boolean>;
|
|
45
|
+
delete(key: string): Promise<void>;
|
|
46
|
+
private loadFromDB;
|
|
47
|
+
private checkIfExpired;
|
|
48
|
+
/**
|
|
49
|
+
* [DANGER] Use with caution!
|
|
50
|
+
* Delete all data from the database.
|
|
51
|
+
*/
|
|
52
|
+
clear(): Promise<this>;
|
|
53
|
+
}
|
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_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}:root{--ipe-modal-z: 1000;--ipe-modal-backdrop-bg: rgba(0, 0, 0, .5);--ipe-modal-bg: #ffffff;--ipe-modal-secondary-bg: #eaecf0;--ipe-modal-text: #111827;--ipe-modal-text--rgb: 17, 24, 39;--ipe-modal-muted: #6b7280;--ipe-modal-accent: #3b82f6;--ipe-modal-accent--rgb: 59, 130, 246;--ipe-modal-success: #10b981;--ipe-modal-info: #3b82f6;--ipe-modal-warning: #f59e0b;--ipe-modal-danger: #ef4444;--ipe-modal-danger--rgb: 239, 68, 68;--ipe-modal-border-color: #eaecf0;--ipe-modal-divider-color: #e5e7eb;--ipe-modal-radius: 8px;--ipe-modal-button-radius: 10px;--ipe-modal-shadow: 0 0 40px rgba(127, 127, 127, .5);--ipe-modal-spacing: 12px;--ipe-modal-viewport-gap-y: 20px;--ipe-modal-window-max-w: 96vw;--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) )}body.ipe-modal-no-scroll{overflow:hidden!important;touch-action:none;-webkit-overflow-scrolling:auto}.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;display:grid;align-items:start;justify-items:center;overflow:auto;opacity:0;transform:translateY(8px) scale(.98);transition:opacity .18s ease,transform .22s ease;pointer-events:none}.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-text);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-in-out 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:max(64%,860px)}.size--mediumToLarge{max-width:max(72%,1080px)}.size--large{max-width:max(80%,1200px)}.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 var(--ipe-modal-divider-color)}.ipe-modal-modal__title{font-size:1.125rem;font-weight:700;line-height:1;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-text)}.ipe-modal-modal__content{padding:var(--ipe-modal-spacing);overflow:visible;-webkit-overflow-scrolling:touch}.ipe-modal-modal__footer{background:var(--ipe-modal-secondary-bg);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 var(--ipe-modal-divider-color)}.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{--type-color: var(--ipe-modal-bg);--text-color: var(--ipe-modal-text);width:300px;border-radius:calc(var(--ipe-modal-radius) * .75);margin-top:0;margin-bottom:0;border:0;border-left:calc(var(--ipe-modal-radius) * .75) solid var(--type-color)}.ipe-modal-modal__window.plugin--toast.type-default{--type-color: var(--ipe-modal-secondary-bg)}.ipe-modal-modal__window.plugin--toast.type-info{--type-color: var(--ipe-modal-info);--text-color: #fff;--ipe-modal-muted: #fff}.ipe-modal-modal__window.plugin--toast.type-success{--type-color: var(--ipe-modal-success);--text-color: #fff;--ipe-modal-muted: #fff}.ipe-modal-modal__window.plugin--toast.type-warning{--type-color: var(--ipe-modal-warning);--text-color: #fff;--ipe-modal-muted: #fff}.ipe-modal-modal__window.plugin--toast.type-error{--type-color: var(--ipe-modal-danger);--text-color: #fff;--ipe-modal-muted: #fff}.ipe-modal-modal__window.plugin--toast .ipe-modal-modal__header{padding:.5em;background-color:var(--type-color);color:var(--text-color);border-bottom:0}.ipe-modal-modal__window.plugin--toast .ipe-modal-modal__header .ipe-modal-modal__title{display:flex;align-items:center}.ipe-modal-modal__window.plugin--toast .ipe-modal-modal__header .ipe-modal-modal__title .ipe-modal-notify-icon{margin-right:.5em;width:20px;height:20px}.ipe-modal-modal__window.plugin--toast .ipe-modal-modal__close{width:20px;height:20px;font-size:16px;color:var(--ipe-modal-muted)}.ipe-modal-modal__window.plugin--toast .ipe-modal-modal__content{padding:1em .5em}.ipe-modal-modal__window.plugin--toast .ipe-modal-modal__footer{padding:.5em;background-color:transparent;border-top:0}.ipe-modal-modal__window.plugin--toast .ipe-modal-btn{padding:.25em .75em!important}.ipe-modal-btn{--accent-color: #fff;--text-color: var(--ipe-modal-text);--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;line-height:1}.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)}.ipe-modal-modal__window.size--dialog .ipe-modal-modal__footer,.ipe-modal-modal__window.compact-buttons .ipe-modal-modal__footer{background-color:transparent}@keyframes ipe-modal-fade-in{0%{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}@keyframes ipe-modal-fade-out{0%{transform:scale(1);opacity:1}to{transform:scale(.85);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;--textarea-background: var(--color-bg-lighter);--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);background:var(--textarea-background);resize:vertical;border:var(--border-width) solid var(--color-border-input);border-radius:var(--border-radius-input);transition:border 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:border 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}.theme-ipe svg.icon{height:1em;height:1lh;width:auto;vertical-align:middle}svg.ipe-icon{height:1em;height:1lh;width:auto;vertical-align:middle}@media (min-width: 768px){.skin-moeskin #ipe-edit-toolbox{bottom:5rem}}._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}.theme-ipe.diff-type-table .diff-title{line-height:1.5}.theme-ipe.diff-type-table .mw-diff-title--navigation{text-align:center;color:#666}#ipe-edit-toolbox{font-size:16px;position:fixed;right:2em;bottom:2em;user-select:none;z-index:42}@media print{#ipe-edit-toolbox{display:none}}#ipe-edit-toolbox .ipe-toolbox-btn{color:#fff;background:#bebebe;height:1.5em;width:1.5em;font-size:1.5em;line-height:1;border:0;border-radius:50%;box-shadow:0 0 8px #7f7f7f80;text-shadow:0 0 2px #4c4c4c;padding:0;margin:0;cursor:pointer;display:flex;align-items:center;justify-content:center}#ipe-edit-toolbox .ipe-toolbox-btn svg,#ipe-edit-toolbox .ipe-toolbox-btn img{line-height:1;width:1em;height:1em;vertical-align:middle}#ipe-edit-toolbox .ipe-toolbox-btn:disabled{cursor:not-allowed;filter:grayscale(50%) opacity(.75)}#ipe-edit-toolbox #toolbox-toggler{position:absolute;right:0;bottom:0;width:2em;height:2em;background:#3f51b5;font-size:1.5em;line-height:1;margin:0;transition:transform .3s cubic-bezier(.68,-.55,.27,1.55);transform:rotate(0)}#ipe-edit-toolbox.is-persistent #toolbox-toggler{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:cubic-bezier(.68,-.55,.27,1.55);transition-duration:.3s;transition-delay:var(--transition-delay, 0s);opacity:0}#ipe-edit-toolbox.is-persistent .btn-group .btn-tip-group,#ipe-edit-toolbox.is-hovered .btn-group .btn-tip-group{transform:translateZ(0);opacity:1}#ipe-edit-toolbox:not(.is-persistent):not(.is-hovered) .btn-group .btn-tip-group{transition-delay:calc(var(--max-transition-delay) - var(--transition-delay))}#ipe-edit-toolbox.is-persistent .btn-group,#ipe-edit-toolbox.is-hovered .btn-group{transform:scaleZ(1)}#ipe-edit-toolbox .ipe-toolbox-btn#toolbox-toggler.click{box-shadow:0 0 4px gray,0 0 10px #444 inset}#ipe-edit-toolbox .ipe-toolbox-btn#ipe-toolbox__quick-edit-btn{background:#2196f3}#ipe-edit-toolbox .ipe-toolbox-btn#ipe-toolbox__quick-move-btn{background:#00bcd4}#ipe-edit-toolbox .ipe-toolbox-btn#ipe-toolbox__quick-redirect-btn{background:#009688}#ipe-edit-toolbox .ipe-toolbox-btn#ipe-toolbox__quick-delete-btn{background:#e91e63}#ipe-edit-toolbox .ipe-toolbox-btn#ipe-toolbox__preferences-btn{background:#ffc107}#ipe-edit-toolbox .btn-group{position:absolute;display:flex;gap:.5em;list-style:none;margin:0;pointer-events:none}#ipe-edit-toolbox .btn-group.group1{bottom:3.5em;right:.375em;flex-direction:column}#ipe-edit-toolbox .btn-group.group2{bottom:.25em;right:3.375em}#ipe-edit-toolbox.is-persistent .btn-group,#ipe-edit-toolbox.is-hovered .btn-group{visibility:visible;pointer-events:auto}#ipe-edit-toolbox .btn-tip-group .btn-tip{position:absolute;text-align:center;font-size:12px;white-space:nowrap;left:50%;bottom:calc(100% + .5em);transform:translate(-50%);background:#fff;color:#252525;padding:.2em .5em;box-shadow:0 0 .5em #7f7f7f80;border-radius:.5em;pointer-events:none;opacity:0;transition:opacity .2s ease-in-out,bottom .2s ease-in-out}#ipe-edit-toolbox .btn-tip-group:hover .btn-tip{opacity:1;bottom:calc(100% + 1em)}#ipe-edit-toolbox .btn-tip-group .btn-tip:after{content:"";display:block;border:5px solid transparent;border-radius:2px;border-right-color:#fff;border-bottom-color:#fff;position:absolute;bottom:-8px;left:50%;transform:rotate(45deg) translate(-50%)}.tabs[data-v-571b939a]{--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-571b939a]{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-571b939a]{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}}._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}:root{--ipe-modal-z: 1000;--ipe-modal-backdrop-bg: rgba(0, 0, 0, .5);--ipe-modal-bg: #ffffff;--ipe-modal-secondary-bg: #eaecf0;--ipe-modal-text: #111827;--ipe-modal-text--rgb: 17, 24, 39;--ipe-modal-muted: #6b7280;--ipe-modal-accent: #3b82f6;--ipe-modal-accent--rgb: 59, 130, 246;--ipe-modal-success: #10b981;--ipe-modal-info: #3b82f6;--ipe-modal-warning: #f59e0b;--ipe-modal-danger: #ef4444;--ipe-modal-danger--rgb: 239, 68, 68;--ipe-modal-border-color: #eaecf0;--ipe-modal-divider-color: #e5e7eb;--ipe-modal-radius: 8px;--ipe-modal-button-radius: 6px;--ipe-modal-shadow: 0 0 40px rgba(127, 127, 127, .5);--ipe-modal-spacing: 12px;--ipe-modal-viewport-gap-y: 20px;--ipe-modal-window-max-w: 96vw;--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) )}body.ipe-modal-no-scroll{overflow:hidden!important;touch-action:none;-webkit-overflow-scrolling:auto}.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;display:grid;align-items:start;justify-items:center;overflow:auto;opacity:0;transform:translateY(8px) scale(.98);transition:opacity .18s ease,transform .22s ease;pointer-events:none}.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-text);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-in-out 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:max(64%,860px)}.size--mediumToLarge{max-width:max(72%,1080px)}.size--large{max-width:max(80%,1200px)}.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 var(--ipe-modal-divider-color)}.ipe-modal-modal__title{font-size:1.125rem;font-weight:700;line-height:1;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-text)}.ipe-modal-modal__content{padding:var(--ipe-modal-spacing);overflow:visible;-webkit-overflow-scrolling:touch}.ipe-modal-modal__footer{background:var(--ipe-modal-secondary-bg);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 var(--ipe-modal-divider-color)}.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{--type-color: var(--ipe-modal-bg);--text-color: var(--ipe-modal-text);width:300px;border-radius:calc(var(--ipe-modal-radius) * .75);margin-top:0;margin-bottom:0;border:0;border-left:calc(var(--ipe-modal-radius) * .75) solid var(--type-color)}.ipe-modal-modal__window.plugin--toast.type-default{--type-color: var(--ipe-modal-secondary-bg)}.ipe-modal-modal__window.plugin--toast.type-info{--type-color: var(--ipe-modal-info);--text-color: #fff;--ipe-modal-muted: #fff}.ipe-modal-modal__window.plugin--toast.type-success{--type-color: var(--ipe-modal-success);--text-color: #fff;--ipe-modal-muted: #fff}.ipe-modal-modal__window.plugin--toast.type-warning{--type-color: var(--ipe-modal-warning);--text-color: #fff;--ipe-modal-muted: #fff}.ipe-modal-modal__window.plugin--toast.type-error{--type-color: var(--ipe-modal-danger);--text-color: #fff;--ipe-modal-muted: #fff}.ipe-modal-modal__window.plugin--toast .ipe-modal-modal__header{padding:.5em;background-color:var(--type-color);color:var(--text-color);border-bottom:0}.ipe-modal-modal__window.plugin--toast .ipe-modal-modal__header .ipe-modal-modal__title{display:flex;align-items:center}.ipe-modal-modal__window.plugin--toast .ipe-modal-modal__header .ipe-modal-modal__title .ipe-modal-notify-icon{margin-right:.5em;width:20px;height:20px}.ipe-modal-modal__window.plugin--toast .ipe-modal-modal__close{width:20px;height:20px;font-size:16px;color:var(--ipe-modal-muted)}.ipe-modal-modal__window.plugin--toast .ipe-modal-modal__content{padding:1em .5em}.ipe-modal-modal__window.plugin--toast .ipe-modal-modal__footer{padding:.5em;background-color:transparent;border-top:0}.ipe-modal-modal__window.plugin--toast .ipe-modal-btn{padding:.25em .75em!important}.ipe-modal-btn{--accent-color: #fff;--text-color: var(--ipe-modal-text);--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;line-height:1}.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-text{border:0;color:var(--ipe-modal-text)}.ipe-modal-btn.is-ghost.is-primary,.ipe-modal-btn.is-text.is-primary{color:var(--ipe-modal-accent)}.ipe-modal-btn.is-ghost.is-danger,.ipe-modal-btn.is-text.is-danger{color:var(--ipe-modal-danger)}.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)}.ipe-modal-modal__window.size--dialog .ipe-modal-modal__footer,.ipe-modal-modal__window.compact-buttons .ipe-modal-modal__footer{background-color:transparent}@keyframes ipe-modal-fade-in{0%{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}@keyframes ipe-modal-fade-out{0%{transform:scale(1);opacity:1}to{transform:scale(.85);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;--textarea-background: var(--color-bg-lighter);--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);background:var(--textarea-background);resize:vertical;border:var(--border-width) solid var(--color-border-input);border-radius:var(--border-radius-input);transition:border 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:border 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}.theme-ipe svg.icon{height:1em;height:1lh;width:auto;vertical-align:middle}svg.ipe-icon{height:1em;height:1lh;width:auto;vertical-align:middle}@media (min-width: 768px){.skin-moeskin #ipe-edit-toolbox{bottom:5rem}}.tabs[data-v-cd93309f]{--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-cd93309f]{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-cd93309f]{color:var(--active-color);box-shadow:inset 0 -.15em 0 0 var(--active-color)}.theme-ipe.diff-type-table .diff-title{line-height:1.5}.theme-ipe.diff-type-table .mw-diff-title--navigation{text-align:center;color:#666}#ipe-edit-toolbox{font-size:16px;position:fixed;right:2em;bottom:2em;user-select:none;z-index:42}@media print{#ipe-edit-toolbox{display:none}}#ipe-edit-toolbox .ipe-toolbox-btn{color:#fff;background:#bebebe;height:1.5em;width:1.5em;font-size:1.5em;line-height:1;border:0;border-radius:50%;box-shadow:0 0 8px #7f7f7f80;text-shadow:0 0 2px #4c4c4c;padding:0;margin:0;cursor:pointer;display:flex;align-items:center;justify-content:center}#ipe-edit-toolbox .ipe-toolbox-btn svg,#ipe-edit-toolbox .ipe-toolbox-btn img{line-height:1;width:1em;height:1em;vertical-align:middle}#ipe-edit-toolbox .ipe-toolbox-btn:disabled{cursor:not-allowed;filter:grayscale(50%) opacity(.75)}#ipe-edit-toolbox #toolbox-toggler{position:absolute;right:0;bottom:0;width:2em;height:2em;background:#3f51b5;font-size:1.5em;line-height:1;margin:0;transition:transform .3s cubic-bezier(.68,-.55,.27,1.55);transform:rotate(0)}#ipe-edit-toolbox.is-persistent #toolbox-toggler{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:cubic-bezier(.68,-.55,.27,1.55);transition-duration:.3s;transition-delay:var(--transition-delay, 0s);opacity:0}#ipe-edit-toolbox.is-persistent .btn-group .btn-tip-group,#ipe-edit-toolbox.is-hovered .btn-group .btn-tip-group{transform:translateZ(0);opacity:1}#ipe-edit-toolbox:not(.is-persistent):not(.is-hovered) .btn-group .btn-tip-group{transition-delay:calc(var(--max-transition-delay) - var(--transition-delay))}#ipe-edit-toolbox.is-persistent .btn-group,#ipe-edit-toolbox.is-hovered .btn-group{transform:scaleZ(1)}#ipe-edit-toolbox .ipe-toolbox-btn#toolbox-toggler.click{box-shadow:0 0 4px gray,0 0 10px #444 inset}#ipe-edit-toolbox .ipe-toolbox-btn#ipe-toolbox__quick-edit-btn{background:#2196f3}#ipe-edit-toolbox .ipe-toolbox-btn#ipe-toolbox__quick-move-btn{background:#00bcd4}#ipe-edit-toolbox .ipe-toolbox-btn#ipe-toolbox__quick-redirect-btn{background:#009688}#ipe-edit-toolbox .ipe-toolbox-btn#ipe-toolbox__quick-delete-btn{background:#e91e63}#ipe-edit-toolbox .ipe-toolbox-btn#ipe-toolbox__preferences-btn{background:#ffc107}#ipe-edit-toolbox .btn-group{position:absolute;display:flex;gap:.5em;list-style:none;margin:0;pointer-events:none}#ipe-edit-toolbox .btn-group.group1{bottom:3.5em;right:.375em;flex-direction:column}#ipe-edit-toolbox .btn-group.group2{bottom:.25em;right:3.375em}#ipe-edit-toolbox.is-persistent .btn-group,#ipe-edit-toolbox.is-hovered .btn-group{visibility:visible;pointer-events:auto}#ipe-edit-toolbox .btn-tip-group .btn-tip{position:absolute;text-align:center;font-size:12px;white-space:nowrap;left:50%;bottom:calc(100% + .5em);transform:translate(-50%);background:#fff;color:#252525;padding:.2em .5em;box-shadow:0 0 .5em #7f7f7f80;border-radius:.5em;pointer-events:none;opacity:0;transition:opacity .2s ease-in-out,bottom .2s ease-in-out}#ipe-edit-toolbox .btn-tip-group:hover .btn-tip{opacity:1;bottom:calc(100% + 1em)}#ipe-edit-toolbox .btn-tip-group .btn-tip:after{content:"";display:block;border:5px solid transparent;border-radius:2px;border-right-color:#fff;border-bottom-color:#fff;position:absolute;bottom:-8px;left:50%;transform:rotate(45deg) translate(-50%)}
|
package/dist/utils/vueHooks.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { InPageEdit } from '../InPageEdit';
|
|
2
|
-
import { App } from 'vue';
|
|
2
|
+
import { App, createApp } from 'vue';
|
|
3
3
|
export declare const IPEInjectKey: unique symbol;
|
|
4
4
|
export declare const injectIPE: (ipe: InPageEdit, app?: App) => InPageEdit;
|
|
5
5
|
export declare const useIPE: () => InPageEdit;
|
|
6
|
+
export declare const createVueAppWithIPE: (ipe: InPageEdit, ...args: Parameters<typeof createApp>) => App<Element>;
|