<commit_before>import { GEOMETRY_COLLECTION_TYPES } from '../core/Constants';
import Class from '../core/Class';
import Eventable from '../core/Eventable';
import JSONAble from '../core/JSONAble';
import Handlerable from '../handler/Handlerable';
import {
    extend,
    isNil,
    isString,
    isNumber,
    isObject,
    mapArrayRecursively,
    flash
} from '../core/util';
import { extendSymbol } from '../core/util/style';
import { convertResourceUrl, getExternalResources } from '../core/util/resource';
import Point from '../geo/Point';
import Coordinate from '../geo/Coordinate';
import Extent from '../geo/Extent';
import Painter from '../renderer/geometry/Painter';
import CollectionPainter from '../renderer/geometry/CollectionPainter';
import Symbolizer from '../renderer/geometry/symbolizers/Symbolizer';
import SpatialReference from '../map/spatial-reference/SpatialReference';

/**
 * @property {Object} options                       - geometry options
 * @property {Boolean} [options.id=null]            - id of the geometry
 * @property {Boolean} [options.visible=true]       - whether the geometry is visible.
 * @property {Boolean} [options.editable=true]      - whether the geometry can be edited.
 * @property {String} [options.cursor=null]         - cursor style when mouseover the geometry, same as the definition in CSS.
 * @property {String} [options.measure=EPSG:4326]   - the measure code for the geometry, defines {@tutorial measureGeometry how it can be measured}.
 * @property {Boolean} [options.draggable=false]    - whether the geometry can be dragged.
 * @property {Boolean} [options.dragShadow=false]   - if true, during geometry dragging, a shadow will be dragged before geometry was moved.
 * @property {Boolean} [options.dragOnAxis=null]    - if set, geometry can only be dragged along the specified axis, possible values: x, y
 * @memberOf Geometry
 * @instance
 */
const options = {
    'id': null,
    'visible': true,
    'editable': true,
    'cursor': null,
    'defaultProjection': 'EPSG:4326' // BAIDU, IDENTITY
};

/**
 * Base class for all the geometries. <br/>
 * It defines common methods that all the geometry classes share. <br>
 * It is abstract and not intended to be instantiated but extended.
 *
 * @category geometry
 * @abstract
 * @extends Class<commit_msg>add zIndex in geometry's comment<commit_after>import { GEOMETRY_COLLECTION_TYPES } from '../core/Constants';
import Class from '../core/Class';
import Eventable from '../core/Eventable';
import JSONAble from '../core/JSONAble';
import Handlerable from '../handler/Handlerable';
import {
    extend,
    isNil,
    isString,
    isNumber,
    isObject,
    mapArrayRecursively,
    flash
} from '../core/util';
import { extendSymbol } from '../core/util/style';
import { convertResourceUrl, getExternalResources } from '../core/util/resource';
import Point from '../geo/Point';
import Coordinate from '../geo/Coordinate';
import Extent from '../geo/Extent';
import Painter from '../renderer/geometry/Painter';
import CollectionPainter from '../renderer/geometry/CollectionPainter';
import Symbolizer from '../renderer/geometry/symbolizers/Symbolizer';
import SpatialReference from '../map/spatial-reference/SpatialReference';

/**
 * @property {Object} options                       - geometry options
 * @property {Boolean} [options.id=null]            - id of the geometry
 * @property {Boolean} [options.visible=true]       - whether the geometry is visible.
 * @property {Boolean} [options.editable=true]      - whether the geometry can be edited.
 * @property {String} [options.cursor=null]         - cursor style when mouseover the geometry, same as the definition in CSS.
 * @property {String} [options.measure=EPSG:4326]   - the measure code for the geometry, defines {@tutorial measureGeometry how it can be measured}.
 * @property {Boolean} [options.draggable=false]    - whether the geometry can be dragged.
 * @property {Boolean} [options.dragShadow=false]   - if true, during geometry dragging, a shadow will be dragged before geometry was moved.
 * @property {Boolean} [options.dragOnAxis=null]    - if set, geometry can only be dragged along the specified axis, possible values: x, y
 * @property {Number}  [options.zIndex=undefined]   - geometry's initial zIndex
 * @memberOf Geometry
 * @instance
 */
const options = {
    'id': null,
    'visible': true,
    'editable': true,
    'cursor': null,
    'defaultProjection': 'EPSG:4326' // BAIDU, IDENTITY
};

/**
 * Base class for all the geometries. <br/>
 * It defines common methods that all the geometry classes share. <br>
 * It is abstract and not intended to be instantiated but extended.
 *
 * @category geometry
 * @abstract
 * @extends Class
{'fraction_non_alphanumeric': 0.12275512360025354, 'fraction_numerical': 0.003380519754912318, 'mean_word_length': 3.6917740336967295, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6310964', 'n_tokens_mistral': 1320, 'n_tokens_neox': 1293, 'n_words': 455}