Convert workspace element to JS: Lint

This commit is contained in:
Matthew Dapena-Tretter
2017-03-07 15:56:57 -08:00
parent ede4a2972a
commit ca4d55954b
2 changed files with 273 additions and 269 deletions

View File

@@ -1,228 +1,230 @@
const {ipcRenderer} = require('electron');
const path = require('path');
const temp = require('temp').track();
const {Disposable} = require('event-kit');
/* global getComputedStyle, WheelEvent */
describe("WorkspaceElement", function() {
afterEach(() => temp.cleanupSync());
const {ipcRenderer} = require('electron')
const path = require('path')
const temp = require('temp').track()
const {Disposable} = require('event-kit')
describe("when the workspace element is focused", () =>
it("transfers focus to the active pane", function() {
const workspaceElement = atom.views.getView(atom.workspace);
jasmine.attachToDOM(workspaceElement);
const activePaneElement = atom.views.getView(atom.workspace.getActivePane());
document.body.focus();
expect(document.activeElement).not.toBe(activePaneElement);
workspaceElement.focus();
return expect(document.activeElement).toBe(activePaneElement);
describe('WorkspaceElement', function () {
afterEach(() => temp.cleanupSync())
describe('when the workspace element is focused', () =>
it('transfers focus to the active pane', function () {
const workspaceElement = atom.views.getView(atom.workspace)
jasmine.attachToDOM(workspaceElement)
const activePaneElement = atom.views.getView(atom.workspace.getActivePane())
document.body.focus()
expect(document.activeElement).not.toBe(activePaneElement)
workspaceElement.focus()
return expect(document.activeElement).toBe(activePaneElement)
})
);
)
describe("the scrollbar visibility class", () =>
it("has a class based on the style of the scrollbar", function() {
let observeCallback = null;
const scrollbarStyle = require('scrollbar-style');
spyOn(scrollbarStyle, 'observePreferredScrollbarStyle').andCallFake(function(cb) {
observeCallback = cb;
return new Disposable(function() {});
});
describe('the scrollbar visibility class', () =>
it('has a class based on the style of the scrollbar', function () {
let observeCallback = null
const scrollbarStyle = require('scrollbar-style')
spyOn(scrollbarStyle, 'observePreferredScrollbarStyle').andCallFake(function (cb) {
observeCallback = cb
return new Disposable(function () {})
})
const workspaceElement = atom.views.getView(atom.workspace);
observeCallback('legacy');
expect(workspaceElement.className).toMatch('scrollbars-visible-always');
const workspaceElement = atom.views.getView(atom.workspace)
observeCallback('legacy')
expect(workspaceElement.className).toMatch('scrollbars-visible-always')
observeCallback('overlay');
return expect(workspaceElement).toHaveClass('scrollbars-visible-when-scrolling');
observeCallback('overlay')
return expect(workspaceElement).toHaveClass('scrollbars-visible-when-scrolling')
})
);
)
describe("editor font styling", function() {
let [editor, editorElement, workspaceElement] = Array.from([]);
describe('editor font styling', function () {
let [editor, editorElement, workspaceElement] = Array.from([])
beforeEach(function() {
waitsForPromise(() => atom.workspace.open('sample.js'));
beforeEach(function () {
waitsForPromise(() => atom.workspace.open('sample.js'))
return runs(function() {
workspaceElement = atom.views.getView(atom.workspace);
jasmine.attachToDOM(workspaceElement);
editor = atom.workspace.getActiveTextEditor();
return editorElement = atom.views.getView(editor);
});
});
return runs(function () {
workspaceElement = atom.views.getView(atom.workspace)
jasmine.attachToDOM(workspaceElement)
editor = atom.workspace.getActiveTextEditor()
return (editorElement = atom.views.getView(editor))
})
})
it("updates the font-size based on the 'editor.fontSize' config value", function() {
const initialCharWidth = editor.getDefaultCharWidth();
expect(getComputedStyle(editorElement).fontSize).toBe(atom.config.get('editor.fontSize') + 'px');
atom.config.set('editor.fontSize', atom.config.get('editor.fontSize') + 5);
expect(getComputedStyle(editorElement).fontSize).toBe(atom.config.get('editor.fontSize') + 'px');
return expect(editor.getDefaultCharWidth()).toBeGreaterThan(initialCharWidth);
});
it("updates the font-size based on the 'editor.fontSize' config value", function () {
const initialCharWidth = editor.getDefaultCharWidth()
expect(getComputedStyle(editorElement).fontSize).toBe(atom.config.get('editor.fontSize') + 'px')
atom.config.set('editor.fontSize', atom.config.get('editor.fontSize') + 5)
expect(getComputedStyle(editorElement).fontSize).toBe(atom.config.get('editor.fontSize') + 'px')
return expect(editor.getDefaultCharWidth()).toBeGreaterThan(initialCharWidth)
})
it("updates the font-family based on the 'editor.fontFamily' config value", function() {
const initialCharWidth = editor.getDefaultCharWidth();
let fontFamily = atom.config.get('editor.fontFamily');
expect(getComputedStyle(editorElement).fontFamily).toBe(fontFamily);
it("updates the font-family based on the 'editor.fontFamily' config value", function () {
const initialCharWidth = editor.getDefaultCharWidth()
let fontFamily = atom.config.get('editor.fontFamily')
expect(getComputedStyle(editorElement).fontFamily).toBe(fontFamily)
atom.config.set('editor.fontFamily', 'sans-serif');
fontFamily = atom.config.get('editor.fontFamily');
expect(getComputedStyle(editorElement).fontFamily).toBe(fontFamily);
return expect(editor.getDefaultCharWidth()).not.toBe(initialCharWidth);
});
atom.config.set('editor.fontFamily', 'sans-serif')
fontFamily = atom.config.get('editor.fontFamily')
expect(getComputedStyle(editorElement).fontFamily).toBe(fontFamily)
return expect(editor.getDefaultCharWidth()).not.toBe(initialCharWidth)
})
it("updates the line-height based on the 'editor.lineHeight' config value", function() {
const initialLineHeight = editor.getLineHeightInPixels();
atom.config.set('editor.lineHeight', '30px');
expect(getComputedStyle(editorElement).lineHeight).toBe(atom.config.get('editor.lineHeight'));
return expect(editor.getLineHeightInPixels()).not.toBe(initialLineHeight);
});
it("updates the line-height based on the 'editor.lineHeight' config value", function () {
const initialLineHeight = editor.getLineHeightInPixels()
atom.config.set('editor.lineHeight', '30px')
expect(getComputedStyle(editorElement).lineHeight).toBe(atom.config.get('editor.lineHeight'))
return expect(editor.getLineHeightInPixels()).not.toBe(initialLineHeight)
})
return it("increases or decreases the font size when a ctrl-mousewheel event occurs", function() {
atom.config.set('editor.zoomFontWhenCtrlScrolling', true);
atom.config.set('editor.fontSize', 12);
return it('increases or decreases the font size when a ctrl-mousewheel event occurs', function () {
atom.config.set('editor.zoomFontWhenCtrlScrolling', true)
atom.config.set('editor.fontSize', 12)
// Zoom out
editorElement.querySelector('span').dispatchEvent(new WheelEvent('mousewheel', {
wheelDeltaY: -10,
ctrlKey: true
}));
expect(atom.config.get('editor.fontSize')).toBe(11);
}))
expect(atom.config.get('editor.fontSize')).toBe(11)
// Zoom in
editorElement.querySelector('span').dispatchEvent(new WheelEvent('mousewheel', {
wheelDeltaY: 10,
ctrlKey: true
}));
expect(atom.config.get('editor.fontSize')).toBe(12);
}))
expect(atom.config.get('editor.fontSize')).toBe(12)
// Not on an atom-text-editor
workspaceElement.dispatchEvent(new WheelEvent('mousewheel', {
wheelDeltaY: 10,
ctrlKey: true
}));
expect(atom.config.get('editor.fontSize')).toBe(12);
}))
expect(atom.config.get('editor.fontSize')).toBe(12)
// No ctrl key
editorElement.querySelector('span').dispatchEvent(new WheelEvent('mousewheel', {
wheelDeltaY: 10,
}));
expect(atom.config.get('editor.fontSize')).toBe(12);
wheelDeltaY: 10
}))
expect(atom.config.get('editor.fontSize')).toBe(12)
atom.config.set('editor.zoomFontWhenCtrlScrolling', false);
atom.config.set('editor.zoomFontWhenCtrlScrolling', false)
editorElement.querySelector('span').dispatchEvent(new WheelEvent('mousewheel', {
wheelDeltaY: 10,
ctrlKey: true
}));
return expect(atom.config.get('editor.fontSize')).toBe(12);
});
});
}))
return expect(atom.config.get('editor.fontSize')).toBe(12)
})
})
describe('panel containers', function() {
it('inserts panel container elements in the correct places in the DOM', function() {
const workspaceElement = atom.views.getView(atom.workspace);
describe('panel containers', function () {
it('inserts panel container elements in the correct places in the DOM', function () {
const workspaceElement = atom.views.getView(atom.workspace)
const leftContainer = workspaceElement.querySelector('atom-panel-container.left');
const rightContainer = workspaceElement.querySelector('atom-panel-container.right');
expect(leftContainer.nextSibling).toBe(workspaceElement.verticalAxis);
expect(rightContainer.previousSibling).toBe(workspaceElement.verticalAxis);
const leftContainer = workspaceElement.querySelector('atom-panel-container.left')
const rightContainer = workspaceElement.querySelector('atom-panel-container.right')
expect(leftContainer.nextSibling).toBe(workspaceElement.verticalAxis)
expect(rightContainer.previousSibling).toBe(workspaceElement.verticalAxis)
const topContainer = workspaceElement.querySelector('atom-panel-container.top');
const bottomContainer = workspaceElement.querySelector('atom-panel-container.bottom');
expect(topContainer.nextSibling).toBe(workspaceElement.paneContainer);
expect(bottomContainer.previousSibling).toBe(workspaceElement.paneContainer);
const topContainer = workspaceElement.querySelector('atom-panel-container.top')
const bottomContainer = workspaceElement.querySelector('atom-panel-container.bottom')
expect(topContainer.nextSibling).toBe(workspaceElement.paneContainer)
expect(bottomContainer.previousSibling).toBe(workspaceElement.paneContainer)
const headerContainer = workspaceElement.querySelector('atom-panel-container.header');
const footerContainer = workspaceElement.querySelector('atom-panel-container.footer');
expect(headerContainer.nextSibling).toBe(workspaceElement.horizontalAxis);
expect(footerContainer.previousSibling).toBe(workspaceElement.horizontalAxis);
const headerContainer = workspaceElement.querySelector('atom-panel-container.header')
const footerContainer = workspaceElement.querySelector('atom-panel-container.footer')
expect(headerContainer.nextSibling).toBe(workspaceElement.horizontalAxis)
expect(footerContainer.previousSibling).toBe(workspaceElement.horizontalAxis)
const modalContainer = workspaceElement.querySelector('atom-panel-container.modal');
return expect(modalContainer.parentNode).toBe(workspaceElement);
});
const modalContainer = workspaceElement.querySelector('atom-panel-container.modal')
return expect(modalContainer.parentNode).toBe(workspaceElement)
})
it('stretches header/footer panels to the workspace width', function() {
const workspaceElement = atom.views.getView(atom.workspace);
jasmine.attachToDOM(workspaceElement);
expect(workspaceElement.offsetWidth).toBeGreaterThan(0);
it('stretches header/footer panels to the workspace width', function () {
const workspaceElement = atom.views.getView(atom.workspace)
jasmine.attachToDOM(workspaceElement)
expect(workspaceElement.offsetWidth).toBeGreaterThan(0)
const headerItem = document.createElement('div');
atom.workspace.addHeaderPanel({item: headerItem});
expect(headerItem.offsetWidth).toEqual(workspaceElement.offsetWidth);
const headerItem = document.createElement('div')
atom.workspace.addHeaderPanel({item: headerItem})
expect(headerItem.offsetWidth).toEqual(workspaceElement.offsetWidth)
const footerItem = document.createElement('div');
atom.workspace.addFooterPanel({item: footerItem});
return expect(footerItem.offsetWidth).toEqual(workspaceElement.offsetWidth);
});
const footerItem = document.createElement('div')
atom.workspace.addFooterPanel({item: footerItem})
return expect(footerItem.offsetWidth).toEqual(workspaceElement.offsetWidth)
})
return it('shrinks horizontal axis according to header/footer panels height', function() {
const workspaceElement = atom.views.getView(atom.workspace);
workspaceElement.style.height = '100px';
const horizontalAxisElement = workspaceElement.querySelector('atom-workspace-axis.horizontal');
jasmine.attachToDOM(workspaceElement);
return it('shrinks horizontal axis according to header/footer panels height', function () {
const workspaceElement = atom.views.getView(atom.workspace)
workspaceElement.style.height = '100px'
const horizontalAxisElement = workspaceElement.querySelector('atom-workspace-axis.horizontal')
jasmine.attachToDOM(workspaceElement)
const originalHorizontalAxisHeight = horizontalAxisElement.offsetHeight;
expect(workspaceElement.offsetHeight).toBeGreaterThan(0);
expect(originalHorizontalAxisHeight).toBeGreaterThan(0);
const originalHorizontalAxisHeight = horizontalAxisElement.offsetHeight
expect(workspaceElement.offsetHeight).toBeGreaterThan(0)
expect(originalHorizontalAxisHeight).toBeGreaterThan(0)
const headerItem = document.createElement('div');
headerItem.style.height = '10px';
atom.workspace.addHeaderPanel({item: headerItem});
expect(headerItem.offsetHeight).toBeGreaterThan(0);
const headerItem = document.createElement('div')
headerItem.style.height = '10px'
atom.workspace.addHeaderPanel({item: headerItem})
expect(headerItem.offsetHeight).toBeGreaterThan(0)
const footerItem = document.createElement('div');
footerItem.style.height = '15px';
atom.workspace.addFooterPanel({item: footerItem});
expect(footerItem.offsetHeight).toBeGreaterThan(0);
const footerItem = document.createElement('div')
footerItem.style.height = '15px'
atom.workspace.addFooterPanel({item: footerItem})
expect(footerItem.offsetHeight).toBeGreaterThan(0)
return expect(horizontalAxisElement.offsetHeight).toEqual(originalHorizontalAxisHeight - headerItem.offsetHeight - footerItem.offsetHeight);
});
});
return expect(horizontalAxisElement.offsetHeight).toEqual(originalHorizontalAxisHeight - headerItem.offsetHeight - footerItem.offsetHeight)
})
})
describe("the 'window:toggle-invisibles' command", () =>
it("shows/hides invisibles in all open and future editors", function() {
const workspaceElement = atom.views.getView(atom.workspace);
expect(atom.config.get('editor.showInvisibles')).toBe(false);
atom.commands.dispatch(workspaceElement, 'window:toggle-invisibles');
expect(atom.config.get('editor.showInvisibles')).toBe(true);
atom.commands.dispatch(workspaceElement, 'window:toggle-invisibles');
return expect(atom.config.get('editor.showInvisibles')).toBe(false);
it('shows/hides invisibles in all open and future editors', function () {
const workspaceElement = atom.views.getView(atom.workspace)
expect(atom.config.get('editor.showInvisibles')).toBe(false)
atom.commands.dispatch(workspaceElement, 'window:toggle-invisibles')
expect(atom.config.get('editor.showInvisibles')).toBe(true)
atom.commands.dispatch(workspaceElement, 'window:toggle-invisibles')
return expect(atom.config.get('editor.showInvisibles')).toBe(false)
})
);
)
return describe("the 'window:run-package-specs' command", () =>
it("runs the package specs for the active item's project path, or the first project path", function() {
const workspaceElement = atom.views.getView(atom.workspace);
spyOn(ipcRenderer, 'send');
it("runs the package specs for the active item's project path, or the first project path", function () {
const workspaceElement = atom.views.getView(atom.workspace)
spyOn(ipcRenderer, 'send')
// No project paths. Don't try to run specs.
atom.commands.dispatch(workspaceElement, "window:run-package-specs");
expect(ipcRenderer.send).not.toHaveBeenCalledWith("run-package-specs");
atom.commands.dispatch(workspaceElement, 'window:run-package-specs')
expect(ipcRenderer.send).not.toHaveBeenCalledWith('run-package-specs')
const projectPaths = [temp.mkdirSync("dir1-"), temp.mkdirSync("dir2-")];
atom.project.setPaths(projectPaths);
const projectPaths = [temp.mkdirSync('dir1-'), temp.mkdirSync('dir2-')]
atom.project.setPaths(projectPaths)
// No active item. Use first project directory.
atom.commands.dispatch(workspaceElement, "window:run-package-specs");
expect(ipcRenderer.send).toHaveBeenCalledWith("run-package-specs", path.join(projectPaths[0], "spec"));
ipcRenderer.send.reset();
atom.commands.dispatch(workspaceElement, 'window:run-package-specs')
expect(ipcRenderer.send).toHaveBeenCalledWith('run-package-specs', path.join(projectPaths[0], 'spec'))
ipcRenderer.send.reset()
// Active item doesn't implement ::getPath(). Use first project directory.
const item = document.createElement("div");
atom.workspace.getActivePane().activateItem(item);
atom.commands.dispatch(workspaceElement, "window:run-package-specs");
expect(ipcRenderer.send).toHaveBeenCalledWith("run-package-specs", path.join(projectPaths[0], "spec"));
ipcRenderer.send.reset();
const item = document.createElement('div')
atom.workspace.getActivePane().activateItem(item)
atom.commands.dispatch(workspaceElement, 'window:run-package-specs')
expect(ipcRenderer.send).toHaveBeenCalledWith('run-package-specs', path.join(projectPaths[0], 'spec'))
ipcRenderer.send.reset()
// Active item has no path. Use first project directory.
item.getPath = () => null;
atom.commands.dispatch(workspaceElement, "window:run-package-specs");
expect(ipcRenderer.send).toHaveBeenCalledWith("run-package-specs", path.join(projectPaths[0], "spec"));
ipcRenderer.send.reset();
item.getPath = () => null
atom.commands.dispatch(workspaceElement, 'window:run-package-specs')
expect(ipcRenderer.send).toHaveBeenCalledWith('run-package-specs', path.join(projectPaths[0], 'spec'))
ipcRenderer.send.reset()
// Active item has path. Use project path for item path.
item.getPath = () => path.join(projectPaths[1], "a-file.txt");
atom.commands.dispatch(workspaceElement, "window:run-package-specs");
expect(ipcRenderer.send).toHaveBeenCalledWith("run-package-specs", path.join(projectPaths[1], "spec"));
return ipcRenderer.send.reset();
item.getPath = () => path.join(projectPaths[1], 'a-file.txt')
atom.commands.dispatch(workspaceElement, 'window:run-package-specs')
expect(ipcRenderer.send).toHaveBeenCalledWith('run-package-specs', path.join(projectPaths[1], 'spec'))
return ipcRenderer.send.reset()
})
);
});
)
})

