/*! KeyTable 3.0.0 for DataTables
 * Copyright (c) SpryMedia Ltd - datatables.net/license
 */
import DataTable,{util,Dom}from"datatables.net";if(!DataTable||!DataTable.versionCheck("3"))throw"Warning: KeyTable requires DataTables 3 or newer";var namespaceCounter=0,editorNamespaceCounter=0;class KeyTable{constructor(e,t){this.c=util.object.assignDeep({},DataTable.defaults.keys,KeyTable.defaults,t),this.s={dt:new DataTable.Api(e),dtDrawing:!1,enable:!0,focusDraw:!1,waitingForDraw:!1,lastFocus:null,namespace:".keyTable-"+namespaceCounter++,returnSubmit:!1,tabInput:null};t=this.s.dt.settings()[0],e=t.keytable;if(e)return e;(t.keytable=this)._init()}blur(){this._blur()}enable(e){this.s.enable=e}enabled(){return this.s.enable}focus(e,t){this._focus(this.s.dt.cell(e,t),null)}focused(e){var t=this.s.lastFocus;return!!t&&(t=t.cell.index(),e.row===t.row)&&e.column===t.column}_init(){this._tabInput();var s,o=this,i=this.s.dt,e=Dom.s(i.table().node()),n=this.s.namespace,t=!1,l=("static"===e.css("position")&&e.css("position","relative"),Dom.s(i.table().body()).on("click"+n,"th, td",function(e){var t;!1!==o.s.enable&&(t=i.cell(this)).any()&&o._focus(t,null,!1,e)}),Dom.s(document).on("keydown"+n,function(e){t||o.s.dtDrawing?e.preventDefault():o._key(e)}),this.c.blurable&&Dom.s(document).on("mousedown"+n,function(e){e=Dom.s(e.target);e.closest(".dt-search").count()&&o._blur(),e.closest(i.table().container()).count()||e.closest("div.DTE").count()||e.closest("div.editor-datetime").count()||e.closest("div.dt-datetime").count()||e.closest("div.dte-dropdown").count()||e.closest(".DTFC_Cloned").count()||o._blur()}),this.c.editor&&((s=this.c.editor).on("open.keyTableMain",function(e,t){"inline"!==t&&o.s.enable&&(o.enable(!1),s.one("close"+n,function(){o.enable(!0)}))}),this.c.editOnFocus&&i.on("key-focus"+n+" key-refocus"+n,function(e,t,s,n){o._editor(null,n,!0)}),i.on("key"+n,function(e,t,s,n,i){o._editor(s,i,!1)}),Dom.s(i.table().body()).on("dblclick"+n,"th, td",function(e){!1===o.s.enable||!i.cell(this).any()||o.s.lastFocus&&this!==o.s.lastFocus.cell.node()||o._editor(null,e,!0)}),s.on("preSubmit",function(){t=!0}).on("preSubmitCancelled",function(){t=!1}).on("submitComplete",function(){t=!1})),i.on("stateSaveParams"+n,function(e,t,s){s.keyTable=o.s.lastFocus?o.s.lastFocus.cell.index():null}),i.on("column-visibility"+n,function(e){o._tabInput()}),i.on("column-reorder"+n,function(e,t,s){var n,i=o.s.lastFocus;i&&i.cell&&(n=i.relative.column,i.cell[0][0].column=s.mapping.indexOf(n),i.relative.column=s.mapping.indexOf(n))}),i.on("preDraw"+n+" scroller-will-draw"+n,function(e){o.s.dtDrawing=!0}),i.on("draw"+n,function(e){var t,s,n;o.s.dtDrawing=!1,o._tabInput(),o.s.focusDraw||(t=o.s.lastFocus)&&(t=t.relative,s=i.page.info(),n=t.row,0===s.recordsDisplay||n<s.start||n>s.start+s.length||(s.recordsDisplay<=n&&(n=s.recordsDisplay-1),o._focus(n,t.column,!0,e)))}),this.c.clipboard&&this._clipboard(),i.on("destroy"+n,function(){o._blur(!0),i.off(n),Dom.s(i.table().body()).off("click"+n,"th, td").off("dblclick"+n,"th, td"),Dom.s(document).off("mousedown"+n).off("keydown"+n).off("copy"+n).off("paste"+n)}),i.state.loaded());i.one("init",()=>{var e;l&&l.keyTable?(e=i.cell(l.keyTable)).any()&&e.focus():this.c.focus&&i.cell(this.c.focus).focus()})}_blur(e=!1){var t;this.s.enable&&this.s.lastFocus&&(t=this.s.lastFocus.cell,Dom.s(t.node()).classRemove(this.c.className),this.s.lastFocus=null,e||(this._updateFixedColumns(t.index().column),this._emitEvent("key-blur",[this.s.dt,t])))}_clipboard(){var o=this.s.dt,l=this,e=this.s.namespace,t=this.c.clipboard;window.getSelection&&((!0===t||t&&t.copy)&&Dom.s(document).on("copy"+e,function(e){var e=e.originalEvent,t=null==(t=window.getSelection())?void 0:t.toString(),s=l.s.lastFocus;!t&&s&&(e.clipboardData.setData("text/plain",s.cell.render(l.c.clipboardOrthogonal)),e.preventDefault())}),!0===t||t&&t.paste)&&Dom.s(document).on("paste"+e,function(e){var t,e=e.originalEvent,s=l.s.lastFocus,n=document.activeElement,i=l.c.editor;!s||n&&"body"!==n.nodeName.toLowerCase()||(e.preventDefault(),e.clipboardData&&e.clipboardData.getData&&(t=e.clipboardData.getData("text/plain")),i?(n=l._inlineOptions(s.cell.index()),i.inline(n.cell,n.field,n.options).set(i.displayed()[0],t).submit()):(s.cell.data(t),o.draw(!1)))})}_columns(){var e=this.s.dt,t=e.columns(this.c.columns).indexes(),s=[];return e.columns(":visible").every(function(e){-1!==t.indexOf(e)&&s.push(e)}),s}_editor(e,t,s){var n,i,o,l,a,r;!this.s.lastFocus||t&&"draw"===t.type||(i=(n=this).s.dt,o=this.c.editor,l=this.s.lastFocus.cell,a=this.s.namespace+"e"+editorNamespaceCounter++,Dom.s(l.node()).find("div.DTE").count())||null!==e&&(0<=e&&e<=9||11===e||12===e||14<=e&&e<=31||112<=e&&e<=123||127<=e&&e<=159)||(t&&(t.stopPropagation(),13===e)&&t.preventDefault(),r=function(){var e=n._inlineOptions(l.index());o.one("open"+a,function(){o.off("cancelOpen"+a),s||Dom.s("div.DTE_Field_InputControl input, div.DTE_Field_InputControl textarea").get(0).select(),i.keys.enable(s?"tab-only":"navigation-only"),i.on("key-blur.editor",function(e,t,s){"submit"!==o.s.editOpts.onBlur&&o.displayed()&&s.node()===l.node()&&o.submit()}),s&&Dom.s(i.table().container()).classAdd("dtk-focus-alt"),o.on("preSubmitCancelled"+a,function(){setTimeout(function(){n._focus(l,null,!1)},50)}),o.on("submitUnsuccessful"+a,function(){n._focus(l,null,!1)}),o.one("close"+a,function(){i.keys.enable(!0),i.off("key-blur.editor"),o.off(a),Dom.s(i.table().container()).classRemove("dtk-focus-alt"),n.s.returnSubmit&&(n.s.returnSubmit=!1,n._emitEvent("key-return-submit",[i,l]))})}).one("cancelOpen"+a,function(){o.off(a)}).inline(e.cell,e.field,e.options)},13===e?(s=!0,Dom.s(document).one("keyup",function(){r()})):r())}_inlineOptions(e){return this.c.editorOptions?this.c.editorOptions(e):{cell:e,field:void 0,options:void 0}}_emitEvent(e,t){return this.s.dt.trigger(e,t)}_focus(e,t,s,n){var i=this,o=this.s.dt,l=o.page.info(),a=this.s.lastFocus;if(n=n||null,this.s.enable){if("number"!=typeof e){if(!e.any())return;var r=e.index();if(t=r.column,(e=o.rows({filter:"applied",order:"applied"}).indexes().indexOf(r.row))<0)return;l.serverSide&&(e+=l.start)}if(-1!==l.length&&(e<l.start||e>=l.start+l.length))this.s.focusDraw=!0,this.s.waitingForDraw=!0,o.one("draw",function(){i.s.focusDraw=!1,i.s.waitingForDraw=!1,i._focus(e,t,void 0,n)}).page(Math.floor(e/l.length)).draw(!1);else if(null===t||this._columns().includes(t)){l.serverSide&&(e-=l.start);r=o.cells(null,t,{search:"applied",order:"applied"}).flatten(),l=o.cell(r[e]),r=this._emitEvent("key-prefocus",[this.s.dt,l,n||null]);if(-1===r.indexOf(!1)){if(a){if(a.node===l.node())return void this._emitEvent("key-refocus",[this.s.dt,l,n||null]);this._blur()}this._removeOtherFocus();r=Dom.s(l.node()),a=(r.classAdd(this.c.className),null!==t&&this._updateFixedColumns(t),void 0!==s&&!0!==s||(this._scroll(window,document.body,r,"offset"),(a=o.table().body().parentNode)!==o.table().header().parentNode&&(s=a.parentNode,this._scroll(s,s,r,"position"))),o.page.info());this.s.lastFocus={cell:l,node:l.node(),relative:{row:a.start+o.rows({page:"current"}).indexes().indexOf(l.index().row),column:l.index().column}},this._emitEvent("key-focus",[this.s.dt,l,n||null]),o.state.save()}}}}_key(s){var e;if(this.s.waitingForDraw)s.preventDefault();else if(!Dom.s(s.target).closest(".dte-inlineAdd").count()){var t=this.s.enable,n=(this.s.returnSubmit=("navigation-only"===t||"tab-only"===t)&&13===s.keyCode,!0===t||"navigation-only"===t);if(t&&(!(0===s.keyCode||s.ctrlKey||s.metaKey||s.altKey)||s.ctrlKey&&s.altKey)){var i=this.s.lastFocus;if(i)if(this.s.dt.cell(i.node).any()){var o=this,l=this.s.dt,a=!!this.s.dt.settings()[0].scroll.y;if(!this.c.keys||this.c.keys.includes(s.keyCode))switch(s.keyCode){case 9:s.preventDefault(),this._keyAction(function(){o._shift(s,s.shiftKey?"left":"right",!0)});break;case 27:Dom.s(i.node).find("div.DTE").count()||this.c.blurable&&!0===t&&this._blur();break;case 33:case 34:n&&!a&&(s.preventDefault(),this._keyAction(function(){l.page(33===s.keyCode?"previous":"next").draw(!1)}));break;case 35:case 36:n&&(s.preventDefault(),this._keyAction(function(){var e=l.cells({page:"current"}).indexes(),t=o._columns();o._focus(l.cell(e[35===s.keyCode?e.length-1:t[0]]),null,!0,s)}));break;case 37:n&&this._keyAction(function(){o._shift(s,"left")});break;case 38:n&&this._keyAction(function(){o._shift(s,"up")});break;case 39:n&&this._keyAction(function(){o._shift(s,"right")});break;case 40:n&&this._keyAction(function(){o._shift(s,"down")});break;case 113:if(this.c.editor){this._editor(null,s,!0);break}default:!0===t&&this._emitEvent("key",[l,s.keyCode,null==(e=this.s.lastFocus)?void 0:e.cell,s])}}else this.s.lastFocus=null}}}_keyAction(e){var t=this.c.editor;t&&t.mode()&&t.display()?t.submit(e):e()}_removeOtherFocus(){var t=this.s.dt.table().node();DataTable.tables({api:!0}).iterator("table",function(e){this.table().node()!==t&&this.cell.blur()})}_scroll(e,t,s,n){var i=s[n](),o=s.height("outer"),l=s.width("outer"),t=Dom.s(t),e=e===window?Dom.w:Dom.s(e),a=t.scrollTop(),r=t.scrollLeft(),c=e.height(),e=e.width();"position"===n&&(i.top+=parseInt(s.closest("table").css("top"),10)),i.top<a&&i.top+o>a-5&&t.scrollTop(i.top),i.left<r&&t.scrollLeft(i.left),i.top+o>a+c&&i.top<a+c+5&&o<c&&t.scrollTop(i.top+o-c),i.left+l>r+e&&l<e&&t.scrollLeft(i.left+l-e)}_shift(e,t,s){var n,i=this.s.dt,o=i.page.info(),l=o.recordsDisplay,a=this._columns(),r=this.s.lastFocus;r&&(r=r.cell)&&(n=i.rows({filter:"applied",order:"applied"}).indexes().indexOf(r.index().row),o.serverSide&&(n+=o.start),o=n,r=a[n=i.columns(a).indexes().indexOf(r.index().column)],"rtl"===Dom.s(i.table().node()).css("direction")&&("right"===t?t="left":"left"===t&&(t="right")),"right"===t?r=n>=a.length-1?(o++,a[0]):a[n+1]:"left"===t?r=0===n?(o--,a[a.length-1]):a[n-1]:"up"===t?o--:"down"===t&&o++,0<=o&&o<l&&a.includes(r)?(e&&e.preventDefault(),this._focus(o,r,!0,e)):s&&this.c.blurable?this._blur():e&&e.preventDefault())}_tabInput(){var e,s=this,n=this.s.dt,t=(null!==this.c.tabIndex?this.c:n.settings()[0]).tabIndex;-1!=t&&(this.s.tabInput||(e="keytable-focus-capture-"+this.s.namespace.split("-")[1],t=Dom.c("input").attr("id",e).attr("type","text").attr("tabindex",t),(e=Dom.c("div").append(Dom.c("label").attr("for",e).append(t)).css({position:"absolute",height:"1px",width:"0px",overflow:"hidden"})).find("input").on("focus",function(e){var t=n.cell(":eq(0)",s._columns(),{page:"current"});t.any()&&s._focus(t,null,!0,e)}),this.s.tabInput=e),t=this.s.dt.cell(":eq(0)","0:visible",{page:"current",order:"current"}).node())&&Dom.s(t).prepend(this.s.tabInput)}_updateFixedColumns(e){var t,s=this.s.dt,n=s.settings()[0],i=n._fixedColumns;i&&(t=i.s.iLeftColumns,n=n.columns.length-i.s.iRightColumns,e<t||n<=e)&&s.fixedColumns().update()}}KeyTable.defaults={blurable:!0,className:"focus",clipboard:!0,clipboardOrthogonal:"display",columns:"",editor:null,editOnFocus:!1,editorOptions:null,focus:null,keys:null,tabIndex:null},KeyTable.version="3.0.0",DataTable.KeyTable=KeyTable,DataTable.Api.register("cell.blur()",function(){return this.iterator("table",function(e){e.keytable&&e.keytable.blur()})}),DataTable.Api.register("cell().focus()",function(){return this.iterator("cell",function(e,t,s){e.keytable&&e.keytable.focus(t,s)})}),DataTable.Api.register("keys.disable()",function(){return this.iterator("table",function(e){e.keytable&&e.keytable.enable(!1)})}),DataTable.Api.register("keys.enable()",function(t){return this.iterator("table",function(e){e.keytable&&e.keytable.enable(void 0===t||t)})}),DataTable.Api.register("keys.enabled()",function(e){var t=this.context;return!!t.length&&!!t[0].keytable&&t[0].keytable.enabled()}),DataTable.Api.register("keys.move()",function(t){return this.iterator("table",function(e){e.keytable&&e.keytable._shift(null,t,!1)})}),DataTable.ext.selector.cell.push(function(e,t,s){var n=t.focused,i=e.keytable,o=[];if(!i||void 0===n)return s;for(var l=0,a=s.length;l<a;l++)(!0===n&&i.focused(s[l])||!1===n&&!i.focused(s[l]))&&o.push(s[l]);return o}),Dom.s(document).on("preInit.dt.dtk",function(e,t,s){var n,i;"dt"===e.namespace&&(e=t.init.keys,n=DataTable.defaults.keys,e||n)&&(i={},util.is.plainObject(n)&&util.object.assign(i,n),util.is.plainObject(e)&&util.object.assign(i,e),!1!==e)&&new KeyTable(t,i)});export default DataTable;