@hufe921/canvas-editor 0.9.91 → 0.9.93

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 (36) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/dist/canvas-editor.es.js +1535 -1129
  3. package/dist/canvas-editor.es.js.map +1 -1
  4. package/dist/canvas-editor.umd.js +33 -33
  5. package/dist/canvas-editor.umd.js.map +1 -1
  6. package/dist/src/editor/core/actuator/Actuator.d.ts +7 -0
  7. package/dist/src/editor/core/actuator/handlers/positionContextChange.d.ts +3 -0
  8. package/dist/src/editor/core/command/Command.d.ts +1 -0
  9. package/dist/src/editor/core/command/CommandAdapt.d.ts +3 -2
  10. package/dist/src/editor/core/draw/Draw.d.ts +6 -0
  11. package/dist/src/editor/core/draw/control/date/DateControl.d.ts +1 -0
  12. package/dist/src/editor/core/draw/control/select/SelectControl.d.ts +1 -0
  13. package/dist/src/editor/core/draw/control/text/TextControl.d.ts +1 -0
  14. package/dist/src/editor/core/draw/particle/date/DateParticle.d.ts +1 -0
  15. package/dist/src/editor/core/draw/particle/table/TableOperate.d.ts +28 -0
  16. package/dist/src/editor/core/draw/particle/table/TableTool.d.ts +5 -0
  17. package/dist/src/editor/core/event/GlobalEvent.d.ts +1 -0
  18. package/dist/src/editor/core/position/Position.d.ts +6 -1
  19. package/dist/src/editor/dataset/constant/ContextMenu.d.ts +1 -0
  20. package/dist/src/editor/dataset/enum/Common.d.ts +1 -0
  21. package/dist/src/editor/dataset/enum/Editor.d.ts +2 -1
  22. package/dist/src/editor/interface/Catalog.d.ts +1 -0
  23. package/dist/src/editor/interface/Control.d.ts +2 -1
  24. package/dist/src/editor/interface/Draw.d.ts +7 -1
  25. package/dist/src/editor/interface/Editor.d.ts +4 -1
  26. package/dist/src/editor/interface/Element.d.ts +1 -0
  27. package/dist/src/editor/interface/EventBus.d.ts +2 -1
  28. package/dist/src/editor/interface/Listener.d.ts +6 -0
  29. package/dist/src/editor/interface/Position.d.ts +11 -3
  30. package/dist/src/editor/interface/Range.d.ts +2 -0
  31. package/dist/src/editor/interface/Row.d.ts +1 -0
  32. package/dist/src/editor/interface/table/Td.d.ts +4 -0
  33. package/dist/src/editor/interface/table/Tr.d.ts +2 -0
  34. package/dist/src/editor/utils/element.d.ts +4 -1
  35. package/dist/src/editor/utils/index.d.ts +2 -0
  36. package/package.json +1 -1
