@reginaldo-marinho/rucula-js
Version:
Crie telas em Minutos! 🚀
98 lines (66 loc) • 3.31 kB
text/typescript
import { constPrefixEventField } from "../../../const";
export type identity = {
name:string,
element:HTMLElement,
row:number | undefined
}
export let eventsCustom = (() => {
let events = new Map();
return {
field:()=> {
function eventTypeLine(event:string){
return event.split(".").length == 4
}
function removeLineNumber(eventName:string){
return eventName.replace(/\.[0-9]+$/,"")
}
function setEvent(eventName:string, event:CustomEvent){
if(events.has(eventName) == false){
events.set(eventName, event)
}
}
return {
set:(identity:identity )=> {
let beforeEventName = `${constPrefixEventField.BEFORE}.${identity.name}`
let inputEventName = `${constPrefixEventField.INPUT}.${identity.name}`
let afterEventName = `${constPrefixEventField.AFTER}.${identity.name}`
let id = {
identity: identity
}
setEvent(beforeEventName, new CustomEvent(beforeEventName, {detail: id}))
setEvent(inputEventName, new CustomEvent(inputEventName, {detail: id}))
setEvent(afterEventName, new CustomEvent(afterEventName, {detail: id}))
setEventBaseTypeLine()
function setEventBaseTypeLine(){
if(eventTypeLine(beforeEventName)){
let identity = {
identity: {}
}
let before = removeLineNumber(beforeEventName)
let input = removeLineNumber(inputEventName)
let after = removeLineNumber(afterEventName)
setEvent(before, new CustomEvent(before, {detail: identity}))
setEvent(input, new CustomEvent(input, {detail: identity}))
setEvent(after, new CustomEvent(after, {detail: identity}))
}
}
},
get: (eventName:string)=> {
let result = null;
if(eventTypeLine(eventName)){
let eventNameBase = removeLineNumber(eventName)
let eventBase = events.get(eventNameBase) as CustomEvent
result = events.get(eventName) as CustomEvent
eventBase.detail.identity = result.detail.identity
return eventBase;
}
result = events.get(eventName)
if(result == null){
throw new Error("event not found");
}
return result
}
}
}
}
})()