Mercurial > code > home > repos > light9
annotate web/timeline/timeline-elements.ts @ 2440:d1f86109e3cc
more *value getter variants
author | drewp@bigasterisk.com |
---|---|
date | Thu, 30 May 2024 01:08:45 -0700 |
parents | 4556eebe5d73 |
children |
rev | line source |
---|---|
2062 | 1 console.log("hi tl") |
2 import { debug } from "debug"; | |
3 import { css, html, LitElement, TemplateResult } from "lit"; | |
4 import { customElement, property } from "lit/decorators.js"; | |
2121
486cb74f54df
move timeline component for sharing in asco
drewp@bigasterisk.com
parents:
2062
diff
changeset
|
5 export {Light9TimelineAudio} from "../light9-timeline-audio" |
2062 | 6 debug.enable("*"); |
7 /* | |
8 <link rel="import" href="/lib/polymer/polymer.html"> | |
1735
fa11008d9b22
fix viewstate tracking. zoom current notes with the time slider.
Drew Perttula <drewp@bigasterisk.com>
parents:
1733
diff
changeset
|
9 <link rel="import" href="/lib/polymer/lib/utils/render-status.html"> |
1314 | 10 <link rel="import" href="/lib/iron-resizable-behavior/iron-resizable-behavior.html"> |
1369
6b5e079b3dbe
timeline hover goes to vidref
Drew Perttula <drewp@bigasterisk.com>
parents:
1366
diff
changeset
|
11 <link rel="import" href="/lib/iron-ajax/iron-ajax.html"> |
1377
2df0dc79ce76
modernize polymer on index page. move live and timeline to subdirs
Drew Perttula <drewp@bigasterisk.com>
parents:
1375
diff
changeset
|
12 <link rel="import" href="light9-timeline-audio.html"> |
2df0dc79ce76
modernize polymer on index page. move live and timeline to subdirs
Drew Perttula <drewp@bigasterisk.com>
parents:
1375
diff
changeset
|
13 <link rel="import" href="../rdfdb-synced-graph.html"> |
2df0dc79ce76
modernize polymer on index page. move live and timeline to subdirs
Drew Perttula <drewp@bigasterisk.com>
parents:
1375
diff
changeset
|
14 <link rel="import" href="../light9-music.html"> |
1379
ea198addff5f
TL can stop following player song
Drew Perttula <drewp@bigasterisk.com>
parents:
1377
diff
changeset
|
15 <link rel="import" href="../edit-choice.html"> |
1717
5aa9ed11d374
extract inline-attrs
Drew Perttula <drewp@bigasterisk.com>
parents:
1716
diff
changeset
|
16 <link rel="import" href="inline-attrs.html"> |
1994
1b690005aabd
little vidref player inside timeline
Drew Perttula <drewp@bigasterisk.com>
parents:
1962
diff
changeset
|
17 <script src="/websocket.js"></script> |
1b690005aabd
little vidref player inside timeline
Drew Perttula <drewp@bigasterisk.com>
parents:
1962
diff
changeset
|
18 <script type="module" src="/light9-vidref-replay.js"></script> |
1b690005aabd
little vidref player inside timeline
Drew Perttula <drewp@bigasterisk.com>
parents:
1962
diff
changeset
|
19 |
1b690005aabd
little vidref player inside timeline
Drew Perttula <drewp@bigasterisk.com>
parents:
1962
diff
changeset
|
20 <script type="module" src="/light9-vidref-replay-stack.js"></script> |
1314 | 21 |
2062 | 22 */ |
1328
e4825767a4bf
fixes to RDF adjusters. put graph load in an element.
Drew Perttula <drewp@bigasterisk.com>
parents:
1327
diff
changeset
|
23 |
2062 | 24 // Whole editor- include this on your page. |
25 // Most coordinates are relative to this element. | |
26 @customElement("light9-timeline-editor") | |
27 export class Light9TimelineEditor extends LitElement { | |
28 render() { | |
29 return html` | |
1314 | 30 <style> |
31 :host { | |
32 background: #444; | |
33 display: flex; | |
34 flex-direction: column; | |
35 position: relative; | |
36 border: 1px solid black; | |
1328
e4825767a4bf
fixes to RDF adjusters. put graph load in an element.
Drew Perttula <drewp@bigasterisk.com>
parents:
1327
diff
changeset
|
37 overflow: hidden; |
1314 | 38 } |
39 light9-timeline-audio { | |
40 width: 100%; | |
41 height: 30px; | |
42 } | |
43 light9-timeline-time-zoomed { | |
44 flex-grow: 1; | |
45 } | |
1693
53f751982ddf
WIP polymer2 upgrade, timeline rewrite
drewp@bigasterisk.com
parents:
1666
diff
changeset
|
46 #coveredByDiagram { |
53f751982ddf
WIP polymer2 upgrade, timeline rewrite
drewp@bigasterisk.com
parents:
1666
diff
changeset
|
47 position: relative; |
1719
165df402cb98
timeline canvas kind of resizes in its space (with setInterval, and possibly overshoot at the bottom)
Drew Perttula <drewp@bigasterisk.com>
parents:
1717
diff
changeset
|
48 display: flex; |
165df402cb98
timeline canvas kind of resizes in its space (with setInterval, and possibly overshoot at the bottom)
Drew Perttula <drewp@bigasterisk.com>
parents:
1717
diff
changeset
|
49 flex-direction: column; |
165df402cb98
timeline canvas kind of resizes in its space (with setInterval, and possibly overshoot at the bottom)
Drew Perttula <drewp@bigasterisk.com>
parents:
1717
diff
changeset
|
50 height: 100%; |
1693
53f751982ddf
WIP polymer2 upgrade, timeline rewrite
drewp@bigasterisk.com
parents:
1666
diff
changeset
|
51 } |
1515
37dd11031bcf
draw timeline adjusters in canvas
Drew Perttula <drewp@bigasterisk.com>
parents:
1514
diff
changeset
|
52 #dia, #adjusters, #cursorCanvas, #adjustersCanvas { |
1314 | 53 position: absolute; |
1317
4c6d88aa9e26
enough element and rdf support to drag one adjuster and see its value change
Drew Perttula <drewp@bigasterisk.com>
parents:
1315
diff
changeset
|
54 left: 0; top: 0; right: 0; bottom: 0; |
1314 | 55 } |
1462
d8929e28b8bc
TL: bring back debug line. optimize refreshes when only time cursor changed
drewp@bigasterisk.com
parents:
1415
diff
changeset
|
56 #debug { |
1719
165df402cb98
timeline canvas kind of resizes in its space (with setInterval, and possibly overshoot at the bottom)
Drew Perttula <drewp@bigasterisk.com>
parents:
1717
diff
changeset
|
57 background: white; |
165df402cb98
timeline canvas kind of resizes in its space (with setInterval, and possibly overshoot at the bottom)
Drew Perttula <drewp@bigasterisk.com>
parents:
1717
diff
changeset
|
58 font-family: monospace; |
165df402cb98
timeline canvas kind of resizes in its space (with setInterval, and possibly overshoot at the bottom)
Drew Perttula <drewp@bigasterisk.com>
parents:
1717
diff
changeset
|
59 font-size: 125%; |
165df402cb98
timeline canvas kind of resizes in its space (with setInterval, and possibly overshoot at the bottom)
Drew Perttula <drewp@bigasterisk.com>
parents:
1717
diff
changeset
|
60 height: 15px; |
1462
d8929e28b8bc
TL: bring back debug line. optimize refreshes when only time cursor changed
drewp@bigasterisk.com
parents:
1415
diff
changeset
|
61 } |
1994
1b690005aabd
little vidref player inside timeline
Drew Perttula <drewp@bigasterisk.com>
parents:
1962
diff
changeset
|
62 light9-vidref-replay-stack { |
1b690005aabd
little vidref player inside timeline
Drew Perttula <drewp@bigasterisk.com>
parents:
1962
diff
changeset
|
63 position: absolute; |
1b690005aabd
little vidref player inside timeline
Drew Perttula <drewp@bigasterisk.com>
parents:
1962
diff
changeset
|
64 bottom: 10px; |
2021 | 65 width: 50%; |
1994
1b690005aabd
little vidref player inside timeline
Drew Perttula <drewp@bigasterisk.com>
parents:
1962
diff
changeset
|
66 background: gray; |
1b690005aabd
little vidref player inside timeline
Drew Perttula <drewp@bigasterisk.com>
parents:
1962
diff
changeset
|
67 box-shadow: 6px 10px 12px #0000006b; |
1b690005aabd
little vidref player inside timeline
Drew Perttula <drewp@bigasterisk.com>
parents:
1962
diff
changeset
|
68 display: inline-block; |
1b690005aabd
little vidref player inside timeline
Drew Perttula <drewp@bigasterisk.com>
parents:
1962
diff
changeset
|
69 } |
1314 | 70 </style> |
71 <div> | |
1331 | 72 <rdfdb-synced-graph graph="{{graph}}"></rdfdb-synced-graph> |
1339
f24d4b331f15
zoom keys, with animation. timeline duration tracks ascoltami
Drew Perttula <drewp@bigasterisk.com>
parents:
1338
diff
changeset
|
73 <light9-music id="music" |
1379
ea198addff5f
TL can stop following player song
Drew Perttula <drewp@bigasterisk.com>
parents:
1377
diff
changeset
|
74 song="{{playerSong}}" |
1339
f24d4b331f15
zoom keys, with animation. timeline duration tracks ascoltami
Drew Perttula <drewp@bigasterisk.com>
parents:
1338
diff
changeset
|
75 t="{{songTime}}" |
f24d4b331f15
zoom keys, with animation. timeline duration tracks ascoltami
Drew Perttula <drewp@bigasterisk.com>
parents:
1338
diff
changeset
|
76 playing="{{songPlaying}}" |
f24d4b331f15
zoom keys, with animation. timeline duration tracks ascoltami
Drew Perttula <drewp@bigasterisk.com>
parents:
1338
diff
changeset
|
77 duration="{{songDuration}}"></light9-music> |
1379
ea198addff5f
TL can stop following player song
Drew Perttula <drewp@bigasterisk.com>
parents:
1377
diff
changeset
|
78 timeline editor: song <edit-choice graph="{{graph}}" uri="{{song}}"></edit-choice> |
ea198addff5f
TL can stop following player song
Drew Perttula <drewp@bigasterisk.com>
parents:
1377
diff
changeset
|
79 <label><input type="checkbox" checked="{{followPlayerSong::change}}" > follow player song choice</label> |
1314 | 80 </div> |
1462
d8929e28b8bc
TL: bring back debug line. optimize refreshes when only time cursor changed
drewp@bigasterisk.com
parents:
1415
diff
changeset
|
81 <div id="debug">[[debug]]</div> |
1369
6b5e079b3dbe
timeline hover goes to vidref
Drew Perttula <drewp@bigasterisk.com>
parents:
1366
diff
changeset
|
82 <iron-ajax id="vidrefTime" url="/vidref/time" method="PUT" content-type="application/json"></iron-ajax> |
1693
53f751982ddf
WIP polymer2 upgrade, timeline rewrite
drewp@bigasterisk.com
parents:
1666
diff
changeset
|
83 <div id="coveredByDiagram"> |
53f751982ddf
WIP polymer2 upgrade, timeline rewrite
drewp@bigasterisk.com
parents:
1666
diff
changeset
|
84 <light9-timeline-audio id="audio" |
53f751982ddf
WIP polymer2 upgrade, timeline rewrite
drewp@bigasterisk.com
parents:
1666
diff
changeset
|
85 graph="{{graph}}" |
53f751982ddf
WIP polymer2 upgrade, timeline rewrite
drewp@bigasterisk.com
parents:
1666
diff
changeset
|
86 show="{{show}}" |
53f751982ddf
WIP polymer2 upgrade, timeline rewrite
drewp@bigasterisk.com
parents:
1666
diff
changeset
|
87 song="{{song}}"></light9-timeline-audio> |
53f751982ddf
WIP polymer2 upgrade, timeline rewrite
drewp@bigasterisk.com
parents:
1666
diff
changeset
|
88 <light9-timeline-time-zoomed id="zoomed" |
53f751982ddf
WIP polymer2 upgrade, timeline rewrite
drewp@bigasterisk.com
parents:
1666
diff
changeset
|
89 graph="{{graph}}" |
1721
b4633fb9bccf
extract Project class with the larger graph-only methods
Drew Perttula <drewp@bigasterisk.com>
parents:
1719
diff
changeset
|
90 project="{{project}}" |
1693
53f751982ddf
WIP polymer2 upgrade, timeline rewrite
drewp@bigasterisk.com
parents:
1666
diff
changeset
|
91 selection="{{selection}}" |
53f751982ddf
WIP polymer2 upgrade, timeline rewrite
drewp@bigasterisk.com
parents:
1666
diff
changeset
|
92 set-adjuster="{{setAdjuster}}" |
53f751982ddf
WIP polymer2 upgrade, timeline rewrite
drewp@bigasterisk.com
parents:
1666
diff
changeset
|
93 song="{{song}}" |
53f751982ddf
WIP polymer2 upgrade, timeline rewrite
drewp@bigasterisk.com
parents:
1666
diff
changeset
|
94 show="{{show}}" |
1727
68681c2cbbc1
extract viewState, pass it to other elements
Drew Perttula <drewp@bigasterisk.com>
parents:
1721
diff
changeset
|
95 view-state="{{viewState}}"> |
1693
53f751982ddf
WIP polymer2 upgrade, timeline rewrite
drewp@bigasterisk.com
parents:
1666
diff
changeset
|
96 </light9-timeline-time-zoomed> |
53f751982ddf
WIP polymer2 upgrade, timeline rewrite
drewp@bigasterisk.com
parents:
1666
diff
changeset
|
97 <light9-adjusters-canvas id="adjustersCanvas" set-adjuster="{{setAdjuster}}"> |
53f751982ddf
WIP polymer2 upgrade, timeline rewrite
drewp@bigasterisk.com
parents:
1666
diff
changeset
|
98 </light9-adjusters-canvas> |
1730
7d2d20f06d1d
cleanup viewstate change notifications. Use ko.computed more.
Drew Perttula <drewp@bigasterisk.com>
parents:
1729
diff
changeset
|
99 <light9-cursor-canvas id="cursorCanvas" view-state="{{viewState}}"></light9-cursor-canvas> |
1994
1b690005aabd
little vidref player inside timeline
Drew Perttula <drewp@bigasterisk.com>
parents:
1962
diff
changeset
|
100 <light9-vidref-replay-stack size="small"></light9-vidref-replay-stack> |
1693
53f751982ddf
WIP polymer2 upgrade, timeline rewrite
drewp@bigasterisk.com
parents:
1666
diff
changeset
|
101 </div> |
2062 | 102 `; |
103 } | |
104 } | |
1314 | 105 |
2062 | 106 // the whole section that pans/zooms in time (most of the editor) |
107 @customElement("light9-timeline-time-zoomed") | |
108 export class Light9TimelineTimeZoomed extends LitElement { | |
109 render() { | |
110 return html` | |
1314 | 111 <style> |
112 :host { | |
113 display: flex; | |
114 height: 100%; | |
1719
165df402cb98
timeline canvas kind of resizes in its space (with setInterval, and possibly overshoot at the bottom)
Drew Perttula <drewp@bigasterisk.com>
parents:
1717
diff
changeset
|
115 flex-direction: column; |
1314 | 116 } |
1719
165df402cb98
timeline canvas kind of resizes in its space (with setInterval, and possibly overshoot at the bottom)
Drew Perttula <drewp@bigasterisk.com>
parents:
1717
diff
changeset
|
117 #top { |
165df402cb98
timeline canvas kind of resizes in its space (with setInterval, and possibly overshoot at the bottom)
Drew Perttula <drewp@bigasterisk.com>
parents:
1717
diff
changeset
|
118 } |
165df402cb98
timeline canvas kind of resizes in its space (with setInterval, and possibly overshoot at the bottom)
Drew Perttula <drewp@bigasterisk.com>
parents:
1717
diff
changeset
|
119 #rows { |
1314 | 120 height: 100%; |
1742
70873145cc71
get mouse events to pixi. fix pixi-vs-adj coordinate issue
Drew Perttula <drewp@bigasterisk.com>
parents:
1741
diff
changeset
|
121 overflow: hidden; |
1314 | 122 } |
1382
b4d81ecf055c
drop effect uri onto rows, make note
Drew Perttula <drewp@bigasterisk.com>
parents:
1380
diff
changeset
|
123 #rows.dragging { |
1617
ff193840cd84
timeline cleanups. rm old adjuster class.
Drew Perttula <drewp@bigasterisk.com>
parents:
1613
diff
changeset
|
124 background: rgba(126, 52, 245, 0.0784); |
1719
165df402cb98
timeline canvas kind of resizes in its space (with setInterval, and possibly overshoot at the bottom)
Drew Perttula <drewp@bigasterisk.com>
parents:
1717
diff
changeset
|
125 } |
165df402cb98
timeline canvas kind of resizes in its space (with setInterval, and possibly overshoot at the bottom)
Drew Perttula <drewp@bigasterisk.com>
parents:
1717
diff
changeset
|
126 light9-timeline-time-axis { |
165df402cb98
timeline canvas kind of resizes in its space (with setInterval, and possibly overshoot at the bottom)
Drew Perttula <drewp@bigasterisk.com>
parents:
1717
diff
changeset
|
127 } |
1314 | 128 light9-timeline-audio { |
129 width: 100%; | |
1341 | 130 height: 100px; |
1314 | 131 } |
132 light9-timeline-graph-row { | |
133 flex-grow: 1; | |
134 } | |
135 </style> | |
1382
b4d81ecf055c
drop effect uri onto rows, make note
Drew Perttula <drewp@bigasterisk.com>
parents:
1380
diff
changeset
|
136 <div id="top"> |
1729 | 137 <light9-timeline-time-axis id="time" view-state="{{viewState}}"></light9-timeline-time-axis> |
1342 | 138 <light9-timeline-audio id="audio" |
1356
16aa26b7d685
timeline audio loads the current song img
Drew Perttula <drewp@bigasterisk.com>
parents:
1353
diff
changeset
|
139 graph="{{graph}}" |
16aa26b7d685
timeline audio loads the current song img
Drew Perttula <drewp@bigasterisk.com>
parents:
1353
diff
changeset
|
140 song="{{song}}" |
16aa26b7d685
timeline audio loads the current song img
Drew Perttula <drewp@bigasterisk.com>
parents:
1353
diff
changeset
|
141 show="{{show}}" |
1342 | 142 zoom="{{zoomFlattened}}"> |
143 </light9-timeline-audio> | |
1314 | 144 </div> |
1719
165df402cb98
timeline canvas kind of resizes in its space (with setInterval, and possibly overshoot at the bottom)
Drew Perttula <drewp@bigasterisk.com>
parents:
1717
diff
changeset
|
145 <div id="rows"></div> |
1962
d6b7567e8d19
testing image effect graphics on timeline
Drew Perttula <drewp@bigasterisk.com>
parents:
1901
diff
changeset
|
146 <template is="dom-repeat" items="{{imageSamples}}"> |
d6b7567e8d19
testing image effect graphics on timeline
Drew Perttula <drewp@bigasterisk.com>
parents:
1901
diff
changeset
|
147 <img src="/show/dance2019/anim/rainbow1.png"> |
d6b7567e8d19
testing image effect graphics on timeline
Drew Perttula <drewp@bigasterisk.com>
parents:
1901
diff
changeset
|
148 </template> |
1743
92104dcd33e2
finish mouse event routing. inlineAttrs display again.
Drew Perttula <drewp@bigasterisk.com>
parents:
1742
diff
changeset
|
149 <template is="dom-repeat" items="{{inlineAttrConfigs}}"> |
92104dcd33e2
finish mouse event routing. inlineAttrs display again.
Drew Perttula <drewp@bigasterisk.com>
parents:
1742
diff
changeset
|
150 <light9-timeline-note-inline-attrs graph="{{graph}}" |
1746
84adc69fdf8a
fix inlineattrs setup and effect editing
Drew Perttula <drewp@bigasterisk.com>
parents:
1745
diff
changeset
|
151 project="{{project}}" |
84adc69fdf8a
fix inlineattrs setup and effect editing
Drew Perttula <drewp@bigasterisk.com>
parents:
1745
diff
changeset
|
152 selection="{{selection}}" |
1743
92104dcd33e2
finish mouse event routing. inlineAttrs display again.
Drew Perttula <drewp@bigasterisk.com>
parents:
1742
diff
changeset
|
153 song="{{song}}" |
1745
b0d6ace1db5a
inlineAttrs shows effect choice
Drew Perttula <drewp@bigasterisk.com>
parents:
1743
diff
changeset
|
154 config="{{item}}"> |
b0d6ace1db5a
inlineAttrs shows effect choice
Drew Perttula <drewp@bigasterisk.com>
parents:
1743
diff
changeset
|
155 </light9-timeline-note-inline-attrs> |
1743
92104dcd33e2
finish mouse event routing. inlineAttrs display again.
Drew Perttula <drewp@bigasterisk.com>
parents:
1742
diff
changeset
|
156 </template> |
2062 | 157 `; |
158 } | |
159 } | |
1314 | 160 |
2062 | 161 @customElement("light9-cursor-canvas") |
162 export class Light9CursorCanvas extends LitElement { | |
163 render() { | |
164 return html` | |
165 <style> | |
166 #canvas, | |
167 :host { | |
168 pointer-events: none; | |
169 } | |
170 </style> | |
171 <canvas id="canvas"></canvas> | |
172 `; | |
173 } | |
174 } | |
175 | |
176 @customElement("light9-adjusters-canvas") | |
177 export class Light9AdjustersCanvas extends LitElement { | |
178 render() { | |
179 return html` | |
180 <style> | |
181 :host { | |
182 pointer-events: none; | |
183 } | |
184 </style> | |
185 <canvas id="canvas"></canvas> | |
186 `; | |
187 } | |
188 } | |
1314 | 189 |
2062 | 190 // seconds labels |
191 @customElement("light9-timeline-time-axis") | |
192 export class Light9TimelineTimeAxis extends LitElement { | |
193 render() { | |
194 return html` | |
2002 | 195 <style> |
2062 | 196 :host { |
197 display: block; | |
198 } | |
199 div { | |
200 width: 100%; | |
201 height: 31px; | |
202 } | |
203 svg { | |
204 width: 100%; | |
205 height: 30px; | |
206 } | |
2002 | 207 </style> |
2062 | 208 <svg id="timeAxis" xmlns="http://www.w3.org/2000/svg"> |
209 <style> | |
210 text { | |
211 fill: white; | |
212 color: white; | |
213 font-size: 135%; | |
214 font-weight: bold; | |
215 } | |
216 </style> | |
217 <g id="axis" transform="translate(0,30)"></g> | |
218 </svg> | |
219 `; | |
220 } | |
221 } | |
1314 | 222 |
2062 | 223 // All the adjusters you can edit or select. Tells a light9-adjusters-canvas how to draw them. Probabaly doesn't need to be an element. |
224 // This element manages their layout and suppresion. | |
225 // Owns the selection. | |
226 // Maybe includes selecting things that don't even have adjusters. | |
227 // Maybe manages the layout of other labels and text too, to avoid overlaps. | |
228 @customElement("light9-timeline-adjusters") | |
229 export class Light9TimelineAdjusters extends LitElement { | |
230 render() { | |
231 return html` | |
232 <style> | |
233 :host { | |
234 pointer-events: none; /* restored on the individual adjusters */ | |
235 } | |
236 </style> | |
237 `; | |
238 } | |
239 } | |
1314 | 240 |
2062 | 241 /* |
1706
e30493d458f9
more npm setup. n3 upgraded but code is not, yet
drewp@bigasterisk.com
parents:
1705
diff
changeset
|
242 <script src="/lib/async/dist/async.js"></script> |
1338
5ba5afe30817
ctrl-p does seekPlayOrPause
Drew Perttula <drewp@bigasterisk.com>
parents:
1336
diff
changeset
|
243 <script src="/lib/shortcut/index.js"></script> |
1466
b72198260bf0
large fixes to timeline note&adjuster refreshes. seems ok now
Drew Perttula <drewp@bigasterisk.com>
parents:
1464
diff
changeset
|
244 <script src="/lib/underscore/underscore-min.js"></script> |
1706
e30493d458f9
more npm setup. n3 upgraded but code is not, yet
drewp@bigasterisk.com
parents:
1705
diff
changeset
|
245 <script src="/node_modules/n3/n3-browser.js"></script> |
e30493d458f9
more npm setup. n3 upgraded but code is not, yet
drewp@bigasterisk.com
parents:
1705
diff
changeset
|
246 <script src="/node_modules/pixi.js/dist/pixi.min.js"></script> |
1740
7cb53b510a6a
draw notes, colors. position adjusters better.
Drew Perttula <drewp@bigasterisk.com>
parents:
1737
diff
changeset
|
247 <script src="/node_modules/tinycolor2/dist/tinycolor-min.js"></script> |
2062 | 248 */ |