jb-core 0.0.4 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,30 @@
1
1
  # jb-core
2
2
 
3
- core modules of jb-design system
3
+ core modules of jb-design system mostly contain functions that help you manage your web-components & tools to connect them to ReactJS components.
4
+
5
+ ## js modules
6
+
7
+ ### listenAndSilentEvent
8
+
9
+ this function listen to event in the capture phase and stop it's propagation and call your handler so you will be the only one who capture this event used for event forwarding (transformation) in web-components.
10
+
11
+ ```js
12
+ listenAndSilentEvent(inputDom, 'keyup', yourOnKeyUpHandler);
13
+ listenAndSilentEvent(inputDom, 'keyup', yourOnKeyUpHandler,{passive:true});
14
+ ```
15
+
16
+ ### create events
17
+
18
+ these functions will create events base on existing event objects used mostly for event forwarding.
19
+
20
+ ```ts
21
+ #onInputInput(e:InputEvent){
22
+ const event = createInputEvent('input', e, { cancelable: false });
23
+ this.dispatchEvent(event);
24
+ }
25
+
26
+ ```
27
+ we also have `createKeyboardEvent`, `createInputEvent`, `createFocusEvent`.
4
28
 
5
29
  ## React modules:
6
30
 
@@ -14,4 +38,4 @@ import {useEvent} from 'jb-core/react';
14
38
  useEvent(ref,'event',props.onEvent);
15
39
  //for example
16
40
  useEvent(ref,'change',props.onChange);
17
- ```
41
+ ```
package/dist/index.cjs.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";exports.createFocusEvent=function(e,t,a){const c={bubbles:t.bubbles,cancelable:t.cancelable,composed:t.composed,detail:t.detail,view:t.view,which:t.which,relatedTarget:t.relatedTarget,...a};return new FocusEvent(e,c)},exports.createInputEvent=function(e,t,a){const c={bubbles:t.bubbles,cancelable:t.cancelable,composed:t.composed,detail:t.detail,isComposing:t.isComposing,view:t.view,which:t.which,data:t.data,dataTransfer:t.dataTransfer,inputType:t.inputType,targetRanges:"function"==typeof t.getTargetRanges()?t.getTargetRanges():[],...a};return new InputEvent(e,c)},exports.createKeyboardEvent=function(e,t,a){const c={altKey:t.altKey,bubbles:t.bubbles,cancelable:t.cancelable,code:t.code,composed:t.composed,ctrlKey:t.ctrlKey,detail:t.detail,isComposing:t.isComposing,key:t.key,location:t.location,metaKey:t.metaKey,repeat:t.repeat,shiftKey:t.shiftKey,view:t.view,charCode:t.charCode,keyCode:t.keyCode,which:t.which,...a};return new KeyboardEvent(e,c)};
1
+ "use strict";exports.createFocusEvent=function(e,t,n){const o={bubbles:t.bubbles,cancelable:t.cancelable,composed:t.composed,detail:t.detail,view:t.view,which:t.which,relatedTarget:t.relatedTarget,...n};return new FocusEvent(e,o)},exports.createInputEvent=function(e,t,n){const o={bubbles:t.bubbles,cancelable:t.cancelable,composed:t.composed,detail:t.detail,isComposing:t.isComposing,view:t.view,which:t.which,data:t.data,dataTransfer:t.dataTransfer,inputType:t.inputType,targetRanges:"function"==typeof t.getTargetRanges()?t.getTargetRanges():[],...n};return new InputEvent(e,o)},exports.createKeyboardEvent=function(e,t,n){const o={altKey:t.altKey,bubbles:t.bubbles,cancelable:t.cancelable,code:t.code,composed:t.composed,ctrlKey:t.ctrlKey,detail:t.detail,isComposing:t.isComposing,key:t.key,location:t.location,metaKey:t.metaKey,repeat:t.repeat,shiftKey:t.shiftKey,view:t.view,charCode:t.charCode,keyCode:t.keyCode,which:t.which,...n};return new KeyboardEvent(e,o)},exports.enToFaDigits=function(e){return"string"!=typeof e&&isNaN(e)?"":e.toString().replace(/[0-9]/g,(function(e){return String.fromCharCode(e.charCodeAt(0)+1728)}))},exports.faToEnDigits=function(e){return"string"!=typeof e?"":e.replace(/[۰-۹]/g,(function(e){return String.fromCharCode(e.charCodeAt(0)-1728)}))},exports.isMobile=()=>/Mobi/i.test(window.navigator.userAgent),exports.listenAndSilentEvent=function(e,t,n,o={}){document.addEventListener(t,(t=>{t.composedPath().includes(e)&&(t.stopPropagation(),t.stopImmediatePropagation(),n(t))}),{capture:!0,...o})};
2
2
  //# sourceMappingURL=index.cjs.js.map
