Commit 359ddb14 authored by Paul Slaughter's avatar Paul Slaughter

Refactor IDE index to support EE specific code

**Why?**

- The web terminal feature is EE specific and will need to inject
  some specific options / functions into certain components.
parent 31ae9148
......@@ -8,9 +8,21 @@ import { convertPermissionToBoolean } from '../lib/utils/common_utils';
Vue.use(Translate);
export function initIde(el) {
/**
* Initialize the IDE on the given element.
*
* @param {Element} el - The element that will contain the IDE.
* @param {Object} options - Extra options for the IDE (Used by EE).
* @param {(e:Element) => Object} options.extraInitialData -
* Function that returns extra properties to seed initial data.
*/
export function initIde(el, options = {}) {
if (!el) return null;
const {
extraInitialData = () => ({}),
} = options;
return new Vue({
el,
store,
......@@ -32,6 +44,7 @@ export function initIde(el) {
});
this.setInitialData({
clientsidePreviewEnabled: convertPermissionToBoolean(el.dataset.clientsidePreviewEnabled),
...extraInitialData(el),
});
},
methods: {
......@@ -52,3 +65,18 @@ export function resetServiceWorkersPublicPath() {
const webpackAssetPath = `${relativeRootPath}/assets/webpack/`;
__webpack_public_path__ = webpackAssetPath; // eslint-disable-line camelcase
}
/**
* Start the IDE.
*
* @param {Objects} options - Extra options for the IDE (Used by EE).
*/
export function startIde(options) {
document.addEventListener('DOMContentLoaded', () => {
const ideElement = document.getElementById('ide');
if (ideElement) {
resetServiceWorkersPublicPath();
initIde(ideElement, options);
}
});
}
import { initIde, resetServiceWorkersPublicPath } from '~/ide/index';
import { startIde } from '~/ide/index';
document.addEventListener('DOMContentLoaded', () => {
const ideElement = document.getElementById('ide');
if (ideElement) {
resetServiceWorkersPublicPath();
initIde(ideElement);
}
});
startIde();
import { startIde } from '~/ide/index';
function extraInitialData() {
// This is empty now, but it will be used in: https://gitlab.com/gitlab-org/gitlab-ee/issues/5426
return {};
}
startIde({
extraInitialData,
});
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment