// Hooks added here have a bridge allowing communication between the BEX Content Script and the Quasar Application. const iFrame = document.createElement('iframe'), defaultFrameHeight = '0px' /** * Set the height of our iFrame housing our BEX * @param height */ const setIFrameHeight = height => { iFrame.height = height } /** * Reset the iFrame to it's default height e.g The height of the top bar. */ const resetIFrameHeight = () => { setIFrameHeight(defaultFrameHeight) } let Bridge = null export default function attachActivatedContentHooks (window, chrome, bridge) { /** * When the drawer is toggled set the iFrame height to take the whole page. * Reset when the drawer is closed. */ bridge.on('bex.toggle.iframe', event => { const payload = event.data if (payload.open) { setIFrameHeight('100%') } else { resetIFrameHeight() } bridge.send(event.eventResponseKey) }) Bridge = bridge } function addElWithClass (tag, className, container) { const item = document.createElement(tag) item.className = className container.append(item) return item } /** * The code below will get everything going. Initialise the iFrame with defaults and add it to the page. * @type {string} */ iFrame.id = 'bex-app-iframe' iFrame.width = '100%' resetIFrameHeight() // Assign some styling so it looks seamless Object.assign(iFrame.style, { position: 'fixed', top: '0', right: '0', bottom: '0', left: '0', border: '0', zIndex: '2147483001', // Yes this is daft. Need to this to get over the Booksprout Messenger button overflow: 'visible' }) ;(function () { // When the page loads, insert our browser extension code. iFrame.src = chrome.runtime.getURL(`www/index.html`) document.body.prepend(iFrame) const elements = document.querySelectorAll('.rc') for (let element of elements) { const container = addElWithClass('div', 'bex-add-todo__container', element) const addTodo = addElWithClass('button', 'bex-btn', container) addTodo.innerHTML = '+ Todo' const clickFn = () => { Bridge.send('bex.add.todo', { text: element.querySelector('.r a h3').innerText, link: element.querySelector('.r a').href }) } addTodo.addEventListener('click', clickFn) } })()