Binary file
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../lib/events.ts"],"sourcesContent":["/**\r\n * add type to event target for easier access to target\r\n */\r\nexport type EventTypeWithTarget<TEvent,TTarget> = TEvent & {\r\n target: TTarget;\r\n};\r\n/**\r\n * create a keyboardEvent based on `e` value and replace them with initObj\r\n */\r\nexport function createKeyboardEvent(eventName:string,e:KeyboardEvent,initObj:KeyboardEventInit){\r\n const initialObject: KeyboardEventInit = {\r\n altKey:e.altKey,\r\n bubbles:e.bubbles,\r\n cancelable:e.cancelable,\r\n code:e.code,\r\n composed:e.composed,\r\n ctrlKey:e.ctrlKey,\r\n detail:e.detail,\r\n isComposing:e.isComposing,\r\n key:e.key,\r\n location:e.location,\r\n metaKey:e.metaKey,\r\n repeat:e.repeat,\r\n shiftKey:e.shiftKey,\r\n view:e.view,\r\n charCode:e.charCode,\r\n keyCode:e.keyCode,\r\n which:e.which,\r\n ...initObj \r\n };\r\n const event = new KeyboardEvent(eventName, initialObject);\r\n return event;\r\n}\r\n/**\r\n * create a InputEvent based on `e` value and replace them with initObj\r\n */\r\nexport function createInputEvent(eventName:string,e:InputEvent,initObj:InputEventInit){\r\n const initialObject: InputEventInit = {\r\n bubbles:e.bubbles,\r\n cancelable:e.cancelable,\r\n composed:e.composed,\r\n detail:e.detail,\r\n isComposing:e.isComposing,\r\n view:e.view,\r\n which:e.which,\r\n data:e.data,\r\n dataTransfer:e.dataTransfer,\r\n inputType:e.inputType,\r\n targetRanges: typeof e.getTargetRanges() == \"function\"?e.getTargetRanges():[],\r\n ...initObj \r\n };\r\n const event = new InputEvent(eventName, initialObject);\r\n return event;\r\n}\r\n\r\n/**\r\n * create a InputEvent based on `e` value and replace them with initObj\r\n */\r\nexport function createFocusEvent(eventName:string,e:FocusEvent,initObj:FocusEventInit){\r\n const initialObject: FocusEventInit = {\r\n bubbles:e.bubbles,\r\n cancelable:e.cancelable,\r\n composed:e.composed,\r\n detail:e.detail,\r\n view:e.view,\r\n which:e.which,\r\n relatedTarget:e.relatedTarget,\r\n ...initObj \r\n };\r\n const event = new FocusEvent(eventName, initialObject);\r\n return event;\r\n}"],"names":["eventName","e","initObj","initialObject","bubbles","cancelable","composed","detail","view","which","relatedTarget","FocusEvent","isComposing","data","dataTransfer","inputType","targetRanges","getTargetRanges","InputEvent","altKey","code","ctrlKey","key","location","metaKey","repeat","shiftKey","charCode","keyCode","KeyboardEvent"],"mappings":"+CA0DiCA,EAAiBC,EAAaC,GAC7D,MAAMC,EAAgC,CACpCC,QAAQH,EAAEG,QACVC,WAAWJ,EAAEI,WACbC,SAASL,EAAEK,SACXC,OAAON,EAAEM,OACTC,KAAKP,EAAEO,KACPC,MAAMR,EAAEQ,MACRC,cAAcT,EAAES,iBACbR,GAGL,OADc,IAAIS,WAAWX,EAAWG,EAE1C,oCAnCiCH,EAAiBC,EAAaC,GAC7D,MAAMC,EAAgC,CACpCC,QAAQH,EAAEG,QACVC,WAAWJ,EAAEI,WACbC,SAASL,EAAEK,SACXC,OAAON,EAAEM,OACTK,YAAYX,EAAEW,YACdJ,KAAKP,EAAEO,KACPC,MAAMR,EAAEQ,MACRI,KAAKZ,EAAEY,KACPC,aAAab,EAAEa,aACfC,UAAUd,EAAEc,UACZC,aAA4C,mBAAvBf,EAAEgB,kBAAgChB,EAAEgB,kBAAkB,MACxEf,GAGL,OADc,IAAIgB,WAAWlB,EAAWG,EAE1C,uCA5CoCH,EAAiBC,EAAgBC,GACnE,MAAMC,EAAmC,CACvCgB,OAAOlB,EAAEkB,OACTf,QAAQH,EAAEG,QACVC,WAAWJ,EAAEI,WACbe,KAAKnB,EAAEmB,KACPd,SAASL,EAAEK,SACXe,QAAQpB,EAAEoB,QACVd,OAAON,EAAEM,OACTK,YAAYX,EAAEW,YACdU,IAAIrB,EAAEqB,IACNC,SAAStB,EAAEsB,SACXC,QAAQvB,EAAEuB,QACVC,OAAOxB,EAAEwB,OACTC,SAASzB,EAAEyB,SACXlB,KAAKP,EAAEO,KACPmB,SAAS1B,EAAE0B,SACXC,QAAQ3B,EAAE2B,QACVnB,MAAMR,EAAEQ,SACLP,GAGL,OADc,IAAI2B,cAAc7B,EAAWG,EAE7C"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../lib/events.ts","../lib/persian-tools.ts","../lib/device-detection.ts"],"sourcesContent":["/**\r\n * add type to event target for easier access to target\r\n */\r\nexport type EventTypeWithTarget<TEvent, TTarget> = TEvent & {\r\n target: TTarget;\r\n};\r\n/**\r\n * this function will stop event from propagate even in capturing phase and will call handler only if event target is the element\r\n */\r\nexport function listenAndSilentEvent<TEvent extends Event, TTarget>(element: TTarget, eventName: string, handler: (e:TEvent) => void, options: AddEventListenerOptions = {}) {\r\n document.addEventListener(eventName, (e: TEvent) => {\r\n if (e.composedPath().includes(element as unknown as EventTarget)) {\r\n e.stopPropagation();\r\n e.stopImmediatePropagation();\r\n handler(e);\r\n }\r\n },{capture:true,...options});\r\n}\r\n/**\r\n * create a keyboardEvent based on `e` value and replace them with initObj\r\n */\r\nexport function createKeyboardEvent(eventName: string, e: KeyboardEvent, initObj: KeyboardEventInit) {\r\n const initialObject: KeyboardEventInit = {\r\n altKey: e.altKey,\r\n bubbles: e.bubbles,\r\n cancelable: e.cancelable,\r\n code: e.code,\r\n composed: e.composed,\r\n ctrlKey: e.ctrlKey,\r\n detail: e.detail,\r\n isComposing: e.isComposing,\r\n key: e.key,\r\n location: e.location,\r\n metaKey: e.metaKey,\r\n repeat: e.repeat,\r\n shiftKey: e.shiftKey,\r\n view: e.view,\r\n charCode: e.charCode,\r\n keyCode: e.keyCode,\r\n which: e.which,\r\n ...initObj\r\n };\r\n const event = new KeyboardEvent(eventName, initialObject);\r\n return event;\r\n}\r\n/**\r\n * create a InputEvent based on `e` value and replace them with initObj\r\n */\r\nexport function createInputEvent(eventName: string, e: InputEvent, initObj: InputEventInit) {\r\n const initialObject: InputEventInit = {\r\n bubbles: e.bubbles,\r\n cancelable: e.cancelable,\r\n composed: e.composed,\r\n detail: e.detail,\r\n isComposing: e.isComposing,\r\n view: e.view,\r\n which: e.which,\r\n data: e.data,\r\n dataTransfer: e.dataTransfer,\r\n inputType: e.inputType,\r\n targetRanges: typeof e.getTargetRanges() == \"function\" ? e.getTargetRanges() : [],\r\n ...initObj\r\n };\r\n const event = new InputEvent(eventName, initialObject);\r\n return event;\r\n}\r\n\r\n/**\r\n * create a InputEvent based on `e` value and replace them with initObj\r\n */\r\nexport function createFocusEvent(eventName: string, e: FocusEvent, initObj: FocusEventInit) {\r\n const initialObject: FocusEventInit = {\r\n bubbles: e.bubbles,\r\n cancelable: e.cancelable,\r\n composed: e.composed,\r\n detail: e.detail,\r\n view: e.view,\r\n which: e.which,\r\n relatedTarget: e.relatedTarget,\r\n ...initObj\r\n };\r\n const event = new FocusEvent(eventName, initialObject);\r\n return event;\r\n}","function faToEnDigits(input:string | number):string{\r\n if (typeof input !== \"string\"){\r\n return '';\r\n }\r\n const regex = /[۰-۹]/g;\r\n const result = input.replace(regex, function (w) {\r\n return String.fromCharCode(w.charCodeAt(0) - 1728);\r\n }\r\n );\r\n return result;\r\n}\r\n\r\nfunction enToFaDigits(input:string | number):string{\r\n if (typeof input !== \"string\" && isNaN(input)){\r\n return '';\r\n }\r\n const regex = /[0-9]/g;\r\n const result = input.toString().replace(regex, function (w) {\r\n return String.fromCharCode(w.charCodeAt(0) + 1728);\r\n }\r\n );\r\n return result;\r\n}\r\nexport {enToFaDigits, faToEnDigits};","export const isMobile = ()=>{\r\n return /Mobi/i.test(window.navigator.userAgent);\r\n};"],"names":["eventName","e","initObj","initialObject","bubbles","cancelable","composed","detail","view","which","relatedTarget","FocusEvent","isComposing","data","dataTransfer","inputType","targetRanges","getTargetRanges","InputEvent","altKey","code","ctrlKey","key","location","metaKey","repeat","shiftKey","charCode","keyCode","KeyboardEvent","input","isNaN","toString","replace","w","String","fromCharCode","charCodeAt","test","window","navigator","userAgent","element","handler","options","document","addEventListener","composedPath","includes","stopPropagation","stopImmediatePropagation","capture"],"mappings":"+CAsEiCA,EAAmBC,EAAeC,GACjE,MAAMC,EAAgC,CACpCC,QAASH,EAAEG,QACXC,WAAYJ,EAAEI,WACdC,SAAUL,EAAEK,SACZC,OAAQN,EAAEM,OACVC,KAAMP,EAAEO,KACRC,MAAOR,EAAEQ,MACTC,cAAeT,EAAES,iBACdR,GAGL,OADc,IAAIS,WAAWX,EAAWG,EAE1C,oCAnCiCH,EAAmBC,EAAeC,GACjE,MAAMC,EAAgC,CACpCC,QAASH,EAAEG,QACXC,WAAYJ,EAAEI,WACdC,SAAUL,EAAEK,SACZC,OAAQN,EAAEM,OACVK,YAAaX,EAAEW,YACfJ,KAAMP,EAAEO,KACRC,MAAOR,EAAEQ,MACTI,KAAMZ,EAAEY,KACRC,aAAcb,EAAEa,aAChBC,UAAWd,EAAEc,UACbC,aAA4C,mBAAvBf,EAAEgB,kBAAkChB,EAAEgB,kBAAoB,MAC5Ef,GAGL,OADc,IAAIgB,WAAWlB,EAAWG,EAE1C,uCA5CoCH,EAAmBC,EAAkBC,GACvE,MAAMC,EAAmC,CACvCgB,OAAQlB,EAAEkB,OACVf,QAASH,EAAEG,QACXC,WAAYJ,EAAEI,WACde,KAAMnB,EAAEmB,KACRd,SAAUL,EAAEK,SACZe,QAASpB,EAAEoB,QACXd,OAAQN,EAAEM,OACVK,YAAaX,EAAEW,YACfU,IAAKrB,EAAEqB,IACPC,SAAUtB,EAAEsB,SACZC,QAASvB,EAAEuB,QACXC,OAAQxB,EAAEwB,OACVC,SAAUzB,EAAEyB,SACZlB,KAAMP,EAAEO,KACRmB,SAAU1B,EAAE0B,SACZC,QAAS3B,EAAE2B,QACXnB,MAAOR,EAAEQ,SACNP,GAGL,OADc,IAAI2B,cAAc7B,EAAWG,EAE7C,uBChCA,SAAsB2B,GACpB,MAAqB,iBAAVA,GAAsBC,MAAMD,GAC9B,GAGMA,EAAME,WAAWC,QADlB,UACiC,SAAUC,GACvD,OAAOC,OAAOC,aAAaF,EAAEG,WAAW,GAAK,KAC/C,GAGF,uBAtBA,SAAsBP,GACpB,MAAqB,iBAAVA,EACF,GAGMA,EAAMG,QADP,UACsB,SAAUC,GAC5C,OAAOC,OAAOC,aAAaF,EAAEG,WAAW,GAAK,KAC/C,GAGF,mBCVwB,IACf,QAAQC,KAAKC,OAAOC,UAAUC,wCFQjC,SAA8DC,EAAkB1C,EAAmB2C,EAA6BC,EAAmC,CAAA,GACvKC,SAASC,iBAAiB9C,GAAYC,IAChCA,EAAE8C,eAAeC,SAASN,KAC5BzC,EAAEgD,kBACFhD,EAAEiD,2BACFP,EAAQ1C,GACT,GACD,CAACkD,SAAQ,KAAQP,GACrB"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- function e(e,t,a){const o={altKey:t.altKey,bubbles:t.bubbles,cancelable:t.cancelable,code:t.code,composed:t.composed,ctrlKey:t.ctrlKey,detail:t.detail,isComposing:t.isComposing,key:t.key,location:t.location,metaKey:t.metaKey,repeat:t.repeat,shiftKey:t.shiftKey,view:t.view,charCode:t.charCode,keyCode:t.keyCode,which:t.which,...a};return new KeyboardEvent(e,o)}function t(e,t,a){const o={bubbles:t.bubbles,cancelable:t.cancelable,composed:t.composed,detail:t.detail,isComposing:t.isComposing,view:t.view,which:t.which,data:t.data,dataTransfer:t.dataTransfer,inputType:t.inputType,targetRanges:"function"==typeof t.getTargetRanges()?t.getTargetRanges():[],...a};return new InputEvent(e,o)}function a(e,t,a){const o={bubbles:t.bubbles,cancelable:t.cancelable,composed:t.composed,detail:t.detail,view:t.view,which:t.which,relatedTarget:t.relatedTarget,...a};return new FocusEvent(e,o)}export{a as createFocusEvent,t as createInputEvent,e as createKeyboardEvent};
1
+ function e(e,t,n,o={}){document.addEventListener(t,(t=>{t.composedPath().includes(e)&&(t.stopPropagation(),t.stopImmediatePropagation(),n(t))}),{capture:!0,...o})}function t(e,t,n){const o={altKey:t.altKey,bubbles:t.bubbles,cancelable:t.cancelable,code:t.code,composed:t.composed,ctrlKey:t.ctrlKey,detail:t.detail,isComposing:t.isComposing,key:t.key,location:t.location,metaKey:t.metaKey,repeat:t.repeat,shiftKey:t.shiftKey,view:t.view,charCode:t.charCode,keyCode:t.keyCode,which:t.which,...n};return new KeyboardEvent(e,o)}function n(e,t,n){const o={bubbles:t.bubbles,cancelable:t.cancelable,composed:t.composed,detail:t.detail,isComposing:t.isComposing,view:t.view,which:t.which,data:t.data,dataTransfer:t.dataTransfer,inputType:t.inputType,targetRanges:"function"==typeof t.getTargetRanges()?t.getTargetRanges():[],...n};return new InputEvent(e,o)}function o(e,t,n){const o={bubbles:t.bubbles,cancelable:t.cancelable,composed:t.composed,detail:t.detail,view:t.view,which:t.which,relatedTarget:t.relatedTarget,...n};return new FocusEvent(e,o)}const a=()=>/Mobi/i.test(window.navigator.userAgent);function i(e){if("string"!=typeof e)return"";return e.replace(/[۰-۹]/g,(function(e){return String.fromCharCode(e.charCodeAt(0)-1728)}))}function r(e){if("string"!=typeof e&&isNaN(e))return"";return e.toString().replace(/[0-9]/g,(function(e){return String.fromCharCode(e.charCodeAt(0)+1728)}))}export{o as createFocusEvent,n as createInputEvent,t as createKeyboardEvent,r as enToFaDigits,i as faToEnDigits,a as isMobile,e as listenAndSilentEvent};
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.br CHANGED
Binary file
package/dist/index.js.gz CHANGED
Binary file
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../lib/events.ts"],"sourcesContent":["/**\r\n * add type to event target for easier access to target\r\n */\r\nexport type EventTypeWithTarget<TEvent,TTarget> = TEvent & {\r\n target: TTarget;\r\n};\r\n/**\r\n * create a keyboardEvent based on `e` value and replace them with initObj\r\n */\r\nexport function createKeyboardEvent(eventName:string,e:KeyboardEvent,initObj:KeyboardEventInit){\r\n const initialObject: KeyboardEventInit = {\r\n altKey:e.altKey,\r\n bubbles:e.bubbles,\r\n cancelable:e.cancelable,\r\n code:e.code,\r\n composed:e.composed,\r\n ctrlKey:e.ctrlKey,\r\n detail:e.detail,\r\n isComposing:e.isComposing,\r\n key:e.key,\r\n location:e.location,\r\n metaKey:e.metaKey,\r\n repeat:e.repeat,\r\n shiftKey:e.shiftKey,\r\n view:e.view,\r\n charCode:e.charCode,\r\n keyCode:e.keyCode,\r\n which:e.which,\r\n ...initObj \r\n };\r\n const event = new KeyboardEvent(eventName, initialObject);\r\n return event;\r\n}\r\n/**\r\n * create a InputEvent based on `e` value and replace them with initObj\r\n */\r\nexport function createInputEvent(eventName:string,e:InputEvent,initObj:InputEventInit){\r\n const initialObject: InputEventInit = {\r\n bubbles:e.bubbles,\r\n cancelable:e.cancelable,\r\n composed:e.composed,\r\n detail:e.detail,\r\n isComposing:e.isComposing,\r\n view:e.view,\r\n which:e.which,\r\n data:e.data,\r\n dataTransfer:e.dataTransfer,\r\n inputType:e.inputType,\r\n targetRanges: typeof e.getTargetRanges() == \"function\"?e.getTargetRanges():[],\r\n ...initObj \r\n };\r\n const event = new InputEvent(eventName, initialObject);\r\n return event;\r\n}\r\n\r\n/**\r\n * create a InputEvent based on `e` value and replace them with initObj\r\n */\r\nexport function createFocusEvent(eventName:string,e:FocusEvent,initObj:FocusEventInit){\r\n const initialObject: FocusEventInit = {\r\n bubbles:e.bubbles,\r\n cancelable:e.cancelable,\r\n composed:e.composed,\r\n detail:e.detail,\r\n view:e.view,\r\n which:e.which,\r\n relatedTarget:e.relatedTarget,\r\n ...initObj \r\n };\r\n const event = new FocusEvent(eventName, initialObject);\r\n return event;\r\n}"],"names":["createKeyboardEvent","eventName","e","initObj","initialObject","altKey","bubbles","cancelable","code","composed","ctrlKey","detail","isComposing","key","location","metaKey","repeat","shiftKey","view","charCode","keyCode","which","KeyboardEvent","createInputEvent","data","dataTransfer","inputType","targetRanges","getTargetRanges","InputEvent","createFocusEvent","relatedTarget","FocusEvent"],"mappings":"SASgBA,EAAoBC,EAAiBC,EAAgBC,GACnE,MAAMC,EAAmC,CACvCC,OAAOH,EAAEG,OACTC,QAAQJ,EAAEI,QACVC,WAAWL,EAAEK,WACbC,KAAKN,EAAEM,KACPC,SAASP,EAAEO,SACXC,QAAQR,EAAEQ,QACVC,OAAOT,EAAES,OACTC,YAAYV,EAAEU,YACdC,IAAIX,EAAEW,IACNC,SAASZ,EAAEY,SACXC,QAAQb,EAAEa,QACVC,OAAOd,EAAEc,OACTC,SAASf,EAAEe,SACXC,KAAKhB,EAAEgB,KACPC,SAASjB,EAAEiB,SACXC,QAAQlB,EAAEkB,QACVC,MAAMnB,EAAEmB,SACLlB,GAGL,OADc,IAAImB,cAAcrB,EAAWG,EAE7C,UAIgBmB,EAAiBtB,EAAiBC,EAAaC,GAC7D,MAAMC,EAAgC,CACpCE,QAAQJ,EAAEI,QACVC,WAAWL,EAAEK,WACbE,SAASP,EAAEO,SACXE,OAAOT,EAAES,OACTC,YAAYV,EAAEU,YACdM,KAAKhB,EAAEgB,KACPG,MAAMnB,EAAEmB,MACRG,KAAKtB,EAAEsB,KACPC,aAAavB,EAAEuB,aACfC,UAAUxB,EAAEwB,UACZC,aAA4C,mBAAvBzB,EAAE0B,kBAAgC1B,EAAE0B,kBAAkB,MACxEzB,GAGL,OADc,IAAI0B,WAAW5B,EAAWG,EAE1C,UAKgB0B,EAAiB7B,EAAiBC,EAAaC,GAC7D,MAAMC,EAAgC,CACpCE,QAAQJ,EAAEI,QACVC,WAAWL,EAAEK,WACbE,SAASP,EAAEO,SACXE,OAAOT,EAAES,OACTO,KAAKhB,EAAEgB,KACPG,MAAMnB,EAAEmB,MACRU,cAAc7B,EAAE6B,iBACb5B,GAGL,OADc,IAAI6B,WAAW/B,EAAWG,EAE1C"}
1
+ {"version":3,"file":"index.js","sources":["../lib/events.ts","../lib/device-detection.ts","../lib/persian-tools.ts"],"sourcesContent":["/**\r\n * add type to event target for easier access to target\r\n */\r\nexport type EventTypeWithTarget<TEvent, TTarget> = TEvent & {\r\n target: TTarget;\r\n};\r\n/**\r\n * this function will stop event from propagate even in capturing phase and will call handler only if event target is the element\r\n */\r\nexport function listenAndSilentEvent<TEvent extends Event, TTarget>(element: TTarget, eventName: string, handler: (e:TEvent) => void, options: AddEventListenerOptions = {}) {\r\n document.addEventListener(eventName, (e: TEvent) => {\r\n if (e.composedPath().includes(element as unknown as EventTarget)) {\r\n e.stopPropagation();\r\n e.stopImmediatePropagation();\r\n handler(e);\r\n }\r\n },{capture:true,...options});\r\n}\r\n/**\r\n * create a keyboardEvent based on `e` value and replace them with initObj\r\n */\r\nexport function createKeyboardEvent(eventName: string, e: KeyboardEvent, initObj: KeyboardEventInit) {\r\n const initialObject: KeyboardEventInit = {\r\n altKey: e.altKey,\r\n bubbles: e.bubbles,\r\n cancelable: e.cancelable,\r\n code: e.code,\r\n composed: e.composed,\r\n ctrlKey: e.ctrlKey,\r\n detail: e.detail,\r\n isComposing: e.isComposing,\r\n key: e.key,\r\n location: e.location,\r\n metaKey: e.metaKey,\r\n repeat: e.repeat,\r\n shiftKey: e.shiftKey,\r\n view: e.view,\r\n charCode: e.charCode,\r\n keyCode: e.keyCode,\r\n which: e.which,\r\n ...initObj\r\n };\r\n const event = new KeyboardEvent(eventName, initialObject);\r\n return event;\r\n}\r\n/**\r\n * create a InputEvent based on `e` value and replace them with initObj\r\n */\r\nexport function createInputEvent(eventName: string, e: InputEvent, initObj: InputEventInit) {\r\n const initialObject: InputEventInit = {\r\n bubbles: e.bubbles,\r\n cancelable: e.cancelable,\r\n composed: e.composed,\r\n detail: e.detail,\r\n isComposing: e.isComposing,\r\n view: e.view,\r\n which: e.which,\r\n data: e.data,\r\n dataTransfer: e.dataTransfer,\r\n inputType: e.inputType,\r\n targetRanges: typeof e.getTargetRanges() == \"function\" ? e.getTargetRanges() : [],\r\n ...initObj\r\n };\r\n const event = new InputEvent(eventName, initialObject);\r\n return event;\r\n}\r\n\r\n/**\r\n * create a InputEvent based on `e` value and replace them with initObj\r\n */\r\nexport function createFocusEvent(eventName: string, e: FocusEvent, initObj: FocusEventInit) {\r\n const initialObject: FocusEventInit = {\r\n bubbles: e.bubbles,\r\n cancelable: e.cancelable,\r\n composed: e.composed,\r\n detail: e.detail,\r\n view: e.view,\r\n which: e.which,\r\n relatedTarget: e.relatedTarget,\r\n ...initObj\r\n };\r\n const event = new FocusEvent(eventName, initialObject);\r\n return event;\r\n}","export const isMobile = ()=>{\r\n return /Mobi/i.test(window.navigator.userAgent);\r\n};","function faToEnDigits(input:string | number):string{\r\n if (typeof input !== \"string\"){\r\n return '';\r\n }\r\n const regex = /[۰-۹]/g;\r\n const result = input.replace(regex, function (w) {\r\n return String.fromCharCode(w.charCodeAt(0) - 1728);\r\n }\r\n );\r\n return result;\r\n}\r\n\r\nfunction enToFaDigits(input:string | number):string{\r\n if (typeof input !== \"string\" && isNaN(input)){\r\n return '';\r\n }\r\n const regex = /[0-9]/g;\r\n const result = input.toString().replace(regex, function (w) {\r\n return String.fromCharCode(w.charCodeAt(0) + 1728);\r\n }\r\n );\r\n return result;\r\n}\r\nexport {enToFaDigits, faToEnDigits};"],"names":["listenAndSilentEvent","element","eventName","handler","options","document","addEventListener","e","composedPath","includes","stopPropagation","stopImmediatePropagation","capture","createKeyboardEvent","initObj","initialObject","altKey","bubbles","cancelable","code","composed","ctrlKey","detail","isComposing","key","location","metaKey","repeat","shiftKey","view","charCode","keyCode","which","KeyboardEvent","createInputEvent","data","dataTransfer","inputType","targetRanges","getTargetRanges","InputEvent","createFocusEvent","relatedTarget","FocusEvent","isMobile","test","window","navigator","userAgent","faToEnDigits","input","replace","w","String","fromCharCode","charCodeAt","enToFaDigits","isNaN","toString"],"mappings":"AASM,SAAUA,EAAoDC,EAAkBC,EAAmBC,EAA6BC,EAAmC,CAAA,GACvKC,SAASC,iBAAiBJ,GAAYK,IAChCA,EAAEC,eAAeC,SAASR,KAC5BM,EAAEG,kBACFH,EAAEI,2BACFR,EAAQI,GACT,GACD,CAACK,SAAQ,KAAQR,GACrB,UAIgBS,EAAoBX,EAAmBK,EAAkBO,GACvE,MAAMC,EAAmC,CACvCC,OAAQT,EAAES,OACVC,QAASV,EAAEU,QACXC,WAAYX,EAAEW,WACdC,KAAMZ,EAAEY,KACRC,SAAUb,EAAEa,SACZC,QAASd,EAAEc,QACXC,OAAQf,EAAEe,OACVC,YAAahB,EAAEgB,YACfC,IAAKjB,EAAEiB,IACPC,SAAUlB,EAAEkB,SACZC,QAASnB,EAAEmB,QACXC,OAAQpB,EAAEoB,OACVC,SAAUrB,EAAEqB,SACZC,KAAMtB,EAAEsB,KACRC,SAAUvB,EAAEuB,SACZC,QAASxB,EAAEwB,QACXC,MAAOzB,EAAEyB,SACNlB,GAGL,OADc,IAAImB,cAAc/B,EAAWa,EAE7C,UAIgBmB,EAAiBhC,EAAmBK,EAAeO,GACjE,MAAMC,EAAgC,CACpCE,QAASV,EAAEU,QACXC,WAAYX,EAAEW,WACdE,SAAUb,EAAEa,SACZE,OAAQf,EAAEe,OACVC,YAAahB,EAAEgB,YACfM,KAAMtB,EAAEsB,KACRG,MAAOzB,EAAEyB,MACTG,KAAM5B,EAAE4B,KACRC,aAAc7B,EAAE6B,aAChBC,UAAW9B,EAAE8B,UACbC,aAA4C,mBAAvB/B,EAAEgC,kBAAkChC,EAAEgC,kBAAoB,MAC5EzB,GAGL,OADc,IAAI0B,WAAWtC,EAAWa,EAE1C,UAKgB0B,EAAiBvC,EAAmBK,EAAeO,GACjE,MAAMC,EAAgC,CACpCE,QAASV,EAAEU,QACXC,WAAYX,EAAEW,WACdE,SAAUb,EAAEa,SACZE,OAAQf,EAAEe,OACVO,KAAMtB,EAAEsB,KACRG,MAAOzB,EAAEyB,MACTU,cAAenC,EAAEmC,iBACd5B,GAGL,OADc,IAAI6B,WAAWzC,EAAWa,EAE1C,CCnFO,MAAM6B,EAAW,IACf,QAAQC,KAAKC,OAAOC,UAAUC,WCDvC,SAASC,EAAaC,GACpB,GAAqB,iBAAVA,EACT,MAAO,GAOT,OAJeA,EAAMC,QADP,UACsB,SAAUC,GAC5C,OAAOC,OAAOC,aAAaF,EAAEG,WAAW,GAAK,KAC/C,GAGF,CAEA,SAASC,EAAaN,GACpB,GAAqB,iBAAVA,GAAsBO,MAAMP,GACrC,MAAO,GAOT,OAJeA,EAAMQ,WAAWP,QADlB,UACiC,SAAUC,GACvD,OAAOC,OAAOC,aAAaF,EAAEG,WAAW,GAAK,KAC/C,GAGF"}
package/dist/index.umd.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).JBCore={})}(this,(function(e){"use strict";e.createFocusEvent=function(e,t,n){const o={bubbles:t.bubbles,cancelable:t.cancelable,composed:t.composed,detail:t.detail,view:t.view,which:t.which,relatedTarget:t.relatedTarget,...n};return new FocusEvent(e,o)},e.createInputEvent=function(e,t,n){const o={bubbles:t.bubbles,cancelable:t.cancelable,composed:t.composed,detail:t.detail,isComposing:t.isComposing,view:t.view,which:t.which,data:t.data,dataTransfer:t.dataTransfer,inputType:t.inputType,targetRanges:"function"==typeof t.getTargetRanges()?t.getTargetRanges():[],...n};return new InputEvent(e,o)},e.createKeyboardEvent=function(e,t,n){const o={altKey:t.altKey,bubbles:t.bubbles,cancelable:t.cancelable,code:t.code,composed:t.composed,ctrlKey:t.ctrlKey,detail:t.detail,isComposing:t.isComposing,key:t.key,location:t.location,metaKey:t.metaKey,repeat:t.repeat,shiftKey:t.shiftKey,view:t.view,charCode:t.charCode,keyCode:t.keyCode,which:t.which,...n};return new KeyboardEvent(e,o)}}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).JBCore={})}(this,(function(e){"use strict";e.createFocusEvent=function(e,t,n){const o={bubbles:t.bubbles,cancelable:t.cancelable,composed:t.composed,detail:t.detail,view:t.view,which:t.which,relatedTarget:t.relatedTarget,...n};return new FocusEvent(e,o)},e.createInputEvent=function(e,t,n){const o={bubbles:t.bubbles,cancelable:t.cancelable,composed:t.composed,detail:t.detail,isComposing:t.isComposing,view:t.view,which:t.which,data:t.data,dataTransfer:t.dataTransfer,inputType:t.inputType,targetRanges:"function"==typeof t.getTargetRanges()?t.getTargetRanges():[],...n};return new InputEvent(e,o)},e.createKeyboardEvent=function(e,t,n){const o={altKey:t.altKey,bubbles:t.bubbles,cancelable:t.cancelable,code:t.code,composed:t.composed,ctrlKey:t.ctrlKey,detail:t.detail,isComposing:t.isComposing,key:t.key,location:t.location,metaKey:t.metaKey,repeat:t.repeat,shiftKey:t.shiftKey,view:t.view,charCode:t.charCode,keyCode:t.keyCode,which:t.which,...n};return new KeyboardEvent(e,o)},e.enToFaDigits=function(e){return"string"!=typeof e&&isNaN(e)?"":e.toString().replace(/[0-9]/g,(function(e){return String.fromCharCode(e.charCodeAt(0)+1728)}))},e.faToEnDigits=function(e){return"string"!=typeof e?"":e.replace(/[۰-۹]/g,(function(e){return String.fromCharCode(e.charCodeAt(0)-1728)}))},e.isMobile=()=>/Mobi/i.test(window.navigator.userAgent),e.listenAndSilentEvent=function(e,t,n,o={}){document.addEventListener(t,(t=>{t.composedPath().includes(e)&&(t.stopPropagation(),t.stopImmediatePropagation(),n(t))}),{capture:!0,...o})}}));
2
2
  //# sourceMappingURL=index.umd.js.map
