chrome-devtools-frontend
Version:
Chrome DevTools UI
84 lines (72 loc) • 2.6 kB
text/typescript
// Copyright 2026 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import * as Lit from '../../../../ui/lit/lit.js';
import * as UI from '../../legacy.js';
import * as InlineEditor from './inline_editor.js';
const {html} = Lit;
let text = 'top span-left';
export function render(container: HTMLElement): void {
const area = InlineEditor.PositionAreaEditor.parsePositionArea(text) ?? undefined;
function onPositionAreaChanged(event: CustomEvent<InlineEditor.PositionAreaEditor.Area>): void {
text = InlineEditor.PositionAreaEditor.stringifyPositionArea(event.detail);
render(container);
}
function onInput(event: Event): void {
const input = event.target as HTMLInputElement;
text = input.value;
render(container);
}
Lit.render(html`
<style>
.wrapper {
display: flex;
flex-direction: column;
align-items: flex-start;
gap: var(--sys-size-5);
padding: var(--sys-size-8);
}
.input-container {
display: flex;
align-items: center;
gap: var(--sys-size-3);
}
.input-label {
font-family: var(--source-code-font-family);
font-size: var(--sys-typescale-body4-size);
color: var(--sys-color-token-property-special);
}
.property-input {
font-family: var(--source-code-font-family);
font-size: var(--sys-typescale-body4-size);
padding: var(--sys-size-2) var(--sys-size-3);
width: 200px;
}
.editor-container {
border: 1px solid var(--sys-color-neutral-outline);
border-radius: var(--sys-shape-corner-small);
overflow: hidden;
width: fit-content;
}
</style>
<div class="wrapper">
<div class="input-container">
<label class="input-label" for="position-area-input">position-area:</label>
<input
id="position-area-input"
class="property-input"
type="text"
.value=${text}
@input=${onInput}
/>
</div>
<div class="editor-container">
<devtools-widget
${UI.Widget.widget(InlineEditor.PositionAreaEditor.PositionAreaEditor, {area})}
@positionAreaChanged=${onPositionAreaChanged}>
</devtools-widget>
</div>
</div>
`,
container);
}