summaryrefslogtreecommitdiff
path: root/node_modules/shiki/samples/imba.sample
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/shiki/samples/imba.sample')
-rw-r--r--node_modules/shiki/samples/imba.sample55
1 files changed, 55 insertions, 0 deletions
diff --git a/node_modules/shiki/samples/imba.sample b/node_modules/shiki/samples/imba.sample
new file mode 100644
index 0000000..c8c5b39
--- /dev/null
+++ b/node_modules/shiki/samples/imba.sample
@@ -0,0 +1,55 @@
+global css body m:0 p:0 rd:lg bg:yellow1 of:hidden
+tag value-picker
+ css w:100px h:40px pos:rel
+ d:hgrid ji:center ai:center
+ css .item h:100% pos:rel tween:styles 0.1s ease-out
+
+ def update e
+ data = options[e.x]
+
+ <self @touch.stop.fit(0,options.length - 1,1)=update>
+ for item in options
+ <div.item[$value:{item}] .sel=(item==data)>
+
+tag stroke-picker < value-picker
+ css .item bg:black w:calc($value*1px) h:40% rd:sm
+ o:0.3 @hover:0.8 .sel:1
+
+tag color-picker < value-picker
+ css .item js:stretch rdt:lg bg:$value mx:2px scale-y.sel:1.5
+
+tag app-canvas
+ prop dpr = window.devicePixelRatio
+ prop state = {}
+
+ def draw e
+ let path = e.#path ||= new Path2D
+ let ctx = $canvas.getContext('2d')
+ path.lineTo(e.x * dpr,e.y * dpr)
+ ctx.lineWidth = state.stroke * dpr
+ ctx.strokeStyle = state.color
+ ctx.stroke(path)
+
+ def resized e
+ $canvas.width = offsetWidth * dpr
+ $canvas.height = offsetHeight * dpr
+
+ <self @resize=resized @touch.prevent.moved.fit(self)=draw>
+ <canvas$canvas[pos:abs w:100% h:100%]>
+
+const strokes = [1,2,3,5,8,12]
+const colors = ['#F59E0B','#10B981','#3B82F6','#8B5CF6']
+const state = {stroke: 5, color: '#3B82F6'}
+
+tag App
+ <self>
+ <div[ta:center pt:20 o:0.2 fs:xl]> 'draw here'
+ <app-canvas[pos:abs inset:0] state=state>
+ <div.tools[pos:abs b:0 w:100% d:hgrid ja:center]>
+ <stroke-picker options=strokes bind=state.stroke>
+ <color-picker options=colors bind=state.color>
+
+imba.mount <App[pos:abs inset:0]>
+
+# from https://imba.io
+# run online at https://scrimba.com/scrim/cPPdD4Aq \ No newline at end of file