mirror of
https://github.com/streamwall/streamwall.git
synced 2026-01-28 07:52:48 -05:00
Add support for displaying custom web content in views
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
import { boxesFromViewURLMap } from './geometry'
|
||||
import { boxesFromViewContentMap } from './geometry'
|
||||
|
||||
function example([text]) {
|
||||
return text
|
||||
.replace(/\s/g, '')
|
||||
.split('')
|
||||
.map((c) => (c === '.' ? undefined : c))
|
||||
.map((c) => (c === '.' ? undefined : { url: c }))
|
||||
}
|
||||
|
||||
const box1 = example`
|
||||
@@ -41,8 +41,8 @@ describe.each([
|
||||
2,
|
||||
box1,
|
||||
[
|
||||
{ url: 'a', x: 0, y: 0, w: 1, h: 2, spaces: [0, 2] },
|
||||
{ url: 'b', x: 1, y: 0, w: 1, h: 2, spaces: [1, 3] },
|
||||
{ content: { url: 'a' }, x: 0, y: 0, w: 1, h: 2, spaces: [0, 2] },
|
||||
{ content: { url: 'b' }, x: 1, y: 0, w: 1, h: 2, spaces: [1, 3] },
|
||||
],
|
||||
],
|
||||
[
|
||||
@@ -50,8 +50,8 @@ describe.each([
|
||||
2,
|
||||
box2,
|
||||
[
|
||||
{ url: 'a', x: 0, y: 0, w: 2, h: 1, spaces: [0, 1] },
|
||||
{ url: 'b', x: 0, y: 1, w: 2, h: 1, spaces: [2, 3] },
|
||||
{ content: { url: 'a' }, x: 0, y: 0, w: 2, h: 1, spaces: [0, 1] },
|
||||
{ content: { url: 'b' }, x: 0, y: 1, w: 2, h: 1, spaces: [2, 3] },
|
||||
],
|
||||
],
|
||||
[
|
||||
@@ -59,28 +59,33 @@ describe.each([
|
||||
3,
|
||||
box3,
|
||||
[
|
||||
{ url: 'a', x: 0, y: 0, w: 2, h: 2, spaces: [0, 1, 3, 4] },
|
||||
{ url: 'c', x: 2, y: 0, w: 1, h: 1, spaces: [2] },
|
||||
{ url: 'a', x: 2, y: 1, w: 1, h: 1, spaces: [5] },
|
||||
{ url: 'd', x: 0, y: 2, w: 1, h: 1, spaces: [6] },
|
||||
{ url: 'a', x: 1, y: 2, w: 1, h: 1, spaces: [7] },
|
||||
{ url: 'e', x: 2, y: 2, w: 1, h: 1, spaces: [8] },
|
||||
{ content: { url: 'a' }, x: 0, y: 0, w: 2, h: 2, spaces: [0, 1, 3, 4] },
|
||||
{ content: { url: 'c' }, x: 2, y: 0, w: 1, h: 1, spaces: [2] },
|
||||
{ content: { url: 'a' }, x: 2, y: 1, w: 1, h: 1, spaces: [5] },
|
||||
{ content: { url: 'd' }, x: 0, y: 2, w: 1, h: 1, spaces: [6] },
|
||||
{ content: { url: 'a' }, x: 1, y: 2, w: 1, h: 1, spaces: [7] },
|
||||
{ content: { url: 'e' }, x: 2, y: 2, w: 1, h: 1, spaces: [8] },
|
||||
],
|
||||
],
|
||||
[3, 3, box4, [{ url: 'a', x: 1, y: 1, w: 2, h: 2, spaces: [4, 5, 7, 8] }]],
|
||||
[
|
||||
3,
|
||||
3,
|
||||
box4,
|
||||
[{ content: { url: 'a' }, x: 1, y: 1, w: 2, h: 2, spaces: [4, 5, 7, 8] }],
|
||||
],
|
||||
[
|
||||
3,
|
||||
3,
|
||||
box5,
|
||||
[
|
||||
{ url: 'a', x: 2, y: 0, w: 1, h: 3, spaces: [2, 5, 8] },
|
||||
{ url: 'a', x: 1, y: 2, w: 1, h: 1, spaces: [7] },
|
||||
{ content: { url: 'a' }, x: 2, y: 0, w: 1, h: 3, spaces: [2, 5, 8] },
|
||||
{ content: { url: 'a' }, x: 1, y: 2, w: 1, h: 1, spaces: [7] },
|
||||
],
|
||||
],
|
||||
])('boxesFromViewURLMap(%i, %i, %j)', (width, height, data, expected) => {
|
||||
])('boxesFromViewContentMap(%i, %i, %j)', (width, height, data, expected) => {
|
||||
test(`returns expected ${expected.length} boxes`, () => {
|
||||
const stateURLMap = new Map(data.map((v, idx) => [idx, v]))
|
||||
const result = boxesFromViewURLMap(width, height, stateURLMap)
|
||||
const result = boxesFromViewContentMap(width, height, stateURLMap)
|
||||
expect(result).toStrictEqual(expected)
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user