export const flags = [
   'color', 'commands', 'showall', 'showaux', 'algebra'] as const
export type FlagType = (typeof flags)[number]
export type ConfigType = Partial<Record<FlagType, boolean>>

export type AppletDescription
   html: string
   params: Record<string, string>
   id: string
   width: number
   height: number

export type AdapParams
   codebase?: string
   loader?: string
   config?: ConfigType
   joyceApplets: AppletDescription[]

export function params(kids: HTMLCollection): Record<string, string>
   return.value: Record<string, string> := {}
   for each kid of kids
      unless kid.tagName is 'PARAM' then continue
      name := kid.getAttribute 'name'
      value := kid.getAttribute 'value'
      unless name and value then continue
      return.value[name] = value

prim3d := /polyhedron|sphere|plane|face/
export function contains3d(params: Record<string, string>): boolean
   for value of Object.values(params)
      if prim3d.test(value) then return true
   return false
