Source: class_doc.js

/**
 * エフェクトを操作するためのオブジェクト
 * @example
 * function start(){
 *   let effect = scene.effect.model //モデルエフェクトを操作
 *   if(effect.shaderIds.length == 0){
 *     let layer = effect.add("Aberration") //特殊効果を追加
 *     console.log(layer.parameterIds) //操作できるエフェクトパラメータ
 *   }
 * }
 * function update(){
 *   let effect = scene.effect.model
 *   let sin = Math.sin(Date.now()/1000)
 *   effect.brightness = sin //明るさを変更
 *   effect.layer("Aberration")?.setParameter("radian",sin) //特殊効果のパラメータを変更 
 * }
 */
class Effect{
    /**
     * 色調補正の有効状態
     * 関連する値を編集すると自動で有効になる
     * @type {boolean}
     */ 
    colorCollectionEnabled = false

    /**
     * 色調補正 / 彩度 
     * 0~2
     * @type {number} 
     */
    saturation = 1

    /**
     * 色調補正 / 明るさ
     *  -1~1
     * @type {number}
     */
    brightness = 0

    /**
     * 色調補正 / コントラスト
     * -1~1
     * @type {number} 
     */
    contrast = 0

    /**
     * 色調補正 / カラー
     * @type {Color}
     */ 
    blendColor = "#00ffffff"
    
    /**
     * 色調補正 / ブレンドモード
     * 注意:各モードの名前は2.0時点
     *  "Mix"|"Multiply"|"BurninColor"|"BurninLinear"|"Screen"|"Add"|"Overlay"|"SoftLight"|"Colorize"
     * @type {string}
     */
    blendMode = "Colorize"
    
    /**
     * 特殊効果の有効状態
     * @type {boolean}
     */
    shaderEffectEnabled = false

    /**
     * このインスタンスの示すターゲットに追加可能な特殊効果(シェーダー)のID一覧
     * @type {string[]}
     * @since nizima LIVE 2.3.0
     */
    availableShaderIds = []

    /**
     * 現在の特殊効果
     */
    shaderIds = []

    /**
     * モデルのエフェクト。ルートのエフェクトからのみ呼び出し可能
     * @type {Effect}
     */
    model = new Effect()

    /**
     * 背景のエフェクト。ルートのエフェクトからのみ呼び出し可能
     * @type {Effect}
     */ 
    background = new Effect()

    /**
     * 特殊効果を追加する
     * ID は availableShaderIds を参照
     * @param {string} shaderId
     * @returns {EffectLayer} 追加された特殊効果
     */ 
    add(shaderId){
    }

    /**
     * 特殊効果を削除する
     * @param {number} 
     */
    remove(index){
    }

    /**
     * レイヤーを取得する
     * @param {number} 
     * @returns {EffectLayer}
     */ 
    layer(index){
    }

    /**
     * IDからレイヤーを取得する。複数ある場合は先に見つかった方のみ返す
     * @param {string} shaderId 
     * @returns {EffectLayer}
     */
    layer(shaderId){
    }
}

/**
 * 特殊効果の一つを表すオブジェクト
 */
class EffectLayer{
    /**
     * 有効かどうか
     * @type {boolean}
     */
    enabled = false

    /**
     * パラメータの一覧
     * @type {string[]}
     */ 
    parameterIds = []

    /**
     * インデックス
     * @type {number}
     */  
    index = 0

    /**
     * パラメータを設定する
     * @param {string} id
     * @param {number} value
     */ 
    setParameter(id,value){
    }
}

/**
 * 色情報を表す。  
 * 基本的な色は"red"や"black"などで指定可能。  
 * 
 * https://www.w3.org/TR/SVG11/types.html#ColorKeywords  
 * 
 * または"#FF0000"のような16進数表記も可能。console.logで表示するときはこちらになる。  
 * Live.rgb(1,1,1)のような関数を使って指定することも可能  
 * 
 * @example
 * function start() {
 *     model.multiplyColor = "red"
 *     console.log(model.multiplyColor) // #FF0000
 * 
 *     model.multiplyColor = "#FFFFFF"
 *     model.screenColor = Live.rgb(0, 0, 1)
 * }
 */
class Color {
    /**
     * 有効かどうか
     * @type {boolean}
     */
    valid = 0

    /**
     * 赤成分
     * @type {number}
     */
    r = 0

