{"_id":"apexgantt","_rev":"35-0663a1ad98139b45f5bebe2afde9ff4c","name":"apexgantt","dist-tags":{"latest":"3.18.1"},"versions":{"0.0.1":{"name":"apexgantt","version":"0.0.1","_id":"apexgantt@0.0.1","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"dist":{"shasum":"508f231c08b98187c055b8038ac46a3191758d5b","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-0.0.1.tgz","fileCount":36,"integrity":"sha512-US0qZZFUPvbtHp5jIyYdP//WgpOSODviBAtzBAgjlQJKZ90Mmnb6gyYd8OAcEWKedkUsAOF0dx07iEJdX/PxyQ==","signatures":[{"sig":"MEQCIDW2s4b5gL3/zU3yVo6xs44oxqfMEQm4sGAWsE8uO0GWAiAjnTXGxxUIGikrkaHcoH4zXDIJWhrrDZks42i4zFqbig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2635771},"main":"./apexgantt.min.js","type":"module","types":"./index.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./index.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./index.d.ts","default":"./apexgantt.min.js"}}},"_npmUser":{"name":"junedchhipa","actor":{"name":"junedchhipa","type":"user","email":"info@apexcharts.com"},"email":"info@apexcharts.com"},"_npmVersion":"11.3.0","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"24.2.0","dependencies":{"dayjs":"^1.11.13","lodash":"^4.17.21"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_0.0.1_1750596246748_0.46323919139399505","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"apexgantt","version":"1.0.1","_id":"apexgantt@1.0.1","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"dist":{"shasum":"832a9fda675a425d98bd71e4c79e528ca5dd2c0d","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-1.0.1.tgz","fileCount":40,"integrity":"sha512-cBiqdB2EmyjQezR17tS8VpWPJS5T4r7d1ir2aluk9+B5U13EP5o94Ty38HrC0aCmBxIYhBqCfy4H0QLGypFMqQ==","signatures":[{"sig":"MEYCIQCHue16YgOTV862HNbewjGl5duOoX3EXhg68zHWDKvqCgIhANhXkmLq+YSih8XIBcUFAWkNHsA/rYjO9u3IA1CFzO+o","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4730610},"main":"./apexgantt.min.js","type":"module","types":"./index.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./index.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./index.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"9b9d7920aac3bc75a381efa2a07e63985a4308c1","_npmUser":{"name":"junedchhipa","email":"info@apexcharts.com"},"_npmVersion":"10.8.2","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.19.5","dependencies":{"dayjs":"^1.11.13","lodash":"^4.17.21","html2pdf.js":"^0.10.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_1.0.1_1757675215879_0.13149390419618734","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"apexgantt","version":"1.1.0","_id":"apexgantt@1.1.0","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"dist":{"shasum":"a2744e683bbbb6dd3e9a07cc8381f93e8551ea30","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-1.1.0.tgz","fileCount":43,"integrity":"sha512-TZLXSoxRP7MeeD1D07XQLxolDqQXPjjPunag9dstgn5r8iDjrEOHJTmUipVz66rdPQsvlt1IfHiYgj3I7O9LrQ==","signatures":[{"sig":"MEUCIBBe4wtbfx+F6z5OONmx4V30FIOP1EHo7uFhQ81LLH81AiEAquoWx/vaEVSfRc6Kgw0ijWMbFB5qJGXdmGVQfBewSIQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6830074},"main":"./apexgantt.min.js","type":"module","types":"./index.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./index.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./index.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"25d55f04cee83e315b7e9b9197fce07c441197ce","_npmUser":{"name":"junedchhipa","email":"info@apexcharts.com"},"_npmVersion":"10.8.2","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.19.5","dependencies":{"dayjs":"^1.11.13","lodash":"^4.17.21","html2pdf.js":"^0.10.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_1.1.0_1758013977752_0.9860432083334119","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"apexgantt","version":"2.0.0","_id":"apexgantt@2.0.0","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"dist":{"shasum":"5186b6e9f7e7cd7b444650aa4d4506458780a678","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-2.0.0.tgz","fileCount":49,"integrity":"sha512-kxgAsVBi8JurCT3SrFTH7a/PRsiBMktE7j715qukvEoF4aZPCY3NZV/txOonnKMf84XnBZEzZG1xYwOAcJJZ8A==","signatures":[{"sig":"MEQCIFjGDjd/rZcT+ngJtqKbXxAImUuuDK88hiIKL68EpMzCAiA7RVYG+3SWu5G82hdnTDUkfhC8v9Pas4CKC1far5zMAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6886751},"main":"./apexgantt.min.js","type":"module","types":"./index.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./index.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./index.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"c1f86b0385474eb26cdb2b43acd35700adf8a154","_npmUser":{"name":"junedchhipa","email":"info@apexcharts.com"},"_npmVersion":"10.8.2","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.19.5","dependencies":{"dayjs":"^1.11.13","lodash":"^4.17.21","html2pdf.js":"^0.10.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_2.0.0_1758567595510_0.3947764109124625","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"apexgantt","version":"3.0.0","_id":"apexgantt@3.0.0","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"dist":{"shasum":"13c183ef82b4328d10270df893b98e920833ca0c","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.0.0.tgz","fileCount":53,"integrity":"sha512-kb0WHAXvaBC4a6NczooEqv6Mt465qaBZzgHAFMtnq/RbCw74bQ/QuHxvk6XlVuVmP3zatj49aTZrmY0bljAA5Q==","signatures":[{"sig":"MEYCIQDATnPSfTnyYIFMjyE3smxBGNR1QXBLMEJJYrp8EodXLQIhAKC2RtIWHNMv0OSWvUC48uRj64/6UpcCztjGRsflYTh2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7485050},"main":"./apexgantt.min.js","type":"module","types":"./index.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./index.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./index.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"73638fea3a79ace62f1c0c841d82a5362e7bb601","_npmUser":{"name":"junedchhipa","email":"info@apexcharts.com"},"_npmVersion":"10.8.2","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.19.5","dependencies":{"dayjs":"^1.11.13","lodash":"^4.17.21","html2pdf.js":"^0.10.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.0.0_1759477095827_0.5127947032188143","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"apexgantt","version":"3.1.0","_id":"apexgantt@3.1.0","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"dist":{"shasum":"fa7eca1c4b57b6b19ef19037fc22e3b2b24073a6","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.1.0.tgz","fileCount":50,"integrity":"sha512-hMnAVCqeW8wNHyWl9UfzGyOJ4Nm0JTrvYenxSHM3h8an8gRjHHqqMWc/8ezzk9DXiiz17aRjLd0XR9BUqADpcg==","signatures":[{"sig":"MEUCIQCsi2VW+fDxiPLmBDQQAWhVRhsX18ZAhz3NodR9qBpG0wIgZPHuE77TkcY2trvTMoZ7lzT/CWEtaX5DUtbspuXfzL0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1023777},"main":"./apexgantt.min.js","type":"module","types":"./index.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./index.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./index.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"3f856218c104f5a984b8a9dd01bc7cdf5939eb96","_npmUser":{"name":"junedchhipa","email":"info@apexcharts.com"},"_npmVersion":"10.8.2","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.19.5","dependencies":{"dayjs":"^1.11.13","lodash":"^4.17.21"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.1.0_1761216984747_0.6179014048499907","host":"s3://npm-registry-packages-npm-production"}},"3.1.1":{"name":"apexgantt","version":"3.1.1","_id":"apexgantt@3.1.1","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"dist":{"shasum":"88f68064842760cab74aa785c7241bdbd5e35b1e","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.1.1.tgz","fileCount":50,"integrity":"sha512-RTHnsOpo32HP0WY2WVa9/43O+ilcQXZlzmv3GmLL+gsTKoxjBvcLZUKVMdtwlNl3FfQRUIrs6JNn+VlnJKjiQQ==","signatures":[{"sig":"MEYCIQC2yxuHZ6Sd6yilL7xaUYtOmcBj1rzsXsNCUR+hJZNX+wIhAM8FaSmzzJR6C4idPOtUlK2UwCjhPfCiNJtdCstDNJiW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1023782},"main":"./apexgantt.min.js","type":"module","types":"./index.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./index.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./index.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"6bdc14b5ab0e145025d3b26ededf4631abf3ecb7","_npmUser":{"name":"junedchhipa","email":"info@apexcharts.com"},"_npmVersion":"10.8.2","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.19.5","dependencies":{"dayjs":"^1.11.13","lodash":"^4.17.21"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.1.1_1761230768481_0.4422866246590851","host":"s3://npm-registry-packages-npm-production"}},"3.2.0":{"name":"apexgantt","version":"3.2.0","_id":"apexgantt@3.2.0","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"dist":{"shasum":"bafc545d44c68a05876dcc88de2f6af787761812","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.2.0.tgz","fileCount":51,"integrity":"sha512-GP4UVx6XTxeI8Vs3uzCNjpnVDaPBma11mu/fQnubmoXJd2lFGcHn6mQlyJNdRu98gJ1P1mAB/FPAwpOs5iXuTg==","signatures":[{"sig":"MEUCIQCTBoBMtQsRlSiKrWNwTQxSlyppn23VFg23Q1r49E1uYwIgHp/+LfXFVNbL6Efhvyov92QKydSA3K9H3tRU7CDfTLo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1030402},"main":"./apexgantt.min.js","type":"module","types":"./index.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./index.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./index.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"2a2a8a858cc14f5668617c1c1921fdc6e19a9347","_npmUser":{"name":"junedchhipa","email":"info@apexcharts.com"},"_npmVersion":"10.8.2","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.19.5","dependencies":{"dayjs":"^1.11.13","lodash":"^4.17.21"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.2.0_1762248130826_0.5591505679359159","host":"s3://npm-registry-packages-npm-production"}},"3.3.0":{"name":"apexgantt","version":"3.3.0","_id":"apexgantt@3.3.0","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"dist":{"shasum":"626d188de1ad8d46ceae6c5cbca665f4fc0c8279","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.3.0.tgz","fileCount":51,"integrity":"sha512-zLuiDPmTn+FN24k8oXb+Cm10vWfwQpbB5y0Of7LhUn95Xsz/YejdSNj2b1u9UVGlCuN2grcLVKZNaPKfGdnfoA==","signatures":[{"sig":"MEUCICa9YBxhtqugGVc5yM8bsLDpTMfnwZnCuT7bnfLR3qSaAiEAvd/KwK6RsNys8JLf7hZQJL9ehFiwQw/9LD2M71PUH1s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1032608},"main":"./apexgantt.min.js","type":"module","types":"./index.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./index.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./index.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"432fdd1718abc3f2046eab8d57568073c2890820","_npmUser":{"name":"junedchhipa","email":"info@apexcharts.com"},"_npmVersion":"10.8.2","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.19.5","dependencies":{"dayjs":"^1.11.13","lodash":"^4.17.21"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.3.0_1763405347546_0.14709420818196906","host":"s3://npm-registry-packages-npm-production"}},"3.4.0":{"name":"apexgantt","version":"3.4.0","_id":"apexgantt@3.4.0","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"dist":{"shasum":"1a4b1e26a3dae20db9815674c523ba15b2cc06fe","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.4.0.tgz","fileCount":52,"integrity":"sha512-MmbrmyhtKu2UpJlsUSJSY7SyC7Ud2zMo9InELo5irnvu/L75QxE0kLU1Gb6HzYyePH2CH3AagcMgdhgRXDyldA==","signatures":[{"sig":"MEYCIQDr6Xve7yMBcNZYmR2NuYKBYb14XOL1nY9EjM7vdCPKHAIhANAnUyePJXVDWg/sVMVKPaGz8jDQg2M9+7YGLagTbn1h","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1048241},"main":"./apexgantt.min.js","type":"module","types":"./index.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./index.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./index.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"9aa2331abde8fd5fa4705fd3c3a10daec437690e","_npmUser":{"name":"junedchhipa","email":"info@apexcharts.com"},"_npmVersion":"10.8.2","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.19.5","dependencies":{"dayjs":"^1.11.13","lodash":"^4.17.21"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.4.0_1763877365207_0.5552743069205446","host":"s3://npm-registry-packages-npm-production"}},"3.4.1":{"name":"apexgantt","version":"3.4.1","_id":"apexgantt@3.4.1","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"dist":{"shasum":"93fda0f14cc06bebcaed0476e37dd18b89b9a489","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.4.1.tgz","fileCount":52,"integrity":"sha512-swEInoKWT5WnlwYYqJGd3ds6xWNaknz0ddOQk4BOyxkZMS0SdWVytdO15pMPSYT23pyx9EceLVZqXsMRYHIfcQ==","signatures":[{"sig":"MEUCIDd/9jU2zBE9dS7hBEz5a1wFVIaL8Kdmz6lBjZnXRh8FAiEAiwtXCtCI+clp907BgmSQqkhRfMbsD05emftISnt2OKo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1048319},"main":"./apexgantt.min.js","type":"module","types":"./index.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./index.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./index.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"290f9ac9b43dc59b68f1ad6d169dbb48d7b0f2e6","_npmUser":{"name":"junedchhipa","email":"info@apexcharts.com"},"_npmVersion":"10.8.2","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.19.6","dependencies":{"dayjs":"^1.11.13","lodash":"^4.17.21"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.4.1_1764931571277_0.11680744087074801","host":"s3://npm-registry-packages-npm-production"}},"3.5.0":{"name":"apexgantt","version":"3.5.0","_id":"apexgantt@3.5.0","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"homepage":"https://github.com/apexcharts/apexgantt#readme","bugs":{"url":"https://github.com/apexcharts/apexgantt/issues"},"dist":{"shasum":"7155db723723a64a5f66139aa8613d464cad2946","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.5.0.tgz","fileCount":52,"integrity":"sha512-pa3H/yCNhCGqQsJBY1zqCmmOyvbQ9fsuJ2mYvvR2wlIyyhEanti0pFDd0awNExC6vpM7Mf0VOiACvb/moXRrkw==","signatures":[{"sig":"MEQCIHsaNo0IQtFgdONDSQV6ASP2246izDo/kobCYLNfbibkAiAh8HrBSvJA/fV4tDstNodG+SlUHDf7SHbwuFwza14uwQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/apexgantt@3.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1049005},"main":"./apexgantt.min.js","type":"module","types":"./index.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./index.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./index.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"112151a3c1af06baeb3d11f2a19bfc73148ecab3","_npmUser":{"name":"junedchhipa","email":"info@apexcharts.com"},"repository":{"url":"git+https://github.com/apexcharts/apexgantt.git","type":"git"},"_npmVersion":"10.8.2","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.19.6","dependencies":{"dayjs":"^1.11.13","lodash":"^4.17.21"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.5.0_1765654807423_0.5817052551149748","host":"s3://npm-registry-packages-npm-production"}},"3.6.0":{"name":"apexgantt","version":"3.6.0","_id":"apexgantt@3.6.0","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"homepage":"https://github.com/apexcharts/apexgantt#readme","bugs":{"url":"https://github.com/apexcharts/apexgantt/issues"},"dist":{"shasum":"2a27998186ff3e8c2405220c75a239edce5a0d99","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.6.0.tgz","fileCount":52,"integrity":"sha512-tDLrfiijWnq/TybnC5lGisg7sc39G1vwLZ0t0m4fEYrIx6uCc/VIjywy/0M6jA1+B2JFE4AmsWth3GbIHIOABA==","signatures":[{"sig":"MEYCIQCcDrMIkz1ZykD2Y8SP9exg5quth40w/hI8yyH2ekYlFgIhAKCw2W9nI40KVZQUE4dbJkS0e2aBkkHzpoyxNjl1Jjnd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/apexgantt@3.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1048845},"main":"./apexgantt.min.js","type":"module","types":"./index.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./index.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./index.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"b292a129f923834cbeab92f3f3bc65c34ece133e","_npmUser":{"name":"junedchhipa","email":"info@apexcharts.com"},"repository":{"url":"git+https://github.com/apexcharts/apexgantt.git","type":"git"},"_npmVersion":"10.8.2","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.19.6","dependencies":{"dayjs":"^1.11.13","lodash":"^4.17.21"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.6.0_1765655509142_0.478641331329863","host":"s3://npm-registry-packages-npm-production"}},"3.6.1":{"name":"apexgantt","version":"3.6.1","license":"See LICENSE in LICENSE","_id":"apexgantt@3.6.1","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"homepage":"https://github.com/apexcharts/apexgantt#readme","bugs":{"url":"https://github.com/apexcharts/apexgantt/issues"},"dist":{"shasum":"f7e9251fed0dd79c70d3b14a89757a9572d44c3f","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.6.1.tgz","fileCount":52,"integrity":"sha512-ctWVEifa7waAzJ29jzkr53Ywy76YHo81efpHzioRBAjH5XU6e/AmaARl08thWF25cvchgpjqPlgTfIUIPw3dxA==","signatures":[{"sig":"MEYCIQC54fC22FwtVDciQCoTgdix6PSXTKNdtZ2OJrDvO/CDqwIhAPrfijxZR44P3RQ98cP64QNlVHUOvGATGLHTMaw1LbjZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/apexgantt@3.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1049282},"main":"./apexgantt.min.js","type":"module","types":"./index.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./index.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./index.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"a678ed00b75fc717e3801f82644b74639ab26825","_npmUser":{"name":"junedchhipa","email":"info@apexcharts.com"},"repository":{"url":"git+https://github.com/apexcharts/apexgantt.git","type":"git"},"_npmVersion":"10.8.2","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.19.6","dependencies":{"dayjs":"^1.11.13","lodash":"^4.17.21"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.6.1_1767700666001_0.5889317051436809","host":"s3://npm-registry-packages-npm-production"}},"3.7.0":{"name":"apexgantt","version":"3.7.0","_id":"apexgantt@3.7.0","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"homepage":"https://github.com/apexcharts/apexgantt#readme","bugs":{"url":"https://github.com/apexcharts/apexgantt/issues"},"dist":{"shasum":"a76ccbd028e337391c1bec67dcb6ed33be7625ea","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.7.0.tgz","fileCount":52,"integrity":"sha512-9oHe44NBpaFxco35mcEZWtDVrFmdUyaEnOX0RgskgrYRGyynyMSUHj8pGk7XgncSILmkyfu5G7G2E+2ztIFEaw==","signatures":[{"sig":"MEYCIQDe38m4I9bFmf8ndQy1fu9QGSqk1CkA+nI2q4hlPjUFsgIhALZES7EWBRKVI0SKJIUa/LCSgkYkrC5Hq9Cx8xi9S42j","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/apexgantt@3.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":730244},"main":"./apexgantt.min.js","type":"module","types":"./index.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./index.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./index.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"86c204ea053af6077507d9015c533ad906b50c6d","_npmUser":{"name":"junedchhipa","email":"info@apexcharts.com"},"repository":{"url":"git+https://github.com/apexcharts/apexgantt.git","type":"git"},"_npmVersion":"10.8.2","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.20.0","dependencies":{"dayjs":"^1.11.13","lodash":"^4.17.21"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.7.0_1770203913513_0.8017483198020152","host":"s3://npm-registry-packages-npm-production"}},"3.8.0":{"name":"apexgantt","version":"3.8.0","_id":"apexgantt@3.8.0","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"homepage":"https://github.com/apexcharts/apexgantt#readme","bugs":{"url":"https://github.com/apexcharts/apexgantt/issues"},"dist":{"shasum":"73819ee31351d7005c39f3d84ef89203599ad33f","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.8.0.tgz","fileCount":81,"integrity":"sha512-lNz4Dde37Y3QfZU90VQqu0OtQAQKD81J6btvI8DFaRyRif1rw1bJ7NKXJEOU1dHIQexfYQBVXH+mmCmpljNiVw==","signatures":[{"sig":"MEYCIQCdKNX+gBeVhnx/8SnvQEPMyJHo1POdtDfUWoAFsiUR6QIhALHZVrqUUT+O/lnZ1gTURa39p60V1YZWJKMyhc7cSrpO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":931124},"main":"./apexgantt.min.js","type":"module","types":"./index.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./index.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./index.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"8abe42555cfeea3b41eeaffaf0b708b162114476","_npmUser":{"name":"junedchhipa","email":"info@apexcharts.com"},"repository":{"url":"git+https://github.com/apexcharts/apexgantt.git","type":"git"},"_npmVersion":"11.8.0","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"24.2.0","dependencies":{"dayjs":"^1.11.13"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.8.0_1773776355073_0.5252900529727116","host":"s3://npm-registry-packages-npm-production"}},"3.9.0":{"name":"apexgantt","version":"3.9.0","_id":"apexgantt@3.9.0","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"homepage":"https://github.com/apexcharts/apexgantt#readme","bugs":{"url":"https://github.com/apexcharts/apexgantt/issues"},"dist":{"shasum":"16145c58b7217808c6609920d1454dae008678e8","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.9.0.tgz","fileCount":26,"integrity":"sha512-UQgBp1T+dLNV1v5i+wVZk9c3kRbzh4O5O1v+y5yRMco7v6FnknMYZzRaY3CCc12gyCw3GBDruKSlDe0jFRu6wg==","signatures":[{"sig":"MEQCIDOD6LHGhX0Y/uZtcpWbENcHJK9erCe7NKVBfwlIfb+WAiBTcmQ6w/kP1V2026+IEmaJbfdkyCtaQiJYaCM7fIHtSw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/apexgantt@3.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":610290},"main":"./apexgantt.min.js","type":"module","types":"./apexgantt.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./apexgantt.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./apexgantt.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"8f02f39d577a4c524fd1f340b5183e91104edf6b","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:805b8a01-db3d-4b47-8b15-eef479b0b700"}},"repository":{"url":"git+https://github.com/apexcharts/apexgantt.git","type":"git"},"_npmVersion":"11.12.1","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.20.1","dependencies":{"dayjs":"^1.11.13"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.9.0_1775135766224_0.8264905307108268","host":"s3://npm-registry-packages-npm-production"}},"3.10.0":{"name":"apexgantt","version":"3.10.0","_id":"apexgantt@3.10.0","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"homepage":"https://github.com/apexcharts/apexgantt#readme","bugs":{"url":"https://github.com/apexcharts/apexgantt/issues"},"dist":{"shasum":"6c2c5bf52845d4d20bb603cdfa51d4d0a109fb28","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.10.0.tgz","fileCount":26,"integrity":"sha512-p5rcUCfVRK5wtlYaPcmOOa70A+xg47w72FMnZ9JOe6xJwJ7avkWW3D+YlSfQi2uAWsFAoyKcIEWh7C/VQssCUQ==","signatures":[{"sig":"MEUCIQDp+fopko6e2z85p84CFzcdyoZAq/KbX++Q+G3vmAZ1CQIgfJv1Lc4VPMnQnIknJqJ7z6hQkpfhQHSlWqFeALAyUsY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/apexgantt@3.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":611342},"main":"./apexgantt.min.js","type":"module","types":"./apexgantt.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./apexgantt.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./apexgantt.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"23cd41113f5c2b307637af41adbecac33c53714b","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:805b8a01-db3d-4b47-8b15-eef479b0b700"}},"repository":{"url":"git+https://github.com/apexcharts/apexgantt.git","type":"git"},"_npmVersion":"11.12.1","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.20.2","dependencies":{"dayjs":"^1.11.13"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.10.0_1775313367188_0.5335278521660001","host":"s3://npm-registry-packages-npm-production"}},"3.10.1":{"name":"apexgantt","version":"3.10.1","_id":"apexgantt@3.10.1","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"homepage":"https://github.com/apexcharts/apexgantt#readme","bugs":{"url":"https://github.com/apexcharts/apexgantt/issues"},"dist":{"shasum":"d793ed765aa810debfc470d9031d42b4b2d3614f","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.10.1.tgz","fileCount":26,"integrity":"sha512-uODpzFpmQWUrloAs4mlF3/nI+vXQNEiuz99uLOfEuhyfaWiCGIK7FYgZsi1GSNEbEiZV04Bbmu/uB0jCwz8LMA==","signatures":[{"sig":"MEUCIQDSSqCzTGP/UTE5dJ2Pk2KvWwh4uslPoxfNIO2NJUukEgIgfFA3lpCli9/G+thpzfh9Cjw4igzrsOy85FxIp4wkOxs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/apexgantt@3.10.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":611396},"main":"./apexgantt.min.js","type":"module","types":"./apexgantt.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./apexgantt.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./apexgantt.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"6e0cf534a3012cb6ef1e7364016a0b195006057a","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:805b8a01-db3d-4b47-8b15-eef479b0b700"}},"repository":{"url":"git+https://github.com/apexcharts/apexgantt.git","type":"git"},"_npmVersion":"11.12.1","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.20.2","dependencies":{"dayjs":"^1.11.13"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.10.1_1775327232135_0.4656852128904916","host":"s3://npm-registry-packages-npm-production"}},"3.10.2":{"name":"apexgantt","version":"3.10.2","_id":"apexgantt@3.10.2","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"homepage":"https://github.com/apexcharts/apexgantt#readme","bugs":{"url":"https://github.com/apexcharts/apexgantt/issues"},"dist":{"shasum":"cd7ad4fde318874b9a882ad254851817922f6ebe","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.10.2.tgz","fileCount":26,"integrity":"sha512-iQGO6LtNBSPsOAdhv43kTUQtrwIr9cfChetUj8lMMXYvddlkzsStC54YboMG0mH8YEc58YpXzuqNB+QpjpL+yA==","signatures":[{"sig":"MEQCIAGeEPXb65dEBAojG04J4QvgnJdtGQF0cGb/kqRzg0RJAiAE8fo3UrHfkeEPsIQReQ2f8c2TD2GhqB9Q6tNraLHDzQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/apexgantt@3.10.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":619638},"main":"./apexgantt.min.js","type":"module","types":"./apexgantt.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./apexgantt.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./apexgantt.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"f412f0445df020315091fae28074e06ba8cd5b96","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:805b8a01-db3d-4b47-8b15-eef479b0b700"}},"repository":{"url":"git+https://github.com/apexcharts/apexgantt.git","type":"git"},"_npmVersion":"11.12.1","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.20.2","dependencies":{"dayjs":"^1.11.13"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.10.2_1775389790773_0.2548158394251605","host":"s3://npm-registry-packages-npm-production"}},"3.10.3":{"name":"apexgantt","version":"3.10.3","_id":"apexgantt@3.10.3","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"homepage":"https://github.com/apexcharts/apexgantt#readme","bugs":{"url":"https://github.com/apexcharts/apexgantt/issues"},"dist":{"shasum":"7bdf541d6332898d8c4a3551d50e94a574e9d5ca","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.10.3.tgz","fileCount":26,"integrity":"sha512-qwi9Fz/wx/txN1X8sWlTd5AUfDvOphOR8UC9sMCUSzqwTF77QLtKqfpu8aO4lW9rSdrk97vhsgCmo6bWtW1NuQ==","signatures":[{"sig":"MEYCIQCcwD7dcd0muBlD82ZpV6apjKzxfb6d6QPdyZLLFYipFgIhAL6gpAdo3V+DD6s2QCisxjBK4JFpHCvy2JxgAjGWXLGT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/apexgantt@3.10.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":629781},"main":"./apexgantt.min.js","type":"module","types":"./apexgantt.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./apexgantt.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./apexgantt.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"eee6636da9b6a05ec038f162a10d289338b62245","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:805b8a01-db3d-4b47-8b15-eef479b0b700"}},"repository":{"url":"git+https://github.com/apexcharts/apexgantt.git","type":"git"},"_npmVersion":"11.12.1","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.20.2","dependencies":{"dayjs":"^1.11.13"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.10.3_1776608939264_0.07095163703192386","host":"s3://npm-registry-packages-npm-production"}},"3.11.0":{"name":"apexgantt","version":"3.11.0","_id":"apexgantt@3.11.0","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"homepage":"https://github.com/apexcharts/apexgantt#readme","bugs":{"url":"https://github.com/apexcharts/apexgantt/issues"},"dist":{"shasum":"89947ba21907495bae616141b453fa7b9456be82","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.11.0.tgz","fileCount":38,"integrity":"sha512-fDEMCx5rbzqj4ocH9MqP1w151wD8VNCxhldf+9+05rdNTFIFxaHQMr6prOpqMKJU00sydFIX28Ni1C5XZgeGiw==","signatures":[{"sig":"MEYCIQCk5s9/Ht+gD7o5Aaw0DSJMsjvDrcRy45s8ZEWqB7X4EgIhAJMTaaaNwHwDtp1tayIB+b1t+siCPd45xVqIwSB9og5y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/apexgantt@3.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1379484},"main":"./apexgantt.min.js","type":"module","types":"./apexgantt.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./apexgantt.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./apexgantt.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"3cc66b5dc518d00e81eedecdcad4866010ab73b5","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:805b8a01-db3d-4b47-8b15-eef479b0b700"}},"repository":{"url":"git+https://github.com/apexcharts/apexgantt.git","type":"git"},"_npmVersion":"11.15.0","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.20.2","dependencies":{"dayjs":"^1.11.13"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.11.0_1779476403427_0.33089659039886055","host":"s3://npm-registry-packages-npm-production"}},"3.11.1":{"name":"apexgantt","version":"3.11.1","_id":"apexgantt@3.11.1","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"homepage":"https://github.com/apexcharts/apexgantt#readme","bugs":{"url":"https://github.com/apexcharts/apexgantt/issues"},"dist":{"shasum":"cc49e979889643803b000adaea71a5fb5eb63d18","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.11.1.tgz","fileCount":38,"integrity":"sha512-o/LjzW6E3U8eyWNipY85JjLbQ5eInJ71FQ1ZgkXt0p7FIivnIl3ik3imePGFOzzt+VPuumc78gCpzj0HtIGIIQ==","signatures":[{"sig":"MEUCIDjqJcGh+BPSn2OPK9ZtWnsKZ+PL312amseE36SyJkTeAiEA4iINU5yNDGXuWuyPjRpqLTzRLBahLFCOGtb+HvCPb/s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/apexgantt@3.11.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1382705},"main":"./apexgantt.min.js","type":"module","types":"./apexgantt.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./apexgantt.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./apexgantt.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"d573963bfa79dde51e474d1a2118940d7f5917f3","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:805b8a01-db3d-4b47-8b15-eef479b0b700"}},"repository":{"url":"git+https://github.com/apexcharts/apexgantt.git","type":"git"},"_npmVersion":"11.16.0","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.20.2","dependencies":{"dayjs":"^1.11.13"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.11.1_1780759315250_0.9494244169355521","host":"s3://npm-registry-packages-npm-production"}},"3.12.0":{"name":"apexgantt","version":"3.12.0","_id":"apexgantt@3.12.0","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"homepage":"https://github.com/apexcharts/apexgantt#readme","bugs":{"url":"https://github.com/apexcharts/apexgantt/issues"},"dist":{"shasum":"f713c34db98a4907b1e18d1ac840398163e57f44","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.12.0.tgz","fileCount":37,"integrity":"sha512-OVxW+BJepXqVJeRG9fq7mSeG6Na3zhquANdwNBP+m39e4jRJwLUp+ku+3Nu4g4uSTGZRRg9TcDew0/DvK/jTDQ==","signatures":[{"sig":"MEUCIG9qe11Yp40Wna0Kd51jpfnWdYJbL9xVkbYWVlwL76g1AiEA0JtxL7/bYRIqbF0SCZvJrwgHfSf4FpiBH/Afi/jmp+w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/apexgantt@3.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1012768},"main":"./apexgantt.min.js","type":"module","types":"./apexgantt.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./apexgantt.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./apexgantt.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"1b067096654940aabf7728d79905000e9769b479","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:805b8a01-db3d-4b47-8b15-eef479b0b700"}},"repository":{"url":"git+https://github.com/apexcharts/apexgantt.git","type":"git"},"_npmVersion":"11.17.0","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.20.2","dependencies":{"dayjs":"^1.11.13"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.12.0_1782238268933_0.12803656890051252","host":"s3://npm-registry-packages-npm-production"}},"3.13.0":{"name":"apexgantt","version":"3.13.0","_id":"apexgantt@3.13.0","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"homepage":"https://github.com/apexcharts/apexgantt#readme","bugs":{"url":"https://github.com/apexcharts/apexgantt/issues"},"dist":{"shasum":"8a7a9ef7c2414187ba542276349795683cefbe1c","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.13.0.tgz","fileCount":43,"integrity":"sha512-eNLY6f5UlxJ6fjphORZ3sD48TAZyfnZ+ZBgLOBg1jhA/oQaZcbkxuneJC7bntIIhuZKMrqQ3Pfxosl6v+0nIow==","signatures":[{"sig":"MEUCIQCnEip26iag8+qMQo/x4kT4wvnFx4lvpQRcWLOjmpy91wIgaNbbzZoxn+TECPeq1loN7AeaQbHM4wIgp9hqzRYvNGg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/apexgantt@3.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1210673},"main":"./apexgantt.min.js","type":"module","types":"./apexgantt.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./apexgantt.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./apexgantt.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"96a7ccd95a53e36262148bee46b1ad796c0ac7b3","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:805b8a01-db3d-4b47-8b15-eef479b0b700"}},"repository":{"url":"git+https://github.com/apexcharts/apexgantt.git","type":"git"},"_npmVersion":"11.18.0","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.20.2","dependencies":{"dayjs":"^1.11.13"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.13.0_1783254836406_0.8941451785618579","host":"s3://npm-registry-packages-npm-production"}},"3.14.0":{"name":"apexgantt","version":"3.14.0","_id":"apexgantt@3.14.0","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"homepage":"https://github.com/apexcharts/apexgantt#readme","bugs":{"url":"https://github.com/apexcharts/apexgantt/issues"},"dist":{"shasum":"da0e4e039be2e004e26581a7f53966580e3499d8","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.14.0.tgz","fileCount":45,"integrity":"sha512-zFI2Oi+geRkE2N4zfEimaHcUxpIMcTOLJWdXHItsf/Bpca4EiyS0Ck9j6cBX1nYUuy3XjmyVWlO6GZieqqPwXg==","signatures":[{"sig":"MEQCIEMzjWK9vzk66nGJRKtls2il8/VkcFrsKF6qHs63LU2SAiBUlSDY7gDImnFHItISZp77kDp1C6Q9BaR3Zn9iGgo2JA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/apexgantt@3.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1249822},"main":"./apexgantt.min.js","type":"module","types":"./apexgantt.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./apexgantt.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./apexgantt.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"c38bc1097307b40a28d1c10d0a579bebb7b518f0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:805b8a01-db3d-4b47-8b15-eef479b0b700"}},"repository":{"url":"git+https://github.com/apexcharts/apexgantt.git","type":"git"},"_npmVersion":"11.18.0","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.20.2","dependencies":{"dayjs":"^1.11.13"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.14.0_1783256477196_0.9082318932348863","host":"s3://npm-registry-packages-npm-production"}},"3.14.1":{"name":"apexgantt","version":"3.14.1","_id":"apexgantt@3.14.1","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"homepage":"https://github.com/apexcharts/apexgantt#readme","bugs":{"url":"https://github.com/apexcharts/apexgantt/issues"},"dist":{"shasum":"304129b4b3ee6ef8dbd823ee9791ee9dc3dbebf6","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.14.1.tgz","fileCount":45,"integrity":"sha512-krEZQ5eidgAkV9AQZwjQE7X9NJyH5H3njbNL9uOSGiWMwPhi2Qm2s72IKl3CDQhQJHgAPlDPEdJws4+cOmMW6g==","signatures":[{"sig":"MEQCIDrs9pvxG8XawGtdby6mfMy9dQoZaxAOPSKnDEstaj7iAiA6EgEMMGb96EgPAar9mKLmYsRq9fnLagwvgV6cd7tc0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/apexgantt@3.14.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1293630},"main":"./apexgantt.min.js","type":"module","types":"./apexgantt.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./apexgantt.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./apexgantt.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"268734830233d0bf5fe62abf2205ad1010c88360","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:805b8a01-db3d-4b47-8b15-eef479b0b700"}},"repository":{"url":"git+https://github.com/apexcharts/apexgantt.git","type":"git"},"_npmVersion":"11.18.0","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.20.2","dependencies":{"dayjs":"^1.11.13"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.14.1_1783258459161_0.09027600575997985","host":"s3://npm-registry-packages-npm-production"}},"3.15.0":{"name":"apexgantt","version":"3.15.0","_id":"apexgantt@3.15.0","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"homepage":"https://github.com/apexcharts/apexgantt#readme","bugs":{"url":"https://github.com/apexcharts/apexgantt/issues"},"dist":{"shasum":"701e2ac86b3e38892f9876a75140333d5f39fd5a","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.15.0.tgz","fileCount":45,"integrity":"sha512-f7euHPEf8bUwhhQKTIfpRQJ7Udy5nvLVWywvhabR5hDpVxy7ylPfOL4waOP2Chy3xtEASDdtxU1GrlcWdee2fQ==","signatures":[{"sig":"MEYCIQDiyDQYCdBTdsslLjIkqNKWH7E+vTTrBm0GVo0CXfglQQIhALm+bePpbegvDW6YGfqh9S+6N1v652sz8uPXS/GdP5eV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/apexgantt@3.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1296902},"main":"./apexgantt.min.js","type":"module","types":"./apexgantt.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./apexgantt.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./apexgantt.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"d61e32c1534757f1795790a1e8ec9759a30f478c","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:805b8a01-db3d-4b47-8b15-eef479b0b700"}},"repository":{"url":"git+https://github.com/apexcharts/apexgantt.git","type":"git"},"_npmVersion":"11.18.0","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"20.20.2","dependencies":{"dayjs":"^1.11.13"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.15.0_1783420655779_0.2545479047542736","host":"s3://npm-registry-packages-npm-production"}},"3.16.0":{"name":"apexgantt","version":"3.16.0","_id":"apexgantt@3.16.0","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"homepage":"https://github.com/apexcharts/apexgantt#readme","bugs":{"url":"https://github.com/apexcharts/apexgantt/issues"},"dist":{"shasum":"53822ce2f2f42ac01e5df8aa09269909141fdee1","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.16.0.tgz","fileCount":45,"integrity":"sha512-JcVm2RmIjE5IKh12mxWCYm4vQUjM6Htzhk0Ge+/CwsNKdAIL2ay5DRtXasYUF1Gkl7WfA7L4iVo6uqKGRqYdxg==","signatures":[{"sig":"MEUCIQD5Uw098aTC7693yMPNllrpUWgVqJ044lPF+Z/R8UGntwIgeMv0Vh/yI8SxsitY9N086N3OwyIvpBPoeWVd/1VU08I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/apexgantt@3.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1296902},"main":"./apexgantt.min.js","type":"module","types":"./apexgantt.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./apexgantt.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./apexgantt.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"01d5ad9951080738fac971526cd098d7dae2ff19","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:805b8a01-db3d-4b47-8b15-eef479b0b700"}},"repository":{"url":"git+https://github.com/apexcharts/apexgantt.git","type":"git"},"_npmVersion":"12.0.1","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"24.18.0","dependencies":{"dayjs":"^1.11.13"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.16.0_1784605757487_0.6230877011834774","host":"s3://npm-registry-packages-npm-production"}},"3.16.1":{"name":"apexgantt","version":"3.16.1","_id":"apexgantt@3.16.1","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"homepage":"https://github.com/apexcharts/apexgantt#readme","bugs":{"url":"https://github.com/apexcharts/apexgantt/issues"},"dist":{"shasum":"87f050b17db4126718f3e8f645793563b463a140","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.16.1.tgz","fileCount":45,"integrity":"sha512-LmWqDIS4mJKH3L/ph1URMKHR83wrmcJFKeD94l6+zML+uQwgj/KkbPC1MAAEm7MkBzE/4w4RMIIoNJ+07XwQFg==","signatures":[{"sig":"MEUCIQD6XSOQCx5bzec7tcmYqrOipbjhX+XeXQVHqsvE9ovWZwIgQ398hDECQViX8MemiC/NLb2wiJEucZXu1fuq/alhe6s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/apexgantt@3.16.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1297454},"main":"./apexgantt.min.js","type":"module","types":"./apexgantt.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./apexgantt.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./apexgantt.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"ebd2d5df6d15feffcd09de98113f3e32d9f7f403","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:805b8a01-db3d-4b47-8b15-eef479b0b700"}},"repository":{"url":"git+https://github.com/apexcharts/apexgantt.git","type":"git"},"_npmVersion":"12.0.1","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"24.18.0","dependencies":{"dayjs":"^1.11.13"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.16.1_1784643664609_0.14524232864116682","host":"s3://npm-registry-packages-npm-production"}},"3.17.0":{"name":"apexgantt","version":"3.17.0","_id":"apexgantt@3.17.0","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"homepage":"https://github.com/apexcharts/apexgantt#readme","bugs":{"url":"https://github.com/apexcharts/apexgantt/issues"},"dist":{"shasum":"5543bcdb237ed6c7b73d95459eb6581d135b6874","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.17.0.tgz","fileCount":45,"integrity":"sha512-p3o1W+UvIA0W7FeVlnOth/b7kUfcUocXju92cQiA1NJFUwm4WqGhUFnltmC+LIlD8UX28dS1oc1Rwwe1COvJEg==","signatures":[{"sig":"MEYCIQCxmOPHItk1qJdYq81srHrdFfLwn5Q5W2IbCwYXjV5p8AIhAPc2dWf5myUCP4F3dU4BedBsh0okojbIo3N4YckcjETJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/apexgantt@3.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1301897},"main":"./apexgantt.min.js","type":"module","types":"./apexgantt.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./apexgantt.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./apexgantt.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"3ac37edc98f3ebb2a460f3bade438d13a188fd1c","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:805b8a01-db3d-4b47-8b15-eef479b0b700"}},"repository":{"url":"git+https://github.com/apexcharts/apexgantt.git","type":"git"},"_npmVersion":"12.0.1","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"24.18.0","dependencies":{"dayjs":"^1.11.13"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.17.0_1785153634139_0.6973116652032874","host":"s3://npm-registry-packages-npm-production"}},"3.17.1":{"name":"apexgantt","version":"3.17.1","_id":"apexgantt@3.17.1","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"homepage":"https://github.com/apexcharts/apexgantt#readme","bugs":{"url":"https://github.com/apexcharts/apexgantt/issues"},"dist":{"shasum":"cb6e1c5d2e066b0aaf8d651b9e0da8db513bd039","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.17.1.tgz","fileCount":45,"integrity":"sha512-it6G+0HKSObbcygvdf3SYoV3l7sMriBxPasuWUuas+JeSMNZRu+XCs1h6II8431gO9Vl1xXSuOZ3lh+XCdCJcQ==","signatures":[{"sig":"MEYCIQCViSFafui1Q9lclCbKXqiAGYBwqdngj1HA4fq6stYx7QIhAOtfvMtLKoCuSqhtcATIe2+ihsG5XIT3tnKC0OdsTkdv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/apexgantt@3.17.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1303131},"main":"./apexgantt.min.js","type":"module","types":"./apexgantt.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./apexgantt.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./apexgantt.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"71d68383fca9834c11b2ff7234301939823e9bd7","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:805b8a01-db3d-4b47-8b15-eef479b0b700"}},"repository":{"url":"git+https://github.com/apexcharts/apexgantt.git","type":"git"},"_npmVersion":"12.0.2","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"24.18.0","dependencies":{"dayjs":"^1.11.13"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.17.1_1785674553140_0.40638313673245685","host":"s3://npm-registry-packages-npm-production"}},"3.17.2":{"name":"apexgantt","version":"3.17.2","_id":"apexgantt@3.17.2","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"homepage":"https://github.com/apexcharts/apexgantt#readme","bugs":{"url":"https://github.com/apexcharts/apexgantt/issues"},"dist":{"shasum":"0c69bb8ea092f221a323f69428d847a89ae2748e","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.17.2.tgz","fileCount":45,"integrity":"sha512-UG4/7hYomnOTDmqPrUjPSxm9G0YIxS9xcMsLvgyNt8XTm/YlNKhiBNf9MgFg7vJCM1hoTa8m5ITS8vCI4yO4og==","signatures":[{"sig":"MEUCIQC8q1mbcAZB/ZE3AC/6fnl9TBPYdhFEPn0LW2ABz4a7dAIgLmemuXf6quYLHjZxb7s/IKsKUKz3zBajN7Q1h8P63lM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/apexgantt@3.17.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1306773},"main":"./apexgantt.min.js","type":"module","types":"./apexgantt.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./apexgantt.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./apexgantt.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"55206b8b515c6773f1fa641d9e51ed449d201332","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:805b8a01-db3d-4b47-8b15-eef479b0b700"}},"repository":{"url":"git+https://github.com/apexcharts/apexgantt.git","type":"git"},"_npmVersion":"12.0.2","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"24.18.0","dependencies":{"dayjs":"^1.11.13"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.17.2_1786440368500_0.20617062556170107","host":"s3://npm-registry-packages-npm-production"}},"3.18.0":{"name":"apexgantt","version":"3.18.0","_id":"apexgantt@3.18.0","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"homepage":"https://github.com/apexcharts/apexgantt#readme","bugs":{"url":"https://github.com/apexcharts/apexgantt/issues"},"dist":{"shasum":"9ba97f17ccc5777007bee1b45e57decb6b5da1ac","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.18.0.tgz","fileCount":45,"integrity":"sha512-QZ8kGLEYqWa+kqa8qtaLwJ31327dMqKjvWuGtagslRJuxMI/mjBHR3m2iJQ/UwX5s2fihWkEr6bw3esCusOm9g==","signatures":[{"sig":"MEUCIQDs4FJG4Y6mIJY/mAtIqTgCgelWMqXd/BKNoR+HFP5w0gIgViWzX41Zl3Vjacsd3Tct3BCNfT8ENUnLijFig/2ahrc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/apexgantt@3.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1312267},"main":"./apexgantt.min.js","type":"module","types":"./apexgantt.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./apexgantt.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./apexgantt.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"28bc72b44371eac67c2a31526beb42d61bf109a5","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:805b8a01-db3d-4b47-8b15-eef479b0b700"}},"repository":{"url":"git+https://github.com/apexcharts/apexgantt.git","type":"git"},"_npmVersion":"12.0.2","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"_nodeVersion":"24.18.0","dependencies":{"dayjs":"^1.11.13"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/apexgantt_3.18.0_1786523865083_0.26936208243497806","host":"s3://npm-registry-packages-npm-production"}},"3.18.1":{"_id":"apexgantt@3.18.1","bugs":{"url":"https://github.com/apexcharts/apexgantt/issues"},"dist":{"shasum":"af7d9079f2c307f7d3ee010eee4d35a49eae557f","tarball":"https://registry.npmjs.org/apexgantt/-/apexgantt-3.18.1.tgz","fileCount":46,"integrity":"sha512-p+XnTA9HVfblBvW5Ko9wgqG+zUlpqE9Z5uL3i2NokIhqGGJFM0eLgnWOIdvi5WmzVIfgzGOJsg/S/Z8U1wvkmA==","signatures":[{"sig":"MEYCIQDrXCyTUIeL3LIgubwex7s4mBCM3M2MX9cLWjBfnypyiwIhAIlBgsXI3fxHMfmjf9ID8DWvzeuJnCGozQeNeFVhx/D9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGaq8YfYaoUPVekZzMLvhEEYC51GfzL8Y1+c6Wt3zH4kAiEAvNnw/TdkxWgGBNUw52OKT6cjm8QbC2iwr7CClgLxLeY="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/apexgantt@3.18.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1316249},"main":"./apexgantt.min.js","name":"apexgantt","type":"module","types":"./apexgantt.d.ts","module":"./apexgantt.es.min.js","exports":{".":{"import":{"types":"./apexgantt.d.ts","default":"./apexgantt.es.min.js"},"require":{"types":"./apexgantt.d.ts","default":"./apexgantt.min.js"}}},"gitHead":"0d60d34bece9fa6e4f96dd31bb0b5cff1c39098b","license":"SEE LICENSE IN LICENSE","version":"3.18.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:805b8a01-db3d-4b47-8b15-eef479b0b700"}},"homepage":"https://github.com/apexcharts/apexgantt#readme","repository":{"url":"git+https://github.com/apexcharts/apexgantt.git","type":"git"},"_npmVersion":"12.0.2","description":"A JavaScript library to create Gantt diagrams built on SVG","directories":{},"maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"_nodeVersion":"24.20.0","dependencies":{"dayjs":"^1.11.13"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/apexgantt_3.18.1_1789477147297_0.1927416653612244"}}},"time":{"created":"2025-06-22T12:44:06.747Z","modified":"2026-09-15T12:59:08.590Z","0.0.1":"2025-06-22T12:44:06.985Z","1.0.1":"2025-09-12T11:06:56.095Z","1.1.0":"2025-09-16T09:12:57.975Z","2.0.0":"2025-09-22T18:59:55.843Z","3.0.0":"2025-10-03T07:38:16.031Z","3.1.0":"2025-10-23T10:56:25.051Z","3.1.1":"2025-10-23T14:46:08.697Z","3.2.0":"2025-11-04T09:22:11.052Z","3.3.0":"2025-11-17T18:49:07.781Z","3.4.0":"2025-11-23T05:56:05.448Z","3.4.1":"2025-12-05T10:46:11.435Z","3.5.0":"2025-12-13T19:40:07.603Z","3.6.0":"2025-12-13T19:51:49.305Z","3.6.1":"2026-01-06T11:57:46.261Z","3.7.0":"2026-02-04T11:18:33.689Z","3.8.0":"2026-03-17T19:39:15.261Z","3.9.0":"2026-04-02T13:16:06.426Z","3.10.0":"2026-04-04T14:36:07.414Z","3.10.1":"2026-04-04T18:27:12.316Z","3.10.2":"2026-04-05T11:49:50.953Z","3.10.3":"2026-04-19T14:28:59.461Z","3.11.0":"2026-05-22T19:00:03.678Z","3.11.1":"2026-06-06T15:21:55.457Z","3.12.0":"2026-06-23T18:11:09.150Z","3.13.0":"2026-07-05T12:33:56.580Z","3.14.0":"2026-07-05T13:01:17.388Z","3.14.1":"2026-07-05T13:34:19.322Z","3.15.0":"2026-07-07T10:37:35.959Z","3.16.0":"2026-07-21T03:49:17.699Z","3.16.1":"2026-07-21T14:21:04.781Z","3.17.0":"2026-07-27T12:00:34.339Z","3.17.1":"2026-08-02T12:42:33.288Z","3.17.2":"2026-08-11T09:26:08.642Z","3.18.0":"2026-08-12T08:37:45.290Z","3.18.1":"2026-09-15T12:59:07.578Z"},"bugs":{"url":"https://github.com/apexcharts/apexgantt/issues"},"homepage":"https://github.com/apexcharts/apexgantt#readme","repository":{"url":"git+https://github.com/apexcharts/apexgantt.git","type":"git"},"description":"A JavaScript library to create Gantt diagrams built on SVG","maintainers":[{"name":"junedchhipa","email":"info@apexcharts.com"}],"readme":"# ApexGantt\n\nA JavaScript library to create Gantt diagrams built on SVG\n\n## Installation\n\nTo add the ApexGantt to your project and its dependencies, install the package from npm.\n\n```bash\nnpm install apexgantt\n```\n\n## Usage\n\n```js\nimport ApexGantt from 'apexgantt';\n```\n\nTo create a basic gantt with minimal configuration, write as follows:\n\n```html\n<div id=\"gantt-container\"></div>\n```\n\n```js\nconst ganttOptions = {\n  series: [\n    {\n      id: 'a',\n      startTime: '10-11-2024',\n      endTime: '11-01-2024',\n      name: 'task 1',\n      progress: 65,\n    },\n    {\n      id: '5',\n      startTime: '10-11-2024',\n      endTime: '10-26-2024',\n      name: 'subtask 1.1',\n      parentId: 'a',\n      progress: 65,\n    },\n  ],\n};\nconst gantt = new ApexGantt(document.getElementById('gantt-container'), ganttOptions);\ngantt.render();\n```\n\n## Setting the License\n\nTo use ApexGantt with a commercial license, set your license key before creating any chart instances:\n\n```js\nimport ApexGantt from 'apexgantt';\n\n// set license key before creating any charts\nApexGantt.setLicense('your-license-key');\n\nconst gantt = new ApexGantt(document.getElementById('gantt-container'), ganttOptions);\ngantt.render();\n```\n\n## ApexGantt Options\n\nThe layout can be configured by passing a second argument to `ApexGantt` with the properties listed below.\n\n| Option | Type | Default | Description |\n| --- | --- | --- | --- |\n| `series` | `TaskInput[]` | **required** | Task data array. See data format below. |\n| `theme` | `'light' \\| 'dark'` | `'light'` | Built-in color theme preset. |\n| `width` | `number \\| string` | `'100%'` | Width of the chart container. |\n| `height` | `number \\| string` | `500` | Height of the chart container. |\n| `pixelsPerDay` | `number` | _auto-fit_ | Continuous zoom level. The header tier (year/quarter/month/week/day/hour/minute) is auto-picked from this value. Reference points: `0.5` ≈ year, `1.6` ≈ quarter, `4.9` ≈ month, `25.7` ≈ week, `80` = day. Bounds clamp to roughly `[0.25, 1280]`. **When omitted**, the chart auto-fits the data span into the visible timeline area on first render; supply an explicit value (or zoom via the toolbar) to take control. |\n| `snapUnit` | `'day' \\| 'hour' \\| 'minute'` | `'day'` | Granularity at which task drag, resize, and inline edits snap. Independent of timeline header tier. |\n| `snapValue` | `number` | `1` | Multiplier applied to `snapUnit`, e.g. `snapUnit: 'minute', snapValue: 15` → 15-min steps. |\n| `inputDateFormat` | `string` | `'MM-DD-YYYY'` | dayjs-compatible format used to parse `startTime` / `endTime` values. Include time tokens (e.g. `'YYYY-MM-DD HH:mm'`) to enable sub-day editing — inline-edit inputs switch to `datetime-local` automatically. |\n| `locale` | `{ direction?: 'ltr' \\| 'rtl' \\| 'auto', dateLocale?: GanttDateLocale, messages?: Partial<GanttMessages> }` | `{ direction: 'ltr' }` | Localization, date-locale, and text-direction. See [Localization & RTL](#localization--rtl). |\n| `canvasStyle` | `string` | `''` | Arbitrary CSS injected onto the root container element. |\n| `backgroundColor` | `string` | `'#FFFFFF'` | Background color of the chart container. |\n| `headerBackground` | `string` | `'#F8F9FB'` (light) / `'#2A2A2A'` (dark) | Background color of the header row. |\n| `rowHeight` | `number` | `40` | Height of each task row in pixels. |\n| `rowBackgroundColors` | `string[]` | `['#FFFFFF']` | Alternating row background colors; the pattern cycles automatically. |\n| `tasksContainerWidth` | `number` | `425` | Initial pixel width of the task-list panel. |\n| `columnConfig` | `ColumnListItem[]` | `undefined` | Custom column definitions for the task-list panel. Controls which columns are shown, their order, titles, and widths. See [Column Configuration](#column-configuration). |\n| `sortBy` | `SortCriterion \\| SortCriterion[]` | `[{ key: 'startTime', direction: 'asc' }]` | Initial sort for the task list. **Hierarchy-preserving**: siblings are reordered within each parent, never flattened. Each `SortCriterion` is `{ key, direction?: 'asc' \\| 'desc' }`; pass an array for multi-key sort (first key wins, ties break on the next). Omit for the default (start-time ascending); pass `[]` for natural (input) order. Summary (parent) rows sort by their rolled-up span/value. See [Sorting & Filtering](#sorting--filtering). |\n| `filterBy` | `(task: Task) => boolean` | `undefined` | Initial filter for the task list. A predicate run against each task; a task is kept when it **matches or has a matching descendant** (so ancestors of matches stay visible to preserve tree context). Filtering is view-only — it changes which rows render but not the tree, WBS, or task data. See [Sorting & Filtering](#sorting--filtering). |\n| `enableQuickFilter` | `boolean` | `false` | Show a built-in quick-filter search box in the toolbar. Typing filters the task list to rows whose configured fields contain the query (ancestors of matches stay visible); clearing it removes the filter. Drives the same view-only filter as `gantt.filter()`. See [Sorting & Filtering](#sorting--filtering). |\n| `quickFilter` | `QuickFilterOptions` | `undefined` | Fine-tunes the quick-filter box: `placeholder` (defaults to the localized `quickFilterPlaceholder` message), `fields` (task string fields matched against the query; default `['name']`), and `caseSensitive` (default `false`). |\n| `filterRules` | `FilterRuleSet` | `undefined` | Initial structured filter (advanced filter builder): `{ match: 'all' \\| 'any', rules: FilterRule[] }`. Each `FilterRule` is `{ field, operator, value? }`; combined with `'all'` (AND) or `'any'` (OR). Compiles to the same view-only filter as `filterBy` and takes precedence over it. See [Sorting & Filtering](#sorting--filtering). |\n| `enableFilterBuilder` | `boolean` | `false` | Show a built-in advanced filter builder in the toolbar: a \"Filter\" button (with an active-rule count badge) that opens a popover for composing field/operator/value conditions combined with All / Any. Drives the same view-only filter as `gantt.setFilterRules()`. See [Sorting & Filtering](#sorting--filtering). |\n| `groupBy` | `GroupCriterion \\| ColumnKey \\| string` | `undefined` | Initial grouping. When set, the parent/child tree is suspended and tasks are bucketed under collapsible group headers (label + member count). Pass a bare column key, or a `GroupCriterion` (`{ field, accessor?, label?, direction? }`) for custom value extraction, labelling, and header order. Also available at runtime via `gantt.groupBy()` / `gantt.clearGrouping()`. See [Grouping](#grouping). |\n| `barBackgroundColor` | `string` | `'#318CE7'` (light) / `'#818CF8'` (dark) | Default background fill color for task bars. |\n| `barBorderRadius` | `string` | `'5px'` | CSS border-radius applied to task bars. |\n| `barMargin` | `number` | `4` | Top and bottom margin inside each row for the task bar. |\n| `barTextColor` | `string` | `'#FFFFFF'` | Text color rendered inside task bars. |\n| `barLabel` | `BarLabelOptions` | `{ position: 'right', field: 'name' }` | Per-task bar label. Defaults to `position: 'right'` so labels stay visible regardless of bar width. Set `position: 'inside'` to render centered inside the bar, `'left'` to render before it, or `'auto'` to pick between `'inside'` and `'right'` based on bar width; supply `render: (task) => string \\| HTMLElement` to compose the name with chips, icons, or owner info. When `position: 'left'`, the timeline auto-reserves `120px` of leading space so labels don't disappear under the task-list panel — tune via `barLabel.leadingPadding`. Outside labels are not currently rendered for milestones. |\n| `summaryBarColor` | `string` | `'#94A3B8'` (light) / `'#8FBCBC'` (dark) | Fill color for summary (group) bars. |\n| `milestoneColor` | `string` | `'#7C3AED'` (light) / `'#A78BFA'` (dark) | Fill color for milestone diamonds. |\n| `arrowColor` | `string` | `'#94A3B8'` (light) / `'#94A3B8'` (dark) | Color of dependency arrows between tasks. Subtle slate-gray by default so links don't compete with bars. |\n| `dependencies` | `DependencyOptions` | `{}` | Polish + editing for dependency arrows: `cornerRadius` (rounded joints), `hitWidth` (invisible thicker stroke for hover/click targeting), `tooltipTemplate: (ctx) => string` (HTML on hover — requires non-zero `hitWidth`), `classBuilder: (ctx) => string \\| string[]` (per-arrow CSS class for cross-team / blocked / etc), `editable: boolean` (hover darkens the arrow, click selects it and reveals a \"✕\" affordance — click the ✕ or press <kbd>Delete</kbd> to remove via the undoable command path; on bar hover two anchor circles appear at the bar's start/finish edges, and dragging from one to another bar draws a dashed preview that commits the new dependency on release — the (source-anchor, target-anchor) pair determines the type: right→left FS, left→left SS, right→right FF, left→right SF), `allowSummaryDescendantLinks: boolean` (allow drawing edges between a summary task and its descendants; off by default since such edges confuse downstream date math). When `editable: true`, `hitWidth` is auto-bumped to at least `12` if unset. The `ctx` carries `fromTask`, `toTask`, `type`, and `lag`. |\n| `calendar` | `CalendarOptions` | `undefined` | Working-calendar config. When set, weekends + holidays drive duration math, summary aggregation, and timeline stripes — durations stop counting calendar days and start counting working days. Fields: `workingWeekdays: number[]` (0 = Sunday … 6 = Saturday; default `[1, 2, 3, 4, 5]`), `holidays: Array<string \\| Date \\| { date, label? }>` (non-working dates regardless of weekday; mixed forms allowed), `showNonWorkingStripes: boolean` (render hatched bands over weekend/holiday columns; default `true`), `holidayTooltip: (ctx) => string` (optional HTML rendered when the user hovers a holiday stripe — `ctx.date` is the Date, `ctx.label` is whichever string was supplied in the matching entry), `dragSnapMode: 'next' \\| 'previous' \\| 'allow'` (what happens when a drag/resize commits onto a non-working day — `'next'` (default) snaps forward, `'previous'` snaps backward, `'allow'` permits non-working start/end. Drag preserves the source task's working-day duration across the snap; resize snaps the moving endpoint only. No effect when `snapUnit !== 'day'` or the input format carries time tokens). Absent calendar = today's behavior (every day is a working day, no stripes, no snap). |\n| `borderColor` | `string` | `'#E5E7EB'` (light) / `'#3A3A3A'` (dark) | Color of cell and row divider lines. |\n| `cellBorderColor` | `string` | `'#EDEFF2'` (light) / `'#3A3A3A'` (dark) | Border color for all cells in the task table and timeline grid. |\n| `cellBorderWidth` | `string` | `'1px'` | CSS border-width for all cell lines. |\n| `columnLines` | `boolean` | `true` | Whether to draw vertical lines between timeline columns. Set to `false` for a cleaner look that keeps only the horizontal row dividers. |\n| `enableProjectBoundary` | `boolean` | `false` | When `true`, two vertical lines mark the project's earliest start and latest end across all rows. Auto-recomputes when tasks are added, removed, or rescheduled. |\n| `projectBoundaryColor` | `string` | `'#7C3AED'` | Stroke colour for the project-boundary lines. Falls back to `annotationBorderColor` when omitted. |\n| `enableRollups` | `boolean` | `false` | When `true`, summary (parent) rows display thin rollup markers below the summary bar at each leaf descendant's date range. Useful for keeping children visible at a glance even when the parent is collapsed. |\n| `enableResize` | `boolean` | `true` | Allow the task-list panel to be resized by dragging the divider. |\n| `enableExport` | `boolean` | `true` | Show the export button in the toolbar. |\n| `exportFormat` | `'svg' \\| 'png' \\| 'pdf'` | `'svg'` | Format produced by the toolbar export button. `svg` is vector; `png` rasterizes the chart; `pdf` embeds a raster on a single page. Any format is also available programmatically via `gantt.exportChart(format)`. |\n| `autoSizeColumns` | `boolean` | `true` | Auto-size each task-list column to fit its header title and cell content, growing the panel (never below `tasksContainerWidth`) so nothing is clipped. `minWidth` sets a column's preferred (default) width and `maxWidth` (default `320px`) the ceiling. The panel stays freely resizable: dragging the divider stretches columns proportionally or shrinks them (down to a small floor, so a large `minWidth` never blocks resizing). Set `false` for the legacy behavior where the panel width is split purely by `flexGrow`. See [Column Configuration](#column-configuration). |\n| `resizableColumns` | `boolean` | `true` | Allow individual columns to be resized by dragging the handle at the trailing edge of each column header. A resized column is pinned to its chosen pixel width and the other columns absorb the remaining space, so you can keep some columns wide and others thin. Double-click a handle to reset that column to its auto width. Opt a single column out with `columnConfig[].resizable: false`. Also available programmatically via `gantt.setColumnWidth()` / `gantt.resetColumnWidths()`. See [Column Configuration](#column-configuration). |\n| `reorderableColumns` | `boolean` | `true` | Allow columns to be reordered by dragging a column header left or right onto another column (a drop indicator shows the insertion point). The new order is reflected in the grid, included in `getState()` / `setState()`, and emitted as a `columnReorder` event. Also available programmatically via `gantt.setColumnOrder()`. See [Column Configuration](#column-configuration). |\n| `persistState` <a id=\"uistate\"></a> | `boolean \\| { key?: string }` | `false` | Persist and restore the UI view state (zoom, scroll, sort, filter, collapse, selection) via `localStorage`. `true` uses the default key (`'apexgantt-state'`); an object sets a custom `key`. Restored on the first `render()`; saved (debounced) whenever the view changes. Also available programmatically via `gantt.getState()` / `gantt.setState()`. See [UI state persistence](#ui-state-persistence). |\n| `enableInlineEdit` | `boolean` | `false` | Allow editing task fields directly in the task-list cells (double-click to edit `name`, `startTime`, `endTime`, `duration`, `progress`). Auto-enabled when `enableTaskEdit` is `true`; set explicitly to `false` to opt out. See [Inline Editing](#inline-editing). |\n| `enableTaskDrag` | `boolean` | `true` | Allow tasks to be reordered by dragging rows in the task list. |\n| `enableTaskEdit` | `boolean` | `false` | Show the inline task-edit form when a task row is clicked. |\n| `enableTaskResize` | `boolean` | `true` | Allow task bars to be resized by dragging their handles. |\n| `enableDrawTask` | `boolean` | `false` | Allow creating a task by dragging across an empty stretch of the timeline: press on an empty row, drag horizontally to sweep out the date range, and release to add a task with those (snapped) start/end dates. Press `Escape` mid-drag to cancel. Off by default so existing empty-area drags stay inert. Respects `beforeTaskAdd` and is recorded in undo history. See [Drawing tasks on the timeline](#drawing-tasks-on-the-timeline). |\n| `enableScrollButtons` | `boolean` | `false` | Show a small chevron at the edge of a task's row when that task's bar is scrolled out of the visible timeline window; clicking it scrolls the bar back into view (nearest-edge). Also available programmatically via `gantt.scrollToTask()`. |\n| `scrollToTaskOnRowClick` | `boolean` | `false` | Clicking a task-list row scrolls that task's bar into view (nearest-edge, horizontal and vertical), the same as calling `gantt.scrollToTask()`. Composes with `enableSelection` (a single click both selects the row and reveals its bar). Clicks on the checkbox, the toggle chevron, or an active inline-edit input are ignored. |\n| `enableProgressDrag` | `boolean` | `true` | Allow editing task progress by dragging the small handle that appears at the bottom of the bar on hover. Snaps to whole percent on commit and emits a `taskProgressChanged` event. |\n| `enableTaskEditingShortcuts` | `boolean` | `false` | Enable keyboard shortcuts on the task-list panel: `Delete` / `Backspace` removes the focused task (cascade: children), `Tab` indents under the previous sibling, `Shift+Tab` outdents to the grandparent. Off by default; opt in once you've decided the shortcuts fit your app. All operations are recorded in the undo history and respect `beforeTaskDelete` / `beforeTaskMove` hooks. |\n| `enableTaskCRUDToolbar` | `boolean` | `false` | Show built-in `+ Add task` and trash-icon `Delete` buttons in the toolbar. Delete is auto-disabled when nothing is selected and deletes every selected task (cascade: children) on click; Add inserts a root-level \"New task\" using placeholder dates derived from the current project span. Combine with `enableSelection: true` for the delete button to be useful. |\n| `enableContextMenu` | `boolean` | `false` | Show a built-in right-click menu on task bars and task-list rows with entries for Edit, Add child / sibling task, Indent, Outdent, and Delete (cascade). Entries are gated by capability — Edit only when `enableTaskEdit` is on; Indent/Outdent only when the move is legal. Off by default so consumers can ship their own menu without competing. |\n| `enableAddTaskRow` | `boolean` | `false` | Render a single-line `+ Add task` row at the bottom of the task list that inserts a new root-level placeholder task on click (or Enter / Space). Disabled while row virtualisation is active (dataset ≥ 50 rows). |\n| `history` | `{ enabled?: boolean; maxSize?: number }` | `{ enabled: true, maxSize: 100 }` | Configures the undo/redo history. Every mutating call (drag, resize, inline / dialog edit, add, delete, move, dependency change) is recorded unless `enabled: false`. Use `gantt.undo()` / `gantt.redo()` to traverse, `gantt.canUndo()` / `gantt.canRedo()` to gate UI affordances, and the `historyChange` event to react to changes. The toolbar shows Undo/Redo buttons when `enableTaskCRUDToolbar` is on and history is enabled; Ctrl/Cmd+Z and Ctrl+Y / Ctrl+Shift+Z trigger undo/redo from anywhere inside the chart (except text inputs). |\n| `enableTooltip` | `boolean` | `true` | Show a tooltip on task-bar hover. |\n| `enableSelection` | `boolean` | `false` | Enable row selection (click, Ctrl+Click, Shift+Click, keyboard). |\n| `beforeTaskAdd` | `(ctx) => boolean \\| void` | `undefined` | Veto hook called immediately before `gantt.addTask()` inserts a task. Return `false` to cancel the insertion. `ctx` is `{ input, parentId? }`. |\n| `beforeTaskUpdate` | `(ctx) => boolean \\| void` | `undefined` | Veto hook called before every update path (drag, resize, progress drag, inline / dialog edit, `gantt.updateTask()`). Return `false` to reject. `ctx` is `{ task, updates }`. |\n| `beforeTaskMove` | `(ctx) => boolean \\| void` | `undefined` | Veto hook called immediately before `gantt.moveTask()` re-parents a task. Return `false` to cancel. `ctx` is `{ task, oldParentId?, newParentId? }`. |\n| `beforeTaskDelete` | `(ctx) => boolean \\| void` | `undefined` | Veto hook called immediately before `gantt.deleteTask()` removes a task. Return `false` to cancel. `ctx` is `{ task, descendantIds, cascade: 'forbid' \\| 'children' \\| 'orphan' }`. `descendantIds` is empty for `'orphan'` since children survive. |\n| `beforeDependencyChange` | `(ctx) => boolean \\| void` | `undefined` | Veto hook called immediately before `gantt.addDependency()` / `gantt.removeDependency()` mutate an edge. Return `false` to cancel. `ctx` is `{ change: 'add'\\|'remove', fromId, toId, type, lag }`. |\n| `showCheckboxColumn` | `boolean` | `true` | Show a checkbox column for multi-select. Only applies when `enableSelection` is true. |\n| `enableCriticalPath` | `boolean` | `false` | Calculate and highlight the critical path through dependent tasks. |\n| `criticalBarColor` | `string` | `'#E53935'` (light) / `'#F87171'` (dark) | Fill color for task bars on the critical path. |\n| `criticalArrowColor` | `string` | `'#E53935'` (light) / `'#F87171'` (dark) | Stroke color for dependency arrows on the critical path. |\n| `enableCrosshair` | `boolean` | `false` | Show a vertical crosshair line that follows the cursor across the timeline, with a label showing the precise date/time at the pointer position. |\n| `crosshairColor` | `string` | `'#3B82F6'` (light) / `'#818CF8'` (dark) | Color of the crosshair line and the label background. |\n| `crosshairLabelFormat` | `(date, tier) => string` | _auto_ | Custom formatter for the crosshair label. Receives the date under the cursor and the active sub-tier (`'minute' \\| 'hour' \\| 'halfday' \\| 'day' \\| 'week' \\| 'month' \\| 'quarter' \\| 'year'`). When omitted, the label auto-adapts to the active tier — `'ddd MM/DD/YYYY'` for day-and-coarser tiers, `'MM/DD HH:mm'` for halfday/hour/minute tiers. |\n| `baseline` | `Partial<BaselineOptions>` | `undefined` | When `enabled: true`, renders a thin baseline bar below each task bar. Hovering the baseline shows a tooltip with its planned start/end dates. When `rowHeight` isn't explicitly set, the default rowHeight is bumped to make room for the baseline without squeezing the actual bar. Fields: `color: string` (fill / stripe color; when omitted it defaults to the task bar's progress shade, i.e. the darker tone of the bar drawn above, so the baseline matches its bar; set an explicit color to override), `striped: boolean` (fill the bar with thick diagonal stripes instead of a flat color; default `true`), `stripeColor: string` (color of the gaps between stripes; default `'#FFFFFF'`), `stripeWidth: number` (px width of each stripe band, larger values = thicker; default `3`), `stripeAngle: number` (stripe angle in degrees; default `45`). By default baselines render as thick diagonal stripes tinted with the bar's progress color over a white background; set `striped: false` for a solid fill. |\n| `tooltipId` | `string` | `'apexgantt-tooltip-container'` | HTML `id` for the tooltip container element. |\n| `tooltipTemplate` | `(task, dateFormat) => string` | built-in | Custom function returning an HTML string for the task tooltip. |\n| `tooltipBorderColor` | `string` | `'#E5E7EB'` (light) / `'#444444'` (dark) | Border color of the tooltip. |\n| `tooltipBGColor` | `string` | `'#FFFFFF'` | Background color of the tooltip. |\n| `fontColor` | `string` | `'#1F2933'` (light) / `'#E0E0E0'` (dark) | Color for all text in the chart. |\n| `fontFamily` | `string` | `'system-ui, -apple-system, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif'` | CSS font-family for the chart. |\n| `fontSize` | `string` | `'14px'` | CSS font-size for the chart. |\n| `fontWeight` | `string` | `'400'` | CSS font-weight for the chart. |\n| `annotationBgColor` | `string` | `'#F9D1FC'` | Background color of annotation markers. |\n| `annotationBorderColor` | `string` | `'#E273EA'` | Border color of annotation markers. |\n| `annotationBorderDashArray` | `number[]` | `[]` | SVG stroke-dasharray for annotation borders, e.g. `[6, 3]`. |\n| `annotationBorderWidth` | `number` | `2` | Border width of annotation markers in pixels. |\n| `annotationOrientation` | `Orientation` | `Orientation.Horizontal` | Whether annotation lines are drawn horizontally or vertically. |\n| `annotations` | `Annotation[]` | `[]` | Array of annotation objects to overlay on the timeline. |\n| `parsing` | `ParsingConfig` | `undefined` | Field-mapping config to parse non-standard task shapes. See Data Parsing below. |\n| `toolbarItems` | `ToolbarItem[]` | `[]` | Custom controls rendered in the toolbar alongside the built-in zoom and export buttons. Each item can be a `ToolbarButton`, `ToolbarSelect`, or `ToolbarSeparator`. |\n| `taskListAriaLabel` | `string` | `'Task list'` | `aria-label` for the task-list table, used by screen readers. |\n\n### Localization & RTL\n\nPass a `locale` object to translate strings, localize dates, and flip text direction. With the defaults (`{ direction: 'ltr' }`, no `dateLocale`, no `messages`) the output is byte-for-byte unchanged.\n\n```ts\nimport localeFr from 'dayjs/locale/fr';\n\nconst gantt = new ApexGantt('#chart', {\n  series: tasks,\n  locale: {\n    direction: 'rtl',\n    dateLocale: localeFr, // months/weekdays in the timeline header render in French\n    messages: {\n      addTask: 'Ajouter une tâche',\n      editTaskTitle: (name) => `Modifier : ${name}`,\n    },\n  },\n});\n```\n\n| `locale` key | Type | Default | Description |\n| --- | --- | --- | --- |\n| `direction` | `'ltr' \\| 'rtl' \\| 'auto'` | `'ltr'` | Text/layout direction. `'rtl'` sets `dir=\"rtl\"` on the container (flowing the toolbar, task list, task form, context menu, and tooltips right-to-left and moving the task-list panel to the right) **and mirrors the timeline time axis** so time flows right-to-left: the earliest date sits on the right, bars/header cells/grid lines/non-working stripes/dependency arrows/annotations are all mirrored, progress fills from the start (right) edge, and drag/resize/progress interactions are direction-aware. `'auto'` defers to the document/element. |\n| `dateLocale` | `GanttDateLocale` (a `dayjs/locale/*` object) | `undefined` | Localizes every date, month, weekday, and quarter label the timeline renders. Import the dayjs locale object and pass it; ApexGantt registers it on its own bundled dayjs, so you do not need to configure dayjs yourself. |\n| `messages` | `Partial<GanttMessages>` | `{}` | Overrides any subset of the generated strings (toolbar, context menu, task form + validation, baseline tooltip, add-task row, and bar aria-labels). Unset keys keep their English defaults, exported as `DEFAULT_GANTT_MESSAGES`. |\n\n`GanttMessages` keys include: `addTask`, `deleteSelected`, `undo`, `redo`, `exportAsSvg`, `exportAsPng`, `exportAsPdf`, `quickFilterPlaceholder`, `filterButton`, `filterHeading`, `filterMatchLabel`, `filterMatchAll`, `filterMatchAny`, `filterAddCondition`, `filterApply`, `filterClear`, `filterRemoveCondition`, `filterNoConditions`, `filterOperatorLabel(operator)`, `groupNone`, `groupCountLabel(count)`, `exportFailedNoChart`, `exportFailedGeneric`, `editTask`, `addChildTask`, `addSiblingTask`, `indent`, `outdent`, `deleteTask`, `deleteTaskWithChildren`, `formTaskName`, `formStartDate`, `formEndDate`, `formProgress`, `formSubmit`, `editTaskTitle(name)`, `validationStartRequired`, `validationEndRequired`, `validationEndAfterStart`, `validationNameRequired`, `validationProgressRequired`, `validationProgressRange`, `addTaskRowLabel`, `baselineLabel`, `startLabel`, `endLabel`, `summaryAriaLabel(ctx)`, `barAriaLabel(ctx)`, `barAriaValueText(ctx)`, and `progressAriaLabel(name)`. Column headers (set via the columns API) and the default tooltip template (`tooltipTemplate`) are localized through their own options.\n\nDefault tooltip template\n\n```js\ntooltipTemplate(task, dateFormat) {\n    const items = [\n      `<div>\n        <strong>Name:</strong>\n        <span>${task.name}</span>\n      </div>\n      `,\n    ];\n\n    if (task.type === TaskType.Task) {\n      items.push(`\n        <div>\n          <strong>Start:</strong>\n          <span>${getTaskTextByColumn(task, ColumnKey.StartTime, dateFormat)}</span>\n        </div>\n        <div>\n          <strong>End:</strong>\n          <span>${getTaskTextByColumn(task, ColumnKey.EndTime, dateFormat)}</span>\n        </div>\n        <div>\n          <strong>Duration:</strong>\n          <span>${getTaskTextByColumn(task, ColumnKey.Duration, dateFormat)}</span>\n        </div>\n        <div>\n          <strong>Progress:</strong>\n          <span>${task.progress}%</span>\n        </div>\n      `);\n    } else if (task.type === TaskType.Milestone) {\n      items.push(`\n        <div>\n          <strong>Date:</strong>\n          <span>${getTaskTextByColumn(task, ColumnKey.StartTime, dateFormat)}</span>\n        </div>\n      `);\n    }\n\n    if (task.dependency) {\n      items.push(`\n        <div>\n          <strong>Dependency:</strong>\n          <span>${task.dependency}</span>\n        </div>\n      `);\n    }\n\n    return `\n      <div style='display:flex;flex-direction:column;align-items:left;gap:5px;padding:5px 10px;'>\n        ${items.join('')}\n      </div>\n    `;\n  },\n```\n\n### Expected data format to set as Options.series\n\nEach tasks should be in below format\n\n```js\n[\n  {\n    id: 'a', // unique id of the task\n    startTime: '10-11-2024', // start time of the task\n    endTime: '11-01-2024', // end time of the task\n    name: 'task 1', // task name\n    parentId: 'a', // parent task id\n    progress: 65, // progress in percentage\n  },\n];\n```\n\n#### Per-task fields\n\n| Field | Type | Default | Description |\n| --- | --- | --- | --- |\n| `id` | `string` | **required** | Unique task identifier. Must be stable across renders. |\n| `name` | `string` | **required** | Display name shown in the task list and inside the bar. |\n| `startTime` | `string` | **required** | Task start date, parsed with `inputDateFormat`. Not required when `showSummaryBar` is `true`. |\n| `endTime` | `string` | `startTime` | Task end date. When omitted the task renders as a milestone. Not required when `showSummaryBar` is `true`. |\n| `progress` | `number` | `0` | Completion percentage (0–100). |\n| `type` | `'task' \\| 'milestone'` | `'task'` | Visual type of the task. |\n| `parentId` | `string` | `undefined` | ID of the parent task; creates a hierarchical (indented) relationship. |\n| `dependency` | `string \\| TaskDependency` | `undefined` | Declares a dependency on another task. A plain string is treated as a Finish-to-Start dependency. `TaskDependency.lagUnit: 'working' \\| 'calendar'` controls whether `lag` is interpreted as working days (the default when a calendar is configured) or raw calendar days. |\n| `barBackgroundColor` | `string` | `undefined` | Overrides the chart-level `barBackgroundColor` for this task only. |\n| `rowBackgroundColor` | `string` | `undefined` | Overrides the row background color for this task only. |\n| `collapsed` | `boolean` | `false` | Whether this task's children are initially collapsed. |\n| `showSummaryBar` | `boolean` | `true` | Renders this task as a summary (group) bar when it has children. Its date range is computed automatically from its descendants — `startTime`/`endTime` are ignored (a warning is logged if provided). The bar is read-only: drag, resize, and progress are disabled. Set to `false` to opt out and render the parent as a normal task bar. |\n| `baseline` | `BaselineInput` | `undefined` | Planned (baseline) dates rendered as a thin bar beneath the actual bar when `baseline.enabled` is `true`. |\n\n### Expected annotation format to set as Options.annotations\n\nEach tasks should be in below format\n\n```js\n[\n  {\n    x1: '10-25-2024', // start date\n    x2: 'END_DATE', // optional. If present, draw a rect from x1 to x2. If null, only draw line on x1,\n    label: {\n      text: 'Annotation rect', // label for the annotation\n      fontColor: '#333333', // optional\n      fontFamily: 'Arial', // optional\n      fontSize: '12px', // optional\n      fontWeight: 'bold', // optional\n    },\n  },\n];\n```\n\n## Column Configuration\n\nCustomize which columns appear in the task-list panel, their order, titles, and widths. When `columnConfig` is provided, **it is authoritative** — only the columns you list are rendered, in the order you specify. Omitted columns are hidden. Each entry is merged with defaults, so you only need to specify overrides.\n\nBy default ([`autoSizeColumns`](#options)), each column is sized to fit its header title and the widest cell content, and the task-list panel grows so nothing is clipped. `minWidth` sets a column's preferred (default) width and `maxWidth` (default `320px`) the ceiling. The panel remains freely resizable: dragging the divider distributes width proportionally to content when widening, and shrinks columns toward a small floor when narrowing (so a large `minWidth` never blocks the resize). Set `autoSizeColumns: false` to split the fixed `tasksContainerWidth` purely by `flexGrow` (the legacy behavior), in which case columns clip to their `minWidth` when the panel is too narrow.\n\n**Resizing a single column.** With `resizableColumns` on (the default), each column header has a drag handle at its trailing edge. Drag it to pin that column to an exact pixel width; the remaining columns absorb the leftover panel space, so you can keep some columns wide and others thin. Double-click a handle to reset that column to its auto width. Lock one column with `resizable: false` in its `columnConfig` entry. The same overrides are available programmatically via `gantt.setColumnWidth(key, px)`, `gantt.resetColumnWidths(key?)`, and `gantt.getColumnWidths()`, are included in `getState()` / `setState()`, and emit a `columnResize` event.\n\n**Reordering columns.** With `reorderableColumns` on (the default), drag a column header left or right onto another column to move it; a vertical drop indicator shows where it will land, and a short drag threshold keeps a plain click sorting as usual. Drive it programmatically with `gantt.setColumnOrder([...keys])` / `gantt.getColumnOrder()`. The order is included in `getState()` / `setState()` and emits a `columnReorder` event.\n\nAvailable built-in column keys:\n\n| Key | Title | Shows |\n| --- | --- | --- |\n| `Name` | Task Name | Task name with the collapse chevron + indentation |\n| `StartTime` | Start | Start date (rolled-up start for summary rows) |\n| `EndTime` | End | End date (rolled-up end for summary rows) |\n| `Duration` | Duration | Duration in the active snap unit (working days when a calendar is set) |\n| `Progress` | Progress | Progress percent as text |\n| `ProgressRing` | Progress | Progress as an SVG ring |\n| `Wbs` | WBS | Work Breakdown Structure code (`1`, `1.2`, …) |\n| `Assignees` | Assignees | Comma-joined assignee names (from `task.assignees`) |\n| `Predecessors` | Predecessors | Predecessor tasks by WBS, with a non-`FS` type + non-zero lag suffix (e.g. `1.2, 3SS+2d`) |\n| `Successors` | Successors | Successor tasks by WBS (same notation) |\n| `BaselineStart` | Baseline Start | Baseline start date (from `task.baseline.start`) |\n| `BaselineEnd` | Baseline End | Baseline end date (from `task.baseline.end`) |\n| `BaselineVariance` | Variance | Finish variance vs baseline in days (`+` = late, `-` = early) |\n\n`Predecessors` / `Successors` are derived from the dependency graph and refresh automatically as dependencies or WBS change. Every built-in column except `Wbs` is sortable and filterable; `Assignees`, `Predecessors`, and `Successors` filter as text, the baseline dates as dates, and `BaselineVariance` as a number. All are groupable via [`gantt.groupBy()`](#grouping).\n\n### Customize column widths\n\n```js\nimport {ColumnKey} from 'apexgantt';\n\nconst gantt = new ApexGantt(element, {\n  series: tasks,\n  columnConfig: [\n    {\n      key: ColumnKey.Name,\n      title: 'Task Name',\n      minWidth: '100px',\n      flexGrow: 3,\n    },\n    {\n      key: ColumnKey.StartTime,\n      title: 'Start',\n      minWidth: '100px',\n      flexGrow: 1.5,\n    },\n    {\n      key: ColumnKey.Duration,\n      title: 'Duration',\n      minWidth: '80px',\n      flexGrow: 1,\n    },\n    {\n      key: ColumnKey.Progress,\n      title: 'Progress',\n      minWidth: '80px',\n      flexGrow: 1,\n    },\n  ],\n});\n```\n\n### Hide columns\n\nShow only the columns you need by omitting the rest:\n\n```js\nconst gantt = new ApexGantt(element, {\n  series: tasks,\n  columnConfig: [\n    {key: ColumnKey.Name, title: 'Task Name'},\n    {key: ColumnKey.Progress, title: 'Progress'},\n  ],\n});\n```\n\nYou can also use `visible: false` to keep a column in the config but hide it (useful for toggling at runtime via `update()`):\n\n```js\ncolumnConfig: [\n  {key: ColumnKey.Name, title: 'Task Name'},\n  {key: ColumnKey.StartTime, title: 'Start'},\n  {key: ColumnKey.Duration, title: 'Duration', visible: false}, // hidden\n  {key: ColumnKey.Progress, title: 'Progress'},\n],\n```\n\n### Reorder columns\n\nChange the array order to reorder the rendered columns:\n\n```js\ncolumnConfig: [\n  {key: ColumnKey.Progress, title: 'Progress'},\n  {key: ColumnKey.Name, title: 'Task Name'},\n  {key: ColumnKey.StartTime, title: 'Start'},\n],\n```\n\n### Include the End Date column\n\nThe `EndTime` column is available but not shown by default. Add it to your config:\n\n```js\ncolumnConfig: [\n  {key: ColumnKey.Name, title: 'Task Name'},\n  {key: ColumnKey.StartTime, title: 'Start'},\n  {key: ColumnKey.EndTime, title: 'End', minWidth: '70px', flexGrow: 1.5},\n  {key: ColumnKey.Duration, title: 'Duration'},\n  {key: ColumnKey.Progress, title: 'Progress'},\n],\n```\n\n### Show progress as a ring instead of text\n\nSwap the default text Progress column for the built-in SVG ring variant — same data (`task.progress`), no setup needed:\n\n```js\ncolumnConfig: [\n  {key: ColumnKey.Name, title: 'Task Name'},\n  {key: ColumnKey.StartTime, title: 'Start'},\n  {key: ColumnKey.Duration, title: 'Duration'},\n  {key: ColumnKey.ProgressRing, title: 'Progress', minWidth: '60px', flexGrow: 0.6},\n],\n```\n\n`ColumnKey.ProgressRing` renders with sensible defaults (28px ring, blue arc). For full customisation (size, colours, accessor, per-task colour function) use the `renderers.progressRing()` factory with a custom column key — see [Built-in renderer presets](#built-in-renderer-presets).\n\n### Include the WBS column\n\nThe `Wbs` column shows an auto-numbered Work Breakdown Structure code derived from each task's position in the parent/child tree (`1`, `1.1`, `1.1.2`, `2`, …). Codes recompute automatically when tasks are added, removed, or moved. Opt in by listing it explicitly:\n\n```js\ncolumnConfig: [\n  {key: ColumnKey.Wbs, title: 'WBS', minWidth: '60px', flexGrow: 0.6},\n  {key: ColumnKey.Name, title: 'Task Name'},\n  {key: ColumnKey.StartTime, title: 'Start'},\n  {key: ColumnKey.Duration, title: 'Duration'},\n  {key: ColumnKey.Progress, title: 'Progress'},\n],\n```\n\nThe code is also available on each `Task` as `task.wbs` if you need to read it from event handlers, custom column renderers, or your own UI.\n\n### ColumnListItem properties\n\n| Property | Type | Default | Description |\n| --- | --- | --- | --- |\n| `key` | `ColumnKey \\| string` | — | Built-in column identifier or any custom string id when `render` is supplied (required). |\n| `title` | `string` | from defaults | Header text displayed for the column. |\n| `minWidth` | `string` | `'30px'` | Minimum CSS width (used in `minmax()`). With `autoSizeColumns` on this is the column's preferred (default) width. |\n| `maxWidth` | `string` | `'320px'` | Ceiling for the auto-sized width, so one long value can't dominate the panel. Ignored when `autoSizeColumns` is off. |\n| `flexGrow` | `number` | `1` | Flex proportion (used as `fr` units in CSS Grid). |\n| `visible` | `boolean` | `true` | Set to `false` to hide the column. |\n| `resizable` | `boolean` | `true` | Set to `false` to lock this column at its auto/configured width (no drag handle) when `resizableColumns` is on. |\n| `render` | `ColumnRenderer` | — | Custom cell renderer. Required for custom columns; ignored for built-in keys. |\n| `accessor` | `(task) => unknown` | — | Extracts the cell's underlying value. Used by SVG export and by sorting/filtering — it is what makes a **custom** column sortable. |\n| `sortable` | `boolean` | _auto_ | Whether the column participates in sorting (header click + `sortBy` / `gantt.sort()`). Defaults to `true` for built-in value columns, `false` for `Wbs`, and `true` for custom columns only when an `accessor` or `comparator` is supplied. |\n| `comparator` | `(a: Task, b: Task) => number` | — | Custom sort comparator for this column. Takes precedence over `accessor`. Return negative / zero / positive for ascending order; the active direction is applied on top, and ties fall back to natural (input) order. |\n\n## Sorting & Filtering\n\n### Sorting\n\nSorting a Gantt is **hierarchy-preserving**: siblings are reordered within each parent, never flattened, so summary bars, WBS codes, and rollups stay coherent. Summary (parent) rows sort by their rolled-up span (for date/duration columns) or aggregate value.\n\nSet an initial sort with the `sortBy` option, or drive it imperatively. By default the chart sorts by start time ascending; pass `sortBy: []` for natural (input) order.\n\n```js\nimport {ColumnKey} from 'apexgantt';\n\nconst gantt = new ApexGantt(element, {\n  series: tasks,\n  sortBy: {key: ColumnKey.Name, direction: 'asc'},\n  // multi-key: sort by progress desc, then name asc\n  // sortBy: [{ key: ColumnKey.Progress, direction: 'desc' }, { key: ColumnKey.Name }],\n});\n\ngantt.sort({key: ColumnKey.Progress, direction: 'desc'}); // replace the sort\ngantt.getSort(); // [{ key: 'progress', direction: 'desc' }]\ngantt.clearSort(); // back to natural (input) order\n```\n\n**Clicking a sortable column header** cycles its sort ascending → descending → none (natural order), showing a ▲ / ▼ caret. **Shift+click** a header to add it as an additional sort key (multi-column sort) — each Shift+clicked column cycles ascending → descending → removed, the others are kept, and a small precedence number (1, 2, 3…) appears next to each caret. A plain click always collapses back to a single-key sort. Built-in value columns are sortable out of the box; `Wbs` is not (it is purely positional). A custom column becomes sortable when you give it an `accessor` (or a `comparator`). Override per column with `sortable`.\n\n> Sorting is applied on demand. Editing a task's dates (drag / resize / inline edit) does not automatically re-sort the row — call `gantt.sort(gantt.getSort())` to re-apply the current sort if you want the row to move. Manual sibling re-ordering is not offered in this release, so there is no drag-vs-sort conflict.\n\n### Filtering\n\nA filter is a predicate run against each task. A task is **kept when it matches or has a matching descendant**, so the ancestors of matches stay visible and the tree context is preserved. Filtering is view-only: it changes which rows render but never the tree, WBS, or task data.\n\n```js\nconst gantt = new ApexGantt(element, {\n  series: tasks,\n  filterBy: (task) => task.progress < 100, // initial filter: show incomplete work\n});\n\ngantt.filter((task) => /design/i.test(task.name)); // apply a filter\ngantt.isFiltered(); // true\ngantt.clearFilter(); // show every row again\n```\n\n**Built-in quick filter.** Set `enableQuickFilter: true` to render a search box in the toolbar; typing filters by the configured `quickFilter.fields` (default `['name']`).\n\n```js\nconst gantt = new ApexGantt(element, {\n  series: tasks,\n  enableQuickFilter: true,\n  quickFilter: {placeholder: 'Find a task…', fields: ['name'], caseSensitive: false},\n});\n```\n\n**Advanced filter builder.** Set `enableFilterBuilder: true` for a \"Filter\" toolbar button that opens a popover for composing multiple conditions (field + operator + value) combined with **All** (AND) or **Any** (OR). The valid operators adapt to the column's type:\n\n- **Text** (Name, custom): `contains`, `notContains`, `equals`, `notEquals`, `startsWith`, `endsWith`, `isEmpty`, `notEmpty`\n- **Number** (Progress, Duration): `equals`, `notEquals`, `gt`, `gte`, `lt`, `lte`, `isEmpty`, `notEmpty`\n- **Date** (Start, End): `on`, `before`, `after`, `isEmpty`, `notEmpty`\n\nThe same structured filter is available programmatically, with or without the UI:\n\n```js\nimport {ColumnKey} from 'apexgantt';\n\ngantt.setFilterRules({\n  match: 'all', // 'all' = AND, 'any' = OR\n  rules: [\n    {field: ColumnKey.Progress, operator: 'lt', value: 100},\n    {field: ColumnKey.StartTime, operator: 'after', value: '2024-02-01'},\n  ],\n});\n\ngantt.getFilterRules(); // the active FilterRuleSet, or null\ngantt.clearFilter(); // drop it\n```\n\nA custom column is filterable when it exposes an `accessor` (treated as text). For fully bespoke logic, wire `gantt.filter(predicate)` to your own controls (see the `sort-filter` demo).\n\n> Filtering respects collapse state: a matching descendant under a collapsed parent stays hidden until the parent is expanded.\n\n## UI state persistence\n\nThe Gantt can remember \"where the user left off\": zoom, scroll position, expand/collapse state, selection, sort, and filter. This view state is separate from the task data.\n\n**Manual (`getState` / `setState`).** Capture a JSON-serializable snapshot and restore it whenever you like (for example, persist it to your own backend keyed by user).\n\n```js\nconst saved = gantt.getState();\n// { version: 1, zoom, scroll, collapsed, selected, sort, filterRules, quickFilter }\n\n// later, or in a new session:\ngantt.setState(saved);\n```\n\n`setState()` accepts a partial state, so you can restore just one slice:\n\n```js\ngantt.setState({sort: [{key: ColumnKey.Name, direction: 'asc'}]});\ngantt.setState({collapsed: ['phase-1', 'phase-2']}, {silent: true}); // no sortChange/filterChange\n```\n\n**Automatic (`persistState`).** Set the `persistState` option to have the Gantt read from and write to `localStorage` for you. State is restored on the first `render()` and saved (debounced) whenever the view changes.\n\n```js\nconst gantt = new ApexGantt(element, {series: tasks, persistState: true});\n// or a custom storage key:\nconst gantt = new ApexGantt(element, {series: tasks, persistState: {key: 'project-42-gantt'}});\n```\n\nState stored under an incompatible schema `version` (or malformed JSON) is ignored, so upgrading the library never breaks a load. Persistence is a no-op in environments without `localStorage` (for example, server-side rendering).\n\n## Grouping\n\nGroup the task grid by a field to bucket tasks under collapsible group headers. While grouping is active the parent/child tree is **suspended**: every task appears flat under its group header (with a member count), and the timeline shows each task's bar aligned to its grouped row.\n\nSet it up front with the `groupBy` option or at runtime with `gantt.groupBy()`:\n\n```js\n// Bare column key — group by that column's value.\ngantt.groupBy(ColumnKey.Progress);\n\n// GroupCriterion — custom value extraction, labelling, and header order.\ngantt.groupBy({\n  field: 'status',\n  accessor: (task) => task.status, // defaults to the column's accessor\n  label: (value) => `Status: ${value}`, // defaults to String(value)\n  direction: 'desc', // header order; defaults to 'asc'\n});\n\ngantt.getGroupBy(); // the active GroupCriterion, or null\ngantt.isGrouping(); // boolean\ngantt.clearGrouping(); // restore the tree view\n```\n\nGrouping composes with sorting and filtering: members are ordered within each group by the active sort, and a filter drops non-matching members (empty groups disappear). Tasks whose group value is empty collect under a localized \"(None)\" group, which always sorts last. Each group header is collapsible; clicking its chevron hides that group's members. Group headers themselves have no task bar.\n\n> Grouping is view-only — it never mutates the task tree, WBS, or task data; clearing it returns the exact prior hierarchy. A `GroupCriterion`'s `accessor`/`label` functions are not serialized by [`persistState`](#ui-state-persistence) / `getState()` (only the `field` and `direction` are), so a restored grouping falls back to the column's own accessor.\n\n## Split tasks\n\nA task can be split into several **worked segments** separated by gaps on a single row (for example: work Mon–Wed, pause, resume Fri). Provide a `segments` array on the task, or split at runtime with `gantt.splitTask()`.\n\n```js\nconst gantt = new ApexGantt(element, {\n  series: [\n    {\n      id: 't1',\n      name: 'Implementation',\n      startTime: '2026-06-01',\n      endTime: '2026-06-20',\n      progress: 50,\n      segments: [\n        {start: '2026-06-01', end: '2026-06-06'},\n        {start: '2026-06-12', end: '2026-06-20'},\n      ],\n    },\n  ],\n});\n```\n\nThe task's `startTime` / `endTime` are the **envelope** (first segment start → last segment end) and are derived automatically from the segments, so summary rollups, dependencies, the timeline header, and the duration column all keep working. The bar renders one filled piece per segment joined by a thin connector line across the gaps; progress fills the worked segments left-to-right (gaps carry no progress).\n\nSplit at runtime, then clear the split by setting `segments` back to an empty array:\n\n```js\ngantt.splitTask('t1', '2026-06-08', {resumeAt: '2026-06-12'}); // open a gap\ngantt.isSplit('t1'); // true\ngantt.updateTask('t1', {segments: []}); // back to one contiguous bar\n```\n\nInteractions are preserved: dragging a split task moves all its segments together, and resizing adjusts its outer segment — both inferred automatically, so the same drag/resize handles work as for a normal bar.\n\n> v1 is API-driven. Interactive split gestures (double-click / context-menu \"split here\"), per-segment drag/resize, and critical-path math that excludes gap time are not yet implemented; the envelope is treated as the task's span.\n\n## Drawing tasks on the timeline\n\nSet `enableDrawTask: true` to let users create a task by dragging across an empty stretch of the timeline: press on an empty row, drag horizontally to sweep out the range, and release. A preview bar tracks the cursor during the drag, and on release a task is added with the swept start/end **snapped to the active snap unit** (`snapUnit` / `snapValue`). A press that doesn't move far enough counts as a click and creates nothing; press `Escape` mid-drag to cancel.\n\n```js\nconst gantt = new ApexGantt(element, {\n  series: tasks,\n  enableDrawTask: true,\n  snapUnit: 'day',\n});\n```\n\nThe gesture only starts on empty timeline background (never on an existing bar or its handles), goes through the same path as `gantt.addTask()` (respects `beforeTaskAdd`, recorded in undo history, emits `taskAdded`), and the new root task then sorts into position by its dates like any other add. It's off by default so existing charts' empty-area drags stay inert.\n\n## Custom column renderers\n\nYou can add columns that aren't part of the built-in set by giving them a string `key` and a `render` function. Two renderer presets ship with the library — `renderers.avatars` for assignee/resource columns and `renderers.progressRing` for completion-percentage columns. Both are tree-shakeable; only the ones you import get bundled.\n\n```js\nimport {ApexGantt, ColumnKey, renderers} from '@apexcharts/apexgantt';\n\nconst gantt = new ApexGantt(element, {\n  series: tasks, // each task may include `assignees: Assignee[]`\n  columnConfig: [\n    {key: ColumnKey.Name, title: 'Task'},\n    {\n      key: 'assignees',\n      title: 'Assigned',\n      render: renderers.avatars({\n        accessor: (task) => task.assignees,\n        max: 4,\n        size: 24,\n      }),\n    },\n    {\n      key: 'progressRing',\n      title: '%',\n      render: renderers.progressRing({size: 28, strokeWidth: 3}),\n    },\n  ],\n});\n```\n\n### Built-in renderer presets\n\n| Preset | Source | Options |\n| --- | --- | --- |\n| `renderers.avatars` | An assignee-stack with `+N` overflow and initials fallback. | `accessor`, `max`, `size`, `overlap`, `borderColor`, `fallbackColor` |\n| `renderers.progressRing` | An SVG ring with optional centered numeric label. | `accessor`, `size`, `strokeWidth`, `progressColor`, `trackColor`, `showLabel`, `labelColor` |\n\n### `Assignee` type\n\nThe avatar preset reads from `Assignee[]`. It is a public type you can import:\n\n```ts\nimport type {Assignee} from '@apexcharts/apexgantt';\n\ninterface Assignee {\n  name: string; // required\n  avatarUrl?: string; // when omitted, initials are rendered\n  initials?: string; // override the auto-derived initials\n  color?: string; // background color for the initials fallback\n}\n```\n\n### Writing your own renderer\n\nA renderer is `(ctx, el) => string | void | (() => void)`. Return one of three things depending on how you build the cell content:\n\n| Return | Meaning | Best for |\n| --- | --- | --- |\n| `string` | The library treats it as HTML and writes it to the cell via `innerHTML`. Always escape user-supplied text with the exported `escapeHtml` helper. | Vanilla JS, the built-in presets |\n| `void` | You have already mounted content into `el` yourself. The library will not modify the cell's contents. | Frameworks that own their own lifecycle |\n| `() => void` | Same as void, plus a cleanup function the library will invoke before the cell is discarded (row removal, full re-render, or `destroy()`). | React `createRoot`, Angular `ComponentRef`, Vue `createApp().mount()` |\n\n```ts\nimport {escapeHtml, type ColumnRenderer} from '@apexcharts/apexgantt';\n\nconst statusPill: ColumnRenderer = (ctx) => {\n  const status = ctx.task.status ?? 'unknown';\n  return `<span class=\"pill pill-${escapeHtml(status)}\">${escapeHtml(status)}</span>`;\n};\n```\n\nThe `ctx` argument provides:\n\n| Field         | Type           | Description                                               |\n| ------------- | -------------- | --------------------------------------------------------- |\n| `task`        | `Task`         | The task being rendered.                                  |\n| `options`     | `GanttOptions` | Resolved chart options — useful for theme-aware coloring. |\n| `rowIndex`    | `number`       | Zero-based index in the visible task list.                |\n| `isSummary`   | `boolean`      | True when the row is a summary (group) bar.               |\n| `isMilestone` | `boolean`      | True when the task is a milestone.                        |\n\n### Using with React, Angular, or Vue\n\nUse the cleanup return so the framework can unmount and free resources when a row is evicted (during virtualization scroll) or when the chart is destroyed. The library guarantees the cleanup function runs synchronously before the cell is reused or removed.\n\n```tsx\n// React\nimport {createRoot} from 'react-dom/client';\n\nconst render: ColumnRenderer = (ctx, el) => {\n  const root = createRoot(el);\n  root.render(<AvatarStack assignees={ctx.task.assignees} />);\n  return () => root.unmount();\n};\n```\n\n```ts\n// Angular — assuming you have a ViewContainerRef + a component to mount\nconst render: ColumnRenderer = (ctx, el) => {\n  const ref = vcr.createComponent(AssigneesComponent);\n  ref.setInput('task', ctx.task);\n  el.appendChild(ref.location.nativeElement);\n  return () => ref.destroy();\n};\n```\n\n```ts\n// Vue 3\nimport {createApp, h} from 'vue';\nimport AssigneesCell from './AssigneesCell.vue';\n\nconst render: ColumnRenderer = (ctx, el) => {\n  const app = createApp({render: () => h(AssigneesCell, {task: ctx.task})});\n  app.mount(el);\n  return () => app.unmount();\n};\n```\n\n### Lifecycle contract\n\nThe library invokes the cleanup function in **all three** of these cases:\n\n1. The chart is destroyed (`gantt.destroy()`).\n2. A full re-render replaces the cell (e.g. `gantt.update()`, or any `gantt.render()` call).\n3. The row is evicted because the user scrolled it out of the virtualization window.\n\nYou do not need to listen for DOM mutations yourself. If your renderer returns a function, the library will call it.\n\n## Touch & pointer support\n\nAll interactive gestures are built on **Pointer Events**, so they work with mouse, touch, and pen alike — no separate touch mode to enable. This covers dragging a task bar to reschedule it, resizing via the edge handles, dragging the in-bar progress handle, drawing dependencies from a bar's anchors, and dragging the task-list / timeline split bar.\n\nImplementation notes:\n\n- Interactive elements set `touch-action: none` so a touch-drag isn't stolen by the browser's pan/zoom (which would otherwise cancel the gesture).\n- Each gesture is owned by the pointer that started it, so a second finger can't hijack an in-progress drag.\n- If the OS interrupts a gesture (`pointercancel`), an in-flight bar drag reverts to its starting position rather than committing a partial move.\n\n> Hover-only affordances (the crosshair, bar tooltips) naturally don't appear on touch since there is no hover, but every editing gesture and tap/selection works.\n\n## Sub-day scheduling\n\nSet `inputDateFormat` to a format that includes time tokens (e.g. `'YYYY-MM-DD HH:mm'`) and choose a finer `snapUnit` to schedule tasks at the hour or minute level:\n\n```js\nconst gantt = new ApexGantt(element, {\n  series: tasks,\n  inputDateFormat: 'YYYY-MM-DD HH:mm',\n  snapUnit: 'minute',\n  snapValue: 15, // drags/resizes snap in 15-minute steps\n  pixelsPerDay: 600, // zoom in enough that hour cells show in the header\n});\n```\n\nBehavior changes when `inputDateFormat` includes time:\n\n- The end-time of a task is treated as the **exclusive end timestamp** (a task from `10:00` to `10:30` is 30 minutes wide). Day-only formats keep the existing inclusive-end behavior (a task from `Jan 10` to `Jan 15` spans 6 cells).\n- Inline-edit `startTime` / `endTime` cells switch to `datetime-local` inputs.\n- The Duration column reports in the configured `snapUnit` suffix: `d` / `h` / `m`.\n\n> **Working calendars** (weekends + holidays) are supported via the [`calendar`](#apexgantt-options) option — duration math, drag/resize snapping, and timeline stripes all honour the configured working days. Per-day working **hours** (e.g. skipping after-hours within a working day) are not yet supported and are planned for a future release.\n\n## Inline Editing\n\nSet `enableInlineEdit: true` to let users edit task fields directly in the task-list cells without opening a form.\n\n```js\nconst gantt = new ApexGantt(element, {\n  series: tasks,\n  enableInlineEdit: true,\n});\n```\n\nInline editing is also auto-enabled by `enableTaskEdit: true` (which opens a dialog when a task bar is clicked), so the two surfaces ship together by default. Pass `enableInlineEdit: false` explicitly to keep the dialog without inline cell editing:\n\n```js\nnew ApexGantt(element, {\n  series: tasks,\n  enableTaskEdit: true,\n  enableInlineEdit: false, // dialog only, cells stay read-only\n});\n```\n\n### How it works\n\n- **Activate**: double-click any editable cell.\n- **Commit**: press `Enter` or click outside the input (`blur`).\n- **Cancel**: press `Escape` to revert without saving.\n\n### Editable columns\n\n| Column | Editor | Notes |\n| --- | --- | --- |\n| `name` | text input | Empty values are rejected (cancelled silently). |\n| `startTime` | native `<input type=\"date\">` | For tasks (not milestones), the duration is preserved — `endTime` shifts by the same delta. |\n| `endTime` | native `<input type=\"date\">` | Rejected if before `startTime`. |\n| `duration` | number input (min `1`) | Edits update `endTime = startTime + duration - 1` day. `startTime` stays fixed. |\n| `progress` | number input (`0`–`100`) | Values clamp to the `0–100` range. |\n\nWhen `inputDateFormat` includes time tokens (e.g. `'YYYY-MM-DD HH:mm'`), the `startTime` / `endTime` editors switch from `<input type=\"date\">` to `<input type=\"datetime-local\">` automatically so hour/minute edits round-trip correctly.\n\n### Cells that are not editable\n\n- **Summary rows** (parents with `showSummaryBar`) — only `name` is editable; dates/duration/progress are derived from descendants.\n- **Milestones** — only `name` and `startTime` are editable (no end / duration / progress).\n- **Empty filler rows** at the bottom of the task-list panel.\n\n### Events\n\nInline edits emit the same events as the inline `TaskForm` and the public `updateTask()` method, so consumers can listen on a single event regardless of which surface produced the change:\n\n- `taskUpdate` — fires before the change is applied.\n- `taskUpdateSuccess` — fires after a successful update; `detail.updatedTask` contains the resolved task.\n- `taskUpdateError` — fires if the update throws.\n\n```js\ncontainer.addEventListener('taskUpdateSuccess', (e) => {\n  const {taskId, updatedTask} = e.detail;\n  // persist to backend\n});\n```\n\n## Data Parsing\n\nMap your existing data structure to ApexGantt format without manual transformation.\n\n```javascript\nconst apiData = [\n  {\n    task_id: 'T1',\n    task_name: 'Design Phase',\n    start_date: '01-01-2024',\n    end_date: '01-15-2024',\n    completion: 75,\n  },\n];\n\nconst gantt = new ApexGantt(document.getElementById('gantt'), {\n  series: apiData,\n  parsing: {\n    id: 'task_id',\n    name: 'task_name',\n    startTime: 'start_date',\n    endTime: 'end_date',\n    progress: 'completion',\n  },\n});\n```\n\n### Nested Objects & Transforms\n\nUse dot notation for nested properties and inline transforms for data conversion:\n\n```javascript\nconst nestedData = [\n  {\n    project: {\n      task: {id: 'T1', title: 'Design'},\n      dates: {start: '01-01-2024', end: '01-15-2024'},\n      status: {completion: 0.75},\n    },\n  },\n];\n\nconst gantt = new ApexGantt(document.getElementById('gantt'), {\n  series: nestedData,\n  parsing: {\n    id: 'project.task.id',\n    name: 'project.task.title',\n    startTime: 'project.dates.start',\n    endTime: 'project.dates.end',\n    progress: {\n      key: 'project.status.completion',\n      transform: (value) => value * 100, // convert to percentage\n    },\n  },\n});\n```\n\n**Supported fields:** `id`, `name`, `startTime`, `endTime`, `progress`, `type`, `parentId`, `dependency`, `barBackgroundColor`, `rowBackgroundColor`, `collapsed`, `showSummaryBar`\n\n## 📘 Public API\n\n### 1. `update(options)`\n\nUpdates the entire Gantt chart with new configuration and task data.\n\n#### Parameters\n\n| Name | Type | Description |\n| --- | --- | --- |\n| `options` | `Object` | Contains updated config and data. Must include a `tasks` array and other Gantt configuration options. |\n\n#### Example\n\n```js\nganttInstance.update({\n  series: [\n    {\n      id: 'task-1',\n      name: 'Design Phase',\n      start: '2025-07-01',\n      end: '2025-07-10',\n      progress: 40,\n    },\n    // more tasks...\n  ],\n  pixelsPerDay: 25.7, // week density\n});\n```\n\n### 2. `updateTask(taskId, taskData)`\n\nUpdates the specific task with provided task data.\n\n#### Parameters\n\n| Name       | Type     | Description                    |\n| ---------- | -------- | ------------------------------ |\n| `taskId`   | `string` | ID of the task to be updated   |\n| `taskData` | `Object` | Data of the task to be updated |\n\n#### Example\n\n```js\nganttInstance.updateTask('task-1', {\n  name: 'Design Phase',\n  start: '2025-07-01',\n  end: '2025-07-10',\n  progress: 40,\n});\n```\n\n### 3. `addTask(input, options?)`\n\nInserts a new task and re-renders the chart. The operation is recorded in the undo history. Emits a `taskAdded` event on success. If a `beforeTaskAdd` hook is configured and it returns `false`, the insertion is cancelled and the method returns `null`. Throws when `input.id` is missing or already exists.\n\n#### Parameters\n\n| Name      | Type                    | Description                                                              |\n| --------- | ----------------------- | ------------------------------------------------------------------------ |\n| `input`   | `TaskInput`             | Task data; `id` is required.                                             |\n| `options` | `{ parentId?: string }` | Optional parent id to insert the task under. Omit for a root-level task. |\n\nReturns the inserted `Task`, or `null` when the `beforeTaskAdd` hook cancels.\n\n#### Example\n\n```js\nganttInstance.addTask({\n  id: 'task-9',\n  name: 'Review',\n  startTime: '2026-08-01',\n  endTime: '2026-08-05',\n});\n\nganttInstance.addTask(\n  {id: 'subA', name: 'Subtask', startTime: '2026-08-01', endTime: '2026-08-03'},\n  {parentId: 'task-9'}\n);\n```\n\n### 4. `deleteTask(taskId, options?)`\n\nRemoves a task and re-renders. Recorded in the undo history. Emits a `taskDeleted` event on success. Dependency edges that reference the removed task(s) are auto-cleaned in the same transaction, so undo restores both tasks and edges atomically; one `dependencyRemoved` event fires per auto-removed edge before `taskDeleted`.\n\nCascade modes:\n\n- `'forbid'` (default) — throws when the task has children. Safe default to prevent accidental subtree loss.\n- `'children'` — deletes the task plus every descendant in a single undoable transaction.\n- `'orphan'` — reparents the immediate children to the deleted task's parent (or root if the deleted task was a root), then removes just the task. A `taskMoved` event fires for each reparented child. Dependency edges between surviving (reparented) children are preserved; only edges that reference the deleted task itself are cleaned up.\n\nIf a `beforeTaskDelete` hook is configured and it returns `false`, the removal is cancelled and the method returns `false`. Throws when the task id is not found, or when `cascade: 'forbid'` and the task has children.\n\n#### Parameters\n\n| Name      | Type                                               | Description                       |\n| --------- | -------------------------------------------------- | --------------------------------- |\n| `taskId`  | `string`                                           | Id of the task to remove.         |\n| `options` | `{ cascade?: 'forbid' \\| 'children' \\| 'orphan' }` | Cascade mode. Default `'forbid'`. |\n\nReturns `true` if the task was removed, `false` if the hook cancelled.\n\n#### Example\n\n```js\n// leaf task — forbids by default but the task has no children so it's removed\nganttInstance.deleteTask('task-3');\n\n// summary task — opt in to cascade\nganttInstance.deleteTask('task-1', {cascade: 'children'});\n\n// remove a summary but keep its children, moving them to its parent\nganttInstance.deleteTask('task-1', {cascade: 'orphan'});\n```\n\n### 5. `moveTask(taskId, options?)`\n\nRe-parents a task and re-renders. Recorded in the undo history. Emits a `taskMoved` event. If `beforeTaskMove` returns `false`, the move is cancelled and the method returns `false`.\n\nThrows when `taskId` doesn't exist, when `newParentId` doesn't exist, when moving onto itself, or when the move would create a cycle.\n\nSibling reordering within the same parent is not modelled yet — that lands with Phase-4 cascade work.\n\n#### Parameters\n\n| Name      | Typ","readmeFilename":"README.md","license":"SEE LICENSE IN LICENSE"}