@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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inpageedit/core",
3
- "version": "0.12.1",
3
+ "version": "0.13.0-alpha.0",
4
4
  "description": "🚀 Modular, Extensible Supercharged Plugin for MediaWiki",
5
5
  "author": "dragon-fish",
6
6
  "license": "MIT",
@@ -13,6 +13,7 @@
13
13
  ],
14
14
  "exports": {
15
15
  "./package.json": "./package.json",
16
+ "./style.css": "./dist/style.css",
16
17
  ".": {
17
18
  "source": "./src/index.ts",
18
19
  "types": "./dist/index.d.ts",
@@ -20,34 +21,26 @@
20
21
  },
21
22
  "./InPageEdit": {
22
23
  "source": "./src/InPageEdit.ts",
23
- "types": "./dist/InPageEdit.d.ts"
24
+ "types": "./dist/index.d.ts"
24
25
  },
25
- "./style.css": "./dist/style.css",
26
26
  "./components": {
27
- "types": "./dist/components/index.d.ts",
27
+ "types": "./dist/index.d.ts",
28
28
  "import": "./dist/components/index.js"
29
29
  },
30
- "./models/*": {
31
- "types": "./dist/plugins/*.d.ts"
32
- },
33
- "./plugins/*": {
34
- "types": "./dist/plugins/*.d.ts"
35
- },
36
- "./services/*": {
37
- "types": "./dist/services/*.d.ts"
38
- },
39
- "./types/*": {
40
- "types": "./dist/services/*.d.ts"
30
+ "./models": {
31
+ "types": "./dist/models/index.d.ts",
32
+ "import": "./dist/models/index.js"
41
33
  },
42
- "./src/*": {
43
- "source": "./src/*",
44
- "types": "./src/*"
34
+ "./plugins": {
35
+ "types": "./dist/plugins/index.d.ts",
36
+ "import": "./dist/plugins/index.js"
45
37
  },
46
- "./dist/*": {
47
- "source": "./dist/*",
48
- "types": "./dist/*"
38
+ "./services": {
39
+ "types": "./dist/services/index.d.ts",
40
+ "import": "./dist/services/index.js"
49
41
  }
50
42
  },
43
+ "sideEffects": false,
51
44
  "publishConfig": {
52
45
  "registry": "https://registry.npmjs.org/",
53
46
  "access": "public"
@@ -62,6 +55,7 @@
62
55
  "@typescript-eslint/eslint-plugin": "^8.46.3",
63
56
  "@typescript-eslint/parser": "^8.46.3",
64
57
  "@vitejs/plugin-vue": "^6.0.1",
58
+ "@vue/compiler-sfc": "^3.5.24",
65
59
  "@vue/language-plugin-pug": "^3.1.3",
66
60
  "cross-env": "^10.1.0",
67
61
  "eslint": "^9.39.1",
@@ -71,14 +65,16 @@
71
65
  "prettier": "^3.6.2",
72
66
  "pug": "^3.0.3",
73
67
  "rimraf": "^6.1.0",
68
+ "rolldown": "1.0.0-beta.47",
69
+ "rolldown-plugin-dts": "^0.17.5",
74
70
  "sass-embedded": "^1.93.3",
75
71
  "tsx": "^4.20.6",
76
72
  "types-mediawiki": "^2.0.0",
77
73
  "typescript": "^5.9.3",
78
74
  "unplugin-auto-import": "^20.2.0",
79
- "unplugin-dts": "1.0.0-beta.6",
80
75
  "vite": "^7.2.2",
81
- "vitest": "^4.0.8"
76
+ "vitest": "^4.0.8",
77
+ "vue-tsc": "^3.1.3"
82
78
  },
83
79
  "dependencies": {
84
80
  "@cordisjs/core": "^3.18.1",
@@ -107,15 +103,16 @@
107
103
  "start": "zx dev/scripts/setup-dev.ts",
108
104
  "dev": "vite",
109
105
  "test": "vitest run ./src",
110
- "build": "run-p build:*",
106
+ "build": "run-p build:import build:bundle && npm run build:types",
111
107
  "build:import": "cross-env VITE_BUILD_FORMAT=import vite build",
112
108
  "build:bundle": "cross-env VITE_BUILD_FORMAT=bundle vite build",
109
+ "build:types": "rolldown -c rolldown.config.ts",
113
110
  "prepublish": "npm run build",
114
111
  "lint": "eslint ./src",
115
112
  "unit-test": "vitest run ./src",
116
113
  "unit-test:watch": "vitest ./src",
117
114
  "clean": "rimraf dist/* lib/*",
118
115
  "format": "prettier --write ./src",
119
- "typecheck": "tsc --noEmit --project ./tsconfig.app.json"
116
+ "typecheck": "vue-tsc --noEmit --project ./tsconfig.app.json"
120
117
  }
121
118
  }
@@ -1,42 +0,0 @@
1
- import { Context, Inject, Events as CordisEvents } from '@cordisjs/core';
2
- import { Logger } from '@inpageedit/logger';
3
- import { FexiosConfigs } from 'wiki-saikou';
4
- export interface InPageEditCoreConfig {
5
- apiConfigs: Partial<FexiosConfigs>;
6
- legacyPreferences: Record<string, any>;
7
- logLevel: number;
8
- storageNamespace: string;
9
- autoloadStyles: boolean;
10
- autoInstallCorePlugins: boolean;
11
- }
12
- /**
13
- * ✏️ InPageEdit NEXT
14
- *
15
- * 🚀 Modular, Extensible Supercharged Plugin for MediaWiki
16
- *
17
- * @author dragon-fish <dragon-fish@qq.com>
18
- * @license MIT
19
- * @see https://github.com/inpageedit/inpageedit-next
20
- * @see https://www.ipe.wiki/
21
- */
22
- export declare class InPageEdit extends Context {
23
- #private;
24
- readonly version: string;
25
- config: InPageEditCoreConfig;
26
- static DEFAULT_CONFIG: InPageEditCoreConfig;
27
- Endpoints: typeof globalThis.Endpoints;
28
- readonly schema: Schemastery.Static;
29
- readonly logger: Logger;
30
- constructor(config?: Partial<InPageEditCoreConfig>);
31
- withInject(inject: Inject): Promise<this>;
32
- }
33
- export { default as Schema } from 'schemastery';
34
- export * from '@inpageedit/logger';
35
- export interface PreferencesMap {
36
- }
37
- export { Inject, Service } from '@cordisjs/core';
38
- export interface Events<C extends InPageEdit = InPageEdit> extends CordisEvents<C> {
39
- }
40
- export interface InPageEdit {
41
- [InPageEdit.events]: Events<this>;
42
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"PluginPrefSync-Ziogy_o-.js","sources":["../src/plugins/preferences-ui/PluginPrefSync.tsx"],"sourcesContent":["import { Inject, InPageEdit, Schema } from '@/InPageEdit.js'\nimport { WatchlistAction } from '@/models/WikiPage/types/WatchlistAction.js'\nimport { IWikiTitle } from '@/models/WikiTitle/index.js'\n\ndeclare module '@/InPageEdit' {\n export interface InPageEdit {\n prefSync: PluginPrefSync\n }\n}\n\n@Inject(['preferences', 'wikiPage', 'wikiTitle', 'modal', 'preferencesUI'])\nexport class PluginPrefSync extends BasePlugin {\n constructor(public ctx: InPageEdit) {\n super(ctx, {}, 'pref-sync')\n ctx.set('prefSync', this)\n }\n\n protected start(): Promise<void> | void {\n const ctx = this.ctx\n ctx.preferences.defineCategory({\n name: 'pref-sync',\n label: 'Sync',\n description: 'Import and export preferences',\n index: 98,\n customRenderer: () => {\n const userPageTitle = this.getUserPrefsPageTitle()\n return (\n <div className=\"theme-ipe-prose\">\n {userPageTitle && (\n <section>\n <h3>Backup your preferences via user page</h3>\n <p>\n <a href={userPageTitle?.getURL().toString()} target=\"_blank\">\n {userPageTitle?.getPrefixedText()} →\n </a>\n </p>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '1rem' }}>\n <ActionButton\n type=\"primary\"\n onClick={(e) => {\n e.preventDefault()\n const btn = e.target as HTMLButtonElement\n btn.disabled = true\n const modal = ctx.preferencesUI.getCurrentModal()\n modal?.setLoadingState(true)\n this.exportToUserPage()\n .then((title) => {\n ctx.modal.notify('success', {\n title: 'Preferences Exported',\n content: (\n <p>\n Your preferences have been exported to{' '}\n <a href={title.getURL().toString()} target=\"_blank\">\n {title.getPrefixedText()}\n </a>\n .\n </p>\n ),\n })\n })\n .finally(() => {\n btn.disabled = false\n modal?.setLoadingState(false)\n })\n }}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"icon icon-tabler icons-tabler-outline icon-tabler-cloud-up\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M12 18.004h-5.343c-2.572 -.004 -4.657 -2.011 -4.657 -4.487c0 -2.475 2.085 -4.482 4.657 -4.482c.393 -1.762 1.794 -3.2 3.675 -3.773c1.88 -.572 3.956 -.193 5.444 1c1.488 1.19 2.162 3.007 1.77 4.769h.99c1.38 0 2.57 .811 3.128 1.986\" />\n <path d=\"M19 22v-6\" />\n <path d=\"M22 19l-3 -3l-3 3\" />\n </svg>{' '}\n Backup\n </ActionButton>\n <ActionButton\n onClick={(e) => {\n e.preventDefault()\n const modal = ctx.preferencesUI.getCurrentModal()\n const btn = e.target as HTMLButtonElement\n btn.disabled = true\n modal?.setLoadingState(true)\n this.importFromUserPage()\n .then((record) => {\n this.notifyImportSuccess(record)\n })\n .finally(() => {\n btn.disabled = false\n modal?.setLoadingState(false)\n })\n }}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"icon icon-tabler icons-tabler-outline icon-tabler-cloud-down\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M12 18.004h-5.343c-2.572 -.004 -4.657 -2.011 -4.657 -4.487c0 -2.475 2.085 -4.482 4.657 -4.482c.393 -1.762 1.794 -3.2 3.675 -3.773c1.88 -.572 3.956 -.193 5.444 1c1.488 1.19 2.162 3.007 1.77 4.769h.99c1.38 0 2.573 .813 3.13 1.99\" />\n <path d=\"M19 16v6\" />\n <path d=\"M22 19l-3 3l-3 -3\" />\n </svg>{' '}\n Restore\n </ActionButton>\n </div>\n </section>\n )}\n <section>\n <h3>Import and export preferences</h3>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '1rem' }}>\n <ActionButton\n onClick={(e) => {\n e.preventDefault()\n const modal = ctx.preferencesUI.getCurrentModal()\n modal?.setLoadingState(true)\n const input = document.createElement('input')\n input.type = 'file'\n input.accept = 'application/json'\n // Mobile Safari (and some older browsers) do not fire a 'cancel' event when\n // the file picker is dismissed without selecting a file. We use a\n // window 'focus' listener as a heuristic: once the picker closes\n // the window regains focus; if no file was chosen we treat it as cancel.\n // Fuck you Apple\n let handled = false\n const onDialogClose = () => {\n // If change handler did not run, treat as cancel\n if (!handled) {\n modal?.setLoadingState(false)\n }\n window.removeEventListener('focus', onDialogClose)\n }\n window.addEventListener('focus', onDialogClose, { once: true })\n\n input.addEventListener('change', async (e) => {\n handled = true\n try {\n const file = (e.target as HTMLInputElement).files?.[0]\n if (!file) {\n return\n }\n const record = await this.importFromFile(file)\n this.notifyImportSuccess(record)\n } catch (e) {\n ctx.modal.notify('error', {\n title: 'Import failed',\n content: e instanceof Error ? e.message : String(e),\n })\n } finally {\n modal?.setLoadingState(false)\n }\n })\n input.click()\n }}\n >\n Import from file\n </ActionButton>\n <ActionButton\n onClick={(e) => {\n e.preventDefault()\n const input = (<input type=\"url\"></input>) as HTMLInputElement\n const modal = ctx.preferencesUI.getCurrentModal()\n ctx.modal.confirm(\n {\n title: 'Import Preferences from URL',\n content: (\n <div>\n <label htmlFor=\"url-input\">\n Enter the URL of the preferences JSON file:\n </label>\n {input}\n </div>\n ),\n },\n async (result) => {\n const url = input.value.trim()\n if (!result || !url) {\n return\n }\n try {\n modal?.setLoadingState(true)\n const record = await this.importFromUrl(url)\n this.notifyImportSuccess(record)\n } catch (e) {\n ctx.modal.notify('error', {\n title: 'Import failed',\n content: e instanceof Error ? e.message : String(e),\n })\n } finally {\n modal?.setLoadingState(false)\n }\n }\n )\n }}\n >\n Import from URL\n </ActionButton>\n <ActionButton\n onClick={async (e) => {\n e.preventDefault()\n // 首先尝试保存当前的表单内容\n await ctx.preferencesUI.dispatchFormSave()\n const data = await ctx.preferences.getExportableRecord()\n const json = JSON.stringify(data, null, 2)\n ctx.modal.dialog(\n {\n title: 'Save to file',\n content: (\n <div>\n <label htmlFor=\"data\">Your InPageEdit preferences:</label>\n <textarea\n name=\"data\"\n id=\"data\"\n rows={10}\n value={json}\n readOnly\n style={{ width: '100%' }}\n ></textarea>\n </div>\n ),\n buttons: [\n {\n label: 'Copy',\n method: (_, m) => {\n navigator.clipboard.writeText(json)\n ctx.modal.notify('success', {\n content: 'Copied to clipboard',\n })\n m.close()\n },\n },\n {\n label: 'Download',\n method: (_, m) => {\n const a = document.createElement('a')\n a.href = `data:text/json;charset=utf-8,${encodeURIComponent(json)}`\n a.download = `ipe-prefs-${new Date().toISOString()}.json`\n a.click()\n m.close()\n },\n },\n ],\n },\n () => {}\n )\n }}\n >\n Save as file\n </ActionButton>\n </div>\n </section>\n </div>\n )\n },\n })\n }\n\n protected stop(): Promise<void> | void {}\n\n /**\n * 获取用户页配置文件的标题\n */\n private getUserPrefsPageTitle(): IWikiTitle | null {\n try {\n const userName = this.ctx.wiki?.userInfo?.name\n if (!userName) {\n return null\n }\n // 使用 User: 命名空间\n return this.ctx.wikiTitle.newTitle(`User:${userName}/ipe-prefs.json`, 2)\n } catch {\n return null\n }\n }\n\n /**\n * 从用户页加载配置\n */\n async importFromUserPage(): Promise<Record<string, unknown>> {\n const title = this.getUserPrefsPageTitle()\n if (!title) {\n this.logger.debug('Cannot get user page title, skipping load')\n return {}\n }\n\n try {\n // 使用 raw action 获取 JSON 内容\n const rawUrl = title.getURL({ action: 'raw', ctype: 'application/json' })\n const changed = await this.importFromUrl(rawUrl.toString())\n this.logger.info('Loaded preferences from user page:', title)\n return changed\n } catch (error) {\n this.logger.error('Failed to load preferences from user page:', error)\n return {}\n }\n }\n\n /**\n * 导出配置到用户页\n */\n async exportToUserPage(): Promise<IWikiTitle> {\n const ctx = this.ctx\n const title = this.getUserPrefsPageTitle()\n if (!title) {\n throw new Error('Cannot get user page title')\n }\n\n // 首先尝试保存当前的表单内容\n await ctx.preferencesUI.dispatchFormSave()\n\n const json = await ctx.preferences.getExportableRecord()\n const text = JSON.stringify(json, null, 2)\n\n try {\n const page = this.ctx.wikiPage.newBlankPage({\n title: title.toString(),\n ns: 2, // User namespace\n })\n await page.edit({\n text,\n summary: 'Update InPageEdit preferences',\n watchlist: WatchlistAction.nochange,\n })\n\n this.logger.info('Exported preferences to user page:', title)\n return title\n } catch (error) {\n this.logger.error('Failed to export preferences to user page:', error)\n throw error\n }\n }\n\n async importFromUrl(input: string): Promise<Record<string, unknown>> {\n const response = await fetch(input)\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`)\n }\n const blob = await response.blob()\n const changed = await this.importFromFile(blob)\n return changed\n }\n\n async importFromFile(input: Blob): Promise<Record<string, unknown>> {\n const text = await input.text()\n const data = JSON.parse(text)\n const changed = await this.ctx.preferences.setMany(data)\n return changed\n }\n\n private notifyImportSuccess(configs?: Record<string, unknown>) {\n const keys = Object.keys(configs ?? {})\n const count = keys.length\n return this.ctx.modal.notify('success', {\n title: 'Preferences Imported',\n content: (\n <section>\n <p>\n Successfully imported {count || ''} {count !== 1 ? 'settings' : 'setting'}:\n </p>\n <ol style={{ listStyle: 'auto', paddingLeft: '1em' }}>\n {keys.map((key) => (\n <li key={key}>{key}</li>\n ))}\n </ol>\n </section>\n ),\n })\n }\n}\n"],"names":["_PluginPrefSync_decorators","_init","_a","Inject","PluginPrefSync","BasePlugin","ctx","userPageTitle","jsxs","jsx","ActionButton","e","btn","modal","title","record","input","handled","onDialogClose","file","result","url","data","json","_","m","a","userName","rawUrl","changed","error","text","WatchlistAction","response","blob","configs","keys","count","key","__decoratorStart","__decorateElement","__runInitializers"],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { WikiSiteInfo, WikiUserInfo } from '../../types/WikiMetadata.js';
2
- export declare const MOCK_SITE_INFO: WikiSiteInfo;
3
- export declare const MOCK_USER_INFO: WikiUserInfo;
@@ -1,6 +0,0 @@
1
- import { JSX } from 'jsx-dom';
2
- export interface ActionButtonProps {
3
- type?: 'primary' | 'secondary' | 'danger' | 'default';
4
- tag?: 'a' | 'button' | 'div';
5
- }
6
- export declare const ActionButton: ({ type, tag, href, target, children, ...rest }: ActionButtonProps & Omit<JSX.IntrinsicElements["button"], "type"> & JSX.IntrinsicElements["a"]) => HTMLAnchorElement;
@@ -1,10 +0,0 @@
1
- import { JSX } from 'jsx-dom';
2
- export type CheckBoxProps = {
3
- id?: string;
4
- name: string;
5
- label?: string | HTMLElement;
6
- checked?: boolean;
7
- inputProps?: JSX.IntrinsicElements['input'];
8
- labelProps?: JSX.IntrinsicElements['span'];
9
- } & JSX.IntrinsicElements['label'];
10
- export declare const CheckBox: (props: CheckBoxProps) => import('jsx-dom').ReactElement;
@@ -1,2 +0,0 @@
1
- import { SVGProps } from 'jsx-dom';
2
- export declare const IconEdit: (props: SVGProps<SVGSVGElement>) => import('jsx-dom').ReactElement;
@@ -1,2 +0,0 @@
1
- import { SVGProps } from 'jsx-dom';
2
- export declare const IconQuickEdit: (props: SVGProps<SVGSVGElement>) => import('jsx-dom').ReactElement;
@@ -1,11 +0,0 @@
1
- import { JSX } from 'jsx-dom';
2
- export type InputBoxProps = {
3
- label: string;
4
- id?: string;
5
- name: string;
6
- value?: string;
7
- disabled?: boolean;
8
- labelProps?: JSX.IntrinsicElements['label'];
9
- inputProps?: JSX.IntrinsicElements['input'];
10
- } & JSX.IntrinsicElements['div'];
11
- export declare const InputBox: (props: InputBoxProps) => import('jsx-dom').ReactElement;
@@ -1,14 +0,0 @@
1
- import { ReactNode } from 'jsx-dom';
2
- import { JSX } from 'jsx-dom/jsx-runtime';
3
- export type MBoxProps = {
4
- type?: '' | 'default' | 'note' | 'info' | 'tip' | 'success' | 'important' | 'done' | 'warning' | 'caution' | 'error';
5
- title?: ReactNode;
6
- content?: ReactNode;
7
- closeable?: boolean;
8
- titleProps?: JSX.IntrinsicElements['div'];
9
- contentProps?: JSX.IntrinsicElements['div'];
10
- } & JSX.IntrinsicElements['div'];
11
- export type MBoxElement = HTMLElement & {
12
- close: () => Promise<void>;
13
- };
14
- export declare const MBox: (props: MBoxProps) => MBoxElement;
@@ -1,6 +0,0 @@
1
- import { InPageEdit } from '../InPageEdit';
2
- export declare const MwUserLinks: (props: {
3
- user: string;
4
- target?: string;
5
- ctx: InPageEdit;
6
- }) => import('jsx-dom').ReactElement;
@@ -1,7 +0,0 @@
1
- import { JSX } from 'vue/jsx-runtime';
2
- export declare const ProgressBar: (attrs: JSX.IntrinsicElements["div"] & {
3
- indeterminate?: boolean;
4
- progress?: number;
5
- }) => HTMLElement & {
6
- setProgress: (progress: number) => void;
7
- };
@@ -1,10 +0,0 @@
1
- import { JSX } from 'jsx-dom';
2
- export type RadioBoxProps = {
3
- id?: string;
4
- name: string;
5
- value: string;
6
- label?: string | HTMLElement;
7
- inputProps?: JSX.IntrinsicElements['input'];
8
- labelProps?: JSX.IntrinsicElements['span'];
9
- } & JSX.IntrinsicElements['label'];
10
- export declare const RadioBox: (props: RadioBoxProps) => import('jsx-dom').ReactElement;
@@ -1,19 +0,0 @@
1
- import { ReactNode } from 'jsx-dom';
2
- export interface TabViewLabelOptions {
3
- name: string;
4
- children: ReactNode;
5
- }
6
- export declare function TabView({ tabs, defaultActiveIndex, }: {
7
- tabs: (TabViewLabelOptions & {
8
- content: ReactNode;
9
- })[];
10
- defaultActiveIndex?: number;
11
- }): import('jsx-dom').ReactElement;
12
- export declare function TabLabel({ name, children }: {
13
- name: string;
14
- children: ReactNode;
15
- }): import('jsx-dom').ReactElement;
16
- export declare function TabContent({ name, children }: {
17
- name: string;
18
- children: ReactNode;
19
- }): import('jsx-dom').ReactElement;
@@ -1,19 +0,0 @@
1
- import { JSX } from 'jsx-dom/jsx-runtime';
2
- export type TwinSwapInputProps = {
3
- inputs: [TwinSwapInputInput, TwinSwapInputInput];
4
- enableSwap?: boolean;
5
- } & JSX.IntrinsicElements['div'];
6
- export interface TwinSwapInputInput {
7
- label?: string;
8
- id?: string;
9
- name: string;
10
- value?: string;
11
- disabled?: boolean;
12
- required?: boolean;
13
- inputProps?: Omit<JSX.IntrinsicElements['input'], 'name' | 'value'>;
14
- }
15
- export type TwinSwapElement = HTMLDivElement & {
16
- swap: () => void;
17
- toggleEnableSwap: (enable?: boolean) => void;
18
- };
19
- export declare const TwinSwapInput: (props: TwinSwapInputProps) => TwinSwapElement;
@@ -1,8 +0,0 @@
1
- export * from './MBox/index';
2
- export * from './ProgressBar/index';
3
- export * from './TabView/index';
4
- export * from './TwinSwapInput';
5
- export * from './ActionButton';
6
- export * from './CheckBox';
7
- export * from './InputBox';
8
- export * from './RadioBox';
@@ -1,4 +0,0 @@
1
- import { CSSProperties, ReactElement } from 'jsx-dom';
2
- export declare const qs: <T extends Element>(selector: string, parent?: HTMLElement | Document) => T | null;
3
- export declare const qsa: <T extends Element>(selector: string, parent?: HTMLElement | Document) => NodeListOf<T>;
4
- export declare const setStyles: (el: HTMLElement | ReactElement, style: CSSProperties) => ReactElement;
@@ -1,8 +0,0 @@
1
- export declare enum Endpoints {
2
- ANALYTICS_API_BASE = "https://analytics.ipe.wiki/api/v6",
3
- ANALYTICS_DASH_URL = "https://analytics.ipe.wiki",
4
- GITHUB_URL = "https://github.com/inpageedit/inpageedit-next",
5
- HOME_URL = "https://www.ipe.wiki/",
6
- UPDATE_LOGS_URL = "https://www.ipe.wiki/changelogs/",
7
- PLUGIN_REGISTRY_URL = "https://registry.ipe.wiki/registry.v1.json"
8
- }
@@ -1,35 +0,0 @@
1
- import { default as Schema } from 'schemastery';
2
- type AnyConstructor<T = any> = new (...args: any[]) => T;
3
- export type PreferenceAugmented<D, C extends AnyConstructor> = C & {
4
- PreferencesSchema: Schema<D>;
5
- };
6
- /**
7
- * Decorator for registering preferences
8
- *
9
- * ```ts
10
- * @RegisterPreferences(
11
- * Schema.object({
12
- * foo: Schema.string().description('Foo description'),
13
- * }),
14
- * {
15
- * foo: 'default foo value',
16
- * }
17
- * )
18
- * class Foo {}
19
- * ```
20
- *
21
- * same as:
22
- *
23
- * ```ts
24
- * class Foo {
25
- * static ConfigSchema = Schema.object({
26
- * foo: Schema.string().description('Foo description')
27
- * })
28
- * static ConfigDefaults = {
29
- * foo: 'default foo value'
30
- * }
31
- * }
32
- * ```
33
- */
34
- export declare function RegisterPreferences<D extends Record<string, any>>(schema: Schema<D>): <T extends AnyConstructor>(target: T) => PreferenceAugmented<D, T>;
35
- export {};