    /**
     * 緑成分
     * @type {number}
     */
    g = 0

    /**
     * 青成分
     * @type {number}
     */
    b = 0
}

/**
 * paint関数で引数として渡ってくる、描画のためのオブジェクト
 * @example
 * function paint(painter) {
 *     painter.clear()
 *     painter.pen = "black"
 *     painter.drawRect(0, 0, 100, 100)
 *     painter.pen = "green"
 *     painter.drawEllipse(0, 0, 100, 100)
 *     painter.pen = "blue"
 *     painter.drawLine(0, 0, 100, 100)
 *     painter.pen = "red"
 *     painter.drawText(20, 20, "Hello, World!")
 * }
 */
class Painter {
    /**
     * 画面の横幅
     * @type {number}
     */
    width = 0

    /**
     * 画面の高さ
     * @type {number}
     */
    height = 0

    /**
     * 描画時の色
     * @type {Color}
     */
    pen = "red"

    /**
     * 文字のサイズ
     * @type {number}
     */
    pixelSize = 1

    /**
     * 文字のサイズ
     * @type {number}
     */
    pointSize = 1

    /**
     * 線の太さ
     * @type {number}
     */
    penWidth = 1

    /**
     * フォントの指定
     * @type {string}
     */
    font = ""

    /**
     * 有効なフォントの一覧
     * @type {string[]}
     */
    fontList = [""]

    /**
     * 塗りつぶしの色
     * @type {Color}
     */
    brush = "black"

    /**
     * 描画したものを初期化する
     */
    clear() { }

    /**
     * 文字を描画する
     * @param x {number}
     * @param y {number} 文字の左上を基準とする( API 1.0.0(nL1.8.0)から )
     * @param text {string}
     */
    drawText(x, y, text) { }

    /**
     * 線を描画する
     * @param x1 {number}
     * @param y1 {number}
     * @param x2 {number}
     * @param y2 {number}
     */
    drawLine(x1, y1, x2, y2) { }

    /**
     * 点を描画する
     * @param x {number}
     * @param y {number}
     */
    drawPoint(x, y) { }

    /**
     * 楕円を描画する
     * @param centerX {number}
     * @param centerY {number}
     * @param rx {number}
     * @param ry {number}
     */
    drawEllipse(centerX, centerY, rx, ry) { }

    /**
     * 四角形を描画する
     * @param x {number}
     * @param y {number}
     * @param width {number}
     * @param height {number}
     */
    drawRect(x, y, width, height) { }

    /**
     * 円を描画する
     * @param x {number}
     * @param y {number}
     * @param radius {number}
     */
    drawCircle(x, y, radius) { }

    /**
     * 画像を描画する
     * @param x {number}
     * @param y {number}
     * @param image {string} scriptsフォルダにある画像ファイル名
     */
    drawImage(x, y, image) { }
}

/**
 * Cubismのパラメータを表すオブジェクト
 * @example
 * function start(){
 *   for(let param of model.parameters){
 *       console.log("ID:",param.id)
 *       console.log("  Name:",param.name)
 *       console.log("  Default Value:",param.defaultValue)
 *       console.log("  Max:",param.max)
 *       console.log("  Min:",param.min)
 *       console.log("  Value:",param.value)
 *   }
 * }
 */
class Parameter {
    /**
     * パラメータのID
     * @type {string}
     */
    id = ""

    /**
     * パラメータの値
     * @type {number}
     */
    value = 0

    /**
     * パラメータの名前。cdi.jsonに記載が無い場合は空文字列
     * @type {string}
     */
    name = ""

    /**
     * パラメータの最小値
     * @type {number}
     */
    min = 0

    /**
     * パラメータの最大値
     * @type {number}
     */
    max = 1

    /**
     * パラメータの初期値
     * @type {number}
     */
    defaultValue = 0
}

/**
 * Cubismのパーツを表すオブジェクト
 * @example
 * function start(){
 *     for(let part of model.parts){
 *         console.log("ID:",part.id)
 *         console.log("  Name:",part.name)
 *         console.log("  Opacity:",part.opacity)
 *         console.log("  Parent Part:",part.parentPart?.id)
 *         console.log("  MultiplyColor:",part.multiplyColor)
 *         console.log("  ScreenColor:",part.screenColor)
 *         console.log("  Drawable Children Count:",part.drawables.length)
 *         console.log("  Part Children Count:",part.parts.length)
 *     }
 * }
 */
