Skip to content
This repository was archived by the owner on May 5, 2021. It is now read-only.

Commit 716754f

Browse files
Zyntondmo-odoo
authored andcommitted
[IMP] utils: drastically improve the performance of isTextVisible
1 parent d166d69 commit 716754f

File tree

11 files changed

+43
-28
lines changed

11 files changed

+43
-28
lines changed

packages/plugin-bold/src/Bold.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { Layout } from '../../plugin-layout/src/Layout';
99
import { ActionableNode } from '../../plugin-layout/src/ActionableNode';
1010
import { Attributes } from '../../plugin-xml/src/Attributes';
1111
import { InlineNode } from '../../plugin-inline/src/InlineNode';
12-
import { isTextVisible } from '../../utils/src/utils';
12+
import { isInTextualContext } from '../../utils/src/utils';
1313

1414
export class Bold<T extends JWPluginConfig = JWPluginConfig> extends JWPlugin<T> {
1515
static dependencies = [Inline];
@@ -31,7 +31,7 @@ export class Bold<T extends JWPluginConfig = JWPluginConfig> extends JWPlugin<T>
3131
label: 'Toggle bold',
3232
commandId: 'toggleFormat',
3333
commandArgs: { FormatClass: BoldFormat } as FormatParams,
34-
visible: isTextVisible,
34+
visible: isInTextualContext,
3535
selected: (editor: JWEditor): boolean => {
3636
const range = editor.selection.range;
3737
if (range.isCollapsed()) {

packages/plugin-font-size/src/FontSizeDomObjectRenderer.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { DomObjectRenderingEngine } from '../../plugin-renderer-dom-object/src/D
66
import { Attributes } from '../../plugin-xml/src/Attributes';
77
import { Layout } from '../../plugin-layout/src/Layout';
88
import { DomLayoutEngine } from '../../plugin-dom-layout/src/DomLayoutEngine';
9-
import { isTextVisible } from '../../utils/src/utils';
9+
import { isInTextualContext } from '../../utils/src/utils';
1010

1111
export class FontSizeDomObjectRenderer extends InputDomObjectRenderer {
1212
static id = DomObjectRenderingEngine.id;
@@ -26,7 +26,7 @@ export class FontSizeDomObjectRenderer extends InputDomObjectRenderer {
2626
// TODO: create a ActionableInputNode for this, that way the button
2727
// group can be hidden as well.
2828
const domVisible = input.style.display !== 'none';
29-
const visible = isTextVisible(editor);
29+
const visible = isInTextualContext(editor);
3030
if (visible !== domVisible) {
3131
if (visible) {
3232
input.style.display = 'inline-block';

packages/plugin-heading/src/Heading.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { ActionableNode } from '../../plugin-layout/src/ActionableNode';
1414
import { Attributes } from '../../plugin-xml/src/Attributes';
1515
import { ComponentDefinition } from '../../plugin-layout/src/LayoutEngine';
1616
import { RuleProperty } from '../../core/src/Mode';
17-
import { isTextVisible } from '../../utils/src/utils';
17+
import { isInTextualContext } from '../../utils/src/utils';
1818

1919
export interface HeadingParams extends CommandParams {
2020
level: number;
@@ -29,7 +29,7 @@ function headingButton(level: number): ComponentDefinition {
2929
label: 'Heading' + level,
3030
commandId: 'applyHeadingStyle',
3131
commandArgs: { level: level } as HeadingParams,
32-
visible: isTextVisible,
32+
visible: isInTextualContext,
3333
selected: (editor: JWEditor): boolean => {
3434
const range = editor.selection.range;
3535
const startIsHeading = range.start.closest(HeadingNode)?.level === level;
@@ -82,7 +82,7 @@ export class Heading<T extends JWPluginConfig = JWPluginConfig> extends JWPlugin
8282
label: 'Paragraph',
8383
commandId: 'applyHeadingStyle',
8484
commandArgs: { level: 0 } as HeadingParams,
85-
visible: isTextVisible,
85+
visible: isInTextualContext,
8686
selected: (editor: JWEditor): boolean => {
8787
const range = editor.selection.range;
8888
if (range.start.parent) {

packages/plugin-indent/src/Indent.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { AtomicNode } from '../../core/src/VNodes/AtomicNode';
1313
import { Layout } from '../../plugin-layout/src/Layout';
1414
import { ActionableNode } from '../../plugin-layout/src/ActionableNode';
1515
import { Attributes } from '../../plugin-xml/src/Attributes';
16-
import { isTextVisible } from '../../utils/src/utils';
16+
import { isInTextualContext } from '../../utils/src/utils';
1717

1818
export type IndentParams = CommandParams;
1919
export type OutdentParams = CommandParams;
@@ -50,7 +50,7 @@ export class Indent<T extends JWPluginConfig = JWPluginConfig> extends JWPlugin<
5050
name: 'indent',
5151
label: 'Indent',
5252
commandId: 'indent',
53-
visible: isTextVisible,
53+
visible: isInTextualContext,
5454
modifiers: [new Attributes({ class: 'fa fa-indent fa-fw' })],
5555
});
5656
return [button];
@@ -63,7 +63,7 @@ export class Indent<T extends JWPluginConfig = JWPluginConfig> extends JWPlugin<
6363
name: 'outdent',
6464
label: 'Outdent',
6565
commandId: 'outdent',
66-
visible: isTextVisible,
66+
visible: isInTextualContext,
6767
modifiers: [new Attributes({ class: 'fa fa-outdent fa-fw' })],
6868
});
6969
return [button];

packages/plugin-inline/src/Inline.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { Format } from '../../core/src/Format';
44
import { Modifier } from '../../core/src/Modifier';
55
import { Attributes } from '../../plugin-xml/src/Attributes';
66
import { InlineNode } from './InlineNode';
7-
import { Constructor, isTextVisible } from '../../utils/src/utils';
7+
import { Constructor, isInTextualContext } from '../../utils/src/utils';
88
import { VNode } from '../../core/src/VNodes/VNode';
99
import { Modifiers } from '../../core/src/Modifiers';
1010
import { CssStyle } from '../../plugin-xml/src/CssStyle';
@@ -48,7 +48,7 @@ export class Inline<T extends JWPluginConfig = JWPluginConfig> extends JWPlugin<
4848
label: 'Remove format',
4949
commandId: 'removeFormat',
5050
commandArgs: {} as RemoveFormatParams,
51-
visible: isTextVisible,
51+
visible: isInTextualContext,
5252
selected: (): boolean => false,
5353
modifiers: [new Attributes({ class: 'fa fa-eraser fa-fw' })],
5454
});

packages/plugin-italic/src/Italic.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { Layout } from '../../plugin-layout/src/Layout';
99
import { ActionableNode } from '../../plugin-layout/src/ActionableNode';
1010
import { Attributes } from '../../plugin-xml/src/Attributes';
1111
import { InlineNode } from '../../plugin-inline/src/InlineNode';
12-
import { isTextVisible } from '../../utils/src/utils';
12+
import { isInTextualContext } from '../../utils/src/utils';
1313

1414
export class Italic<T extends JWPluginConfig = JWPluginConfig> extends JWPlugin<T> {
1515
static dependencies = [Inline];
@@ -31,7 +31,7 @@ export class Italic<T extends JWPluginConfig = JWPluginConfig> extends JWPlugin<
3131
label: 'Toggle italic',
3232
commandId: 'toggleFormat',
3333
commandArgs: { FormatClass: ItalicFormat } as FormatParams,
34-
visible: isTextVisible,
34+
visible: isInTextualContext,
3535
selected: (editor: JWEditor): boolean => {
3636
const range = editor.selection.range;
3737
if (range.isCollapsed()) {

packages/plugin-list/src/List.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { Parser } from '../../plugin-parser/src/Parser';
1515
import { Renderer } from '../../plugin-renderer/src/Renderer';
1616
import { Keymap } from '../../plugin-keymap/src/Keymap';
1717
import JWEditor, { Loadables } from '../../core/src/JWEditor';
18-
import { distinct, isTextVisible } from '../../utils/src/utils';
18+
import { distinct, isInTextualContext } from '../../utils/src/utils';
1919
import { Layout } from '../../plugin-layout/src/Layout';
2020
import { ActionableNode } from '../../plugin-layout/src/ActionableNode';
2121
import { Attributes } from '../../plugin-xml/src/Attributes';
@@ -108,7 +108,7 @@ export class List<T extends JWPluginConfig = JWPluginConfig> extends JWPlugin<T>
108108
label: 'Toggle ordered list',
109109
commandId: 'toggleList',
110110
commandArgs: { type: ListType.ORDERED } as ListParams,
111-
visible: isTextVisible,
111+
visible: isInTextualContext,
112112
selected: (editor: JWEditor): boolean => {
113113
const range = editor.selection.range;
114114
const startIsList = List.isInList(ListType.ORDERED, range.start);
@@ -131,7 +131,7 @@ export class List<T extends JWPluginConfig = JWPluginConfig> extends JWPlugin<T>
131131
label: 'Toggle unordered list',
132132
commandId: 'toggleList',
133133
commandArgs: { type: ListType.UNORDERED } as ListParams,
134-
visible: isTextVisible,
134+
visible: isInTextualContext,
135135
selected: (editor: JWEditor): boolean => {
136136
const range = editor.selection.range;
137137
const startIsList = List.isInList(ListType.UNORDERED, range.start);
@@ -154,7 +154,7 @@ export class List<T extends JWPluginConfig = JWPluginConfig> extends JWPlugin<T>
154154
label: 'Toggle checkbox list',
155155
commandId: 'toggleList',
156156
commandArgs: { type: ListType.CHECKLIST } as ListParams,
157-
visible: isTextVisible,
157+
visible: isInTextualContext,
158158
selected: (editor: JWEditor): boolean => {
159159
const range = editor.selection.range;
160160
const startIsList = List.isInList(ListType.CHECKLIST, range.start);

packages/plugin-odoo/src/Odoo.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import { InsertTableParams } from '../../plugin-table/src/Table';
2323
import { TableNode } from '../../plugin-table/src/TableNode';
2424
import { CharNode } from '../../plugin-char/src/CharNode';
2525
import { HeadingParams } from '../../plugin-heading/src/Heading';
26-
import { isTextVisible } from '../../utils/src/utils';
26+
import { isInTextualContext } from '../../utils/src/utils';
2727
import { NoteEditableXmlDomParser } from './NoteEditableXmlDomParser';
2828

2929
export enum OdooPaddingClasses {
@@ -143,7 +143,7 @@ export class Odoo<T extends JWPluginConfig = JWPluginConfig> extends JWPlugin<T>
143143
name: 'textcolorpicker',
144144
label: 'Text Color picker',
145145
commandId: 'openTextColorPicker',
146-
visible: isTextVisible,
146+
visible: isInTextualContext,
147147
modifiers: [
148148
new Attributes({ class: 'fa fa-font fa-fw dropdown-toggle' }),
149149
new Attributes({ 'data-toggle': 'dropdown' }),
@@ -167,7 +167,7 @@ export class Odoo<T extends JWPluginConfig = JWPluginConfig> extends JWPlugin<T>
167167
name: 'backgroundcolorpicker',
168168
label: 'Background Color picker',
169169
commandId: 'openBackgroundColorPicker',
170-
visible: isTextVisible,
170+
visible: isInTextualContext,
171171
modifiers: [
172172
new Attributes({ class: 'fa fa-paint-brush fa-fw dropdown-toggle' }),
173173
new Attributes({ 'data-toggle': 'dropdown' }),

packages/plugin-pre/src/Pre.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { PreSeparatorDomObjectRenderer } from './PreSeparatorDomObjectRenderer';
1212
import { Layout } from '../../plugin-layout/src/Layout';
1313
import { ActionableNode } from '../../plugin-layout/src/ActionableNode';
1414
import { Attributes } from '../../plugin-xml/src/Attributes';
15-
import { isTextVisible } from '../../utils/src/utils';
15+
import { isInTextualContext } from '../../utils/src/utils';
1616

1717
export class Pre<T extends JWPluginConfig = JWPluginConfig> extends JWPlugin<T> {
1818
commands = {
@@ -31,7 +31,7 @@ export class Pre<T extends JWPluginConfig = JWPluginConfig> extends JWPlugin<T>
3131
name: 'pre',
3232
label: 'Pre',
3333
commandId: 'applyPreStyle',
34-
visible: isTextVisible,
34+
visible: isInTextualContext,
3535
selected: (editor: JWEditor): boolean => {
3636
const range = editor.selection.range;
3737
const startPre = !!range.start.closest(PreNode);

packages/plugin-underline/src/Underline.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { Layout } from '../../plugin-layout/src/Layout';
99
import { ActionableNode } from '../../plugin-layout/src/ActionableNode';
1010
import { Attributes } from '../../plugin-xml/src/Attributes';
1111
import { InlineNode } from '../../plugin-inline/src/InlineNode';
12-
import { isTextVisible } from '../../utils/src/utils';
12+
import { isInTextualContext } from '../../utils/src/utils';
1313

1414
export class Underline<T extends JWPluginConfig = JWPluginConfig> extends JWPlugin<T> {
1515
static dependencies = [Inline];
@@ -31,7 +31,7 @@ export class Underline<T extends JWPluginConfig = JWPluginConfig> extends JWPlug
3131
label: 'Toggle underline',
3232
commandId: 'toggleFormat',
3333
commandArgs: { FormatClass: UnderlineFormat } as FormatParams,
34-
visible: isTextVisible,
34+
visible: isInTextualContext,
3535
selected: (editor: JWEditor): boolean => {
3636
const range = editor.selection.range;
3737
if (range.isCollapsed()) {

0 commit comments

Comments
 (0)