Binary file
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","sources":["../lib/events.ts"],"sourcesContent":["/**\r\n * add type to event target for easier access to target\r\n */\r\nexport type EventTypeWithTarget<TEvent,TTarget> = TEvent & {\r\n target: TTarget;\r\n};\r\n/**\r\n * create a keyboardEvent based on `e` value and replace them with initObj\r\n */\r\nexport function createKeyboardEvent(eventName:string,e:KeyboardEvent,initObj:KeyboardEventInit){\r\n const initialObject: KeyboardEventInit = {\r\n altKey:e.altKey,\r\n bubbles:e.bubbles,\r\n cancelable:e.cancelable,\r\n code:e.code,\r\n composed:e.composed,\r\n ctrlKey:e.ctrlKey,\r\n detail:e.detail,\r\n isComposing:e.isComposing,\r\n key:e.key,\r\n location:e.location,\r\n metaKey:e.metaKey,\r\n repeat:e.repeat,\r\n shiftKey:e.shiftKey,\r\n view:e.view,\r\n charCode:e.charCode,\r\n keyCode:e.keyCode,\r\n which:e.which,\r\n ...initObj \r\n };\r\n const event = new KeyboardEvent(eventName, initialObject);\r\n return event;\r\n}\r\n/**\r\n * create a InputEvent based on `e` value and replace them with initObj\r\n */\r\nexport function createInputEvent(eventName:string,e:InputEvent,initObj:InputEventInit){\r\n const initialObject: InputEventInit = {\r\n bubbles:e.bubbles,\r\n cancelable:e.cancelable,\r\n composed:e.composed,\r\n detail:e.detail,\r\n isComposing:e.isComposing,\r\n view:e.view,\r\n which:e.which,\r\n data:e.data,\r\n dataTransfer:e.dataTransfer,\r\n inputType:e.inputType,\r\n targetRanges: typeof e.getTargetRanges() == \"function\"?e.getTargetRanges():[],\r\n ...initObj \r\n };\r\n const event = new InputEvent(eventName, initialObject);\r\n return event;\r\n}\r\n\r\n/**\r\n * create a InputEvent based on `e` value and replace them with initObj\r\n */\r\nexport function createFocusEvent(eventName:string,e:FocusEvent,initObj:FocusEventInit){\r\n const initialObject: FocusEventInit = {\r\n bubbles:e.bubbles,\r\n cancelable:e.cancelable,\r\n composed:e.composed,\r\n detail:e.detail,\r\n view:e.view,\r\n which:e.which,\r\n relatedTarget:e.relatedTarget,\r\n ...initObj \r\n };\r\n const event = new FocusEvent(eventName, initialObject);\r\n return event;\r\n}"],"names":["eventName","e","initObj","initialObject","bubbles","cancelable","composed","detail","view","which","relatedTarget","FocusEvent","isComposing","data","dataTransfer","inputType","targetRanges","getTargetRanges","InputEvent","altKey","code","ctrlKey","key","location","metaKey","repeat","shiftKey","charCode","keyCode","KeyboardEvent"],"mappings":"0QA0DiCA,EAAiBC,EAAaC,GAC7D,MAAMC,EAAgC,CACpCC,QAAQH,EAAEG,QACVC,WAAWJ,EAAEI,WACbC,SAASL,EAAEK,SACXC,OAAON,EAAEM,OACTC,KAAKP,EAAEO,KACPC,MAAMR,EAAEQ,MACRC,cAAcT,EAAES,iBACbR,GAGL,OADc,IAAIS,WAAWX,EAAWG,EAE1C,8BAnCiCH,EAAiBC,EAAaC,GAC7D,MAAMC,EAAgC,CACpCC,QAAQH,EAAEG,QACVC,WAAWJ,EAAEI,WACbC,SAASL,EAAEK,SACXC,OAAON,EAAEM,OACTK,YAAYX,EAAEW,YACdJ,KAAKP,EAAEO,KACPC,MAAMR,EAAEQ,MACRI,KAAKZ,EAAEY,KACPC,aAAab,EAAEa,aACfC,UAAUd,EAAEc,UACZC,aAA4C,mBAAvBf,EAAEgB,kBAAgChB,EAAEgB,kBAAkB,MACxEf,GAGL,OADc,IAAIgB,WAAWlB,EAAWG,EAE1C,iCA5CoCH,EAAiBC,EAAgBC,GACnE,MAAMC,EAAmC,CACvCgB,OAAOlB,EAAEkB,OACTf,QAAQH,EAAEG,QACVC,WAAWJ,EAAEI,WACbe,KAAKnB,EAAEmB,KACPd,SAASL,EAAEK,SACXe,QAAQpB,EAAEoB,QACVd,OAAON,EAAEM,OACTK,YAAYX,EAAEW,YACdU,IAAIrB,EAAEqB,IACNC,SAAStB,EAAEsB,SACXC,QAAQvB,EAAEuB,QACVC,OAAOxB,EAAEwB,OACTC,SAASzB,EAAEyB,SACXlB,KAAKP,EAAEO,KACPmB,SAAS1B,EAAE0B,SACXC,QAAQ3B,EAAE2B,QACVnB,MAAMR,EAAEQ,SACLP,GAGL,OADc,IAAI2B,cAAc7B,EAAWG,EAE7C"}
1
+ {"version":3,"file":"index.umd.js","sources":["../lib/events.ts","../lib/persian-tools.ts","../lib/device-detection.ts"],"sourcesContent":["/**\r\n * add type to event target for easier access to target\r\n */\r\nexport type EventTypeWithTarget<TEvent, TTarget> = TEvent & {\r\n target: TTarget;\r\n};\r\n/**\r\n * this function will stop event from propagate even in capturing phase and will call handler only if event target is the element\r\n */\r\nexport function listenAndSilentEvent<TEvent extends Event, TTarget>(element: TTarget, eventName: string, handler: (e:TEvent) => void, options: AddEventListenerOptions = {}) {\r\n document.addEventListener(eventName, (e: TEvent) => {\r\n if (e.composedPath().includes(element as unknown as EventTarget)) {\r\n e.stopPropagation();\r\n e.stopImmediatePropagation();\r\n handler(e);\r\n }\r\n },{capture:true,...options});\r\n}\r\n/**\r\n * create a keyboardEvent based on `e` value and replace them with initObj\r\n */\r\nexport function createKeyboardEvent(eventName: string, e: KeyboardEvent, initObj: KeyboardEventInit) {\r\n const initialObject: KeyboardEventInit = {\r\n altKey: e.altKey,\r\n bubbles: e.bubbles,\r\n cancelable: e.cancelable,\r\n code: e.code,\r\n composed: e.composed,\r\n ctrlKey: e.ctrlKey,\r\n detail: e.detail,\r\n isComposing: e.isComposing,\r\n key: e.key,\r\n location: e.location,\r\n metaKey: e.metaKey,\r\n repeat: e.repeat,\r\n shiftKey: e.shiftKey,\r\n view: e.view,\r\n charCode: e.charCode,\r\n keyCode: e.keyCode,\r\n which: e.which,\r\n ...initObj\r\n };\r\n const event = new KeyboardEvent(eventName, initialObject);\r\n return event;\r\n}\r\n/**\r\n * create a InputEvent based on `e` value and replace them with initObj\r\n */\r\nexport function createInputEvent(eventName: string, e: InputEvent, initObj: InputEventInit) {\r\n const initialObject: InputEventInit = {\r\n bubbles: e.bubbles,\r\n cancelable: e.cancelable,\r\n composed: e.composed,\r\n detail: e.detail,\r\n isComposing: e.isComposing,\r\n view: e.view,\r\n which: e.which,\r\n data: e.data,\r\n dataTransfer: e.dataTransfer,\r\n inputType: e.inputType,\r\n targetRanges: typeof e.getTargetRanges() == \"function\" ? e.getTargetRanges() : [],\r\n ...initObj\r\n };\r\n const event = new InputEvent(eventName, initialObject);\r\n return event;\r\n}\r\n\r\n/**\r\n * create a InputEvent based on `e` value and replace them with initObj\r\n */\r\nexport function createFocusEvent(eventName: string, e: FocusEvent, initObj: FocusEventInit) {\r\n const initialObject: FocusEventInit = {\r\n bubbles: e.bubbles,\r\n cancelable: e.cancelable,\r\n composed: e.composed,\r\n detail: e.detail,\r\n view: e.view,\r\n which: e.which,\r\n relatedTarget: e.relatedTarget,\r\n ...initObj\r\n };\r\n const event = new FocusEvent(eventName, initialObject);\r\n return event;\r\n}","function faToEnDigits(input:string | number):string{\r\n if (typeof input !== \"string\"){\r\n return '';\r\n }\r\n const regex = /[۰-۹]/g;\r\n const result = input.replace(regex, function (w) {\r\n return String.fromCharCode(w.charCodeAt(0) - 1728);\r\n }\r\n );\r\n return result;\r\n}\r\n\r\nfunction enToFaDigits(input:string | number):string{\r\n if (typeof input !== \"string\" && isNaN(input)){\r\n return '';\r\n }\r\n const regex = /[0-9]/g;\r\n const result = input.toString().replace(regex, function (w) {\r\n return String.fromCharCode(w.charCodeAt(0) + 1728);\r\n }\r\n );\r\n return result;\r\n}\r\nexport {enToFaDigits, faToEnDigits};","export const isMobile = ()=>{\r\n return /Mobi/i.test(window.navigator.userAgent);\r\n};"],"names":["eventName","e","initObj","initialObject","bubbles","cancelable","composed","detail","view","which","relatedTarget","FocusEvent","isComposing","data","dataTransfer","inputType","targetRanges","getTargetRanges","InputEvent","altKey","code","ctrlKey","key","location","metaKey","repeat","shiftKey","charCode","keyCode","KeyboardEvent","input","isNaN","toString","replace","w","String","fromCharCode","charCodeAt","test","window","navigator","userAgent","element","handler","options","document","addEventListener","composedPath","includes","stopPropagation","stopImmediatePropagation","capture"],"mappings":"0QAsEiCA,EAAmBC,EAAeC,GACjE,MAAMC,EAAgC,CACpCC,QAASH,EAAEG,QACXC,WAAYJ,EAAEI,WACdC,SAAUL,EAAEK,SACZC,OAAQN,EAAEM,OACVC,KAAMP,EAAEO,KACRC,MAAOR,EAAEQ,MACTC,cAAeT,EAAES,iBACdR,GAGL,OADc,IAAIS,WAAWX,EAAWG,EAE1C,8BAnCiCH,EAAmBC,EAAeC,GACjE,MAAMC,EAAgC,CACpCC,QAASH,EAAEG,QACXC,WAAYJ,EAAEI,WACdC,SAAUL,EAAEK,SACZC,OAAQN,EAAEM,OACVK,YAAaX,EAAEW,YACfJ,KAAMP,EAAEO,KACRC,MAAOR,EAAEQ,MACTI,KAAMZ,EAAEY,KACRC,aAAcb,EAAEa,aAChBC,UAAWd,EAAEc,UACbC,aAA4C,mBAAvBf,EAAEgB,kBAAkChB,EAAEgB,kBAAoB,MAC5Ef,GAGL,OADc,IAAIgB,WAAWlB,EAAWG,EAE1C,iCA5CoCH,EAAmBC,EAAkBC,GACvE,MAAMC,EAAmC,CACvCgB,OAAQlB,EAAEkB,OACVf,QAASH,EAAEG,QACXC,WAAYJ,EAAEI,WACde,KAAMnB,EAAEmB,KACRd,SAAUL,EAAEK,SACZe,QAASpB,EAAEoB,QACXd,OAAQN,EAAEM,OACVK,YAAaX,EAAEW,YACfU,IAAKrB,EAAEqB,IACPC,SAAUtB,EAAEsB,SACZC,QAASvB,EAAEuB,QACXC,OAAQxB,EAAEwB,OACVC,SAAUzB,EAAEyB,SACZlB,KAAMP,EAAEO,KACRmB,SAAU1B,EAAE0B,SACZC,QAAS3B,EAAE2B,QACXnB,MAAOR,EAAEQ,SACNP,GAGL,OADc,IAAI2B,cAAc7B,EAAWG,EAE7C,iBChCA,SAAsB2B,GACpB,MAAqB,iBAAVA,GAAsBC,MAAMD,GAC9B,GAGMA,EAAME,WAAWC,QADlB,UACiC,SAAUC,GACvD,OAAOC,OAAOC,aAAaF,EAAEG,WAAW,GAAK,KAC/C,GAGF,iBAtBA,SAAsBP,GACpB,MAAqB,iBAAVA,EACF,GAGMA,EAAMG,QADP,UACsB,SAAUC,GAC5C,OAAOC,OAAOC,aAAaF,EAAEG,WAAW,GAAK,KAC/C,GAGF,aCVwB,IACf,QAAQC,KAAKC,OAAOC,UAAUC,kCFQjC,SAA8DC,EAAkB1C,EAAmB2C,EAA6BC,EAAmC,CAAA,GACvKC,SAASC,iBAAiB9C,GAAYC,IAChCA,EAAE8C,eAAeC,SAASN,KAC5BzC,EAAEgD,kBACFhD,EAAEiD,2BACFP,EAAQ1C,GACT,GACD,CAACkD,SAAQ,KAAQP,GACrB"}
@@ -0,0 +1 @@
1
+ export declare const isMobile: () => boolean;
@@ -4,6 +4,10 @@
4
4
  export type EventTypeWithTarget<TEvent, TTarget> = TEvent & {
5
5
  target: TTarget;
6
6
  };
