{"version":3,"sources":["jsdelivr-header.js","/npm/react-slickgrid@0.0.1/dist/js/ReactSlickGrid.js"],"names":[],"mappings":"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","file":"/npm/react-slickgrid@0.0.1/dist/js/ReactSlickGrid.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/react-slickgrid@0.0.1/dist/js/ReactSlickGrid.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nvar React = require('react');\nvar DeepDiff = require('deep-diff');\nvar SlickGrid = require('slickgrid/grid');\nvar RemoteModel = require('./utils/RemoteModel');\n\nvar ReactSlickGrid = React.createClass({\n  displayName: 'ReactSlickGrid',\n\n  _loader: null,\n  _slickgrid: null,\n\n  getDefaultProps: function getDefaultProps() {\n    return {\n      id: '',\n      endpoint: undefined,\n      table: undefined,\n      filter: {},\n\n      /** Required for the viewport to be visible **/\n      style: {\n        position: 'absolute',\n        height: '100%',\n        width: '100%'\n      },\n\n      /** Default SlickGrid grid settings **/\n      settings: {\n        explicitInitialization: false,\n        rowHeight: 25,\n        defaultColumnWidth: 80,\n        enableAddRow: false,\n        leaveSpaceForNewRows: false,\n        editable: false,\n        autoEdit: true,\n        enableCellNavigation: true,\n        enableColumnReorder: true,\n        asyncEditorLoading: false,\n        asyncEditorLoadDelay: 100,\n        forceFitColumns: false,\n        enableAsyncPostRender: false,\n        asyncPostRenderDelay: 50,\n        autoHeight: false,\n        editorLock: Slick.GlobalEditorLock,\n        showHeaderRow: false,\n        headerRowHeight: 25,\n        showTopPanel: false,\n        topPanelHeight: 25,\n        formatterFactory: null,\n        editorFactory: null,\n        cellFlashingCssClass: \"flashing\",\n        selectedCellCssClass: \"selected\",\n        multiSelect: true,\n        enableTextSelectionOnCells: false,\n        dataItemColumnValueExtractor: null,\n        fullWidthRows: false,\n        multiColumnSort: false,\n        defaultFormatter: this._defaultFormatter,\n        forceSyncScrolling: false,\n        addNewRowCssClass: \"new-row\"\n      },\n\n      /** Default SlickGrid columns settings **/\n      columnSettings: {\n        name: \"\",\n        resizable: true,\n        sortable: false,\n        minWidth: 30,\n        rerenderOnResize: false,\n        headerCssClass: null,\n        defaultSortAsc: true,\n        focusable: true,\n        selectable: true\n      }\n    };\n  },\n\n  componentDidMount: function componentDidMount() {\n    this._init();\n  },\n\n  componentDidUpdate: function componentDidUpdate() {\n    /** Whenever a new filter object or props are received\n        the grid must request the new records **/\n    this._slickgrid.onViewportChanged.notify();\n  },\n\n  /** Will only update if either the props or state **/\n  shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n    return DeepDiff(nextProps, this.props).length !== 0;\n  },\n\n  _init: function _init() {\n    if (this.props.id) {\n      if (this.props.endpoint) {\n        this._initializeSlickData();\n      } else {\n        this._loader = { data: this.props.data };\n      }\n      this._initializeSlickGrid();\n      this._slickgrid.onViewportChanged.notify();\n    } else {\n      console.warn('ReactSlickGrid requires a unique id to be given as a prop.');\n    }\n  },\n\n  _initializeSlickData: function _initializeSlickData() {\n    this._loader = new RemoteModel();\n    this._loader.setGetParameters(this._getParameters);\n    this._loader.setGetUrl(this._getUrl);\n    this._loader.setReponseItemListName(this.props.responseItem);\n    this._loader.onDataLoaded.subscribe(this._onDataLoaded);\n  },\n\n  _initializeSlickGrid: function _initializeSlickGrid() {\n    var id = '#' + this.props.id;\n    var rows = this._loader.data;\n    var columns = this._generateColumns(this._loader);\n    var options = this.props.settings;\n\n    this._slickgrid = new SlickGrid(id, rows, columns, options);\n    this._slickgrid.onColumnsResized.subscribe(this._onColumnResize);\n    this._slickgrid.onSort.subscribe(this._onSort);\n\n    if (this.props.endpoint) {\n      this._slickgrid.onViewportChanged.subscribe(this._onViewportChange);\n    }\n\n    this._autoResizeGrid();\n  },\n\n  _onSort: function _onSort(event, args) {\n    var sortColumn = args.sortCols[0].sortCol.field;\n    var sortDirection = 'DESC';\n    if (args.sortCols[0].sortAsc) {\n      sortDirection = 'ASC';\n    }\n\n    if (this.props.endpoint) {\n      this._loader.setSort(sortColumn, sortDirection);\n      this._slickgrid.resetActiveCell();\n      this._slickgrid.onViewportChanged.notify();\n    } else {\n      this._loader.data.sort(function (a, b) {\n        var sortVal = 0;\n        if (a[sortColumn] > b[sortColumn]) sortVal = 1;\n        if (a[sortColumn] < b[sortColumn]) sortVal = -1;\n        if (sortDirection === 'DESC') sortVal = sortVal * -1;\n        return sortVal;\n      });\n\n      this._slickgrid.invalidate();\n    }\n\n    this._addSortIndicator(sortDirection);\n  },\n\n  _addSortIndicator: function _addSortIndicator(sortDirection) {\n    this._cleanSortIndicators((function () {\n      if (sortDirection === 'DESC') {\n        $('#' + this.props.id).find('.slick-sort-indicator-desc').html('<i class=\"fa fa-sort-desc\"></i>');\n      } else {\n        $('#' + this.props.id).find('.slick-sort-indicator-asc').html('<i class=\"fa fa-sort-asc\"></i>');\n      }\n    }).bind(this));\n  },\n\n  _cleanSortIndicators: function _cleanSortIndicators(callback) {\n    $('#' + this.props.id).find('.slick-sort-indicator').html('');\n    $('#' + this.props.id).find('.slick-sort-indicator').html('');\n    if (callback) callback();\n  },\n\n  /** Prevents the column to trigger\n      the sort function after resize **/\n  _onColumnResize: function _onColumnResize(event) {\n    event.stopImmediatePropagation();\n    event.stopPropagation();\n    return false;\n  },\n\n  /** Whenever the viewport changes (the user scrolls)\n      the instantiated grid will request more records to render **/\n  _onViewportChange: function _onViewportChange(event, args) {\n    var viewport = this._slickgrid.getViewport();\n    this._loader.ensureData(viewport.top, viewport.bottom);\n  },\n\n  /** Fires whenever the Slick Grid Remote Model\n      finishes fetching data from the endpoint **/\n  _onDataLoaded: function _onDataLoaded(event, args) {\n    if (this._slickgrid.getColumns().length === 0) {\n      this._slickgrid.setColumns(this._generateColumns(this._loader));\n    }\n    this._slickgrid.invalidate();\n  },\n\n  /** Generates columns from the first\n      object of the rows array **/\n  _generateColumns: function _generateColumns(loader) {\n    var columns = [];\n    for (var column in loader.data[0]) {\n      columns.push({\n        id: column,\n        name: column,\n        field: column,\n        width: this.props.settings.defaultColumnWidth,\n        sortable: true\n      });\n    }\n\n    return columns;\n  },\n\n  /** RemoteModel leverages this function\n      to retrieve the endpoint it will be using\n      for fetching new data **/\n  _getUrl: function _getUrl() {\n    return this.props.endpoint;\n  },\n\n  /** POST parameters\n      for the SlickGrid POST request **/\n  _getParameters: function _getParameters(minimum, maximum, limit, sortColumn, sortDirection) {\n    return {\n      table: this.props.table,\n      skip: minimum * limit,\n      limit: (maximum - minimum) * limit + limit,\n      sort: undefined,\n      direction: undefined,\n      filter: this.props.filter\n    };\n  },\n\n  /** Watches over whenever there is a resize change\n      on the element wrapping the Slick Grid and resizes the grid **/\n  _autoResizeGrid: function _autoResizeGrid() {\n    $(window).resize((function (event) {\n      this._slickgrid.resizeCanvas();\n      event.stopPropagation();\n    }).bind(this));\n  },\n\n  _defaultFormatter: function defaultFormatter(row, cell, value, columnDefinition, dataContext) {\n    if (value === null) {\n      return \"\";\n    } else {\n      return (value + \"\").replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n    }\n  },\n\n  render: function render() {\n    return React.createElement('div', { id: this.props.id, style: this.props.style });\n  }\n});\n\nmodule.exports = ReactSlickGrid;"]}