@@ -0,0 +1,7 @@
1
+ import { Draw } from '../draw/Draw';
2
+ export declare class Actuator {
3
+ private draw;
4
+ private eventBus;
5
+ constructor(draw: Draw);
6
+ private execute;
7
+ }
@@ -0,0 +1,3 @@
1
+ import { IPositionContextChangePayload } from '../../../interface/Listener';
2
+ import { Draw } from '../../draw/Draw';
3
+ export declare function positionContextChange(draw: Draw, payload: IPositionContextChangePayload): void;
@@ -93,6 +93,7 @@ export declare class Command {
93
93
  executeInsertControl: CommandAdapt['insertControl'];
94
94
  executeUpdateOptions: CommandAdapt['updateOptions'];
95
95
  executeInsertTitle: CommandAdapt['insertTitle'];
96
+ executeFocus: CommandAdapt['focus'];
96
97
  getCatalog: CommandAdapt['getCatalog'];
97
98
  getImage: CommandAdapt['getImage'];
98
99
  getOptions: CommandAdapt['getOptions'];
@@ -9,7 +9,7 @@ import { ICatalog } from '../../interface/Catalog';
9
9
  import { DeepRequired } from '../../interface/Common';
10
10
  import { IGetControlValueOption, IGetControlValueResult, ILocationControlOption, ISetControlExtensionOption, ISetControlHighlightOption, ISetControlProperties, ISetControlValueOption } from '../../interface/Control';
11
11
  import { IAppendElementListOption, IDrawImagePayload, IForceUpdateOption, IGetImageOption, IGetValueOption, IPainterOption } from '../../interface/Draw';
12
- import { IEditorData, IEditorHTML, IEditorOption, IEditorResult, IEditorText, ISetValueOption, IUpdateOption } from '../../interface/Editor';
12
+ import { IEditorData, IEditorHTML, IEditorOption, IEditorResult, IEditorText, IFocusOption, ISetValueOption, IUpdateOption } from '../../interface/Editor';
13
13
  import { IElement, IUpdateElementByIdOption } from '../../interface/Element';
14
14
  import { IPasteOption, IPositionContextByEvent } from '../../interface/Event';
15
15
  import { IMargin } from '../../interface/Margin';
@@ -25,13 +25,13 @@ export declare class CommandAdapt {
25
25
  private position;
26
26
  private historyManager;
27
27
  private canvasEvent;
28
- private tableTool;
29
28
  private options;
30
29
  private control;
31
30
  private workerManager;
32
31
  private searchManager;
33
32
  private i18n;
34
33
  private zone;
34
+ private tableOperate;
35
35
  constructor(draw: Draw);
36
36
  mode(payload: EditorMode): void;
37
37
  cut(): void;
@@ -149,4 +149,5 @@ export declare class CommandAdapt {
149
149
  getTitleValue(payload: IGetTitleValueOption): IGetTitleValueResult | null;
150
150
  getPositionContextByEvent(evt: MouseEvent): IPositionContextByEvent | null;
151
151
  insertTitle(payload: IElement): void;
152
+ focus(payload?: IFocusOption): void;
152
153
  }
@@ -35,6 +35,8 @@ import { EventBusMap } from '../../interface/EventBus';
35
35
  import { Group } from './interactive/Group';
36
36
  import { Override } from '../override/Override';
37
37
  import { LineBreakParticle } from './particle/LineBreakParticle';
38
+ import { ITd } from '../../interface/table/Td';
39
+ import { TableOperate } from './particle/table/TableOperate';
38
40
  export declare class Draw {
39
41
  private container;
40
42
  private pageContainer;
@@ -69,6 +71,7 @@ export declare class Draw {
69
71
  private textParticle;
70
72
  private tableParticle;
71
73
  private tableTool;
74
+ private tableOperate;
72
75
  private pageNumber;
73
76
  private lineNumber;
74
77
  private waterMark;
@@ -108,6 +111,7 @@ export declare class Draw {
108
111
  setMode(payload: EditorMode): void;
109
112
  isReadonly(): boolean;
110
113
  isDisabled(): boolean;
114
+ isDesignMode(): boolean;
111
115
  getOriginalWidth(): number;
112
116
  getOriginalHeight(): number;
113
117
  getWidth(): number;
@@ -159,6 +163,7 @@ export declare class Draw {
159
163
  getOriginalElementList(): IElement[];
160
164
  getOriginalMainElementList(): IElement[];
161
165
  getFooterElementList(): IElement[];
166
+ getTd(): ITd | null;
162
167
  insertElementList(payload: IElement[]): void;
163
168
  appendElementList(elementList: IElement[], options?: IAppendElementListOption): void;
164
169
  spliceElementList(elementList: IElement[], start: number, deleteCount: number, ...items: IElement[]): void;
@@ -171,6 +176,7 @@ export declare class Draw {
171
176
  getPreviewer(): Previewer;
172
177
  getImageParticle(): ImageParticle;
173
178
  getTableTool(): TableTool;
179
+ getTableOperate(): TableOperate;
174
180
  getTableParticle(): TableParticle;
175
181
  getHeader(): Header;
176
182
  getFooter(): Footer;
@@ -7,6 +7,7 @@ export declare class DateControl implements IControlInstance {
7
7
  private control;
8
8
  private isPopup;
9
9
  private datePicker;
10
+ private options;
10
11
  constructor(element: IElement, control: Control);
11
12
  setElement(element: IElement): void;
12
13
  getElement(): IElement;
@@ -6,6 +6,7 @@ export declare class SelectControl implements IControlInstance {
6
6
  private control;
7
7
  private isPopup;
8
8
  private selectDom;
9
+ private options;
9
10
  constructor(element: IElement, control: Control);
10
11
  setElement(element: IElement): void;
11
12
  getElement(): IElement;
@@ -4,6 +4,7 @@ import { Control } from '../Control';
4
4
  export declare class TextControl implements IControlInstance {
5
5
  private element;
6
6
  private control;
7
+ private options;
7
8
  constructor(element: IElement, control: Control);
8
9
  setElement(element: IElement): void;
9
10
  getElement(): IElement;
@@ -4,6 +4,7 @@ export declare class DateParticle {
4
4
  private draw;
5
5
  private range;
6
6
  private datePicker;
7
+ private options;
7
8
  constructor(draw: Draw);
8
9
  private _setValue;
9
10
  getDateElementRange(): [number, number] | null;
@@ -0,0 +1,28 @@
1
+ import { TableBorder, VerticalAlign } from '../../../..';
2
+ import { TdBorder, TdSlash } from '../../../../dataset/enum/table/Table';
3
+ import { Draw } from '../../Draw';
4
+ export declare class TableOperate {
5
+ private draw;
6
+ private range;
7
+ private position;
8
+ private tableTool;
9
+ private tableParticle;
10
+ private options;
11
+ constructor(draw: Draw);
12
+ insertTable(row: number, col: number): void;
13
+ insertTableTopRow(): void;
14
+ insertTableBottomRow(): void;
15
+ insertTableLeftCol(): void;
16
+ insertTableRightCol(): void;
17
+ deleteTableRow(): void;
18
+ deleteTableCol(): void;
19
+ deleteTable(): void;
20
+ mergeTableCell(): void;
21
+ cancelMergeTableCell(): void;
22
+ tableTdVerticalAlign(payload: VerticalAlign): void;
23
+ tableBorderType(payload: TableBorder): void;
24
+ tableTdBorderType(payload: TdBorder): void;
25
+ tableTdSlashType(payload: TdSlash): void;
26
+ tableTdBackgroundColor(payload: string): void;
27
+ tableSelectAll(): void;
28
+ }
@@ -2,6 +2,9 @@ import { Draw } from '../../Draw';
2
2
  export declare class TableTool {
3
3
  private readonly MIN_TD_WIDTH;
4
4
  private readonly ROW_COL_OFFSET;
5
+ private readonly ROW_COL_QUICK_WIDTH;
6
+ private readonly ROW_COL_QUICK_OFFSET;
7
+ private readonly ROW_COL_QUICK_POSITION;
5
8
  private readonly BORDER_VALUE;
6
9
  private draw;
7
10
  private canvas;
@@ -9,6 +12,8 @@ export declare class TableTool {
9
12
  private position;
10
13
  private container;
11
14
  private toolRowContainer;
15
+ private toolRowAddBtn;
16
+ private toolColAddBtn;
12
17
  private toolColContainer;
13
18
  private toolBorderContainer;
14
19
  private anchorLine;
@@ -11,6 +11,7 @@ export declare class GlobalEvent {
11
11
  private hyperlinkParticle;
12
12
  private control;
13
13
  private dateParticle;
14
+ private imageParticle;
14
15
  private dprMediaQueryList;
15
16
  constructor(draw: Draw, canvasEvent: CanvasEvent);
16
17
  register(): void;
@@ -1,4 +1,4 @@
1
- import { IComputePageRowPositionPayload, IComputePageRowPositionResult, IComputeRowPositionPayload, IFloatPosition, IGetFloatPositionByXYPayload } from '../../interface/Position';
1
+ import { IComputePageRowPositionPayload, IComputePageRowPositionResult, IComputeRowPositionPayload, IFloatPosition, IGetFloatPositionByXYPayload, ISetSurroundPositionPayload } from '../../interface/Position';
2
2
  import { IElement, IElementPosition } from '../../interface/Element';
3
3
  import { ICurrentPosition, IGetPositionByXYPayload, IPositionContext } from '../../interface/Position';
4
4
  import { Draw } from '../draw/Draw';
@@ -8,6 +8,7 @@ export declare class Position {
8
8
  private positionList;
9
9
  private floatPositionList;
10
10
  private draw;
11
+ private eventBus;
11
12
  private options;
12
13
  constructor(draw: Draw);
13
14
  getFloatPositionList(): IFloatPosition[];
@@ -29,4 +30,8 @@ export declare class Position {
29
30
  getPositionByXY(payload: IGetPositionByXYPayload): ICurrentPosition;
30
31
  getFloatPositionByXY(payload: IGetFloatPositionByXYPayload): ICurrentPosition | void;
31
32
  adjustPositionContext(payload: IGetPositionByXYPayload): ICurrentPosition | null;
33
+ setSurroundPosition(payload: ISetSurroundPositionPayload): {
34
+ x: number;
35
+ rowIncreaseWidth: number;
36
+ };
32
37
  }
@@ -23,6 +23,7 @@ export declare const INTERNAL_CONTEXT_MENU_KEY: {
23
23
  TEXT_WRAP: string;
24
24
  TEXT_WRAP_EMBED: string;
25
25
  TEXT_WRAP_UP_DOWN: string;
26
+ TEXT_WRAP_SURROUND: string;
26
27
  TEXT_WRAP_FLOAT_TOP: string;
27
28
  TEXT_WRAP_FLOAT_BOTTOM: string;
28
29
  };
@@ -10,6 +10,7 @@ export declare enum NumberType {
10
10
  export declare enum ImageDisplay {
11
11
  INLINE = "inline",
12
12
  BLOCK = "block",
13
+ SURROUND = "surround",
13
14
  FLOAT_TOP = "float-top",
14
15
  FLOAT_BOTTOM = "float-bottom"
15
16
  }
@@ -17,7 +17,8 @@ export declare enum EditorMode {
17
17
  CLEAN = "clean",
18
18
  READONLY = "readonly",
19
19
  FORM = "form",
20
- PRINT = "print"
20
+ PRINT = "print",
21
+ DESIGN = "design"
21
22
  }
22
23
  export declare enum EditorZone {
23
24
  HEADER = "header",
@@ -3,6 +3,7 @@ export interface ICatalogItem {
3
3
  id: string;
4
4
  name: string;
5
5
  level: TitleLevel;
6
+ pageNo: number;
6
7
  subCatalog: ICatalogItem[];
7
8
  }
8
9
  export type ICatalog = ICatalogItem[];
@@ -70,6 +70,7 @@ export interface IControlOption {
70
70
  postfix?: string;
71
71
  borderWidth?: number;
72
72
  borderColor?: string;
73
+ activeBackgroundColor?: string;
73
74
  }
74
75
  export interface IControlInitOption {
75
76
  index: number;
@@ -122,7 +123,7 @@ export type ISetControlProperties = {
122
123
  conceptId?: string;
123
124
  properties: Partial<Omit<IControl, 'value'>>;
124
125
  };
125
- export type IRepaintControlOption = Pick<IDrawOption, 'curIndex' | 'isCompute' | 'isSubmitHistory'>;
126
+ export type IRepaintControlOption = Pick<IDrawOption, 'curIndex' | 'isCompute' | 'isSubmitHistory' | 'isSetCursor'>;
126
127
  export interface INextControlContext {
127
128
  positionContext: IPositionContext;
128
129
  nextIndex: number;
@@ -33,7 +33,7 @@ export interface IDrawRowPayload {
33
33
  }
34
34
  export interface IDrawFloatPayload {
35
35
  pageNo: number;
36
- imgDisplay: ImageDisplay;
36
+ imgDisplays: ImageDisplay[];
37
37
  }
38
38
  export interface IDrawPagePayload {
39
39
  elementList: IElement[];
@@ -58,5 +58,11 @@ export interface IGetImageOption {
58
58
  export interface IComputeRowListPayload {
59
59
  innerWidth: number;
60
60
  elementList: IElement[];
61
+ startX?: number;
62
+ startY?: number;
63
+ isFromTable?: boolean;
61
64
  isPagingMode?: boolean;
65
+ pageHeight?: number;
66
+ mainOuterHeight?: number;
67
+ surroundElementList?: IElement[];
62
68
  }
@@ -1,4 +1,4 @@
1
- import { IElement } from '..';
1
+ import { IElement, LocationPosition } from '..';
2
2
  import { EditorMode, PageMode, PaperDirection, RenderMode, WordBreak } from '../dataset/enum/Editor';
3
3
  import { IBackgroundOption } from './Background';
4
4
  import { ICheckboxOption } from './Checkbox';
@@ -101,3 +101,6 @@ export type IUpdateOption = Omit<IEditorOption, 'mode' | 'width' | 'height' | 's
101
101
  export interface ISetValueOption {
102
102
  isSetCursor?: boolean;
103
103
  }
104
+ export interface IFocusOption {
105
+ position?: LocationPosition;
106
+ }
@@ -100,6 +100,7 @@ export interface IImageElement {
100
100
  imgFloatPosition?: {
101
101
  x: number;
102
102
  y: number;
103
+ pageNo?: number;
103
104
  };
104
105
  }
105
106
  export interface IBlockElement {
@@ -1,4 +1,4 @@
1
- import { IContentChange, IControlChange, IIntersectionPageNoChange, IMouseEventChange, IPageModeChange, IPageScaleChange, IPageSizeChange, IRangeStyleChange, ISaved, IVisiblePageNoListChange, IZoneChange } from './Listener';
1
+ import { IContentChange, IControlChange, IIntersectionPageNoChange, IMouseEventChange, IPageModeChange, IPageScaleChange, IPageSizeChange, IPositionContextChange, IRangeStyleChange, ISaved, IVisiblePageNoListChange, IZoneChange } from './Listener';
2
2
  export interface EventBusMap {
3
3
  rangeStyleChange: IRangeStyleChange;
4
4
  visiblePageNoListChange: IVisiblePageNoListChange;
@@ -13,4 +13,5 @@ export interface EventBusMap {
13
13
  mousemove: IMouseEventChange;
14
14
  mouseleave: IMouseEventChange;
15
15
  mouseenter: IMouseEventChange;
16
+ positionContextChange: IPositionContextChange;
16
17
  }
@@ -2,6 +2,7 @@ import { EditorZone, ElementType, ListStyle, ListType, PageMode, TitleLevel } fr
2
2
  import { RowFlex } from '../dataset/enum/Row';
3
3
  import { IControl } from './Control';
4
4
  import { IEditorResult } from './Editor';
5
+ import { IPositionContext } from './Position';
5
6
  import { ITextDecoration } from './Text';
6
7
  export interface IRangeStyle {
7
8
  type: ElementType | null;
@@ -37,3 +38,8 @@ export type IControlChange = (payload: IControl | null) => void;
37
38
  export type IPageModeChange = (payload: PageMode) => void;
38
39
  export type IZoneChange = (payload: EditorZone) => void;
39
40
  export type IMouseEventChange = (evt: MouseEvent) => void;
41
+ export interface IPositionContextChangePayload {
42
+ value: IPositionContext;
43
+ oldValue: IPositionContext;
44
+ }
45
+ export type IPositionContextChange = (payload: IPositionContextChangePayload) => void;
@@ -1,7 +1,7 @@
1
1
  import { IElement, ImageDisplay, IRange } from '..';
2
2
  import { EditorZone } from '../dataset/enum/Editor';
3
- import { IElementPosition } from './Element';
4
- import { IRow } from './Row';
3
+ import { IElementFillRect, IElementPosition } from './Element';
4
+ import { IRow, IRowElement } from './Row';
5
5
  import { ITd } from './table/Td';
6
6
  export interface ICurrentPosition {
7
7
  index: number;
@@ -33,7 +33,7 @@ export interface IGetPositionByXYPayload {
33
33
  positionList?: IElementPosition[];
34
34
  }
35
35
  export type IGetFloatPositionByXYPayload = IGetPositionByXYPayload & {
36
- imgDisplay: ImageDisplay;
36
+ imgDisplays: ImageDisplay[];
37
37
  };
38
38
  export interface IPositionContext {
39
39
  isTable: boolean;
@@ -90,3 +90,11 @@ export interface ILocationPosition {
90
90
  range: IRange;
91
91
  positionContext: IPositionContext;
92
92
  }
93
+ export interface ISetSurroundPositionPayload {
94
+ row: IRow;
95
+ rowElement: IRowElement;
96
+ rowElementRect: IElementFillRect;
97
+ pageNo: number;
98
+ availableWidth: number;
99
+ surroundElementList: IElement[];
100
+ }
@@ -28,6 +28,8 @@ export type RangeContext = {
28
28
  tableElement: IElement | null;
29
29
  selectionText: string | null;
30
30
  selectionElementList: IElement[];
31
+ titleId: string | null;
32
+ titleStartPageNo: number | null;
31
33
  };
32
34
  export interface IRangeParagraphInfo {
33
35
  elementList: IElement[];
@@ -18,4 +18,5 @@ export interface IRow {
18
18
  elementList: IRowElement[];
19
19
  isWidthNotEnough?: boolean;
20
20
  rowIndex: number;
21
+ isSurround?: boolean;
21
22
  }
@@ -5,6 +5,8 @@ import { IRow } from '../Row';
5
5
  export interface ITd {
6
6
  conceptId?: string;
7
7
  id?: string;
8
+ extension?: unknown;
9
+ externalId?: string;
8
10
  x?: number;
9
11
  y?: number;
10
12
  width?: number;
@@ -28,4 +30,6 @@ export interface ITd {
28
30
  mainHeight?: number;
29
31
  realHeight?: number;
30
32
  realMinHeight?: number;
33
+ disabled?: boolean;
34
+ deletable?: boolean;
31
35
  }
@@ -1,6 +1,8 @@
1
1
  import { ITd } from './Td';
2
2
  export interface ITr {
3
3
  id?: string;
4
+ extension?: unknown;
5
+ externalId?: string;
4
6
  height: number;
5
7
  tdList: ITd[];
6
8
  minHeight?: number;
@@ -22,7 +22,8 @@ export declare function convertRowFlexToJustifyContent(rowFlex: RowFlex): "cente
22
22
  export declare function isTextLikeElement(element: IElement): boolean;
23
23
  export declare function getAnchorElement(elementList: IElement[], anchorIndex: number): IElement | null;
24
24
  export interface IFormatElementContextOption {
25
- isBreakWhenWrap: boolean;
25
+ isBreakWhenWrap?: boolean;
26
+ editorOptions?: DeepRequired<IEditorOption>;
26
27
  }
27
28
  export declare function formatElementContext(sourceElementList: IElement[], formatElementList: IElement[], anchorIndex: number, options?: IFormatElementContextOption): void;
28
29
  export declare function convertElementToDom(element: IElement, options: DeepRequired<IEditorOption>): HTMLElement;
@@ -42,4 +43,6 @@ export declare function getTextFromElementList(elementList: IElement[]): string;
42
43
  export declare function getSlimCloneElementList(elementList: IElement[]): IElement[];
43
44
  export declare function getIsBlockElement(element?: IElement): boolean;
44
45
  export declare function replaceHTMLElementTag(oldDom: HTMLElement, tagName: keyof HTMLElementTagNameMap): HTMLElement;
46
+ export declare function pickSurroundElementList(elementList: IElement[]): IElement[];
47
+ export declare function deleteSurroundElementList(elementList: IElement[], pageNo: number): void;
45
48
  export {};
@@ -1,3 +1,4 @@
1
+ import { IElementFillRect } from '../interface/Element';
1
2
  export declare function debounce<T extends unknown[]>(func: (...arg: T) => unknown, delay: number): (this: unknown, ...args: T) => void;
2
3
  export declare function throttle<T extends unknown[]>(func: (...arg: T) => unknown, delay: number): (this: unknown, ...args: T) => void;
3
4
  export declare function deepCloneOmitKeys<T, K>(obj: T, omitKeys: (keyof K)[]): T;
@@ -20,3 +21,4 @@ export declare function convertStringToBase64(input: string): string;
20
21
  export declare function findScrollContainer(element: HTMLElement): HTMLElement;
21
22
  export declare function isArrayEqual(arr1: unknown[], arr2: unknown[]): boolean;
22
23
  export declare function isObjectEqual(obj1: unknown, obj2: unknown): boolean;
24
+ export declare function isRectIntersect(rect1: IElementFillRect, rect2: IElementFillRect): boolean;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@hufe921/canvas-editor",
3
3
  "author": "Hufe",
4
4
  "license": "MIT",
5
- "version": "0.9.91",
5
+ "version": "0.9.93",
6
6
  "description": "rich text editor by canvas/svg",
7
7
  "publishConfig": {
8
8
  "registry": "https://registry.npmjs.org/",