Slick Gallery KO Binding

HTML

<script src="https://cdn.jsdelivr.net/jquery.slick/1.5.8/slick.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/jquery.slick/1.5.8/slick.css">
<script src="https://cdn.jsdelivr.net/knockout/3.3.0/knockout.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/jquery.slick/1.5.8/slick-theme.css">
<div id="gallery" 
     style="width:400px"
     data-bind="slick: images, 
                slickOptions: {dots:true, initialSlide:4},
                slickIndex: imageIndex">
</div>
<ul data-bind="foreach: images">
    <li data-bind="text:$data"></li>
</ul>
Img index:
<input type=text data-bind="value: imageIndex"/>

JavaScript

var imageUrls = [];
var i = 1;
for (i=1;i<=10;i++)
    imageUrls.push('https://via.placeholder.com/150');

ko.bindingHandlers.slick = (function() {
    var createImageDiv = function(imgUrl) {
        $div = $('<div data-bind="click: function() { prompt()}">');
        $image = $('<img>');
        $image.attr('src',imgUrl);
        $div.append($image);
        return $div;
    };
    
    // Initializes the carousel
    var init = function(element, valueAccessor, allBindingsAccessor) {
        // Clears the div
        console.log($(element));
        $(element).empty();
        // Creates the inner divs with images
        var images = ko.unwrap(valueAccessor());
        if (images) {
        	images.forEach(function(imgUrl) {
                $(element).append(createImageDiv(imgUrl));
            });
        }

        // try to recover slickOptions
        var options = allBindingsAccessor().slickOptions || {};

        // Initialize slick on the div, with provided options
        $(element).slick(options);

        //handle disposal, if KO removes the element
        ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
            $(element).slick('unslick');
        });
        
        // check if there is slickIndex
        var slickIndex = allBindingsAccessor().slickIndex;
        if (slickIndex) {
            $(element).slick('slickGoTo', ko.unwrap(slickIndex));
        }
        // If it's obervable, subscribe to its changes
		if (ko.isObservable(slickIndex)) {
            slickIndex.subscribe(function(idx) {
                 $(element).slick('slickGoTo', idx);
            });
        }
        // It if's writable observable, update when slick current index changes
        if (ko.isWritableObservable(slickIndex)) {
            $(element).on('afterChange', function(evt, slick, pos) {
                slickIndex(pos);
            })
        }
        
        // Check if the array of images is an observable array
        var imagesArray =...