lookbook 0.2.4 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +81 -0
- data/app/assets/lookbook/css/app.css +28 -0
- data/app/assets/lookbook/js/app.js +49 -24
- data/app/assets/lookbook/js/nav/leaf.js +20 -0
- data/app/assets/lookbook/js/nav/node.js +31 -0
- data/app/assets/lookbook/js/nav.js +39 -0
- data/app/assets/lookbook/js/page.js +33 -0
- data/app/assets/lookbook/js/utils/clipboard.js +13 -0
- data/app/assets/lookbook/js/utils/morph.js +16 -0
- data/app/assets/lookbook/js/{reloader.js → utils/reloader.js} +0 -0
- data/app/assets/lookbook/js/utils/screen.js +44 -0
- data/app/assets/lookbook/js/{size_observer.js → utils/size_observer.js} +1 -1
- data/app/assets/lookbook/js/{split.js → utils/split.js} +4 -4
- data/app/assets/lookbook/js/workbench/inspector.js +11 -0
- data/app/assets/lookbook/js/workbench/preview.js +39 -0
- data/app/assets/lookbook/js/workbench.js +14 -0
- data/app/controllers/lookbook/{browser_controller.rb → app_controller.rb} +58 -31
- data/app/helpers/lookbook/application_helper.rb +1 -1
- data/app/views/lookbook/_sidebar.html.erb +45 -0
- data/app/views/lookbook/_workbench.html.erb +12 -0
- data/app/views/lookbook/{browser → app}/error.html.erb +0 -0
- data/app/views/lookbook/app/index.html.erb +11 -0
- data/app/views/lookbook/{browser → app}/not_found.html.erb +1 -1
- data/app/views/lookbook/app/show.html.erb +1 -0
- data/app/views/lookbook/layouts/app.html.erb +16 -26
- data/app/views/lookbook/nav/_collection.html.erb +5 -0
- data/app/views/lookbook/nav/_leaf.html.erb +22 -0
- data/app/views/lookbook/nav/_node.html.erb +19 -0
- data/app/views/lookbook/nav/_preview.html.erb +11 -0
- data/app/views/lookbook/preview_group.html.erb +8 -0
- data/app/views/lookbook/shared/_clipboard.html.erb +11 -0
- data/app/views/lookbook/shared/_header.html.erb +8 -0
- data/app/views/lookbook/workbench/_header.html.erb +39 -0
- data/app/views/lookbook/workbench/_inspector.html.erb +32 -0
- data/app/views/lookbook/workbench/_preview.html.erb +24 -0
- data/app/views/lookbook/workbench/inspector/_code.html.erb +3 -0
- data/app/views/lookbook/workbench/inspector/_notes.html.erb +24 -0
- data/app/views/lookbook/{partials → workbench}/inspector/_plain.html.erb +0 -0
- data/config/routes.rb +3 -3
- data/lib/lookbook/preview.rb +26 -3
- data/lib/lookbook/preview_controller.rb +6 -1
- data/lib/lookbook/preview_example.rb +3 -2
- data/lib/lookbook/preview_group.rb +37 -0
- data/lib/lookbook/taggable.rb +5 -1
- data/lib/lookbook/version.rb +1 -1
- data/lib/lookbook.rb +1 -0
- data/lib/tasks/lookbook_tasks.rake +1 -1
- data/public/lookbook-assets/app.css +229 -99
- data/public/lookbook-assets/app.js +882 -56
- data/{app/views/lookbook/partials/_icon_sprite.html.erb → public/lookbook-assets/feather-sprite.svg} +1 -1
- metadata +51 -22
- data/app/assets/lookbook/js/preview.js +0 -76
- data/app/views/lookbook/browser/index.html.erb +0 -8
- data/app/views/lookbook/browser/show.html.erb +0 -33
- data/app/views/lookbook/partials/_preview.html.erb +0 -18
- data/app/views/lookbook/partials/_sidebar.html.erb +0 -21
- data/app/views/lookbook/partials/inspector/_code.html.erb +0 -1
- data/app/views/lookbook/partials/inspector/_inspector.html.erb +0 -43
- data/app/views/lookbook/partials/inspector/_prose.html.erb +0 -3
- data/app/views/lookbook/partials/nav/_collection.html.erb +0 -17
- data/app/views/lookbook/partials/nav/_label.html.erb +0 -13
- data/app/views/lookbook/partials/nav/_nav.html.erb +0 -27
- data/app/views/lookbook/partials/nav/_preview.html.erb +0 -48
@@ -631,6 +631,138 @@
|
|
631
631
|
}
|
632
632
|
});
|
633
633
|
|
634
|
+
// node_modules/@github/hotkey/dist/index.js
|
635
|
+
var Leaf = class {
|
636
|
+
constructor(trie) {
|
637
|
+
this.children = [];
|
638
|
+
this.parent = trie;
|
639
|
+
}
|
640
|
+
delete(value) {
|
641
|
+
const index2 = this.children.indexOf(value);
|
642
|
+
if (index2 === -1)
|
643
|
+
return false;
|
644
|
+
this.children = this.children.slice(0, index2).concat(this.children.slice(index2 + 1));
|
645
|
+
if (this.children.length === 0) {
|
646
|
+
this.parent.delete(this);
|
647
|
+
}
|
648
|
+
return true;
|
649
|
+
}
|
650
|
+
add(value) {
|
651
|
+
this.children.push(value);
|
652
|
+
return this;
|
653
|
+
}
|
654
|
+
};
|
655
|
+
var RadixTrie = class {
|
656
|
+
constructor(trie) {
|
657
|
+
this.parent = null;
|
658
|
+
this.children = {};
|
659
|
+
this.parent = trie || null;
|
660
|
+
}
|
661
|
+
get(edge) {
|
662
|
+
return this.children[edge];
|
663
|
+
}
|
664
|
+
insert(edges) {
|
665
|
+
let currentNode = this;
|
666
|
+
for (let i = 0; i < edges.length; i += 1) {
|
667
|
+
const edge = edges[i];
|
668
|
+
let nextNode = currentNode.get(edge);
|
669
|
+
if (i === edges.length - 1) {
|
670
|
+
if (nextNode instanceof RadixTrie) {
|
671
|
+
currentNode.delete(nextNode);
|
672
|
+
nextNode = null;
|
673
|
+
}
|
674
|
+
if (!nextNode) {
|
675
|
+
nextNode = new Leaf(currentNode);
|
676
|
+
currentNode.children[edge] = nextNode;
|
677
|
+
}
|
678
|
+
return nextNode;
|
679
|
+
} else {
|
680
|
+
if (nextNode instanceof Leaf)
|
681
|
+
nextNode = null;
|
682
|
+
if (!nextNode) {
|
683
|
+
nextNode = new RadixTrie(currentNode);
|
684
|
+
currentNode.children[edge] = nextNode;
|
685
|
+
}
|
686
|
+
}
|
687
|
+
currentNode = nextNode;
|
688
|
+
}
|
689
|
+
return currentNode;
|
690
|
+
}
|
691
|
+
delete(node) {
|
692
|
+
for (const edge in this.children) {
|
693
|
+
const currentNode = this.children[edge];
|
694
|
+
if (currentNode === node) {
|
695
|
+
const success = delete this.children[edge];
|
696
|
+
if (Object.keys(this.children).length === 0 && this.parent) {
|
697
|
+
this.parent.delete(this);
|
698
|
+
}
|
699
|
+
return success;
|
700
|
+
}
|
701
|
+
}
|
702
|
+
return false;
|
703
|
+
}
|
704
|
+
};
|
705
|
+
function isFormField(element) {
|
706
|
+
if (!(element instanceof HTMLElement)) {
|
707
|
+
return false;
|
708
|
+
}
|
709
|
+
const name = element.nodeName.toLowerCase();
|
710
|
+
const type = (element.getAttribute("type") || "").toLowerCase();
|
711
|
+
return name === "select" || name === "textarea" || name === "input" && type !== "submit" && type !== "reset" && type !== "checkbox" && type !== "radio" || element.isContentEditable;
|
712
|
+
}
|
713
|
+
function fireDeterminedAction(el) {
|
714
|
+
if (isFormField(el)) {
|
715
|
+
el.focus();
|
716
|
+
} else {
|
717
|
+
el.click();
|
718
|
+
}
|
719
|
+
}
|
720
|
+
function expandHotkeyToEdges(hotkey2) {
|
721
|
+
return hotkey2.split(",").map((edge) => edge.split(" "));
|
722
|
+
}
|
723
|
+
function hotkey(event) {
|
724
|
+
const elideShift = event.code.startsWith("Key") && event.shiftKey && event.key.toUpperCase() === event.key;
|
725
|
+
return `${event.ctrlKey ? "Control+" : ""}${event.altKey ? "Alt+" : ""}${event.metaKey ? "Meta+" : ""}${event.shiftKey && !elideShift ? "Shift+" : ""}${event.key}`;
|
726
|
+
}
|
727
|
+
var hotkeyRadixTrie = new RadixTrie();
|
728
|
+
var elementsLeaves = new WeakMap();
|
729
|
+
var currentTriePosition = hotkeyRadixTrie;
|
730
|
+
var resetTriePositionTimer = null;
|
731
|
+
function resetTriePosition() {
|
732
|
+
resetTriePositionTimer = null;
|
733
|
+
currentTriePosition = hotkeyRadixTrie;
|
734
|
+
}
|
735
|
+
function keyDownHandler(event) {
|
736
|
+
if (event.defaultPrevented)
|
737
|
+
return;
|
738
|
+
if (event.target instanceof Node && isFormField(event.target))
|
739
|
+
return;
|
740
|
+
if (resetTriePositionTimer != null) {
|
741
|
+
window.clearTimeout(resetTriePositionTimer);
|
742
|
+
}
|
743
|
+
resetTriePositionTimer = window.setTimeout(resetTriePosition, 1500);
|
744
|
+
const newTriePosition = currentTriePosition.get(hotkey(event));
|
745
|
+
if (!newTriePosition) {
|
746
|
+
resetTriePosition();
|
747
|
+
return;
|
748
|
+
}
|
749
|
+
currentTriePosition = newTriePosition;
|
750
|
+
if (newTriePosition instanceof Leaf) {
|
751
|
+
fireDeterminedAction(newTriePosition.children[newTriePosition.children.length - 1]);
|
752
|
+
event.preventDefault();
|
753
|
+
resetTriePosition();
|
754
|
+
return;
|
755
|
+
}
|
756
|
+
}
|
757
|
+
function install(element, hotkey2) {
|
758
|
+
if (Object.keys(hotkeyRadixTrie.children).length === 0) {
|
759
|
+
document.addEventListener("keydown", keyDownHandler);
|
760
|
+
}
|
761
|
+
const hotkeys = expandHotkeyToEdges(hotkey2 || element.getAttribute("data-hotkey") || "");
|
762
|
+
const leaves = hotkeys.map((h) => hotkeyRadixTrie.insert(h).add(element));
|
763
|
+
elementsLeaves.set(element, leaves);
|
764
|
+
}
|
765
|
+
|
634
766
|
// node_modules/alpinejs/dist/module.esm.js
|
635
767
|
var __create2 = Object.create;
|
636
768
|
var __defProp2 = Object.defineProperty;
|
@@ -691,7 +823,7 @@
|
|
691
823
|
};
|
692
824
|
var GLOBALS_WHITE_LISTED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt";
|
693
825
|
var isGloballyWhitelisted = /* @__PURE__ */ makeMap(GLOBALS_WHITE_LISTED);
|
694
|
-
var
|
826
|
+
var range2 = 2;
|
695
827
|
function generateCodeFrame(source, start2 = 0, end = source.length) {
|
696
828
|
const lines = source.split(/\r?\n/);
|
697
829
|
let count = 0;
|
@@ -699,7 +831,7 @@
|
|
699
831
|
for (let i = 0; i < lines.length; i++) {
|
700
832
|
count += lines[i].length + 1;
|
701
833
|
if (count >= start2) {
|
702
|
-
for (let j = i -
|
834
|
+
for (let j = i - range2; j <= i + range2 || end > count; j++) {
|
703
835
|
if (j < 0 || j >= lines.length)
|
704
836
|
continue;
|
705
837
|
const line = j + 1;
|
@@ -2314,9 +2446,9 @@ Expression: "${expression}"
|
|
2314
2446
|
stopDeferring();
|
2315
2447
|
}
|
2316
2448
|
function getDirectiveHandler(el, directive2) {
|
2317
|
-
let
|
2449
|
+
let noop2 = () => {
|
2318
2450
|
};
|
2319
|
-
let handler3 = directiveHandlers[directive2.type] ||
|
2451
|
+
let handler3 = directiveHandlers[directive2.type] || noop2;
|
2320
2452
|
let cleanups = [];
|
2321
2453
|
let cleanup2 = (callback) => cleanups.push(callback);
|
2322
2454
|
let [effect3, cleanupEffect] = elementBoundEffect(el);
|
@@ -5791,18 +5923,18 @@ Expression: "${expression}"
|
|
5791
5923
|
didTouchMove = false;
|
5792
5924
|
}
|
5793
5925
|
function addDocumentPress() {
|
5794
|
-
var
|
5795
|
-
|
5796
|
-
|
5797
|
-
|
5798
|
-
|
5926
|
+
var doc2 = getDocument();
|
5927
|
+
doc2.addEventListener("mousedown", onDocumentPress, true);
|
5928
|
+
doc2.addEventListener("touchend", onDocumentPress, TOUCH_OPTIONS);
|
5929
|
+
doc2.addEventListener("touchstart", onTouchStart, TOUCH_OPTIONS);
|
5930
|
+
doc2.addEventListener("touchmove", onTouchMove, TOUCH_OPTIONS);
|
5799
5931
|
}
|
5800
5932
|
function removeDocumentPress() {
|
5801
|
-
var
|
5802
|
-
|
5803
|
-
|
5804
|
-
|
5805
|
-
|
5933
|
+
var doc2 = getDocument();
|
5934
|
+
doc2.removeEventListener("mousedown", onDocumentPress, true);
|
5935
|
+
doc2.removeEventListener("touchend", onDocumentPress, TOUCH_OPTIONS);
|
5936
|
+
doc2.removeEventListener("touchstart", onTouchStart, TOUCH_OPTIONS);
|
5937
|
+
doc2.removeEventListener("touchmove", onTouchMove, TOUCH_OPTIONS);
|
5806
5938
|
}
|
5807
5939
|
function onTransitionedOut(duration, callback) {
|
5808
5940
|
onTransitionEnd(duration, function() {
|
@@ -6697,18 +6829,18 @@ Expression: "${expression}"
|
|
6697
6829
|
clientY
|
6698
6830
|
};
|
6699
6831
|
}
|
6700
|
-
function addMouseCoordsListener(
|
6701
|
-
|
6832
|
+
function addMouseCoordsListener(doc2) {
|
6833
|
+
doc2.addEventListener("mousemove", storeMouseCoords);
|
6702
6834
|
}
|
6703
|
-
function removeMouseCoordsListener(
|
6704
|
-
|
6835
|
+
function removeMouseCoordsListener(doc2) {
|
6836
|
+
doc2.removeEventListener("mousemove", storeMouseCoords);
|
6705
6837
|
}
|
6706
6838
|
var followCursor2 = {
|
6707
6839
|
name: "followCursor",
|
6708
6840
|
defaultValue: false,
|
6709
6841
|
fn: function fn(instance) {
|
6710
6842
|
var reference = instance.reference;
|
6711
|
-
var
|
6843
|
+
var doc2 = getOwnerDocument(instance.props.triggerTarget || reference);
|
6712
6844
|
var isInternalUpdate = false;
|
6713
6845
|
var wasFocusEvent = false;
|
6714
6846
|
var isUnmounted = true;
|
@@ -6717,10 +6849,10 @@ Expression: "${expression}"
|
|
6717
6849
|
return instance.props.followCursor === "initial" && instance.state.isVisible;
|
6718
6850
|
}
|
6719
6851
|
function addListener() {
|
6720
|
-
|
6852
|
+
doc2.addEventListener("mousemove", onMouseMove);
|
6721
6853
|
}
|
6722
6854
|
function removeListener() {
|
6723
|
-
|
6855
|
+
doc2.removeEventListener("mousemove", onMouseMove);
|
6724
6856
|
}
|
6725
6857
|
function unsetGetReferenceClientRect() {
|
6726
6858
|
isInternalUpdate = true;
|
@@ -6766,9 +6898,9 @@ Expression: "${expression}"
|
|
6766
6898
|
if (instance.props.followCursor) {
|
6767
6899
|
activeInstances.push({
|
6768
6900
|
instance,
|
6769
|
-
doc
|
6901
|
+
doc: doc2
|
6770
6902
|
});
|
6771
|
-
addMouseCoordsListener(
|
6903
|
+
addMouseCoordsListener(doc2);
|
6772
6904
|
}
|
6773
6905
|
}
|
6774
6906
|
function destroy3() {
|
@@ -6776,9 +6908,9 @@ Expression: "${expression}"
|
|
6776
6908
|
return data2.instance !== instance;
|
6777
6909
|
});
|
6778
6910
|
if (activeInstances.filter(function(data2) {
|
6779
|
-
return data2.doc ===
|
6911
|
+
return data2.doc === doc2;
|
6780
6912
|
}).length === 0) {
|
6781
|
-
removeMouseCoordsListener(
|
6913
|
+
removeMouseCoordsListener(doc2);
|
6782
6914
|
}
|
6783
6915
|
}
|
6784
6916
|
return {
|
@@ -7098,6 +7230,32 @@ Expression: "${expression}"
|
|
7098
7230
|
});
|
7099
7231
|
}
|
7100
7232
|
|
7233
|
+
// app/assets/lookbook/js/utils/screen.js
|
7234
|
+
function screen_default(Alpine3) {
|
7235
|
+
let data2 = Alpine3.reactive({ screensize: window.innerWidth });
|
7236
|
+
const defaultBreakpoints = {
|
7237
|
+
xs: 0,
|
7238
|
+
sm: 640,
|
7239
|
+
md: 768,
|
7240
|
+
lg: 1024,
|
7241
|
+
xl: 1280,
|
7242
|
+
"2xl": 1536
|
7243
|
+
};
|
7244
|
+
const breakpoints = window.AlpineMagicHelpersConfig && window.AlpineMagicHelpersConfig.breakpoints ? window.AlpineMagicHelpersConfig.breakpoints : defaultBreakpoints;
|
7245
|
+
window.addEventListener("resize", () => {
|
7246
|
+
data2.screensize = window.innerWidth;
|
7247
|
+
});
|
7248
|
+
Alpine3.magic("screen", () => (breakpoint) => {
|
7249
|
+
let width = data2.screensize;
|
7250
|
+
if (Number.isInteger(breakpoint))
|
7251
|
+
return breakpoint <= width;
|
7252
|
+
if (breakpoints[breakpoint] === void 0) {
|
7253
|
+
throw Error("Undefined $screen property: " + breakpoint + ". Supported properties: " + Object.keys(breakpoints).join(", "));
|
7254
|
+
}
|
7255
|
+
return breakpoints[breakpoint] <= width;
|
7256
|
+
});
|
7257
|
+
}
|
7258
|
+
|
7101
7259
|
// node_modules/split-grid/dist/split-grid.mjs
|
7102
7260
|
var numeric = function(value, unit) {
|
7103
7261
|
return Number(value.slice(0, -1 * unit.length));
|
@@ -7575,9 +7733,9 @@ Expression: "${expression}"
|
|
7575
7733
|
}
|
7576
7734
|
var split_grid_default = index;
|
7577
7735
|
|
7578
|
-
// app/assets/lookbook/js/split.js
|
7736
|
+
// app/assets/lookbook/js/utils/split.js
|
7579
7737
|
function split_default(props) {
|
7580
|
-
const
|
7738
|
+
const page2 = Alpine.store("page");
|
7581
7739
|
return {
|
7582
7740
|
init() {
|
7583
7741
|
split_grid_default({
|
@@ -7588,23 +7746,562 @@ Expression: "${expression}"
|
|
7588
7746
|
writeStyle() {
|
7589
7747
|
},
|
7590
7748
|
onDrag(dir, track, style) {
|
7591
|
-
splits = style.split(" ").map((num) => parseInt(num));
|
7749
|
+
const splits = style.split(" ").map((num) => parseInt(num));
|
7592
7750
|
props.onDrag(splits);
|
7593
7751
|
},
|
7594
7752
|
onDragStart() {
|
7595
|
-
|
7753
|
+
page2.reflowing = true;
|
7596
7754
|
},
|
7597
7755
|
onDragEnd() {
|
7598
|
-
|
7756
|
+
page2.reflowing = false;
|
7757
|
+
}
|
7758
|
+
});
|
7759
|
+
}
|
7760
|
+
};
|
7761
|
+
}
|
7762
|
+
|
7763
|
+
// node_modules/morphdom/dist/morphdom-esm.js
|
7764
|
+
var DOCUMENT_FRAGMENT_NODE = 11;
|
7765
|
+
function morphAttrs(fromNode, toNode) {
|
7766
|
+
var toNodeAttrs = toNode.attributes;
|
7767
|
+
var attr;
|
7768
|
+
var attrName;
|
7769
|
+
var attrNamespaceURI;
|
7770
|
+
var attrValue;
|
7771
|
+
var fromValue;
|
7772
|
+
if (toNode.nodeType === DOCUMENT_FRAGMENT_NODE || fromNode.nodeType === DOCUMENT_FRAGMENT_NODE) {
|
7773
|
+
return;
|
7774
|
+
}
|
7775
|
+
for (var i = toNodeAttrs.length - 1; i >= 0; i--) {
|
7776
|
+
attr = toNodeAttrs[i];
|
7777
|
+
attrName = attr.name;
|
7778
|
+
attrNamespaceURI = attr.namespaceURI;
|
7779
|
+
attrValue = attr.value;
|
7780
|
+
if (attrNamespaceURI) {
|
7781
|
+
attrName = attr.localName || attrName;
|
7782
|
+
fromValue = fromNode.getAttributeNS(attrNamespaceURI, attrName);
|
7783
|
+
if (fromValue !== attrValue) {
|
7784
|
+
if (attr.prefix === "xmlns") {
|
7785
|
+
attrName = attr.name;
|
7786
|
+
}
|
7787
|
+
fromNode.setAttributeNS(attrNamespaceURI, attrName, attrValue);
|
7788
|
+
}
|
7789
|
+
} else {
|
7790
|
+
fromValue = fromNode.getAttribute(attrName);
|
7791
|
+
if (fromValue !== attrValue) {
|
7792
|
+
fromNode.setAttribute(attrName, attrValue);
|
7793
|
+
}
|
7794
|
+
}
|
7795
|
+
}
|
7796
|
+
var fromNodeAttrs = fromNode.attributes;
|
7797
|
+
for (var d = fromNodeAttrs.length - 1; d >= 0; d--) {
|
7798
|
+
attr = fromNodeAttrs[d];
|
7799
|
+
attrName = attr.name;
|
7800
|
+
attrNamespaceURI = attr.namespaceURI;
|
7801
|
+
if (attrNamespaceURI) {
|
7802
|
+
attrName = attr.localName || attrName;
|
7803
|
+
if (!toNode.hasAttributeNS(attrNamespaceURI, attrName)) {
|
7804
|
+
fromNode.removeAttributeNS(attrNamespaceURI, attrName);
|
7805
|
+
}
|
7806
|
+
} else {
|
7807
|
+
if (!toNode.hasAttribute(attrName)) {
|
7808
|
+
fromNode.removeAttribute(attrName);
|
7809
|
+
}
|
7810
|
+
}
|
7811
|
+
}
|
7812
|
+
}
|
7813
|
+
var range;
|
7814
|
+
var NS_XHTML = "http://www.w3.org/1999/xhtml";
|
7815
|
+
var doc = typeof document === "undefined" ? void 0 : document;
|
7816
|
+
var HAS_TEMPLATE_SUPPORT = !!doc && "content" in doc.createElement("template");
|
7817
|
+
var HAS_RANGE_SUPPORT = !!doc && doc.createRange && "createContextualFragment" in doc.createRange();
|
7818
|
+
function createFragmentFromTemplate(str) {
|
7819
|
+
var template = doc.createElement("template");
|
7820
|
+
template.innerHTML = str;
|
7821
|
+
return template.content.childNodes[0];
|
7822
|
+
}
|
7823
|
+
function createFragmentFromRange(str) {
|
7824
|
+
if (!range) {
|
7825
|
+
range = doc.createRange();
|
7826
|
+
range.selectNode(doc.body);
|
7827
|
+
}
|
7828
|
+
var fragment = range.createContextualFragment(str);
|
7829
|
+
return fragment.childNodes[0];
|
7830
|
+
}
|
7831
|
+
function createFragmentFromWrap(str) {
|
7832
|
+
var fragment = doc.createElement("body");
|
7833
|
+
fragment.innerHTML = str;
|
7834
|
+
return fragment.childNodes[0];
|
7835
|
+
}
|
7836
|
+
function toElement(str) {
|
7837
|
+
str = str.trim();
|
7838
|
+
if (HAS_TEMPLATE_SUPPORT) {
|
7839
|
+
return createFragmentFromTemplate(str);
|
7840
|
+
} else if (HAS_RANGE_SUPPORT) {
|
7841
|
+
return createFragmentFromRange(str);
|
7842
|
+
}
|
7843
|
+
return createFragmentFromWrap(str);
|
7844
|
+
}
|
7845
|
+
function compareNodeNames(fromEl, toEl) {
|
7846
|
+
var fromNodeName = fromEl.nodeName;
|
7847
|
+
var toNodeName = toEl.nodeName;
|
7848
|
+
var fromCodeStart, toCodeStart;
|
7849
|
+
if (fromNodeName === toNodeName) {
|
7850
|
+
return true;
|
7851
|
+
}
|
7852
|
+
fromCodeStart = fromNodeName.charCodeAt(0);
|
7853
|
+
toCodeStart = toNodeName.charCodeAt(0);
|
7854
|
+
if (fromCodeStart <= 90 && toCodeStart >= 97) {
|
7855
|
+
return fromNodeName === toNodeName.toUpperCase();
|
7856
|
+
} else if (toCodeStart <= 90 && fromCodeStart >= 97) {
|
7857
|
+
return toNodeName === fromNodeName.toUpperCase();
|
7858
|
+
} else {
|
7859
|
+
return false;
|
7860
|
+
}
|
7861
|
+
}
|
7862
|
+
function createElementNS(name, namespaceURI) {
|
7863
|
+
return !namespaceURI || namespaceURI === NS_XHTML ? doc.createElement(name) : doc.createElementNS(namespaceURI, name);
|
7864
|
+
}
|
7865
|
+
function moveChildren(fromEl, toEl) {
|
7866
|
+
var curChild = fromEl.firstChild;
|
7867
|
+
while (curChild) {
|
7868
|
+
var nextChild = curChild.nextSibling;
|
7869
|
+
toEl.appendChild(curChild);
|
7870
|
+
curChild = nextChild;
|
7871
|
+
}
|
7872
|
+
return toEl;
|
7873
|
+
}
|
7874
|
+
function syncBooleanAttrProp(fromEl, toEl, name) {
|
7875
|
+
if (fromEl[name] !== toEl[name]) {
|
7876
|
+
fromEl[name] = toEl[name];
|
7877
|
+
if (fromEl[name]) {
|
7878
|
+
fromEl.setAttribute(name, "");
|
7879
|
+
} else {
|
7880
|
+
fromEl.removeAttribute(name);
|
7881
|
+
}
|
7882
|
+
}
|
7883
|
+
}
|
7884
|
+
var specialElHandlers = {
|
7885
|
+
OPTION: function(fromEl, toEl) {
|
7886
|
+
var parentNode = fromEl.parentNode;
|
7887
|
+
if (parentNode) {
|
7888
|
+
var parentName = parentNode.nodeName.toUpperCase();
|
7889
|
+
if (parentName === "OPTGROUP") {
|
7890
|
+
parentNode = parentNode.parentNode;
|
7891
|
+
parentName = parentNode && parentNode.nodeName.toUpperCase();
|
7892
|
+
}
|
7893
|
+
if (parentName === "SELECT" && !parentNode.hasAttribute("multiple")) {
|
7894
|
+
if (fromEl.hasAttribute("selected") && !toEl.selected) {
|
7895
|
+
fromEl.setAttribute("selected", "selected");
|
7896
|
+
fromEl.removeAttribute("selected");
|
7897
|
+
}
|
7898
|
+
parentNode.selectedIndex = -1;
|
7899
|
+
}
|
7900
|
+
}
|
7901
|
+
syncBooleanAttrProp(fromEl, toEl, "selected");
|
7902
|
+
},
|
7903
|
+
INPUT: function(fromEl, toEl) {
|
7904
|
+
syncBooleanAttrProp(fromEl, toEl, "checked");
|
7905
|
+
syncBooleanAttrProp(fromEl, toEl, "disabled");
|
7906
|
+
if (fromEl.value !== toEl.value) {
|
7907
|
+
fromEl.value = toEl.value;
|
7908
|
+
}
|
7909
|
+
if (!toEl.hasAttribute("value")) {
|
7910
|
+
fromEl.removeAttribute("value");
|
7911
|
+
}
|
7912
|
+
},
|
7913
|
+
TEXTAREA: function(fromEl, toEl) {
|
7914
|
+
var newValue = toEl.value;
|
7915
|
+
if (fromEl.value !== newValue) {
|
7916
|
+
fromEl.value = newValue;
|
7917
|
+
}
|
7918
|
+
var firstChild = fromEl.firstChild;
|
7919
|
+
if (firstChild) {
|
7920
|
+
var oldValue = firstChild.nodeValue;
|
7921
|
+
if (oldValue == newValue || !newValue && oldValue == fromEl.placeholder) {
|
7922
|
+
return;
|
7923
|
+
}
|
7924
|
+
firstChild.nodeValue = newValue;
|
7925
|
+
}
|
7926
|
+
},
|
7927
|
+
SELECT: function(fromEl, toEl) {
|
7928
|
+
if (!toEl.hasAttribute("multiple")) {
|
7929
|
+
var selectedIndex = -1;
|
7930
|
+
var i = 0;
|
7931
|
+
var curChild = fromEl.firstChild;
|
7932
|
+
var optgroup;
|
7933
|
+
var nodeName;
|
7934
|
+
while (curChild) {
|
7935
|
+
nodeName = curChild.nodeName && curChild.nodeName.toUpperCase();
|
7936
|
+
if (nodeName === "OPTGROUP") {
|
7937
|
+
optgroup = curChild;
|
7938
|
+
curChild = optgroup.firstChild;
|
7939
|
+
} else {
|
7940
|
+
if (nodeName === "OPTION") {
|
7941
|
+
if (curChild.hasAttribute("selected")) {
|
7942
|
+
selectedIndex = i;
|
7943
|
+
break;
|
7944
|
+
}
|
7945
|
+
i++;
|
7946
|
+
}
|
7947
|
+
curChild = curChild.nextSibling;
|
7948
|
+
if (!curChild && optgroup) {
|
7949
|
+
curChild = optgroup.nextSibling;
|
7950
|
+
optgroup = null;
|
7951
|
+
}
|
7952
|
+
}
|
7953
|
+
}
|
7954
|
+
fromEl.selectedIndex = selectedIndex;
|
7955
|
+
}
|
7956
|
+
}
|
7957
|
+
};
|
7958
|
+
var ELEMENT_NODE = 1;
|
7959
|
+
var DOCUMENT_FRAGMENT_NODE$1 = 11;
|
7960
|
+
var TEXT_NODE = 3;
|
7961
|
+
var COMMENT_NODE = 8;
|
7962
|
+
function noop() {
|
7963
|
+
}
|
7964
|
+
function defaultGetNodeKey(node) {
|
7965
|
+
if (node) {
|
7966
|
+
return node.getAttribute && node.getAttribute("id") || node.id;
|
7967
|
+
}
|
7968
|
+
}
|
7969
|
+
function morphdomFactory(morphAttrs2) {
|
7970
|
+
return function morphdom2(fromNode, toNode, options) {
|
7971
|
+
if (!options) {
|
7972
|
+
options = {};
|
7973
|
+
}
|
7974
|
+
if (typeof toNode === "string") {
|
7975
|
+
if (fromNode.nodeName === "#document" || fromNode.nodeName === "HTML" || fromNode.nodeName === "BODY") {
|
7976
|
+
var toNodeHtml = toNode;
|
7977
|
+
toNode = doc.createElement("html");
|
7978
|
+
toNode.innerHTML = toNodeHtml;
|
7979
|
+
} else {
|
7980
|
+
toNode = toElement(toNode);
|
7981
|
+
}
|
7982
|
+
}
|
7983
|
+
var getNodeKey = options.getNodeKey || defaultGetNodeKey;
|
7984
|
+
var onBeforeNodeAdded = options.onBeforeNodeAdded || noop;
|
7985
|
+
var onNodeAdded = options.onNodeAdded || noop;
|
7986
|
+
var onBeforeElUpdated = options.onBeforeElUpdated || noop;
|
7987
|
+
var onElUpdated = options.onElUpdated || noop;
|
7988
|
+
var onBeforeNodeDiscarded = options.onBeforeNodeDiscarded || noop;
|
7989
|
+
var onNodeDiscarded = options.onNodeDiscarded || noop;
|
7990
|
+
var onBeforeElChildrenUpdated = options.onBeforeElChildrenUpdated || noop;
|
7991
|
+
var childrenOnly = options.childrenOnly === true;
|
7992
|
+
var fromNodesLookup = Object.create(null);
|
7993
|
+
var keyedRemovalList = [];
|
7994
|
+
function addKeyedRemoval(key) {
|
7995
|
+
keyedRemovalList.push(key);
|
7996
|
+
}
|
7997
|
+
function walkDiscardedChildNodes(node, skipKeyedNodes) {
|
7998
|
+
if (node.nodeType === ELEMENT_NODE) {
|
7999
|
+
var curChild = node.firstChild;
|
8000
|
+
while (curChild) {
|
8001
|
+
var key = void 0;
|
8002
|
+
if (skipKeyedNodes && (key = getNodeKey(curChild))) {
|
8003
|
+
addKeyedRemoval(key);
|
8004
|
+
} else {
|
8005
|
+
onNodeDiscarded(curChild);
|
8006
|
+
if (curChild.firstChild) {
|
8007
|
+
walkDiscardedChildNodes(curChild, skipKeyedNodes);
|
8008
|
+
}
|
8009
|
+
}
|
8010
|
+
curChild = curChild.nextSibling;
|
8011
|
+
}
|
8012
|
+
}
|
8013
|
+
}
|
8014
|
+
function removeNode(node, parentNode, skipKeyedNodes) {
|
8015
|
+
if (onBeforeNodeDiscarded(node) === false) {
|
8016
|
+
return;
|
8017
|
+
}
|
8018
|
+
if (parentNode) {
|
8019
|
+
parentNode.removeChild(node);
|
8020
|
+
}
|
8021
|
+
onNodeDiscarded(node);
|
8022
|
+
walkDiscardedChildNodes(node, skipKeyedNodes);
|
8023
|
+
}
|
8024
|
+
function indexTree(node) {
|
8025
|
+
if (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE$1) {
|
8026
|
+
var curChild = node.firstChild;
|
8027
|
+
while (curChild) {
|
8028
|
+
var key = getNodeKey(curChild);
|
8029
|
+
if (key) {
|
8030
|
+
fromNodesLookup[key] = curChild;
|
8031
|
+
}
|
8032
|
+
indexTree(curChild);
|
8033
|
+
curChild = curChild.nextSibling;
|
8034
|
+
}
|
8035
|
+
}
|
8036
|
+
}
|
8037
|
+
indexTree(fromNode);
|
8038
|
+
function handleNodeAdded(el) {
|
8039
|
+
onNodeAdded(el);
|
8040
|
+
var curChild = el.firstChild;
|
8041
|
+
while (curChild) {
|
8042
|
+
var nextSibling = curChild.nextSibling;
|
8043
|
+
var key = getNodeKey(curChild);
|
8044
|
+
if (key) {
|
8045
|
+
var unmatchedFromEl = fromNodesLookup[key];
|
8046
|
+
if (unmatchedFromEl && compareNodeNames(curChild, unmatchedFromEl)) {
|
8047
|
+
curChild.parentNode.replaceChild(unmatchedFromEl, curChild);
|
8048
|
+
morphEl(unmatchedFromEl, curChild);
|
8049
|
+
} else {
|
8050
|
+
handleNodeAdded(curChild);
|
8051
|
+
}
|
8052
|
+
} else {
|
8053
|
+
handleNodeAdded(curChild);
|
8054
|
+
}
|
8055
|
+
curChild = nextSibling;
|
8056
|
+
}
|
8057
|
+
}
|
8058
|
+
function cleanupFromEl(fromEl, curFromNodeChild, curFromNodeKey) {
|
8059
|
+
while (curFromNodeChild) {
|
8060
|
+
var fromNextSibling = curFromNodeChild.nextSibling;
|
8061
|
+
if (curFromNodeKey = getNodeKey(curFromNodeChild)) {
|
8062
|
+
addKeyedRemoval(curFromNodeKey);
|
8063
|
+
} else {
|
8064
|
+
removeNode(curFromNodeChild, fromEl, true);
|
8065
|
+
}
|
8066
|
+
curFromNodeChild = fromNextSibling;
|
8067
|
+
}
|
8068
|
+
}
|
8069
|
+
function morphEl(fromEl, toEl, childrenOnly2) {
|
8070
|
+
var toElKey = getNodeKey(toEl);
|
8071
|
+
if (toElKey) {
|
8072
|
+
delete fromNodesLookup[toElKey];
|
8073
|
+
}
|
8074
|
+
if (!childrenOnly2) {
|
8075
|
+
if (onBeforeElUpdated(fromEl, toEl) === false) {
|
8076
|
+
return;
|
8077
|
+
}
|
8078
|
+
morphAttrs2(fromEl, toEl);
|
8079
|
+
onElUpdated(fromEl);
|
8080
|
+
if (onBeforeElChildrenUpdated(fromEl, toEl) === false) {
|
8081
|
+
return;
|
8082
|
+
}
|
8083
|
+
}
|
8084
|
+
if (fromEl.nodeName !== "TEXTAREA") {
|
8085
|
+
morphChildren(fromEl, toEl);
|
8086
|
+
} else {
|
8087
|
+
specialElHandlers.TEXTAREA(fromEl, toEl);
|
8088
|
+
}
|
8089
|
+
}
|
8090
|
+
function morphChildren(fromEl, toEl) {
|
8091
|
+
var curToNodeChild = toEl.firstChild;
|
8092
|
+
var curFromNodeChild = fromEl.firstChild;
|
8093
|
+
var curToNodeKey;
|
8094
|
+
var curFromNodeKey;
|
8095
|
+
var fromNextSibling;
|
8096
|
+
var toNextSibling;
|
8097
|
+
var matchingFromEl;
|
8098
|
+
outer:
|
8099
|
+
while (curToNodeChild) {
|
8100
|
+
toNextSibling = curToNodeChild.nextSibling;
|
8101
|
+
curToNodeKey = getNodeKey(curToNodeChild);
|
8102
|
+
while (curFromNodeChild) {
|
8103
|
+
fromNextSibling = curFromNodeChild.nextSibling;
|
8104
|
+
if (curToNodeChild.isSameNode && curToNodeChild.isSameNode(curFromNodeChild)) {
|
8105
|
+
curToNodeChild = toNextSibling;
|
8106
|
+
curFromNodeChild = fromNextSibling;
|
8107
|
+
continue outer;
|
8108
|
+
}
|
8109
|
+
curFromNodeKey = getNodeKey(curFromNodeChild);
|
8110
|
+
var curFromNodeType = curFromNodeChild.nodeType;
|
8111
|
+
var isCompatible = void 0;
|
8112
|
+
if (curFromNodeType === curToNodeChild.nodeType) {
|
8113
|
+
if (curFromNodeType === ELEMENT_NODE) {
|
8114
|
+
if (curToNodeKey) {
|
8115
|
+
if (curToNodeKey !== curFromNodeKey) {
|
8116
|
+
if (matchingFromEl = fromNodesLookup[curToNodeKey]) {
|
8117
|
+
if (fromNextSibling === matchingFromEl) {
|
8118
|
+
isCompatible = false;
|
8119
|
+
} else {
|
8120
|
+
fromEl.insertBefore(matchingFromEl, curFromNodeChild);
|
8121
|
+
if (curFromNodeKey) {
|
8122
|
+
addKeyedRemoval(curFromNodeKey);
|
8123
|
+
} else {
|
8124
|
+
removeNode(curFromNodeChild, fromEl, true);
|
8125
|
+
}
|
8126
|
+
curFromNodeChild = matchingFromEl;
|
8127
|
+
}
|
8128
|
+
} else {
|
8129
|
+
isCompatible = false;
|
8130
|
+
}
|
8131
|
+
}
|
8132
|
+
} else if (curFromNodeKey) {
|
8133
|
+
isCompatible = false;
|
8134
|
+
}
|
8135
|
+
isCompatible = isCompatible !== false && compareNodeNames(curFromNodeChild, curToNodeChild);
|
8136
|
+
if (isCompatible) {
|
8137
|
+
morphEl(curFromNodeChild, curToNodeChild);
|
8138
|
+
}
|
8139
|
+
} else if (curFromNodeType === TEXT_NODE || curFromNodeType == COMMENT_NODE) {
|
8140
|
+
isCompatible = true;
|
8141
|
+
if (curFromNodeChild.nodeValue !== curToNodeChild.nodeValue) {
|
8142
|
+
curFromNodeChild.nodeValue = curToNodeChild.nodeValue;
|
8143
|
+
}
|
8144
|
+
}
|
8145
|
+
}
|
8146
|
+
if (isCompatible) {
|
8147
|
+
curToNodeChild = toNextSibling;
|
8148
|
+
curFromNodeChild = fromNextSibling;
|
8149
|
+
continue outer;
|
8150
|
+
}
|
8151
|
+
if (curFromNodeKey) {
|
8152
|
+
addKeyedRemoval(curFromNodeKey);
|
8153
|
+
} else {
|
8154
|
+
removeNode(curFromNodeChild, fromEl, true);
|
8155
|
+
}
|
8156
|
+
curFromNodeChild = fromNextSibling;
|
8157
|
+
}
|
8158
|
+
if (curToNodeKey && (matchingFromEl = fromNodesLookup[curToNodeKey]) && compareNodeNames(matchingFromEl, curToNodeChild)) {
|
8159
|
+
fromEl.appendChild(matchingFromEl);
|
8160
|
+
morphEl(matchingFromEl, curToNodeChild);
|
8161
|
+
} else {
|
8162
|
+
var onBeforeNodeAddedResult = onBeforeNodeAdded(curToNodeChild);
|
8163
|
+
if (onBeforeNodeAddedResult !== false) {
|
8164
|
+
if (onBeforeNodeAddedResult) {
|
8165
|
+
curToNodeChild = onBeforeNodeAddedResult;
|
8166
|
+
}
|
8167
|
+
if (curToNodeChild.actualize) {
|
8168
|
+
curToNodeChild = curToNodeChild.actualize(fromEl.ownerDocument || doc);
|
8169
|
+
}
|
8170
|
+
fromEl.appendChild(curToNodeChild);
|
8171
|
+
handleNodeAdded(curToNodeChild);
|
8172
|
+
}
|
8173
|
+
}
|
8174
|
+
curToNodeChild = toNextSibling;
|
8175
|
+
curFromNodeChild = fromNextSibling;
|
8176
|
+
}
|
8177
|
+
cleanupFromEl(fromEl, curFromNodeChild, curFromNodeKey);
|
8178
|
+
var specialElHandler = specialElHandlers[fromEl.nodeName];
|
8179
|
+
if (specialElHandler) {
|
8180
|
+
specialElHandler(fromEl, toEl);
|
8181
|
+
}
|
8182
|
+
}
|
8183
|
+
var morphedNode = fromNode;
|
8184
|
+
var morphedNodeType = morphedNode.nodeType;
|
8185
|
+
var toNodeType = toNode.nodeType;
|
8186
|
+
if (!childrenOnly) {
|
8187
|
+
if (morphedNodeType === ELEMENT_NODE) {
|
8188
|
+
if (toNodeType === ELEMENT_NODE) {
|
8189
|
+
if (!compareNodeNames(fromNode, toNode)) {
|
8190
|
+
onNodeDiscarded(fromNode);
|
8191
|
+
morphedNode = moveChildren(fromNode, createElementNS(toNode.nodeName, toNode.namespaceURI));
|
8192
|
+
}
|
8193
|
+
} else {
|
8194
|
+
morphedNode = toNode;
|
8195
|
+
}
|
8196
|
+
} else if (morphedNodeType === TEXT_NODE || morphedNodeType === COMMENT_NODE) {
|
8197
|
+
if (toNodeType === morphedNodeType) {
|
8198
|
+
if (morphedNode.nodeValue !== toNode.nodeValue) {
|
8199
|
+
morphedNode.nodeValue = toNode.nodeValue;
|
8200
|
+
}
|
8201
|
+
return morphedNode;
|
8202
|
+
} else {
|
8203
|
+
morphedNode = toNode;
|
8204
|
+
}
|
8205
|
+
}
|
8206
|
+
}
|
8207
|
+
if (morphedNode === toNode) {
|
8208
|
+
onNodeDiscarded(fromNode);
|
8209
|
+
} else {
|
8210
|
+
if (toNode.isSameNode && toNode.isSameNode(morphedNode)) {
|
8211
|
+
return;
|
8212
|
+
}
|
8213
|
+
morphEl(morphedNode, toNode, childrenOnly);
|
8214
|
+
if (keyedRemovalList) {
|
8215
|
+
for (var i = 0, len = keyedRemovalList.length; i < len; i++) {
|
8216
|
+
var elToRemove = fromNodesLookup[keyedRemovalList[i]];
|
8217
|
+
if (elToRemove) {
|
8218
|
+
removeNode(elToRemove, elToRemove.parentNode, false);
|
8219
|
+
}
|
7599
8220
|
}
|
8221
|
+
}
|
8222
|
+
}
|
8223
|
+
if (!childrenOnly && morphedNode !== fromNode && fromNode.parentNode) {
|
8224
|
+
if (morphedNode.actualize) {
|
8225
|
+
morphedNode = morphedNode.actualize(fromNode.ownerDocument || doc);
|
8226
|
+
}
|
8227
|
+
fromNode.parentNode.replaceChild(morphedNode, fromNode);
|
8228
|
+
}
|
8229
|
+
return morphedNode;
|
8230
|
+
};
|
8231
|
+
}
|
8232
|
+
var morphdom = morphdomFactory(morphAttrs);
|
8233
|
+
var morphdom_esm_default = morphdom;
|
8234
|
+
|
8235
|
+
// app/assets/lookbook/js/utils/morph.js
|
8236
|
+
function morph_default(from, to, opts = {}) {
|
8237
|
+
morphdom_esm_default(from, to, __spreadValues({
|
8238
|
+
onBeforeElUpdated: function(fromEl, toEl) {
|
8239
|
+
if (fromEl._x_dataStack) {
|
8240
|
+
Alpine.clone(fromEl, toEl);
|
8241
|
+
}
|
8242
|
+
if (fromEl.isEqualNode(toEl)) {
|
8243
|
+
return false;
|
8244
|
+
}
|
8245
|
+
return true;
|
8246
|
+
}
|
8247
|
+
}, opts));
|
8248
|
+
}
|
8249
|
+
|
8250
|
+
// app/assets/lookbook/js/page.js
|
8251
|
+
function page() {
|
8252
|
+
const store2 = Alpine.store("page");
|
8253
|
+
return {
|
8254
|
+
ready: false,
|
8255
|
+
sidebarOpenMobile: false,
|
8256
|
+
init() {
|
8257
|
+
this.$nextTick(() => this.ready = true);
|
8258
|
+
},
|
8259
|
+
splitProps: {
|
8260
|
+
minSize: 200,
|
8261
|
+
onDrag(splits) {
|
8262
|
+
Alpine.store("nav").width = Math.min(splits[0], 500);
|
8263
|
+
}
|
8264
|
+
},
|
8265
|
+
fetchHTML() {
|
8266
|
+
return __async(this, null, function* () {
|
8267
|
+
const response = yield fetch(window.document.location);
|
8268
|
+
if (!response.ok)
|
8269
|
+
return window.location.reload();
|
8270
|
+
const html = yield response.text();
|
8271
|
+
store2.doc = new DOMParser().parseFromString(html, "text/html");
|
8272
|
+
return store2.doc;
|
7600
8273
|
});
|
8274
|
+
},
|
8275
|
+
updateTitle() {
|
8276
|
+
document.title = store2.doc.title;
|
8277
|
+
},
|
8278
|
+
render() {
|
8279
|
+
if (this.ready) {
|
8280
|
+
morph_default(this.$el, store2.doc.getElementById(this.$el.id));
|
8281
|
+
}
|
7601
8282
|
}
|
7602
8283
|
};
|
7603
8284
|
}
|
7604
8285
|
|
7605
|
-
// app/assets/lookbook/js/
|
8286
|
+
// app/assets/lookbook/js/workbench.js
|
8287
|
+
function workbench() {
|
8288
|
+
const inspector2 = Alpine.store("inspector");
|
8289
|
+
return {
|
8290
|
+
previewViewportHeight: 0,
|
8291
|
+
previewViewportWidth: 0,
|
8292
|
+
splitProps: {
|
8293
|
+
direction: "vertical",
|
8294
|
+
minSize: 200,
|
8295
|
+
onDrag(splits) {
|
8296
|
+
inspector2.height = splits[2];
|
8297
|
+
}
|
8298
|
+
}
|
8299
|
+
};
|
8300
|
+
}
|
8301
|
+
|
8302
|
+
// app/assets/lookbook/js/workbench/preview.js
|
7606
8303
|
function preview() {
|
7607
|
-
const app = Alpine.store("
|
8304
|
+
const app = Alpine.store("page");
|
7608
8305
|
const preview2 = Alpine.store("preview");
|
7609
8306
|
return {
|
7610
8307
|
init() {
|
@@ -7626,27 +8323,129 @@ Expression: "${expression}"
|
|
7626
8323
|
window.addEventListener("pointermove", this.onResize);
|
7627
8324
|
window.addEventListener("pointerup", this.onResizeEnd);
|
7628
8325
|
},
|
7629
|
-
onResizeEnd(
|
8326
|
+
onResizeEnd() {
|
7630
8327
|
window.removeEventListener("pointermove", this.onResize);
|
7631
8328
|
window.removeEventListener("pointerup", this.onResizeEnd);
|
7632
8329
|
app.reflowing = false;
|
7633
8330
|
},
|
7634
|
-
|
7635
|
-
|
7636
|
-
|
7637
|
-
|
7638
|
-
|
7639
|
-
|
7640
|
-
|
7641
|
-
|
8331
|
+
toggleFullWidth() {
|
8332
|
+
if (preview2.width === "100%" && preview2.lastWidth) {
|
8333
|
+
preview2.width = preview2.lastWidth;
|
8334
|
+
} else {
|
8335
|
+
preview2.lastWidth = preview2.width;
|
8336
|
+
preview2.width = "100%";
|
8337
|
+
}
|
8338
|
+
}
|
8339
|
+
};
|
8340
|
+
}
|
8341
|
+
|
8342
|
+
// app/assets/lookbook/js/workbench/inspector.js
|
8343
|
+
function inspector() {
|
8344
|
+
const inspector2 = Alpine.store("inspector");
|
8345
|
+
return {
|
8346
|
+
switchTo(id) {
|
8347
|
+
inspector2.active = id;
|
8348
|
+
},
|
8349
|
+
active(id) {
|
8350
|
+
return inspector2.active === id;
|
8351
|
+
}
|
8352
|
+
};
|
8353
|
+
}
|
8354
|
+
|
8355
|
+
// app/assets/lookbook/js/nav.js
|
8356
|
+
function nav_default() {
|
8357
|
+
return {
|
8358
|
+
clearFilter() {
|
8359
|
+
this.$store.nav.filter = "";
|
8360
|
+
},
|
8361
|
+
init() {
|
8362
|
+
this.$watch("$store.nav.filter", (value) => {
|
8363
|
+
const nav = this.$store.nav;
|
8364
|
+
nav.filterText = value.replace(/\s/g, "").toLowerCase();
|
8365
|
+
nav.filtering = nav.filterText.length > 0;
|
8366
|
+
});
|
8367
|
+
},
|
8368
|
+
updateNav(event) {
|
8369
|
+
const nav = document.getElementById("nav");
|
8370
|
+
nav.style.height = `${this.$refs.shim.offsetHeight}px`;
|
8371
|
+
morph_default(nav, event.detail.doc.getElementById("nav"));
|
8372
|
+
Promise.resolve().then(() => {
|
8373
|
+
this.$refs.shim.style.height = "auto";
|
8374
|
+
this.$dispatch("nav:updated");
|
8375
|
+
});
|
8376
|
+
},
|
8377
|
+
navigate(path) {
|
8378
|
+
if (path instanceof Event) {
|
8379
|
+
path = path.currentTarget.href;
|
8380
|
+
}
|
8381
|
+
history.pushState({}, null, path);
|
8382
|
+
this.$dispatch("popstate");
|
8383
|
+
},
|
8384
|
+
focusFilter() {
|
8385
|
+
this.currentFocus = this.$refs.filter;
|
8386
|
+
setTimeout(() => this.$refs.filter.focus(), 0);
|
8387
|
+
},
|
8388
|
+
unfocusFilter() {
|
8389
|
+
this.$refs.filter.blur();
|
8390
|
+
}
|
8391
|
+
};
|
8392
|
+
}
|
8393
|
+
|
8394
|
+
// app/assets/lookbook/js/nav/node.js
|
8395
|
+
function navNode() {
|
8396
|
+
return {
|
8397
|
+
id: null,
|
8398
|
+
hidden: true,
|
8399
|
+
children: [],
|
8400
|
+
init() {
|
8401
|
+
this.id = this.$el.id;
|
8402
|
+
},
|
8403
|
+
open() {
|
8404
|
+
return this.$store.nav.open[this.id];
|
8405
|
+
},
|
8406
|
+
getChildren() {
|
8407
|
+
return this.$refs.items ? Array.from(this.$refs.items.querySelectorAll(":scope > li")) : [];
|
8408
|
+
},
|
8409
|
+
filter() {
|
8410
|
+
this.hidden = true;
|
8411
|
+
this.getChildren().forEach((child) => {
|
8412
|
+
const data2 = child._x_dataStack[0];
|
8413
|
+
data2.filter();
|
8414
|
+
if (!data2.hidden) {
|
8415
|
+
this.hidden = false;
|
7642
8416
|
}
|
8417
|
+
});
|
8418
|
+
},
|
8419
|
+
toggle() {
|
8420
|
+
this.$store.nav.open[this.id] = !this.$store.nav.open[this.id];
|
8421
|
+
}
|
8422
|
+
};
|
8423
|
+
}
|
8424
|
+
|
8425
|
+
// app/assets/lookbook/js/nav/leaf.js
|
8426
|
+
function navLeaf() {
|
8427
|
+
return {
|
8428
|
+
path: null,
|
8429
|
+
matchers: [],
|
8430
|
+
active: false,
|
8431
|
+
hidden: false,
|
8432
|
+
setActive() {
|
8433
|
+
this.active = this.path === window.location.pathname;
|
8434
|
+
},
|
8435
|
+
filter() {
|
8436
|
+
if (this.$store.nav.filtering) {
|
8437
|
+
const text = this.$store.nav.filterText;
|
8438
|
+
const matched = this.matchers.map((m) => m.includes(text));
|
8439
|
+
this.hidden = !matched.filter((m) => m).length;
|
8440
|
+
} else {
|
8441
|
+
this.hidden = false;
|
7643
8442
|
}
|
7644
8443
|
}
|
7645
8444
|
};
|
7646
8445
|
}
|
7647
8446
|
|
7648
|
-
// app/assets/lookbook/js/size_observer.js
|
7649
|
-
function
|
8447
|
+
// app/assets/lookbook/js/utils/size_observer.js
|
8448
|
+
function sizeObserver() {
|
7650
8449
|
return {
|
7651
8450
|
observedWidth: 0,
|
7652
8451
|
observedHeight: 0,
|
@@ -7663,7 +8462,7 @@ Expression: "${expression}"
|
|
7663
8462
|
};
|
7664
8463
|
}
|
7665
8464
|
|
7666
|
-
// app/assets/lookbook/js/reloader.js
|
8465
|
+
// app/assets/lookbook/js/utils/reloader.js
|
7667
8466
|
var import_actioncable = __toModule(require_action_cable());
|
7668
8467
|
var import_debounce = __toModule(require_debounce());
|
7669
8468
|
function reloader_default(endpoint) {
|
@@ -7690,32 +8489,59 @@ Expression: "${expression}"
|
|
7690
8489
|
};
|
7691
8490
|
}
|
7692
8491
|
|
8492
|
+
// app/assets/lookbook/js/utils/clipboard.js
|
8493
|
+
function clipboard() {
|
8494
|
+
return {
|
8495
|
+
content: null,
|
8496
|
+
done: false,
|
8497
|
+
save() {
|
8498
|
+
this.$clipboard(this.content);
|
8499
|
+
this.done = true;
|
8500
|
+
setTimeout(() => {
|
8501
|
+
this.done = false;
|
8502
|
+
}, 1e3);
|
8503
|
+
}
|
8504
|
+
};
|
8505
|
+
}
|
8506
|
+
|
7693
8507
|
// app/assets/lookbook/js/app.js
|
8508
|
+
window.Alpine = module_default;
|
7694
8509
|
module_default.plugin(module_default2);
|
7695
8510
|
module_default.plugin(module_default3);
|
7696
8511
|
module_default.plugin(src_default4);
|
7697
|
-
module_default.
|
7698
|
-
module_default.
|
7699
|
-
|
7700
|
-
|
8512
|
+
module_default.plugin(screen_default);
|
8513
|
+
module_default.store("page", {
|
8514
|
+
reflowing: false,
|
8515
|
+
doc: window.document
|
8516
|
+
});
|
7701
8517
|
module_default.persistedStore("nav", {
|
7702
8518
|
width: 280,
|
7703
8519
|
filter: "",
|
7704
|
-
open: {}
|
7705
|
-
scrollTop: 0,
|
7706
|
-
shouldDisplay(previewName) {
|
7707
|
-
const cleanFilter = this.filter.replace(/\s/g, "");
|
7708
|
-
return cleanFilter === "" || previewName.includes(cleanFilter.toLowerCase());
|
7709
|
-
}
|
8520
|
+
open: {}
|
7710
8521
|
});
|
7711
|
-
module_default.persistedStore("preview", {});
|
7712
8522
|
module_default.persistedStore("inspector", {
|
7713
8523
|
height: 200,
|
7714
8524
|
active: "source"
|
7715
8525
|
});
|
7716
|
-
|
8526
|
+
module_default.persistedStore("preview", {
|
8527
|
+
width: "100%"
|
8528
|
+
});
|
8529
|
+
module_default.data("page", page);
|
8530
|
+
module_default.data("nav", nav_default);
|
8531
|
+
module_default.data("navNode", navNode);
|
8532
|
+
module_default.data("navLeaf", navLeaf);
|
8533
|
+
module_default.data("workbench", workbench);
|
8534
|
+
module_default.data("preview", preview);
|
8535
|
+
module_default.data("inspector", inspector);
|
8536
|
+
module_default.data("clipboard", clipboard);
|
8537
|
+
module_default.data("sizeObserver", sizeObserver);
|
8538
|
+
module_default.data("split", split_default);
|
8539
|
+
for (const el of document.querySelectorAll("[data-hotkey]")) {
|
8540
|
+
install(el);
|
8541
|
+
}
|
7717
8542
|
if (window.SOCKET_PATH) {
|
7718
8543
|
reloader_default(window.SOCKET_PATH).start();
|
7719
8544
|
}
|
8545
|
+
window.Alpine = module_default;
|
7720
8546
|
module_default.start();
|
7721
8547
|
})();
|