lookbook 1.5.1 → 2.0.0.beta.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 +11 -21
- data/app/assets/lookbook/css/lookbook.css +9 -0
- data/app/assets/lookbook/css/themes/blue.css +7 -0
- data/app/assets/lookbook/css/themes/green.css +7 -0
- data/app/assets/lookbook/css/themes/indigo.css +7 -0
- data/app/assets/lookbook/css/themes/rose.css +7 -0
- data/app/assets/lookbook/css/themes/zinc.css +7 -0
- data/app/assets/lookbook/css/tooltip.css +9 -6
- data/app/assets/lookbook/img/lucide-sprite.svg +4960 -0
- data/app/assets/lookbook/js/app.js +22 -4
- data/app/assets/lookbook/js/helpers/dom.js +4 -7
- data/app/assets/lookbook/js/helpers/string.js +4 -11
- data/app/assets/lookbook/js/{embed.js → iframe.js} +0 -0
- data/app/assets/lookbook/js/index.js +61 -0
- data/app/assets/lookbook/js/lib/lookbook.js +113 -0
- data/app/assets/lookbook/js/lib/tippy.js +1 -0
- data/app/assets/lookbook/js/lookbook-core.js +1 -0
- data/app/assets/lookbook/js/lookbook.js +2 -61
- data/app/components/lookbook/base_component.rb +3 -1
- data/app/components/lookbook/button/component.html.erb +13 -24
- data/app/components/lookbook/button/component.js +13 -3
- data/app/components/lookbook/button/component.rb +16 -25
- data/app/components/lookbook/code/component.rb +0 -2
- data/app/components/lookbook/copy_button/component.html.erb +4 -4
- data/app/components/lookbook/copy_button/component.rb +6 -3
- data/app/components/lookbook/debug_menu/component.html.erb +1 -0
- data/app/components/lookbook/debug_menu/component.rb +12 -1
- data/app/components/lookbook/display_options/editor/component.html.erb +1 -1
- data/app/components/lookbook/display_options/field/component.css +0 -26
- data/app/components/lookbook/display_options/field/component.html.erb +1 -1
- data/app/components/lookbook/embed/component.html.erb +6 -51
- data/app/components/lookbook/embed/component.rb +17 -16
- data/app/components/lookbook/embed/inspector/component.html.erb +102 -0
- data/app/components/lookbook/embed/inspector/component.js +46 -0
- data/app/components/lookbook/embed/inspector/component.rb +64 -0
- data/app/components/lookbook/embed_code_dropdown/component.css +12 -0
- data/app/components/lookbook/embed_code_dropdown/component.html.erb +19 -0
- data/app/components/lookbook/embed_code_dropdown/component.js +26 -0
- data/app/components/lookbook/embed_code_dropdown/component.rb +41 -0
- data/app/components/lookbook/header/component.html.erb +7 -6
- data/app/components/lookbook/header/component.rb +5 -1
- data/app/components/lookbook/icon/component.html.erb +1 -1
- data/app/components/lookbook/icon_button/component.html.erb +20 -0
- data/app/components/lookbook/icon_button/component.rb +46 -0
- data/app/components/lookbook/nav/component.html.erb +0 -1
- data/app/components/lookbook/nav/entity/component.rb +2 -2
- data/app/components/lookbook/nav/item/component.rb +1 -1
- data/app/components/lookbook/params/editor/component.rb +1 -0
- data/app/components/lookbook/prose/component.rb +1 -3
- data/app/components/lookbook/tabs/component.html.erb +2 -2
- data/app/components/lookbook/tabs/component.js +1 -1
- data/app/components/lookbook/tag_component.rb +2 -1
- data/app/components/lookbook/text_button/component.html.erb +26 -0
- data/app/components/lookbook/text_button/component.rb +42 -0
- data/app/components/lookbook/toolbar/component.html.erb +1 -1
- data/app/components/lookbook/viewport/component.rb +0 -4
- data/app/controllers/concerns/lookbook/targetable_concern.rb +24 -19
- data/app/controllers/concerns/lookbook/with_panels_concern.rb +30 -0
- data/app/controllers/concerns/lookbook/with_preview_controller_concern.rb +4 -3
- data/app/controllers/lookbook/application_controller.rb +9 -12
- data/app/controllers/lookbook/embeds_controller.rb +148 -0
- data/app/controllers/lookbook/inspector_controller.rb +3 -22
- data/app/controllers/lookbook/page_controller.rb +7 -6
- data/app/controllers/lookbook/pages_controller.rb +3 -4
- data/app/controllers/lookbook/preview_controller.rb +17 -0
- data/app/controllers/lookbook/previews_controller.rb +8 -10
- data/app/helpers/lookbook/application_helper.rb +3 -19
- data/app/views/layouts/lookbook/application.html.erb +85 -60
- data/app/views/layouts/lookbook/embed.html.erb +16 -0
- data/app/views/layouts/lookbook/shell.html.erb +1 -1
- data/app/views/layouts/lookbook/skeleton.html.erb +13 -8
- data/app/views/lookbook/embeds/show.html.erb +12 -0
- data/app/views/lookbook/inspector/panels/_notes.html.erb +1 -1
- data/app/views/lookbook/inspector/panels/_output.html.erb +3 -3
- data/app/views/lookbook/inspector/panels/_source.html.erb +6 -6
- data/app/views/lookbook/inspector/show.html.erb +130 -123
- data/app/views/lookbook/pages/show.html.erb +81 -34
- data/app/views/lookbook/partials/_iframe_content_scripts.html.erb +1 -0
- data/app/views/lookbook/partials/_user_styles.html.erb +5 -0
- data/app/views/lookbook/{preview.html.erb → previews/group.html.erb} +7 -7
- data/app/views/lookbook/previews/preview.html.erb +5 -0
- data/app/views/lookbook/previews/show.html.erb +1 -0
- data/config/app.yml +31 -16
- data/config/panels.yml +23 -25
- data/config/routes.rb +3 -1
- data/config/tags.yml +6 -2
- data/lib/lookbook/cable/cable.rb +53 -0
- data/{app/channels/lookbook → lib/lookbook/cable}/connection.rb +0 -0
- data/{app/channels/lookbook → lib/lookbook/cable}/reload_channel.rb +0 -0
- data/lib/lookbook/engine.rb +109 -87
- data/lib/lookbook/entities/collections/entity_collection.rb +11 -6
- data/lib/lookbook/entities/collections/page_collection.rb +33 -8
- data/lib/lookbook/entities/collections/preview_collection.rb +42 -17
- data/lib/lookbook/entities/collections/render_target_collection.rb +4 -0
- data/lib/lookbook/entities/collections/scenario_collection.rb +4 -0
- data/lib/lookbook/entities/concerns/{annotatable.rb → annotatable_entity.rb} +7 -6
- data/lib/lookbook/entities/concerns/{inspectable.rb → inspectable_entity.rb} +2 -1
- data/lib/lookbook/entities/concerns/{locatable.rb → locatable_entity.rb} +8 -14
- data/lib/lookbook/entities/concerns/navigable_entity.rb +44 -0
- data/lib/lookbook/entities/entity.rb +7 -2
- data/lib/lookbook/entities/{page.rb → page_entity.rb} +10 -6
- data/lib/lookbook/entities/{page_section.rb → page_section_entity.rb} +1 -1
- data/lib/lookbook/entities/preview_entity.rb +99 -0
- data/lib/lookbook/entities/renderable_entity.rb +50 -0
- data/lib/lookbook/entities/rendered_scenario_entity.rb +53 -0
- data/lib/lookbook/entities/scenario_entity.rb +112 -0
- data/lib/lookbook/entities/scenario_group_entity.rb +53 -0
- data/lib/lookbook/error.rb +5 -5
- data/lib/lookbook/file_watcher.rb +19 -35
- data/lib/lookbook/helpers/class_names_helper.rb +28 -0
- data/lib/lookbook/helpers/page_helper.rb +18 -0
- data/{app/helpers/lookbook → lib/lookbook/helpers}/preview_helper.rb +3 -0
- data/lib/lookbook/helpers/ui_elements_helper.rb +115 -0
- data/lib/lookbook/preview.rb +79 -0
- data/lib/lookbook/preview_controller_actions.rb +50 -0
- data/lib/lookbook/preview_parser.rb +4 -2
- data/lib/lookbook/reloaders.rb +71 -0
- data/lib/lookbook/runtime_context.rb +49 -0
- data/lib/lookbook/services/data/resolvers/data_resolver.rb +4 -6
- data/lib/lookbook/services/entities/entity_tree_builder.rb +6 -6
- data/lib/lookbook/services/list_resolver.rb +35 -0
- data/lib/lookbook/services/markdown_renderer.rb +12 -2
- data/lib/lookbook/services/priority_prefix_parser.rb +16 -0
- data/lib/lookbook/services/urls/search_param_encoder.rb +16 -0
- data/lib/lookbook/services/urls/search_param_parser.rb +7 -6
- data/lib/lookbook/stores/config_store.rb +16 -16
- data/lib/lookbook/stores/input_store.rb +1 -3
- data/lib/lookbook/stores/panel_store.rb +28 -50
- data/lib/lookbook/support/deprecation.rb +5 -0
- data/lib/lookbook/support/errors/preview_template_error.rb +7 -0
- data/lib/lookbook/support/evented_file_update_checker.rb +69 -0
- data/lib/lookbook/support/null_websocket.rb +9 -0
- data/lib/lookbook/support/store.rb +9 -0
- data/lib/lookbook/support/tree_node.rb +7 -7
- data/lib/lookbook/support/utils/path_utils.rb +7 -1
- data/lib/lookbook/support/utils/utils.rb +8 -0
- data/lib/lookbook/tags/{position_tag.rb → priority_tag.rb} +4 -4
- data/lib/lookbook/tags/renders_tag.rb +4 -0
- data/lib/lookbook/tags/tag_provider.rb +3 -0
- data/lib/lookbook/tags/type_tag.rb +7 -0
- data/lib/lookbook/tags/yard_tag.rb +1 -2
- data/lib/lookbook/version.rb +1 -1
- data/lib/lookbook/websocket.rb +6 -53
- data/lib/lookbook.rb +179 -53
- data/public/lookbook-assets/css/lookbook.css +141 -83
- data/public/lookbook-assets/css/lookbook.css.map +1 -1
- data/public/lookbook-assets/css/themes/blue.css +7 -0
- data/public/lookbook-assets/css/themes/blue.css.map +1 -1
- data/public/lookbook-assets/css/themes/green.css +7 -0
- data/public/lookbook-assets/css/themes/green.css.map +1 -1
- data/public/lookbook-assets/css/themes/indigo.css +7 -0
- data/public/lookbook-assets/css/themes/indigo.css.map +1 -1
- data/public/lookbook-assets/css/themes/rose.css +7 -0
- data/public/lookbook-assets/css/themes/rose.css.map +1 -1
- data/public/lookbook-assets/css/themes/zinc.css +7 -0
- data/public/lookbook-assets/css/themes/zinc.css.map +1 -1
- data/public/lookbook-assets/img/lucide-sprite.svg +4960 -0
- data/public/lookbook-assets/js/embed.js +1363 -841
- data/public/lookbook-assets/js/embed.js.map +1 -1
- data/public/lookbook-assets/js/iframe.js +906 -0
- data/public/lookbook-assets/js/iframe.js.map +1 -0
- data/public/lookbook-assets/js/index.js +13567 -0
- data/public/lookbook-assets/js/index.js.map +1 -0
- data/public/lookbook-assets/js/lookbook-core.js +85 -0
- data/public/lookbook-assets/js/lookbook-core.js.map +1 -0
- data/public/lookbook-assets/js/lookbook.js +165 -12754
- data/public/lookbook-assets/js/lookbook.js.map +1 -1
- data/public/lookbook-assets/lookbook-esm.js +1427 -0
- data/public/lookbook-assets/lookbook-esm.js.map +1 -0
- data/public/lookbook-assets/lookbook-global.js +1427 -0
- data/public/lookbook-assets/lookbook-global.js.map +1 -0
- data/public/lookbook-assets/lookbook.js +1427 -0
- data/public/lookbook-assets/lookbook.js.map +1 -0
- metadata +80 -72
- data/app/components/lookbook/embed/component.js +0 -39
- data/app/helpers/lookbook/component_helper.rb +0 -84
- data/app/helpers/lookbook/output_helper.rb +0 -19
- data/app/helpers/lookbook/page_helper.rb +0 -34
- data/app/views/layouts/lookbook/inspector.html.erb +0 -7
- data/app/views/layouts/lookbook/page.html.erb +0 -53
- data/app/views/layouts/lookbook/standalone.html.erb +0 -5
- data/lib/lookbook/entities/collections/component_collection.rb +0 -4
- data/lib/lookbook/entities/collections/preview_example_collection.rb +0 -4
- data/lib/lookbook/entities/component.rb +0 -31
- data/lib/lookbook/entities/concerns/navigable.rb +0 -43
- data/lib/lookbook/entities/preview.rb +0 -87
- data/lib/lookbook/entities/preview_example.rb +0 -100
- data/lib/lookbook/entities/preview_group.rb +0 -48
- data/lib/lookbook/preview_actions.rb +0 -43
- data/lib/lookbook/process.rb +0 -21
- data/lib/lookbook/rendered_example.rb +0 -37
- data/lib/lookbook/services/position_prefix_parser.rb +0 -16
- data/lib/lookbook/services/urls/search_param_builder.rb +0 -13
- data/lib/lookbook/tags/component_tag.rb +0 -13
@@ -0,0 +1,85 @@
|
|
1
|
+
(() => {
|
2
|
+
window.Lookbook = window.Lookbook || {};
|
3
|
+
window.Lookbook.initEmbeds = $8c6f87050723dba0$var$initEmbeds;
|
4
|
+
const $8c6f87050723dba0$var$embedUrlPrefix = "embed";
|
5
|
+
const $8c6f87050723dba0$var$whiteListedAttributes = [
|
6
|
+
"preview",
|
7
|
+
"scenario",
|
8
|
+
"panels",
|
9
|
+
"actions",
|
10
|
+
"param-*"
|
11
|
+
];
|
12
|
+
function $8c6f87050723dba0$var$initEmbeds() {
|
13
|
+
if (typeof window.iFrameResize !== "function") {
|
14
|
+
console.error("Lookbook embeds require the 'iframe-resizer' library to be available. Skipping embed instantiation.");
|
15
|
+
return;
|
16
|
+
}
|
17
|
+
const embeds = Array.from(document.querySelectorAll("lookbook-embed"));
|
18
|
+
embeds.forEach((embed)=>{
|
19
|
+
const attrs = Array.from(embed.attributes);
|
20
|
+
const wrapper = $8c6f87050723dba0$var$createWrapper();
|
21
|
+
const iframe = $8c6f87050723dba0$var$createIframe(attrs);
|
22
|
+
wrapper.appendChild(iframe);
|
23
|
+
embed.replaceWith(wrapper);
|
24
|
+
});
|
25
|
+
window.iFrameResize({
|
26
|
+
checkOrigin: false
|
27
|
+
}, "[data-lookbook-embed-iframe]");
|
28
|
+
}
|
29
|
+
function $8c6f87050723dba0$var$createWrapper() {
|
30
|
+
const wrapper = document.createElement("div");
|
31
|
+
wrapper.setAttribute("data-lookbook-embed", "");
|
32
|
+
wrapper.classList.add("lookbook-embed");
|
33
|
+
return wrapper;
|
34
|
+
}
|
35
|
+
function $8c6f87050723dba0$var$createIframe(attrs) {
|
36
|
+
const src = $8c6f87050723dba0$var$buildSrc(attrs);
|
37
|
+
const id = $8c6f87050723dba0$var$attrValue(attrs, "id");
|
38
|
+
const styles = $8c6f87050723dba0$var$attrValue(attrs, "style");
|
39
|
+
const classes = $8c6f87050723dba0$var$attrValue(attrs, "class", "").split(" ").map((c)=>c.trim()).filter((c)=>c.length);
|
40
|
+
const iframe = document.createElement("iframe");
|
41
|
+
iframe.src = src;
|
42
|
+
if (id) iframe.id = id;
|
43
|
+
iframe.setAttribute("frameborder", 0);
|
44
|
+
iframe.setAttribute("data-lookbook-embed-iframe", "");
|
45
|
+
if (classes.length) iframe.classList.add(...classes);
|
46
|
+
if (styles) iframe.style.cssText = styles;
|
47
|
+
iframe.style.width = "100%";
|
48
|
+
iframe.style.transition = "height 0.3s";
|
49
|
+
return iframe;
|
50
|
+
}
|
51
|
+
function $8c6f87050723dba0$var$buildSrc(attrs) {
|
52
|
+
const appPath = $8c6f87050723dba0$var$attrValue(attrs, "app") || $8c6f87050723dba0$var$guessBasePath();
|
53
|
+
const props = {};
|
54
|
+
$8c6f87050723dba0$var$permittedAttrs(attrs).forEach(({ name: name , value: value })=>{
|
55
|
+
name = name.replace("-", "_").toLowerCase();
|
56
|
+
props[name] = value;
|
57
|
+
});
|
58
|
+
return encodeURI([
|
59
|
+
appPath,
|
60
|
+
$8c6f87050723dba0$var$embedUrlPrefix
|
61
|
+
].join("/") + `?props=${JSON.stringify(props)}`);
|
62
|
+
}
|
63
|
+
function $8c6f87050723dba0$var$attrValue(attrs, name, fallback = null) {
|
64
|
+
const attr = attrs.find((attr)=>attr.name === name);
|
65
|
+
return attr ? attr.value : fallback;
|
66
|
+
}
|
67
|
+
function $8c6f87050723dba0$var$permittedAttrs(attrs) {
|
68
|
+
return attrs.filter((attr)=>{
|
69
|
+
return $8c6f87050723dba0$var$whiteListedAttributes.find((key)=>{
|
70
|
+
const name = attr.name;
|
71
|
+
return key === name || key.includes("*") && name.startsWith(key.replace("*", ""));
|
72
|
+
});
|
73
|
+
});
|
74
|
+
}
|
75
|
+
function $8c6f87050723dba0$var$guessBasePath() {
|
76
|
+
const script = document.currentScript || document.querySelector('script[src*="lookbook.js"]');
|
77
|
+
const scriptSrc = script.src;
|
78
|
+
if (scriptSrc && scriptSrc.includes("lookbook-assets")) return scriptSrc.replace("lookbook-assets/js/lookbook.js", "lookbook");
|
79
|
+
return `//${location.host}/lookbook`;
|
80
|
+
}
|
81
|
+
document.addEventListener("DOMContentLoaded", ()=>$8c6f87050723dba0$var$initEmbeds());
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
})();
|
@@ -0,0 +1 @@
|
|
1
|
+
{"mappings":"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","sources":["app/assets/lookbook/js/lookbook-core.js","app/assets/lookbook/js/lib/lookbook.js"],"sourcesContent":["import \"./lib/lookbook\";\n","window.Lookbook = window.Lookbook || {};\nwindow.Lookbook.initEmbeds = initEmbeds;\n\nconst embedUrlPrefix = \"embed\";\nconst whiteListedAttributes = [\n \"preview\",\n \"scenario\",\n \"panels\",\n \"actions\",\n \"param-*\",\n];\n\nfunction initEmbeds() {\n if (typeof window.iFrameResize !== \"function\") {\n console.error(\n \"Lookbook embeds require the 'iframe-resizer' library to be available. Skipping embed instantiation.\"\n );\n return;\n }\n\n const embeds = Array.from(document.querySelectorAll(\"lookbook-embed\"));\n\n embeds.forEach((embed) => {\n const attrs = Array.from(embed.attributes);\n const wrapper = createWrapper();\n const iframe = createIframe(attrs);\n\n wrapper.appendChild(iframe);\n embed.replaceWith(wrapper);\n });\n\n window.iFrameResize({ checkOrigin: false }, \"[data-lookbook-embed-iframe]\");\n}\n\nfunction createWrapper() {\n const wrapper = document.createElement(\"div\");\n\n wrapper.setAttribute(\"data-lookbook-embed\", true);\n wrapper.classList.add(\"lookbook-embed\");\n\n return wrapper;\n}\n\nfunction createIframe(attrs) {\n const src = buildSrc(attrs);\n const id = attrValue(attrs, \"id\");\n const styles = attrValue(attrs, \"style\");\n const classes = attrValue(attrs, \"class\", \"\")\n .split(\" \")\n .map((c) => c.trim())\n .filter((c) => c.length);\n\n const iframe = document.createElement(\"iframe\");\n iframe.src = src;\n if (id) iframe.id = id;\n\n iframe.setAttribute(\"frameborder\", 0);\n iframe.setAttribute(\"data-lookbook-embed-iframe\", true);\n\n if (classes.length) iframe.classList.add(...classes);\n if (styles) iframe.style.cssText = styles;\n\n iframe.style.width = \"100%\";\n iframe.style.transition = \"height 0.3s\";\n\n return iframe;\n}\n\nfunction buildSrc(attrs) {\n const appPath = attrValue(attrs, \"app\") || guessBasePath();\n const props = {};\n\n permittedAttrs(attrs).forEach(({ name, value }) => {\n console.log(name, value);\n name = name.replace(\"-\", \"_\").toLowerCase();\n props[name] = value;\n });\n\n return encodeURI(\n [appPath, embedUrlPrefix].join(\"/\") + `?props=${JSON.stringify(props)}`\n );\n}\n\nfunction attrValue(attrs, name, fallback = null) {\n const attr = attrs.find((attr) => attr.name === name);\n return attr ? attr.value : fallback;\n}\n\nfunction permittedAttrs(attrs) {\n return attrs.filter((attr) => {\n return whiteListedAttributes.find((key) => {\n const name = attr.name;\n return (\n key === name ||\n (key.includes(\"*\") && name.startsWith(key.replace(\"*\", \"\")))\n );\n });\n });\n}\n\nfunction guessBasePath() {\n const script =\n document.currentScript ||\n document.querySelector('script[src*=\"lookbook.js\"]');\n const scriptSrc = script.src;\n\n if (scriptSrc && scriptSrc.includes(\"lookbook-assets\")) {\n return scriptSrc.replace(\"lookbook-assets/js/lookbook.js\", \"lookbook\");\n }\n\n return `//${location.host}/lookbook`;\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", () => initEmbeds());\n"],"names":[],"version":3,"file":"lookbook-core.js.map"}
|