@inpageedit/core 0.12.1 → 0.13.0-alpha.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.
Files changed (113) hide show
  1. package/dist/BasePlugin-Bf2UuIHF.js +64 -0
  2. package/dist/BasePlugin-Bf2UuIHF.js.map +1 -0
  3. package/dist/{PluginPrefSync-Ziogy_o-.js → PluginPrefSync-Dn1Xsiqz.js} +6 -4
  4. package/dist/PluginPrefSync-Dn1Xsiqz.js.map +1 -0
  5. package/dist/{PluginStoreApp-Bnvyl-Oc.js → PluginStoreApp-CpOLArL7.js} +2 -2
  6. package/dist/{PluginStoreApp-Bnvyl-Oc.js.map → PluginStoreApp-CpOLArL7.js.map} +1 -1
  7. package/dist/WatchlistAction-BbNAyryN.js +5 -0
  8. package/dist/WatchlistAction-BbNAyryN.js.map +1 -0
  9. package/dist/endpoints-DgyuoRZd.js +1507 -0
  10. package/dist/endpoints-DgyuoRZd.js.map +1 -0
  11. package/dist/{index-BvuaLEFc.js → index-2RfILgXm.js} +11 -10
  12. package/dist/{index-BvuaLEFc.js.map → index-2RfILgXm.js.map} +1 -1
  13. package/dist/{index-eARjMi7f.js → index-BCdABp0e.js} +23 -22
  14. package/dist/{index-eARjMi7f.js.map → index-BCdABp0e.js.map} +1 -1
  15. package/dist/{index-zHTGCjfF.js → index-BJ7_Q1mB.js} +8 -7
  16. package/dist/{index-zHTGCjfF.js.map → index-BJ7_Q1mB.js.map} +1 -1
  17. package/dist/{index-Dnmv-xDn.js → index-BNh95-x2.js} +37 -49
  18. package/dist/index-BNh95-x2.js.map +1 -0
  19. package/dist/{index-B3FUDhxl.js → index-BQ-cHWkJ.js} +15 -16
  20. package/dist/{index-B3FUDhxl.js.map → index-BQ-cHWkJ.js.map} +1 -1
  21. package/dist/{index-B3YJdjxo.js → index-BwdWyHLe.js} +77 -76
  22. package/dist/{index-B3YJdjxo.js.map → index-BwdWyHLe.js.map} +1 -1
  23. package/dist/{index-Ccr3YhkP.js → index-CCRMmnwk.js} +10 -9
  24. package/dist/{index-Ccr3YhkP.js.map → index-CCRMmnwk.js.map} +1 -1
  25. package/dist/{index-Bd70aDMT.js → index-CnIpUF9x.js} +7 -6
  26. package/dist/{index-Bd70aDMT.js.map → index-CnIpUF9x.js.map} +1 -1
  27. package/dist/{index-D5zX93bn.js → index-CyG7_IYz.js} +47 -45
  28. package/dist/{index-D5zX93bn.js.map → index-CyG7_IYz.js.map} +1 -1
  29. package/dist/index-DdTiZqwt.js +3744 -0
  30. package/dist/index-DdTiZqwt.js.map +1 -0
  31. package/dist/{index-BRjEc8b8.js → index-eSlbrNqF.js} +6 -6
  32. package/dist/{index-BRjEc8b8.js.map → index-eSlbrNqF.js.map} +1 -1
  33. package/dist/index.d.ts +1723 -31
  34. package/dist/index.js +73 -9
  35. package/dist/index.js.map +1 -1
  36. package/dist/models/index.js +486 -0
  37. package/dist/models/index.js.map +1 -0
  38. package/dist/plugins/index.js +23 -0
  39. package/dist/plugins/index.js.map +1 -0
  40. package/dist/services/index.js +16 -0
  41. package/dist/services/index.js.map +1 -0
  42. package/dist/style.css +1 -1
  43. package/lib/index.umd.js +10 -10
  44. package/lib/index.umd.js.map +1 -1
  45. package/package.json +22 -25
  46. package/dist/InPageEdit.d.ts +0 -42
  47. package/dist/PluginPrefSync-Ziogy_o-.js.map +0 -1
  48. package/dist/__test__/utils/constants.d.ts +0 -3
  49. package/dist/components/ActionButton.d.ts +0 -6
  50. package/dist/components/CheckBox.d.ts +0 -10
  51. package/dist/components/Icon/IconEdit.d.ts +0 -2
  52. package/dist/components/Icon/IconQuickEdit.d.ts +0 -2
  53. package/dist/components/InputBox.d.ts +0 -11
  54. package/dist/components/MBox/index.d.ts +0 -14
  55. package/dist/components/MwUserLinks.d.ts +0 -6
  56. package/dist/components/ProgressBar/index.d.ts +0 -7
  57. package/dist/components/RadioBox.d.ts +0 -10
  58. package/dist/components/TabView/index.d.ts +0 -19
  59. package/dist/components/TwinSwapInput/index.d.ts +0 -19
  60. package/dist/components/index.d.ts +0 -8
  61. package/dist/components/utils.d.ts +0 -4
  62. package/dist/constants/endpoints.d.ts +0 -8
  63. package/dist/decorators/Preferences.d.ts +0 -35
  64. package/dist/index-DgQNTfPR.js +0 -5829
  65. package/dist/index-DgQNTfPR.js.map +0 -1
  66. package/dist/index-Dnmv-xDn.js.map +0 -1
  67. package/dist/models/MemoryStorage.d.ts +0 -10
  68. package/dist/models/WikiPage/index.d.ts +0 -76
  69. package/dist/models/WikiPage/types/PageInfo.d.ts +0 -58
  70. package/dist/models/WikiPage/types/PageParseData.d.ts +0 -17
  71. package/dist/models/WikiPage/types/WatchlistAction.d.ts +0 -6
  72. package/dist/models/WikiTitle/index.d.ts +0 -89
  73. package/dist/models/WikiTitle/index.spec.d.ts +0 -1
  74. package/dist/plugins/BasePlugin.d.ts +0 -25
  75. package/dist/plugins/_debug/index.d.ts +0 -8
  76. package/dist/plugins/analytics/index.d.ts +0 -41
  77. package/dist/plugins/in-article-links/index.d.ts +0 -44
  78. package/dist/plugins/plugin-store/index.d.ts +0 -56
  79. package/dist/plugins/plugin-store/schema.d.ts +0 -41
  80. package/dist/plugins/preferences-ui/PluginPrefSync.d.ts +0 -28
  81. package/dist/plugins/preferences-ui/index.d.ts +0 -48
  82. package/dist/plugins/quick-diff/components/DiffTable.d.ts +0 -23
  83. package/dist/plugins/quick-diff/index.d.ts +0 -85
  84. package/dist/plugins/quick-edit/index.d.ts +0 -79
  85. package/dist/plugins/quick-move/index.d.ts +0 -47
  86. package/dist/plugins/quick-preview/index.d.ts +0 -37
  87. package/dist/plugins/quick-redirect/index.d.ts +0 -48
  88. package/dist/plugins/toolbox/index.d.ts +0 -65
  89. package/dist/polyfills/Promise.withResolvers.d.ts +0 -5
  90. package/dist/polyfills/index.d.ts +0 -0
  91. package/dist/services/ApiService.d.ts +0 -14
  92. package/dist/services/CurrentPageService.d.ts +0 -28
  93. package/dist/services/ModalService.d.ts +0 -27
  94. package/dist/services/PreferencesService.d.ts +0 -94
  95. package/dist/services/ResourceLoaderService.d.ts +0 -17
  96. package/dist/services/WikiMetadataService.d.ts +0 -108
  97. package/dist/services/WikiPageService.d.ts +0 -20
  98. package/dist/services/WikiTitleService.d.ts +0 -70
  99. package/dist/services/storage/index.d.ts +0 -40
  100. package/dist/services/storage/managers/IDBStorageManager.d.ts +0 -28
  101. package/dist/services/storage/managers/LocalStorageManager.d.ts +0 -27
  102. package/dist/types/WikiMetadata.d.ts +0 -131
  103. package/dist/utils/computeable.d.ts +0 -2
  104. package/dist/utils/defineAsyncPlugin.d.ts +0 -2
  105. package/dist/utils/interpolate.d.ts +0 -20
  106. package/dist/utils/interpolate.spec.d.ts +0 -1
  107. package/dist/utils/makeCallable.d.ts +0 -3
  108. package/dist/utils/noop.d.ts +0 -1
  109. package/dist/utils/sleep.d.ts +0 -1
  110. package/dist/utils/string.d.ts +0 -7
  111. package/dist/utils/url.d.ts +0 -24
  112. package/dist/utils/vueHooks.d.ts +0 -6
  113. package/dist/utils/vueReactivity.d.ts +0 -2
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-Dnmv-xDn.js","sources":["../src/plugins/quick-preview/index.tsx"],"sourcesContent":["import { Inject, InPageEdit, Schema } from '@/InPageEdit'\nimport { type QuickEditEventPayload } from '@/plugins/quick-edit'\nimport { IWikiPage } from '@/models/WikiPage'\nimport { MwApiParams } from 'wiki-saikou'\nimport { PageParseData } from '@/models/WikiPage/types/PageParseData'\nimport { IPEModal, IPEModalOptions } from '@inpageedit/modal'\nimport { QuickDeleteInitPayload } from '../quick-delete/index.js'\n\ninterface QuickPreviewEventPayload {\n ctx: InPageEdit\n modal: IPEModal\n wikiPage: IWikiPage\n text: string\n parseData: PageParseData\n}\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n quickPreview: PluginQuickPreview & {\n // for backward compatibility\n (\n ...args: Parameters<PluginQuickPreview['previewWikitext']>\n ): ReturnType<PluginQuickPreview['previewWikitext']>\n }\n }\n interface Events {\n 'quick-preview/show-modal'(payload: Omit<QuickPreviewEventPayload, 'parseData'>): void\n 'quick-preview/loaded'(payload: QuickPreviewEventPayload): void\n }\n interface PreferencesMap {\n 'quickPreview.keyshortcut.quickEdit': string\n 'quickPreview.keyshortcut.quickDelete': string\n }\n}\n\n@Inject(['api', 'wikiPage', 'modal', 'preferences'])\n@RegisterPreferences(\n Schema.object({\n 'quickPreview.keyshortcut': Schema.string()\n .default('ctrl-p')\n .description('Key shortcut to open quick preview in quick edit modal'),\n })\n .extra('category', 'editor')\n .description('Quick preview options')\n)\nexport class PluginQuickPreview extends BasePlugin {\n constructor(public ctx: InPageEdit) {\n super(ctx, {}, 'quickPreview')\n this.ctx.set('quickPreview', makeCallable(this, 'previewWikitext'))\n }\n\n protected start(): Promise<void> | void {\n this.ctx.on('quick-edit/wiki-page', this.injectQuickEdit.bind(this))\n this.ctx.on('quick-delete/wiki-page', this.injectQuickDelete.bind(this))\n }\n\n protected stop(): Promise<void> | void {}\n\n previewWikitext(\n text: string,\n params?: MwApiParams,\n wikiPage?: IWikiPage,\n modal?: IPEModal,\n modalOptions?: Partial<IPEModalOptions>\n ) {\n wikiPage ||= this.ctx.wikiPage.newBlankPage({\n title: 'API',\n })\n\n if (!modal || modal.isDestroyed) {\n modal = this.ctx.modal\n .createObject({\n className: 'in-page-edit ipe-quickPreview',\n sizeClass: 'large',\n center: false,\n ...modalOptions,\n })\n .init()\n }\n\n modal.show()\n modal.setTitle('Preview - Loading...')\n modal.setContent(<ProgressBar />)\n modal.bringToFront()\n this.ctx.emit('quick-preview/show-modal', {\n ctx: this.ctx,\n text,\n modal,\n wikiPage,\n })\n\n wikiPage\n .preview(text, params)\n .then((ret) => {\n const {\n data: { parse },\n } = ret\n modal.setTitle(`Preview - ${parse.title}`)\n let outputRef: HTMLElement | null = null\n modal.setContent(\n (\n <section>\n <div\n ref={(el) => (outputRef = el)}\n className=\"mw-parser-output\"\n innerHTML={parse.text}\n ></div>\n </section>\n ) as HTMLElement\n )\n window.mw?.hook('wikipage.content').fire($(outputRef!))\n this.ctx.emit('quick-preview/loaded', {\n ctx: this.ctx,\n modal,\n wikiPage,\n text,\n parseData: parse,\n })\n })\n .catch((error) => {\n modal.setTitle('Preview - Failed')\n modal.setContent(\n <>\n <p>Failed to preview</p>\n <p>{error instanceof Error ? error.message : String(error)}</p>\n </>\n )\n })\n\n return modal\n }\n\n private async injectQuickEdit({ options, modal, wikiPage }: QuickEditEventPayload) {\n let latestPreviewModal: IPEModal | undefined = undefined\n modal.addButton(\n {\n label: 'Preview',\n side: 'left',\n className: 'btn btn-secondary',\n keyPress:\n (await this.ctx.preferences.get('quickPreview.keyshortcut.quickEdit')) || undefined,\n method: () => {\n let wikitext =\n (modal.get$content().querySelector<HTMLTextAreaElement>('textarea[name=\"text\"]')\n ?.value as string) || ''\n if (options.section === 'new') {\n const title = modal\n .get$content()\n .querySelector<HTMLInputElement>('input[name=\"summary\"]')?.value\n if (title) {\n wikitext = `==${title}==\\n${wikitext}`\n }\n }\n\n latestPreviewModal = this.previewWikitext(\n wikitext,\n undefined,\n wikiPage,\n latestPreviewModal,\n {\n backdrop: false,\n draggable: true,\n }\n )\n },\n },\n 1\n )\n modal.on(modal.Event.Close, () => {\n latestPreviewModal?.destroy()\n latestPreviewModal = undefined\n })\n }\n\n private injectQuickDelete({ ctx, modal, wikiPage }: QuickDeleteInitPayload) {\n modal.addButton(\n {\n label: 'Preview',\n side: 'left',\n className: 'btn btn-secondary',\n method: () => {\n this.logger.warn('To be implemented: preview wikitext for quick delete')\n },\n },\n 2\n )\n }\n}\n"],"names":["_PluginQuickPreview_decorators","_init","_a","Inject","RegisterPreferences","Schema","PluginQuickPreview","BasePlugin","ctx","makeCallable","text","params","wikiPage","modal","modalOptions","jsx","ProgressBar","ret","parse","outputRef","el","error","jsxs","Fragment","options","latestPreviewModal","wikitext","title","__decoratorStart","__decorateElement","__runInitializers"],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- export declare class MemoryStorage implements Storage {
2
- private values;
3
- get length(): number;
4
- clear(): void;
5
- getItem(key: string): string | null;
6
- setItem(key: string, value: string): void;
7
- removeItem(key: string): void;
8
- key(index: number): string | null;
9
- }
10
- export declare const useMemoryStorage: () => MemoryStorage;
@@ -1,76 +0,0 @@
1
- import { PageInfo } from './types/PageInfo';
2
- import { PageParseData } from './types/PageParseData';
3
- import { WatchlistAction } from './types/WatchlistAction';
4
- import { MediaWikiApi, MwApiParams, MwApiResponse, FexiosFinalContext } from 'wiki-saikou/browser';
5
- export interface WikiPageEditPayload {
6
- text?: string;
7
- prependtext?: string;
8
- appendtext?: string;
9
- summary?: string;
10
- watchlist?: WatchlistAction;
11
- section?: number | 'new' | undefined;
12
- }
13
- export interface IWikiPage {
14
- pageInfo: PageInfo;
15
- parse(params?: MwApiParams): Promise<FexiosFinalContext<MwApiResponse<{
16
- parse: PageParseData;
17
- }>>>;
18
- preview(text: string, params?: MwApiParams): Promise<FexiosFinalContext<MwApiResponse<{
19
- parse: PageParseData;
20
- }>>>;
21
- edit(payload: WikiPageEditPayload, params?: MwApiParams): Promise<FexiosFinalContext<MwApiResponse<{
22
- success: boolean;
23
- }>>>;
24
- createOnly(payload: {
25
- text: string;
26
- } & Pick<WikiPageEditPayload, 'summary' | 'watchlist'>, params?: MwApiParams): Promise<FexiosFinalContext<MwApiResponse<{
27
- success: boolean;
28
- }>>>;
29
- delete(reason?: string, params?: MwApiParams): Promise<FexiosFinalContext<MwApiResponse<{
30
- delete: {
31
- title: string;
32
- reason: string;
33
- logid: boolean;
34
- };
35
- }>>>;
36
- moveTo(title: string, reason?: string, params?: Partial<MwApiParams & {
37
- movetalk: boolean;
38
- movesubpages: boolean;
39
- }>): Promise<FexiosFinalContext<MwApiResponse<{
40
- success: boolean;
41
- }>>>;
42
- userCan(action: keyof PageInfo['actions']): boolean;
43
- userCanEdit(): boolean;
44
- reloadSelfInfo(): Promise<this>;
45
- readonly pageid: PageInfo['pageid'];
46
- readonly title: PageInfo['title'];
47
- readonly ns: PageInfo['ns'];
48
- readonly contentmodel: PageInfo['contentmodel'];
49
- readonly fullurl: PageInfo['fullurl'];
50
- readonly canonicalurl: PageInfo['canonicalurl'];
51
- readonly editurl: PageInfo['editurl'];
52
- readonly revisions: NonNullable<PageInfo['revisions']>;
53
- readonly lastrevid: PageInfo['lastrevid'];
54
- readonly templates: NonNullable<PageInfo['templates']>;
55
- readonly images: NonNullable<PageInfo['images']>;
56
- }
57
- export interface WikiPageConstructor {
58
- new (pageInfo: Partial<PageInfo>, loaded?: boolean): IWikiPage;
59
- newFromApi(payload: MwApiParams): Promise<IWikiPage>;
60
- newBlankPage(init?: Partial<PageInfo>): IWikiPage;
61
- /**
62
- * Create a new WikiPage instance from any kind of identifier
63
- * priority: revid > pageid > title
64
- */
65
- newFromAnyKind(payload: {
66
- title?: string;
67
- pageid?: number;
68
- revid?: number;
69
- }): Promise<IWikiPage | null>;
70
- newBatchFromApi(params: MwApiParams & {
71
- titles?: string[];
72
- pageids?: number[];
73
- revids?: number[];
74
- }): Promise<IWikiPage[]>;
75
- }
76
- export declare function createWikiPageModel(api: MediaWikiApi): WikiPageConstructor;
@@ -1,58 +0,0 @@
1
- /**
2
- * @url https://www.mediawiki.org/wiki/Content_handlers
3
- */
4
- export type ContentModelMap = {
5
- css: 'text/css';
6
- javascript: 'text/javascript';
7
- json: 'application/json';
8
- text: 'text/plain';
9
- wikitext: 'text/x-wiki';
10
- GeoJson: 'application/json';
11
- 'sanitized-css': 'text/css';
12
- Scribunto: 'text/plain';
13
- 'smw/schema': 'application/json';
14
- };
15
- export interface PageInfo {
16
- pageid: number;
17
- ns: number;
18
- title: string;
19
- contentmodel: keyof ContentModelMap;
20
- pagelanguage: string;
21
- pagelanguagehtmlcode: string;
22
- pagelanguagedir: 'ltr' | 'rtl';
23
- touched: string;
24
- lastrevid: number;
25
- length: number;
26
- protection: [];
27
- restrictiontypes: string[];
28
- fullurl: string;
29
- canonicalurl: string;
30
- editurl?: string;
31
- varianttitles?: Record<string, string>;
32
- actions: {
33
- edit: boolean;
34
- move: boolean;
35
- delete: boolean;
36
- };
37
- revisions?: {
38
- revid: number;
39
- parentid: number;
40
- minor: boolean;
41
- user: string;
42
- timestamp: string;
43
- comment: string;
44
- contentformat: ContentModelMap[keyof ContentModelMap];
45
- contentmodel: keyof ContentModelMap;
46
- content: string;
47
- }[];
48
- templates: {
49
- ns: number;
50
- title: string;
51
- }[];
52
- images: {
53
- ns: number;
54
- title: string;
55
- }[];
56
- missing?: boolean;
57
- special?: boolean;
58
- }
@@ -1,17 +0,0 @@
1
- export interface PageParseData {
2
- title: string;
3
- pageid: number;
4
- text: string;
5
- langlinks: any[];
6
- categories: any[];
7
- links: any[];
8
- templates: any[];
9
- images: any[];
10
- externallinks: string[];
11
- sections: any[];
12
- showtoc: boolean;
13
- parsewarnings: any[];
14
- displaytitle: string;
15
- iwlinks: any[];
16
- properties: any;
17
- }
@@ -1,6 +0,0 @@
1
- export declare enum WatchlistAction {
2
- preferences = "preferences",
3
- watch = "watch",
4
- unwatch = "unwatch",
5
- nochange = "nochange"
6
- }
@@ -1,89 +0,0 @@
1
- import { WikiSiteInfo } from '../../types/WikiMetadata';
2
- export interface IWikiTitle {
3
- /**
4
- * Get db key without namespace prefix
5
- * e.g. "template:hello world" -> "Hello_world"
6
- */
7
- getMainDBKey(): string;
8
- /**
9
- * Get page name without namespace prefix
10
- * e.g. "template:hello world" -> "Hello world"
11
- */
12
- getMainText(): string;
13
- /**
14
- * Get db key with namespace prefix
15
- * e.g. "template:hello world" -> "Template:Hello_world"
16
- */
17
- getPrefixedDBKey(): string;
18
- /**
19
- * Get page name with namespace prefix
20
- * e.g. "template:hello world" -> "Template:Hello world"
21
- */
22
- getPrefixedText(): string;
23
- toText: () => string;
24
- toString: () => string;
25
- /**
26
- * Get namespace ID
27
- * e.g. "template:hello world" -> 10
28
- */
29
- getNamespaceId(): number;
30
- /**
31
- * Get namespace text
32
- * e.g. "template:hello world" -> "Template"
33
- */
34
- getNamespaceText(): string;
35
- /**
36
- * Get namespace db key
37
- * e.g. "template talk:hello world" -> "Template_talk"
38
- */
39
- getNamespaceDBKey(): string;
40
- /**
41
- * Get subject page
42
- * If current page is subject page, return itself
43
- * e.g. "template talk:hello world" -> new WikiTitle("Template:Hello world")
44
- */
45
- getSubjectPage(): IWikiTitle;
46
- /**
47
- * Get talk page
48
- * If current page is talk page, return itself
49
- * If current page cannot have talk page, return null
50
- * e.g. "template:hello world" -> new WikiTitle("Template talk:Hello world")
51
- */
52
- getTalkPage(): IWikiTitle | null;
53
- /**
54
- * Get URL of the page
55
- * e.g. "template:hello world" -> "https://example.com/wiki/Template:Hello_world"
56
- */
57
- getURL(params?: Record<string, string> | URLSearchParams): URL;
58
- /**
59
- * Reset current title with given title string
60
- */
61
- setTitle(title: string): IWikiTitle;
62
- /**
63
- * Set main title, keep current ns, update dbkey
64
- */
65
- setMainText(mainTitle: string): IWikiTitle;
66
- /**
67
- * Set namespace by text
68
- */
69
- setNamespaceText(namespaceText: string): IWikiTitle;
70
- /**
71
- * Set namespace by ID
72
- */
73
- setNamespaceId(namespaceId: number): IWikiTitle;
74
- /**
75
- * Check if the title is equal to another title
76
- */
77
- equals(other: IWikiTitle | string): boolean;
78
- /**
79
- * Check if the title is specific special page
80
- * e.g. "Special:Diff" is "差异" or "diff" -> true
81
- */
82
- isSpecial(alia: string): boolean;
83
- newTitle(title: string, namespace?: number): IWikiTitle;
84
- }
85
- export interface WikiTitleConstructor {
86
- new (title: string, namespace?: number): IWikiTitle;
87
- create(title: string, namespace?: number): IWikiTitle;
88
- }
89
- export declare function createWikiTitleModel(metadata: WikiSiteInfo): WikiTitleConstructor;
@@ -1 +0,0 @@
1
- export {};
@@ -1,25 +0,0 @@
1
- import { Inject, InPageEdit, Schema } from '../InPageEdit';
2
- interface DisposeHandler {
3
- (ctx: InPageEdit): Promise<void> | void;
4
- }
5
- export default class BasePlugin<ConfigType extends unknown = any> {
6
- #private;
7
- ctx: InPageEdit;
8
- config: ConfigType;
9
- private disposeHandlers;
10
- /** 依赖注入 */
11
- static inject?: Inject;
12
- /** 可重用? */
13
- static reusable: boolean;
14
- /** 插件的偏好设置模式 */
15
- static PreferencesSchema?: Schema;
16
- constructor(ctx: InPageEdit, config?: ConfigType, name?: string);
17
- protected start(): Promise<void> | void;
18
- protected stop(): Promise<void> | void;
19
- protected addDisposeHandler(fn: DisposeHandler): void;
20
- protected removeDisposeHandler(fn: DisposeHandler): void;
21
- set name(name: string);
22
- get name(): string;
23
- get logger(): import('@inpageedit/logger').Logger;
24
- }
25
- export {};
@@ -1,8 +0,0 @@
1
- import { InPageEdit } from '../../InPageEdit';
2
- declare class PluginDebug extends BasePlugin {
3
- ctx: InPageEdit;
4
- constructor(ctx: InPageEdit);
5
- protected start(): Promise<void>;
6
- showModal(): import('../../services/ModalService').CustomIPEModal;
7
- }
8
- export default PluginDebug;
@@ -1,41 +0,0 @@
1
- import { InPageEdit } from '../../InPageEdit';
2
- declare module '../../InPageEdit' {
3
- interface InPageEdit {
4
- analytics: PluginAnalytics;
5
- }
6
- }
7
- export interface IPEBeaconPayload {
8
- siteApi: string;
9
- siteName?: string;
10
- userId: number;
11
- userName: string;
12
- version?: string;
13
- usages: IPEBeaconUsage[];
14
- }
15
- export interface IPEBeaconUsage {
16
- ts: number;
17
- feature: string;
18
- subtype?: string;
19
- page?: string;
20
- }
21
- export declare class PluginAnalytics extends BasePlugin {
22
- ctx: InPageEdit;
23
- private _usages;
24
- private _timer;
25
- private readonly MAX_QUEUE_SIZE;
26
- private readonly INTERVAL_MS;
27
- constructor(ctx: InPageEdit);
28
- protected start(): Promise<void> | void;
29
- private get analyticsDashUrl();
30
- private get analyticsApiBase();
31
- private _setupTimer;
32
- private _registerUnloadHandler;
33
- private _showConfirmNotify;
34
- private _initPluginListeners;
35
- addEvent(feature: string, subtype?: string, page?: string): this;
36
- private sendBeacon;
37
- /**
38
- * 清理资源
39
- */
40
- protected stop(): void;
41
- }
@@ -1,44 +0,0 @@
1
- import { InPageEdit } from '../../InPageEdit';
2
- import { WikiLinkMetadata } from '../../services/WikiTitleService.js';
3
- declare module '../../InPageEdit' {
4
- interface InPageEdit {
5
- inArticleLinks: PluginInArticleLinks;
6
- }
7
- interface Events {
8
- 'in-article-links/anchor-parsed'(payload: {
9
- ctx: InPageEdit;
10
- anchor: HTMLAnchorElement;
11
- info: InArticleWikiAnchorMetadata;
12
- }): void;
13
- 'in-article-links/anchor-clicked'(payload: {
14
- ctx: InPageEdit;
15
- anchor: HTMLAnchorElement;
16
- info: InArticleWikiAnchorMetadata;
17
- event: MouseEvent;
18
- action: 'quickEdit' | 'quickDiff';
19
- }): void;
20
- }
21
- interface PreferencesMap {
22
- 'inArticleLinks.quickEdit.enable': boolean;
23
- 'inArticleLinks.quickDiff.enable': boolean;
24
- 'inArticleLinks.quickEdit.redlinks': boolean;
25
- }
26
- }
27
- export interface InArticleWikiAnchorMetadata extends WikiLinkMetadata {
28
- $el: HTMLAnchorElement;
29
- kind: 'normal' | 'mw:File';
30
- external: boolean;
31
- redlink: boolean;
32
- }
33
- export declare class PluginInArticleLinks extends BasePlugin<{
34
- linkClassName: string;
35
- }> {
36
- constructor(ctx: InPageEdit);
37
- protected start(): Promise<void>;
38
- protected stop(): Promise<void>;
39
- private _cachedAnchorInfo;
40
- parseAnchor(anchor: HTMLAnchorElement): InArticleWikiAnchorMetadata | null;
41
- scanAnchors(parent: HTMLElement, filter?: (info: InArticleWikiAnchorMetadata) => boolean): InArticleWikiAnchorMetadata[];
42
- handleQuickEdit(): Promise<void>;
43
- handleQuickDiff(): void;
44
- }
@@ -1,56 +0,0 @@
1
- import { InPageEdit } from '../../InPageEdit';
2
- import { ForkScope } from '@cordisjs/core';
3
- import { PluginStoreRegistry, PluginStoreSchemas } from './schema';
4
- declare module '../../InPageEdit' {
5
- interface InPageEdit {
6
- store: PluginPluginStore;
7
- }
8
- interface PreferencesMap {
9
- 'pluginStore.registries': string[];
10
- 'pluginStore.plugins': {
11
- source?: 'online_manifest' | 'npm';
12
- registry: string;
13
- id: string;
14
- }[];
15
- 'pluginStore.cdnForNpm': string;
16
- }
17
- }
18
- export type PluginStoreRegistrySource = 'online_manifest' | 'npm';
19
- export declare class PluginPluginStore extends BasePlugin {
20
- ctx: InPageEdit;
21
- static readonly PluginStoreSchemas: typeof PluginStoreSchemas;
22
- static REGISTRY_INFO_CACHE_TTL: number;
23
- static REGISTRY_INFO_STORAGE_NAME: string;
24
- static REGISTRY_ETAG_STORAGE_NAME: string;
25
- private regInfoDB;
26
- constructor(ctx: InPageEdit);
27
- protected start(): Promise<void>;
28
- private _installUserPlugins;
29
- private _createManagementApp;
30
- private _injectPreferenceUI;
31
- showModal(): Promise<import('../../services/ModalService').CustomIPEModal>;
32
- private _installedPlugins;
33
- install(registry: string, id: string, source?: PluginStoreRegistrySource): Promise<ForkScope<InPageEdit> | null>;
34
- uninstall(registry: string, id: string): Promise<boolean>;
35
- addToPreferences(registry: string, id: string): Promise<boolean>;
36
- removeFromPreferences(registry: string, id: string): Promise<boolean>;
37
- installAndSetPreference(registry: string, id: string): Promise<ForkScope<InPageEdit> | null>;
38
- uninstallAndRemovePreference(registry: string, id: string): Promise<boolean>;
39
- private _installOneByRegistryInfo;
40
- validateRegistry(data: any): PluginStoreRegistry;
41
- getRegistryInfo(registry: string, source?: PluginStoreRegistrySource, noCache?: boolean): Promise<PluginStoreRegistry>;
42
- private _onlineRegistryQueries;
43
- private _fetchOnlineRegistryInfo;
44
- private getRegistryCache;
45
- private setRegistryCache;
46
- private deleteRegistryCache;
47
- clearAllRegistryCaches(): Promise<void>;
48
- /**
49
- * 刷新指定 registry 的缓存(重新从网络获取)
50
- */
51
- refreshRegistryCache(registry: string): Promise<PluginStoreRegistry>;
52
- /**
53
- * 刷新所有已配置的 registry 缓存
54
- */
55
- refreshAllRegistryCaches(): Promise<Record<string, PluginStoreRegistry | null>>;
56
- }
@@ -1,41 +0,0 @@
1
- import { default as Schema } from 'schemastery';
2
- export declare const PLUGIN_STORE_REGISTRY_MANIFEST_VERSION = 1;
3
- export interface PluginStoreRegistry {
4
- manifest_version: number;
5
- name: string;
6
- base_url: string;
7
- homepage?: string;
8
- maintainers?: PluginStoreRegistryMaintainer[];
9
- repository?: PluginStoreRegistryRepository;
10
- packages: PluginStorePackage[];
11
- }
12
- export interface PluginStoreRegistryMaintainer {
13
- name: string;
14
- email?: string;
15
- }
16
- export interface PluginStoreRegistryRepository {
17
- type: 'git';
18
- url: string;
19
- }
20
- export interface PluginStorePackage {
21
- id: string;
22
- name: string;
23
- version: string;
24
- description?: string;
25
- author?: string;
26
- license?: string;
27
- loader: PluginStorePackageLoader;
28
- }
29
- export interface PluginStorePackageLoader {
30
- kind: 'autoload' | 'module' | 'umd' | 'styles';
31
- entry?: string;
32
- styles?: string[];
33
- main_export?: string;
34
- }
35
- export declare namespace PluginStoreSchemas {
36
- const PackageLoader: Schema<PluginStorePackageLoader, PluginStorePackageLoader>;
37
- const Package: Schema<PluginStorePackage, PluginStorePackage>;
38
- const RegistryMaintainer: Schema<PluginStoreRegistryMaintainer, PluginStoreRegistryMaintainer>;
39
- const RegistryRepository: Schema<PluginStoreRegistryRepository, PluginStoreRegistryRepository>;
40
- const Registry: Schema<PluginStoreRegistry, PluginStoreRegistry>;
41
- }
@@ -1,28 +0,0 @@
1
- import { InPageEdit } from '../../InPageEdit.js';
2
- import { IWikiTitle } from '../../models/WikiTitle/index.js';
3
- declare module '../../InPageEdit' {
4
- interface InPageEdit {
5
- prefSync: PluginPrefSync;
6
- }
7
- }
8
- export declare class PluginPrefSync extends BasePlugin {
9
- ctx: InPageEdit;
10
- constructor(ctx: InPageEdit);
11
- protected start(): Promise<void> | void;
12
- protected stop(): Promise<void> | void;
13
- /**
14
- * 获取用户页配置文件的标题
15
- */
16
- private getUserPrefsPageTitle;
17
- /**
18
- * 从用户页加载配置
19
- */
20
- importFromUserPage(): Promise<Record<string, unknown>>;
21
- /**
22
- * 导出配置到用户页
23
- */
24
- exportToUserPage(): Promise<IWikiTitle>;
25
- importFromUrl(input: string): Promise<Record<string, unknown>>;
26
- importFromFile(input: Blob): Promise<Record<string, unknown>>;
27
- private notifyImportSuccess;
28
- }
@@ -1,48 +0,0 @@
1
- import { InPageEdit } from '../../InPageEdit';
2
- import { default as PreferencesApp } from './components/PreferencesApp.vue';
3
- import { CustomIPEModal } from '../../services/ModalService.js';
4
- import { App as VueApp } from 'vue';
5
- declare module '../../InPageEdit' {
6
- interface InPageEdit {
7
- preferencesUI: PluginPreferencesUI;
8
- }
9
- interface Events {
10
- 'preferences-ui/modal-shown'(payload: {
11
- ctx: InPageEdit;
12
- modal: CustomIPEModal;
13
- }): void;
14
- 'preferences-ui/vue-app-mounted'(payload: {
15
- ctx: InPageEdit;
16
- app: VueApp;
17
- form: InstanceType<typeof PreferencesApp>;
18
- }): void;
19
- 'preferences-ui/modal-tab-changed'(payload: {
20
- ctx: InPageEdit;
21
- category: string;
22
- $tabContent: HTMLElement;
23
- }): void;
24
- 'preferences-ui/form-data-saved'(payload: {
25
- ctx: InPageEdit;
26
- data: Record<string, unknown>;
27
- }): void;
28
- 'preferences-ui/modal-closed'(payload: {
29
- ctx: InPageEdit;
30
- modal: CustomIPEModal;
31
- }): void;
32
- }
33
- }
34
- export declare class PluginPreferencesUI extends BasePlugin {
35
- ctx: InPageEdit;
36
- constructor(ctx: InPageEdit);
37
- protected start(): Promise<void>;
38
- protected stop(): Promise<void> | void;
39
- _modal: CustomIPEModal | null;
40
- _form: InstanceType<typeof PreferencesApp> | null;
41
- showModal(): CustomIPEModal;
42
- getCurrentModal(): CustomIPEModal | null;
43
- closeCurrentModal(): CustomIPEModal | undefined;
44
- dispatchFormSave(form?: InstanceType<typeof PreferencesApp>): Promise<boolean>;
45
- getCurrentFormValue(): any;
46
- mergeFormValue(value: Record<string, unknown>): boolean;
47
- createPreferencesUIApp(): VueApp<Element>;
48
- }
@@ -1,23 +0,0 @@
1
- import { JSX } from 'jsx-dom/jsx-runtime';
2
- import { CompareApiResponse } from '../index.js';
3
- import { InPageEdit } from '../../../InPageEdit.js';
4
- export type DiffTableProps = {
5
- data: Partial<CompareApiResponse['compare']>;
6
- ctx: InPageEdit;
7
- } & JSX.IntrinsicElements['table'];
8
- export declare enum DiffTableEvent {
9
- update = "ipe:diff-table/update",
10
- edit = "ipe:diff-table/edit"
11
- }
12
- declare global {
13
- interface HTMLElementEventMap {
14
- [DiffTableEvent.update]: CustomEvent<{
15
- fromrev: number;
16
- torev: number;
17
- }>;
18
- [DiffTableEvent.edit]: CustomEvent<{
19
- revid: number;
20
- }>;
21
- }
22
- }
23
- export declare const DiffTable: (props: DiffTableProps) => import('jsx-dom').ReactElement;