@diplodoc/transform 4.54.0 → 4.56.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/css/_yfm-only.css.map +1 -1
- package/dist/css/_yfm-only.min.css.map +1 -1
- package/dist/css/base.css +12 -0
- package/dist/css/base.css.map +3 -3
- package/dist/css/base.min.css +1 -1
- package/dist/css/base.min.css.map +3 -3
- package/dist/css/print.css.map +1 -1
- package/dist/css/yfm.css +12 -0
- package/dist/css/yfm.css.map +3 -3
- package/dist/css/yfm.min.css +1 -1
- package/dist/css/yfm.min.css.map +3 -3
- package/dist/js/base.js +7 -1
- package/dist/js/base.js.map +2 -2
- package/dist/js/base.min.js +1 -1
- package/dist/js/base.min.js.map +3 -3
- package/dist/js/yfm.js +7 -1
- package/dist/js/yfm.js.map +2 -2
- package/dist/js/yfm.min.js +1 -1
- package/dist/js/yfm.min.js.map +3 -3
- package/lib/plugins/code.js +26 -1
- package/lib/plugins/code.js.map +1 -1
- package/lib/sanitize.js +30 -1
- package/lib/sanitize.js.map +1 -1
- package/package.json +1 -1
- package/src/js/code.ts +13 -1
- package/src/scss/_common.scss +11 -0
- package/src/transform/plugins/code.ts +34 -1
- package/src/transform/sanitize.ts +33 -1
package/lib/sanitize.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../src/transform/sanitize.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../src/transform/sanitize.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kEAA4D;AAC5D,aAAa;AACb,0DAAkC;AAClC,iDAAmC;AACnC,8CAAsB;AAGtB,gDAAwB;AAQxB,MAAM,QAAQ,GAAG;IACb,GAAG;IACH,MAAM;IACN,SAAS;IACT,SAAS;IACT,MAAM;IACN,SAAS;IACT,OAAO;IACP,OAAO;IACP,GAAG;IACH,KAAK;IACL,KAAK;IACL,KAAK;IACL,OAAO;IACP,YAAY;IACZ,MAAM;IACN,IAAI;IACJ,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,MAAM;IACN,MAAM;IACN,KAAK;IACL,UAAU;IACV,SAAS;IACT,MAAM;IACN,UAAU;IACV,IAAI;IACJ,WAAW;IACX,KAAK;IACL,SAAS;IACT,KAAK;IACL,QAAQ;IACR,KAAK;IACL,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,SAAS;IACT,IAAI;IACJ,UAAU;IACV,YAAY;IACZ,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,IAAI;IACJ,MAAM;IACN,GAAG;IACH,KAAK;IACL,OAAO;IACP,KAAK;IACL,KAAK;IACL,OAAO;IACP,QAAQ;IACR,IAAI;IACJ,MAAM;IACN,KAAK;IACL,MAAM;IACN,SAAS;IACT,MAAM;IACN,UAAU;IACV,OAAO;IACP,KAAK;IACL,MAAM;IACN,IAAI;IACJ,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,GAAG;IACH,SAAS;IACT,KAAK;IACL,UAAU;IACV,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,MAAM;IACN,GAAG;IACH,MAAM;IACN,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,SAAS;IACT,KAAK;IACL,OAAO;IACP,OAAO;IACP,IAAI;IACJ,UAAU;IACV,UAAU;IACV,OAAO;IACP,IAAI;IACJ,OAAO;IACP,MAAM;IACN,IAAI;IACJ,OAAO;IACP,IAAI;IACJ,GAAG;IACH,IAAI;IACJ,KAAK;IACL,OAAO;IACP,KAAK;IACL,QAAQ;IACR,OAAO;CACV,CAAC;AAEF,MAAM,OAAO,GAAG;IACZ,KAAK;IACL,UAAU;IACV,aAAa;IACb,cAAc;IACd,cAAc;IACd,eAAe;IACf,kBAAkB;IAClB,QAAQ;IACR,UAAU;IACV,MAAM;IACN,MAAM;IACN,SAAS;IACT,QAAQ;IACR,MAAM;IACN,GAAG;IACH,OAAO;IACP,UAAU;IACV,OAAO;IACP,OAAO;IACP,MAAM;IACN,gBAAgB;IAChB,QAAQ;IACR,MAAM;IACN,UAAU;IACV,OAAO;IACP,MAAM;IACN,SAAS;IACT,SAAS;IACT,UAAU;IACV,gBAAgB;IAChB,MAAM;IACN,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,UAAU;IACV,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;IACN,OAAO;IACP,SAAS;IACT,KAAK;CACR,CAAC;AAEF,MAAM,SAAS,GAAG;IACd,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,KAAK;IACL,gBAAgB;IAChB,cAAc;IACd,sBAAsB;IACtB,UAAU;IACV,YAAY;IACZ,SAAS;IACT,QAAQ;IACR,SAAS;IACT,aAAa;IACb,aAAa;IACb,SAAS;IACT,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,MAAM;IACN,SAAS;IACT,UAAU;IACV,cAAc;IACd,QAAQ;IACR,aAAa;IACb,UAAU;IACV,UAAU;IACV,SAAS;IACT,KAAK;IACL,UAAU;IACV,yBAAyB;IACzB,uBAAuB;IACvB,UAAU;IACV,WAAW;IACX,SAAS;IACT,cAAc;IACd,MAAM;IACN,KAAK;IACL,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,MAAM;IACN,UAAU;IACV,IAAI;IACJ,WAAW;IACX,WAAW;IACX,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,SAAS;IACT,MAAM;IACN,KAAK;IACL,KAAK;IACL,WAAW;IACX,OAAO;IACP,QAAQ;IACR,KAAK;IACL,WAAW;IACX,UAAU;IACV,OAAO;IACP,MAAM;IACN,OAAO;IACP,SAAS;IACT,YAAY;IACZ,QAAQ;IACR,MAAM;IACN,SAAS;IACT,SAAS;IACT,aAAa;IACb,aAAa;IACb,QAAQ;IACR,SAAS;IACT,SAAS;IACT,YAAY;IACZ,UAAU;IACV,KAAK;IACL,UAAU;IACV,KAAK;IACL,UAAU;IACV,MAAM;IACN,MAAM;IACN,SAAS;IACT,YAAY;IACZ,OAAO;IACP,UAAU;IACV,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;IACN,SAAS;IACT,OAAO;IACP,KAAK;IACL,QAAQ;IACR,MAAM;IACN,OAAO;IACP,SAAS;IACT,UAAU;IACV,OAAO;IACP,WAAW;IACX,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,OAAO;IACP,OAAO;IACP,MAAM;IACN,aAAa;IACb,WAAW;IACX,OAAO;IACP,QAAQ;IACR,eAAe;IACf,aAAa;IACb,gBAAgB;IAChB,kBAAkB;IAClB,QAAQ;IACR,cAAc;CACjB,CAAC;AAEF,MAAM,QAAQ,GAAG;IACb,SAAS;IACT,eAAe;IACf,YAAY;IACZ,UAAU;IACV,oBAAoB;IACpB,QAAQ;IACR,eAAe;IACf,eAAe;IACf,SAAS;IACT,eAAe;IACf,gBAAgB;IAChB,OAAO;IACP,MAAM;IACN,IAAI;IACJ,OAAO;IACP,MAAM;IACN,eAAe;IACf,WAAW;IACX,WAAW;IACX,OAAO;IACP,qBAAqB;IACrB,6BAA6B;IAC7B,eAAe;IACf,iBAAiB;IACjB,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,iBAAiB;IACjB,WAAW;IACX,SAAS;IACT,SAAS;IACT,KAAK;IACL,UAAU;IACV,WAAW;IACX,KAAK;IACL,MAAM;IACN,cAAc;IACd,WAAW;IACX,QAAQ;IACR,aAAa;IACb,aAAa;IACb,eAAe;IACf,aAAa;IACb,WAAW;IACX,kBAAkB;IAClB,cAAc;IACd,YAAY;IACZ,cAAc;IACd,aAAa;IACb,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,YAAY;IACZ,UAAU;IACV,eAAe;IACf,mBAAmB;IACnB,QAAQ;IACR,MAAM;IACN,IAAI;IACJ,iBAAiB;IACjB,IAAI;IACJ,KAAK;IACL,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,SAAS;IACT,WAAW;IACX,YAAY;IACZ,UAAU;IACV,MAAM;IACN,cAAc;IACd,gBAAgB;IAChB,cAAc;IACd,kBAAkB;IAClB,gBAAgB;IAChB,OAAO;IACP,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,cAAc;IACd,aAAa;IACb,aAAa;IACb,kBAAkB;IAClB,WAAW;IACX,KAAK;IACL,MAAM;IACN,OAAO;IACP,QAAQ;IACR,MAAM;IACN,KAAK;IACL,MAAM;IACN,YAAY;IACZ,QAAQ;IACR,UAAU;IACV,SAAS;IACT,OAAO;IACP,QAAQ;IACR,aAAa;IACb,QAAQ;IACR,UAAU;IACV,aAAa;IACb,MAAM;IACN,YAAY;IACZ,qBAAqB;IACrB,kBAAkB;IAClB,cAAc;IACd,QAAQ;IACR,eAAe;IACf,qBAAqB;IACrB,gBAAgB;IAChB,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,MAAM;IACN,aAAa;IACb,WAAW;IACX,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,MAAM;IACN,iBAAiB;IACjB,kBAAkB;IAClB,kBAAkB;IAClB,cAAc;IACd,aAAa;IACb,cAAc;IACd,aAAa;IACb,YAAY;IACZ,cAAc;IACd,kBAAkB;IAClB,mBAAmB;IACnB,gBAAgB;IAChB,iBAAiB;IACjB,mBAAmB;IACnB,gBAAgB;IAChB,QAAQ;IACR,cAAc;IACd,OAAO;IACP,cAAc;IACd,gBAAgB;IAChB,UAAU;IACV,SAAS;IACT,SAAS;IACT,WAAW;IACX,aAAa;IACb,iBAAiB;IACjB,gBAAgB;IAChB,YAAY;IACZ,MAAM;IACN,IAAI;IACJ,IAAI;IACJ,SAAS;IACT,QAAQ;IACR,SAAS;IACT,YAAY;IACZ,SAAS;IACT,YAAY;IACZ,eAAe;IACf,eAAe;IACf,OAAO;IACP,cAAc;IACd,MAAM;IACN,cAAc;IACd,kBAAkB;IAClB,kBAAkB;IAClB,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,OAAO;IACP,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,YAAY;IACZ,MAAM;IACN,IAAI;IACJ,YAAY;IACZ,KAAK;CACR,CAAC;AAEF,MAAM,mBAAmB,mCAClB,mBAAS,CAAC,SAAS,KACtB,UAAU,EAAE,IAAI,GACnB,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AAE/C,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAC1B,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,OAAO,EAAE,GAAG,uBAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAC3E,CAAC;AACF,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,QAAQ,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAE5F,2EAA2E;AAC3E,MAAM,iBAAiB,GAAG,CAAC,OAAe,EAAE,OAAmB,EAAO,EAAE;IACpE,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAE;QAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACtB,OAAO,IAAI,CAAC;SACf;aAAM;YACH,OAAO,IAAI,CAAC;SACf;IACL,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,CAAC,KAAiB,EAAc,EAAE;QACjD,MAAM,eAAe,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC/C,OAAO,MAAM,CAAC,WAAW,CACrB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aAChB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAClB,IAAI,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAC/B,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;aAClC;YACD,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACxB,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAC9C,CAAC;IACN,CAAC,CAAC;IACF,OAAO;QACH,OAAO;QACP,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC;KAC/B,CAAC;AACN,CAAC,CAAC;AAOW,QAAA,mBAAmB,GAAG;IAC/B,uBAAuB,EAAE,KAAK;CACjC,CAAC;AAEW,QAAA,cAAc,mCACpB,uBAAY,CAAC,QAAQ,KACxB,WAAW,EACX,iBAAiB,kCACV,uBAAY,CAAC,QAAQ,CAAC,iBAAiB,KAC1C,GAAG,EAAE,iBAAiB,KAE1B,iCAAiC,EAAE;QAC/B,GAAG,uBAAY,CAAC,QAAQ,CAAC,iCAAiC;QAC1D,YAAY;QACZ,MAAM;QACN,IAAI;KACP,EACD,mBAAmB,EAAE,IAAI,EACzB,MAAM,EAAE,2BAAmB,EAC3B,YAAY,EAAE,mBAAmB,EACjC,aAAa,EAAE;QACX,GAAG,EAAE,iBAAiB;KACzB,IACH;AAEF,SAAS,iBAAiB,CAAC,GAAuB,EAAE,YAA0B;IAC1E,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IAE/B,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;QAC/B,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAEtC,IAAI;YACA,MAAM,SAAS,GAAG,aAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAEvC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;gBACvB,OAAO;aACV;YAED,SAAS,CAAC,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAC1D,CAAC,IAAc,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAC3C,CAAC;YAEF,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAc,EAAE,EAAE;gBAClD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;oBACpB,OAAO;iBACV;gBAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,WAA4B,EAAE,EAAE;oBAC1E,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;wBAC7C,OAAO,KAAK,CAAC;qBAChB;oBAED,MAAM,aAAa,GAAG,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;oBAEzD,IAAI,aAAa,EAAE;wBACf,WAAW,CAAC,KAAK,GAAG,mBAAS,CAAC,aAAa,CACvC,WAAW,CAAC,QAAQ,EACpB,WAAW,CAAC,KAAK,CACpB,CAAC;qBACL;oBAED,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;wBACpB,OAAO,KAAK,CAAC;qBAChB;oBAED,OAAO,aAAa,CAAC;gBACzB,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,aAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;SAC/C;QAAC,OAAO,KAAK,EAAE;YACZ,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;YAEtB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC;YACzE,aAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAC1B;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAuB,EAAE,YAA0B;IAC3E,MAAM,OAAO,GAAG;QACZ,SAAS,EAAE,YAAY;KAC1B,CAAC;IACF,MAAM,YAAY,GAAG,IAAI,mBAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAEtD,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;QAC9B,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAElD,IAAI,CAAC,cAAc,EAAE;YACjB,OAAO;SACV;QAED,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAgB,cAAc,CAAC,IAAY,EAAE,OAAwB;IACjE,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;IAEhD,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7B,iBAAiB,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IACnC,kBAAkB,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAEpC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;IAEvC,OAAO,MAAM,GAAG,OAAO,CAAC;AAC5B,CAAC;AAZD,wCAYC;AAED,SAAgB,QAAQ,CACpB,IAAY,EACZ,OAAyB,EACzB,iBAAmC;;IAEnC,MAAM,eAAe,GAAG,OAAO,IAAI,sBAAc,CAAC;IAElD,IAAI,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,YAAY,EAAE;QACjC,eAAe,CAAC,YAAY,mCACrB,eAAe,CAAC,YAAY,GAC5B,iBAAiB,CAAC,YAAY,CACpC,CAAC;KACL;IAED,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAA,eAAe,CAAC,qBAAqB,mCAAI,KAAK,CAAC,CAAC;IAE/E,MAAM,YAAY,GAAG,oBAAoB,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEzF,OAAO,IAAA,uBAAY,EAAC,YAAY,EAAE,eAAe,CAAC,CAAC;AACvD,CAAC;AAnBD,4BAmBC;AAED,kBAAe,QAAQ,CAAC"}
|
package/package.json
CHANGED
package/src/js/code.ts
CHANGED
|
@@ -58,7 +58,19 @@ if (typeof document !== 'undefined') {
|
|
|
58
58
|
return;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
|
|
61
|
+
// Get all text nodes and filter out line numbers
|
|
62
|
+
const textContent = Array.from(code.childNodes)
|
|
63
|
+
.filter((node) => {
|
|
64
|
+
// Skip line number spans
|
|
65
|
+
if (node instanceof HTMLElement && node.classList.contains('yfm-line-number')) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
return true;
|
|
69
|
+
})
|
|
70
|
+
.map((node) => node.textContent)
|
|
71
|
+
.join('');
|
|
72
|
+
|
|
73
|
+
copyToClipboard(textContent).then(() => {
|
|
62
74
|
notifySuccess(parent.querySelector('.yfm-clipboard-icon'));
|
|
63
75
|
});
|
|
64
76
|
});
|
package/src/scss/_common.scss
CHANGED
|
@@ -342,6 +342,10 @@
|
|
|
342
342
|
tab-size: var(--yfm-tab-size-code, inherit);
|
|
343
343
|
}
|
|
344
344
|
|
|
345
|
+
a code {
|
|
346
|
+
color: inherit;
|
|
347
|
+
}
|
|
348
|
+
|
|
345
349
|
pre {
|
|
346
350
|
word-wrap: normal;
|
|
347
351
|
}
|
|
@@ -370,6 +374,13 @@
|
|
|
370
374
|
color: var(--yfm-color-text);
|
|
371
375
|
|
|
372
376
|
white-space: pre;
|
|
377
|
+
|
|
378
|
+
.yfm-line-number {
|
|
379
|
+
display: inline-block;
|
|
380
|
+
padding-right: 1em;
|
|
381
|
+
color: var(--yfm-color-line-numbers, #666);
|
|
382
|
+
user-select: none;
|
|
383
|
+
}
|
|
373
384
|
}
|
|
374
385
|
|
|
375
386
|
sup,
|
|
@@ -68,10 +68,43 @@ function termReplace(str: string, env: EnvTerm, escape: (str: string) => string)
|
|
|
68
68
|
return termCode || str;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
+
function addLineNumbers(code: string): string {
|
|
72
|
+
const lines = code.split('\n');
|
|
73
|
+
const lineCount = lines.length;
|
|
74
|
+
const maxDigits = String(lineCount).length;
|
|
75
|
+
|
|
76
|
+
// Remove trailing empty line if it exists
|
|
77
|
+
const hasTrailingNewline = code.endsWith('\n');
|
|
78
|
+
const linesToProcess = hasTrailingNewline ? lines.slice(0, -1) : lines;
|
|
79
|
+
|
|
80
|
+
return (
|
|
81
|
+
linesToProcess
|
|
82
|
+
.map((line, index) => {
|
|
83
|
+
const lineNumber = String(index + 1).padStart(maxDigits, ' ');
|
|
84
|
+
return `<span class="yfm-line-number">${lineNumber}</span>${line}`;
|
|
85
|
+
})
|
|
86
|
+
.join('\n') + (hasTrailingNewline ? '\n' : '')
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
|
|
71
90
|
const code: MarkdownItPluginCb = (md) => {
|
|
72
91
|
const superCodeRenderer = md.renderer.rules.fence;
|
|
73
92
|
md.renderer.rules.fence = function (tokens, idx, options, env, self) {
|
|
74
|
-
const
|
|
93
|
+
const token = tokens[idx];
|
|
94
|
+
const showLineNumbers = token.info.includes('showLineNumbers');
|
|
95
|
+
|
|
96
|
+
let superCode = superCodeRenderer?.(tokens, idx, options, env, self);
|
|
97
|
+
|
|
98
|
+
if (superCode && showLineNumbers) {
|
|
99
|
+
// Extract the code content from the pre/code tags
|
|
100
|
+
const codeMatch = superCode.match(/<pre[^>]*><code[^>]*>([\s\S]*?)<\/code><\/pre>/);
|
|
101
|
+
if (codeMatch) {
|
|
102
|
+
const codeContent = codeMatch[1];
|
|
103
|
+
const codeWithLineNumbers = addLineNumbers(codeContent);
|
|
104
|
+
superCode = superCode.replace(codeContent, codeWithLineNumbers);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
75
108
|
const superCodeWithTerms =
|
|
76
109
|
superCode && env?.terms ? termReplace(superCode, env, md.utils.escapeRE) : superCode;
|
|
77
110
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import sanitizeHtml from 'sanitize-html';
|
|
1
|
+
import sanitizeHtml, {Attributes, Tag} from 'sanitize-html';
|
|
2
2
|
// @ts-ignore
|
|
3
3
|
import cssfilter from 'cssfilter';
|
|
4
4
|
import * as cheerio from 'cheerio';
|
|
@@ -176,6 +176,7 @@ const svgTags = [
|
|
|
176
176
|
'view',
|
|
177
177
|
'vkern',
|
|
178
178
|
'animate',
|
|
179
|
+
'use',
|
|
179
180
|
];
|
|
180
181
|
|
|
181
182
|
const htmlAttrs = [
|
|
@@ -501,6 +502,34 @@ const allowedTags = Array.from(
|
|
|
501
502
|
);
|
|
502
503
|
const allowedAttributes = Array.from(new Set([...htmlAttrs, ...svgAttrs, ...yfmHtmlAttrs]));
|
|
503
504
|
|
|
505
|
+
// For hrefs within "use" only allow local links to ids that start with "#"
|
|
506
|
+
const useTagTransformer = (tagName: string, attribs: Attributes): Tag => {
|
|
507
|
+
const cleanHref = (href: string) => {
|
|
508
|
+
if (href.startsWith('#')) {
|
|
509
|
+
return href;
|
|
510
|
+
} else {
|
|
511
|
+
return null;
|
|
512
|
+
}
|
|
513
|
+
};
|
|
514
|
+
const cleanAttrs = (attrs: Attributes): Attributes => {
|
|
515
|
+
const HREF_ATTRIBUTES = ['xlink:href', 'href'];
|
|
516
|
+
return Object.fromEntries(
|
|
517
|
+
Object.entries(attrs)
|
|
518
|
+
.map(([key, value]) => {
|
|
519
|
+
if (HREF_ATTRIBUTES.includes(key)) {
|
|
520
|
+
return [key, cleanHref(value)];
|
|
521
|
+
}
|
|
522
|
+
return [key, value];
|
|
523
|
+
})
|
|
524
|
+
.filter(([_, value]) => value !== null),
|
|
525
|
+
);
|
|
526
|
+
};
|
|
527
|
+
return {
|
|
528
|
+
tagName,
|
|
529
|
+
attribs: cleanAttrs(attribs),
|
|
530
|
+
};
|
|
531
|
+
};
|
|
532
|
+
|
|
504
533
|
export interface SanitizeOptions extends sanitizeHtml.IOptions {
|
|
505
534
|
cssWhiteList?: CssWhiteList;
|
|
506
535
|
disableStyleSanitizer?: boolean;
|
|
@@ -526,6 +555,9 @@ export const defaultOptions: SanitizeOptions = {
|
|
|
526
555
|
allowVulnerableTags: true,
|
|
527
556
|
parser: defaultParseOptions,
|
|
528
557
|
cssWhiteList: defaultCssWhitelist,
|
|
558
|
+
transformTags: {
|
|
559
|
+
use: useTagTransformer,
|
|
560
|
+
},
|
|
529
561
|
};
|
|
530
562
|
|
|
531
563
|
function sanitizeStyleTags(dom: cheerio.CheerioAPI, cssWhiteList: CssWhiteList) {
|