class Part {
    /**
     * パーツID
     * Cubism Editorで設定したもの
     * @type {string}
     */
    id = ""

    /**
     * パーツ名。cdi.jsonに記載が無い場合は空文字列
     * @type {string}
     */
    name = ""

    /**
     * 親パーツ
     * @type {Part}
     */
    parentPart = {}

    /**
     * パーツの不透明度
     * @type {number}
     */
    opacity = 1

    /**
     * 子パーツ
     * @type {Part[]}
     */
    parts = []

    /**
     * 子描画オブジェクト
     * @type {Drawable[]}
     */
    drawables = []

    /**
     * パーツの乗算色
     * @type {Color}
     */
    multiplyColor = {}

    /**
     * パーツのスクリーン色
     * @type {Color}
     */
    screenColor = {}
}

/**
 * Cubismの描画オブジェクトを表すオブジェクト
 * @example
 * function start(){
 *     for(let drawable of model.drawables){
 *         console.log("ID",drawable.id)
 *         console.log("  Opacity",drawable.opacity)
 *         console.log("  DrawOrder",drawable.drawOrder)
 *         console.log("  Parent Part:",drawable.parentPart?.id)
 *         console.log("  MultiplyColor:",drawable.multiplyColor)
 *         console.log("  ScreenColor:",drawable.screenColor)
 *     }
 * }
 */
class Drawable {
    /**
     * 描画オブジェクトID  
     * Cubism Editorで設定したもの
     * @type {string}
     * @readonly
     */
    id = ""

    /**
     * 親パーツ
     * @type {{}}
     * @readonly
     */
    parentPart = {}

    /**
     * 不透明度
     * @type {number}
     * @readonly
     */
    opacity = 1

    /**
     * 描画順
     * @type {number}
     * @readonly
     */
    drawOrder = 1

    /**
     * 乗算色
     * @type {Color}
     */
    multiplyColor = {}

    /**
     * スクリーン色
     * @type {Color}
     */
    screenColor = {}
    
    /**
     * モデルデータ(.moc3)で設定された乗算色(編集不可・参照専用)
     * @type {Color}
     * @readonly
     * @since nizima LIVE 2.3.0
     */
    mocMultiplyColor = {}

    /**
     * モデルデータ(.moc3)で設定されたスクリーン色(編集不可・参照専用)
     * @type {Color}
     * @readonly
     * @since nizima LIVE 2.3.0
     */
    mocScreenColor = {}
}

/**
 * Cubismのモーションを表すオブジェクト
 * @example
 * function start(){
 *     for(let motion of model.motions){
 *         console.log("Name",motion.name)
 *     }
 *
 *     if(model.motions.length>0){
 *         let motion=model.motions[Math.floor(Math.random() * model.motions.length)];
 *         motion.start()
 *     }
 * }
 */
class Motion {
    /**
     * モーション名
     * @type {string}
     */
    name = ""

    /**
     * モーションを開始する
     */
    start() {

    }

    /**
     * 停止する
     */
    stop() {
    }

    /**
     * このモーションが現在再生中かどうかを返します。
     * @returns {boolean} 再生中なら true
     * @since nizima LIVE 2.3.0
     */
    isPlaying() {
        return false
    }
}

/**
 * Cubismの表情を表すオブジェクト
 * @example
 * function start(){
 *     for(let expression of model.expressions){
 *         console.log("Name",expression.name)
 *     }
 *
 *     if(model.expressions.length>0){
 *         let expression=model.expressions[Math.floor(Math.random() * model.expressions.length)];
 *         expression.start()
 *         console.log("Start Expression",expression.name)
 *     }
 * }
 */
class Expression {
    /**
     * 表情名
     * @type {string}
     */
    name = ""

    /**
     * 表情を再生する
     */
    start() {
    }

    /**
     * 表情を停止する
     */
    stop() {
    }
}

/**
 * Live2Dモデルを操作するオブジェクト
 * @example
 * function start(){
 *     console.log("parameters",model.parameters.length)
 *     console.log("parts",model.parts.length)
 *     console.log("drawables",model.drawables.length)
 *     console.log("motions",model.motions.length)
 *     console.log("expressions",model.expressions.length)
 * }
 */
class Model {
    /**
     * パラメータの一覧
     * @type {Parameter[]}
     */
    parameters = []

