1 line
9.2 KiB
Plaintext
1 line
9.2 KiB
Plaintext
{"version":3,"file":"alert.mjs","names":["pkg.version"],"sources":["../../../src/strings/fadeClass.ts","../../../src/strings/showClass.ts","../../../src/strings/dataBsDismiss.ts","../../../src/strings/alertString.ts","../../../src/strings/alertComponent.ts","../../../src/util/isDisabled.ts","../../../package.json","../../../src/version.ts","../../../src/components/base-component.ts","../../../src/components/alert.ts"],"sourcesContent":["/**\n * Global namespace for most components `fade` class.\n */\nconst fadeClass = \"fade\";\nexport default fadeClass;\n","/**\n * Global namespace for most components `show` class.\n */\nconst showClass = \"show\";\nexport default showClass;\n","/**\n * Global namespace for most components `dismiss` option.\n */\nconst dataBsDismiss = \"data-bs-dismiss\";\nexport default dataBsDismiss;\n","/** @type {string} */\nconst alertString = \"alert\";\nexport default alertString;\n","/** @type {string} */\nconst alertComponent = \"Alert\";\nexport default alertComponent;\n","import { getAttribute, hasClass } from \"@thednp/shorty\";\n\n/**\n * Check if interactive element is disabled.\n * @param target either a `<button>` or an `<a>`\n * @returns whether the target is disabled\n */\nconst isDisabled = (target: Element) => {\n return hasClass(target, \"disabled\") ||\n getAttribute(target, \"disabled\") === \"true\";\n};\n\nexport default isDisabled;\n","","import pkg from \"../package.json\" with { type: \"json\" };\n\nconst Version = pkg.version;\n\nexport default Version;\n","/* Native JavaScript for Bootstrap 5 | Base Component\n----------------------------------------------------- */\nimport {\n Data,\n isElement,\n isString,\n normalizeOptions,\n ObjectKeys,\n querySelector,\n} from \"@thednp/shorty\";\n\nimport type { BaseOptions } from \"~/interface/baseComponent\";\nimport Version from \"~/version\";\n\n/** Returns a new `BaseComponent` instance. */\nexport default class BaseComponent {\n declare element: Element;\n declare options?: BaseOptions;\n\n /**\n * @param target `Element` or selector string\n * @param config component instance options\n */\n constructor(target: Element | string, config?: BaseOptions) {\n let element: Element | null;\n\n try {\n if (isElement(target)) {\n element = target as Element;\n } else if (isString(target)) {\n element = querySelector(target);\n // istanbul ignore else @preserve\n if (!element) throw Error(`\"${target}\" is not a valid selector.`);\n } else {\n throw Error(`your target is not an instance of HTMLElement.`);\n }\n } catch (e) {\n throw Error(`${this.name} Error: ${(e as Error).message}`);\n }\n\n const prevInstance = Data.get<typeof this>(element, this.name);\n /* istanbul ignore else @preserve */\n if (prevInstance) {\n // remove previously attached event listeners\n // to avoid memory leaks\n prevInstance._toggleEventListeners();\n }\n\n this.element = element;\n this.options = this.defaults && ObjectKeys(this.defaults).length\n ? normalizeOptions(element, this.defaults, config || {}, \"bs\")\n : /* istanbul ignore next @preserve */ {};\n\n Data.set(element, this.name, this);\n }\n\n // istanbul ignore next @preserve\n get version() {\n return Version;\n }\n\n // istanbul ignore next @preserve\n get name() {\n return \"BaseComponent\";\n }\n\n // istanbul ignore next @preserve\n get defaults() {\n return {};\n }\n\n /** just to have something to extend from */\n // istanbul ignore next @preserve coverage wise this isn't important\n _toggleEventListeners = () => {\n // do something to please linters\n };\n\n /** Removes component from target element. */\n dispose() {\n Data.remove<typeof this>(this.element, this.name);\n ObjectKeys(this).forEach((prop) => {\n delete this[prop];\n });\n }\n}\n","/* Native JavaScript for Bootstrap 5 | Alert\n-------------------------------------------- */\nimport {\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n getInstance,\n hasClass,\n mouseclickEvent,\n PointerEvent,\n querySelector,\n removeClass,\n} from \"@thednp/shorty\";\n\nimport { addListener, removeListener } from \"@thednp/event-listener\";\n\nimport fadeClass from \"~/strings/fadeClass\";\nimport showClass from \"~/strings/showClass\";\nimport dataBsDismiss from \"~/strings/dataBsDismiss\";\nimport alertString from \"~/strings/alertString\";\nimport alertComponent from \"~/strings/alertComponent\";\nimport isDisabled from \"~/util/isDisabled\";\nimport type { AlertEvent } from \"~/interface/alert\";\n\nimport BaseComponent from \"./base-component\";\n\n// ALERT PRIVATE GC\n// ================\nconst alertSelector = `.${alertString}`;\nconst alertDismissSelector = `[${dataBsDismiss}=\"${alertString}\"]`;\n\n/**\n * Static method which returns an existing `Alert` instance associated\n * to a target `Element`.\n */\nconst getAlertInstance = (element: Element) =>\n getInstance<Alert>(element, alertComponent);\n\n/**\n * An `Alert` initialization callback.\n */\nconst alertInitCallback = (element: Element) => new Alert(element);\n\n// ALERT CUSTOM EVENTS\n// ===================\nconst closeAlertEvent = createCustomEvent<Record<string, never>, AlertEvent>(\n `close.bs.${alertString}`,\n);\nconst closedAlertEvent = createCustomEvent<Record<string, never>, AlertEvent>(\n `closed.bs.${alertString}`,\n);\n\n// ALERT EVENT HANDLER\n// ===================\n/**\n * Alert `transitionend` callback.\n *\n * @param that target Alert instance\n */\nconst alertTransitionEnd = (self: Alert) => {\n const { element } = self;\n dispatchEvent(element, closedAlertEvent);\n\n self._toggleEventListeners();\n self.dispose();\n element.remove();\n};\n\n// ALERT DEFINITION\n// ================\n/** Creates a new Alert instance. */\nexport default class Alert extends BaseComponent {\n static selector = alertSelector;\n static init = alertInitCallback;\n static getInstance = getAlertInstance;\n dismiss: HTMLElement | null;\n\n constructor(target: Element | string) {\n super(target);\n\n // the dismiss button\n this.dismiss = querySelector<HTMLElement>(\n alertDismissSelector,\n this.element,\n );\n\n // add event listener\n this._toggleEventListeners(true);\n }\n\n /** Returns component name string. */\n get name() {\n return alertComponent;\n }\n\n // ALERT PUBLIC METHODS\n // ====================\n /**\n * Public method that hides the `.alert` element from the user,\n * disposes the instance once animation is complete, then\n * removes the element from the DOM.\n */\n close = (e?: PointerEvent<HTMLElement>) => {\n const { element, dismiss } = this;\n\n // istanbul ignore if @preserve\n if (!element || !hasClass(element, showClass)) return;\n // istanbul ignore if @preserve\n if (e && dismiss && isDisabled(dismiss)) return;\n dispatchEvent(element, closeAlertEvent);\n\n if (closeAlertEvent.defaultPrevented) return;\n\n removeClass(element, showClass);\n\n if (hasClass(element, fadeClass)) {\n emulateTransitionEnd(element, () => alertTransitionEnd(this));\n } else alertTransitionEnd(this);\n };\n /**\n * Toggle on / off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { dismiss, close } = this;\n // istanbul ignore else @preserve\n if (dismiss) {\n action(dismiss, mouseclickEvent, close);\n }\n };\n\n /** Remove the component from target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n"],"mappings":";;;;;;;;;;;;;;ACGA,MAAM,YAAY;;;;;;ACAlB,MAAM,gBAAgB;;;;ACFtB,MAAM,cAAc;;;;ACApB,MAAM,iBAAiB;;;;;;;;ACMvB,MAAM,cAAc,WAAoB;AACtC,QAAO,SAAS,QAAQ,WAAW,IACjC,aAAa,QAAQ,WAAW,KAAK;;;;AEPzC,MAAM;;;;ACYN,IAAmB,gBAAnB,MAAkC;;;;;CAQhC,YAAE,QAAA,QAAA;EACF,IAAA;;AAGE,OAAI,UAAA,OAAA,CACA,WAAE;YACO,SAAQ,OAAG,EAAO;AAC3B,cAAS,cAAe,OAAG;AAE3B,QAAG,CAAA,QAAS,OAAO,MAAM,IAAA,OAAA,4BAAA;SAEzB,OAAK,MAAA,iDAAA;WAEP,GAAA;AACA,SAAM,MAAI,GAAA,KAAA,KAAA,UAAA,EAAA,UAAA;;;AAKZ,MAAG,aAGD,cAAY,uBAAO;;AAIrB,OAAK,UAAU,KAAA,YAAO,WAAA,KAAA,SAAA,CAAA,SAClB,iBAAgB,SAAU,KAAE,UAAW,UAAK,EAAS,EAAC,KAAA,GACtD,EAAA;;;CAMN,IAAG,UAAS;AACZ,SAAI;;CAIJ,IAAG,OAAQ;AACX,SAAS;;CAIT,IAAG,WAAS;AACZ,SAAI,EAAA;;;CAKJ,8BAAyB;;CAKzB,UAAI;AACJ,OAAO,OAAG,KAAA,SAAA,KAAA,KAAA;AACR,aAAW,KAAC,CAAA,SAAa,SAAK;AAC9B,UAAA,KAAW;IACT;;;;;ACtDN,MAAM,gBAAY,IAAA;AAClB,MAAM,uBAAoB,IAAA,cAAa,IAAA,YAAA;;;;;AAMvC,MAAE,oBAAA,YACF,YAAM,SAAoB,eAAmB;;;;AAK7C,MAAE,qBAAA,YAAA,IAAA,MAAA,QAAA;AAIF,MAAM,kBAAe,kBACrB,YAAM,cACL;AACD,MAAC,mBAAA,kBACD,aAAM,cACL;;;;;;AASD,MAAE,sBAAA,SAAA;CACF,MAAM,EAAA,YAAA;AACJ,eAAQ,SAAY,iBAAI;;AAGxB,MAAK,SAAA;AACL,SAAK,QAAS;;;AAMhB,IAAkB,QAAlB,cAAmC,cAAA;CACnC,OAAO,WAAa;CAClB,OAAO,OAAA;CACP,OAAO,cAAO;CACd;;AAGA,QAAA,OAAY;AAGV,OAAG,UAAY,cACf,sBACE,KAAA,QACD;AAGD,OAAG,sBAAU,KAAA;;;CAIf,IAAI,OAAO;AACX,SAAS;;;;;;;CAUT,SAAE,MAAA;EACF,MAAQ,EAAE,SAAG,YAAa;AAGxB,MAAG,CAAA,WAAS,CAAA,SAAW,SAAA,OAAA,CAAA;AAEvB,MAAG,KAAA,WAAgB,WAAI,QAAA,CAAA;AACvB,gBAAS,SAAW,gBAAmB;;;gCAOrC,sBAAoB,eAAY,mBAAA,KAAA,CAAA;MAChC,oBAAqB,KAAQ;;;;;;;CAOjC,yBAAE,QAAA;EACF,MAAA,SAAA,MAAuB,cAAQ;EAC7B,MAAM,EAAA,SAAS,UAAM;AAErB,MAAG,QACD,QAAE,SAAS,iBAAA,MAAA;;;CAKf,UAAU;AACV,OAAO,uBAAG;AACR,QAAK,SAAA"} |