7
+ /**
8
+ * this function will stop event from propagate even in capturing phase and will call handler only if event target is the element
9
+ */
10
+ export declare function listenAndSilentEvent<TEvent extends Event, TTarget>(element: TTarget, eventName: string, handler: (e: TEvent) => void, options?: AddEventListenerOptions): void;
7
11
  /**
8
12
  * create a keyboardEvent based on `e` value and replace them with initObj
9
13
  */
@@ -1 +1,3 @@
1
1
  export * from "./events.js";
2
+ export * from "./device-detection.js";
3
+ export * from "./persian-tools.js";
@@ -0,0 +1,3 @@
1
+ declare function faToEnDigits(input: string | number): string;
2
+ declare function enToFaDigits(input: string | number): string;
3
+ export { enToFaDigits, faToEnDigits };
@@ -0,0 +1,3 @@
1
+ declare function faToEnDigits(input: string | number): string;
2
+ declare function enToFaDigits(input: string | number): string;
3
+ export { enToFaDigits, faToEnDigits };
@@ -0,0 +1,3 @@
1
+ export const isMobile = ()=>{
2
+ return /Mobi/i.test(window.navigator.userAgent);
3
+ };
package/lib/events.ts CHANGED
@@ -1,32 +1,44 @@
1
1
  /**
2
2
  * add type to event target for easier access to target
3
3
  */