    /**
     * パラメータを取得する。
     * @param id {string} IDが無い場合は名前で検索する
     * @returns {Parameter}
     */
    parameter(id) {
        return new Parameter()
    }

    /**
     * パーツの一覧
     * @type {Part[]}
     */
    parts = []

    /**
     * パーツを取得する。
     * @param id {string} IDが無い場合は名前で検索する
     * @returns {Part}
     */
    part(id) {
        return new Part()
    }

    /**
     * 描画オブジェクトの一覧
     * @type {Drawable[]}
     */
    drawables = []

    /**
     * 描画オブジェクトを取得する。
     * @param id {string} IDが無い場合は名前で検索する
     * @returns {Drawable}
     */
    drawable(id) {
        return new Drawable()
    }

    /**
     * モーション(motion3.json)の一覧
     * @type {Motion[]}
     */
    motions = []

    /**
     * モーションを取得する。
     * @param name {string}
     * @returns {Motion}
     */
    motion(name) {
        return new Motion()
    }

    /**
     * 表情(exp3.json)の一覧
     * @type {Expression[]}
     */
    expressions = []

    /**
     * 表情を取得する。
     * @param name {string} ファイル名またはmodel3.jsonに記載の名前
     * @returns {Expression}
     */
    expression(name) {
        return new Expression()
    }

    /**
     * 乗算色
     *
     * このプロパティを設定すると、モデル内のすべての Drawable の multiplyColor に同じ値が一括で適用されます。
     * 個別の Drawable の multiplyColor を直接変更することも可能です。
     *
     * 取得時は、Drawable 配列の先頭(model.drawables[0])の multiplyColor の値が返されます。
     *
     * @type {Color}
     * @example
     * function start(){
     *     model.multiplyColor = "#00ff00" // すべてのDrawableに適用
     *     console.log(model.multiplyColor) // model.drawables[0] の値が返る
     * }
     */
    multiplyColor = {}

    /**
     * スクリーン色
     * 
     * このプロパティを設定すると、モデル内のすべての Drawable の screenColor に同じ値が一括で適用されます。
     * 個別の Drawable の screenColor を直接変更することも可能です。
     * 
     * 取得時は、Drawable 配列の先頭(model.drawables[0])の screenColor の値が返されます。
     * 
     * @type {Color}
     * @example
     * function start(){
     *    model.screenColor = "#0000ff" // すべてのDrawableに適用
     *    console.log(model.screenColor) // model.drawables[0] の値が返る
     * }
     */
    screenColor = {}


    /**
     * 再生中のモーションを終了する関数
     */
    stopMotion() {
    }

    /**
     * モデルを移動する
     * @param {Object} param - 設定オブジェクト。
     * @param {number} [param.PositionX] - X座標
     * @param {number} [param.PositionX] - Y座標
     * @param {number} [param.Scale] - 大きさ
     * @param {number} [param.Rotation] - 回転
     * @param {number} [param.Delay=1] - 完了までの秒数
     * @param {boolean} [param.Absolute=false] - 絶対座標で移動するかどうか
     * @param {string} [param.InterpolationType="Linear"] - 補間方法
     * @example
  model.move({
    Rotation: 90,
    Delay: 3
  })
     */
    move(param) {

    }
}

/**
 * アイテム
 */
class Item{
    /**
     * ID
     * @type {string}
     */
    id = ""
}

/**
 * 画像
 */
class Image{
    /**
     * ID
     * @type {string}
     */
    id = ""

    width = 0

    height = 0
}

/**
 * シーン
 * @example
 * function start() {
 *     console.log("ID:",scene.id)
 *     console.log("  Model:",scene.models.length)
 *     console.log("  Item:",scene.items.length)
 * }
 */
class Scene {
    /**
     * ID
     * @type {string}
     */
    id = ""

    /**
     * 幅
     * @type {number}
     */
    width = 0

    /**
     * 高さ
     * @type {number}
     */
    height = 0


    /**
     * モデル一覧(Live2Dアイテムを除く)
     * @type {Model[]}
     */
    models = []

    /**
     * アイテム一覧
     * @type {Item[]}
     */
    items = []
}

/**
 * グローバルにアクセスできるオブジェクト
 */
class Live {
    /**
     * スクリプトのバージョン
     * @type {string}
     */
    version = "2.0.0"

    /**
     * すべてのシーンのモデルの一覧
     * @type {Model[]}
     */
    models = []

