diff --git a/src/index.html b/src/index.html
index ed40d1a..d0edd09 100644
--- a/src/index.html
+++ b/src/index.html
@@ -137,6 +137,7 @@
.code-wrap__header {
display: flex;
+ flex-shrink: 0;
justify-content: space-between;
align-items: center;
padding: 5px 10px;
diff --git a/src/script.js b/src/script.js
index f46b160..57adf61 100644
--- a/src/script.js
+++ b/src/script.js
@@ -79,26 +79,22 @@
editur.cm = {};
editur.demoFrameDocument = frame.contentDocument || frame.contentWindow.document;
-
+ // Check all the code wrap if they are minimized or not
function updateCodeWrapCollapseStates() {
- // if (updateCodeWrapCollapseStates.timeout) {
- clearTimeout(updateCodeWrapCollapseStates.timeout);
- // }
+ clearTimeout(updateCodeWrapCollapseStates.timeout);
updateCodeWrapCollapseStates.timeout = setTimeout(function () {
- console.log('refreshing');
- ['#js-html-code', '#js-css-code', '#js-js-code'].forEach(function (selector) {
- var el = document.querySelector(selector);
+ [ htmlCode, cssCode, jsCode ].forEach(function (el) {
var bounds = el.getBoundingClientRect();
- if (bounds.width < 150) {
+ if (bounds[currentLayoutMode === 2 ? 'width' : 'height'] < 100) {
el.classList.add('is-minimized');
} else {
el.classList.remove('is-minimized');
}
});
- }, 500);
+ }, 50);
}
- function resetSplitting() {
+ function resetSplitting(dontRecreate) {
if (codeSplitInstance) {
codeSplitInstance.destroy();
}
@@ -106,14 +102,21 @@
mainSplitInstance.destroy();
}
- codeSplitInstance = Split(['#js-html-code', '#js-css-code', '#js-js-code'], {
+ var options = {
direction: (currentLayoutMode === 2 ? 'horizontal' : 'vertical'),
minSize: minCodeWrapSize,
gutterSize: 6,
onDragEnd: function() {
updateCodeWrapCollapseStates();
}
- });
+ };
+ if (currentItem && currentItem.sizes) {
+ options.sizes = currentItem.sizes;
+ } else {
+ options.sizes = [ 33.33, 33.33, 33.33 ];
+ }
+ console.log('reset spliiting', options.sizes)
+ codeSplitInstance = Split(['#js-html-code', '#js-css-code', '#js-js-code'], options);
mainSplitInstance = Split(['#js-code-side', '#js-demo-side' ], {
direction: (currentLayoutMode === 2 ? 'vertical' : 'horizontal'),
minSize: 34,
@@ -121,6 +124,12 @@
});
}
function toggleLayout(mode) {
+ if (currentLayoutMode === mode) {
+ console.log('setsize', currentItem.sizes || [ 33.33, 33.33, 33.33 ]);
+ codeSplitInstance.setSizes(currentItem.sizes || [ 33.33, 33.33, 33.33 ]);
+ currentLayoutMode = mode;
+ return;
+ }
currentLayoutMode = mode;
$('#js-layout-btn-1').classList.remove('selected');
$('#js-layout-btn-2').classList.remove('selected');
@@ -170,10 +179,28 @@
currentItem.jsMode = jsMode;
currentItem.updatedOn = Date.now();
currentItem.layoutMode = currentLayoutMode;
- utils.log('saving key', key || currentItem.id, currentItem)
- saveSetting(key || currentItem.id, currentItem, function () {
- alertsService.add('Item saved.');
- });
+
+ // debugger;
+ var dimensionProperty = currentLayoutMode === 2 ? 'width' : 'height';
+
+ var sizes;
+ try {
+ sizes = [
+ +htmlCode.style[dimensionProperty].match(/([\d\.]+)%/)[1],
+ +cssCode.style[dimensionProperty].match(/([\d\.]+)%/)[1],
+ +jsCode.style[dimensionProperty].match(/([\d\.]+)%/)[1]
+ ];
+ } catch(e) {
+ sizes = [ 33.33, 33.33, 33.33 ]
+ } finally {
+
+ currentItem.sizes = sizes;
+
+ utils.log('saving key', key || currentItem.id, currentItem)
+ saveSetting(key || currentItem.id, currentItem, function () {
+ alertsService.add('Item saved.');
+ });
+ }
}
function populateItemsInSavedPane(items) {
@@ -234,7 +261,7 @@
}
function openItem(itemId) {
currentItem = savedItems[itemId];
- codeSplitInstance.setSizes([ 33.3, 33.3, 33.3 ]);
+ // codeSplitInstance.setSizes([ 33.3, 33.3, 33.3 ]);
refreshEditor();
alertsService.add('Saved item loaded');
}
@@ -647,8 +674,9 @@
});
});
- ['#js-html-code', '#js-css-code', '#js-js-code'].forEach(function (selector) {
- var el = document.querySelector(selector);
+ // Update code wrap collapse states whenever any of them transitions due to any
+ // reason.
+ [ htmlCode, cssCode, jsCode ].forEach(function (el) {
el.addEventListener('transitionend', function() {
updateCodeWrapCollapseStates();
});