@ng-util/monaco-editor 18.1.0 → 19.0.1
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/fesm2022/ng-util-monaco-editor.mjs +57 -56
- package/fesm2022/ng-util-monaco-editor.mjs.map +1 -1
- package/monaco-editor-base.component.d.ts +4 -3
- package/monaco-editor-diff.component.d.ts +2 -2
- package/monaco-editor.config.d.ts +1 -1
- package/monaco-editor.types.d.ts +1 -1
- package/monaco.d.ts +125 -74
- package/package.json +1 -3
- package/esm2022/monaco-editor-base.component.mjs +0 -145
- package/esm2022/monaco-editor-diff.component.mjs +0 -49
- package/esm2022/monaco-editor.component.mjs +0 -134
- package/esm2022/monaco-editor.config.mjs +0 -6
- package/esm2022/monaco-editor.module.mjs +0 -29
- package/esm2022/monaco-editor.types.mjs +0 -4
- package/esm2022/ng-util-monaco-editor.mjs +0 -5
- package/esm2022/placholder.mjs +0 -37
- package/esm2022/public-api.mjs +0 -6
package/monaco.d.ts
CHANGED
|
@@ -2924,6 +2924,9 @@ declare namespace monaco.editor {
|
|
|
2924
2924
|
* An event describing a change in the text of a model.
|
|
2925
2925
|
*/
|
|
2926
2926
|
export interface IModelContentChangedEvent {
|
|
2927
|
+
/**
|
|
2928
|
+
* The changes are ordered from the end of the document to the beginning, so they should be safe to apply in sequence.
|
|
2929
|
+
*/
|
|
2927
2930
|
readonly changes: IModelContentChange[];
|
|
2928
2931
|
/**
|
|
2929
2932
|
* The (new) end-of-line character.
|
|
@@ -3740,6 +3743,11 @@ declare namespace monaco.editor {
|
|
|
3740
3743
|
* Defaults to false.
|
|
3741
3744
|
*/
|
|
3742
3745
|
peekWidgetDefaultFocus?: 'tree' | 'editor';
|
|
3746
|
+
/**
|
|
3747
|
+
* Sets a placeholder for the editor.
|
|
3748
|
+
* If set, the placeholder is shown if the editor is empty.
|
|
3749
|
+
*/
|
|
3750
|
+
placeholder?: string | undefined;
|
|
3743
3751
|
/**
|
|
3744
3752
|
* Controls whether the definition link opens element in the peek widget.
|
|
3745
3753
|
* Defaults to false.
|
|
@@ -3821,6 +3829,11 @@ declare namespace monaco.editor {
|
|
|
3821
3829
|
* and the diff editor has a width less than `renderSideBySideInlineBreakpoint`, the inline view is used.
|
|
3822
3830
|
*/
|
|
3823
3831
|
useInlineViewWhenSpaceIsLimited?: boolean;
|
|
3832
|
+
/**
|
|
3833
|
+
* If set, the diff editor is optimized for small views.
|
|
3834
|
+
* Defaults to `false`.
|
|
3835
|
+
*/
|
|
3836
|
+
compactMode?: boolean;
|
|
3824
3837
|
/**
|
|
3825
3838
|
* Timeout in milliseconds after which diff computation is cancelled.
|
|
3826
3839
|
* Defaults to 5000.
|
|
@@ -3883,6 +3896,10 @@ declare namespace monaco.editor {
|
|
|
3883
3896
|
*/
|
|
3884
3897
|
showMoves?: boolean;
|
|
3885
3898
|
showEmptyDecorations?: boolean;
|
|
3899
|
+
/**
|
|
3900
|
+
* Only applies when `renderSideBySide` is set to false.
|
|
3901
|
+
*/
|
|
3902
|
+
useTrueInlineView?: boolean;
|
|
3886
3903
|
};
|
|
3887
3904
|
/**
|
|
3888
3905
|
* Is the diff editor inside another editor
|
|
@@ -4048,11 +4065,13 @@ declare namespace monaco.editor {
|
|
|
4048
4065
|
multipleDeclarations?: GoToLocationValues;
|
|
4049
4066
|
multipleImplementations?: GoToLocationValues;
|
|
4050
4067
|
multipleReferences?: GoToLocationValues;
|
|
4068
|
+
multipleTests?: GoToLocationValues;
|
|
4051
4069
|
alternativeDefinitionCommand?: string;
|
|
4052
4070
|
alternativeTypeDefinitionCommand?: string;
|
|
4053
4071
|
alternativeDeclarationCommand?: string;
|
|
4054
4072
|
alternativeImplementationCommand?: string;
|
|
4055
4073
|
alternativeReferenceCommand?: string;
|
|
4074
|
+
alternativeTestsCommand?: string;
|
|
4056
4075
|
}
|
|
4057
4076
|
|
|
4058
4077
|
/**
|
|
@@ -4323,6 +4342,10 @@ declare namespace monaco.editor {
|
|
|
4323
4342
|
* Font size of section headers. Defaults to 9.
|
|
4324
4343
|
*/
|
|
4325
4344
|
sectionHeaderFontSize?: number;
|
|
4345
|
+
/**
|
|
4346
|
+
* Spacing between the section header characters (in CSS px). Defaults to 1.
|
|
4347
|
+
*/
|
|
4348
|
+
sectionHeaderLetterSpacing?: number;
|
|
4326
4349
|
}
|
|
4327
4350
|
|
|
4328
4351
|
/**
|
|
@@ -4567,7 +4590,6 @@ declare namespace monaco.editor {
|
|
|
4567
4590
|
* Does not clear active inline suggestions when the editor loses focus.
|
|
4568
4591
|
*/
|
|
4569
4592
|
keepOnBlur?: boolean;
|
|
4570
|
-
backgroundColoring?: boolean;
|
|
4571
4593
|
}
|
|
4572
4594
|
|
|
4573
4595
|
export interface IBracketPairColorizationOptions {
|
|
@@ -4930,68 +4952,69 @@ declare namespace monaco.editor {
|
|
|
4930
4952
|
pasteAs = 85,
|
|
4931
4953
|
parameterHints = 86,
|
|
4932
4954
|
peekWidgetDefaultFocus = 87,
|
|
4933
|
-
|
|
4934
|
-
|
|
4935
|
-
|
|
4936
|
-
|
|
4937
|
-
|
|
4938
|
-
|
|
4939
|
-
|
|
4940
|
-
|
|
4941
|
-
|
|
4942
|
-
|
|
4943
|
-
|
|
4944
|
-
|
|
4945
|
-
|
|
4946
|
-
|
|
4947
|
-
|
|
4948
|
-
|
|
4949
|
-
|
|
4950
|
-
|
|
4951
|
-
|
|
4952
|
-
|
|
4953
|
-
|
|
4954
|
-
|
|
4955
|
-
|
|
4956
|
-
|
|
4957
|
-
|
|
4958
|
-
|
|
4959
|
-
|
|
4960
|
-
|
|
4961
|
-
|
|
4962
|
-
|
|
4963
|
-
|
|
4964
|
-
|
|
4965
|
-
|
|
4966
|
-
|
|
4967
|
-
|
|
4968
|
-
|
|
4969
|
-
|
|
4970
|
-
|
|
4971
|
-
|
|
4972
|
-
|
|
4973
|
-
|
|
4974
|
-
|
|
4975
|
-
|
|
4976
|
-
|
|
4977
|
-
|
|
4978
|
-
|
|
4979
|
-
|
|
4980
|
-
|
|
4981
|
-
|
|
4982
|
-
|
|
4983
|
-
|
|
4984
|
-
|
|
4985
|
-
|
|
4986
|
-
|
|
4987
|
-
|
|
4988
|
-
|
|
4989
|
-
|
|
4990
|
-
|
|
4991
|
-
|
|
4992
|
-
|
|
4993
|
-
|
|
4994
|
-
|
|
4955
|
+
placeholder = 88,
|
|
4956
|
+
definitionLinkOpensInPeek = 89,
|
|
4957
|
+
quickSuggestions = 90,
|
|
4958
|
+
quickSuggestionsDelay = 91,
|
|
4959
|
+
readOnly = 92,
|
|
4960
|
+
readOnlyMessage = 93,
|
|
4961
|
+
renameOnType = 94,
|
|
4962
|
+
renderControlCharacters = 95,
|
|
4963
|
+
renderFinalNewline = 96,
|
|
4964
|
+
renderLineHighlight = 97,
|
|
4965
|
+
renderLineHighlightOnlyWhenFocus = 98,
|
|
4966
|
+
renderValidationDecorations = 99,
|
|
4967
|
+
renderWhitespace = 100,
|
|
4968
|
+
revealHorizontalRightPadding = 101,
|
|
4969
|
+
roundedSelection = 102,
|
|
4970
|
+
rulers = 103,
|
|
4971
|
+
scrollbar = 104,
|
|
4972
|
+
scrollBeyondLastColumn = 105,
|
|
4973
|
+
scrollBeyondLastLine = 106,
|
|
4974
|
+
scrollPredominantAxis = 107,
|
|
4975
|
+
selectionClipboard = 108,
|
|
4976
|
+
selectionHighlight = 109,
|
|
4977
|
+
selectOnLineNumbers = 110,
|
|
4978
|
+
showFoldingControls = 111,
|
|
4979
|
+
showUnused = 112,
|
|
4980
|
+
snippetSuggestions = 113,
|
|
4981
|
+
smartSelect = 114,
|
|
4982
|
+
smoothScrolling = 115,
|
|
4983
|
+
stickyScroll = 116,
|
|
4984
|
+
stickyTabStops = 117,
|
|
4985
|
+
stopRenderingLineAfter = 118,
|
|
4986
|
+
suggest = 119,
|
|
4987
|
+
suggestFontSize = 120,
|
|
4988
|
+
suggestLineHeight = 121,
|
|
4989
|
+
suggestOnTriggerCharacters = 122,
|
|
4990
|
+
suggestSelection = 123,
|
|
4991
|
+
tabCompletion = 124,
|
|
4992
|
+
tabIndex = 125,
|
|
4993
|
+
unicodeHighlighting = 126,
|
|
4994
|
+
unusualLineTerminators = 127,
|
|
4995
|
+
useShadowDOM = 128,
|
|
4996
|
+
useTabStops = 129,
|
|
4997
|
+
wordBreak = 130,
|
|
4998
|
+
wordSegmenterLocales = 131,
|
|
4999
|
+
wordSeparators = 132,
|
|
5000
|
+
wordWrap = 133,
|
|
5001
|
+
wordWrapBreakAfterCharacters = 134,
|
|
5002
|
+
wordWrapBreakBeforeCharacters = 135,
|
|
5003
|
+
wordWrapColumn = 136,
|
|
5004
|
+
wordWrapOverride1 = 137,
|
|
5005
|
+
wordWrapOverride2 = 138,
|
|
5006
|
+
wrappingIndent = 139,
|
|
5007
|
+
wrappingStrategy = 140,
|
|
5008
|
+
showDeprecated = 141,
|
|
5009
|
+
inlayHints = 142,
|
|
5010
|
+
editorClassName = 143,
|
|
5011
|
+
pixelRatio = 144,
|
|
5012
|
+
tabFocusMode = 145,
|
|
5013
|
+
layoutInfo = 146,
|
|
5014
|
+
wrappingInfo = 147,
|
|
5015
|
+
defaultColorDecorators = 148,
|
|
5016
|
+
colorDecoratorsActivatedOn = 149,
|
|
5017
|
+
inlineCompletionsAccessibilityVerbose = 150
|
|
4995
5018
|
}
|
|
4996
5019
|
|
|
4997
5020
|
export const EditorOptions: {
|
|
@@ -5004,8 +5027,8 @@ declare namespace monaco.editor {
|
|
|
5004
5027
|
screenReaderAnnounceInlineSuggestion: IEditorOption<EditorOption.screenReaderAnnounceInlineSuggestion, boolean>;
|
|
5005
5028
|
autoClosingBrackets: IEditorOption<EditorOption.autoClosingBrackets, 'always' | 'languageDefined' | 'beforeWhitespace' | 'never'>;
|
|
5006
5029
|
autoClosingComments: IEditorOption<EditorOption.autoClosingComments, 'always' | 'languageDefined' | 'beforeWhitespace' | 'never'>;
|
|
5007
|
-
autoClosingDelete: IEditorOption<EditorOption.autoClosingDelete, '
|
|
5008
|
-
autoClosingOvertype: IEditorOption<EditorOption.autoClosingOvertype, '
|
|
5030
|
+
autoClosingDelete: IEditorOption<EditorOption.autoClosingDelete, 'auto' | 'always' | 'never'>;
|
|
5031
|
+
autoClosingOvertype: IEditorOption<EditorOption.autoClosingOvertype, 'auto' | 'always' | 'never'>;
|
|
5009
5032
|
autoClosingQuotes: IEditorOption<EditorOption.autoClosingQuotes, 'always' | 'languageDefined' | 'beforeWhitespace' | 'never'>;
|
|
5010
5033
|
autoIndent: IEditorOption<EditorOption.autoIndent, EditorAutoIndentStrategy>;
|
|
5011
5034
|
automaticLayout: IEditorOption<EditorOption.automaticLayout, boolean>;
|
|
@@ -5017,7 +5040,7 @@ declare namespace monaco.editor {
|
|
|
5017
5040
|
codeLensFontFamily: IEditorOption<EditorOption.codeLensFontFamily, string>;
|
|
5018
5041
|
codeLensFontSize: IEditorOption<EditorOption.codeLensFontSize, number>;
|
|
5019
5042
|
colorDecorators: IEditorOption<EditorOption.colorDecorators, boolean>;
|
|
5020
|
-
colorDecoratorActivatedOn: IEditorOption<EditorOption.colorDecoratorsActivatedOn, '
|
|
5043
|
+
colorDecoratorActivatedOn: IEditorOption<EditorOption.colorDecoratorsActivatedOn, 'hover' | 'clickAndHover' | 'click'>;
|
|
5021
5044
|
colorDecoratorsLimit: IEditorOption<EditorOption.colorDecoratorsLimit, number>;
|
|
5022
5045
|
columnSelection: IEditorOption<EditorOption.columnSelection, boolean>;
|
|
5023
5046
|
comments: IEditorOption<EditorOption.comments, Readonly<Required<IEditorCommentsOptions>>>;
|
|
@@ -5084,6 +5107,7 @@ declare namespace monaco.editor {
|
|
|
5084
5107
|
pasteAs: IEditorOption<EditorOption.pasteAs, Readonly<Required<IPasteAsOptions>>>;
|
|
5085
5108
|
parameterHints: IEditorOption<EditorOption.parameterHints, Readonly<Required<IEditorParameterHintOptions>>>;
|
|
5086
5109
|
peekWidgetDefaultFocus: IEditorOption<EditorOption.peekWidgetDefaultFocus, 'tree' | 'editor'>;
|
|
5110
|
+
placeholder: IEditorOption<EditorOption.placeholder, string>;
|
|
5087
5111
|
definitionLinkOpensInPeek: IEditorOption<EditorOption.definitionLinkOpensInPeek, boolean>;
|
|
5088
5112
|
quickSuggestions: IEditorOption<EditorOption.quickSuggestions, InternalQuickSuggestionsOptions>;
|
|
5089
5113
|
quickSuggestionsDelay: IEditorOption<EditorOption.quickSuggestionsDelay, number>;
|
|
@@ -5125,13 +5149,13 @@ declare namespace monaco.editor {
|
|
|
5125
5149
|
tabCompletion: IEditorOption<EditorOption.tabCompletion, 'on' | 'off' | 'onlySnippets'>;
|
|
5126
5150
|
tabIndex: IEditorOption<EditorOption.tabIndex, number>;
|
|
5127
5151
|
unicodeHighlight: IEditorOption<EditorOption.unicodeHighlighting, any>;
|
|
5128
|
-
unusualLineTerminators: IEditorOption<EditorOption.unusualLineTerminators, '
|
|
5152
|
+
unusualLineTerminators: IEditorOption<EditorOption.unusualLineTerminators, 'off' | 'auto' | 'prompt'>;
|
|
5129
5153
|
useShadowDOM: IEditorOption<EditorOption.useShadowDOM, boolean>;
|
|
5130
5154
|
useTabStops: IEditorOption<EditorOption.useTabStops, boolean>;
|
|
5131
5155
|
wordBreak: IEditorOption<EditorOption.wordBreak, 'normal' | 'keepAll'>;
|
|
5132
5156
|
wordSegmenterLocales: IEditorOption<EditorOption.wordSegmenterLocales, {}>;
|
|
5133
5157
|
wordSeparators: IEditorOption<EditorOption.wordSeparators, string>;
|
|
5134
|
-
wordWrap: IEditorOption<EditorOption.wordWrap, '
|
|
5158
|
+
wordWrap: IEditorOption<EditorOption.wordWrap, 'wordWrapColumn' | 'on' | 'off' | 'bounded'>;
|
|
5135
5159
|
wordWrapBreakAfterCharacters: IEditorOption<EditorOption.wordWrapBreakAfterCharacters, string>;
|
|
5136
5160
|
wordWrapBreakBeforeCharacters: IEditorOption<EditorOption.wordWrapBreakBeforeCharacters, string>;
|
|
5137
5161
|
wordWrapColumn: IEditorOption<EditorOption.wordWrapColumn, number>;
|
|
@@ -5392,12 +5416,21 @@ declare namespace monaco.editor {
|
|
|
5392
5416
|
* The position preference for the overlay widget.
|
|
5393
5417
|
*/
|
|
5394
5418
|
preference: OverlayWidgetPositionPreference | IOverlayWidgetPositionCoordinates | null;
|
|
5419
|
+
/**
|
|
5420
|
+
* When set, stacks with other overlay widgets with the same preference,
|
|
5421
|
+
* in an order determined by the ordinal value.
|
|
5422
|
+
*/
|
|
5423
|
+
stackOridinal?: number;
|
|
5395
5424
|
}
|
|
5396
5425
|
|
|
5397
5426
|
/**
|
|
5398
5427
|
* An overlay widgets renders on top of the text.
|
|
5399
5428
|
*/
|
|
5400
5429
|
export interface IOverlayWidget {
|
|
5430
|
+
/**
|
|
5431
|
+
* Event fired when the widget layout changes.
|
|
5432
|
+
*/
|
|
5433
|
+
onDidLayout?: IEvent<void>;
|
|
5401
5434
|
/**
|
|
5402
5435
|
* Render this overlay widget in a location where it could overflow the editor's view dom node.
|
|
5403
5436
|
*/
|
|
@@ -5823,6 +5856,18 @@ declare namespace monaco.editor {
|
|
|
5823
5856
|
* @event
|
|
5824
5857
|
*/
|
|
5825
5858
|
readonly onDidChangeHiddenAreas: IEvent<void>;
|
|
5859
|
+
/**
|
|
5860
|
+
* Some editor operations fire multiple events at once.
|
|
5861
|
+
* To allow users to react to multiple events fired by a single operation,
|
|
5862
|
+
* the editor fires a begin update before the operation and an end update after the operation.
|
|
5863
|
+
* Whenever the editor fires `onBeginUpdate`, it will also fire `onEndUpdate` once the operation finishes.
|
|
5864
|
+
* Note that not all operations are bracketed by `onBeginUpdate` and `onEndUpdate`.
|
|
5865
|
+
*/
|
|
5866
|
+
readonly onBeginUpdate: IEvent<void>;
|
|
5867
|
+
/**
|
|
5868
|
+
* Fires after the editor completes the operation it fired `onBeginUpdate` for.
|
|
5869
|
+
*/
|
|
5870
|
+
readonly onEndUpdate: IEvent<void>;
|
|
5826
5871
|
/**
|
|
5827
5872
|
* Saves current view state of the editor in a serializable object.
|
|
5828
5873
|
*/
|
|
@@ -6869,9 +6914,9 @@ declare namespace monaco.languages {
|
|
|
6869
6914
|
|
|
6870
6915
|
export interface HoverVerbosityRequest<THover = Hover> {
|
|
6871
6916
|
/**
|
|
6872
|
-
*
|
|
6917
|
+
* The delta by which to increase/decrease the hover verbosity level
|
|
6873
6918
|
*/
|
|
6874
|
-
|
|
6919
|
+
verbosityDelta: number;
|
|
6875
6920
|
/**
|
|
6876
6921
|
* The previous hover for the same position
|
|
6877
6922
|
*/
|
|
@@ -7400,7 +7445,7 @@ declare namespace monaco.languages {
|
|
|
7400
7445
|
* A provider that can provide document highlights across multiple documents.
|
|
7401
7446
|
*/
|
|
7402
7447
|
export interface MultiDocumentHighlightProvider {
|
|
7403
|
-
selector:
|
|
7448
|
+
readonly selector: LanguageSelector;
|
|
7404
7449
|
/**
|
|
7405
7450
|
* Provide a Map of Uri --> document highlights, like all occurrences of a variable or
|
|
7406
7451
|
* all exit-points of a function.
|
|
@@ -7919,6 +7964,11 @@ declare namespace monaco.languages {
|
|
|
7919
7964
|
arguments?: any[];
|
|
7920
7965
|
}
|
|
7921
7966
|
|
|
7967
|
+
export interface CommentThreadRevealOptions {
|
|
7968
|
+
preserveFocus: boolean;
|
|
7969
|
+
focusReply: boolean;
|
|
7970
|
+
}
|
|
7971
|
+
|
|
7922
7972
|
export interface CommentAuthorInformation {
|
|
7923
7973
|
name: string;
|
|
7924
7974
|
iconPath?: UriComponents;
|
|
@@ -8033,7 +8083,7 @@ declare namespace monaco.languages {
|
|
|
8033
8083
|
*
|
|
8034
8084
|
* @param document The document to provide mapped edits for.
|
|
8035
8085
|
* @param codeBlocks Code blocks that come from an LLM's reply.
|
|
8036
|
-
* "
|
|
8086
|
+
* "Apply in Editor" in the panel chat only sends one edit that the user clicks on, but inline chat can send multiple blocks and let the lang server decide what to do with them.
|
|
8037
8087
|
* @param context The context for providing mapped edits.
|
|
8038
8088
|
* @param token A cancellation token.
|
|
8039
8089
|
* @returns A provider result of text edits.
|
|
@@ -9032,9 +9082,10 @@ declare namespace monaco.languages.typescript {
|
|
|
9032
9082
|
length: number | undefined;
|
|
9033
9083
|
messageText: string | DiagnosticMessageChain;
|
|
9034
9084
|
}
|
|
9035
|
-
interface EmitOutput {
|
|
9085
|
+
export interface EmitOutput {
|
|
9036
9086
|
outputFiles: OutputFile[];
|
|
9037
9087
|
emitSkipped: boolean;
|
|
9088
|
+
diagnostics?: Diagnostic[];
|
|
9038
9089
|
}
|
|
9039
9090
|
interface OutputFile {
|
|
9040
9091
|
name: string;
|
|
@@ -9264,7 +9315,7 @@ declare namespace monaco.languages.typescript {
|
|
|
9264
9315
|
* Get transpiled output for the given file.
|
|
9265
9316
|
* @returns `typescript.EmitOutput`
|
|
9266
9317
|
*/
|
|
9267
|
-
getEmitOutput(fileName: string): Promise<EmitOutput>;
|
|
9318
|
+
getEmitOutput(fileName: string, emitOnlyDtsFiles?: boolean, forceDtsEmit?: boolean): Promise<EmitOutput>;
|
|
9268
9319
|
/**
|
|
9269
9320
|
* Get possible code fixes at the given position in the file.
|
|
9270
9321
|
* @param formatOptions `typescript.FormatCodeOptions`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ng-util/monaco-editor",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "19.0.1",
|
|
4
4
|
"author": "cipchk<cipchk@qq.com>",
|
|
5
5
|
"description": "Monaco Code Editor for Angular",
|
|
6
6
|
"license": "MIT",
|
|
@@ -29,8 +29,6 @@
|
|
|
29
29
|
},
|
|
30
30
|
".": {
|
|
31
31
|
"types": "./index.d.ts",
|
|
32
|
-
"esm2022": "./esm2022/ng-util-monaco-editor.mjs",
|
|
33
|
-
"esm": "./esm2022/ng-util-monaco-editor.mjs",
|
|
34
32
|
"default": "./fesm2022/ng-util-monaco-editor.mjs"
|
|
35
33
|
}
|
|
36
34
|
},
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
import { DOCUMENT } from '@angular/common';
|
|
2
|
-
import { Component, EventEmitter, Inject, Input, numberAttribute, Optional, Output, } from '@angular/core';
|
|
3
|
-
import { fromEvent } from 'rxjs';
|
|
4
|
-
import { debounceTime } from 'rxjs/operators';
|
|
5
|
-
import { NU_MONACO_EDITOR_CONFIG } from './monaco-editor.config';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
let loadedMonaco = false;
|
|
8
|
-
let loadPromise;
|
|
9
|
-
// eslint-disable-next-line @angular-eslint/component-class-suffix
|
|
10
|
-
export class NuMonacoEditorBase {
|
|
11
|
-
set disabled(val) {
|
|
12
|
-
this._disabled = typeof val === 'string' ? true : val;
|
|
13
|
-
this.setDisabled();
|
|
14
|
-
}
|
|
15
|
-
set options(val) {
|
|
16
|
-
this._options = { ...this._config.defaultOptions, ...val };
|
|
17
|
-
this.updateOptions();
|
|
18
|
-
}
|
|
19
|
-
get options() {
|
|
20
|
-
return this._options;
|
|
21
|
-
}
|
|
22
|
-
constructor(el, config, doc, ngZone, destroy$) {
|
|
23
|
-
this.el = el;
|
|
24
|
-
this.doc = doc;
|
|
25
|
-
this.ngZone = ngZone;
|
|
26
|
-
this.destroy$ = destroy$;
|
|
27
|
-
this._resize$ = null;
|
|
28
|
-
this.height = `200px`;
|
|
29
|
-
this.delay = 0;
|
|
30
|
-
this.event = new EventEmitter();
|
|
31
|
-
this._config = { baseUrl: 'https://cdn.jsdelivr.net/npm/monaco-editor/min', autoFormatTime: 100, ...config };
|
|
32
|
-
this.options = this._config.defaultOptions;
|
|
33
|
-
}
|
|
34
|
-
notifyEvent(type, other) {
|
|
35
|
-
this.ngZone.run(() => this.event.emit({ type, editor: this._editor, ...other }));
|
|
36
|
-
}
|
|
37
|
-
setDisabled() {
|
|
38
|
-
this._editor?.updateOptions({ readOnly: this._disabled });
|
|
39
|
-
return this;
|
|
40
|
-
}
|
|
41
|
-
init() {
|
|
42
|
-
if (loadedMonaco) {
|
|
43
|
-
loadPromise.then(() => this.initMonaco(this.options, true));
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
loadedMonaco = true;
|
|
47
|
-
loadPromise = new Promise((resolve, reject) => {
|
|
48
|
-
const win = window;
|
|
49
|
-
if (win == null) {
|
|
50
|
-
resolve();
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
if (win.monaco) {
|
|
54
|
-
resolve();
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
const baseUrl = this._config.baseUrl;
|
|
58
|
-
const amdLoader = () => {
|
|
59
|
-
win.require.config({ paths: { vs: `${baseUrl}/vs` } });
|
|
60
|
-
if (typeof this._config.monacoPreLoad === 'function') {
|
|
61
|
-
this._config.monacoPreLoad();
|
|
62
|
-
}
|
|
63
|
-
win.require(['vs/editor/editor.main'], () => {
|
|
64
|
-
if (typeof this._config.monacoLoad === 'function') {
|
|
65
|
-
this._config.monacoLoad(win.monaco);
|
|
66
|
-
}
|
|
67
|
-
this.initMonaco(this.options, true);
|
|
68
|
-
resolve();
|
|
69
|
-
}, () => {
|
|
70
|
-
reject(`Unable to load editor/editor.main module, please check your network environment.`);
|
|
71
|
-
});
|
|
72
|
-
};
|
|
73
|
-
if (!win.require) {
|
|
74
|
-
const loaderScript = this.doc.createElement('script');
|
|
75
|
-
loaderScript.type = 'text/javascript';
|
|
76
|
-
loaderScript.src = `${baseUrl}/vs/loader.js`;
|
|
77
|
-
loaderScript.onload = amdLoader;
|
|
78
|
-
loaderScript.onerror = () => reject(`Unable to load ${loaderScript.src}, please check your network environment.`);
|
|
79
|
-
this.doc.getElementsByTagName('head')[0].appendChild(loaderScript);
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
amdLoader();
|
|
83
|
-
}
|
|
84
|
-
}).catch((error) => this.notifyEvent('load-error', { error }));
|
|
85
|
-
}
|
|
86
|
-
cleanResize() {
|
|
87
|
-
this._resize$?.unsubscribe();
|
|
88
|
-
return this;
|
|
89
|
-
}
|
|
90
|
-
registerResize() {
|
|
91
|
-
this.cleanResize();
|
|
92
|
-
this._resize$ = fromEvent(window, 'resize')
|
|
93
|
-
.pipe(debounceTime(100))
|
|
94
|
-
.subscribe(() => {
|
|
95
|
-
this._editor.layout();
|
|
96
|
-
this.notifyEvent('resize');
|
|
97
|
-
});
|
|
98
|
-
return this;
|
|
99
|
-
}
|
|
100
|
-
updateOptions() {
|
|
101
|
-
if (!this._editor)
|
|
102
|
-
return;
|
|
103
|
-
this.ngZone.runOutsideAngular(() => {
|
|
104
|
-
this._editor.dispose();
|
|
105
|
-
this.initMonaco(this._options, false);
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
ngAfterViewInit() {
|
|
109
|
-
this.ngZone.runOutsideAngular(() => setTimeout(() => this.init(), +this.delay));
|
|
110
|
-
}
|
|
111
|
-
ngOnDestroy() {
|
|
112
|
-
this.cleanResize();
|
|
113
|
-
this._editor?.dispose();
|
|
114
|
-
}
|
|
115
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: NuMonacoEditorBase, deps: [{ token: i0.ElementRef }, { token: NU_MONACO_EDITOR_CONFIG, optional: true }, { token: DOCUMENT }, { token: i0.NgZone }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
116
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.10", type: NuMonacoEditorBase, isStandalone: true, selector: "nu-monaco-base", inputs: { height: "height", delay: ["delay", "delay", numberAttribute], disabled: "disabled", options: "options" }, outputs: { event: "event" }, ngImport: i0, template: ``, isInline: true }); }
|
|
117
|
-
}
|
|
118
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: NuMonacoEditorBase, decorators: [{
|
|
119
|
-
type: Component,
|
|
120
|
-
args: [{
|
|
121
|
-
selector: 'nu-monaco-base',
|
|
122
|
-
template: ``,
|
|
123
|
-
standalone: true,
|
|
124
|
-
}]
|
|
125
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
|
|
126
|
-
type: Optional
|
|
127
|
-
}, {
|
|
128
|
-
type: Inject,
|
|
129
|
-
args: [NU_MONACO_EDITOR_CONFIG]
|
|
130
|
-
}] }, { type: undefined, decorators: [{
|
|
131
|
-
type: Inject,
|
|
132
|
-
args: [DOCUMENT]
|
|
133
|
-
}] }, { type: i0.NgZone }, { type: i0.DestroyRef }], propDecorators: { height: [{
|
|
134
|
-
type: Input
|
|
135
|
-
}], delay: [{
|
|
136
|
-
type: Input,
|
|
137
|
-
args: [{ transform: numberAttribute }]
|
|
138
|
-
}], disabled: [{
|
|
139
|
-
type: Input
|
|
140
|
-
}], options: [{
|
|
141
|
-
type: Input
|
|
142
|
-
}], event: [{
|
|
143
|
-
type: Output
|
|
144
|
-
}] } });
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uYWNvLWVkaXRvci1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21vbmFjby1lZGl0b3IvbW9uYWNvLWVkaXRvci1iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUVMLFNBQVMsRUFHVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxlQUFlLEVBRWYsUUFBUSxFQUNSLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUF3Qix1QkFBdUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUd2RixJQUFJLFlBQVksR0FBRyxLQUFLLENBQUM7QUFDekIsSUFBSSxXQUEwQixDQUFDO0FBTy9CLGtFQUFrRTtBQUNsRSxNQUFNLE9BQWdCLGtCQUFrQjtJQVN0QyxJQUNJLFFBQVEsQ0FBQyxHQUFxQjtRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDdEQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxJQUNJLE9BQU8sQ0FBQyxHQUF1RDtRQUNqRSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQzNELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lB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QkFDaUMsS0FBSztzQkFBM0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7Z0JBRWpDLFFBQVE7c0JBRFgsS0FBSztnQkFNRixPQUFPO3NCQURWLEtBQUs7Z0JBUWEsS0FBSztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIG51bWJlckF0dHJpYnV0ZSxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBOdU1vbmFjb0VkaXRvckNvbmZpZywgTlVfTU9OQUNPX0VESVRPUl9DT05GSUcgfSBmcm9tICcuL21vbmFjby1lZGl0b3IuY29uZmlnJztcbmltcG9ydCB7IE51TW9uYWNvRWRpdG9yRXZlbnQsIE51TW9uYWNvRWRpdG9yRXZlbnRUeXBlIH0gZnJvbSAnLi9tb25hY28tZWRpdG9yLnR5cGVzJztcblxubGV0IGxvYWRlZE1vbmFjbyA9IGZhbHNlO1xubGV0IGxvYWRQcm9taXNlOiBQcm9taXNlPHZvaWQ+O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudS1tb25hY28tYmFzZScsXG4gIHRlbXBsYXRlOiBgYCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1jbGFzcy1zdWZmaXhcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOdU1vbmFjb0VkaXRvckJhc2UgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwcm90ZWN0ZWQgX2VkaXRvcj86IG1vbmFjby5lZGl0b3IuSVN0YW5kYWxvbmVDb2RlRWRpdG9yIHwgbW9uYWNvLmVkaXRvci5JU3RhbmRhbG9uZURpZmZFZGl0b3I7XG4gIHByb3RlY3RlZCBfb3B0aW9ucyE6IG1vbmFjby5lZGl0b3IuSVN0YW5kYWxvbmVFZGl0b3JDb25zdHJ1Y3Rpb25PcHRpb25zO1xuICBwcm90ZWN0ZWQgX3Jlc2l6ZSQ6IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcm90ZWN0ZWQgX2NvbmZpZzogTnVNb25hY29FZGl0b3JDb25maWc7XG4gIHByb3RlY3RlZCBfZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIGhlaWdodCA9IGAyMDBweGA7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIGRlbGF5ID0gMDtcbiAgQElucHV0KClcbiAgc2V0IGRpc2FibGVkKHZhbDogYm9vbGVhbiB8IHN0cmluZykge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgPyB0cnVlIDogdmFsO1xuICAgIHRoaXMuc2V0RGlzYWJsZWQoKTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgb3B0aW9ucyh2YWw6IG1vbmFjby5lZGl0b3IuSVN0YW5kYWxvbmVFZGl0b3JDb25zdHJ1Y3Rpb25PcHRpb25zKSB7XG4gICAgdGhpcy5fb3B0aW9ucyA9IHsgLi4udGhpcy5fY29uZmlnLmRlZmF1bHRPcHRpb25zLCAuLi52YWwgfTtcbiAgICB0aGlzLnVwZGF0ZU9wdGlvbnMoKTtcbiAgfVxuICBnZXQgb3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgfVxuICBAT3V0cHV0KCkgcmVhZG9ubHkgZXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPE51TW9uYWNvRWRpdG9yRXZlbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGVsOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE5VX01PTkFDT19FRElUT1JfQ09ORklHKSBjb25maWc6IE51TW9uYWNvRWRpdG9yQ29uZmlnLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByb3RlY3RlZCBkb2M6IGFueSxcbiAgICBwcm90ZWN0ZWQgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJvdGVjdGVkIGRlc3Ryb3kkOiBEZXN0cm95UmVmLFxuICApIHtcbiAgICB0aGlzLl9jb25maWcgPSB7IGJhc2VVcmw6ICdodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL21vbmFjby1lZGl0b3IvbWluJywgYXV0b0Zvcm1hdFRpbWU6IDEwMCwgLi4uY29uZmlnIH07XG4gICAgdGhpcy5vcHRpb25zID0gdGhpcy5fY29uZmlnLmRlZmF1bHRPcHRpb25zITtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBpbml0TW9uYWNvKF9vcHRpb25zOiBtb25hY28uZWRpdG9yLklTdGFuZGFsb25lRWRpdG9yQ29uc3RydWN0aW9uT3B0aW9ucywgX2luaXRFdmVudDogYm9vbGVhbik6IHZvaWQ7XG5cbiAgcHJvdGVjdGVkIG5vdGlmeUV2ZW50KHR5cGU6IE51TW9uYWNvRWRpdG9yRXZlbnRUeXBlLCBvdGhlcj86IE51TW9uYWNvRWRpdG9yRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5ldmVudC5lbWl0KHsgdHlwZSwgZWRpdG9yOiB0aGlzLl9lZGl0b3IhLCAuLi5vdGhlciB9KSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0RGlzYWJsZWQoKTogdGhpcyB7XG4gICAgKHRoaXMuX2VkaXRvciBhcyBtb25hY28uZWRpdG9yLklTdGFuZGFsb25lQ29kZUVkaXRvcik/LnVwZGF0ZU9wdGlvbnMoeyByZWFkT25seTogdGhpcy5fZGlzYWJsZWQgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcml2YXRlIGluaXQoKTogdm9pZCB7XG4gICAgaWYgKGxvYWRlZE1vbmFjbykge1xuICAgICAgbG9hZFByb21pc2UudGhlbigoKSA9PiB0aGlzLmluaXRNb25hY28odGhpcy5vcHRpb25zLCB0cnVlKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbG9hZGVkTW9uYWNvID0gdHJ1ZTtcbiAgICBsb2FkUHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlOiAoKSA9PiB2b2lkLCByZWplY3Q6IChlcnI6IHN0cmluZykgPT4gdm9pZCkgPT4ge1xuICAgICAgY29uc3Qgd2luOiBhbnkgPSB3aW5kb3c7XG4gICAgICBpZiAod2luID09IG51bGwpIHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh3aW4ubW9uYWNvKSB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5fY29uZmlnLmJhc2VVcmw7XG4gICAgICBjb25zdCBhbWRMb2FkZXIgPSAoKSA9PiB7XG4gICAgICAgIHdpbi5yZXF1aXJlLmNvbmZpZyh7IHBhdGhzOiB7IHZzOiBgJHtiYXNlVXJsfS92c2AgfSB9KTtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9jb25maWcubW9uYWNvUHJlTG9hZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRoaXMuX2NvbmZpZy5tb25hY29QcmVMb2FkKCk7XG4gICAgICAgIH1cbiAgICAgICAgd2luLnJlcXVpcmUoXG4gICAgICAgICAgWyd2cy9lZGl0b3IvZWRpdG9yLm1haW4nXSxcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuX2NvbmZpZy5tb25hY29Mb2FkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIHRoaXMuX2NvbmZpZy5tb25hY29Mb2FkKHdpbi5tb25hY28pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pbml0TW9uYWNvKHRoaXMub3B0aW9ucywgdHJ1ZSk7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICByZWplY3QoYFVuYWJsZSB0byBsb2FkIGVkaXRvci9lZGl0b3IubWFpbiBtb2R1bGUsIHBsZWFzZSBjaGVjayB5b3VyIG5ldHdvcmsgZW52aXJvbm1lbnQuYCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH07XG5cbiAgICAgIGlmICghd2luLnJlcXVpcmUpIHtcbiAgICAgICAgY29uc3QgbG9hZGVyU2NyaXB0ID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgnc2NyaXB0JykgYXMgSFRNTFNjcmlwdEVsZW1lbnQ7XG4gICAgICAgIGxvYWRlclNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XG4gICAgICAgIGxvYWRlclNjcmlwdC5zcmMgPSBgJHtiYXNlVXJsfS92cy9sb2FkZXIuanNgO1xuICAgICAgICBsb2FkZXJTY3JpcHQub25sb2FkID0gYW1kTG9hZGVyO1xuICAgICAgICBsb2FkZXJTY3JpcHQub25lcnJvciA9ICgpID0+IHJlamVjdChgVW5hYmxlIHRvIGxvYWQgJHtsb2FkZXJTY3JpcHQuc3JjfSwgcGxlYXNlIGNoZWNrIHlvdXIgbmV0d29yayBlbnZpcm9ubWVudC5gKTtcbiAgICAgICAgdGhpcy5kb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5hcHBlbmRDaGlsZChsb2FkZXJTY3JpcHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYW1kTG9hZGVyKCk7XG4gICAgICB9XG4gICAgfSkuY2F0Y2goKGVycm9yKSA9PiB0aGlzLm5vdGlmeUV2ZW50KCdsb2FkLWVycm9yJywgeyBlcnJvciB9KSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2xlYW5SZXNpemUoKTogdGhpcyB7XG4gICAgdGhpcy5fcmVzaXplJD8udW5zdWJzY3JpYmUoKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByb3RlY3RlZCByZWdpc3RlclJlc2l6ZSgpOiB0aGlzIHtcbiAgICB0aGlzLmNsZWFuUmVzaXplKCk7XG4gICAgdGhpcy5fcmVzaXplJCA9IGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fZWRpdG9yIS5sYXlvdXQoKTtcbiAgICAgICAgdGhpcy5ub3RpZnlFdmVudCgncmVzaXplJyk7XG4gICAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVPcHRpb25zKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fZWRpdG9yKSByZXR1cm47XG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5fZWRpdG9yIS5kaXNwb3NlKCk7XG4gICAgICB0aGlzLmluaXRNb25hY28odGhpcy5fb3B0aW9ucywgZmFsc2UpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5pbml0KCksICt0aGlzLmRlbGF5KSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFuUmVzaXplKCk7XG4gICAgdGhpcy5fZWRpdG9yPy5kaXNwb3NlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
-
import { NuMonacoEditorBase } from './monaco-editor-base.component';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class NuMonacoEditorDiffComponent extends NuMonacoEditorBase {
|
|
5
|
-
get editor() {
|
|
6
|
-
return this._editor;
|
|
7
|
-
}
|
|
8
|
-
initMonaco(options, initEvent) {
|
|
9
|
-
if (!this.old || !this.new) {
|
|
10
|
-
this.notifyEvent('error', { error: 'old or new not found for nu-monaco-diff-editor' });
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
const theme = options.theme;
|
|
14
|
-
if (this._disabled != null)
|
|
15
|
-
options.readOnly = this._disabled;
|
|
16
|
-
const editor = (this._editor = monaco.editor.createDiffEditor(this.el.nativeElement, options));
|
|
17
|
-
options.theme = theme;
|
|
18
|
-
editor.setModel({
|
|
19
|
-
original: monaco.editor.createModel(this.old.code, this.old.language || options.language),
|
|
20
|
-
modified: monaco.editor.createModel(this.new.code, this.new.language || options.language),
|
|
21
|
-
});
|
|
22
|
-
// this.setDisabled();
|
|
23
|
-
editor.onDidUpdateDiff(() => this.notifyEvent('update-diff', { diffValue: editor.getModifiedEditor().getValue() }));
|
|
24
|
-
this.registerResize();
|
|
25
|
-
if (initEvent)
|
|
26
|
-
this.notifyEvent('init');
|
|
27
|
-
}
|
|
28
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: NuMonacoEditorDiffComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
29
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.10", type: NuMonacoEditorDiffComponent, isStandalone: true, selector: "nu-monaco-diff-editor", inputs: { old: "old", new: "new" }, host: { properties: { "style.display": "'block'", "style.height": "height" } }, exportAs: ["nuMonacoDiffEditor"], usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30
|
-
}
|
|
31
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: NuMonacoEditorDiffComponent, decorators: [{
|
|
32
|
-
type: Component,
|
|
33
|
-
args: [{
|
|
34
|
-
selector: 'nu-monaco-diff-editor',
|
|
35
|
-
template: ``,
|
|
36
|
-
exportAs: 'nuMonacoDiffEditor',
|
|
37
|
-
host: {
|
|
38
|
-
'[style.display]': `'block'`,
|
|
39
|
-
'[style.height]': 'height',
|
|
40
|
-
},
|
|
41
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
42
|
-
standalone: true,
|
|
43
|
-
}]
|
|
44
|
-
}], propDecorators: { old: [{
|
|
45
|
-
type: Input
|
|
46
|
-
}], new: [{
|
|
47
|
-
type: Input
|
|
48
|
-
}] } });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uYWNvLWVkaXRvci1kaWZmLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21vbmFjby1lZGl0b3IvbW9uYWNvLWVkaXRvci1kaWZmLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFjcEUsTUFBTSxPQUFPLDJCQUE0QixTQUFRLGtCQUFrQjtJQUlqRSxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUE4QyxDQUFDO0lBQzdELENBQUM7SUFFRCxVQUFVLENBQUMsT0FBMkQsRUFBRSxTQUFrQjtRQUN4RixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxnREFBZ0QsRUFBRSxDQUFDLENBQUM7WUFDdkYsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzVCLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJO1lBQUUsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQzlELE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDL0YsT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDdEIsTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUNkLFFBQVEsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDO1lBQ3pGLFFBQVEsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDO1NBQzFGLENBQUMsQ0FBQztRQUVILHNCQUFzQjtRQUN0QixNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXBILElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLFNBQVM7WUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLENBQUM7a0lBNUJVLDJCQUEyQjtzSEFBM0IsMkJBQTJCLDhQQVQ1QixFQUFFOzs0RkFTRCwyQkFBMkI7a0JBWHZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsUUFBUSxFQUFFLEVBQUU7b0JBQ1osUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsSUFBSSxFQUFFO3dCQUNKLGlCQUFpQixFQUFFLFNBQVM7d0JBQzVCLGdCQUFnQixFQUFFLFFBQVE7cUJBQzNCO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBRVUsR0FBRztzQkFBWCxLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOdU1vbmFjb0VkaXRvckJhc2UgfSBmcm9tICcuL21vbmFjby1lZGl0b3ItYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTnVNb25hY29FZGl0b3JEaWZmTW9kZWwgfSBmcm9tICcuL21vbmFjby1lZGl0b3IudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudS1tb25hY28tZGlmZi1lZGl0b3InLFxuICB0ZW1wbGF0ZTogYGAsXG4gIGV4cG9ydEFzOiAnbnVNb25hY29EaWZmRWRpdG9yJyxcbiAgaG9zdDoge1xuICAgICdbc3R5bGUuZGlzcGxheV0nOiBgJ2Jsb2NrJ2AsXG4gICAgJ1tzdHlsZS5oZWlnaHRdJzogJ2hlaWdodCcsXG4gIH0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBOdU1vbmFjb0VkaXRvckRpZmZDb21wb25lbnQgZXh0ZW5kcyBOdU1vbmFjb0VkaXRvckJhc2Uge1xuICBASW5wdXQoKSBvbGQhOiBOdU1vbmFjb0VkaXRvckRpZmZNb2RlbCB8IG51bGw7XG4gIEBJbnB1dCgpIG5ldyE6IE51TW9uYWNvRWRpdG9yRGlmZk1vZGVsIHwgbnVsbDtcblxuICBnZXQgZWRpdG9yKCk6IG1vbmFjby5lZGl0b3IuSVN0YW5kYWxvbmVEaWZmRWRpdG9yIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2VkaXRvciBhcyBtb25hY28uZWRpdG9yLklTdGFuZGFsb25lRGlmZkVkaXRvcjtcbiAgfVxuXG4gIGluaXRNb25hY28ob3B0aW9uczogbW9uYWNvLmVkaXRvci5JU3RhbmRhbG9uZUVkaXRvckNvbnN0cnVjdGlvbk9wdGlvbnMsIGluaXRFdmVudDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICghdGhpcy5vbGQgfHwgIXRoaXMubmV3KSB7XG4gICAgICB0aGlzLm5vdGlmeUV2ZW50KCdlcnJvcicsIHsgZXJyb3I6ICdvbGQgb3IgbmV3IG5vdCBmb3VuZCBmb3IgbnUtbW9uYWNvLWRpZmYtZWRpdG9yJyB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0aGVtZSA9IG9wdGlvbnMudGhlbWU7XG4gICAgaWYgKHRoaXMuX2Rpc2FibGVkICE9IG51bGwpIG9wdGlvbnMucmVhZE9ubHkgPSB0aGlzLl9kaXNhYmxlZDtcbiAgICBjb25zdCBlZGl0b3IgPSAodGhpcy5fZWRpdG9yID0gbW9uYWNvLmVkaXRvci5jcmVhdGVEaWZmRWRpdG9yKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgb3B0aW9ucykpO1xuICAgIG9wdGlvbnMudGhlbWUgPSB0aGVtZTtcbiAgICBlZGl0b3Iuc2V0TW9kZWwoe1xuICAgICAgb3JpZ2luYWw6IG1vbmFjby5lZGl0b3IuY3JlYXRlTW9kZWwodGhpcy5vbGQuY29kZSwgdGhpcy5vbGQubGFuZ3VhZ2UgfHwgb3B0aW9ucy5sYW5ndWFnZSksXG4gICAgICBtb2RpZmllZDogbW9uYWNvLmVkaXRvci5jcmVhdGVNb2RlbCh0aGlzLm5ldy5jb2RlLCB0aGlzLm5ldy5sYW5ndWFnZSB8fCBvcHRpb25zLmxhbmd1YWdlKSxcbiAgICB9KTtcblxuICAgIC8vIHRoaXMuc2V0RGlzYWJsZWQoKTtcbiAgICBlZGl0b3Iub25EaWRVcGRhdGVEaWZmKCgpID0+IHRoaXMubm90aWZ5RXZlbnQoJ3VwZGF0ZS1kaWZmJywgeyBkaWZmVmFsdWU6IGVkaXRvci5nZXRNb2RpZmllZEVkaXRvcigpLmdldFZhbHVlKCkgfSkpO1xuXG4gICAgdGhpcy5yZWdpc3RlclJlc2l6ZSgpO1xuICAgIGlmIChpbml0RXZlbnQpIHRoaXMubm90aWZ5RXZlbnQoJ2luaXQnKTtcbiAgfVxufVxuIl19
|