@adartem/adlib-attributes 0.1.4 → 0.1.6

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.
Files changed (65) hide show
  1. package/attributes.js +957 -1
  2. package/attributes.js.map +4 -4
  3. package/dist/chunk-IEGIKJKW.js +5776 -0
  4. package/dist/chunk-IEGIKJKW.js.map +7 -0
  5. package/dist/chunk-M2KO765Q.js +43 -0
  6. package/dist/chunk-M2KO765Q.js.map +7 -0
  7. package/dist/chunk-NS2GB4WB.js +63 -0
  8. package/dist/chunk-NS2GB4WB.js.map +7 -0
  9. package/dist/dist-46N2ZXQQ.js +80 -0
  10. package/dist/dist-46N2ZXQQ.js.map +7 -0
  11. package/dist/dist-4EIQOOMJ.js +331 -0
  12. package/dist/dist-4EIQOOMJ.js.map +7 -0
  13. package/dist/dist-6YSNCGWO.js +227 -0
  14. package/dist/dist-6YSNCGWO.js.map +7 -0
  15. package/dist/dist-7GSHUMRU.js +60 -0
  16. package/dist/dist-7GSHUMRU.js.map +7 -0
  17. package/dist/dist-ALT6N2V6.js +165 -0
  18. package/dist/dist-ALT6N2V6.js.map +7 -0
  19. package/dist/dist-BXD5YEF3.js +290 -0
  20. package/dist/dist-BXD5YEF3.js.map +7 -0
  21. package/dist/dist-D2J4YZM6.js +52 -0
  22. package/dist/dist-D2J4YZM6.js.map +7 -0
  23. package/dist/dist-D2X7FLMD.js +126 -0
  24. package/dist/dist-D2X7FLMD.js.map +7 -0
  25. package/dist/dist-DOOWCYTM.js +92 -0
  26. package/dist/dist-DOOWCYTM.js.map +7 -0
  27. package/dist/dist-GLBAV2CS.js +202 -0
  28. package/dist/dist-GLBAV2CS.js.map +7 -0
  29. package/dist/dist-GQHJZHTH.js +73 -0
  30. package/dist/dist-GQHJZHTH.js.map +7 -0
  31. package/dist/dist-H4ILPDRU.js +59 -0
  32. package/dist/dist-H4ILPDRU.js.map +7 -0
  33. package/dist/dist-IDJRFWAH.js +71 -0
  34. package/dist/dist-IDJRFWAH.js.map +7 -0
  35. package/dist/dist-KDCRSMGT.js +63 -0
  36. package/dist/dist-KDCRSMGT.js.map +7 -0
  37. package/dist/dist-KF5AKQ52.js +740 -0
  38. package/dist/dist-KF5AKQ52.js.map +7 -0
  39. package/dist/dist-KU26ZFEG.js +169 -0
  40. package/dist/dist-KU26ZFEG.js.map +7 -0
  41. package/dist/dist-M6QCD7TL.js +4281 -0
  42. package/dist/dist-M6QCD7TL.js.map +7 -0
  43. package/dist/dist-MBFKX56S.js +482 -0
  44. package/dist/dist-MBFKX56S.js.map +7 -0
  45. package/dist/dist-NOIPAOTU.js +131 -0
  46. package/dist/dist-NOIPAOTU.js.map +7 -0
  47. package/dist/dist-QPNIGMZA.js +33028 -0
  48. package/dist/dist-QPNIGMZA.js.map +7 -0
  49. package/dist/dist-RAOZ6VUA.js +14416 -0
  50. package/dist/dist-RAOZ6VUA.js.map +7 -0
  51. package/dist/dist-RQZGUXDL.js +102 -0
  52. package/dist/dist-RQZGUXDL.js.map +7 -0
  53. package/dist/dist-T4V65O5X.js +54 -0
  54. package/dist/dist-T4V65O5X.js.map +7 -0
  55. package/dist/dist-UFMW7V6T.js +317 -0
  56. package/dist/dist-UFMW7V6T.js.map +7 -0
  57. package/dist/dist-V7I3FQX7.js +1419 -0
  58. package/dist/dist-V7I3FQX7.js.map +7 -0
  59. package/dist/dist-XTGERRGU.js +160 -0
  60. package/dist/dist-XTGERRGU.js.map +7 -0
  61. package/dist/dist-YAVVMJ7W.js +72 -0
  62. package/dist/dist-YAVVMJ7W.js.map +7 -0
  63. package/dist/dist-YGJKGMK6.js +137 -0
  64. package/dist/dist-YGJKGMK6.js.map +7 -0
  65. package/package.json +10 -10
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../node_modules/slugify/slugify.js", "../../toc/node_modules/nanoid/index.browser.js", "../../toc/node_modules/nanoid/url-alphabet/index.js", "../../toc/src/utils/constants.ts", "../../toc/src/utils/selectors.ts", "../../toc/src/actions/scroll.ts", "../../toc/src/utils/helpers.ts", "../../toc/src/actions/create.ts", "../../toc/src/actions/collect.ts", "../../toc/src/actions/events.ts", "../../toc/src/actions/observe.ts", "../../toc/src/components/TOCItem.ts", "../../toc/src/actions/populate.ts", "../../toc/src/actions/prepare.ts", "../../toc/src/factory.ts", "../../toc/src/init.ts", "../../toc/package.json", "../../toc/src/index.ts"],
4
+ "sourcesContent": ["\n;(function (name, root, factory) {\n if (typeof exports === 'object') {\n module.exports = factory()\n module.exports['default'] = factory()\n }\n /* istanbul ignore next */\n else if (typeof define === 'function' && define.amd) {\n define(factory)\n }\n else {\n root[name] = factory()\n }\n}('slugify', this, function () {\n var charMap = JSON.parse('{\"$\":\"dollar\",\"%\":\"percent\",\"&\":\"and\",\"<\":\"less\",\">\":\"greater\",\"|\":\"or\",\"\u00A2\":\"cent\",\"\u00A3\":\"pound\",\"\u00A4\":\"currency\",\"\u00A5\":\"yen\",\"\u00A9\":\"(c)\",\"\u00AA\":\"a\",\"\u00AE\":\"(r)\",\"\u00BA\":\"o\",\"\u00C0\":\"A\",\"\u00C1\":\"A\",\"\u00C2\":\"A\",\"\u00C3\":\"A\",\"\u00C4\":\"A\",\"\u00C5\":\"A\",\"\u00C6\":\"AE\",\"\u00C7\":\"C\",\"\u00C8\":\"E\",\"\u00C9\":\"E\",\"\u00CA\":\"E\",\"\u00CB\":\"E\",\"\u00CC\":\"I\",\"\u00CD\":\"I\",\"\u00CE\":\"I\",\"\u00CF\":\"I\",\"\u00D0\":\"D\",\"\u00D1\":\"N\",\"\u00D2\":\"O\",\"\u00D3\":\"O\",\"\u00D4\":\"O\",\"\u00D5\":\"O\",\"\u00D6\":\"O\",\"\u00D8\":\"O\",\"\u00D9\":\"U\",\"\u00DA\":\"U\",\"\u00DB\":\"U\",\"\u00DC\":\"U\",\"\u00DD\":\"Y\",\"\u00DE\":\"TH\",\"\u00DF\":\"ss\",\"\u00E0\":\"a\",\"\u00E1\":\"a\",\"\u00E2\":\"a\",\"\u00E3\":\"a\",\"\u00E4\":\"a\",\"\u00E5\":\"a\",\"\u00E6\":\"ae\",\"\u00E7\":\"c\",\"\u00E8\":\"e\",\"\u00E9\":\"e\",\"\u00EA\":\"e\",\"\u00EB\":\"e\",\"\u00EC\":\"i\",\"\u00ED\":\"i\",\"\u00EE\":\"i\",\"\u00EF\":\"i\",\"\u00F0\":\"d\",\"\u00F1\":\"n\",\"\u00F2\":\"o\",\"\u00F3\":\"o\",\"\u00F4\":\"o\",\"\u00F5\":\"o\",\"\u00F6\":\"o\",\"\u00F8\":\"o\",\"\u00F9\":\"u\",\"\u00FA\":\"u\",\"\u00FB\":\"u\",\"\u00FC\":\"u\",\"\u00FD\":\"y\",\"\u00FE\":\"th\",\"\u00FF\":\"y\",\"\u0100\":\"A\",\"\u0101\":\"a\",\"\u0102\":\"A\",\"\u0103\":\"a\",\"\u0104\":\"A\",\"\u0105\":\"a\",\"\u0106\":\"C\",\"\u0107\":\"c\",\"\u010C\":\"C\",\"\u010D\":\"c\",\"\u010E\":\"D\",\"\u010F\":\"d\",\"\u0110\":\"DJ\",\"\u0111\":\"dj\",\"\u0112\":\"E\",\"\u0113\":\"e\",\"\u0116\":\"E\",\"\u0117\":\"e\",\"\u0118\":\"e\",\"\u0119\":\"e\",\"\u011A\":\"E\",\"\u011B\":\"e\",\"\u011E\":\"G\",\"\u011F\":\"g\",\"\u0122\":\"G\",\"\u0123\":\"g\",\"\u0128\":\"I\",\"\u0129\":\"i\",\"\u012A\":\"i\",\"\u012B\":\"i\",\"\u012E\":\"I\",\"\u012F\":\"i\",\"\u0130\":\"I\",\"\u0131\":\"i\",\"\u0136\":\"k\",\"\u0137\":\"k\",\"\u013B\":\"L\",\"\u013C\":\"l\",\"\u013D\":\"L\",\"\u013E\":\"l\",\"\u0141\":\"L\",\"\u0142\":\"l\",\"\u0143\":\"N\",\"\u0144\":\"n\",\"\u0145\":\"N\",\"\u0146\":\"n\",\"\u0147\":\"N\",\"\u0148\":\"n\",\"\u014C\":\"O\",\"\u014D\":\"o\",\"\u0150\":\"O\",\"\u0151\":\"o\",\"\u0152\":\"OE\",\"\u0153\":\"oe\",\"\u0154\":\"R\",\"\u0155\":\"r\",\"\u0158\":\"R\",\"\u0159\":\"r\",\"\u015A\":\"S\",\"\u015B\":\"s\",\"\u015E\":\"S\",\"\u015F\":\"s\",\"\u0160\":\"S\",\"\u0161\":\"s\",\"\u0162\":\"T\",\"\u0163\":\"t\",\"\u0164\":\"T\",\"\u0165\":\"t\",\"\u0168\":\"U\",\"\u0169\":\"u\",\"\u016A\":\"u\",\"\u016B\":\"u\",\"\u016E\":\"U\",\"\u016F\":\"u\",\"\u0170\":\"U\",\"\u0171\":\"u\",\"\u0172\":\"U\",\"\u0173\":\"u\",\"\u0174\":\"W\",\"\u0175\":\"w\",\"\u0176\":\"Y\",\"\u0177\":\"y\",\"\u0178\":\"Y\",\"\u0179\":\"Z\",\"\u017A\":\"z\",\"\u017B\":\"Z\",\"\u017C\":\"z\",\"\u017D\":\"Z\",\"\u017E\":\"z\",\"\u018F\":\"E\",\"\u0192\":\"f\",\"\u01A0\":\"O\",\"\u01A1\":\"o\",\"\u01AF\":\"U\",\"\u01B0\":\"u\",\"\u01C8\":\"LJ\",\"\u01C9\":\"lj\",\"\u01CB\":\"NJ\",\"\u01CC\":\"nj\",\"\u0218\":\"S\",\"\u0219\":\"s\",\"\u021A\":\"T\",\"\u021B\":\"t\",\"\u0259\":\"e\",\"\u02DA\":\"o\",\"\u0386\":\"A\",\"\u0388\":\"E\",\"\u0389\":\"H\",\"\u038A\":\"I\",\"\u038C\":\"O\",\"\u038E\":\"Y\",\"\u038F\":\"W\",\"\u0390\":\"i\",\"\u0391\":\"A\",\"\u0392\":\"B\",\"\u0393\":\"G\",\"\u0394\":\"D\",\"\u0395\":\"E\",\"\u0396\":\"Z\",\"\u0397\":\"H\",\"\u0398\":\"8\",\"\u0399\":\"I\",\"\u039A\":\"K\",\"\u039B\":\"L\",\"\u039C\":\"M\",\"\u039D\":\"N\",\"\u039E\":\"3\",\"\u039F\":\"O\",\"\u03A0\":\"P\",\"\u03A1\":\"R\",\"\u03A3\":\"S\",\"\u03A4\":\"T\",\"\u03A5\":\"Y\",\"\u03A6\":\"F\",\"\u03A7\":\"X\",\"\u03A8\":\"PS\",\"\u03A9\":\"W\",\"\u03AA\":\"I\",\"\u03AB\":\"Y\",\"\u03AC\":\"a\",\"\u03AD\":\"e\",\"\u03AE\":\"h\",\"\u03AF\":\"i\",\"\u03B0\":\"y\",\"\u03B1\":\"a\",\"\u03B2\":\"b\",\"\u03B3\":\"g\",\"\u03B4\":\"d\",\"\u03B5\":\"e\",\"\u03B6\":\"z\",\"\u03B7\":\"h\",\"\u03B8\":\"8\",\"\u03B9\":\"i\",\"\u03BA\":\"k\",\"\u03BB\":\"l\",\"\u03BC\":\"m\",\"\u03BD\":\"n\",\"\u03BE\":\"3\",\"\u03BF\":\"o\",\"\u03C0\":\"p\",\"\u03C1\":\"r\",\"\u03C2\":\"s\",\"\u03C3\":\"s\",\"\u03C4\":\"t\",\"\u03C5\":\"y\",\"\u03C6\":\"f\",\"\u03C7\":\"x\",\"\u03C8\":\"ps\",\"\u03C9\":\"w\",\"\u03CA\":\"i\",\"\u03CB\":\"y\",\"\u03CC\":\"o\",\"\u03CD\":\"y\",\"\u03CE\":\"w\",\"\u0401\":\"Yo\",\"\u0402\":\"DJ\",\"\u0404\":\"Ye\",\"\u0406\":\"I\",\"\u0407\":\"Yi\",\"\u0408\":\"J\",\"\u0409\":\"LJ\",\"\u040A\":\"NJ\",\"\u040B\":\"C\",\"\u040F\":\"DZ\",\"\u0410\":\"A\",\"\u0411\":\"B\",\"\u0412\":\"V\",\"\u0413\":\"G\",\"\u0414\":\"D\",\"\u0415\":\"E\",\"\u0416\":\"Zh\",\"\u0417\":\"Z\",\"\u0418\":\"I\",\"\u0419\":\"J\",\"\u041A\":\"K\",\"\u041B\":\"L\",\"\u041C\":\"M\",\"\u041D\":\"N\",\"\u041E\":\"O\",\"\u041F\":\"P\",\"\u0420\":\"R\",\"\u0421\":\"S\",\"\u0422\":\"T\",\"\u0423\":\"U\",\"\u0424\":\"F\",\"\u0425\":\"H\",\"\u0426\":\"C\",\"\u0427\":\"Ch\",\"\u0428\":\"Sh\",\"\u0429\":\"Sh\",\"\u042A\":\"U\",\"\u042B\":\"Y\",\"\u042C\":\"\",\"\u042D\":\"E\",\"\u042E\":\"Yu\",\"\u042F\":\"Ya\",\"\u0430\":\"a\",\"\u0431\":\"b\",\"\u0432\":\"v\",\"\u0433\":\"g\",\"\u0434\":\"d\",\"\u0435\":\"e\",\"\u0436\":\"zh\",\"\u0437\":\"z\",\"\u0438\":\"i\",\"\u0439\":\"j\",\"\u043A\":\"k\",\"\u043B\":\"l\",\"\u043C\":\"m\",\"\u043D\":\"n\",\"\u043E\":\"o\",\"\u043F\":\"p\",\"\u0440\":\"r\",\"\u0441\":\"s\",\"\u0442\":\"t\",\"\u0443\":\"u\",\"\u0444\":\"f\",\"\u0445\":\"h\",\"\u0446\":\"c\",\"\u0447\":\"ch\",\"\u0448\":\"sh\",\"\u0449\":\"sh\",\"\u044A\":\"u\",\"\u044B\":\"y\",\"\u044C\":\"\",\"\u044D\":\"e\",\"\u044E\":\"yu\",\"\u044F\":\"ya\",\"\u0451\":\"yo\",\"\u0452\":\"dj\",\"\u0454\":\"ye\",\"\u0456\":\"i\",\"\u0457\":\"yi\",\"\u0458\":\"j\",\"\u0459\":\"lj\",\"\u045A\":\"nj\",\"\u045B\":\"c\",\"\u045D\":\"u\",\"\u045F\":\"dz\",\"\u0490\":\"G\",\"\u0491\":\"g\",\"\u0492\":\"GH\",\"\u0493\":\"gh\",\"\u049A\":\"KH\",\"\u049B\":\"kh\",\"\u04A2\":\"NG\",\"\u04A3\":\"ng\",\"\u04AE\":\"UE\",\"\u04AF\":\"ue\",\"\u04B0\":\"U\",\"\u04B1\":\"u\",\"\u04BA\":\"H\",\"\u04BB\":\"h\",\"\u04D8\":\"AE\",\"\u04D9\":\"ae\",\"\u04E8\":\"OE\",\"\u04E9\":\"oe\",\"\u0531\":\"A\",\"\u0532\":\"B\",\"\u0533\":\"G\",\"\u0534\":\"D\",\"\u0535\":\"E\",\"\u0536\":\"Z\",\"\u0537\":\"E\\'\",\"\u0538\":\"Y\\'\",\"\u0539\":\"T\\'\",\"\u053A\":\"JH\",\"\u053B\":\"I\",\"\u053C\":\"L\",\"\u053D\":\"X\",\"\u053E\":\"C\\'\",\"\u053F\":\"K\",\"\u0540\":\"H\",\"\u0541\":\"D\\'\",\"\u0542\":\"GH\",\"\u0543\":\"TW\",\"\u0544\":\"M\",\"\u0545\":\"Y\",\"\u0546\":\"N\",\"\u0547\":\"SH\",\"\u0549\":\"CH\",\"\u054A\":\"P\",\"\u054B\":\"J\",\"\u054C\":\"R\\'\",\"\u054D\":\"S\",\"\u054E\":\"V\",\"\u054F\":\"T\",\"\u0550\":\"R\",\"\u0551\":\"C\",\"\u0553\":\"P\\'\",\"\u0554\":\"Q\\'\",\"\u0555\":\"O\\'\\'\",\"\u0556\":\"F\",\"\u0587\":\"EV\",\"\u0621\":\"a\",\"\u0622\":\"aa\",\"\u0623\":\"a\",\"\u0624\":\"u\",\"\u0625\":\"i\",\"\u0626\":\"e\",\"\u0627\":\"a\",\"\u0628\":\"b\",\"\u0629\":\"h\",\"\u062A\":\"t\",\"\u062B\":\"th\",\"\u062C\":\"j\",\"\u062D\":\"h\",\"\u062E\":\"kh\",\"\u062F\":\"d\",\"\u0630\":\"th\",\"\u0631\":\"r\",\"\u0632\":\"z\",\"\u0633\":\"s\",\"\u0634\":\"sh\",\"\u0635\":\"s\",\"\u0636\":\"dh\",\"\u0637\":\"t\",\"\u0638\":\"z\",\"\u0639\":\"a\",\"\u063A\":\"gh\",\"\u0641\":\"f\",\"\u0642\":\"q\",\"\u0643\":\"k\",\"\u0644\":\"l\",\"\u0645\":\"m\",\"\u0646\":\"n\",\"\u0647\":\"h\",\"\u0648\":\"w\",\"\u0649\":\"a\",\"\u064A\":\"y\",\"\u064B\":\"an\",\"\u064C\":\"on\",\"\u064D\":\"en\",\"\u064E\":\"a\",\"\u064F\":\"u\",\"\u0650\":\"e\",\"\u0652\":\"\",\"\u0660\":\"0\",\"\u0661\":\"1\",\"\u0662\":\"2\",\"\u0663\":\"3\",\"\u0664\":\"4\",\"\u0665\":\"5\",\"\u0666\":\"6\",\"\u0667\":\"7\",\"\u0668\":\"8\",\"\u0669\":\"9\",\"\u067E\":\"p\",\"\u0686\":\"ch\",\"\u0698\":\"zh\",\"\u06A9\":\"k\",\"\u06AF\":\"g\",\"\u06CC\":\"y\",\"\u06F0\":\"0\",\"\u06F1\":\"1\",\"\u06F2\":\"2\",\"\u06F3\":\"3\",\"\u06F4\":\"4\",\"\u06F5\":\"5\",\"\u06F6\":\"6\",\"\u06F7\":\"7\",\"\u06F8\":\"8\",\"\u06F9\":\"9\",\"\u0E3F\":\"baht\",\"\u10D0\":\"a\",\"\u10D1\":\"b\",\"\u10D2\":\"g\",\"\u10D3\":\"d\",\"\u10D4\":\"e\",\"\u10D5\":\"v\",\"\u10D6\":\"z\",\"\u10D7\":\"t\",\"\u10D8\":\"i\",\"\u10D9\":\"k\",\"\u10DA\":\"l\",\"\u10DB\":\"m\",\"\u10DC\":\"n\",\"\u10DD\":\"o\",\"\u10DE\":\"p\",\"\u10DF\":\"zh\",\"\u10E0\":\"r\",\"\u10E1\":\"s\",\"\u10E2\":\"t\",\"\u10E3\":\"u\",\"\u10E4\":\"f\",\"\u10E5\":\"k\",\"\u10E6\":\"gh\",\"\u10E7\":\"q\",\"\u10E8\":\"sh\",\"\u10E9\":\"ch\",\"\u10EA\":\"ts\",\"\u10EB\":\"dz\",\"\u10EC\":\"ts\",\"\u10ED\":\"ch\",\"\u10EE\":\"kh\",\"\u10EF\":\"j\",\"\u10F0\":\"h\",\"\u1E62\":\"S\",\"\u1E63\":\"s\",\"\u1E80\":\"W\",\"\u1E81\":\"w\",\"\u1E82\":\"W\",\"\u1E83\":\"w\",\"\u1E84\":\"W\",\"\u1E85\":\"w\",\"\u1E9E\":\"SS\",\"\u1EA0\":\"A\",\"\u1EA1\":\"a\",\"\u1EA2\":\"A\",\"\u1EA3\":\"a\",\"\u1EA4\":\"A\",\"\u1EA5\":\"a\",\"\u1EA6\":\"A\",\"\u1EA7\":\"a\",\"\u1EA8\":\"A\",\"\u1EA9\":\"a\",\"\u1EAA\":\"A\",\"\u1EAB\":\"a\",\"\u1EAC\":\"A\",\"\u1EAD\":\"a\",\"\u1EAE\":\"A\",\"\u1EAF\":\"a\",\"\u1EB0\":\"A\",\"\u1EB1\":\"a\",\"\u1EB2\":\"A\",\"\u1EB3\":\"a\",\"\u1EB4\":\"A\",\"\u1EB5\":\"a\",\"\u1EB6\":\"A\",\"\u1EB7\":\"a\",\"\u1EB8\":\"E\",\"\u1EB9\":\"e\",\"\u1EBA\":\"E\",\"\u1EBB\":\"e\",\"\u1EBC\":\"E\",\"\u1EBD\":\"e\",\"\u1EBE\":\"E\",\"\u1EBF\":\"e\",\"\u1EC0\":\"E\",\"\u1EC1\":\"e\",\"\u1EC2\":\"E\",\"\u1EC3\":\"e\",\"\u1EC4\":\"E\",\"\u1EC5\":\"e\",\"\u1EC6\":\"E\",\"\u1EC7\":\"e\",\"\u1EC8\":\"I\",\"\u1EC9\":\"i\",\"\u1ECA\":\"I\",\"\u1ECB\":\"i\",\"\u1ECC\":\"O\",\"\u1ECD\":\"o\",\"\u1ECE\":\"O\",\"\u1ECF\":\"o\",\"\u1ED0\":\"O\",\"\u1ED1\":\"o\",\"\u1ED2\":\"O\",\"\u1ED3\":\"o\",\"\u1ED4\":\"O\",\"\u1ED5\":\"o\",\"\u1ED6\":\"O\",\"\u1ED7\":\"o\",\"\u1ED8\":\"O\",\"\u1ED9\":\"o\",\"\u1EDA\":\"O\",\"\u1EDB\":\"o\",\"\u1EDC\":\"O\",\"\u1EDD\":\"o\",\"\u1EDE\":\"O\",\"\u1EDF\":\"o\",\"\u1EE0\":\"O\",\"\u1EE1\":\"o\",\"\u1EE2\":\"O\",\"\u1EE3\":\"o\",\"\u1EE4\":\"U\",\"\u1EE5\":\"u\",\"\u1EE6\":\"U\",\"\u1EE7\":\"u\",\"\u1EE8\":\"U\",\"\u1EE9\":\"u\",\"\u1EEA\":\"U\",\"\u1EEB\":\"u\",\"\u1EEC\":\"U\",\"\u1EED\":\"u\",\"\u1EEE\":\"U\",\"\u1EEF\":\"u\",\"\u1EF0\":\"U\",\"\u1EF1\":\"u\",\"\u1EF2\":\"Y\",\"\u1EF3\":\"y\",\"\u1EF4\":\"Y\",\"\u1EF5\":\"y\",\"\u1EF6\":\"Y\",\"\u1EF7\":\"y\",\"\u1EF8\":\"Y\",\"\u1EF9\":\"y\",\"\u2013\":\"-\",\"\u2018\":\"\\'\",\"\u2019\":\"\\'\",\"\u201C\":\"\\\\\\\"\",\"\u201D\":\"\\\\\\\"\",\"\u201E\":\"\\\\\\\"\",\"\u2020\":\"+\",\"\u2022\":\"*\",\"\u2026\":\"...\",\"\u20A0\":\"ecu\",\"\u20A2\":\"cruzeiro\",\"\u20A3\":\"french franc\",\"\u20A4\":\"lira\",\"\u20A5\":\"mill\",\"\u20A6\":\"naira\",\"\u20A7\":\"peseta\",\"\u20A8\":\"rupee\",\"\u20A9\":\"won\",\"\u20AA\":\"new shequel\",\"\u20AB\":\"dong\",\"\u20AC\":\"euro\",\"\u20AD\":\"kip\",\"\u20AE\":\"tugrik\",\"\u20AF\":\"drachma\",\"\u20B0\":\"penny\",\"\u20B1\":\"peso\",\"\u20B2\":\"guarani\",\"\u20B3\":\"austral\",\"\u20B4\":\"hryvnia\",\"\u20B5\":\"cedi\",\"\u20B8\":\"kazakhstani tenge\",\"\u20B9\":\"indian rupee\",\"\u20BA\":\"turkish lira\",\"\u20BD\":\"russian ruble\",\"\u20BF\":\"bitcoin\",\"\u2120\":\"sm\",\"\u2122\":\"tm\",\"\u2202\":\"d\",\"\u2206\":\"delta\",\"\u2211\":\"sum\",\"\u221E\":\"infinity\",\"\u2665\":\"love\",\"\u5143\":\"yuan\",\"\u5186\":\"yen\",\"\uFDFC\":\"rial\",\"\uFEF5\":\"laa\",\"\uFEF7\":\"laa\",\"\uFEF9\":\"lai\",\"\uFEFB\":\"la\"}')\n var locales = JSON.parse('{\"bg\":{\"\u0419\":\"Y\",\"\u0426\":\"Ts\",\"\u0429\":\"Sht\",\"\u042A\":\"A\",\"\u042C\":\"Y\",\"\u0439\":\"y\",\"\u0446\":\"ts\",\"\u0449\":\"sht\",\"\u044A\":\"a\",\"\u044C\":\"y\"},\"de\":{\"\u00C4\":\"AE\",\"\u00E4\":\"ae\",\"\u00D6\":\"OE\",\"\u00F6\":\"oe\",\"\u00DC\":\"UE\",\"\u00FC\":\"ue\",\"\u00DF\":\"ss\",\"%\":\"prozent\",\"&\":\"und\",\"|\":\"oder\",\"\u2211\":\"summe\",\"\u221E\":\"unendlich\",\"\u2665\":\"liebe\"},\"es\":{\"%\":\"por ciento\",\"&\":\"y\",\"<\":\"menor que\",\">\":\"mayor que\",\"|\":\"o\",\"\u00A2\":\"centavos\",\"\u00A3\":\"libras\",\"\u00A4\":\"moneda\",\"\u20A3\":\"francos\",\"\u2211\":\"suma\",\"\u221E\":\"infinito\",\"\u2665\":\"amor\"},\"fr\":{\"%\":\"pourcent\",\"&\":\"et\",\"<\":\"plus petit\",\">\":\"plus grand\",\"|\":\"ou\",\"\u00A2\":\"centime\",\"\u00A3\":\"livre\",\"\u00A4\":\"devise\",\"\u20A3\":\"franc\",\"\u2211\":\"somme\",\"\u221E\":\"infini\",\"\u2665\":\"amour\"},\"pt\":{\"%\":\"porcento\",\"&\":\"e\",\"<\":\"menor\",\">\":\"maior\",\"|\":\"ou\",\"\u00A2\":\"centavo\",\"\u2211\":\"soma\",\"\u00A3\":\"libra\",\"\u221E\":\"infinito\",\"\u2665\":\"amor\"},\"uk\":{\"\u0418\":\"Y\",\"\u0438\":\"y\",\"\u0419\":\"Y\",\"\u0439\":\"y\",\"\u0426\":\"Ts\",\"\u0446\":\"ts\",\"\u0425\":\"Kh\",\"\u0445\":\"kh\",\"\u0429\":\"Shch\",\"\u0449\":\"shch\",\"\u0413\":\"H\",\"\u0433\":\"h\"},\"vi\":{\"\u0110\":\"D\",\"\u0111\":\"d\"},\"da\":{\"\u00D8\":\"OE\",\"\u00F8\":\"oe\",\"\u00C5\":\"AA\",\"\u00E5\":\"aa\",\"%\":\"procent\",\"&\":\"og\",\"|\":\"eller\",\"$\":\"dollar\",\"<\":\"mindre end\",\">\":\"st\u00F8rre end\"},\"nb\":{\"&\":\"og\",\"\u00C5\":\"AA\",\"\u00C6\":\"AE\",\"\u00D8\":\"OE\",\"\u00E5\":\"aa\",\"\u00E6\":\"ae\",\"\u00F8\":\"oe\"},\"it\":{\"&\":\"e\"},\"nl\":{\"&\":\"en\"},\"sv\":{\"&\":\"och\",\"\u00C5\":\"AA\",\"\u00C4\":\"AE\",\"\u00D6\":\"OE\",\"\u00E5\":\"aa\",\"\u00E4\":\"ae\",\"\u00F6\":\"oe\"}}')\n\n function replace (string, options) {\n if (typeof string !== 'string') {\n throw new Error('slugify: string argument expected')\n }\n\n options = (typeof options === 'string')\n ? {replacement: options}\n : options || {}\n\n var locale = locales[options.locale] || {}\n\n var replacement = options.replacement === undefined ? '-' : options.replacement\n\n var trim = options.trim === undefined ? true : options.trim\n\n var slug = string.normalize().split('')\n // replace characters based on charMap\n .reduce(function (result, ch) {\n var appendChar = locale[ch];\n if (appendChar === undefined) appendChar = charMap[ch];\n if (appendChar === undefined) appendChar = ch;\n if (appendChar === replacement) appendChar = ' ';\n return result + appendChar\n // remove not allowed characters\n .replace(options.remove || /[^\\w\\s$*_+~.()'\"!\\-:@]+/g, '')\n }, '');\n\n if (options.strict) {\n slug = slug.replace(/[^A-Za-z0-9\\s]/g, '');\n }\n\n if (trim) {\n slug = slug.trim()\n }\n\n // Replace spaces with replacement character, treating multiple consecutive\n // spaces as a single space.\n slug = slug.replace(/\\s+/g, replacement);\n\n if (options.lower) {\n slug = slug.toLowerCase()\n }\n\n return slug\n }\n\n replace.extend = function (customMap) {\n Object.assign(charMap, customMap)\n }\n\n return replace\n}))\n", "/* @ts-self-types=\"./index.d.ts\" */\nimport { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << Math.log2(alphabet.length - 1)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step | 0\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length >= size) return id\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size | 0, random)\nexport let nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array((size |= 0)))\n while (size--) {\n id += scopedUrlAlphabet[bytes[size] & 63]\n }\n return id\n}\n", "export const urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n", "import {\n type AttributeElements,\n type AttributeSettings,\n type OptionsSchema,\n} from '@adartem/adlib-utils';\n\nexport const MODULE_KEY = 'ad-toc' as const;\n\nexport const OPTIONS = {\n /**\n * Defines a [scroll-margin-top](https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-margin-top) value for the headers.\n */\n offsettop: { type: 'string', default: '' },\n\n /**\n * Defines a [scroll-margin-bottom](https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-margin-bottom) value for the headers.\n */\n offsetbottom: { type: 'string', default: '' },\n\n /**\n * Defines if the links hash should be removed from the URL.\n */\n hideurlhash: { type: 'boolean', default: false },\n\n /**\n * Enable or disable accessibility features (keyboard interaction, ARIA attributes).\n * Enabled by default, can be disabled by setting to \"false\".\n */\n a11y: { type: 'boolean', default: true },\n} as const satisfies OptionsSchema;\n\nexport const ELEMENTS = [\n /**\n * Defines the contents to use as the table source.\n */\n 'contents',\n\n /**\n * OPTIONAL. Defines the wrapper element that will hold all the TOC links.\n * If not defined, the library will use the immediate parent of the link template elements.\n */\n 'table',\n\n /**\n * Defines a link template element.\n * If the attribute is set to a non-link element, the library will look up for the first parent element that is a link.\n */\n 'link',\n\n /**\n * Defines an interaction trigger.\n * This attribute must be added to a hidden div and place it inside the correspondent link wrapper.\n * When the link is active, it will trigger the \"First Click\" interaction. When the link is unactive, it will trigger the \"Second Click\" interaction.\n */\n 'ix-trigger',\n] as const satisfies AttributeElements;\n\nexport const SETTINGS = {\n /**\n * Disables the TOC instance.\n */\n disabled: { key: 'disabled', values: ['true'] },\n\n /**\n * Enable or disable accessibility features (keyboard interaction, ARIA attributes).\n * Enabled by default, can be disabled by setting to \"false\".\n */\n a11y: { key: 'a11y', values: ['false'] },\n} as const satisfies AttributeSettings;\n\nexport const DEFAULT_INITIAL_HEADING_LEVEL = 2;\nexport const ANCHOR_SELECTOR = `ad-toc-anchor`;\n\nconst ALLOWED_HEADINGS_REGEX = '[2-6]';\nexport const ALLOWED_HEADINGS_SELECTOR = 'h2, h3, h4, h5, h6';\n\nexport const OMIT_HEADING_REGEXP = new RegExp(`^\\\\[ad-toc-omit\\\\]`, 'i');\nexport const CUSTOM_HEADING_REGEXP = new RegExp(`^\\\\[ad-toc-h${ALLOWED_HEADINGS_REGEX}\\\\]`, 'i');\nexport const HEADING_LEVEL_REGEXP = new RegExp(ALLOWED_HEADINGS_REGEX);\nexport const ZERO_WIDTH_CHARS_REGEXP = /[\\u200B-\\u200D\\uFEFF]/g;\n", "import { generateSelectors } from '@adartem/adlib-utils';\n\nimport { ELEMENTS, MODULE_KEY, SETTINGS } from './constants';\n\nexport const {\n getInstance,\n getPresenceSelector,\n getElementSelector,\n getSettingSelector,\n queryElement,\n queryAllElements,\n getAttribute,\n hasAttributeValue,\n} = generateSelectors(MODULE_KEY, ELEMENTS, SETTINGS);\n", "import type { TOCItem } from '../components/TOCItem';\nimport { queryElement } from '../utils/selectors';\nimport type { ScrollOffsetStyles } from '../utils/types';\n\n/**\n * Sets scroll offset to all headings using CSS scroll-margin.\n * @param tocWrapper\n * @param tocItems\n * @param offsets\n *\n */\nexport const setScrollOffsets = (tocItems: TOCItem[], offsets: ScrollOffsetStyles) => {\n if (!Object.values(offsets).some(Boolean)) return;\n\n document.documentElement.style.scrollBehavior = 'smooth';\n\n for (const tocItem of tocItems) {\n tocItem.setScrollOffset(offsets);\n }\n};\n\n/**\n * Scrolls into view the currently active hash anchor in the URL, only if it's part of the table of contents.\n */\nexport const scrollToAnchor = () => {\n const { hash } = window.location;\n if (!hash) return;\n\n const id = hash.replace('#', '');\n const contentsElement = queryElement('contents');\n const headingWrapper = contentsElement?.querySelector(`[id=\"${id}\"]`);\n\n if (headingWrapper) headingWrapper.scrollIntoView({ behavior: 'smooth' });\n};\n", "import { HEADING_LEVEL_REGEXP } from './constants';\n\n/**\n * Extracts the heading level from a heading tag.\n * @param value The heading tag.\n *\n * @example ```\n * extractHeadingLevel('h2') // 2\n * extractHeadingLevel('h5') // 5\n * extractHeadingLevel('5') // 5\n * extractHeadingLevel('hh') // undefined\n * ```\n *\n */\nexport const extractHeadingLevel = (value: string) => {\n const rawLevel = value.match(HEADING_LEVEL_REGEXP)?.[0];\n if (!rawLevel) return;\n\n const level = parseInt(rawLevel);\n if (isNaN(level)) return;\n\n return level;\n};\n", "import { nanoid } from 'nanoid';\nimport slugify from 'slugify';\n\nimport { ZERO_WIDTH_CHARS_REGEXP } from '../utils/constants';\n\n/**\n * Creates a wrapper element for a heading and identifies it.\n * @param headingElement\n * @returns The new wrapper element.\n */\nexport const createHeadingWrapper = (headingElement: HTMLHeadingElement) => {\n const headingWrapper = document.createElement('div');\n\n const { id, textContent } = headingElement;\n const trimmedTextContent = textContent?.trim().replace(ZERO_WIDTH_CHARS_REGEXP, '');\n\n if (id) {\n headingElement.removeAttribute('id');\n headingWrapper.id = ensureUniqueId(id);\n } else if (trimmedTextContent) {\n const slugified = slugify(trimmedTextContent, { lower: true, strict: true });\n headingWrapper.id = ensureUniqueId(slugified);\n }\n\n headingWrapper.id ||= ensureUniqueId(nanoid(8));\n\n return headingWrapper;\n};\n\n/**\n * Ensures that an element ID is unique on the page by adding an index suffix if necessary.\n * @param requestedId\n * @returns The unique ID.\n */\nconst ensureUniqueId = (requestedId: string) => {\n let proposedId = requestedId;\n let index = 2;\n\n while (document.getElementById(proposedId)) {\n proposedId = `${requestedId}-${index}`;\n index += 1;\n }\n\n return proposedId;\n};\n", "import {\n ALLOWED_HEADINGS_SELECTOR,\n ANCHOR_SELECTOR,\n CUSTOM_HEADING_REGEXP,\n DEFAULT_INITIAL_HEADING_LEVEL,\n OMIT_HEADING_REGEXP,\n} from '../utils/constants';\nimport { extractHeadingLevel } from '../utils/helpers';\nimport { queryAllElements } from '../utils/selectors';\nimport type { HeadingData, LinkData } from '../utils/types';\nimport { createHeadingWrapper } from './create';\n\n/**\n * Collects the {@link HeadingData} of all heading elements.\n * @param contentsElement The element that holds all the contents.\n *\n * @returns A {@link HeadingData} array\n */\nexport const collectHeadingsData = ({ children }: HTMLElement) => {\n const headingsData: HeadingData[] = [];\n\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i];\n if (!child) continue;\n\n const headingElement = child.closest<HTMLParagraphElement>(ALLOWED_HEADINGS_SELECTOR);\n if (!headingElement) continue;\n\n const { tagName, textContent } = headingElement;\n if (!textContent) continue;\n\n const omit = textContent.match(OMIT_HEADING_REGEXP);\n if (omit) {\n headingElement.textContent = textContent.replace(OMIT_HEADING_REGEXP, '').trim();\n continue;\n }\n\n const [customTag] = textContent.match(CUSTOM_HEADING_REGEXP) || [];\n if (customTag)\n headingElement.textContent = textContent.replace(CUSTOM_HEADING_REGEXP, '').trim();\n\n const level = extractHeadingLevel(customTag || tagName);\n if (!level) continue;\n\n const headingWrapper = createHeadingWrapper(headingElement);\n if (!headingWrapper) continue;\n\n const { id } = headingWrapper;\n\n // Create a placeholder level memo when a heading level has been skipped\n // Example: the user added an <h5> after an <h3>, he skipped the <h4> level\n const [previousHeadingData] = headingsData;\n\n if (previousHeadingData?.level) {\n const correspondingLevel = previousHeadingData.level - 1;\n\n if (level < correspondingLevel) {\n for (let i = 1; i <= correspondingLevel - level; i++) {\n headingsData.unshift({ level: previousHeadingData.level - i });\n }\n }\n }\n\n // Render the wrapper\n headingElement.insertAdjacentElement('beforebegin', headingWrapper);\n\n // Group all lower elements under the wrapper\n const nextHeading = headingsData.find((headingData) => headingData.level <= level);\n const childrenSlice = Array.from(children).slice(i + 1);\n\n for (const element of childrenSlice) {\n if (element === nextHeading?.headingWrapper) break;\n\n headingWrapper.append(element);\n }\n\n // Store the data\n headingsData.unshift({\n level,\n headingElement,\n headingWrapper,\n id,\n });\n }\n\n return headingsData;\n};\n\n/**\n * Collects the template links data.\n * @param firstLinkTemplate\n * @returns A {@link LinkData} array.\n */\nexport const collectLinksData = (firstLinkTemplate: Element) => {\n const linksData: LinkData[] = [];\n\n const collectLinkData = (referenceNode: Element) => {\n // Query elements\n const linkElement = referenceNode.closest('a');\n if (!linkElement) return;\n\n const component = linkElement.parentElement;\n if (!component) return;\n\n // Get the link level\n const previousLevel = linksData[linksData.length - 1]?.level;\n const level = previousLevel ? previousLevel + 1 : DEFAULT_INITIAL_HEADING_LEVEL;\n\n linksData.push({\n linkElement,\n level,\n component,\n });\n\n // Get next link component\n const followingTextNodes = queryAllElements('link', { scope: component });\n const followingTextNode = followingTextNodes.find((node) => node !== referenceNode);\n\n if (!followingTextNode) return component;\n\n const followingComponent = collectLinkData(followingTextNode);\n\n // Place the anchor\n if (followingComponent) {\n const anchor = new Comment(ANCHOR_SELECTOR);\n component.insertBefore(anchor, followingComponent);\n followingComponent.remove();\n }\n\n return component;\n };\n\n // Init collection\n collectLinkData(firstLinkTemplate);\n\n return linksData;\n};\n", "import { createDelegation } from '@adartem/adlib-utils';\n\n/**\n * Prevents the TOC links from adding the hash in the URL.\n * @param tocWrapper\n * @param hideURLHash Defines if the URL hash should be hidden after clicking the links.\n *\n * @returns A callback to remove the event listener.\n */\nexport const listenTOCLinkClicks = (tocWrapper: HTMLElement, hideURLHash?: boolean) => {\n return createDelegation(\n 'a',\n {\n click: ({ event }) => {\n event.stopPropagation();\n\n if (!hideURLHash) return;\n\n window.setTimeout(() => {\n const { origin, pathname, search } = window.location;\n\n history.replaceState('', document.title, origin + pathname + search);\n });\n },\n },\n { root: tocWrapper },\n );\n};\n", "import { isHTMLAnchorElement } from '@adartem/adlib-utils';\n\nimport type { TOCItem } from '../components/TOCItem';\n\n/**\n * Observes when the TOC links' state changes.\n * @param tocWrapper\n * @param tocItems\n *\n * @returns The MutationObserver.\n */\nexport const observeLinksState = (tocWrapper: HTMLElement, tocItems: TOCItem[]) => {\n const observer = new MutationObserver((mutations) => {\n for (const { target } of mutations) {\n if (!isHTMLAnchorElement(target)) continue;\n\n const tocItem = tocItems.find(({ linkElement }) => linkElement === target);\n if (!tocItem) continue;\n\n tocItem.updateState();\n }\n });\n\n observer.observe(tocWrapper, {\n attributes: true,\n subtree: true,\n attributeFilter: ['class'],\n });\n\n return observer;\n};\n", "import { CURRENT_CSS_CLASS, Interaction } from '@adartem/adlib-utils';\n\nimport type { ScrollOffsetStyles, TOCData } from '../utils/types';\n\nexport class TOCItem implements TOCData {\n public readonly level: number;\n public readonly linkWrapper: HTMLElement;\n public readonly referenceNode: Element;\n public readonly anchor: Node;\n public readonly component: HTMLElement;\n public readonly linkElement: HTMLAnchorElement;\n public readonly headingElement?: HTMLHeadingElement;\n public readonly headingWrapper?: HTMLDivElement;\n public readonly id?: string;\n public readonly ixTrigger: HTMLElement | null;\n\n private readonly interaction?: Interaction;\n\n private currentState?: boolean;\n\n constructor({\n level,\n component,\n linkElement,\n linkWrapper,\n headingElement,\n headingWrapper,\n id,\n ixTrigger,\n referenceNode,\n anchor,\n }: TOCData) {\n this.level = level;\n this.linkWrapper = linkWrapper;\n this.referenceNode = referenceNode;\n this.anchor = anchor;\n this.component = component;\n this.linkElement = linkElement;\n this.headingElement = headingElement;\n this.headingWrapper = headingWrapper;\n this.id = id;\n this.ixTrigger = ixTrigger;\n this.interaction = ixTrigger ? new Interaction({ element: ixTrigger }) : undefined;\n\n this.#render();\n }\n\n /**\n * Populates and the link in the TOC.\n */\n #render() {\n const { headingElement, id, referenceNode, linkElement, linkWrapper, component, anchor } = this;\n\n if (headingElement && id) {\n referenceNode.textContent = headingElement.textContent;\n linkElement.href = `#${id}`;\n } else {\n linkElement.remove();\n }\n\n linkWrapper.insertBefore(component, anchor);\n }\n\n /**\n * Sets scroll offset to the heading using CSS scroll-margin.\n * @param offsets\n */\n public setScrollOffset(offsets: ScrollOffsetStyles) {\n const { headingWrapper } = this;\n\n if (headingWrapper) Object.assign(headingWrapper.style, offsets);\n }\n\n /**\n * Updates the `active` state of the link and triggers the correspondent interaction, if existing.\n */\n public updateState() {\n const { linkElement, interaction, currentState } = this;\n\n const isActive = linkElement.classList.contains(CURRENT_CSS_CLASS);\n\n if (isActive === currentState) return;\n\n interaction?.trigger(isActive ? 'first' : 'second');\n\n this.currentState = isActive;\n }\n}\n", "import { cloneNode } from '@adartem/adlib-utils';\n\nimport { TOCItem } from '../components/TOCItem';\nimport { ANCHOR_SELECTOR } from '../utils/constants';\nimport { getElementSelector, queryElement } from '../utils/selectors';\nimport type { HeadingData, LinkData } from '../utils/types';\n\n/**\n * Populates all links using the headings data.\n * @param headingsData\n * @param linksData\n * @param tocWrapper\n */\nexport const populateLinks = (\n headingsData: HeadingData[],\n linksData: LinkData[],\n tocWrapper: HTMLElement,\n) => {\n const tocItems: TOCItem[] = [];\n const levelsMemo: TOCItem[] = [];\n\n for (const headingData of headingsData) {\n // Get the corresponding link data\n const linkData = linksData.find((data) => data.level === headingData.level);\n if (!linkData) continue;\n\n // Get the level memo\n for (let i = levelsMemo.length - 1; i >= 0; i--) {\n if (headingData.level > levelsMemo[i].level) break;\n\n levelsMemo.pop();\n }\n\n const levelMemo = levelsMemo[levelsMemo.length - 1];\n\n // Create the component\n const linkWrapper = levelMemo?.component || tocWrapper;\n const component = cloneNode(linkData.component);\n\n const referenceNode = queryElement('link', { scope: component });\n if (!referenceNode) continue;\n\n const linkElement = referenceNode.closest('a');\n if (!linkElement) continue;\n\n const anchor = [...linkWrapper.childNodes].find(\n ({ nodeType, nodeValue }) => nodeType === 8 && nodeValue === ANCHOR_SELECTOR,\n );\n if (!anchor) continue;\n\n const ixTrigger = component.querySelector<HTMLElement>(\n `:scope > ${getElementSelector('ix-trigger')}`,\n );\n\n const tocItem = new TOCItem({\n linkWrapper,\n component,\n referenceNode,\n linkElement,\n ixTrigger,\n anchor,\n ...headingData,\n });\n\n // Store the new level memo\n if (!levelMemo || headingData.level > levelMemo.level) {\n levelsMemo.push(tocItem);\n }\n\n tocItems.push(tocItem);\n }\n\n return tocItems;\n};\n", "import { ANCHOR_SELECTOR } from '../utils/constants';\nimport { queryElement } from '../utils/selectors';\nimport type { LinkData } from '../utils/types';\n\n/**\n * Queries the TOC wrapper and replaces the template links for an anchor placeholder.\n * @param linksData\n * @param instance\n *\n * @returns The TOC wrapper element.\n */\nexport const prepareTOC = (\n [{ component: firstLinkComponent }]: LinkData[],\n instance: string | null,\n) => {\n const tocWrapper = queryElement('table', { instance }) || firstLinkComponent.parentElement;\n if (!tocWrapper) return;\n\n const anchor = new Comment(ANCHOR_SELECTOR);\n const isDirectChild = firstLinkComponent.parentElement === tocWrapper;\n\n if (isDirectChild) tocWrapper.insertBefore(anchor, firstLinkComponent);\n else tocWrapper.append(anchor);\n\n firstLinkComponent.remove();\n\n return tocWrapper;\n};\n", "import { readOptionsFromAttributes } from '@adartem/adlib-utils';\n\nimport { collectHeadingsData, collectLinksData } from './actions/collect';\nimport { listenTOCLinkClicks } from './actions/events';\nimport { observeLinksState } from './actions/observe';\nimport { populateLinks } from './actions/populate';\nimport { prepareTOC } from './actions/prepare';\nimport { setScrollOffsets } from './actions/scroll';\nimport { MODULE_KEY, OPTIONS } from './utils/constants';\nimport { getInstance, queryElement } from './utils/selectors';\n\n/**\n * Inits a TOC instance.\n * @param contentsElement\n * @returns\n */\nexport const initTOCInstance = (contentsElement: HTMLElement) => {\n const options = readOptionsFromAttributes(contentsElement, MODULE_KEY, OPTIONS, {\n includeGlobal: false,\n });\n\n const instance = getInstance(contentsElement);\n\n const linkTemplate = queryElement('link', { instance });\n if (!linkTemplate) return;\n\n const headingsData = collectHeadingsData(contentsElement);\n const linksData = collectLinksData(linkTemplate) || [];\n\n if (!headingsData.length || !linksData.length) return;\n\n const tocWrapper = prepareTOC(linksData, instance);\n if (!tocWrapper) return;\n\n const tocItems = populateLinks(headingsData, linksData, tocWrapper);\n\n // Scroll offset\n const { offsettop: scrollMarginTop, offsetbottom: scrollMarginBottom } = options;\n\n setScrollOffsets(tocItems, { scrollMarginTop, scrollMarginBottom });\n\n // Handle TOC link clicks\n const { hideurlhash: hideURLHash } = options;\n const removeListener = listenTOCLinkClicks(tocWrapper, hideURLHash);\n\n // Link States\n const observer = observeLinksState(tocWrapper, tocItems);\n\n return () => {\n removeListener();\n observer.disconnect();\n };\n};\n", "import {\n type AdLibAttributeInit,\n createCleanupBag,\n isNotEmpty,\n makeIdempotentDestroy,\n readOptionsFromAttributes,\n restartWebflow,\n runActivationPipeline,\n waitAttributeLoaded,\n waitWebflowReady,\n} from '@adartem/adlib-utils';\n\nimport { scrollToAnchor } from './actions/scroll';\nimport { initTOCInstance } from './factory';\nimport { MODULE_KEY, OPTIONS } from './utils/constants';\nimport { queryAllElements } from './utils/selectors';\n\ninterface ModuleDiagnostics {\n activeCount: number;\n disabledCount: number;\n guardFailedCount: number;\n lastNonActivationReason: 'disabled' | 'guard-failed' | null;\n}\n\n/**\n * Inits the attribute.\n */\nexport const init: AdLibAttributeInit = async () => {\n await waitWebflowReady();\n await waitAttributeLoaded('inject');\n\n let bag = createCleanupBag();\n let destroy = makeIdempotentDestroy(() => bag.run());\n\n const diagnostics: ModuleDiagnostics = {\n activeCount: 0,\n disabledCount: 0,\n guardFailedCount: 0,\n lastNonActivationReason: null,\n };\n\n const mount = async () => {\n const contentsElements = queryAllElements('contents');\n const cleanups: (() => void)[] = [];\n\n for (const contentsElement of contentsElements) {\n const result = await runActivationPipeline({\n el: contentsElement,\n moduleKey: MODULE_KEY,\n includeGlobal: false,\n guardsRegistry: {},\n readOptions: () =>\n readOptionsFromAttributes(contentsElement, MODULE_KEY, OPTIONS, {\n includeGlobal: false,\n }),\n action: () => {\n const cleanup = initTOCInstance(contentsElement);\n if (cleanup) {\n cleanups.push(cleanup);\n }\n },\n });\n\n if (result.ok) {\n diagnostics.activeCount++;\n } else if (result.reason === 'disabled') {\n diagnostics.disabledCount++;\n diagnostics.lastNonActivationReason = 'disabled';\n } else if (result.reason === 'guard-failed') {\n diagnostics.guardFailedCount++;\n diagnostics.lastNonActivationReason = 'guard-failed';\n }\n }\n\n cleanups.filter(isNotEmpty).forEach((cleanup) => bag.add(cleanup));\n\n // URL hash Anchor\n scrollToAnchor();\n\n if (cleanups.length) {\n await restartWebflow();\n }\n };\n\n await mount();\n\n return {\n result: { diagnostics },\n destroy() {\n destroy();\n },\n async restart() {\n bag.run();\n bag = createCleanupBag();\n destroy = makeIdempotentDestroy(() => bag.run());\n await mount();\n },\n };\n};\n", "{\n \"name\": \"@adartem/ad-toc\",\n \"version\": \"0.1.0\",\n \"description\": \"Automatically generate a table of contents based on heading tags. Works with Webflow Rich Text, Webflow \\\"Current\\\" class, and anchor scroll. CMS, static, and all text elements are supported.\",\n \"private\": false,\n \"type\": \"module\",\n \"types\": \"./dist/index.d.ts\",\n \"scripts\": {\n \"lint\": \"eslint ./src && prettier --check ./src\",\n \"lint:fix\": \"eslint ./src --fix && prettier --write ./src\",\n \"typecheck\": \"tsc --noEmit\",\n \"build\": \"tsup --config tsup.config.ts\",\n \"test\": \"vitest run -c ../../vitest.config.ts\",\n \"dev\": \"tsup --config tsup.config.ts --watch\"\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\"\n }\n },\n \"dependencies\": {\n \"@adartem/adlib-utils\": \"workspace:*\",\n \"nanoid\": \"^5.1.5\",\n \"slugify\": \"^1.6.6\"\n },\n \"files\": [\n \"dist\",\n \"README.md\",\n \"LICENSE\"\n ],\n \"sideEffects\": false,\n \"publishConfig\": {\n \"access\": \"public\"\n }\n}\n", "import { createCleanupBag, defineModule } from '@adartem/adlib-utils';\n\nimport { init as legacyInit } from './init';\nimport { MODULE_KEY } from './utils/constants';\n\nexport default defineModule({\n key: MODULE_KEY,\n init: async (core) => {\n void core;\n\n const bag = createCleanupBag();\n const res = await legacyInit();\n\n if (res && typeof (res as { destroy?: unknown }).destroy === 'function') {\n bag.add(() => {\n try {\n (res as { destroy: () => void }).destroy();\n } catch {\n // best-effort\n }\n });\n }\n\n const instance = {\n key: MODULE_KEY,\n destroy: () => bag.run(),\n };\n\n if (res && typeof (res as { restart?: unknown }).restart === 'function') {\n return {\n ...instance,\n restart: async () => {\n try {\n await (res as { restart: () => Promise<void> | void }).restart();\n } catch {\n // best-effort\n }\n },\n };\n }\n\n return instance;\n },\n});\n\nexport { version } from '../package.json';\nexport { init } from './init';\nexport { ELEMENTS, MODULE_KEY, SETTINGS } from './utils/constants';\n"],
5
+ "mappings": "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",
6
+ "names": ["MODULE_KEY", "OPTIONS", "ELEMENTS", "SETTINGS", "DEFAULT_INITIAL_HEADING_LEVEL", "ANCHOR_SELECTOR", "ALLOWED_HEADINGS_REGEX", "ALLOWED_HEADINGS_SELECTOR", "OMIT_HEADING_REGEXP", "CUSTOM_HEADING_REGEXP", "HEADING_LEVEL_REGEXP", "ZERO_WIDTH_CHARS_REGEXP", "getInstance", "getPresenceSelector", "getElementSelector", "getSettingSelector", "queryElement", "queryAllElements", "getAttribute", "hasAttributeValue", "generateSelectors", "setScrollOffsets", "tocItems", "offsets", "tocItem", "scrollToAnchor", "hash", "id", "headingWrapper", "extractHeadingLevel", "value", "rawLevel", "level", "createHeadingWrapper", "headingElement", "textContent", "trimmedTextContent", "ensureUniqueId", "slugified", "slugify", "nanoid", "requestedId", "proposedId", "index", "collectHeadingsData", "children", "headingsData", "i", "child", "tagName", "customTag", "previousHeadingData", "correspondingLevel", "nextHeading", "headingData", "childrenSlice", "element", "collectLinksData", "firstLinkTemplate", "linksData", "collectLinkData", "referenceNode", "linkElement", "component", "previousLevel", "followingTextNode", "node", "followingComponent", "anchor", "listenTOCLinkClicks", "tocWrapper", "hideURLHash", "createDelegation", "event", "origin", "pathname", "search", "observeLinksState", "observer", "mutations", "target", "isHTMLAnchorElement", "_TOCItem_instances", "render_fn", "TOCItem", "linkWrapper", "ixTrigger", "__privateAdd", "__publicField", "Interaction", "__privateMethod", "interaction", "currentState", "isActive", "CURRENT_CSS_CLASS", "populateLinks", "levelsMemo", "linkData", "data", "levelMemo", "cloneNode", "nodeType", "nodeValue", "prepareTOC", "firstLinkComponent", "instance", "initTOCInstance", "contentsElement", "options", "readOptionsFromAttributes", "linkTemplate", "scrollMarginTop", "scrollMarginBottom", "removeListener", "init", "waitWebflowReady", "waitAttributeLoaded", "bag", "createCleanupBag", "destroy", "makeIdempotentDestroy", "diagnostics", "mount", "contentsElements", "cleanups", "result", "runActivationPipeline", "cleanup", "isNotEmpty", "restartWebflow", "version", "index_default", "defineModule", "core", "res"]
7
+ }
@@ -0,0 +1,227 @@
1
+ import {
2
+ require_just_debounce
3
+ } from "./chunk-M2KO765Q.js";
4
+ import {
5
+ $n,
6
+ Dn,
7
+ Dt,
8
+ F,
9
+ Fn,
10
+ Ht,
11
+ Jo,
12
+ Kn,
13
+ Mn,
14
+ Ne,
15
+ Nt,
16
+ Un,
17
+ Vn,
18
+ Vo,
19
+ Wt,
20
+ Xt,
21
+ __toESM,
22
+ _n,
23
+ an,
24
+ fo,
25
+ go,
26
+ init_live_reload,
27
+ or,
28
+ rr,
29
+ sn,
30
+ tn,
31
+ vn,
32
+ vo,
33
+ vt,
34
+ wn,
35
+ xo,
36
+ yo,
37
+ zo
38
+ } from "./chunk-IEGIKJKW.js";
39
+
40
+ // ../selectcustom/dist/index.js
41
+ init_live_reload();
42
+ var import_just_debounce = __toESM(require_just_debounce(), 1);
43
+ var m = "ad-selectcustom";
44
+ var D = ["dropdown", "label", "clear"];
45
+ var O = { a11y: { key: "a11y", values: ["false"] } };
46
+ var w = { hideinitial: { type: "boolean", default: false }, disabled: { type: "boolean", default: false }, a11y: { type: "boolean", default: true } };
47
+ var R = [fo, go, xo, yo];
48
+ var g = (t, o) => {
49
+ let { selectElement: e, optionsStore: s, label: a } = t;
50
+ o && Vo(e, o.value);
51
+ for (let c of s) {
52
+ let { element: l } = c, d = l === o?.element;
53
+ c.selected = d, l.classList[d ? "add" : "remove"](Ht), l.setAttribute(Un, `${d}`), l.setAttribute(vn, d ? "0" : "-1");
54
+ }
55
+ o && (a.textContent = o.text);
56
+ };
57
+ var S = (t, { optionsStore: o }) => {
58
+ let e = o.find(({ value: s }) => !s);
59
+ e && (e.hidden = !t, e.element.style.display = t ? "" : "none");
60
+ };
61
+ var Y = (t, { optionsStore: o }) => {
62
+ let { target: e } = t;
63
+ if (!tn(e)) return;
64
+ let s = e.closest("a");
65
+ if (!s) return;
66
+ let a = o.find(({ element: c }) => c === s);
67
+ if (a) return a;
68
+ };
69
+ var v = (t, o) => {
70
+ if (t.target === o.selectElement) return;
71
+ t.preventDefault();
72
+ let e = Y(t, o);
73
+ e && (e.selected || g(o, e), vo(o.dropdownToggle));
74
+ };
75
+ var at = (t, { dropdownToggle: o }) => {
76
+ let { shiftKey: e } = t;
77
+ e && t.preventDefault(), vo(o, e);
78
+ };
79
+ var lt = ({ key: t }, { optionsStore: o }) => {
80
+ let e = o.findIndex(({ focused: a }) => a);
81
+ if (e < 0) return;
82
+ o[t === xo ? e - 1 : e + 1]?.element.focus();
83
+ };
84
+ var k = (t, o) => {
85
+ let { key: e } = t;
86
+ R.includes(e) && (e === fo ? v(t, o) : e === go ? at(t, o) : (e === xo || e === yo) && lt(t, o));
87
+ };
88
+ var L = (t, o, e) => {
89
+ let s = Y(t, e);
90
+ s && (s.focused = o);
91
+ };
92
+ var P = ({ key: t }, { optionsStore: o }) => {
93
+ if (t !== yo) return;
94
+ let e = o.find(({ hidden: s }) => !s);
95
+ e && e.element.focus();
96
+ };
97
+ var F2 = (t) => {
98
+ let { selectElement: o, optionsStore: e } = t, s = e.find(({ value: a }) => a === o.value);
99
+ s && g(t, s);
100
+ };
101
+ var B = (t, o) => {
102
+ t.setAttribute(Kn, Dn.listbox), o.setAttribute(Mn, Dn.listbox), o.setAttribute(Fn, "false");
103
+ };
104
+ var W = (t) => {
105
+ t.setAttribute(Mn, Dn.option);
106
+ };
107
+ var A = (t) => {
108
+ let { optionsStore: o, optionTemplate: e, optionsList: s, emptyOption: a, hideInitial: c, selectElement: { options: l, value: d } } = t;
109
+ for (let { element: u } of o.values()) u.remove();
110
+ o.splice(0, o.length);
111
+ let p;
112
+ for (let { value: u, text: f, disabled: n, hidden: i } of l) {
113
+ if (n || i) continue;
114
+ let r;
115
+ if (!u && a) r = F(a);
116
+ else {
117
+ r = F(e);
118
+ let b = Ne(r) || r;
119
+ b.textContent = f;
120
+ }
121
+ W(r), s.appendChild(r);
122
+ let E = u === d, y = { text: f, value: u, element: r, selected: E, focused: false };
123
+ E && (p = y), o.push(y);
124
+ }
125
+ g(t, p), c && S(!!p?.value, t);
126
+ };
127
+ var mt = (t) => {
128
+ let { dropdownToggle: o, dropdownList: e, optionsStore: s, hideInitial: a } = t, c = (0, import_just_debounce.default)(() => {
129
+ let d = s.find(({ selected: f }) => f), p = s.find(({ hidden: f }) => !f);
130
+ if (!d || !p) return;
131
+ if (o.getAttribute($n) === "true") {
132
+ d.hidden ? p.element.focus() : d.element.focus();
133
+ return;
134
+ }
135
+ a && window.requestAnimationFrame(() => S(!!d.value, t));
136
+ }, 20), l = new MutationObserver(c);
137
+ return l.observe(e, { attributes: true, attributeFilter: ["class", "style"] }), l;
138
+ };
139
+ var Et = (t) => {
140
+ let { selectElement: o } = t, e = (0, import_just_debounce.default)((a) => {
141
+ a.some(({ addedNodes: l, removedNodes: d, target: p }) => [...l, ...d, p].some(an)) && A(t);
142
+ }, 100), s = new MutationObserver(e);
143
+ return s.observe(o, { childList: true, subtree: true, attributeFilter: ["hidden", "disabled", "label"] }), s;
144
+ };
145
+ var V = (t) => {
146
+ let o = mt(t), e = Et(t);
147
+ return () => {
148
+ o.disconnect(), e.disconnect();
149
+ };
150
+ };
151
+ var { getInstance: Zt, getPresenceSelector: te, getElementSelector: $, getSettingSelector: ee, queryElement: x, queryAllElements: G, getAttribute: oe, hasAttributeValue: ne } = Jo(m, D, O);
152
+ var X = (t, o) => {
153
+ let e = [], s = t.closest(`.${Wt.dropdown}`);
154
+ if (!s) return;
155
+ let a = s.querySelector("select");
156
+ if (!a) return;
157
+ let c = s.querySelector(`.${Wt.dropdownToggle}`), l = s.querySelector(`.${Wt.dropdownList}`);
158
+ if (!c || !l) return;
159
+ B(c, l);
160
+ let d = x("label", { scope: c }) || Ne(c) || c, p = l.querySelector(`a:not(${$("clear")})`);
161
+ if (!sn(p)) return;
162
+ let u = p.parentElement;
163
+ if (!u) return;
164
+ let f = x("clear", { scope: l });
165
+ for (let n of [p, f]) n && (n.href = "#", n.setAttribute(vn, "-1"), n.removeAttribute(Vn), n.remove());
166
+ return { optionsStore: e, selectElement: a, dropdownToggle: c, dropdownList: l, label: d, optionTemplate: p, optionsList: u, emptyOption: f, hideInitial: o };
167
+ };
168
+ var C = async () => {
169
+ await rr(), await or("list");
170
+ let t = Nt(), o = G("dropdown"), e = { activeCount: 0, disabledCount: 0, guardFailedCount: 0 }, s = [], a = [];
171
+ for (let n of o) {
172
+ let i = await Xt({ el: n, moduleKey: m, includeGlobal: false, guardsRegistry: {}, readOptions: () => zo(n, m, w, { includeGlobal: false }), action: (r) => {
173
+ let E = X(n, r.hideinitial ?? false);
174
+ if (!E) return;
175
+ A(E);
176
+ let y = V(E), b = { settings: E, a11yEnabled: r.a11y !== false };
177
+ a.push(b), r.a11y !== false && Dt(E.dropdownToggle), t.add(() => {
178
+ y();
179
+ let K = a.indexOf(b);
180
+ K >= 0 && a.splice(K, 1);
181
+ }), s.push(n);
182
+ } });
183
+ i.ok ? e.activeCount++ : i.reason === "disabled" ? (e.disabledCount++, e.lastNonActivationReason = "disabled") : i.reason === "guard-failed" && (e.guardFailedCount++, e.lastNonActivationReason = "guard-failed");
184
+ }
185
+ let c = (n) => a.find((i) => i.settings.dropdownToggle === n || i.settings.dropdownToggle.contains(n)), l = (n) => a.find((i) => i.settings.dropdownList === n || i.settings.dropdownList.contains(n)), d = (n) => a.find((i) => i.settings.selectElement === n), p = _n(`.${Wt.dropdownToggle}`, { keydown: ({ event: n, el: i }) => {
186
+ let r = c(i);
187
+ r && (P(n, r.settings), r.a11yEnabled && vt(n) && (n.preventDefault(), i.click()));
188
+ } }), u = _n(`.${Wt.dropdownList}`, { click: ({ event: n, el: i }) => {
189
+ let r = l(i);
190
+ r && v(n, r.settings);
191
+ }, keydown: ({ event: n, el: i }) => {
192
+ let r = l(i);
193
+ r && k(n, r.settings);
194
+ }, focusin: ({ event: n, el: i }) => {
195
+ let r = l(i);
196
+ r && L(n, true, r.settings);
197
+ }, focusout: ({ event: n, el: i }) => {
198
+ let r = l(i);
199
+ r && L(n, false, r.settings);
200
+ } }), f = _n("select", { change: ({ el: n }) => {
201
+ let i = d(n);
202
+ i && F2(i.settings);
203
+ } });
204
+ return t.add(p), t.add(u), t.add(f), { result: { dropdowns: s, diagnostics: e }, destroy() {
205
+ t.run();
206
+ } };
207
+ };
208
+ var _t = "0.1.0";
209
+ var De = wn({ key: m, init: async (t) => {
210
+ let o = Nt(), e = await C();
211
+ return e && typeof e.destroy == "function" && o.add(() => {
212
+ try {
213
+ e.destroy();
214
+ } catch {
215
+ }
216
+ }), { key: m, destroy: () => o.run() };
217
+ } });
218
+ export {
219
+ D as ELEMENTS,
220
+ m as MODULE_KEY,
221
+ w as OPTIONS,
222
+ O as SETTINGS,
223
+ De as default,
224
+ C as init,
225
+ _t as version
226
+ };
227
+ //# sourceMappingURL=dist-6YSNCGWO.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../selectcustom/src/utils/constants.ts", "../../selectcustom/src/actions/state.ts", "../../selectcustom/src/actions/events.ts", "../../selectcustom/src/actions/a11y.ts", "../../selectcustom/src/actions/populate.ts", "../../selectcustom/src/actions/observe.ts", "../../selectcustom/src/utils/selectors.ts", "../../selectcustom/src/actions/settings.ts", "../../selectcustom/src/init.ts", "../../selectcustom/package.json", "../../selectcustom/src/index.ts"],
4
+ "sourcesContent": ["import {\n ARROW_DOWN_KEY,\n ARROW_UP_KEY,\n type AttributeElements,\n type AttributeSettings,\n type OptionsSchema,\n SPACE_KEY,\n TAB_KEY,\n} from '@adartem/adlib-utils';\n\nexport const MODULE_KEY = 'ad-selectcustom' as const;\n\nexport const ELEMENTS = [\n /**\n * Defines a dropdown element.\n */\n 'dropdown',\n\n /**\n * Defines the label that displays the currently selected option.\n */\n 'label',\n\n /**\n * Defines an option that will remove the selected value.\n */\n 'clear',\n] as const satisfies AttributeElements;\n\nexport const SETTINGS = {\n /**\n * Enable or disable accessibility features (keyboard interaction, ARIA attributes).\n * Enabled by default, can be disabled by setting to \"false\".\n */\n a11y: { key: 'a11y', values: ['false'] },\n} as const satisfies AttributeSettings;\n\nexport const OPTIONS = {\n /**\n * Defines if the reset option should be hidden whenever there isn't an active selection.\n */\n hideinitial: { type: 'boolean', default: false },\n\n /**\n * Disables this select dropdown.\n */\n disabled: { type: 'boolean', default: false },\n\n a11y: { type: 'boolean', default: true },\n} as const satisfies OptionsSchema;\n\nexport const CONTROL_KEYS = [SPACE_KEY, TAB_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY];\n", "import {\n ARIA_SELECTED_KEY,\n CURRENT_CSS_CLASS,\n setFormFieldValue,\n TABINDEX_KEY,\n} from '@adartem/adlib-utils';\n\nimport type { OptionData, Settings } from '../utils/types';\n\n/**\n * Sets the selected state to an option and removes it from a previous one, if existing.\n * @param settings The instance {@link Settings}.\n * @param selectedOption The selected {@link OptionData}, if existing.\n */\nexport const updateOptionsState = (settings: Settings, selectedOption?: OptionData) => {\n const { selectElement, optionsStore, label } = settings;\n\n if (selectedOption) setFormFieldValue(selectElement, selectedOption.value);\n\n for (const optionData of optionsStore) {\n const { element } = optionData;\n\n const selected = element === selectedOption?.element;\n\n optionData.selected = selected;\n\n element.classList[selected ? 'add' : 'remove'](CURRENT_CSS_CLASS);\n element.setAttribute(ARIA_SELECTED_KEY, `${selected}`);\n element.setAttribute(TABINDEX_KEY, selected ? '0' : '-1');\n }\n\n if (selectedOption) label.textContent = selectedOption.text;\n};\n\n/**\n * Toggles the visibility of the reset option.\n * @param show `true` to show, `false` to hide.\n * @param settings The instance {@link Settings}.\n */\nexport const toggleResetVisibility = (show: boolean, { optionsStore }: Settings) => {\n const resetOption = optionsStore.find(({ value }) => !value);\n if (!resetOption) return;\n\n resetOption.hidden = !show;\n resetOption.element.style.display = show ? '' : 'none';\n};\n", "import {\n ARROW_DOWN_KEY,\n ARROW_UP_KEY,\n closeDropdown,\n isElement,\n SPACE_KEY,\n TAB_KEY,\n} from '@adartem/adlib-utils';\n\nimport { CONTROL_KEYS } from '../utils/constants';\nimport type { Settings } from '../utils/types';\nimport { updateOptionsState } from './state';\n\n/**\n * Returns the {@link OptionData} of an event target.\n *\n * @param e The Event object.\n * @param settings The instance {@link Settings}.\n *\n * @returns The {@link OptionData} object, if found.\n */\nconst getClickedOptionData = (e: Event, { optionsStore }: Settings) => {\n const { target } = e;\n\n if (!isElement(target)) return;\n\n const optionElement = target.closest('a');\n if (!optionElement) return;\n\n const optionData = optionsStore.find(({ element }) => element === optionElement);\n if (!optionData) return;\n\n return optionData;\n};\n\n/**\n * Handles click events on the dropdown list.\n * @param e The Event object.\n * @param settings The instance {@link Settings}.\n */\nexport const handleDropdownListClickEvents = (\n e: MouseEvent | KeyboardEvent,\n settings: Settings,\n) => {\n if (e.target === settings.selectElement) return;\n\n e.preventDefault();\n\n const optionData = getClickedOptionData(e, settings);\n if (!optionData) return;\n\n if (!optionData.selected) updateOptionsState(settings, optionData);\n\n closeDropdown(settings.dropdownToggle);\n};\n\n/**\n * Handles tab key events on the dropdown list.\n * @param e The Event object.\n * @param settings The instance {@link Settings}.\n */\nconst handleTabKeyEvents = (e: KeyboardEvent, { dropdownToggle }: Settings) => {\n const { shiftKey } = e;\n\n if (shiftKey) e.preventDefault();\n\n closeDropdown(dropdownToggle, shiftKey);\n};\n\n/**\n * Handles arrow keys events on the dropdown list.\n * @param e The Event object.\n * @param settings The instance {@link Settings}.\n */\nconst handleDropdownListArrowKeyEvents = ({ key }: KeyboardEvent, { optionsStore }: Settings) => {\n const focusedOptionIndex = optionsStore.findIndex(({ focused }) => focused);\n if (focusedOptionIndex < 0) return;\n\n const nextOption =\n optionsStore[key === ARROW_UP_KEY ? focusedOptionIndex - 1 : focusedOptionIndex + 1];\n nextOption?.element.focus();\n};\n\n/**\n * Handles keyboard events on the dropdown list.\n * @param e The Event object.\n * @param settings The instance {@link Settings}.\n */\nexport const handleDropdownListKeydownEvents = (e: KeyboardEvent, settings: Settings) => {\n const { key } = e;\n\n if (!CONTROL_KEYS.includes(key)) return;\n\n if (key === SPACE_KEY) handleDropdownListClickEvents(e, settings);\n else if (key === TAB_KEY) handleTabKeyEvents(e, settings);\n else if (key === ARROW_UP_KEY || key === ARROW_DOWN_KEY)\n handleDropdownListArrowKeyEvents(e, settings);\n};\n\n/**\n * Handles focus events on the dropdown list.\n * @param e The Event object.\n * @param settings The instance {@link Settings}.\n */\nexport const handleDropdownListFocusEvents = (\n e: FocusEvent,\n focused: boolean,\n settings: Settings,\n) => {\n const optionData = getClickedOptionData(e, settings);\n if (!optionData) return;\n\n optionData.focused = focused;\n};\n\n/**\n * Handles arrow keys events on the dropdown toggle.\n * @param e The Event object.\n * @param settings The instance {@link Settings}.\n */\nexport const handleDropdownToggleArrowKeyEvents = (\n { key }: KeyboardEvent,\n { optionsStore }: Settings,\n) => {\n if (key !== ARROW_DOWN_KEY) return;\n\n const firstOption = optionsStore.find(({ hidden }) => !hidden);\n if (!firstOption) return;\n\n firstOption.element.focus();\n};\n\n/**\n * Adds two way data binding.\n * Handles `change` events on the hidden `selectElement` and updates the dropdown.\n * @param settings The instance {@link Settings}.\n */\nexport const handleSelectChangeEvents = (settings: Settings) => {\n const { selectElement, optionsStore } = settings;\n\n const selectedOption = optionsStore.find(({ value }) => value === selectElement.value);\n if (!selectedOption) return;\n\n updateOptionsState(settings, selectedOption);\n};\n", "import {\n ARIA_HASPOPUP_KEY,\n ARIA_MULTISELECTABLE_KEY,\n ARIA_ROLE_KEY,\n ARIA_ROLE_VALUES,\n type DropdownList,\n type DropdownToggle,\n} from '@adartem/adlib-utils';\n\nimport type { OptionData } from '../utils/types';\n\n/**\n * Adds `a11ty` attributes to the Dropdown elements.\n * @param dropdownToggle The {@link DropdownToggle} element.\n * @param dropdownList The {@link DropdownList} element.\n */\nexport const setDropdownAria = (dropdownToggle: DropdownToggle, dropdownList: DropdownList) => {\n dropdownToggle.setAttribute(ARIA_HASPOPUP_KEY, ARIA_ROLE_VALUES.listbox);\n dropdownList.setAttribute(ARIA_ROLE_KEY, ARIA_ROLE_VALUES.listbox);\n dropdownList.setAttribute(ARIA_MULTISELECTABLE_KEY, 'false');\n};\n\n/**\n * Sets the required aria attributes to a custom option element.\n * @param element\n */\nexport const setOptionAria = (element: OptionData['element']) => {\n element.setAttribute(ARIA_ROLE_KEY, ARIA_ROLE_VALUES.option);\n};\n", "import { cloneNode, findTextNode } from '@adartem/adlib-utils';\n\nimport type { OptionData, Settings } from '../utils/types';\nimport { setOptionAria } from './a11y';\nimport { toggleResetVisibility, updateOptionsState } from './state';\n\n/**\n * Populates the custom options based on the `HTMLSelectElement`'s options.\n * @param settings The instance {@link Settings}.\n */\nexport const populateOptions = (settings: Settings) => {\n const {\n optionsStore,\n optionTemplate,\n optionsList,\n emptyOption,\n hideInitial,\n selectElement: { options, value: currentValue },\n } = settings;\n\n // Clear existing options\n for (const { element } of optionsStore.values()) {\n element.remove();\n }\n\n optionsStore.splice(0, optionsStore.length);\n\n let selectedOption: OptionData | undefined;\n\n // Create new options\n for (const { value, text, disabled, hidden } of options) {\n if (disabled || hidden) continue;\n\n let element: HTMLAnchorElement | undefined;\n\n if (!value && emptyOption) {\n element = cloneNode(emptyOption);\n } else {\n element = cloneNode(optionTemplate);\n\n const textNode = findTextNode(element) || element;\n textNode.textContent = text;\n }\n\n setOptionAria(element);\n\n optionsList.appendChild(element);\n\n const selected = value === currentValue;\n\n const optionData: OptionData = {\n text,\n value,\n element,\n selected,\n focused: false,\n };\n\n if (selected) selectedOption = optionData;\n\n optionsStore.push(optionData);\n }\n\n updateOptionsState(settings, selectedOption);\n\n if (hideInitial) {\n toggleResetVisibility(!!selectedOption?.value, settings);\n }\n};\n", "import { ARIA_EXPANDED_KEY, isHTMLOptionElement } from '@adartem/adlib-utils';\nimport debounce from 'just-debounce';\n\nimport type { Settings } from '../utils/types';\nimport { populateOptions } from './populate';\nimport { toggleResetVisibility } from './state';\n\n/**\n * Observes when the dropdown list is opened/closed.\n * @param settings The instance {@link Settings}.\n *\n * @returns The MutationObserver.\n */\nconst observeDropdownList = (settings: Settings) => {\n const { dropdownToggle, dropdownList, optionsStore, hideInitial } = settings;\n\n const callback: MutationCallback = debounce(() => {\n const selectedOption = optionsStore.find(({ selected }) => selected);\n const firstNonHiddenOption = optionsStore.find(({ hidden }) => !hidden);\n\n if (!selectedOption || !firstNonHiddenOption) return;\n\n const isOpen = dropdownToggle.getAttribute(ARIA_EXPANDED_KEY) === 'true';\n\n if (isOpen) {\n if (selectedOption.hidden) firstNonHiddenOption.element.focus();\n else selectedOption.element.focus();\n\n return;\n }\n\n if (hideInitial)\n window.requestAnimationFrame(() => toggleResetVisibility(!!selectedOption.value, settings));\n }, 20);\n\n const observer = new MutationObserver(callback);\n\n observer.observe(dropdownList, {\n attributes: true,\n attributeFilter: ['class', 'style'],\n });\n\n return observer;\n};\n\n/**\n * Observes changes in the {@link HTMLSelectElement} options.\n * @param settings The instance {@link Settings}.\n *\n * @returns The MutationObserver.\n */\nconst observeSelectElement = (settings: Settings) => {\n const { selectElement } = settings;\n\n const callback = debounce<MutationCallback>((mutations) => {\n const hasMutatedOptions = mutations.some(({ addedNodes, removedNodes, target }) =>\n [...addedNodes, ...removedNodes, target].some(isHTMLOptionElement),\n );\n\n if (hasMutatedOptions) populateOptions(settings);\n }, 100);\n\n const observer = new MutationObserver(callback);\n\n observer.observe(selectElement, {\n childList: true,\n subtree: true,\n attributeFilter: ['hidden', 'disabled', 'label'],\n });\n\n return observer;\n};\n\n/**\n * Observes mutations on elements of the instance.\n * @param settings The instance {@link Settings}.\n *\n * @returns A callback to destroy the MutationObservers.\n */\nexport const observeElements = (settings: Settings) => {\n const dropdownListObserver = observeDropdownList(settings);\n const selectElementObserver = observeSelectElement(settings);\n\n return () => {\n dropdownListObserver.disconnect();\n selectElementObserver.disconnect();\n };\n};\n", "import { generateSelectors } from '@adartem/adlib-utils';\n\nimport { ELEMENTS, MODULE_KEY, SETTINGS } from './constants';\n\nexport const {\n getInstance,\n getPresenceSelector,\n getElementSelector,\n getSettingSelector,\n queryElement,\n queryAllElements,\n getAttribute,\n hasAttributeValue,\n} = generateSelectors(MODULE_KEY, ELEMENTS, SETTINGS);\n", "import {\n ARIA_CURRENT_KEY,\n DROPDOWN_CSS_CLASSES,\n type DropdownElement,\n type DropdownList,\n type DropdownToggle,\n findTextNode,\n isHTMLAnchorElement,\n TABINDEX_KEY,\n} from '@adartem/adlib-utils';\n\nimport { getElementSelector, queryElement } from '../utils/selectors';\nimport type { OptionsStore } from '../utils/types';\nimport { setDropdownAria } from './a11y';\n\n/**\n * Collects the required elements/settings for the setup.\n * @param dropdown The {@link Dropdown} element.\n */\nexport const collectSettings = (referenceElement: HTMLElement, hideInitial: boolean) => {\n const optionsStore: OptionsStore = [];\n\n const dropdown = referenceElement.closest<DropdownElement>(`.${DROPDOWN_CSS_CLASSES.dropdown}`);\n if (!dropdown) return;\n\n const selectElement = dropdown.querySelector('select');\n if (!selectElement) return;\n\n const dropdownToggle = dropdown.querySelector<DropdownToggle>(\n `.${DROPDOWN_CSS_CLASSES.dropdownToggle}`,\n );\n const dropdownList = dropdown.querySelector<DropdownList>(\n `.${DROPDOWN_CSS_CLASSES.dropdownList}`,\n );\n if (!dropdownToggle || !dropdownList) return;\n\n setDropdownAria(dropdownToggle, dropdownList);\n\n const label =\n queryElement('label', { scope: dropdownToggle }) ||\n findTextNode(dropdownToggle) ||\n dropdownToggle;\n\n const optionTemplate = dropdownList.querySelector(`a:not(${getElementSelector('clear')})`);\n\n if (!isHTMLAnchorElement(optionTemplate)) return;\n\n const optionsList = optionTemplate.parentElement;\n if (!optionsList) return;\n\n const emptyOption = queryElement<HTMLAnchorElement>('clear', { scope: dropdownList });\n\n for (const element of [optionTemplate, emptyOption]) {\n if (!element) continue;\n\n element.href = '#';\n element.setAttribute(TABINDEX_KEY, '-1');\n element.removeAttribute(ARIA_CURRENT_KEY);\n element.remove();\n }\n\n return {\n optionsStore,\n selectElement,\n dropdownToggle,\n dropdownList,\n label,\n optionTemplate,\n optionsList,\n emptyOption,\n hideInitial,\n };\n};\n", "import {\n type AdLibAttributeInit,\n createCleanupBag,\n createDelegation,\n DROPDOWN_CSS_CLASSES,\n ensureButtonLike,\n isActivationKey,\n readOptionsFromAttributes,\n runActivationPipeline,\n waitAttributeLoaded,\n waitWebflowReady,\n} from '@adartem/adlib-utils';\n\nimport {\n handleDropdownListClickEvents,\n handleDropdownListFocusEvents,\n handleDropdownListKeydownEvents,\n handleDropdownToggleArrowKeyEvents,\n handleSelectChangeEvents,\n} from './actions/events';\nimport { observeElements } from './actions/observe';\nimport { populateOptions } from './actions/populate';\nimport { collectSettings } from './actions/settings';\nimport { MODULE_KEY, OPTIONS } from './utils/constants';\nimport { queryAllElements } from './utils/selectors';\nimport type { Settings } from './utils/types';\n\ninterface ModuleDiagnostics {\n activeCount: number;\n disabledCount: number;\n guardFailedCount: number;\n lastNonActivationReason?: 'disabled' | 'guard-failed';\n}\n\ninterface InstanceData {\n settings: Settings;\n a11yEnabled: boolean;\n}\n\n/**\n * Inits the attribute.\n */\nexport const init: AdLibAttributeInit = async () => {\n await waitWebflowReady();\n await waitAttributeLoaded('list');\n\n const bag = createCleanupBag();\n const referenceElements = queryAllElements('dropdown');\n\n const diagnostics: ModuleDiagnostics = {\n activeCount: 0,\n disabledCount: 0,\n guardFailedCount: 0,\n };\n\n const activeDropdowns: Element[] = [];\n const allInstances: InstanceData[] = [];\n\n for (const referenceElement of referenceElements) {\n const result = await runActivationPipeline({\n el: referenceElement,\n moduleKey: MODULE_KEY,\n includeGlobal: false,\n guardsRegistry: {},\n readOptions: () =>\n readOptionsFromAttributes(referenceElement, MODULE_KEY, OPTIONS, {\n includeGlobal: false,\n }),\n action: (options) => {\n const settings = collectSettings(referenceElement, options.hideinitial ?? false);\n if (!settings) return;\n\n populateOptions(settings);\n const disconnectObservers = observeElements(settings);\n\n const instanceData: InstanceData = {\n settings,\n a11yEnabled: options.a11y !== false,\n };\n allInstances.push(instanceData);\n\n // A11y: make the dropdown toggle keyboard accessible\n if (options.a11y !== false) {\n ensureButtonLike(settings.dropdownToggle);\n }\n\n bag.add(() => {\n disconnectObservers();\n const idx = allInstances.indexOf(instanceData);\n if (idx >= 0) allInstances.splice(idx, 1);\n });\n\n activeDropdowns.push(referenceElement);\n },\n });\n\n if (result.ok) {\n diagnostics.activeCount++;\n } else if (result.reason === 'disabled') {\n diagnostics.disabledCount++;\n diagnostics.lastNonActivationReason = 'disabled';\n } else if (result.reason === 'guard-failed') {\n diagnostics.guardFailedCount++;\n diagnostics.lastNonActivationReason = 'guard-failed';\n }\n }\n\n // Lookup helpers\n const findInstanceByToggle = (el: Element) =>\n allInstances.find(\n (d) => d.settings.dropdownToggle === el || d.settings.dropdownToggle.contains(el),\n );\n\n const findInstanceByList = (el: Element) =>\n allInstances.find(\n (d) => d.settings.dropdownList === el || d.settings.dropdownList.contains(el),\n );\n\n const findInstanceBySelect = (el: Element) =>\n allInstances.find((d) => d.settings.selectElement === el);\n\n // Delegation: dropdown toggle keydown (arrow down + a11y Enter/Space)\n const destroyToggleDelegation = createDelegation(`.${DROPDOWN_CSS_CLASSES.dropdownToggle}`, {\n keydown: ({ event, el }) => {\n const instance = findInstanceByToggle(el);\n if (!instance) return;\n\n handleDropdownToggleArrowKeyEvents(event, instance.settings);\n\n if (instance.a11yEnabled && isActivationKey(event)) {\n event.preventDefault();\n (el as HTMLElement).click();\n }\n },\n });\n\n // Delegation: dropdown list click + keydown + focus\n const destroyListDelegation = createDelegation(`.${DROPDOWN_CSS_CLASSES.dropdownList}`, {\n click: ({ event, el }) => {\n const instance = findInstanceByList(el);\n if (!instance) return;\n handleDropdownListClickEvents(event, instance.settings);\n },\n keydown: ({ event, el }) => {\n const instance = findInstanceByList(el);\n if (!instance) return;\n handleDropdownListKeydownEvents(event, instance.settings);\n },\n focusin: ({ event, el }) => {\n const instance = findInstanceByList(el);\n if (!instance) return;\n handleDropdownListFocusEvents(event, true, instance.settings);\n },\n focusout: ({ event, el }) => {\n const instance = findInstanceByList(el);\n if (!instance) return;\n handleDropdownListFocusEvents(event, false, instance.settings);\n },\n });\n\n // Delegation: select element change (2-way data binding)\n const destroySelectDelegation = createDelegation('select', {\n change: ({ el }) => {\n const instance = findInstanceBySelect(el);\n if (!instance) return;\n handleSelectChangeEvents(instance.settings);\n },\n });\n\n bag.add(destroyToggleDelegation);\n bag.add(destroyListDelegation);\n bag.add(destroySelectDelegation);\n\n return {\n result: { dropdowns: activeDropdowns, diagnostics },\n destroy() {\n bag.run();\n },\n };\n};\n", "{\n \"name\": \"@adartem/ad-selectcustom\",\n \"version\": \"0.1.0\",\n \"description\": \"Create custom Select Dropdown components inside Webflow.\",\n \"private\": false,\n \"type\": \"module\",\n \"types\": \"./dist/index.d.ts\",\n \"scripts\": {\n \"lint\": \"eslint ./src && prettier --check ./src\",\n \"lint:fix\": \"eslint ./src --fix && prettier --write ./src\",\n \"typecheck\": \"tsc --noEmit\",\n \"build\": \"tsup --config tsup.config.ts\",\n \"test\": \"vitest run -c ../../vitest.config.ts\",\n \"dev\": \"tsup --config tsup.config.ts --watch\"\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\"\n }\n },\n \"dependencies\": {\n \"just-debounce\": \"^1.1.0\",\n \"@adartem/adlib-utils\": \"workspace:*\"\n },\n \"files\": [\n \"dist\",\n \"README.md\",\n \"LICENSE\"\n ],\n \"sideEffects\": false,\n \"publishConfig\": {\n \"access\": \"public\"\n }\n}\n", "import { createCleanupBag, defineModule } from '@adartem/adlib-utils';\n\nimport { init as legacyInit } from './init';\nimport { MODULE_KEY } from './utils/constants';\n\nexport default defineModule({\n key: MODULE_KEY,\n init: async (core) => {\n void core;\n\n const bag = createCleanupBag();\n const res = await legacyInit();\n\n if (res && typeof (res as { destroy?: unknown }).destroy === 'function') {\n bag.add(() => {\n try {\n (res as { destroy: () => void }).destroy();\n } catch {\n // best-effort\n }\n });\n }\n\n return {\n key: MODULE_KEY,\n destroy: () => bag.run(),\n };\n },\n});\n\nexport { version } from '../package.json';\nexport { init } from './init';\nexport { ELEMENTS, MODULE_KEY, OPTIONS, SETTINGS } from './utils/constants';\n"],
5
+ "mappings": "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",
6
+ "names": ["MODULE_KEY", "ELEMENTS", "SETTINGS", "OPTIONS", "CONTROL_KEYS", "SPACE_KEY", "TAB_KEY", "ARROW_UP_KEY", "ARROW_DOWN_KEY", "updateOptionsState", "settings", "selectedOption", "selectElement", "optionsStore", "label", "setFormFieldValue", "optionData", "element", "selected", "CURRENT_CSS_CLASS", "ARIA_SELECTED_KEY", "TABINDEX_KEY", "toggleResetVisibility", "show", "resetOption", "value", "getClickedOptionData", "e", "target", "isElement", "optionElement", "handleDropdownListClickEvents", "closeDropdown", "handleTabKeyEvents", "dropdownToggle", "shiftKey", "handleDropdownListArrowKeyEvents", "key", "focusedOptionIndex", "focused", "handleDropdownListKeydownEvents", "handleDropdownListFocusEvents", "handleDropdownToggleArrowKeyEvents", "firstOption", "hidden", "handleSelectChangeEvents", "setDropdownAria", "dropdownList", "ARIA_HASPOPUP_KEY", "ARIA_ROLE_VALUES", "ARIA_ROLE_KEY", "ARIA_MULTISELECTABLE_KEY", "setOptionAria", "populateOptions", "optionTemplate", "optionsList", "emptyOption", "hideInitial", "options", "currentValue", "text", "disabled", "cloneNode", "textNode", "findTextNode", "observeDropdownList", "callback", "debounce", "firstNonHiddenOption", "ARIA_EXPANDED_KEY", "observer", "observeSelectElement", "mutations", "addedNodes", "removedNodes", "isHTMLOptionElement", "observeElements", "dropdownListObserver", "selectElementObserver", "getInstance", "getPresenceSelector", "getElementSelector", "getSettingSelector", "queryElement", "queryAllElements", "getAttribute", "hasAttributeValue", "generateSelectors", "collectSettings", "referenceElement", "dropdown", "DROPDOWN_CSS_CLASSES", "isHTMLAnchorElement", "ARIA_CURRENT_KEY", "init", "waitWebflowReady", "waitAttributeLoaded", "bag", "createCleanupBag", "referenceElements", "diagnostics", "activeDropdowns", "allInstances", "result", "runActivationPipeline", "readOptionsFromAttributes", "disconnectObservers", "instanceData", "ensureButtonLike", "idx", "findInstanceByToggle", "el", "d", "findInstanceByList", "findInstanceBySelect", "destroyToggleDelegation", "createDelegation", "event", "instance", "isActivationKey", "destroyListDelegation", "destroySelectDelegation", "version", "index_default", "defineModule", "core", "res"]
7
+ }
@@ -0,0 +1,60 @@
1
+ import {
2
+ Nt,
3
+ Xt,
4
+ init_live_reload,
5
+ kn,
6
+ nn,
7
+ rr,
8
+ wn,
9
+ zo
10
+ } from "./chunk-IEGIKJKW.js";
11
+
12
+ // ../autovideo/dist/index.js
13
+ init_live_reload();
14
+ var s = "ad-autovideo";
15
+ var p = [];
16
+ var f = {};
17
+ var l = { disabled: { type: "boolean", default: false } };
18
+ var a = async () => {
19
+ let o = Nt();
20
+ await rr();
21
+ let n = document.querySelectorAll("video"), i = { activeCount: 0, disabledCount: 0, guardFailedCount: 0 };
22
+ if (!n.length) return { result: { store: /* @__PURE__ */ new Map(), diagnostics: i }, destroy() {
23
+ o.run();
24
+ } };
25
+ let r = /* @__PURE__ */ new Map(), d = new IntersectionObserver((t) => {
26
+ for (let { target: e, isIntersecting: c } of t) nn(e) && (c ? e.play() : e.pause(), r.set(e, c));
27
+ }, {});
28
+ o.add(() => d.disconnect());
29
+ for (let t of n) {
30
+ let e = await Xt({ el: t, moduleKey: s, includeGlobal: false, guardsRegistry: {}, readOptions: () => zo(t, s, l, { includeGlobal: false }), action: () => {
31
+ t.autoplay = false, r.set(t, null), d.observe(t);
32
+ } });
33
+ e.ok ? i.activeCount++ : e.reason === "disabled" ? i.disabledCount++ : e.reason === "guard-failed" && i.guardFailedCount++;
34
+ }
35
+ let u = kn(document, "visibilitychange", () => {
36
+ for (let [t, e] of r) document.hidden || !e ? t.pause() : t.play();
37
+ });
38
+ return o.add(u), { result: { store: r, diagnostics: i }, destroy() {
39
+ o.run();
40
+ } };
41
+ };
42
+ var x = "0.1.0";
43
+ var N = wn({ key: s, init: async (o) => {
44
+ let n = Nt(), i = await a();
45
+ return i && typeof i.destroy == "function" && n.add(() => {
46
+ try {
47
+ i.destroy();
48
+ } catch {
49
+ }
50
+ }), { key: s, destroy: () => n.run() };
51
+ } });
52
+ export {
53
+ p as ELEMENTS,
54
+ s as MODULE_KEY,
55
+ f as SETTINGS,
56
+ N as default,
57
+ a as init,
58
+ x as version
59
+ };
60
+ //# sourceMappingURL=dist-7GSHUMRU.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../autovideo/src/utils/constants.ts", "../../autovideo/src/init.ts", "../../autovideo/package.json", "../../autovideo/src/index.ts"],
4
+ "sourcesContent": ["import {\n type AttributeElements,\n type AttributeSettings,\n type OptionsSchema,\n} from '@adartem/adlib-utils';\n\nexport const MODULE_KEY = 'ad-autovideo' as const;\n\nexport const ELEMENTS = [] as const satisfies AttributeElements;\nexport const SETTINGS = {} as const satisfies AttributeSettings;\n\nexport const OPTIONS = {\n disabled: { type: 'boolean', default: false },\n} as const satisfies OptionsSchema;\n", "import {\n addListener,\n type AdLibAttributeInit,\n createCleanupBag,\n isHTMLVideoElement,\n readOptionsFromAttributes,\n runActivationPipeline,\n waitWebflowReady,\n} from '@adartem/adlib-utils';\n\nimport type { VideoStore } from './types';\nimport { MODULE_KEY, OPTIONS } from './utils/constants';\n\ninterface ModuleDiagnostics {\n activeCount: number;\n disabledCount: number;\n guardFailedCount: number;\n}\n\n/**\n * Inits the attribute.\n */\nexport const init: AdLibAttributeInit = async () => {\n const bag = createCleanupBag();\n\n await waitWebflowReady();\n\n const videos = document.querySelectorAll('video');\n const diagnostics: ModuleDiagnostics = {\n activeCount: 0,\n disabledCount: 0,\n guardFailedCount: 0,\n };\n\n if (!videos.length) {\n return {\n result: { store: new Map(), diagnostics },\n destroy() {\n bag.run();\n },\n };\n }\n\n const videoStore: VideoStore = new Map();\n\n const observer = new IntersectionObserver((entries) => {\n for (const { target, isIntersecting } of entries) {\n if (!isHTMLVideoElement(target)) continue;\n\n if (isIntersecting) target.play();\n else target.pause();\n\n videoStore.set(target, isIntersecting);\n }\n }, {});\n\n bag.add(() => observer.disconnect());\n\n for (const video of videos) {\n const result = await runActivationPipeline({\n el: video,\n moduleKey: MODULE_KEY,\n includeGlobal: false,\n guardsRegistry: {},\n readOptions: () =>\n readOptionsFromAttributes(video, MODULE_KEY, OPTIONS, {\n includeGlobal: false,\n }),\n action: () => {\n video.autoplay = false;\n videoStore.set(video, null);\n observer.observe(video);\n },\n });\n\n if (result.ok) {\n diagnostics.activeCount++;\n } else if (result.reason === 'disabled') {\n diagnostics.disabledCount++;\n } else if (result.reason === 'guard-failed') {\n diagnostics.guardFailedCount++;\n }\n }\n\n const visibilityChangeCleanup = addListener(document, 'visibilitychange', () => {\n for (const [video, playState] of videoStore) {\n if (document.hidden || !playState) video.pause();\n else video.play();\n }\n });\n\n bag.add(visibilityChangeCleanup);\n\n return {\n result: { store: videoStore, diagnostics },\n destroy() {\n bag.run();\n },\n };\n};\n", "{\n \"name\": \"@adartem/ad-autovideo\",\n \"version\": \"0.1.0\",\n \"description\": \"Auto-play videos only in viewport.\",\n \"private\": false,\n \"type\": \"module\",\n \"types\": \"./dist/index.d.ts\",\n \"scripts\": {\n \"lint\": \"eslint ./src && prettier --check ./src\",\n \"lint:fix\": \"eslint ./src --fix && prettier --write ./src\",\n \"typecheck\": \"tsc --noEmit\",\n \"build\": \"tsup --config tsup.config.ts\",\n \"test\": \"vitest run -c ../../vitest.config.ts\",\n \"dev\": \"tsup --config tsup.config.ts --watch\"\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\"\n }\n },\n \"dependencies\": {\n \"@adartem/adlib-utils\": \"workspace:*\"\n },\n \"files\": [\n \"dist\",\n \"README.md\",\n \"LICENSE\"\n ],\n \"sideEffects\": false,\n \"publishConfig\": {\n \"access\": \"public\"\n }\n}\n", "import { createCleanupBag, defineModule } from '@adartem/adlib-utils';\n\nimport { init as legacyInit } from './init';\nimport { MODULE_KEY } from './utils/constants';\n\nexport default defineModule({\n key: MODULE_KEY,\n init: async (core) => {\n void core;\n\n const bag = createCleanupBag();\n const res = await legacyInit();\n\n if (res && typeof (res as { destroy?: unknown }).destroy === 'function') {\n bag.add(() => {\n try {\n (res as { destroy: () => void }).destroy();\n } catch {\n // best-effort\n }\n });\n }\n\n return {\n key: MODULE_KEY,\n destroy: () => bag.run(),\n };\n },\n});\n\nexport { version } from '../package.json';\nexport { init } from './init';\nexport { ELEMENTS, MODULE_KEY, SETTINGS } from './utils/constants';\n"],
5
+ "mappings": ";;;;;;;;;;;;;AAMO,IAAMA,IAAa;AAAnB,IAEMC,IAAW,CAAA;AAFjB,IAGMC,IAAW,CAAA;AAHjB,IAKMC,IAAU,EACrB,UAAU,EAAE,MAAM,WAAW,SAAS,MAAM,EAC9C;AAAA,ICSaC,IAA2B,YAAY;AAClD,MAAMC,IAAMC,GAAAA;AAEZ,QAAMC,GAAAA;AAEN,MAAMC,IAAS,SAAS,iBAAiB,OAAO,GAC1CC,IAAiC,EACrC,aAAa,GACb,eAAe,GACf,kBAAkB,EACpB;AAEA,MAAI,CAACD,EAAO,OACV,QAAO,EACL,QAAQ,EAAE,OAAO,oBAAI,OAAO,aAAAC,EAAY,GACxC,UAAU;AACRJ,MAAI,IAAA;EACN,EACF;AAGF,MAAMK,IAAyB,oBAAI,OAE7BC,IAAW,IAAI,qBAAsBC,OAAY;AACrD,aAAW,EAAE,QAAAC,GAAQ,gBAAAC,EAAe,KAAKF,EAClCG,IAAmBF,CAAM,MAE1BC,IAAgBD,EAAO,KAAA,IACtBA,EAAO,MAAA,GAEZH,EAAW,IAAIG,GAAQC,CAAc;EAEzC,GAAG,CAAA,CAAE;AAELT,IAAI,IAAI,MAAMM,EAAS,WAAA,CAAY;AAEnC,WAAWK,KAASR,GAAQ;AAC1B,QAAMS,IAAS,MAAMC,GAAsB,EACzC,IAAIF,GACJ,WAAWhB,GACX,eAAe,OACf,gBAAgB,CAAA,GAChB,aAAa,MACXmB,GAA0BH,GAAOhB,GAAYG,GAAS,EACpD,eAAe,MACjB,CAAC,GACH,QAAQ,MAAM;AACZa,QAAM,WAAW,OACjBN,EAAW,IAAIM,GAAO,IAAI,GAC1BL,EAAS,QAAQK,CAAK;IACxB,EACF,CAAC;AAEGC,MAAO,KACTR,EAAY,gBACHQ,EAAO,WAAW,aAC3BR,EAAY,kBACHQ,EAAO,WAAW,kBAC3BR,EAAY;EAEhB;AAEA,MAAMW,IAA0BC,GAAY,UAAU,oBAAoB,MAAM;AAC9E,aAAW,CAACL,GAAOM,CAAS,KAAKZ,EAC3B,UAAS,UAAU,CAACY,IAAWN,EAAM,MAAA,IACpCA,EAAM,KAAA;EAEf,CAAC;AAED,SAAAX,EAAI,IAAIe,CAAuB,GAExB,EACL,QAAQ,EAAE,OAAOV,GAAY,aAAAD,EAAY,GACzC,UAAU;AACRJ,MAAI,IAAA;EACN,EACF;AACF;ACjGE,IAAAkB,IAAW;AAAA,ICGNC,IAAQC,GAAa,EAC1B,KAAKzB,GACL,MAAM,OAAO0B,MAAS;AAGpB,MAAMrB,IAAMC,GAAAA,GACNqB,IAAM,MAAMvB,EAAAA;AAElB,SAAIuB,KAAO,OAAQA,EAA8B,WAAY,cAC3DtB,EAAI,IAAI,MAAM;AACZ,QAAI;AACDsB,QAAgC,QAAA;IACnC,QAAQ;IAER;EACF,CAAC,GAGI,EACL,KAAK3B,GACL,SAAS,MAAMK,EAAI,IAAA,EACrB;AACF,EACF,CAAC;",
6
+ "names": ["MODULE_KEY", "ELEMENTS", "SETTINGS", "OPTIONS", "init", "bag", "createCleanupBag", "waitWebflowReady", "videos", "diagnostics", "videoStore", "observer", "entries", "target", "isIntersecting", "isHTMLVideoElement", "video", "result", "runActivationPipeline", "readOptionsFromAttributes", "visibilityChangeCleanup", "addListener", "playState", "version", "index_default", "defineModule", "core", "res"]
7
+ }