Doesn’t work when changing My working script to Dockable script

Hi i have a working script for after effects,But when i change it to Dockable script,it wont work. Please help me to figure out why? If i take it out of the dock script it is working. i copied this dockable code from goodboy.ninja website.

Here is the code:

(
    function(thisObj) {

buildUI(thisObj);

‍

function buildUI(thisObj) {

var windowName = "Diffrence Checker";

  var myPanel = (thisObj instanceof Panel) ? thisObj : new Window("window", windowName, undefined, {
          resizeable: true
     });

// Dropdown list

var groupOne = myPanel.add("group",undefined,"groupOne");
groupOne.orientation = "row";
groupOne.add("StaticText",undefined,"Main Comp");
var mainDD = groupOne.add("dropdownlist",undefined,compArrayNames);
mainDD.size = [175,25];

var groupTwo = myPanel.add("group",undefined,"groupTwo");
groupTwo.orientation = "row";
groupTwo.add("StaticText",undefined,"Diff File");
var diffDD = groupTwo.add("dropdownlist",undefined,VideoArrayNames);
diffDD.size = [175,25];

// Button code

var createBT = myPanel.add("group",undefined,"createBT");
createBT.orientation = "column";
var mainbutton = createBT.add("button",undefined,"Create");


//myPanel.center();
//myPanel.show();
‍
     myPanel.onResizing = myPanel.onResize = function() {
        this.layout.resize();
     };
     if (myPanel instanceof Window) {
        myPanel.center();
        myPanel.show();
     } else {
        myPanel.layout.layout(true);
        myPanel.layout.resize();
     }

}

// Write your helper functions here
var compArray = [];
var compArrayNames = [];
var VideoArray = [];
var VideoArrayNames = [];

for (var i = 1; i <= app.project.numItems; i++){
    if (app.project.item(i).hasVideo == true && app.project.item(i).file == null) {
        compArray.push (app.project.item(i));
        compArrayNames.push (app.project.item(i).name);
        }
    if (app.project.item(i).hasVideo == true && app.project.item(i).hasAudio== true) {
        VideoArray.push (app.project.item(i));
        VideoArrayNames.push (app.project.item(i).name);
        }
    }

function createCP() {
       app.beginUndoGroup("Editing");
        var comlayer = compArray[mainDD.selection.index];
        var vidlayer = VideoArray[diffDD.selection.index];
        var getcomp = app.project.items.addComp(VideoArrayNames[diffDD.selection.index]+"_DIFF".toString(),1920,1080,1,comlayer.duration,30);
        getcomp.openInViewer();
        addVideofile(comlayer,getcomp);
        addvideotwofile(vidlayer);
        renderQ();
        app.endUndoGroup();
    }

function addVideofile(comlayer) {
    app.project.activeItem.layers.add(comlayer);
    
     
    
    }
function addvideotwofile(vidlayer){
   var newlayer = app.project.activeItem.layers.add(vidlayer);
     newlayer.blendingMode = BlendingMode.DIFFERENCE;
    
    }
function renderQ(){
    
     var Qcomp =app.project.activeItem;
     var Qitem = app.project.renderQueue.items.add(Qcomp);
     }
}
)
(this);

This the final Dockable Code.where is the mistake? please help as i am new to the scripting world.