cross window communication proof of concept
This commit is contained in:
parent
0a10cae4c1
commit
f7119cd7c9
12 changed files with 222 additions and 4 deletions
|
@ -1,8 +1,19 @@
|
||||||
import { init } from './js/lens.js'
|
import { init as init_lens } from './js/lens.js'
|
||||||
init();
|
import { init as init_cartridge } from './js/cartridge';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Test import of an asset
|
// Test import of an asset
|
||||||
// import webpackLogo from '@/images/webpack-logo.svg'
|
// import webpackLogo from '@/images/webpack-logo.svg'
|
||||||
|
|
||||||
// Test import of styles
|
// Test import of styles
|
||||||
import './index.scss';
|
import './index.scss';
|
||||||
|
|
||||||
|
|
||||||
|
// let main = document.getElementsByTagName(main);
|
||||||
|
// console.log('name', main[0].getAttribute('name'))
|
||||||
|
// if (main[0].getAttribute('name') === "home"){
|
||||||
|
init_lens();
|
||||||
|
console.log('init lens');
|
||||||
|
init_cartridge();
|
||||||
|
// }
|
||||||
|
|
85
_assets/js/cartridge.js
Normal file
85
_assets/js/cartridge.js
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
const CART_SIZE = {
|
||||||
|
x: 300,
|
||||||
|
y: 200
|
||||||
|
}
|
||||||
|
|
||||||
|
function slot_position(){
|
||||||
|
let slot = document.querySelector('#slot');
|
||||||
|
return slot.getBoundingClientRect()
|
||||||
|
}
|
||||||
|
|
||||||
|
function list_carts(){
|
||||||
|
let carts= document.querySelectorAll('.cartridge-metadata');
|
||||||
|
return carts;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function showPopups(){
|
||||||
|
let carts = list_carts();
|
||||||
|
|
||||||
|
let cartPopups = carts.forEach((cart) => {
|
||||||
|
console.log('cart', cart);
|
||||||
|
let popup = window.open(
|
||||||
|
cart.getAttribute('url'),
|
||||||
|
cart.getAttribute('title'),
|
||||||
|
`popup=true,width=${CART_SIZE.x+10},height=${CART_SIZE.y+10}`
|
||||||
|
)
|
||||||
|
popup.screen
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// function store_slot_position(){
|
||||||
|
// let slot_pos = slot_position();
|
||||||
|
// console.log(slot_pos);
|
||||||
|
// window.setTimeout(poll_position, 1000);
|
||||||
|
// }
|
||||||
|
|
||||||
|
function store_position(){
|
||||||
|
let name = document.querySelector('.cartridge .label').textContent;
|
||||||
|
let position = {
|
||||||
|
x: window.screenX,
|
||||||
|
y: window.screenY,
|
||||||
|
width: window.outerWidth,
|
||||||
|
height: window.outerHeight
|
||||||
|
};
|
||||||
|
|
||||||
|
localStorage.setItem(name, JSON.stringify(position));
|
||||||
|
window.setTimeout(store_position, 100);
|
||||||
|
console.log('store position', position);
|
||||||
|
}
|
||||||
|
|
||||||
|
function console_message(msg){
|
||||||
|
// console.log('console message', msg);
|
||||||
|
let cart_position = JSON.parse(msg.newValue);
|
||||||
|
cart_position['name'] = String(msg.key).trim();
|
||||||
|
console.log(cart_position)
|
||||||
|
}
|
||||||
|
|
||||||
|
function init_console(){
|
||||||
|
showPopups();
|
||||||
|
// store_slot_position();
|
||||||
|
|
||||||
|
// window.addEventListener('resize', () => {
|
||||||
|
// store_slot_position();
|
||||||
|
// })
|
||||||
|
|
||||||
|
window.addEventListener('storage', (event) => {console_message(event)})
|
||||||
|
}
|
||||||
|
|
||||||
|
function init_cartridge(){
|
||||||
|
console.log('init cartridge')
|
||||||
|
store_position();
|
||||||
|
}
|
||||||
|
|
||||||
|
export function init(){
|
||||||
|
window.showPopups = showPopups;
|
||||||
|
let page_type = document.querySelector('main').getAttribute('page');
|
||||||
|
if (page_type === 'console'){
|
||||||
|
init_console();
|
||||||
|
} else if (page_type === "cartridge"){
|
||||||
|
init_cartridge();
|
||||||
|
}
|
||||||
|
}
|
|
@ -11,6 +11,11 @@ function _init(){
|
||||||
let filter = document.getElementById('filter');
|
let filter = document.getElementById('filter');
|
||||||
let hid_hint = false;
|
let hid_hint = false;
|
||||||
|
|
||||||
|
if (!lens){
|
||||||
|
console.log('not doing lens')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// let FOCUS_SIZE = root.style.getPropertyValue('--lens-size')
|
// let FOCUS_SIZE = root.style.getPropertyValue('--lens-size')
|
||||||
|
|
||||||
root.style.setProperty(
|
root.style.setProperty(
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
{% include navigation.html %}
|
{% include navigation.html %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<main>
|
<main page="{{ page.page_name }}">
|
||||||
<!-- <div class="container"> -->
|
<!-- <div class="container"> -->
|
||||||
{{ content }}
|
{{ content }}
|
||||||
<!-- </div> -->
|
<!-- </div> -->
|
||||||
|
|
11
src/_layouts/cartridge.html
Normal file
11
src/_layouts/cartridge.html
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
---
|
||||||
|
layout: default
|
||||||
|
---
|
||||||
|
<div class="cartridge">
|
||||||
|
<div class="clip">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="label">
|
||||||
|
{{ page.title }}
|
||||||
|
</div>
|
||||||
|
</div>
|
35
src/_layouts/console.html
Normal file
35
src/_layouts/console.html
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
---
|
||||||
|
layout: default
|
||||||
|
---
|
||||||
|
|
||||||
|
<div id="console">
|
||||||
|
|
||||||
|
<div id="popups">
|
||||||
|
<button onclick="showPopups();">
|
||||||
|
SHOW POPUPS
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="container">
|
||||||
|
<div id="slot">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div id="slot-label">
|
||||||
|
I AM A SLOT PUT THINGS IN ME
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% for cartridge in site.pages %}
|
||||||
|
{% if cartridge.layout == "cartridge" %}
|
||||||
|
<ul class="cartridge-list" id="cartridges">
|
||||||
|
<li
|
||||||
|
class="cartridge-metadata"
|
||||||
|
url="{{ cartridge.url }}"
|
||||||
|
title="{{ cartridge.title }}"
|
||||||
|
>
|
||||||
|
<a href="{{ cartridge.url }}">{{ cartridge.title }}</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
|
@ -9,7 +9,7 @@
|
||||||
{% include navigation.html %}
|
{% include navigation.html %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<main>
|
<main page="{{ page.page_name }}">
|
||||||
<!-- <div class="container"> -->
|
<!-- <div class="container"> -->
|
||||||
{{ content }}
|
{{ content }}
|
||||||
<!-- </div> -->
|
<!-- </div> -->
|
||||||
|
|
|
@ -6,3 +6,4 @@
|
||||||
@import 'text';
|
@import 'text';
|
||||||
|
|
||||||
@import 'pages/home';
|
@import 'pages/home';
|
||||||
|
@import 'pages/console';
|
||||||
|
|
60
src/_scss/pages/console.scss
Normal file
60
src/_scss/pages/console.scss
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
.cartridge-list {
|
||||||
|
//display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#console {
|
||||||
|
|
||||||
|
#container {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 20px;
|
||||||
|
right: 20px;
|
||||||
|
height: 200px;
|
||||||
|
width: 50%;
|
||||||
|
border: 2px solid black;
|
||||||
|
|
||||||
|
|
||||||
|
#slot{
|
||||||
|
border: 3px solid black;
|
||||||
|
width: 300px;
|
||||||
|
height: 50px;
|
||||||
|
|
||||||
|
}
|
||||||
|
#slot-label {
|
||||||
|
font-family: monospace;
|
||||||
|
top: 3.5em;
|
||||||
|
position:relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#popups {
|
||||||
|
position:absolute;
|
||||||
|
top: 20%;
|
||||||
|
left: 20%;
|
||||||
|
}
|
||||||
|
|
||||||
|
& * {
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.cartridge {
|
||||||
|
position:absolute;
|
||||||
|
top:0;
|
||||||
|
left:0;
|
||||||
|
width: 300px;
|
||||||
|
height: 200px;
|
||||||
|
border: 2px solid black;
|
||||||
|
|
||||||
|
box-shadow: 5px 5px black;
|
||||||
|
|
||||||
|
.label {
|
||||||
|
position: absolute;
|
||||||
|
top: 20px;
|
||||||
|
left: 20px;
|
||||||
|
font-family: monospace;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
5
src/cartridge/blog.md
Normal file
5
src/cartridge/blog.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
layout: cartridge
|
||||||
|
title: blog
|
||||||
|
page_name: cartridge
|
||||||
|
---
|
4
src/cartridge/index.md
Normal file
4
src/cartridge/index.md
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
layout: console
|
||||||
|
page_name: console
|
||||||
|
---
|
|
@ -3,4 +3,5 @@
|
||||||
# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults
|
# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults
|
||||||
|
|
||||||
layout: home
|
layout: home
|
||||||
|
page_name: home
|
||||||
---
|
---
|
||||||
|
|
Loading…
Reference in a new issue