Kartik depdrop could not load properly in update form

Hi all,
I have problem in loading Kartik depdrop widget in update form inside dynamic form. It always load same value for two widgets which are Depdrop and Select2.
Here is my view file looks like

<div class="card-body container-items"> <!-- widgetContainer -->
            <?php foreach ($details as $i => $detail): ?>
            <div class="item card"> <!-- widgetBody -->
                <div class="card-header"> 
                    <?php
                        // necessary for update action.
                        if (! $detail->isNewRecord) {
                            echo Html::activeHiddenInput($detail, "[{$i}]id");
                        }
                    ?>
                    <span class="card-item-title" style="color: blue;">Item : <?= ($i+1) ?></span> 
                    <button type="button" class="float-right remove-item btn btn-danger btn-sm">
                        <i class="fa fa-minus"></i></button>
                    <div class="clearfix"></div>
                </div> <!-- card-header -->
                <div class="card-body">
                    <div class="row">
                        <div class="col-4">
                            <?= $form->field($detail, "[{$i}]item_id")->widget(Select2::class, [
                                'data' => ArrayHelper::map(\app\models\ItemSparepart::find()->where(['listed' => 1])->all(), 'id', 'name'),
                                'language' => 'en',
                                'options' => [
                                    'placeholder' => 'Select item ...',
                                ],
                                'pluginOptions' => [
                                    'allowClear' => true,
                                ],
                                
                            ]);
                            ?>
                            <?php 
                                // Additional input fields passed as params to the child dropdown's pluginOptions
                                echo Html::hiddenInput('input-type-1', 'Additional value 1', ['id' => 'input-type-1']);
                                echo Html::hiddenInput('input-type-2', 'Additional value 2', ['id' => 'input-type-2']);
                            ?>
                        </div>
                        
                        <div class="col-3">
                            <?= $form->field($detail, "[{$i}]from_warehouse_id")->widget(DepDrop::class, [
                                'data' => ArrayHelper::map(\app\models\Warehouse::find()->where(['listed' => 1])->all(), 'id', 'name'),
                                'type' => DepDrop::TYPE_SELECT2,
                                'options' => [
                                    'placeholder' => 'Select source warehouse ...',    
                                ],
                                'select2Options' => ['pluginOptions' => ['allowClear' => true]],
                                'pluginOptions' => [
                                    'depends' => ["itemtransferdetail-{$i}-item_id"],
                                    'initialize' => true,
                                    'url' => Url::to(['/item-sparepart/list-stock']), 
                                    //'params' => ['input-type-1', 'input-type-2'],
                                    'loadingText' => 'Loading source warehouse ...',
                                ]
                            ]);
                            ?>
                        </div>
                        
                        <div class="col-2">
                            <?= $form->field($detail, "[{$i}]qty")->widget(MaskedInput::class,
                                [
                                    'clientOptions' => [
                                        'alias' => 'decimal',
                                        'groupSeparator' => ',',
                                        'digits' => 2,
                                        'autoGroup' => true,
                                        'removeMaskOnSubmit' => true,
                                        'rightAlign' => false,
                                    ],
                                    'options' => [
                                        'class' => 'form-control',
                                    ]
                                ]) ?>
                        </div>
                        <div class="col-3">
                            <?= $form->field($detail, "[{$i}]to_warehouse_id")->widget(Select2::class, [
                                'data' => ArrayHelper::map(\app\models\Warehouse::find()->where(['listed' => 1])->all(), 'id', 'name'),
                                'language' => 'en',
                                'options' => [
                                    'placeholder' => 'Select destination warehouse ...',
                                    'onChange' => 'checkWarehouse($(this))'    
                                ],
                                'pluginOptions' => [
                                    'allowClear' => true,
                                ],
                            ]);
                            ?>
                        </div>
                    </div> <!-- row -->
                </div> <!-- item card-body -->
            </div> <!-- item card -->
            <?php endforeach; ?>
        
        </div> <!-- card-body container-items -->    
    </div> <!-- card -->

It should be Gaharu [From Warehouse] as I saved the data earlier.

What do I miss?

this is my controller for listing the warehouse based on $detail->item_id

public function actionListStock() {
        Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
        $out = [];
        if(isset($_POST['depdrop_parents'])){
            $parents = $_POST['depdrop_parents'];
            if($parents != null){
                $item_id = $parents[0];
                $stocks = Stock::find()->where(['item_id' => $item_id])
                ->leftJoin('item_sparepart', 'item_sparepart.id = stock.item_id')
                ->leftJoin('warehouse','stock.warehouse_id = warehouse.id')
                ->all();

                $selected = null;
                if($item_id != null && count($stocks) > 0) {
                    $selected = '';
                    foreach($stocks as $i=>$stock) {
                        $out[] = ['id' => $stock->warehouse_id, 'name' => $stock->warehouse->name. " [". $stock->qty. "]" ];
                        if($i == 0) {
                            $selected = $stock['warehouse_id'];
                        }
                    }
                    // Shows how you can preselect a value
                    return ['output' => $out, 'selected' => $selected];
                }
            }
        }
        return ['output' => '', 'selected' => ''];
    }