    /**
     * すべてのシーンのアイテムの一覧
     * @type {Item[]}
     */
    items = []

    /**
     * シーンの一覧
     * @type {Scene[]}
     */
    scenes = []

    /**
     * LIVEパラメータの一覧
     * @type {Array<{id: string, createdBy: string, group: string, base: number, min: number, max: number, repeat: boolean}>}
     * @property {string} id パラメータのID。{@link LiveParameters}を参照
     * @property {string} createdBy パラメータの作成者
     * @property {string} group パラメータのグループ名
     * @property {number} base パラメータの基準値
     * @property {number} min パラメータの最小値
     * @property {number} max パラメータの最大値
     * @property {boolean} repeat 最大値と最小値がつながる場合にtrue
     */
    parameters = []

    /**
     * エフェクト追加時に指定可能なシェーダーの ID 一覧
     * 注意:本ドキュメント記載の名前は 2.0 時点。また、ターゲットによってはエフェクトの動作が未定義の場合があります。(背景に逆光エフェクトを使用など)
     * @deprecated nizima LIVE 2.3.0 以降非推奨。代わりに Effect クラスの availableShaderIds を使用してください。
     */
    shaderEffectLayerIds = ["Aberration","AberrationCamera","AfterImage","AreaScaling","Blur","Backlight","Binary","BlendColor","BlockTransition","Bloom","Brightness","CameraShake","Colorize","Comet","Confetti","CRT","Diffusion","Dither","Dust","EditableParticle","Flare","Gaming","Glitch","Glow","Gradation","Grain","LightFilter","Mosaic","Outline","Plexus","Posterize","RainWindow","Saturation","Shadow","Sharpen","SlideTransition","Smoke","Snow","SwapColor","TextureSynthesis","TintTritone","Transition","Vignette","Woble"]

    /**
     * 右上にメッセージを表示する
     * @param message {string}
     */
    showMessage(message) {

    }

    /**
     * LIVEパラメータを追加する
     * @param {Object} param - パラメータ設定オブジェクト。
     * @param {string} param.Id - パラメータのID。
     * @param {string} param.Group - パラメータが属するグループ。
     * @param {number} param.Base - パラメータの基本値。
     * @param {number} param.Max - パラメータの最大値。
     * @param {number} param.Min - パラメータの最小値。
     * @param {boolean} param.Repeat - パラメータが繰り返し可能かどうか。
     */
    insertParameter(param) {

    }

    /**
     * 色の数値から#FFFFFFの形式に変更
     * @param red {number} 0~1
     * @param green {number} 0~1
     * @param blue {number} 0~1
     * @returns {Color}
     */
    rgb(red, green, blue) {
    }

    /**
     * コンボボックスでの選択ダイアログを開きます。  
     * モーダルダイアログとして表示され、ユーザーがリストから選択できます。
     * 
     * @param {string} title - ダイアログのタイトル
     * @param {string} text - ダイアログの説明文
     * @param {string[]} list - 選択肢の配列
     * @param {function(string): void} selectedCallback - 選択が確定されたときに呼ばれるコールバック。選択された値が渡されます。
     * @param {function(): void} [canceledCallback] - キャンセルされたときに呼ばれるコールバック(省略可)
     * @param {function(string): void} [changedCallback] - 選択肢が変更されたときに呼ばれるコールバック(省略可)
     * @example
     * Live.openListDialog(
     *   "色を選択",
     *   "好きな色を選んでください",
     *   ["赤", "青", "緑"],
     *   function(value) { console.log("選択:", value); },
     *   function() { console.log("キャンセルされました"); },
     *   function(value) { console.log("変更:", value); }
     * );
     */
    openListDialog(title, text, list,
        selectedCallback, canceledCallback = {}, changedCallback = {}) {
    }

    /**
     * カラーダイアログを開きます。  
     * ユーザーが色を選択できます。
     * 
     * @param {function(number, number, number, number): void} selectedCallback - 色が選択されたときに呼ばれるコールバック。各成分は0.0~1.0の範囲です。
     * @param {function(): void} [canceledCallback] - キャンセルされたときに呼ばれるコールバック(省略可)
     * @param {function(number, number, number, number): void} [changedCallback] - 色が変更されたときに呼ばれるコールバック(省略可)
     * @example
     * Live.openColorDialog(
     *   function(r, g, b, a) { console.log("選択:", r, g, b, a); },
     *   function() { console.log("キャンセル"); },
     *   function(r, g, b, a) { console.log("変更:", r, g, b, a); }
     * );
     */
    openColorDialog(selectedCallback, canceledCallback = {}, changedCallback = {}) { }

