import * as Z from 'zod'
import { Metadata } from '@aptpod/data-viz-visual-parts-sdk'

/**
 * Extension の型を定義
 */
export type Extension = Z.infer<typeof schema>

/**
 * Extension のDefault値を設定します。
 */
export const defaultExtension = {
  hiddenIDs: [] as string[],
} as const

/**
 * Extension のスキーマ定義します。
 */
export const schema = Z.object({
  hiddenIDs: Z.array(Z.string()).catch(defaultExtension.hiddenIDs),
}).catch(defaultExtension)

/**
 * Extension の各フィールドをチェックします。
 */
export const parse = (anyExtension: any): Extension => {
  return schema.parse(anyExtension)
}

/**
 * Data VisualizerのPanel Optionに表示する入力項目を定義します。
 */
export const EXTENSION_CONFIGS: Metadata['panelOptionConfig']['extensionConfigs'] =
  []
