@fastkit/vui 0.7.61 → 0.7.66
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/tool/index.js +1 -0
- package/dist/tool/vite-plugin.d.ts.map +1 -1
- package/dist/vui.cjs.js +443 -228
- package/dist/vui.cjs.prod.js +443 -228
- package/dist/vui.css +166 -12
- package/dist/vui.d.ts +103 -54
- package/dist/vui.min.css +1 -1
- package/dist/vui.min.css.map +1 -1
- package/dist/vui.mjs +437 -225
- package/package.json +7 -6
- package/src/components/VButton/VButtonGroup.scss +4 -0
- package/src/components/VButton/VButtonGroup.tsx +12 -1
- package/src/components/VWysiwygEditor/VWysiwygEditor.scss +4 -0
- package/src/components/VWysiwygEditor/VWysiwygEditor.tsx +19 -9
- package/src/components/VWysiwygEditor/extensions/.DS_Store +0 -0
- package/src/components/VWysiwygEditor/extensions/color.ts +72 -0
- package/src/components/VWysiwygEditor/extensions/index.ts +1 -0
- package/src/components/VWysiwygEditor/extensions/linter/.DS_Store +0 -0
- package/src/components/VWysiwygEditor/extensions/linter/Linter.scss +80 -15
- package/src/components/VWysiwygEditor/extensions/linter/Linter.tsx +214 -0
- package/src/components/VWysiwygEditor/extensions/linter/LinterPlugin.ts +32 -11
- package/src/components/VWysiwygEditor/extensions/linter/index.ts +3 -3
- package/src/components/VWysiwygEditor/extensions/linter/plugins/BadWords.tsx +50 -0
- package/src/components/VWysiwygEditor/extensions/linter/plugins/HeadingLevel.ts +9 -3
- package/src/components/VWysiwygEditor/extensions/linter/plugins/Punctuation.ts +9 -3
- package/src/components/VWysiwygEditor/extensions/linter/plugins/index.ts +3 -3
- package/src/components/VWysiwygEditor/extensions/linter/utils.ts +28 -0
- package/src/components/VWysiwygEditor/schemes.ts +87 -5
- package/src/components/VWysiwygEditor/tools/color.scss +140 -0
- package/src/components/VWysiwygEditor/tools/color.tsx +90 -0
- package/src/components/VWysiwygEditor/tools/index.ts +1 -1
- package/src/service.tsx +5 -0
- package/src/tool/vite-plugin.ts +1 -0
- package/src/components/VWysiwygEditor/extensions/linter/Linter.ts +0 -262
- package/src/components/VWysiwygEditor/extensions/linter/plugins/BadWords.ts +0 -34
- package/src/components/VWysiwygEditor/tools/text-color.ts +0 -14
package/dist/vui.css
CHANGED
|
@@ -2118,6 +2118,9 @@ thead th {
|
|
|
2118
2118
|
.v-wysiwyg-editor__wrapper {
|
|
2119
2119
|
position: relative;
|
|
2120
2120
|
}
|
|
2121
|
+
.v-wysiwyg-editor .v-control-field__body {
|
|
2122
|
+
width: 100%;
|
|
2123
|
+
}
|
|
2121
2124
|
.v-wysiwyg-editor__floating-toolbar {
|
|
2122
2125
|
position: absolute;
|
|
2123
2126
|
right: 0;
|
|
@@ -2186,23 +2189,62 @@ thead th {
|
|
|
2186
2189
|
overflow: visible;
|
|
2187
2190
|
}
|
|
2188
2191
|
.v-linter__issue-menu {
|
|
2192
|
+
font-size: 87.5%;
|
|
2193
|
+
line-height: 1.5;
|
|
2194
|
+
}
|
|
2195
|
+
.v-linter__issue-menu .v-dialog__body {
|
|
2196
|
+
padding: 0;
|
|
2197
|
+
font-size: inherit;
|
|
2198
|
+
}
|
|
2199
|
+
.v-linter__issue-menu__message {
|
|
2200
|
+
padding: 8px;
|
|
2201
|
+
}
|
|
2202
|
+
.v-linter__issue-menu__fixers {
|
|
2203
|
+
position: relative;
|
|
2204
|
+
padding: 4px 0;
|
|
2205
|
+
}
|
|
2206
|
+
.v-linter__issue-menu__fixers::before {
|
|
2189
2207
|
position: absolute;
|
|
2190
|
-
top:
|
|
2208
|
+
top: 0;
|
|
2209
|
+
right: 0;
|
|
2191
2210
|
left: 0;
|
|
2192
|
-
|
|
2193
|
-
|
|
2211
|
+
display: block;
|
|
2212
|
+
height: 1px;
|
|
2213
|
+
content: "";
|
|
2214
|
+
background: currentColor;
|
|
2215
|
+
opacity: 0.5;
|
|
2216
|
+
}
|
|
2217
|
+
.v-linter__issue-menu__fixer__button {
|
|
2218
|
+
position: relative;
|
|
2219
|
+
display: block;
|
|
2220
|
+
width: 100%;
|
|
2194
2221
|
padding: 8px;
|
|
2195
|
-
font
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2222
|
+
font: inherit;
|
|
2223
|
+
font-size: 12px;
|
|
2224
|
+
text-align: left;
|
|
2225
|
+
cursor: pointer;
|
|
2226
|
+
background: transparent;
|
|
2227
|
+
border: 0;
|
|
2228
|
+
outline: 0;
|
|
2229
|
+
appearance: none;
|
|
2230
|
+
}
|
|
2231
|
+
.v-linter__issue-menu__fixer__button::before {
|
|
2232
|
+
position: absolute;
|
|
2233
|
+
top: 0;
|
|
2234
|
+
right: 0;
|
|
2235
|
+
bottom: 0;
|
|
2236
|
+
left: 0;
|
|
2237
|
+
display: block;
|
|
2238
|
+
content: "";
|
|
2239
|
+
background: currentColor;
|
|
2200
2240
|
opacity: 0;
|
|
2201
|
-
transition:
|
|
2241
|
+
transition: 0.15s;
|
|
2202
2242
|
}
|
|
2203
|
-
.v-linter__issue-
|
|
2204
|
-
|
|
2205
|
-
|
|
2243
|
+
.v-linter__issue-menu__fixer__button:hover::before, .v-linter__issue-menu__fixer__button:focus::before {
|
|
2244
|
+
opacity: 0.1;
|
|
2245
|
+
}
|
|
2246
|
+
.v-linter__issue-menu__fixer__button__message {
|
|
2247
|
+
position: relative;
|
|
2206
2248
|
}
|
|
2207
2249
|
.v-linter__issue-menu__fix {
|
|
2208
2250
|
display: inline;
|
|
@@ -2215,6 +2257,118 @@ thead th {
|
|
|
2215
2257
|
outline: 0;
|
|
2216
2258
|
appearance: none;
|
|
2217
2259
|
}
|
|
2260
|
+
:root {
|
|
2261
|
+
--v-wysiwyg-color-tool: 30px;
|
|
2262
|
+
}
|
|
2263
|
+
|
|
2264
|
+
.v-wysiwyg-color-tool__button {
|
|
2265
|
+
position: relative;
|
|
2266
|
+
display: inline-flex;
|
|
2267
|
+
align-items: center;
|
|
2268
|
+
justify-content: center;
|
|
2269
|
+
vertical-align: bottom;
|
|
2270
|
+
}
|
|
2271
|
+
.v-wysiwyg-color-tool__button__bar {
|
|
2272
|
+
position: absolute;
|
|
2273
|
+
right: 0;
|
|
2274
|
+
bottom: 0;
|
|
2275
|
+
left: 0;
|
|
2276
|
+
display: block;
|
|
2277
|
+
height: 2px;
|
|
2278
|
+
background: currentColor;
|
|
2279
|
+
}
|
|
2280
|
+
.v-wysiwyg-color-tool__menu .v-dialog__content {
|
|
2281
|
+
min-width: 0;
|
|
2282
|
+
}
|
|
2283
|
+
.v-wysiwyg-color-tool__menu .v-dialog__body {
|
|
2284
|
+
padding: 2px;
|
|
2285
|
+
}
|
|
2286
|
+
.v-wysiwyg-color-tool__items {
|
|
2287
|
+
--item-size: var(--v-wysiwyg-color-tool);
|
|
2288
|
+
display: inline-flex;
|
|
2289
|
+
flex-wrap: wrap;
|
|
2290
|
+
align-items: center;
|
|
2291
|
+
max-width: calc(var(--item-size) * 5);
|
|
2292
|
+
vertical-align: bottom;
|
|
2293
|
+
}
|
|
2294
|
+
.v-wysiwyg-color-tool__items--with-label {
|
|
2295
|
+
display: flex;
|
|
2296
|
+
flex-direction: column;
|
|
2297
|
+
align-items: flex-start;
|
|
2298
|
+
max-width: none;
|
|
2299
|
+
padding: 2px;
|
|
2300
|
+
}
|
|
2301
|
+
.v-wysiwyg-color-tool__item {
|
|
2302
|
+
--focus-offset: calc(var(--item-size) * 0.05);
|
|
2303
|
+
position: relative;
|
|
2304
|
+
display: flex;
|
|
2305
|
+
flex-basis: var(--item-size);
|
|
2306
|
+
align-items: center;
|
|
2307
|
+
width: var(--item-size);
|
|
2308
|
+
height: var(--item-size);
|
|
2309
|
+
padding: 0;
|
|
2310
|
+
margin: 0;
|
|
2311
|
+
cursor: pointer;
|
|
2312
|
+
background: transparent;
|
|
2313
|
+
border: 0;
|
|
2314
|
+
border-radius: 0;
|
|
2315
|
+
outline: 0;
|
|
2316
|
+
appearance: none;
|
|
2317
|
+
}
|
|
2318
|
+
.v-wysiwyg-color-tool__item__color {
|
|
2319
|
+
position: relative;
|
|
2320
|
+
flex: 0 0 var(--item-size);
|
|
2321
|
+
width: var(--item-size);
|
|
2322
|
+
height: var(--item-size);
|
|
2323
|
+
}
|
|
2324
|
+
.v-wysiwyg-color-tool__item__color::before {
|
|
2325
|
+
position: absolute;
|
|
2326
|
+
top: 0;
|
|
2327
|
+
right: 0;
|
|
2328
|
+
bottom: 0;
|
|
2329
|
+
left: 0;
|
|
2330
|
+
display: block;
|
|
2331
|
+
content: "";
|
|
2332
|
+
background: currentColor;
|
|
2333
|
+
border: solid 1px transparent;
|
|
2334
|
+
transition: all 0.15s;
|
|
2335
|
+
}
|
|
2336
|
+
.v-wysiwyg-color-tool__item__name {
|
|
2337
|
+
position: relative;
|
|
2338
|
+
padding: 0 8px;
|
|
2339
|
+
font-size: 12px;
|
|
2340
|
+
white-space: nowrap;
|
|
2341
|
+
}
|
|
2342
|
+
.v-wysiwyg-color-tool__item:hover .v-wysiwyg-color-tool__item__color::before, .v-wysiwyg-color-tool__item:focus .v-wysiwyg-color-tool__item__color::before {
|
|
2343
|
+
top: var(--focus-offset);
|
|
2344
|
+
right: var(--focus-offset);
|
|
2345
|
+
bottom: var(--focus-offset);
|
|
2346
|
+
left: var(--focus-offset);
|
|
2347
|
+
border-color: rgba(0, 0, 0, 0.1);
|
|
2348
|
+
}
|
|
2349
|
+
.v-wysiwyg-color-tool__items--with-label .v-wysiwyg-color-tool__item {
|
|
2350
|
+
flex-basis: auto;
|
|
2351
|
+
width: auto;
|
|
2352
|
+
width: 100%;
|
|
2353
|
+
}
|
|
2354
|
+
.v-wysiwyg-color-tool__items--with-label .v-wysiwyg-color-tool__item::before {
|
|
2355
|
+
position: absolute;
|
|
2356
|
+
top: 0;
|
|
2357
|
+
right: 0;
|
|
2358
|
+
bottom: 0;
|
|
2359
|
+
left: 0;
|
|
2360
|
+
display: block;
|
|
2361
|
+
content: "";
|
|
2362
|
+
background: currentColor;
|
|
2363
|
+
opacity: 0;
|
|
2364
|
+
transition: opacity 0.15s;
|
|
2365
|
+
}
|
|
2366
|
+
.v-wysiwyg-color-tool__items--with-label .v-wysiwyg-color-tool__item:hover::before, .v-wysiwyg-color-tool__items--with-label .v-wysiwyg-color-tool__item:focus::before {
|
|
2367
|
+
opacity: 0.1;
|
|
2368
|
+
}
|
|
2369
|
+
.v-wysiwyg-color-tool__items--with-label .v-wysiwyg-color-tool__item + .v-wysiwyg-color-tool__item {
|
|
2370
|
+
margin-top: 2px;
|
|
2371
|
+
}
|
|
2218
2372
|
.v-tabs {
|
|
2219
2373
|
position: relative;
|
|
2220
2374
|
width: 100%;
|
package/dist/vui.d.ts
CHANGED
|
@@ -15,7 +15,8 @@ import { EditorOptions } from '@tiptap/vue-3';
|
|
|
15
15
|
import { EditorView } from 'prosemirror-view';
|
|
16
16
|
import { EmitsOptions } from 'vue';
|
|
17
17
|
import { EV } from '@fastkit/ev';
|
|
18
|
-
import { Extension } from '@tiptap/
|
|
18
|
+
import { Extension } from '@tiptap/vue-3';
|
|
19
|
+
import { Extension as Extension_2 } from '@tiptap/core';
|
|
19
20
|
import { Extensions } from '@tiptap/vue-3';
|
|
20
21
|
import { ExtractPropInput } from '@fastkit/vue-utils';
|
|
21
22
|
import { ExtractPropTypes } from 'vue';
|
|
@@ -44,10 +45,12 @@ import { InjectionKey } from 'vue';
|
|
|
44
45
|
import { ItalicOptions } from '@tiptap/extension-italic';
|
|
45
46
|
import { LinkOptions } from '@tiptap/extension-link';
|
|
46
47
|
import { LocationService } from '@fastkit/vue-utils';
|
|
48
|
+
import { Mark } from '@tiptap/vue-3';
|
|
47
49
|
import { MediaMatchKey } from '@fastkit/media-match';
|
|
48
50
|
import { NavigationableInheritProps } from '@fastkit/vue-utils';
|
|
49
51
|
import { NavigationFailure } from 'vue-router';
|
|
50
|
-
import { Node as Node_2 } from '
|
|
52
|
+
import { Node as Node_2 } from '@tiptap/vue-3';
|
|
53
|
+
import { Node as Node_3 } from 'prosemirror-model';
|
|
51
54
|
import { Numberish } from '@fastkit/vue-kit';
|
|
52
55
|
import { OrderedListOptions } from '@tiptap/extension-ordered-list';
|
|
53
56
|
import { Prop } from 'vue';
|
|
@@ -106,8 +109,6 @@ export declare const AVATAR_SIZES: readonly ["sm", "md", "lg"];
|
|
|
106
109
|
|
|
107
110
|
export declare type AvatarSize = typeof AVATAR_SIZES[number];
|
|
108
111
|
|
|
109
|
-
export declare function BadWords(words: string[]): typeof LinterPlugin;
|
|
110
|
-
|
|
111
112
|
export declare interface BreadcrumbsItem extends Pick<NavigationableInheritProps, 'to' | 'disabled'> {
|
|
112
113
|
/**
|
|
113
114
|
* "正確なマッチモード" を強制する場合true
|
|
@@ -476,6 +477,13 @@ export declare function createControlProps(): {
|
|
|
476
477
|
loading: BooleanConstructor;
|
|
477
478
|
};
|
|
478
479
|
|
|
480
|
+
export declare interface CreatedWysiwygExtension<Options = any, Storage = any> {
|
|
481
|
+
__isCreatedWysiwygExtension: true;
|
|
482
|
+
_configs: Partial<Options>[];
|
|
483
|
+
configure(options?: Partial<Options>): CreatedWysiwygExtension<Options, Storage>;
|
|
484
|
+
raw: WysiwygExtensionSource<Options, Storage>;
|
|
485
|
+
}
|
|
486
|
+
|
|
479
487
|
export declare function createElevationProps(): {
|
|
480
488
|
elevation: PropType<VuiElevationValue>;
|
|
481
489
|
};
|
|
@@ -1050,6 +1058,15 @@ export declare function createVFormProps(): {
|
|
|
1050
1058
|
errorMessages: PropType<string | string[]>;
|
|
1051
1059
|
};
|
|
1052
1060
|
|
|
1061
|
+
export declare function createWysiwygColorTool(opts: CreateWysiwygColorToolOptions): WysiwygEditorToolFactory<void>;
|
|
1062
|
+
|
|
1063
|
+
export declare interface CreateWysiwygColorToolOptions {
|
|
1064
|
+
items: WysiwygColorItem[];
|
|
1065
|
+
withLabel?: boolean;
|
|
1066
|
+
}
|
|
1067
|
+
|
|
1068
|
+
export declare function createWysiwygExtension<Options = any, Storage = any>(extension: WysiwygExtensionSource<Options, Storage>): CreatedWysiwygExtension<Options, Storage>;
|
|
1069
|
+
|
|
1053
1070
|
declare const DATA_TABLE_DEFAULTS: {
|
|
1054
1071
|
itemKey: string;
|
|
1055
1072
|
pageQuery: string;
|
|
@@ -1361,8 +1378,6 @@ export declare type ElevationProps = ExtractPropTypes<ReturnType<typeof createEl
|
|
|
1361
1378
|
|
|
1362
1379
|
declare type EmptyIconSymbol = '$empty';
|
|
1363
1380
|
|
|
1364
|
-
declare type FixFn = (view: EditorView, issue: LinterResult) => any;
|
|
1365
|
-
|
|
1366
1381
|
export declare type GridContainerAlignContentValue = 'flex-start' | 'flex-end' | 'start' | 'end' | 'stretch' | 'baseline' | 'center' | 'self-start' | 'self-end';
|
|
1367
1382
|
|
|
1368
1383
|
export declare type GridContainerDirectionValue = 'row' | 'row-reverse' | 'column' | 'column-reverse';
|
|
@@ -1381,11 +1396,6 @@ export declare type GridItemNumberSizeValue = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
|
|
|
1381
1396
|
|
|
1382
1397
|
export declare type GridItemSizeValue = GridItemNumberSizeValue | 'auto';
|
|
1383
1398
|
|
|
1384
|
-
export declare class HeadingLevel extends LinterPlugin {
|
|
1385
|
-
fixHeader(level: number): ({ state, dispatch }: EditorView, issue: LinterResult) => void;
|
|
1386
|
-
scan(): this;
|
|
1387
|
-
}
|
|
1388
|
-
|
|
1389
1399
|
export { ICON_NAMES }
|
|
1390
1400
|
|
|
1391
1401
|
declare type IconGenerator = (input: IconPropInout) => VNodeChild;
|
|
@@ -1416,32 +1426,6 @@ declare interface InputBoxSlots {
|
|
|
1416
1426
|
|
|
1417
1427
|
export declare function installVuiPlugin(app: App, opts: VuiPluginOptions): App<any>;
|
|
1418
1428
|
|
|
1419
|
-
export declare const Linter: Extension<LinterOptions, any>;
|
|
1420
|
-
|
|
1421
|
-
export declare interface LinterOptions {
|
|
1422
|
-
plugins: Array<typeof LinterPlugin>;
|
|
1423
|
-
}
|
|
1424
|
-
|
|
1425
|
-
export declare class LinterPlugin {
|
|
1426
|
-
protected doc: Node_2;
|
|
1427
|
-
private results;
|
|
1428
|
-
constructor(doc: Node_2);
|
|
1429
|
-
record(result: RawLinterResult): void;
|
|
1430
|
-
scan(): this;
|
|
1431
|
-
getResults(): LinterResult[];
|
|
1432
|
-
}
|
|
1433
|
-
|
|
1434
|
-
declare interface LinterResult {
|
|
1435
|
-
level: LinterResultLevel;
|
|
1436
|
-
message: string;
|
|
1437
|
-
from: number;
|
|
1438
|
-
to: number;
|
|
1439
|
-
fix?: FixFn;
|
|
1440
|
-
fixMessage?: string;
|
|
1441
|
-
}
|
|
1442
|
-
|
|
1443
|
-
declare type LinterResultLevel = 'warning' | 'error';
|
|
1444
|
-
|
|
1445
1429
|
export declare const listTileEmits: {
|
|
1446
1430
|
changeActive: (isActive: boolean) => boolean;
|
|
1447
1431
|
};
|
|
@@ -1500,12 +1484,6 @@ export declare function paginationProps(): {
|
|
|
1500
1484
|
|
|
1501
1485
|
declare type PrefixedEventName<S extends string> = `on${Capitalize<S>}`;
|
|
1502
1486
|
|
|
1503
|
-
export declare class Punctuation extends LinterPlugin {
|
|
1504
|
-
regex: RegExp;
|
|
1505
|
-
fix(replacement: any): ({ state, dispatch }: EditorView, issue: LinterResult) => void;
|
|
1506
|
-
scan(): this;
|
|
1507
|
-
}
|
|
1508
|
-
|
|
1509
1487
|
export declare type RawBreadcrumbsItem = string | BreadcrumbsItem;
|
|
1510
1488
|
|
|
1511
1489
|
declare type RawGridValue<T extends number | string = number | string> = T | Partial<Record<MediaMatchKey, T>> | undefined;
|
|
@@ -1516,8 +1494,10 @@ export declare type RawIconProp = IconName | EmptyIconSymbol | ToggleableIconHoo
|
|
|
1516
1494
|
|
|
1517
1495
|
export declare function rawIconProp(): PropType<RawIconProp>;
|
|
1518
1496
|
|
|
1519
|
-
declare interface RawLinterResult extends Omit<
|
|
1520
|
-
level?:
|
|
1497
|
+
declare interface RawLinterResult extends Omit<WysiwygLinterResult, 'level' | 'fix' | 'id' | 'icon'> {
|
|
1498
|
+
level?: WysiwygLinterResultLevel;
|
|
1499
|
+
icon?: boolean;
|
|
1500
|
+
fix?: WysiwygLinterFixer | WysiwygLinterFixer[];
|
|
1521
1501
|
}
|
|
1522
1502
|
|
|
1523
1503
|
export declare type RawVButtonIcon = IconName | VButtonIcon;
|
|
@@ -1543,7 +1523,7 @@ export declare type RawVuiServiceUISettings = Partial<VuiServiceUISettings>;
|
|
|
1543
1523
|
|
|
1544
1524
|
export declare type RawWysiwygEditorTool = WysiwygEditorTool | WysiwygEditorToolFactory<any>;
|
|
1545
1525
|
|
|
1546
|
-
export declare type RawWysiwygExtension =
|
|
1526
|
+
export declare type RawWysiwygExtension<Options = any, Storage = any> = WysiwygExtensionSource<Options, Storage> | CreatedWysiwygExtension<Options, Storage>;
|
|
1547
1527
|
|
|
1548
1528
|
declare type RecursiveArray<T> = T | RecursiveArray<T>[];
|
|
1549
1529
|
|
|
@@ -9588,6 +9568,7 @@ export declare class VuiService {
|
|
|
9588
9568
|
alert(...args: Parameters<VueStackService['alert']>): Promise<any>;
|
|
9589
9569
|
confirm(...args: Parameters<VueStackService['confirm']>): Promise<any>;
|
|
9590
9570
|
snackbar(...args: Parameters<VueStackService['snackbar']>): Promise<any>;
|
|
9571
|
+
menu(...args: Parameters<VueStackService['menu']>): Promise<any>;
|
|
9591
9572
|
formPrompt<T extends {
|
|
9592
9573
|
[key: string]: any;
|
|
9593
9574
|
} = {
|
|
@@ -9636,6 +9617,7 @@ export declare interface VuiServiceUISettings {
|
|
|
9636
9617
|
primaryScope: ScopeName;
|
|
9637
9618
|
plainVariant: ColorVariant;
|
|
9638
9619
|
containedVariant: ColorVariant;
|
|
9620
|
+
warningScope: ScopeName;
|
|
9639
9621
|
errorScope: ScopeName;
|
|
9640
9622
|
buttonDefault: {
|
|
9641
9623
|
color: ScopeName;
|
|
@@ -9667,7 +9649,7 @@ export declare type VuiVNodeResolver = () => VNodeChild;
|
|
|
9667
9649
|
|
|
9668
9650
|
export declare const VWysiwygEditor: DefineComponent<{
|
|
9669
9651
|
extensions: {
|
|
9670
|
-
type: PropType<RawWysiwygExtension[]>;
|
|
9652
|
+
type: PropType<RawWysiwygExtension<any, any>[]>;
|
|
9671
9653
|
default: () => never[];
|
|
9672
9654
|
};
|
|
9673
9655
|
tools: {
|
|
@@ -9798,7 +9780,7 @@ export declare const VWysiwygEditor: DefineComponent<{
|
|
|
9798
9780
|
blur: (ev: FocusEvent) => boolean;
|
|
9799
9781
|
}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes<{
|
|
9800
9782
|
extensions: {
|
|
9801
|
-
type: PropType<RawWysiwygExtension[]>;
|
|
9783
|
+
type: PropType<RawWysiwygExtension<any, any>[]>;
|
|
9802
9784
|
default: () => never[];
|
|
9803
9785
|
};
|
|
9804
9786
|
tools: {
|
|
@@ -9905,7 +9887,7 @@ export declare const VWysiwygEditor: DefineComponent<{
|
|
|
9905
9887
|
hiddenInfo: boolean;
|
|
9906
9888
|
errors: FormNodeError[];
|
|
9907
9889
|
loading: boolean;
|
|
9908
|
-
extensions: RawWysiwygExtension[];
|
|
9890
|
+
extensions: RawWysiwygExtension<any, any>[];
|
|
9909
9891
|
tools: RawWysiwygEditorTool[];
|
|
9910
9892
|
floatingToolbar: boolean;
|
|
9911
9893
|
disabledMinHeight: boolean;
|
|
@@ -9914,6 +9896,18 @@ export declare const VWysiwygEditor: DefineComponent<{
|
|
|
9914
9896
|
|
|
9915
9897
|
export declare const WysiwygBulletListTool: WysiwygEditorToolFactory<BulletListOptions>;
|
|
9916
9898
|
|
|
9899
|
+
export declare const WysiwygColorExtension: Extension_2<WysiwygColorOptions, any>;
|
|
9900
|
+
|
|
9901
|
+
export declare interface WysiwygColorItem {
|
|
9902
|
+
key?: string | number;
|
|
9903
|
+
name?: VNodeChild | ((vui: VuiService) => VNodeChild);
|
|
9904
|
+
color: string | null;
|
|
9905
|
+
}
|
|
9906
|
+
|
|
9907
|
+
export declare type WysiwygColorOptions = {
|
|
9908
|
+
types: string[];
|
|
9909
|
+
};
|
|
9910
|
+
|
|
9917
9911
|
export declare interface WysiwygEditorContext {
|
|
9918
9912
|
editor: Editor;
|
|
9919
9913
|
vui: VuiService;
|
|
@@ -9930,7 +9924,9 @@ export declare interface WysiwygEditorEventsOptions extends Partial<Pick<EditorO
|
|
|
9930
9924
|
|
|
9931
9925
|
export declare class WysiwygEditorInitializeContext {
|
|
9932
9926
|
readonly listeners: WysiwygEditorEventsBucket;
|
|
9933
|
-
|
|
9927
|
+
private readonly _vui;
|
|
9928
|
+
get vui(): VuiService;
|
|
9929
|
+
constructor(vuiGetter: () => VuiService, opts?: WysiwygEditorEventsOptions);
|
|
9934
9930
|
on<EV extends WysiwygEditorEvent>(ev: EV, handler: NonNullable<WysiwygEditorEventsOptions[PrefixedEventName<EV>]>): () => void;
|
|
9935
9931
|
off<EV extends WysiwygEditorEvent>(ev: EV, handler: NonNullable<WysiwygEditorEventsOptions[PrefixedEventName<EV>]>): void;
|
|
9936
9932
|
editorOptions(): WysiwygEditorEventsOptions;
|
|
@@ -9940,7 +9936,7 @@ export declare type WysiwygEditorPrefixedEvent = PrefixedEventName<WysiwygEditor
|
|
|
9940
9936
|
|
|
9941
9937
|
export declare interface WysiwygEditorTool {
|
|
9942
9938
|
key: string;
|
|
9943
|
-
icon: IconName | ((ctx: WysiwygEditorContext) => IconName);
|
|
9939
|
+
icon: IconName | ((ctx: WysiwygEditorContext) => IconName | (() => VNodeChild));
|
|
9944
9940
|
active?: boolean | ((ctx: WysiwygEditorContext) => boolean);
|
|
9945
9941
|
disabled?: boolean | ((ctx: WysiwygEditorContext) => boolean);
|
|
9946
9942
|
onClick: (ctx: WysiwygEditorContext, ev: MouseEvent) => any;
|
|
@@ -9950,7 +9946,9 @@ export declare interface WysiwygEditorTool {
|
|
|
9950
9946
|
|
|
9951
9947
|
export declare type WysiwygEditorToolFactory<Options = void> = (vui: VuiService, options?: Options) => WysiwygEditorTool | WysiwygEditorTool[];
|
|
9952
9948
|
|
|
9953
|
-
export declare type WysiwygExtensionFactory = (ctx: WysiwygEditorInitializeContext) =>
|
|
9949
|
+
export declare type WysiwygExtensionFactory<Options = any, Storage = any> = (ctx: WysiwygEditorInitializeContext) => Extension<Options, Storage> | Node_2<Options, Storage> | Mark<Options, Storage>;
|
|
9950
|
+
|
|
9951
|
+
export declare type WysiwygExtensionSource<Options = any, Storage = any> = Extension<Options, Storage> | Node_2<Options, Storage> | Mark<Options, Storage> | WysiwygExtensionFactory<Options, Storage>;
|
|
9954
9952
|
|
|
9955
9953
|
export declare const WysiwygFormatBoldTool: WysiwygEditorToolFactory<BoldOptions>;
|
|
9956
9954
|
|
|
@@ -9962,9 +9960,60 @@ export declare const WysiwygHistoryTool: WysiwygEditorToolFactory<HistoryOptions
|
|
|
9962
9960
|
|
|
9963
9961
|
export declare const WysiwygLinkTool: WysiwygEditorToolFactory<LinkOptions>;
|
|
9964
9962
|
|
|
9965
|
-
export declare const
|
|
9963
|
+
export declare const WysiwygLinter: CreatedWysiwygExtension<WysiwygLinterOptions, WysiwygLinterStorage>;
|
|
9964
|
+
|
|
9965
|
+
export declare function WysiwygLinterBadWords(words: string[]): typeof WysiwygLinterPlugin;
|
|
9966
|
+
|
|
9967
|
+
declare interface WysiwygLinterFixer {
|
|
9968
|
+
message: WysiwygLinterFixMessage;
|
|
9969
|
+
handler: WysiwygLinterFixFn;
|
|
9970
|
+
}
|
|
9971
|
+
|
|
9972
|
+
declare type WysiwygLinterFixFn = (view: EditorView, issue: WysiwygLinterResult) => any;
|
|
9966
9973
|
|
|
9967
|
-
|
|
9974
|
+
declare type WysiwygLinterFixMessage = string | (() => VNodeChild);
|
|
9975
|
+
|
|
9976
|
+
export declare class WysiwygLinterHeadingLevel extends WysiwygLinterPlugin {
|
|
9977
|
+
fixHeader(level: number): ({ state, dispatch }: EditorView, issue: WysiwygLinterResult) => void;
|
|
9978
|
+
scan(): this;
|
|
9979
|
+
}
|
|
9980
|
+
|
|
9981
|
+
export declare interface WysiwygLinterOptions {
|
|
9982
|
+
plugins: Array<typeof WysiwygLinterPlugin>;
|
|
9983
|
+
}
|
|
9984
|
+
|
|
9985
|
+
export declare class WysiwygLinterPlugin {
|
|
9986
|
+
protected doc: Node_3;
|
|
9987
|
+
private results;
|
|
9988
|
+
constructor(doc: Node_3);
|
|
9989
|
+
record(result: RawLinterResult): void;
|
|
9990
|
+
scan(): this;
|
|
9991
|
+
getResults(): WysiwygLinterResult[];
|
|
9992
|
+
}
|
|
9993
|
+
|
|
9994
|
+
export declare class WysiwygLinterPunctuation extends WysiwygLinterPlugin {
|
|
9995
|
+
regex: RegExp;
|
|
9996
|
+
fix(replacement: any): ({ state, dispatch }: EditorView, issue: WysiwygLinterResult) => void;
|
|
9997
|
+
scan(): this;
|
|
9998
|
+
}
|
|
9999
|
+
|
|
10000
|
+
declare interface WysiwygLinterResult {
|
|
10001
|
+
id: string;
|
|
10002
|
+
icon: boolean;
|
|
10003
|
+
level: WysiwygLinterResultLevel;
|
|
10004
|
+
message: WysiwygLinterFixMessage;
|
|
10005
|
+
from: number;
|
|
10006
|
+
to: number;
|
|
10007
|
+
fix: WysiwygLinterFixer[];
|
|
10008
|
+
}
|
|
10009
|
+
|
|
10010
|
+
declare type WysiwygLinterResultLevel = 'warning' | 'error';
|
|
10011
|
+
|
|
10012
|
+
declare interface WysiwygLinterStorage {
|
|
10013
|
+
issues: WysiwygLinterResult[];
|
|
10014
|
+
}
|
|
10015
|
+
|
|
10016
|
+
export declare const WysiwygOrderedListTool: WysiwygEditorToolFactory<OrderedListOptions>;
|
|
9968
10017
|
|
|
9969
10018
|
|
|
9970
10019
|
export * from "@fastkit/vue-kit";
|