package Ġio . do co ps . asci ido ctor j . extension . panels Ċ Ċ import Ġorg . asci ido ctor . ast . Structural Node Ċ import Ġorg . asci ido ctor . extension . Block Macro Processor Ċ import Ġorg . asci ido ctor . extension . Name Ċ Ċ @ Name (" color Map ") Ċ class ĠColor Map Block Macro Processor Ġ: ĠBlock Macro Processor () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġprocess ( parent : ĠStructural Node , Ġtarget : ĠString , Ġattributes : ĠMutable Map < String , ĠAny >): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġlanguage = Html ĊĠĠĠĠĠĠĠ Ġval Ġstr Ġ= Ġ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< div Ġclass =' example block '> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< div Ġclass =' content '> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< div Ġclass =' literal block '> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< div Ġclass =' content ' Ġid =" col ormap "></ div > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ div > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ div > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ</ div > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< button Ġname =" Generate " Ġvalue =" Generate " Ġonclick =" gen Colors ();"> Create ĠColor ĠPalette </ button > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< input Ġtype =" number " Ġid =" points " Ġname =" points " Ġvalue =" 2 0 " Ġstep =" 1 "> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< script > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunction Ġget Color (){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġh sl To Hex ( 3 6 0 Ġ* ĠMath . random (), Ġ( 2 5 Ġ+ Ġ 7 0 Ġ* ĠMath . random ()) Ġ, Ġ( 7 5 Ġ+ Ġ 1 0 Ġ* ĠMath . random ()) Ġ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunction Ġh sl To Hex ( h , Ġs , Ġl ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl Ġ/= Ġ 1 0 0 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġa Ġ= Ġs Ġ* ĠMath . min ( l , Ġ 1 Ġ- Ġl ) Ġ/ Ġ 1 0 0 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġf Ġ= Ġn Ġ=> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġk Ġ= Ġ( n Ġ+ Ġh Ġ/ Ġ 3 0 ) Ġ% Ġ 1 2 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġcolor Ġ= Ġl Ġ- Ġa Ġ* ĠMath . max ( Math . min ( k Ġ- Ġ 3 , Ġ 9 Ġ- Ġk , Ġ 1 ), Ġ- 1 ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMath . round ( 2 5 5 Ġ* Ġcolor ). toString ( 1 6 ). pad Start ( 2 , Ġ' 0 '); ĠĠ Ġ// Ġconvert Ġto ĠHex Ġand Ġprefix Ġ" 0 " Ġif Ġneeded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ`# ${ '$ ' }{ f ( 0 )} ${ '$ ' }{ f ( 8 )} ${ '$ ' }{ f ( 4 )} `; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunction Ġgen Colors () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlet Ġstr Ġ= Ġ" color Map Ġ{\ n "; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlet Ġelem Ġ= Ġdocument . getElementById (" col ormap "); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelem . innerHTML Ġ= Ġ''; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpts Ġ= Ġdocument . getElementById (" points "); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġpts . value ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( Ġlet Ġi Ġ= Ġcount ; Ġi --; ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlet Ġitem Ġ= Ġdocument . createElement (' div '); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcolor Ġ= Ġdocument . createElement (' div '); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlet Ġcl r Ġ= Ġget Color (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . style . css Text Ġ= Ġ` ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay : inline - block ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpadding : Ġ 2 em ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmargin : 5 px ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġborder - radius : 5 0 %; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground : Ġ${ '$ ' }{ clr }; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . innerText Ġ= Ġcl r ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstr Ġ+= Ġ Ġ' ĠĠĠĠĠ Ġcolor (\" '+ Ġcl r Ġ+ Ġ'\ ") \ n '; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelem . appendChild ( item ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstr Ġ+= Ġ" }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor . innerText Ġ= Ġstr ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġp pre Ġ= Ġdocument . createElement (" pre "); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġp code Ġ= Ġdocument . createElement (" code "); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp code . className Ġ= Ġ' language - kotlin '; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp pre . appendChild ( p code ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp code . innerText Ġ= Ġstr ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelem . appendChild ( pp re ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ</ script > ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Block ( parent , Ġ" pass ", Ġstr ) ĊĠĠĠ Ġ} Ċ Ċ }