// Copyright (C) 2018 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. import * as m from 'mithril'; import {Actions} from '../common/actions'; import {CookieConsent} from './cookie_consent'; import {globals} from './globals'; import {Sidebar} from './sidebar'; import {Topbar} from './topbar'; function renderPermalink(): m.Children { const permalink = globals.state.permalink; if (!permalink.requestId || !permalink.hash) return null; const url = `${self.location.origin}/#!/?s=${permalink.hash}`; return m('.alert-permalink', [ m('div', 'Permalink: ', m(`a[href=${url}]`, url)), m('button', { onclick: () => globals.dispatch(Actions.clearPermalink({})), }, m('i.material-icons.disallow-selection', 'close')), ]); } class Alerts implements m.ClassComponent { view() { return m('.alerts', renderPermalink()); } } /** * Wrap component with common UI elements (nav bar etc). */ export function createPage(component: m.Component): m.Component { const pageComponent = { view() { const children = [ m(Sidebar), m(Topbar), m(Alerts), m(component), m(CookieConsent), ]; if (globals.frontendLocalState.perfDebug) { children.push(m('.perf-stats')); } return children; }, }; return pageComponent; }