VaKeR CYBER ARMY
Logo of a company Server : Apache/2.4.41 (Ubuntu)
System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64
User : www-data ( 33)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Directory :  /var/www/html/libs/absol-acomp/out/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/html/libs/absol-acomp/out/LocationInput.js.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>JSDoc: Source: LocationInput.js</title>

    <script src="scripts/prettify/prettify.js"> </script>
    <script src="scripts/prettify/lang-css.js"> </script>
    <!--[if lt IE 9]>
      <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->
    <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
    <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>

<body>

<div id="main">

    <h1 class="page-title">Source: LocationInput.js</h1>

    



    
    <section>
        <article>
            <pre class="prettyprint source linenums"><code>import ACore, { $, _ } from "../ACore";
import LocationPicker from "./LocationPicker";
import '../css/locationinput.css';
import { hitElement } from "absol/src/HTML5/EventEmitter";
import { isRealNumber } from "./utils";
import BrowserDetector from "absol/src/Detector/BrowserDetector";

function LocationInput() {
    this.$text = $('input', this)
        .on('change', this.eventHandler.textChange);
    this.$iconCtn = $('.as-location-input-icon-ctn', this)
        .on('click', this.eventHandler.clickIcon);


    /***
     * @type {{latitude: number, longitude: number}}
     * @name latLng
     * @memberOf LocationInput#
     */

    /***
     * @type {string}
     * @name value
     * @memberOf LocationInput#
     */
    /***
     * @type {boolean}
     * @name readOnly
     * @memberOf LocationInput#
     */
}

LocationInput.tag = 'LocationInput'.toLowerCase();

LocationInput.render = function () {
    return _({
        class: 'as-location-input',
        extendEvent: ['change'],
        child: [
            { tag: 'input', attr: { type: 'text' }, class: 'as-location-input-text' },
            {
                class: 'as-location-input-icon-ctn',
                child: 'span.mdi.mdi-google-maps'
            }
        ]
    });
};

LocationInput.prototype.share = {
    $modal: null,
    $picker: null,
    $holder: null
};


LocationInput.prototype._preparePicker = function () {
    if (this.share.$picker) return;
    this.share.$picker = _({
        tag: LocationPicker.tag
    });
    this.share.$modal = _({
        tag: 'modal',
        class: 'as-location-input-modal',
        child: {
            class: 'as-location-input-modal-window',
            child: this.share.$picker
        }
    });
    if (BrowserDetector.isMobile) {
        this.share.$modal.addClass('as-mobile');
    }
};

/***
 * @this LocationInput
 * @private
 */
LocationInput.prototype._attachPicker = function () {
    if (this.share.$holder) {
        this.share.$holder._releasePicker();
    }
    this._preparePicker();
    this.share.$holder = this;
    this.$iconCtn.off('click', this.eventHandler.clickIcon);
    document.body.appendChild(this.share.$modal);
    this.share.$picker.on('action', this.eventHandler.pickerAction);
    this.share.$picker.$searchInput.value = '';
    this.share.$picker.readOnly = this.readOnly;
    setTimeout(function () {
        document.addEventListener('click', this.eventHandler.clickOut);
    }.bind(this), 100);
    var value = this.latLng;
    if (value) {
        value = new google.maps.LatLng(value.latitude, value.longitude);
    }
    if (value)
        this.share.$picker.selectLocation(value, true);
    else this.share.$picker.selectPlace(null);
};


LocationInput.prototype._releasePicker = function () {
    if (this.share.$holder !== this) return;
    this.share.$picker.off('action', this.eventHandler.pickerAction);
    this.$iconCtn.on('click', this.eventHandler.clickIcon);
    document.removeEventListener('click', this.eventHandler.clickOut)
    this.share.$modal.remove();
    this.share.$holder = null;
};

/**
 *
 * @type {{}}
 * @memberOf LocationInput#
 */
LocationInput.eventHandler = {};

LocationInput.eventHandler.pickerAction = function (event) {
    if (!this.readOnly &amp;&amp; event.action === 'OK' &amp;&amp; this.share.$picker.selectedPlace &amp;&amp; this.share.$picker.selectedPlace.geometry &amp;&amp; this.share.$picker.selectedPlace.geometry.location) {
        this.$text.value = [this.share.$picker.selectedPlace.geometry.location.lat(), this.share.$picker.selectedPlace.geometry.location.lng()].join(', ');
        this.emit('change', { type: 'change', originalEvent: event.originalEvent || event, target: this }, this);
    }
    this._releasePicker();
};


/***
 * @this LocationInput
 */
LocationInput.eventHandler.clickIcon = function () {
    this._attachPicker();
};

/***
 * @this LocationInput
 * @param event
 */
LocationInput.eventHandler.clickOut = function (event) {
    if (event.target === this.share.$modal)
        this._releasePicker();
};

LocationInput.eventHandler.textChange = function (event) {
    this.emit('change', { type: 'change', originalEvent: event.originalEvent || event, target: this }, this);
};

LocationInput.property = {};