    /**
     * テキスト入力ダイアログを開きます。  
     * ユーザーが1行のテキストを入力できます。
     * 
     * @param {string} title - ダイアログのタイトル
     * @param {string} text - ダイアログの説明文
     * @param {function(string): void} selectedCallback - 入力が確定されたときに呼ばれるコールバック。入力されたテキストが渡されます。
     * @param {function(): void} [canceledCallback] - キャンセルされたときに呼ばれるコールバック(省略可)
     * @param {function(string): void} [changedCallback] - 入力内容が変更されたときに呼ばれるコールバック(省略可)
     */
    openTextDialog(title, text, selectedCallback, canceledCallback = {}, changedCallback = {}) { }

    /**
     * 複数行のテキスト入力ダイアログを開きます。  
     * ユーザーが複数行のテキストを入力できます。
     * 
     * @param {string} title - ダイアログのタイトル
     * @param {string} text - 初期テキスト
     * @param {function(string): void} selectedCallback - 入力が確定されたときに呼ばれるコールバック。入力されたテキストが渡されます。
     * @param {function(): void} [canceledCallback] - キャンセルされたときに呼ばれるコールバック(省略可)
     * @param {function(string): void} [changedCallback] - 入力内容が変更されたときに呼ばれるコールバック(省略可)
     */
    openMultiTextDialog(title, text, selectedCallback, canceledCallback = {}, changedCallback = {}) { }

    /**
     * 整数入力ダイアログを開きます。  
     * ユーザーが整数値を入力できます。
     * 
     * @param {string} title - ダイアログのタイトル
     * @param {string} text - ダイアログの説明文
     * @param {number} [min=0] - 入力可能な最小値
     * @param {number} [value=0] - 初期値
     * @param {number} [max=100] - 入力可能な最大値
     * @param {function(number): void} [selectedCallback] - 入力が確定されたときに呼ばれるコールバック(省略可)
     * @param {function(): void} [canceledCallback] - キャンセルされたときに呼ばれるコールバック(省略可)
     * @param {function(number): void} [changedCallback] - 入力値が変更されたときに呼ばれるコールバック(省略可)
     */
    openIntDialog(title, text, min = 0, value = 0, max = 100, selectedCallback = {}, canceledCallback = {}, changedCallback = {}) { }

    /**
     * 小数入力ダイアログを開きます。  
     * ユーザーが小数値を入力できます。
     * 
     * @param {string} title - ダイアログのタイトル
     * @param {string} text - ダイアログの説明文
     * @param {number} [min=0] - 入力可能な最小値
     * @param {number} [value=0] - 初期値
     * @param {number} [max=100] - 入力可能な最大値
     * @param {function(number): void} [selectedCallback] - 入力が確定されたときに呼ばれるコールバック(省略可)
     * @param {function(): void} [canceledCallback] - キャンセルされたときに呼ばれるコールバック(省略可)
     * @param {function(number): void} [changedCallback] - 入力値が変更されたときに呼ばれるコールバック(省略可)
     */
    openFloatDialog(title, text, min = 0, value = 0, max = 100, selectedCallback = {}, canceledCallback = {}, changedCallback = {}) { }

    /**
     * エラーダイアログを開きます。  
     * エラー内容をユーザーに通知します。
     * 
     * @param {string} title - ダイアログのタイトル
     * @param {string} text - エラー内容
     * @param {function(): void} [acceptedCallback] - OKボタンが押されたときに呼ばれるコールバック(省略可)
     */
    openErrorDialog(title, text, acceptedCallback = {}) { }

    /**
     * メッセージダイアログを開きます。  
     * 情報や確認メッセージを表示します。
     * 
     * @param {string} title - ダイアログのタイトル
     * @param {string} text - メッセージ内容
     * @param {function(): void} [acceptedCallback] - OKボタンが押されたときに呼ばれるコールバック(省略可)
     * @param {function(): void} [canceledCallback] - キャンセルされたときに呼ばれるコールバック(省略可)
     * @param {string} [detail] - 詳細情報(省略可)
     */
    openMessageDialog(title, text, acceptedCallback = {}, canceledCallback = {}, detail = {}) { }
}