Esempio n. 1
0
        public static async Task markWholeTag(
            string tagName,
            Position pClick, bool isLeftButton, MonacoEditor editor,
            Dictionary <string, BlazorMonaco.Range> sourceDecorations)
        {
            {
                if (isLeftButton)
                {
                    KeyValuePair <string, BlazorMonaco.Range> dec = (from d in sourceDecorations
                                                                     where IsPosInRange(pClick, d.Value)
                                                                     select d).FirstOrDefault();

                    if (string.IsNullOrEmpty(dec.Key))
                    {
                        //clicking outside a marked tag - clear previous selection in currentRangeID
                        await Helpers.RemoveDecoration(editor, currentRangeId);

                        currentDec = new KeyValuePair <string, BlazorMonaco.Range>();
                    }
                    else
                    {
                        TextModel sourceModel = await editor.GetModel();

                        string tag = await sourceModel.GetValueInRange(dec.Value, EndOfLinePreference.CRLF);

                        Position pEnd;
                        if (IsClosedTag(tag))
                        {
                            pEnd = new Position()
                            {
                                Column = dec.Value.EndColumn, LineNumber = dec.Value.EndLineNumber
                            }
                        }
                        ;
                        else
                        {
                            pEnd = await getEndOfTag(tagName, dec.Value, sourceModel);
                        }

                        BlazorMonaco.Range range = new BlazorMonaco.Range()
                        {
                            StartColumn     = dec.Value.StartColumn,
                            StartLineNumber = dec.Value.StartLineNumber,
                            EndColumn       = pEnd.Column,
                            EndLineNumber   = pEnd.LineNumber
                        };
                        currentRangeId = await Helpers.ColorRange(editor, range, currentRangeId, enmStatusColor.Current);

                        currentDec = dec;
                    }
                }
            }
        }