View File

@@ -1,95 +1,97 @@
let WorkspaceElement;
const {ipcRenderer} = require('electron');
const path = require('path');
const fs = require('fs-plus');
const {CompositeDisposable} = require('event-kit');
const scrollbarStyle = require('scrollbar-style');
/* global HTMLElement */
let WorkspaceElement
const {ipcRenderer} = require('electron')
const path = require('path')
const fs = require('fs-plus')
const {CompositeDisposable} = require('event-kit')
const scrollbarStyle = require('scrollbar-style')
module.exports =
__initClass__(WorkspaceElement = class WorkspaceElement extends HTMLElement {
static initClass() {
this.prototype.globalTextEditorStyleSheet = null;
static initClass () {
this.prototype.globalTextEditorStyleSheet = null
}
attachedCallback() {
return this.focus();
attachedCallback () {
return this.focus()
}
detachedCallback() {
return this.subscriptions.dispose();
detachedCallback () {
return this.subscriptions.dispose()
}
initializeContent() {
this.classList.add('workspace');
this.setAttribute('tabindex', -1);
initializeContent () {
this.classList.add('workspace')
this.setAttribute('tabindex', -1)
this.verticalAxis = document.createElement('atom-workspace-axis');
this.verticalAxis.classList.add('vertical');
this.verticalAxis = document.createElement('atom-workspace-axis')
this.verticalAxis.classList.add('vertical')
this.horizontalAxis = document.createElement('atom-workspace-axis');
this.horizontalAxis.classList.add('horizontal');
this.horizontalAxis.appendChild(this.verticalAxis);
this.horizontalAxis = document.createElement('atom-workspace-axis')
this.horizontalAxis.classList.add('horizontal')
this.horizontalAxis.appendChild(this.verticalAxis)
return this.appendChild(this.horizontalAxis);
return this.appendChild(this.horizontalAxis)
}
observeScrollbarStyle() {
observeScrollbarStyle () {
return this.subscriptions.add(scrollbarStyle.observePreferredScrollbarStyle(style => {
switch (style) {
case 'legacy':
this.classList.remove('scrollbars-visible-when-scrolling');
return this.classList.add("scrollbars-visible-always");
this.classList.remove('scrollbars-visible-when-scrolling')
return this.classList.add('scrollbars-visible-always')
case 'overlay':
this.classList.remove('scrollbars-visible-always');
return this.classList.add("scrollbars-visible-when-scrolling");
this.classList.remove('scrollbars-visible-always')
return this.classList.add('scrollbars-visible-when-scrolling')
}
}
)
);
)
}
observeTextEditorFontConfig() {
this.updateGlobalTextEditorStyleSheet();
this.subscriptions.add(this.config.onDidChange('editor.fontSize', this.updateGlobalTextEditorStyleSheet.bind(this)));
this.subscriptions.add(this.config.onDidChange('editor.fontFamily', this.updateGlobalTextEditorStyleSheet.bind(this)));
return this.subscriptions.add(this.config.onDidChange('editor.lineHeight', this.updateGlobalTextEditorStyleSheet.bind(this)));
observeTextEditorFontConfig () {
this.updateGlobalTextEditorStyleSheet()
this.subscriptions.add(this.config.onDidChange('editor.fontSize', this.updateGlobalTextEditorStyleSheet.bind(this)))
this.subscriptions.add(this.config.onDidChange('editor.fontFamily', this.updateGlobalTextEditorStyleSheet.bind(this)))
return this.subscriptions.add(this.config.onDidChange('editor.lineHeight', this.updateGlobalTextEditorStyleSheet.bind(this)))
}
updateGlobalTextEditorStyleSheet() {
updateGlobalTextEditorStyleSheet () {
const styleSheetSource = `\
atom-text-editor {
font-size: ${this.config.get('editor.fontSize')}px;
font-family: ${this.config.get('editor.fontFamily')};
line-height: ${this.config.get('editor.lineHeight')};
font-size: ${this.config.get('editor.fontSize')}px
font-family: ${this.config.get('editor.fontFamily')}
line-height: ${this.config.get('editor.lineHeight')}
}\
`;
this.styles.addStyleSheet(styleSheetSource, {sourcePath: 'global-text-editor-styles'});
return this.views.performDocumentPoll();
`
this.styles.addStyleSheet(styleSheetSource, {sourcePath: 'global-text-editor-styles'})
return this.views.performDocumentPoll()
}
initialize(model, {views, workspace, project, config, styles}) {
this.model = model;
this.views = views;
this.workspace = workspace;
this.project = project;
this.config = config;
this.styles = styles;
if (this.views == null) { throw new Error("Must pass a views parameter when initializing WorskpaceElements"); }
if (this.workspace == null) { throw new Error("Must pass a workspace parameter when initializing WorskpaceElements"); }
if (this.project == null) { throw new Error("Must pass a project parameter when initializing WorskpaceElements"); }
if (this.config == null) { throw new Error("Must pass a config parameter when initializing WorskpaceElements"); }
if (this.styles == null) { throw new Error("Must pass a styles parameter when initializing WorskpaceElements"); }
initialize (model, {views, workspace, project, config, styles}) {
this.model = model
this.views = views
this.workspace = workspace
this.project = project
this.config = config
this.styles = styles
if (this.views == null) { throw new Error('Must pass a views parameter when initializing WorskpaceElements') }
if (this.workspace == null) { throw new Error('Must pass a workspace parameter when initializing WorskpaceElements') }
if (this.project == null) { throw new Error('Must pass a project parameter when initializing WorskpaceElements') }
if (this.config == null) { throw new Error('Must pass a config parameter when initializing WorskpaceElements') }
if (this.styles == null) { throw new Error('Must pass a styles parameter when initializing WorskpaceElements') }
this.subscriptions = new CompositeDisposable;
this.initializeContent();
this.observeScrollbarStyle();
this.observeTextEditorFontConfig();
this.subscriptions = new CompositeDisposable()
this.initializeContent()
this.observeScrollbarStyle()
this.observeTextEditorFontConfig()
this.paneContainer = this.views.getView(this.model.paneContainer);
this.verticalAxis.appendChild(this.paneContainer);
this.addEventListener('focus', this.handleFocus.bind(this));
this.paneContainer = this.views.getView(this.model.paneContainer)
this.verticalAxis.appendChild(this.paneContainer)
this.addEventListener('focus', this.handleFocus.bind(this))
this.addEventListener('mousewheel', this.handleMousewheel.bind(this), true);
this.addEventListener('mousewheel', this.handleMousewheel.bind(this), true)
this.panelContainers = {
top: this.views.getView(this.model.panelContainers.top),
@@ -99,98 +101,98 @@ atom-text-editor {
header: this.views.getView(this.model.panelContainers.header),
footer: this.views.getView(this.model.panelContainers.footer),
modal: this.views.getView(this.model.panelContainers.modal)
};
}
this.horizontalAxis.insertBefore(this.panelContainers.left, this.verticalAxis);
this.horizontalAxis.appendChild(this.panelContainers.right);
this.horizontalAxis.insertBefore(this.panelContainers.left, this.verticalAxis)
this.horizontalAxis.appendChild(this.panelContainers.right)
this.verticalAxis.insertBefore(this.panelContainers.top, this.paneContainer);
this.verticalAxis.appendChild(this.panelContainers.bottom);
this.verticalAxis.insertBefore(this.panelContainers.top, this.paneContainer)
this.verticalAxis.appendChild(this.panelContainers.bottom)
this.insertBefore(this.panelContainers.header, this.horizontalAxis);
this.appendChild(this.panelContainers.footer);
this.insertBefore(this.panelContainers.header, this.horizontalAxis)
this.appendChild(this.panelContainers.footer)
this.appendChild(this.panelContainers.modal);
this.appendChild(this.panelContainers.modal)
return this;
return this
}
getModel() { return this.model; }
getModel () { return this.model }
handleMousewheel(event) {
handleMousewheel (event) {
if (event.ctrlKey && this.config.get('editor.zoomFontWhenCtrlScrolling') && (event.target.closest('atom-text-editor') != null)) {
if (event.wheelDeltaY > 0) {
this.model.increaseFontSize();
this.model.increaseFontSize()
} else if (event.wheelDeltaY < 0) {
this.model.decreaseFontSize();
this.model.decreaseFontSize()
}
event.preventDefault();
return event.stopPropagation();
event.preventDefault()
return event.stopPropagation()
}
}
handleFocus(event) {
return this.model.getActivePane().activate();
handleFocus (event) {
return this.model.getActivePane().activate()
}
focusPaneViewAbove() { return this.paneContainer.focusPaneViewAbove(); }
focusPaneViewAbove () { return this.paneContainer.focusPaneViewAbove() }
focusPaneViewBelow() { return this.paneContainer.focusPaneViewBelow(); }
focusPaneViewBelow () { return this.paneContainer.focusPaneViewBelow() }
focusPaneViewOnLeft() { return this.paneContainer.focusPaneViewOnLeft(); }
focusPaneViewOnLeft () { return this.paneContainer.focusPaneViewOnLeft() }
focusPaneViewOnRight() { return this.paneContainer.focusPaneViewOnRight(); }
focusPaneViewOnRight () { return this.paneContainer.focusPaneViewOnRight() }
moveActiveItemToPaneAbove(params) { return this.paneContainer.moveActiveItemToPaneAbove(params); }
moveActiveItemToPaneAbove (params) { return this.paneContainer.moveActiveItemToPaneAbove(params) }
moveActiveItemToPaneBelow(params) { return this.paneContainer.moveActiveItemToPaneBelow(params); }
moveActiveItemToPaneBelow (params) { return this.paneContainer.moveActiveItemToPaneBelow(params) }
moveActiveItemToPaneOnLeft(params) { return this.paneContainer.moveActiveItemToPaneOnLeft(params); }
moveActiveItemToPaneOnLeft (params) { return this.paneContainer.moveActiveItemToPaneOnLeft(params) }
moveActiveItemToPaneOnRight(params) { return this.paneContainer.moveActiveItemToPaneOnRight(params); }
moveActiveItemToPaneOnRight (params) { return this.paneContainer.moveActiveItemToPaneOnRight(params) }
runPackageSpecs() {
let activePath, projectPath;
if (activePath = __guardMethod__(this.workspace.getActivePaneItem(), 'getPath', o => o.getPath())) {
[projectPath] = Array.from(this.project.relativizePath(activePath));
runPackageSpecs () {
let activePath, projectPath
if ((activePath = __guardMethod__(this.workspace.getActivePaneItem(), 'getPath', o => o.getPath()))) {
[projectPath] = Array.from(this.project.relativizePath(activePath))
} else {
[projectPath] = Array.from(this.project.getPaths());
[projectPath] = Array.from(this.project.getPaths())
}
if (projectPath) {
let specPath = path.join(projectPath, 'spec');
const testPath = path.join(projectPath, 'test');
let specPath = path.join(projectPath, 'spec')
const testPath = path.join(projectPath, 'test')
if (!fs.existsSync(specPath) && fs.existsSync(testPath)) {
specPath = testPath;
specPath = testPath
}
return ipcRenderer.send('run-package-specs', specPath);
return ipcRenderer.send('run-package-specs', specPath)
}
}
runBenchmarks() {
let activePath, projectPath;
if (activePath = __guardMethod__(this.workspace.getActivePaneItem(), 'getPath', o => o.getPath())) {
[projectPath] = Array.from(this.project.relativizePath(activePath));
runBenchmarks () {
let activePath, projectPath
if ((activePath = __guardMethod__(this.workspace.getActivePaneItem(), 'getPath', o => o.getPath()))) {
[projectPath] = Array.from(this.project.relativizePath(activePath))
} else {
[projectPath] = Array.from(this.project.getPaths());
[projectPath] = Array.from(this.project.getPaths())
}
if (projectPath) {
return ipcRenderer.send('run-benchmarks', path.join(projectPath, 'benchmarks'));
return ipcRenderer.send('run-benchmarks', path.join(projectPath, 'benchmarks'))
}
}
});
})
module.exports = WorkspaceElement = document.registerElement('atom-workspace', {prototype: WorkspaceElement.prototype});
module.exports = WorkspaceElement = document.registerElement('atom-workspace', {prototype: WorkspaceElement.prototype})
function __initClass__(c) {
c.initClass();
return c;
function __initClass__ (c) {
c.initClass()
return c
}
function __guardMethod__(obj, methodName, transform) {
function __guardMethod__ (obj, methodName, transform) {
if (typeof obj !== 'undefined' && obj !== null && typeof obj[methodName] === 'function') {
return transform(obj, methodName);
return transform(obj, methodName)
} else {
return undefined;
return undefined
}
}
}