4
- export type EventTypeWithTarget<TEvent,TTarget> = TEvent & {
4
+ export type EventTypeWithTarget<TEvent, TTarget> = TEvent & {
5
5
  target: TTarget;
6
6
  };
7
+ /**
8
+ * this function will stop event from propagate even in capturing phase and will call handler only if event target is the element
9
+ */
10
+ export function listenAndSilentEvent<TEvent extends Event, TTarget>(element: TTarget, eventName: string, handler: (e:TEvent) => void, options: AddEventListenerOptions = {}) {
11
+ document.addEventListener(eventName, (e: TEvent) => {
12
+ if (e.composedPath().includes(element as unknown as EventTarget)) {
13
+ e.stopPropagation();
14
+ e.stopImmediatePropagation();
15
+ handler(e);
16
+ }
17
+ },{capture:true,...options});
18
+ }
7
19
  /**
8
20
  * create a keyboardEvent based on `e` value and replace them with initObj
9
21
  */
10
- export function createKeyboardEvent(eventName:string,e:KeyboardEvent,initObj:KeyboardEventInit){
22
+ export function createKeyboardEvent(eventName: string, e: KeyboardEvent, initObj: KeyboardEventInit) {
11
23
  const initialObject: KeyboardEventInit = {
12
- altKey:e.altKey,
13
- bubbles:e.bubbles,
14
- cancelable:e.cancelable,
15
- code:e.code,
16
- composed:e.composed,
17
- ctrlKey:e.ctrlKey,
18
- detail:e.detail,
19
- isComposing:e.isComposing,
20
- key:e.key,
21
- location:e.location,
22
- metaKey:e.metaKey,
23
- repeat:e.repeat,
24
- shiftKey:e.shiftKey,
25
- view:e.view,
26
- charCode:e.charCode,
27
- keyCode:e.keyCode,
28
- which:e.which,
29
- ...initObj
24
+ altKey: e.altKey,
25
+ bubbles: e.bubbles,
26
+ cancelable: e.cancelable,
27
+ code: e.code,
28
+ composed: e.composed,
29
+ ctrlKey: e.ctrlKey,
30
+ detail: e.detail,
31
+ isComposing: e.isComposing,
32
+ key: e.key,
33
+ location: e.location,
34
+ metaKey: e.metaKey,
35
+ repeat: e.repeat,
36
+ shiftKey: e.shiftKey,
37
+ view: e.view,
38
+ charCode: e.charCode,
39
+ keyCode: e.keyCode,
40
+ which: e.which,
41
+ ...initObj
30
42
  };
31
43
  const event = new KeyboardEvent(eventName, initialObject);
32
44
  return event;
@@ -34,20 +46,20 @@ export function createKeyboardEvent(eventName:string,e:KeyboardEvent,initObj:Key
34
46
  /**
35
47
  * create a InputEvent based on `e` value and replace them with initObj
36
48
  */
37
- export function createInputEvent(eventName:string,e:InputEvent,initObj:InputEventInit){
49
+ export function createInputEvent(eventName: string, e: InputEvent, initObj: InputEventInit) {
38
50
  const initialObject: InputEventInit = {
39
- bubbles:e.bubbles,
40
- cancelable:e.cancelable,
41
- composed:e.composed,
42
- detail:e.detail,
43
- isComposing:e.isComposing,
44
- view:e.view,
45
- which:e.which,
46
- data:e.data,
47
- dataTransfer:e.dataTransfer,
48
- inputType:e.inputType,
49
- targetRanges: typeof e.getTargetRanges() == "function"?e.getTargetRanges():[],
50
- ...initObj
51
+ bubbles: e.bubbles,
52
+ cancelable: e.cancelable,
53
+ composed: e.composed,
54
+ detail: e.detail,
55
+ isComposing: e.isComposing,
56
+ view: e.view,
57
+ which: e.which,
58
+ data: e.data,
59
+ dataTransfer: e.dataTransfer,
60
+ inputType: e.inputType,
61
+ targetRanges: typeof e.getTargetRanges() == "function" ? e.getTargetRanges() : [],
62
+ ...initObj
51
63
  };
52
64
  const event = new InputEvent(eventName, initialObject);
53
65
  return event;
@@ -56,16 +68,16 @@ export function createInputEvent(eventName:string,e:InputEvent,initObj:InputEven
56
68
  /**
57
69
  * create a InputEvent based on `e` value and replace them with initObj
58
70
  */
59
- export function createFocusEvent(eventName:string,e:FocusEvent,initObj:FocusEventInit){
71
+ export function createFocusEvent(eventName: string, e: FocusEvent, initObj: FocusEventInit) {
60
72
  const initialObject: FocusEventInit = {
61
- bubbles:e.bubbles,
62
- cancelable:e.cancelable,
63
- composed:e.composed,
64
- detail:e.detail,
65
- view:e.view,
66
- which:e.which,
67
- relatedTarget:e.relatedTarget,
68
- ...initObj
73
+ bubbles: e.bubbles,
74
+ cancelable: e.cancelable,
75
+ composed: e.composed,
76
+ detail: e.detail,
77
+ view: e.view,
78
+ which: e.which,
79
+ relatedTarget: e.relatedTarget,
80
+ ...initObj
69
81
  };
70
82
  const event = new FocusEvent(eventName, initialObject);
71
83
  return event;
package/lib/index.ts CHANGED
@@ -1 +1,3 @@
1
- export * from "./events.js";
1
+ export * from "./events.js";
2
+ export * from "./device-detection.js";
3
+ export * from "./persian-tools.js";
@@ -0,0 +1,24 @@
1
+ function faToEnDigits(input:string | number):string{
2
+ if (typeof input !== "string"){
3
+ return '';
4
+ }
5
+ const regex = /[۰-۹]/g;
6
+ const result = input.replace(regex, function (w) {
7
+ return String.fromCharCode(w.charCodeAt(0) - 1728);
8
+ }
9
+ );
10
+ return result;
11
+ }
12
+
13
+ function enToFaDigits(input:string | number):string{
14
+ if (typeof input !== "string" && isNaN(input)){
15
+ return '';
16
+ }
17
+ const regex = /[0-9]/g;
18
+ const result = input.toString().replace(regex, function (w) {
19
+ return String.fromCharCode(w.charCodeAt(0) + 1728);
20
+ }
21
+ );
22
+ return result;
23
+ }
24
+ export {enToFaDigits, faToEnDigits};
package/package.json CHANGED
@@ -10,10 +10,11 @@
10
10
  "jb",
11
11
  "jb-core",
12
12
  "web-component tools",
13
+ "event",
13
14
  "react component",
14
15
  "event"
15
16
  ],
16
- "version": "0.0.4",
17
+ "version": "0.2.0",
17
18
  "bugs": "https://github.com/javadbat/jb-core/issues",
18
19
  "license": "MIT",
19
20
  "files": [
@@ -12,12 +12,12 @@ function useEvent(ref, event, handler, passive = false) {
12
12
  const dom = ref.current;
13
13
  if (dom) {
14
14
  // initiate the event handler
15
- dom.addEventListener(event, internalHandler, passive);
15
+ dom.addEventListener(event, internalHandler, { passive, capture: false });
16
16
  }
17
17
  // this will clean up the event every time the component is re-rendered
18
18
  return function cleanup() {
19
19
  if (dom) {
20
- dom.removeEventListener(event, internalHandler, passive);
20
+ dom.removeEventListener(event, internalHandler, { passive, capture: false });
21
21
  }
22
22
  };
23
23
  }, [ref, event, handler, passive]);
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../lib/use-event.ts"],"sourcesContent":["import { useCallback, useEffect } from \"react\";\r\n\r\nexport function useEvent<TRef extends React.MutableRefObject<any|null>,TEvent>(ref:TRef, event:string, handler?:(e:TEvent)=>void, passive = false) {\r\n const internalHandler = useCallback((e:TEvent)=>{\r\n if(ref.current && typeof handler == \"function\"){\r\n handler(e);\r\n }\r\n },[ref,handler]);\r\n useEffect(() => {\r\n const dom = ref.current;\r\n if (dom) {\r\n // initiate the event handler\r\n dom.addEventListener(event, internalHandler, passive); \r\n }\r\n // this will clean up the event every time the component is re-rendered\r\n return function cleanup() {\r\n if(dom){\r\n dom.removeEventListener(event, internalHandler, passive);\r\n }\r\n };\r\n },[ref,event,handler,passive]);\r\n}"],"names":["useCallback","useEffect"],"mappings":";;;;AAEM,SAAU,QAAQ,CAAuD,GAAQ,EAAE,KAAY,EAAE,OAAyB,EAAE,OAAO,GAAG,KAAK,EAAA;AAC/I,IAAA,MAAM,eAAe,GAAGA,iBAAW,CAAC,CAAC,CAAQ,KAAG;QAC9C,IAAG,GAAG,CAAC,OAAO,IAAI,OAAO,OAAO,IAAI,UAAU,EAAC;YAC7C,OAAO,CAAC,CAAC,CAAC,CAAC;AACZ,SAAA;AACH,KAAC,EAAC,CAAC,GAAG,EAAC,OAAO,CAAC,CAAC,CAAC;IACjBC,eAAS,CAAC,MAAK;AACb,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;AACxB,QAAA,IAAI,GAAG,EAAE;;YAEP,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;AACvD,SAAA;;AAED,QAAA,OAAO,SAAS,OAAO,GAAA;AACrB,YAAA,IAAG,GAAG,EAAC;gBACL,GAAG,CAAC,mBAAmB,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;AAC1D,aAAA;AACH,SAAC,CAAC;KACH,EAAC,CAAC,GAAG,EAAC,KAAK,EAAC,OAAO,EAAC,OAAO,CAAC,CAAC,CAAC;AACjC;;;;"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../lib/use-event.ts"],"sourcesContent":["import { useCallback, useEffect } from \"react\";\r\n\r\nexport function useEvent<TRef extends React.MutableRefObject<any|null>,TEvent>(ref:TRef, event:string, handler?:(e:TEvent)=>void, passive = false) {\r\n const internalHandler = useCallback((e:TEvent)=>{\r\n if(ref.current && typeof handler == \"function\"){\r\n handler(e);\r\n }\r\n },[ref,handler]);\r\n useEffect(() => {\r\n const dom = ref.current;\r\n if (dom) {\r\n // initiate the event handler\r\n dom.addEventListener(event, internalHandler, { passive, capture:false }); \r\n }\r\n // this will clean up the event every time the component is re-rendered\r\n return function cleanup() {\r\n if(dom){\r\n dom.removeEventListener(event, internalHandler, {passive, capture:false});\r\n }\r\n };\r\n },[ref,event,handler,passive]);\r\n}"],"names":["useCallback","useEffect"],"mappings":";;;;AAEM,SAAU,QAAQ,CAAuD,GAAQ,EAAE,KAAY,EAAE,OAAyB,EAAE,OAAO,GAAG,KAAK,EAAA;AAC/I,IAAA,MAAM,eAAe,GAAGA,iBAAW,CAAC,CAAC,CAAQ,KAAG;QAC9C,IAAG,GAAG,CAAC,OAAO,IAAI,OAAO,OAAO,IAAI,UAAU,EAAC;YAC7C,OAAO,CAAC,CAAC,CAAC,CAAC;AACZ,SAAA;AACH,KAAC,EAAC,CAAC,GAAG,EAAC,OAAO,CAAC,CAAC,CAAC;IACjBC,eAAS,CAAC,MAAK;AACb,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;AACxB,QAAA,IAAI,GAAG,EAAE;;AAEP,YAAA,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,EAAC,KAAK,EAAE,CAAC,CAAC;AAC1E,SAAA;;AAED,QAAA,OAAO,SAAS,OAAO,GAAA;AACrB,YAAA,IAAG,GAAG,EAAC;AACL,gBAAA,GAAG,CAAC,mBAAmB,CAAC,KAAK,EAAE,eAAe,EAAE,EAAC,OAAO,EAAE,OAAO,EAAC,KAAK,EAAC,CAAC,CAAC;AAC3E,aAAA;AACH,SAAC,CAAC;KACH,EAAC,CAAC,GAAG,EAAC,KAAK,EAAC,OAAO,EAAC,OAAO,CAAC,CAAC,CAAC;AACjC;;;;"}
@@ -10,12 +10,12 @@ function useEvent(ref, event, handler, passive = false) {
10
10
  const dom = ref.current;
11
11
  if (dom) {
12
12
  // initiate the event handler
13
- dom.addEventListener(event, internalHandler, passive);
13
+ dom.addEventListener(event, internalHandler, { passive, capture: false });
14
14
  }
15
15
  // this will clean up the event every time the component is re-rendered
16
16
  return function cleanup() {
17
17
  if (dom) {
18
- dom.removeEventListener(event, internalHandler, passive);
18
+ dom.removeEventListener(event, internalHandler, { passive, capture: false });
19
19
  }
20
20
  };
21
21
  }, [ref, event, handler, passive]);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../lib/use-event.ts"],"sourcesContent":["import { useCallback, useEffect } from \"react\";\r\n\r\nexport function useEvent<TRef extends React.MutableRefObject<any|null>,TEvent>(ref:TRef, event:string, handler?:(e:TEvent)=>void, passive = false) {\r\n const internalHandler = useCallback((e:TEvent)=>{\r\n if(ref.current && typeof handler == \"function\"){\r\n handler(e);\r\n }\r\n },[ref,handler]);\r\n useEffect(() => {\r\n const dom = ref.current;\r\n if (dom) {\r\n // initiate the event handler\r\n dom.addEventListener(event, internalHandler, passive); \r\n }\r\n // this will clean up the event every time the component is re-rendered\r\n return function cleanup() {\r\n if(dom){\r\n dom.removeEventListener(event, internalHandler, passive);\r\n }\r\n };\r\n },[ref,event,handler,passive]);\r\n}"],"names":[],"mappings":";;AAEM,SAAU,QAAQ,CAAuD,GAAQ,EAAE,KAAY,EAAE,OAAyB,EAAE,OAAO,GAAG,KAAK,EAAA;AAC/I,IAAA,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,CAAQ,KAAG;QAC9C,IAAG,GAAG,CAAC,OAAO,IAAI,OAAO,OAAO,IAAI,UAAU,EAAC;YAC7C,OAAO,CAAC,CAAC,CAAC,CAAC;AACZ,SAAA;AACH,KAAC,EAAC,CAAC,GAAG,EAAC,OAAO,CAAC,CAAC,CAAC;IACjB,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;AACxB,QAAA,IAAI,GAAG,EAAE;;YAEP,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;AACvD,SAAA;;AAED,QAAA,OAAO,SAAS,OAAO,GAAA;AACrB,YAAA,IAAG,GAAG,EAAC;gBACL,GAAG,CAAC,mBAAmB,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;AAC1D,aAAA;AACH,SAAC,CAAC;KACH,EAAC,CAAC,GAAG,EAAC,KAAK,EAAC,OAAO,EAAC,OAAO,CAAC,CAAC,CAAC;AACjC;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../lib/use-event.ts"],"sourcesContent":["import { useCallback, useEffect } from \"react\";\r\n\r\nexport function useEvent<TRef extends React.MutableRefObject<any|null>,TEvent>(ref:TRef, event:string, handler?:(e:TEvent)=>void, passive = false) {\r\n const internalHandler = useCallback((e:TEvent)=>{\r\n if(ref.current && typeof handler == \"function\"){\r\n handler(e);\r\n }\r\n },[ref,handler]);\r\n useEffect(() => {\r\n const dom = ref.current;\r\n if (dom) {\r\n // initiate the event handler\r\n dom.addEventListener(event, internalHandler, { passive, capture:false }); \r\n }\r\n // this will clean up the event every time the component is re-rendered\r\n return function cleanup() {\r\n if(dom){\r\n dom.removeEventListener(event, internalHandler, {passive, capture:false});\r\n }\r\n };\r\n },[ref,event,handler,passive]);\r\n}"],"names":[],"mappings":";;AAEM,SAAU,QAAQ,CAAuD,GAAQ,EAAE,KAAY,EAAE,OAAyB,EAAE,OAAO,GAAG,KAAK,EAAA;AAC/I,IAAA,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,CAAQ,KAAG;QAC9C,IAAG,GAAG,CAAC,OAAO,IAAI,OAAO,OAAO,IAAI,UAAU,EAAC;YAC7C,OAAO,CAAC,CAAC,CAAC,CAAC;AACZ,SAAA;AACH,KAAC,EAAC,CAAC,GAAG,EAAC,OAAO,CAAC,CAAC,CAAC;IACjB,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;AACxB,QAAA,IAAI,GAAG,EAAE;;AAEP,YAAA,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,EAAC,KAAK,EAAE,CAAC,CAAC;AAC1E,SAAA;;AAED,QAAA,OAAO,SAAS,OAAO,GAAA;AACrB,YAAA,IAAG,GAAG,EAAC;AACL,gBAAA,GAAG,CAAC,mBAAmB,CAAC,KAAK,EAAE,eAAe,EAAE,EAAC,OAAO,EAAE,OAAO,EAAC,KAAK,EAAC,CAAC,CAAC;AAC3E,aAAA;AACH,SAAC,CAAC;KACH,EAAC,CAAC,GAAG,EAAC,KAAK,EAAC,OAAO,EAAC,OAAO,CAAC,CAAC,CAAC;AACjC;;;;"}
@@ -14,12 +14,12 @@
14
14
  const dom = ref.current;
15
15
  if (dom) {
16
16
  // initiate the event handler
17
- dom.addEventListener(event, internalHandler, passive);
17
+ dom.addEventListener(event, internalHandler, { passive, capture: false });
18
18
  }
19
19
  // this will clean up the event every time the component is re-rendered
20
20
  return function cleanup() {
21
21
  if (dom) {
22
- dom.removeEventListener(event, internalHandler, passive);
22
+ dom.removeEventListener(event, internalHandler, { passive, capture: false });
23
23
  }
24
24
  };
25
25
  }, [ref, event, handler, passive]);
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","sources":["../lib/use-event.ts"],"sourcesContent":["import { useCallback, useEffect } from \"react\";\r\n\r\nexport function useEvent<TRef extends React.MutableRefObject<any|null>,TEvent>(ref:TRef, event:string, handler?:(e:TEvent)=>void, passive = false) {\r\n const internalHandler = useCallback((e:TEvent)=>{\r\n if(ref.current && typeof handler == \"function\"){\r\n handler(e);\r\n }\r\n },[ref,handler]);\r\n useEffect(() => {\r\n const dom = ref.current;\r\n if (dom) {\r\n // initiate the event handler\r\n dom.addEventListener(event, internalHandler, passive); \r\n }\r\n // this will clean up the event every time the component is re-rendered\r\n return function cleanup() {\r\n if(dom){\r\n dom.removeEventListener(event, internalHandler, passive);\r\n }\r\n };\r\n },[ref,event,handler,passive]);\r\n}"],"names":["useCallback","useEffect"],"mappings":";;;;;;EAEM,SAAU,QAAQ,CAAuD,GAAQ,EAAE,KAAY,EAAE,OAAyB,EAAE,OAAO,GAAG,KAAK,EAAA;EAC/I,IAAA,MAAM,eAAe,GAAGA,iBAAW,CAAC,CAAC,CAAQ,KAAG;UAC9C,IAAG,GAAG,CAAC,OAAO,IAAI,OAAO,OAAO,IAAI,UAAU,EAAC;cAC7C,OAAO,CAAC,CAAC,CAAC,CAAC;EACZ,SAAA;EACH,KAAC,EAAC,CAAC,GAAG,EAAC,OAAO,CAAC,CAAC,CAAC;MACjBC,eAAS,CAAC,MAAK;EACb,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;EACxB,QAAA,IAAI,GAAG,EAAE;;cAEP,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;EACvD,SAAA;;EAED,QAAA,OAAO,SAAS,OAAO,GAAA;EACrB,YAAA,IAAG,GAAG,EAAC;kBACL,GAAG,CAAC,mBAAmB,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;EAC1D,aAAA;EACH,SAAC,CAAC;OACH,EAAC,CAAC,GAAG,EAAC,KAAK,EAAC,OAAO,EAAC,OAAO,CAAC,CAAC,CAAC;EACjC;;;;;;;;"}
1
+ {"version":3,"file":"index.umd.js","sources":["../lib/use-event.ts"],"sourcesContent":["import { useCallback, useEffect } from \"react\";\r\n\r\nexport function useEvent<TRef extends React.MutableRefObject<any|null>,TEvent>(ref:TRef, event:string, handler?:(e:TEvent)=>void, passive = false) {\r\n const internalHandler = useCallback((e:TEvent)=>{\r\n if(ref.current && typeof handler == \"function\"){\r\n handler(e);\r\n }\r\n },[ref,handler]);\r\n useEffect(() => {\r\n const dom = ref.current;\r\n if (dom) {\r\n // initiate the event handler\r\n dom.addEventListener(event, internalHandler, { passive, capture:false }); \r\n }\r\n // this will clean up the event every time the component is re-rendered\r\n return function cleanup() {\r\n if(dom){\r\n dom.removeEventListener(event, internalHandler, {passive, capture:false});\r\n }\r\n };\r\n },[ref,event,handler,passive]);\r\n}"],"names":["useCallback","useEffect"],"mappings":";;;;;;EAEM,SAAU,QAAQ,CAAuD,GAAQ,EAAE,KAAY,EAAE,OAAyB,EAAE,OAAO,GAAG,KAAK,EAAA;EAC/I,IAAA,MAAM,eAAe,GAAGA,iBAAW,CAAC,CAAC,CAAQ,KAAG;UAC9C,IAAG,GAAG,CAAC,OAAO,IAAI,OAAO,OAAO,IAAI,UAAU,EAAC;cAC7C,OAAO,CAAC,CAAC,CAAC,CAAC;EACZ,SAAA;EACH,KAAC,EAAC,CAAC,GAAG,EAAC,OAAO,CAAC,CAAC,CAAC;MACjBC,eAAS,CAAC,MAAK;EACb,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;EACxB,QAAA,IAAI,GAAG,EAAE;;EAEP,YAAA,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,EAAC,KAAK,EAAE,CAAC,CAAC;EAC1E,SAAA;;EAED,QAAA,OAAO,SAAS,OAAO,GAAA;EACrB,YAAA,IAAG,GAAG,EAAC;EACL,gBAAA,GAAG,CAAC,mBAAmB,CAAC,KAAK,EAAE,eAAe,EAAE,EAAC,OAAO,EAAE,OAAO,EAAC,KAAK,EAAC,CAAC,CAAC;EAC3E,aAAA;EACH,SAAC,CAAC;OACH,EAAC,CAAC,GAAG,EAAC,KAAK,EAAC,OAAO,EAAC,OAAO,CAAC,CAAC,CAAC;EACjC;;;;;;;;"}
@@ -0,0 +1,3 @@
1
+ export * from './use-event.js';
2
+ export * from './useInstance.js';
3
+ export * from './useLazyRef.js';
@@ -10,12 +10,12 @@ export function useEvent<TRef extends React.MutableRefObject<any|null>,TEvent>(r
10
10
  const dom = ref.current;
11
11
  if (dom) {
12
12
  // initiate the event handler
13
- dom.addEventListener(event, internalHandler, passive);
13
+ dom.addEventListener(event, internalHandler, { passive, capture:false });
14
14
  }
15
15
  // this will clean up the event every time the component is re-rendered
16
16
  return function cleanup() {
17
17
  if(dom){
18
- dom.removeEventListener(event, internalHandler, passive);
18
+ dom.removeEventListener(event, internalHandler, {passive, capture:false});
19
19
  }
20
20
  };
21
21
  },[ref,event,handler,passive]);
