summaryrefslogtreecommitdiff
path: root/frontend/app/views/tile/handles/tile.text.js
blob: 6ef873402901d107a25f02bd831b0c1b7e0bde35 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import React from 'react'
import { generateTransform, unitsDimension, hexToRgb } from 'app/views/tile/tile.utils'
import Marquee from "react-fast-marquee"

export default function TileScript({ tile, box, bounds, videoBounds, viewing, onMouseDown, onDoubleClick, onMouseEnter }) {
  // console.log(tile)
  const style = {
    transform: generateTransform(tile, box, bounds, videoBounds),
    opacity: tile.settings.opacity,
  }
  // console.log(generateTransform(tile))
  let className = ['tile', tile.type].join(' ')
  if (tile.target_page_id || (viewing && tile.href)) {
    if (viewing || tile.settings.cursor !== 'unclickable') {
      className += ' ' + (tile.settings.cursor || 'hand_up')
    }
  }

  if (!tile.settings.content) {
    return null
  }
  
  let content = <span dangerouslySetInnerHTML={{ __html: tile.settings.content }} />
  className += ' ' + tile.settings.align
  style.width = unitsDimension(tile, 'width', bounds, videoBounds)
  style.height = unitsDimension(tile, 'height', bounds, videoBounds)
  style.fontFamily = tile.settings.font_family
  style.fontSize = tile.settings.font_size + 'px'
  style.lineHeight = 1.5
  style.fontWeight = (tile.settings.font_style || "").indexOf('bold') !== -1 ? 'bold' : 'normal'
  style.fontStyle = (tile.settings.font_style || "").indexOf('italic') !== -1 ? 'italic' : 'normal'
  style.backgroundColor = tile.settings.background_color || 'transparent'
  style.color = tile.settings.font_color || '#dddddd!important'

  if (tile.settings.is_marquee) {
    const gradientColor = hexToRgb(tile.settings.marquee_gradient_color)
    style.width = "100vw"
    style.height = style.fontSize + "px"
    content = (
      <Marquee
        direction={tile.settings.marquee_direction || "left"}
        speed={tile.settings.marquee_speed || 1}
        gradient={!!tile.settings.marquee_gradient}
        gradientColor={gradientColor ? [gradientColor.r, gradientColor.g, gradientColor.b] : [0,0,0]}
      >
        <div style={{
          width: (tile.settings.marquee_content_width || 200) + "px",
          height: (tile.settings.marquee_content_height || (parseInt(tile.settings.font_size) + 20)) + "px",
        }}>
          {content}
        </div>
      </Marquee>
    )
  }
  return (
    <div
      className={className}
      onMouseDown={onMouseDown}
      onDoubleClick={onDoubleClick}
      onMouseEnter={onMouseEnter}
      style={style}
    >
      {content}
    </div>
  )
}