LocationInput.property.value = {
    set: function (value) {
        value = value || null;
        var lat, lng;
        if (typeof value === "string") {
            this.$text.value = value;
            return;
        }
        if (value instanceof Array) {
            lat = value[0];
            lng = value[1];
        }
        else if (value &amp;&amp; typeof value === 'object') {
            if (('latitude' in value) &amp;&amp; ('longitude' in value)) {
                lat = value.latitude;
                lng = value.longitude;
            }
            else if (value instanceof google.maps.LatLng) {
                lat = value.lat();
                lng = value.lng();
            }
        }
        if (isRealNumber(lat) &amp;&amp; isRealNumber(lng)) {
            this.$text.value = [lat, lng].join(', ');
        }
        else {
            this.$text.value = '';
        }
    },
    get: function () {
        var nums = this.$text.value.split(/\s*,\s*/);
        var lat = parseFloat(nums[0]);
        var lng = parseFloat(nums[1]);
        if (isRealNumber(lat) &amp;&amp; isRealNumber(lng)) {
            lat = Math.max(-90, Math.min(90, lat));
            if (lng &lt; 180 &amp;&amp; lng > 180)
                lng = (lng + 180 + 360 * Math.ceil(Math.abs(lng) / 360 + 2)) % 360 - 180;
            return [lat, lng].join(', ');
        }
        else {
            return '';
        }
    }
};

LocationInput.property.latLng = {
    get: function () {
        var nums = this.$text.value.split(/\s*,\s*/);
        var lat = parseFloat(nums[0]);
        var lng = parseFloat(nums[1]);
        if (isRealNumber(lat) &amp;&amp; isRealNumber(lng)) {
            lat = Math.max(-90, Math.min(90, lat));
            if (lng &lt; 180 &amp;&amp; lng > 180)
                lng = (lng + 180 + 360 * Math.ceil(Math.abs(lng) / 360 + 2)) % 360 - 180;
            return { latitude: lat, longitude: lng };
        }
        else {
            return null;
        }
    }
};

LocationInput.property.readOnly = {
    set: function (value) {
        if (value) {
            this.addClass('as-read-only');
        }
        else {
            this.removeClass('as-read-only');
        }
        this.$text.readOnly = !!value;
    },
    get: function () {
        return this.hasClass('as-read-only');
    }
};

LocationInput.property.disabled = {
    set: function (value) {
        if (value) {
            this.addClass('as-disabled');
        }
        else {
            this.removeClass('as-disabled');
        }
        this.$text.disabled = !!value;
    },
    get: function () {
        return this.hasClass('as-disabled');
    }
};

ACore.install(LocationInput);

export default LocationInput;</code></pre>
        </article>
    </section>




</div>

<nav>
    <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="CalendarInput.html">CalendarInput</a></li><li><a href="CandyBoxButton.html">CandyBoxButton</a></li><li><a href="ChromeCalendar.html">ChromeCalendar</a></li><li><a href="CircleSectionLabel.html">CircleSectionLabel</a></li><li><a href="Cluster.html">Cluster</a></li><li><a href="ClusterIconInfo.html">ClusterIconInfo</a></li><li><a href="ClusterIconStyle.html">ClusterIconStyle</a></li><li><a href="ContextCaptor.html">ContextCaptor</a></li><li><a href="DateInput.html">DateInput</a></li><li><a href="DateInput2.html">DateInput2</a></li><li><a href="DropPanel.html">DropPanel</a></li><li><a href="DropPanelStack.html">DropPanelStack</a></li><li><a href="FlexiconButton.html">FlexiconButton</a></li><li><a href="MarkerClusterer.html">MarkerClusterer</a></li><li><a href="MarkerClustererOptions.html">MarkerClustererOptions</a></li><li><a href="SearchTextInput.html">SearchTextInput</a></li><li><a href="Sprite.html">Sprite</a></li><li><a href="Time24Input.html">Time24Input</a></li></ul><h3>Events</h3><ul><li><a href="MarkerClusterer.html#event:click">click</a></li><li><a href="MarkerClusterer.html#event:clusteringbegin">clusteringbegin</a></li><li><a href="MarkerClusterer.html#event:clusteringend">clusteringend</a></li><li><a href="MarkerClusterer.html#event:mouseout">mouseout</a></li><li><a href="MarkerClusterer.html#event:mouseover">mouseover</a></li></ul><h3>Global</h3><ul><li><a href="global.html#$windowTitleText">$windowTitleText</a></li><li><a href="global.html#AddIcon">AddIcon</a></li><li><a href="global.html#calcMinHMTime">calcMinHMTime</a></li><li><a href="global.html#cleanMenuItemProperty">cleanMenuItemProperty</a></li><li><a href="global.html#preventNotNumberInput">preventNotNumberInput</a></li><li><a href="global.html#vScrollIntoView">vScrollIntoView</a></li></ul>
</nav>

<br class="clear">

<footer>
    Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.0</a> on Wed Jan 04 2023 18:18:58 GMT+0700 (Indochina Time)
</footer>

<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

VaKeR 2022