@@ -0,0 +1,19 @@
1
+ import { useLazyRef } from "./useLazyRef.js";
2
+
3
+
4
+ type BaseConstructableClass<T = any> = new (...args: any[]) => T;
5
+
6
+ // Type to get the constructor parameters of a class
7
+ type Initializers<T extends BaseConstructableClass> = ConstructorParameters<T>;
8
+
9
+ // useInstance function that accepts a Store class and its initializers
10
+ /**
11
+ * create a instance of an class with lazy initialization
12
+ * @param Store class to create instance of
13
+ * @param initializers initializers to pass to the class constructor
14
+ * @returns instance of the class
15
+ */
16
+ export const useInstance = <T extends BaseConstructableClass>(Store: T, initializers: Initializers<T>): InstanceType<T> => {
17
+ const vm = useLazyRef(() => new Store(...initializers));
18
+ return vm.current;
19
+ };
@@ -0,0 +1,12 @@
1
+ import { MutableRefObject, useRef } from "react";
2
+
3
+ type InitFunc<T> = ()=>T
4
+ export const useLazyRef = <T>(initValFunc:InitFunc<T>) => {
5
+ const ref:MutableRefObject<any> = useRef(null);
6
+ if (ref.current === null) {
7
+ ref.current = initValFunc();
8
+ }
9
+ return ref;
10
+ };
11
+
12
+ // used by: useMobx
@@ -1 +1 @@
1
- export * from './use-event.js';
1
+ export * from './hooks/index.js';