@heartlandone/vega 2.63.0 → 2.63.1
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/cjs/{app-globals-8f5fa42a.js → app-globals-2d0b157e.js} +85 -13
- package/dist/cjs/{code-block-eb66d852.js → code-block-cc740807.js} +12 -4
- package/dist/cjs/{component-global-style-slimmer-b0b4b997.js → component-global-style-slimmer-d5216fa7.js} +4 -0
- package/dist/cjs/{component-value-history-controller-slimmer.abstract-62cdf04c.js → component-value-history-controller-slimmer.abstract-0bb81172.js} +2 -2
- package/dist/cjs/country-flags-d4928e55.js +2403 -0
- package/dist/cjs/{dark-mode-style-controller-ab0703e1.js → dark-mode-style-controller-b1e9ec82.js} +7 -0
- package/dist/cjs/{design-token-76bb47bd.js → design-token-bf913c86.js} +1 -1
- package/dist/cjs/{dto-renderer-manager-f3894490.js → dto-renderer-manager-424c5031.js} +79 -3
- package/dist/cjs/{element-appender-slimmer-e8dac628.js → element-appender-slimmer-1d035b1f.js} +2 -2
- package/dist/cjs/{image-annotation-action-a628ec9b.js → image-annotation-action-f831e09b.js} +3 -3
- package/dist/cjs/index.cjs.js +11 -9
- package/dist/cjs/{language-extension-20a1dba5.js → language-extension-cfe0eabd.js} +7 -4
- package/dist/cjs/{legend-input-processor-b1f323fa.js → legend-input-processor-27c65353.js} +4 -4
- package/dist/cjs/loader.cjs.js +7 -6
- package/dist/cjs/{public-rules-5d0f3a5f.js → public-rules-7e9b633d.js} +6 -4
- package/dist/cjs/{range-cfc45f9e.js → range-44f08955.js} +1 -1
- package/dist/cjs/{responsive-format-facade-7e933525.js → responsive-format-facade-a7fbefc4.js} +4 -3
- package/dist/cjs/{rich-text-editor-required-rule-72170c10.js → rich-text-editor-required-rule-a0618c85.js} +1 -1
- package/dist/cjs/{style-formatter-702df81e.js → style-formatter-795451f2.js} +1 -1
- package/dist/cjs/{token-extension-23ccff1d.js → token-extension-4764d5f3.js} +3 -3
- package/dist/cjs/vega-accordion.cjs.entry.js +7 -6
- package/dist/cjs/vega-app-footer.cjs.entry.js +3 -1
- package/dist/cjs/vega-app-header-button.cjs.entry.js +8 -7
- package/dist/cjs/vega-bar-chart.cjs.entry.js +2 -2
- package/dist/cjs/vega-box.cjs.entry.js +15 -8
- package/dist/cjs/vega-brand-logo.cjs.entry.js +3 -1
- package/dist/cjs/vega-breadcrumb.cjs.entry.js +2 -1
- package/dist/cjs/vega-button-circle.cjs.entry.js +7 -6
- package/dist/cjs/vega-button.cjs.entry.js +6 -5
- package/dist/cjs/vega-calendar_4.cjs.entry.js +3 -2
- package/dist/cjs/vega-card.cjs.entry.js +7 -6
- package/dist/cjs/vega-carousel.cjs.entry.js +6 -5
- package/dist/cjs/vega-chip.cjs.entry.js +8 -7
- package/dist/cjs/vega-code-block.cjs.entry.js +258 -153
- package/dist/cjs/vega-date-picker_2.cjs.entry.js +7 -6
- package/dist/cjs/vega-dialog_2.cjs.entry.js +8 -7
- package/dist/cjs/vega-divider.cjs.entry.js +8 -7
- package/dist/cjs/vega-dropdown_5.cjs.entry.js +8 -7
- package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
- package/dist/cjs/vega-flag-icon.cjs.entry.js +10 -9
- package/dist/cjs/vega-flex.cjs.entry.js +9 -8
- package/dist/cjs/vega-font.cjs.entry.js +7 -6
- package/dist/cjs/vega-grid.cjs.entry.js +7 -6
- package/dist/cjs/vega-icon.cjs.entry.js +7 -6
- package/dist/cjs/vega-image-uploader.cjs.entry.js +20 -10
- package/dist/cjs/vega-input-credit-card.cjs.entry.js +1 -1
- package/dist/cjs/vega-input-phone-number.cjs.entry.js +5 -4
- package/dist/cjs/vega-input-select.cjs.entry.js +6 -5
- package/dist/cjs/vega-left-nav_5.cjs.entry.js +8 -7
- package/dist/cjs/vega-line-chart.cjs.entry.js +2 -2
- package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +7 -6
- package/dist/cjs/vega-nonce-manager-f927497f.js +103 -0
- package/dist/cjs/vega-pagination.cjs.entry.js +6 -5
- package/dist/cjs/vega-pie-chart.cjs.entry.js +1 -1
- package/dist/cjs/vega-popover_2.cjs.entry.js +8 -7
- package/dist/cjs/vega-rich-text-content.cjs.entry.js +5 -4
- package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +16 -12
- package/dist/cjs/vega-selection-chip_2.cjs.entry.js +7 -6
- package/dist/cjs/vega-sidenav_3.cjs.entry.js +7 -6
- package/dist/cjs/vega-signature-capture.cjs.entry.js +14 -19
- package/dist/cjs/vega-table_8.cjs.entry.js +7 -6
- package/dist/cjs/vega-time-picker_2.cjs.entry.js +7 -6
- package/dist/cjs/vega-tooltip_2.cjs.entry.js +7 -6
- package/dist/cjs/vega.cjs.js +7 -6
- package/dist/cjs/{y-axis-input-processor-19a07af5.js → y-axis-input-processor-9fbfd5e7.js} +1 -1
- package/dist/collection/components/vega-box/slimmers/controllers/vega-box-responsive-style-controller.js +4 -0
- package/dist/collection/components/vega-box/slimmers/controllers/vega-box-state-styles-controller.js +4 -0
- package/dist/collection/components/vega-calendar/vega-calendar-event/slimmers/renderers/vega-calendar-event-renderer.js +2 -1
- package/dist/collection/components/vega-calendar/vega-calendar-event-preview/slimmers/renderers/vega-calendar-event-preview-detail-renderer.js +2 -1
- package/dist/collection/components/vega-code-block/slimmers/controllers/code-input-paste.abstract.js +65 -0
- package/dist/collection/components/vega-code-block/slimmers/controllers/vega-code-block-input-controller.js +3 -75
- package/dist/collection/components/vega-code-block/slimmers/controllers/vega-code-block-input-paste-controller.js +109 -0
- package/dist/collection/components/vega-code-block/vega-code-block.js +5 -0
- package/dist/collection/components/vega-flag-icon/assets/flags/ac.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ad.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ae.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/af.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ag.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ai.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/al.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/am.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ao.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ar.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/as.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/at.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/au.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/aw.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ax.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/az.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ba.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/bb.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/bd.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/be.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/bf.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/bg.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/bh.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/bi.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/bj.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/bl.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/bm.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/bn.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/bo.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/bq.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/br.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/bs.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/bt.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/bw.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/by.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/bz.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ca.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/cc.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/cd.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/cf.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/cg.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ch.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ci.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ck.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/cl.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/cm.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/cn.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/co.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/cr.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/cu.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/cv.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/cw.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/cx.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/cy.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/cz.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/de.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/dj.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/dk.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/dm.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/do.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/dz.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ec.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ee.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/eg.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/eh.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/er.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/es.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/et.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/fi.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/fj.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/fk.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/fm.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/fo.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/fr.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ga.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/gb.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/gd.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ge.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/gf.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/gg.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/gh.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/gi.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/gl.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/gm.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/gn.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/gp.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/gq.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/gr.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/gt.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/gu.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/gw.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/gy.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/hk.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/hn.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/hr.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ht.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/hu.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/id.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ie.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/il.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/im.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/in.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/io.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/iq.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ir.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/is.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/it.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/je.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/jm.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/jo.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/jp.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ke.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/kg.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/kh.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ki.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/km.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/kn.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/kp.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/kr.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/kw.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ky.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/kz.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/la.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/lb.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/lc.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/li.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/lk.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/lr.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ls.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/lt.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/lu.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/lv.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ly.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ma.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/mc.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/md.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/me.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/mf.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/mg.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/mh.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/mk.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ml.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/mm.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/mn.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/mo.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/mp.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/mq.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/mr.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ms.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/mt.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/mu.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/mv.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/mw.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/mx.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/my.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/mz.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/na.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/nc.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ne.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/nf.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ng.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ni.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/nl.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/no.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/np.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/nr.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/nu.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/nz.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/om.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/pa.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/pe.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/pf.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/pg.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ph.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/pk.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/pl.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/pm.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/pr.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ps.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/pt.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/pw.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/py.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/qa.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/re.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ro.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/rs.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ru.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/rw.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/sa.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/sb.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/sc.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/sd.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/se.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/sg.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/sh.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/si.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/sj.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/sk.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/sl.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/sm.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/sn.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/so.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/sr.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ss.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/st.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/sv.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/sx.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/sy.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/sz.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ta.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/tc.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/td.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/tg.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/th.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/tj.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/tk.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/tl.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/tm.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/tn.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/to.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/tr.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/tt.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/tv.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/tw.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/tz.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ua.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ug.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/us.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/uy.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/uz.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/va.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/vc.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ve.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/vg.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/vi.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/vn.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/vu.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/wf.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ws.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/xk.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/ye.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/yt.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/za.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/zm.js +1 -1
- package/dist/collection/components/vega-flag-icon/assets/flags/zw.js +1 -1
- package/dist/collection/components/vega-flag-icon/slimmers/renderers/vega-flag-icon-renderer.js +1 -1
- package/dist/collection/components/vega-flag-icon/vega-flag-icon.css +4 -0
- package/dist/collection/components/vega-image-uploader/slimmers/controllers/vega-image-uploader-preview-controller.js +14 -5
- package/dist/collection/components/vega-input-credit-card/assets/icons.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/dto/content-state.js +7 -2
- package/dist/collection/components/vega-rich-text-editor/dto/nodes/decorator-node.js +1 -2
- package/dist/collection/components/vega-rich-text-editor/dto/nodes/node.abstract.js +8 -0
- package/dist/collection/components/vega-rich-text-editor/dto/nodes/text-node.js +2 -3
- package/dist/collection/components/vega-rich-text-editor/extensions/languages/language-extension.js +5 -2
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/insert-paste-handler.js +9 -5
- package/dist/collection/components/vega-signature-capture/slimmers/written-mode/controllers/written-mode-svg-controller.js +5 -7
- package/dist/collection/components/vega-signature-capture/slimmers/written-mode/renderers/written-mode-renderer.js +1 -5
- package/dist/collection/global/scripts/before-vega-load.js +21 -1
- package/dist/collection/helpers/chart/renderers/svg-renderer.js +4 -4
- package/dist/collection/helpers/csp/styles-preservator.js +71 -0
- package/dist/collection/helpers/csp/test/styles-preservator.test.js +207 -0
- package/dist/collection/helpers/csp/test/vega-nonce-manager.test.js +166 -0
- package/dist/collection/helpers/csp/vega-nonce-manager.js +97 -0
- package/dist/collection/helpers/public-api.js +2 -0
- package/dist/collection/helpers/slimmers/component-global-style-slimmer.js +4 -0
- package/dist/collection/helpers/slimmers/global/vega-nonce-injector-slimmer.js +54 -0
- package/dist/collection/helpers/slimmers/test/component-global-style-slimmer.test.js +41 -0
- package/dist/collection/helpers/slimmers/test/global/vega-nonce-injector-slimmer.test.js +64 -0
- package/dist/collection/helpers/theme/controllers/color-schema-overriding-controller.js +4 -0
- package/dist/collection/helpers/theme/controllers/style-controller.abstract.js +4 -0
- package/dist/collection/helpers/theme/tests/theme-manager-controller.test.js +33 -0
- package/dist/esm/{app-globals-aaff0b25.js → app-globals-2623304e.js} +85 -13
- package/dist/esm/{code-block-68300b47.js → code-block-23e7f8d0.js} +12 -4
- package/dist/esm/{component-global-style-slimmer-dad40b64.js → component-global-style-slimmer-5d437fdf.js} +4 -0
- package/dist/esm/{component-value-history-controller-slimmer.abstract-ac2f1bfd.js → component-value-history-controller-slimmer.abstract-df25e4a1.js} +2 -2
- package/dist/esm/country-flags-39dbfa43.js +2401 -0
- package/dist/esm/{dark-mode-style-controller-3bbb32dc.js → dark-mode-style-controller-972e1f06.js} +7 -0
- package/dist/esm/{design-token-1a36307e.js → design-token-0f439510.js} +1 -1
- package/dist/esm/{dto-renderer-manager-af66bbd9.js → dto-renderer-manager-65b7b1b1.js} +79 -4
- package/dist/esm/{element-appender-slimmer-fe68ec2d.js → element-appender-slimmer-bf5ca501.js} +2 -2
- package/dist/esm/{image-annotation-action-f61c2693.js → image-annotation-action-af21ea8f.js} +3 -3
- package/dist/esm/index.js +10 -9
- package/dist/esm/{language-extension-1ada2a9d.js → language-extension-d355f9aa.js} +7 -4
- package/dist/esm/{legend-input-processor-1d266967.js → legend-input-processor-5ecae3a7.js} +4 -4
- package/dist/esm/loader.js +7 -6
- package/dist/esm/{public-rules-9f62069a.js → public-rules-1a5da7bf.js} +6 -4
- package/dist/esm/{range-c2eeb794.js → range-fac2962c.js} +1 -1
- package/dist/esm/{responsive-format-facade-5711c77d.js → responsive-format-facade-2904b456.js} +4 -3
- package/dist/esm/{rich-text-editor-required-rule-de738309.js → rich-text-editor-required-rule-bb94d680.js} +1 -1
- package/dist/esm/{style-formatter-2479dc61.js → style-formatter-a724e38d.js} +1 -1
- package/dist/esm/{token-extension-6fc5e1f5.js → token-extension-89eeef74.js} +3 -3
- package/dist/esm/vega-accordion.entry.js +7 -6
- package/dist/esm/vega-app-footer.entry.js +3 -1
- package/dist/esm/vega-app-header-button.entry.js +8 -7
- package/dist/esm/vega-bar-chart.entry.js +2 -2
- package/dist/esm/vega-box.entry.js +15 -8
- package/dist/esm/vega-brand-logo.entry.js +3 -1
- package/dist/esm/vega-breadcrumb.entry.js +2 -1
- package/dist/esm/vega-button-circle.entry.js +7 -6
- package/dist/esm/vega-button.entry.js +6 -5
- package/dist/esm/vega-calendar_4.entry.js +3 -2
- package/dist/esm/vega-card.entry.js +7 -6
- package/dist/esm/vega-carousel.entry.js +6 -5
- package/dist/esm/vega-chip.entry.js +8 -7
- package/dist/esm/vega-code-block.entry.js +258 -153
- package/dist/esm/vega-date-picker_2.entry.js +7 -6
- package/dist/esm/vega-dialog_2.entry.js +8 -7
- package/dist/esm/vega-divider.entry.js +8 -7
- package/dist/esm/vega-dropdown_5.entry.js +8 -7
- package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
- package/dist/esm/vega-flag-icon.entry.js +10 -9
- package/dist/esm/vega-flex.entry.js +9 -8
- package/dist/esm/vega-font.entry.js +7 -6
- package/dist/esm/vega-grid.entry.js +7 -6
- package/dist/esm/vega-icon.entry.js +7 -6
- package/dist/esm/vega-image-uploader.entry.js +20 -10
- package/dist/esm/vega-input-credit-card.entry.js +1 -1
- package/dist/esm/vega-input-phone-number.entry.js +5 -4
- package/dist/esm/vega-input-select.entry.js +6 -5
- package/dist/esm/vega-left-nav_5.entry.js +8 -7
- package/dist/esm/vega-line-chart.entry.js +2 -2
- package/dist/esm/vega-loader-wrapper_2.entry.js +7 -6
- package/dist/esm/vega-nonce-manager-87615d3c.js +100 -0
- package/dist/esm/vega-pagination.entry.js +6 -5
- package/dist/esm/vega-pie-chart.entry.js +1 -1
- package/dist/esm/vega-popover_2.entry.js +8 -7
- package/dist/esm/vega-rich-text-content.entry.js +5 -4
- package/dist/esm/vega-rich-text-editor_4.entry.js +16 -12
- package/dist/esm/vega-selection-chip_2.entry.js +7 -6
- package/dist/esm/vega-sidenav_3.entry.js +7 -6
- package/dist/esm/vega-signature-capture.entry.js +14 -19
- package/dist/esm/vega-table_8.entry.js +7 -6
- package/dist/esm/vega-time-picker_2.entry.js +7 -6
- package/dist/esm/vega-tooltip_2.entry.js +7 -6
- package/dist/esm/vega.js +7 -6
- package/dist/esm/{y-axis-input-processor-95995d34.js → y-axis-input-processor-bc54314a.js} +1 -1
- package/dist/types/components/vega-code-block/slimmers/controllers/code-input-paste.abstract.d.ts +46 -0
- package/dist/types/components/vega-code-block/slimmers/controllers/vega-code-block-input-controller.d.ts +2 -31
- package/dist/types/components/vega-code-block/slimmers/controllers/vega-code-block-input-paste-controller.d.ts +44 -0
- package/dist/types/components/vega-code-block/vega-code-block.d.ts +2 -0
- package/dist/types/components/vega-rich-text-editor/dto/nodes/node.abstract.d.ts +6 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/insert-paste-handler.d.ts +1 -1
- package/dist/types/helpers/csp/styles-preservator.d.ts +47 -0
- package/dist/types/helpers/csp/test/styles-preservator.test.d.ts +1 -0
- package/dist/types/helpers/csp/test/vega-nonce-manager.test.d.ts +1 -0
- package/dist/types/helpers/csp/vega-nonce-manager.d.ts +52 -0
- package/dist/types/helpers/public-api.d.ts +2 -0
- package/dist/types/helpers/slimmers/global/vega-nonce-injector-slimmer.d.ts +21 -0
- package/dist/types/helpers/slimmers/test/global/vega-nonce-injector-slimmer.test.d.ts +1 -0
- package/dist/vega/index.esm.js +1 -1
- package/dist/vega/p-02a4732a.js +1 -0
- package/dist/vega/p-0717073b.entry.js +1 -0
- package/dist/vega/p-0b36f4ce.js +1 -0
- package/dist/vega/p-0bc93777.entry.js +1 -0
- package/dist/vega/p-0e3cd270.entry.js +1 -0
- package/dist/vega/p-0ec14fbc.entry.js +1 -0
- package/dist/vega/p-10454aa5.entry.js +1 -0
- package/dist/vega/p-117be41b.js +1 -0
- package/dist/vega/p-134ed822.entry.js +1 -0
- package/dist/vega/p-20223e8e.entry.js +9 -0
- package/dist/vega/p-258f9603.js +1 -0
- package/dist/vega/{p-d2790023.entry.js → p-25c831a4.entry.js} +2 -2
- package/dist/vega/{p-39c185a5.js → p-2b90fae6.js} +1 -1
- package/dist/vega/p-2d58cf34.entry.js +1 -0
- package/dist/vega/p-320cccc5.entry.js +1 -0
- package/dist/vega/p-3ab20f9e.entry.js +1 -0
- package/dist/vega/p-3be7bfee.entry.js +1 -0
- package/dist/vega/p-3e258753.js +1 -0
- package/dist/vega/p-3fba9e77.entry.js +1 -0
- package/dist/vega/p-40924882.entry.js +1 -0
- package/dist/vega/p-427b2b55.entry.js +1 -0
- package/dist/vega/p-460429da.entry.js +1 -0
- package/dist/vega/{p-111d41fe.js → p-46b077d9.js} +1 -1
- package/dist/vega/{p-a646b66d.js → p-4c3075ef.js} +1 -1
- package/dist/vega/{p-d3bbfb1b.js → p-4f21faf1.js} +1 -1
- package/dist/vega/{p-8f056ac2.js → p-5313d0bc.js} +1 -1
- package/dist/vega/p-5397648b.entry.js +1 -0
- package/dist/vega/p-54ae02db.js +1 -0
- package/dist/vega/{p-6b292628.entry.js → p-57257de0.entry.js} +1 -1
- package/dist/vega/p-5970369e.entry.js +1 -0
- package/dist/vega/{p-9a74eb86.entry.js → p-5e4fb663.entry.js} +1 -1
- package/dist/vega/p-5f377954.js +1 -1
- package/dist/vega/p-614e450a.entry.js +1 -0
- package/dist/vega/{p-d982babe.entry.js → p-6180c1af.entry.js} +1 -1
- package/dist/vega/p-648134d2.entry.js +1 -0
- package/dist/vega/p-64c281ec.entry.js +1 -0
- package/dist/vega/p-657446a3.entry.js +1 -0
- package/dist/vega/{p-6caa6bb2.js → p-66199d68.js} +1 -1
- package/dist/vega/p-6908117a.js +1 -0
- package/dist/vega/p-7bad6577.entry.js +1 -0
- package/dist/vega/{p-2a66e2f7.entry.js → p-8175d8de.entry.js} +1 -1
- package/dist/vega/{p-9ca0bdcc.js → p-89d2cf34.js} +1 -1
- package/dist/vega/{p-74ac2a48.js → p-942fc9b9.js} +1 -1
- package/dist/vega/p-969066d3.entry.js +1 -0
- package/dist/vega/p-9c309b85.entry.js +1 -0
- package/dist/vega/p-9ffd2a96.entry.js +1 -0
- package/dist/vega/{p-ce1766fa.js → p-ab29f968.js} +1 -1
- package/dist/vega/p-b110b7bd.entry.js +1 -0
- package/dist/vega/p-b4d88fce.entry.js +1 -0
- package/dist/vega/p-b6c51409.entry.js +1 -0
- package/dist/vega/{p-05b10af4.js → p-be23bef2.js} +1 -1
- package/dist/vega/p-c61f8ca6.entry.js +1 -0
- package/dist/vega/p-d15e70d7.entry.js +1 -0
- package/dist/vega/p-d85b0bfa.entry.js +1 -0
- package/dist/vega/p-d87c3058.entry.js +1 -0
- package/dist/vega/{p-7da6e7bd.js → p-dadc6ab3.js} +1 -1
- package/dist/vega/p-de1ee131.entry.js +1 -0
- package/dist/vega/p-e0729c4d.entry.js +1 -0
- package/dist/vega/p-e513f041.js +1 -0
- package/dist/vega/p-e5cd6521.js +1 -0
- package/dist/vega/p-e74c275a.entry.js +1 -0
- package/dist/vega/p-f92fc49b.entry.js +1 -0
- package/dist/vega/vega.esm.js +1 -1
- package/package.json +1 -1
- package/dist/cjs/country-flags-dc0f0d09.js +0 -2403
- package/dist/esm/country-flags-b68c3349.js +0 -2401
- package/dist/vega/p-03cc47b7.entry.js +0 -1
- package/dist/vega/p-07836d27.entry.js +0 -1
- package/dist/vega/p-0b91bb73.entry.js +0 -1
- package/dist/vega/p-13effc6b.js +0 -1
- package/dist/vega/p-15a78afd.entry.js +0 -1
- package/dist/vega/p-16075b30.entry.js +0 -1
- package/dist/vega/p-1c08077c.entry.js +0 -1
- package/dist/vega/p-1e926324.js +0 -1
- package/dist/vega/p-20a180e4.js +0 -1
- package/dist/vega/p-25ddb070.entry.js +0 -1
- package/dist/vega/p-2788afe7.entry.js +0 -1
- package/dist/vega/p-3b1bedaf.entry.js +0 -1
- package/dist/vega/p-3c96bbe1.entry.js +0 -1
- package/dist/vega/p-3d0d8a21.entry.js +0 -1
- package/dist/vega/p-3d53858c.entry.js +0 -1
- package/dist/vega/p-3f3bbaaa.entry.js +0 -9
- package/dist/vega/p-42c364e0.entry.js +0 -1
- package/dist/vega/p-4f56a427.entry.js +0 -1
- package/dist/vega/p-5420c1d4.entry.js +0 -1
- package/dist/vega/p-5d3c6a06.entry.js +0 -1
- package/dist/vega/p-5dec47da.entry.js +0 -1
- package/dist/vega/p-63212cc1.js +0 -1
- package/dist/vega/p-6ba27010.js +0 -1
- package/dist/vega/p-7d8eaca9.entry.js +0 -1
- package/dist/vega/p-7e8f055d.js +0 -1
- package/dist/vega/p-8682ee0a.entry.js +0 -1
- package/dist/vega/p-8e58d6cb.entry.js +0 -1
- package/dist/vega/p-8e812dca.entry.js +0 -1
- package/dist/vega/p-9125ba84.entry.js +0 -1
- package/dist/vega/p-a61e4bba.entry.js +0 -1
- package/dist/vega/p-b1a5ff74.entry.js +0 -1
- package/dist/vega/p-baafe7d9.entry.js +0 -1
- package/dist/vega/p-bb51e020.entry.js +0 -1
- package/dist/vega/p-bd39af8a.entry.js +0 -1
- package/dist/vega/p-c08ba4d7.entry.js +0 -1
- package/dist/vega/p-c167fa41.entry.js +0 -1
- package/dist/vega/p-c671f57e.js +0 -1
- package/dist/vega/p-c6a354b1.js +0 -1
- package/dist/vega/p-d0fbbb7f.entry.js +0 -1
- package/dist/vega/p-d9617358.entry.js +0 -1
- package/dist/vega/p-ddfad815.entry.js +0 -1
- package/dist/vega/p-e00ed9bd.entry.js +0 -1
- package/dist/vega/p-ebfc5739.entry.js +0 -1
- package/dist/vega/p-ff3a8907.entry.js +0 -1
|
@@ -15,6 +15,7 @@ import { AppendChildrenStrategy } from './action-handle-strategies/modify-conten
|
|
|
15
15
|
import { InsertChildrenBeforeStrategy } from './action-handle-strategies/modify-content-strategies/insert-children-before-strategy';
|
|
16
16
|
import { InsertChildrenAfterStrategy } from './action-handle-strategies/modify-content-strategies/insert-children-after-strategy';
|
|
17
17
|
import './setup';
|
|
18
|
+
import { StylePreservator } from '../../../helpers/csp/styles-preservator';
|
|
18
19
|
/**
|
|
19
20
|
* Class representing the content state of the rich text editor.
|
|
20
21
|
*/
|
|
@@ -94,8 +95,12 @@ export class VegaRTEContent {
|
|
|
94
95
|
})
|
|
95
96
|
.replace(/(>)[\n\t]+(?=[a-zA-Z0-9_\W])/g, '$1')
|
|
96
97
|
.replace(/([a-zA-Z0-9_\W])[\n\t]+(?=<)/g, '$1');
|
|
97
|
-
const
|
|
98
|
-
const
|
|
98
|
+
const context = StylePreservator.preserve(formattedHtml);
|
|
99
|
+
const safeHtml = context.getProcessedHtml();
|
|
100
|
+
const body = new DOMParser().parseFromString(safeHtml, 'text/html').body;
|
|
101
|
+
const htmlElements = Array.from(body.childNodes);
|
|
102
|
+
context.restore(htmlElements);
|
|
103
|
+
const blocks = ElementToDtoStrategyProcessor.process(htmlElements, options)
|
|
99
104
|
.filter(isNonNullable)
|
|
100
105
|
.map((output) => output.toDto(options))
|
|
101
106
|
.filter(isNonNullable);
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { findParent } from '../../../../utils/ui';
|
|
2
|
-
import stateEntityRenderingRegistry from '../../slimmers/controllers/state-entity-rendering-registry';
|
|
3
2
|
import { RTENode } from './node.abstract';
|
|
4
3
|
/**
|
|
5
4
|
* Abstract class for decorator nodes. A decorator node modifies content like an image node that will delete the whole node when the delete button is pressed.
|
|
@@ -38,7 +37,7 @@ export class RTEDecoratorNode extends RTENode {
|
|
|
38
37
|
* @inheritDoc
|
|
39
38
|
*/
|
|
40
39
|
getRangeContainer() {
|
|
41
|
-
const element =
|
|
40
|
+
const element = this.getElementRef();
|
|
42
41
|
if (element) {
|
|
43
42
|
return findParent(element, `.${RTEDecoratorNode.DECORATOR_CONTAINER_CLASS}`);
|
|
44
43
|
}
|
|
@@ -130,6 +130,14 @@ export class RTENode {
|
|
|
130
130
|
isTextNode() {
|
|
131
131
|
return false;
|
|
132
132
|
}
|
|
133
|
+
/**
|
|
134
|
+
* Get the HTMLElement reference associated with this node.
|
|
135
|
+
*
|
|
136
|
+
* @returns {Nullable<HTMLElement>} The HTMLElement reference or null if not found.
|
|
137
|
+
*/
|
|
138
|
+
getElementRef() {
|
|
139
|
+
return stateEntityRenderingRegistry.getDOMByEntity(this);
|
|
140
|
+
}
|
|
133
141
|
/**
|
|
134
142
|
* Generate attributes as string
|
|
135
143
|
*
|
|
@@ -3,7 +3,6 @@ import { NodeAnnotation, NodeAnnotationTypeEnum } from '../annotations/node-anno
|
|
|
3
3
|
import { AnnotationAction } from '../actions/annotation-action.abstract';
|
|
4
4
|
import { TextSplittableAction } from '../actions/splittable-action.abstract';
|
|
5
5
|
import { SelectionRangeAnnotation } from '../annotations/selection-range-annotation';
|
|
6
|
-
import stateEntityRenderingRegistry from '../../slimmers/controllers/state-entity-rendering-registry';
|
|
7
6
|
import { generateUUID } from '../../../../utils/misc';
|
|
8
7
|
import { InternalAnnotationTypeEnum } from '../annotations/annotation.abstract';
|
|
9
8
|
import { StrikethroughAnnotation } from '../annotations/strikethrough-annotation';
|
|
@@ -188,7 +187,7 @@ export class RTETextNode extends RTENode {
|
|
|
188
187
|
* @inheritDoc
|
|
189
188
|
*/
|
|
190
189
|
getRangeContainer() {
|
|
191
|
-
const element =
|
|
190
|
+
const element = this.getElementRef();
|
|
192
191
|
if (element) {
|
|
193
192
|
if (this.isContentEditable()) {
|
|
194
193
|
return element.firstChild;
|
|
@@ -289,7 +288,7 @@ export class RTETextNode extends RTENode {
|
|
|
289
288
|
* @param {RTETextNode} selectedNode - The selected node
|
|
290
289
|
*/
|
|
291
290
|
syncUpSelectedNodes(selectedNode) {
|
|
292
|
-
const currentNodeDom =
|
|
291
|
+
const currentNodeDom = this.getElementRef();
|
|
293
292
|
if (currentNodeDom) {
|
|
294
293
|
const nodeSubject = domNodeSubjectFactory.getSubjectFromParentNodeByEventId(currentNodeDom, VegaInternalRichTextEditorSelectionRangeChange);
|
|
295
294
|
if (nodeSubject) {
|
package/dist/collection/components/vega-rich-text-editor/extensions/languages/language-extension.js
CHANGED
|
@@ -80,13 +80,16 @@ export class VegaRTELanguageExtension extends VegaRTEExtension {
|
|
|
80
80
|
applyLanguageContent(selectedLanguage, contentMap) {
|
|
81
81
|
if (this.extensionContext && contentMap) {
|
|
82
82
|
let content = contentMap[selectedLanguage];
|
|
83
|
+
const { host, flushValue } = this.extensionContext;
|
|
83
84
|
if (content) {
|
|
84
|
-
content =
|
|
85
|
+
content =
|
|
86
|
+
content instanceof VegaRTEContent
|
|
87
|
+
? content
|
|
88
|
+
: VegaRTEContent.fromJSON(content, host.sourceEditConfig);
|
|
85
89
|
}
|
|
86
90
|
else {
|
|
87
91
|
content = VegaRTEContent.createEmptyContent();
|
|
88
92
|
}
|
|
89
|
-
const { host, flushValue } = this.extensionContext;
|
|
90
93
|
if (host.value !== content) {
|
|
91
94
|
flushValue(content, true);
|
|
92
95
|
}
|
|
@@ -4,6 +4,7 @@ import { InsertChildrenAfterAction } from '../../../../dto/actions/insert-childr
|
|
|
4
4
|
import { SplitBlockWithNodeAction } from '../../../../dto/actions/split-block-with-node-action';
|
|
5
5
|
import { InsertChildrenBeforeAction } from '../../../../dto/actions/insert-children-before-block';
|
|
6
6
|
import ElementToDtoStrategyProcessor from '../element-to-dto-strategy/element-to-dto-strategy-processor';
|
|
7
|
+
import { StylePreservator } from '../../../../../../helpers/csp/styles-preservator';
|
|
7
8
|
/**
|
|
8
9
|
* Handle user paste
|
|
9
10
|
*/
|
|
@@ -65,7 +66,7 @@ export class InsertPasteHandler extends BaseHandler {
|
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
68
|
/**
|
|
68
|
-
* Format and parse elements from user paste.
|
|
69
|
+
* Format and parse elements from user paste with simple style preservation.
|
|
69
70
|
*
|
|
70
71
|
* @param {InputEvent} event - Paste event.
|
|
71
72
|
* @returns {RTEContentBlock[]} - RTEContentBlock.
|
|
@@ -76,10 +77,13 @@ export class InsertPasteHandler extends BaseHandler {
|
|
|
76
77
|
const pastedText = event.dataTransfer.getData('text/plain');
|
|
77
78
|
pastedHTML = this.parsePlainText(pastedText);
|
|
78
79
|
}
|
|
79
|
-
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
80
|
+
const context = StylePreservator.preserve(pastedHTML);
|
|
81
|
+
const safeHtml = context.getProcessedHtml();
|
|
82
|
+
const parser = new DOMParser();
|
|
83
|
+
const parsedDoc = parser.parseFromString(safeHtml, 'text/html');
|
|
84
|
+
const htmlElements = Array.from(parsedDoc.body.childNodes);
|
|
85
|
+
context.restore(htmlElements);
|
|
86
|
+
return ElementToDtoStrategyProcessor.process(htmlElements)
|
|
83
87
|
.filter(Boolean)
|
|
84
88
|
.map((output) => output.toDto())
|
|
85
89
|
.filter(Boolean);
|
|
@@ -40,13 +40,11 @@ export class WrittenModeSvgController extends VegaSlimmer {
|
|
|
40
40
|
// eslint-disable-next-line no-restricted-globals
|
|
41
41
|
this.currentPath = document.createElementNS('http://www.w3.org/2000/svg', 'path');
|
|
42
42
|
this.currentPath.setAttribute('d', `M ${x} ${y}`);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
strokeLinejoin: 'round',
|
|
49
|
-
});
|
|
43
|
+
this.currentPath.setAttribute('stroke', 'rgba(4, 4, 28, 1)');
|
|
44
|
+
this.currentPath.setAttribute('stroke-width', this.penWidth);
|
|
45
|
+
this.currentPath.setAttribute('fill', 'none');
|
|
46
|
+
this.currentPath.setAttribute('stroke-linecap', 'round');
|
|
47
|
+
this.currentPath.setAttribute('stroke-linejoin', 'round');
|
|
50
48
|
this.signatureContainerRef.appendChild(this.currentPath);
|
|
51
49
|
};
|
|
52
50
|
/*
|
|
@@ -57,11 +57,7 @@ export class WrittenModeRenderer extends VegaSlimmer {
|
|
|
57
57
|
* When the clear button is displayed, since the error message and the clear button are in the same line, this element is displayed.
|
|
58
58
|
*/
|
|
59
59
|
renderSignaturePad() {
|
|
60
|
-
return (h("svg", {
|
|
61
|
-
width: '100%',
|
|
62
|
-
height: formatAndValidResponsiveToken(this.height, 'widthAndHeight'),
|
|
63
|
-
touchAction: 'none',
|
|
64
|
-
}, ref: (ref) => this.writtenModeSvgController.setSignatureContainerRef(ref) }));
|
|
60
|
+
return (h("svg", { width: "100%", height: formatAndValidResponsiveToken(this.height, 'widthAndHeight'), "touch-action": "none", ref: (ref) => this.writtenModeSvgController.setSignatureContainerRef(ref) }));
|
|
65
61
|
}
|
|
66
62
|
renderFooter() {
|
|
67
63
|
return (this.showClearBtn && (h("vega-flex", { class: "signature-capture-written-footer", justifyContent: "space-between" },
|
|
@@ -17,6 +17,8 @@ import { VegaSkeletonLoader } from '../../helpers/skeleton-loader/vega-skeleton-
|
|
|
17
17
|
import { VegaTranslation } from '../../helpers/translation';
|
|
18
18
|
import { VegaTranslateObserverSlimmer } from '../../helpers/slimmers/global/vega-translate-observer-slimmer';
|
|
19
19
|
import { VegaRTEContent } from '../../components/vega-rich-text-editor/dto/content-state';
|
|
20
|
+
import { setVegaNonce, vegaNonceManager } from '../../helpers/csp/vega-nonce-manager';
|
|
21
|
+
import { VegaNonceInjectorSlimmer } from '../../helpers/slimmers/global/vega-nonce-injector-slimmer';
|
|
20
22
|
import { VegaRTETokenExtension } from '../../components/vega-rich-text-editor/extensions/tokens/token-extension';
|
|
21
23
|
import { VegaRTELanguageExtension } from '../../components/vega-rich-text-editor/extensions/languages/language-extension';
|
|
22
24
|
import { VegaRTEPresetToolbarItems } from '../../components/vega-rich-text-editor/constants/constant';
|
|
@@ -45,6 +47,8 @@ export default function () {
|
|
|
45
47
|
injectVegaRichTextEditorClassIntoGlobal();
|
|
46
48
|
injectVegaPublicValidationRules();
|
|
47
49
|
applyBrandingFromClientGlobal();
|
|
50
|
+
injectSetNonceIntoGlobal();
|
|
51
|
+
patchHeadInsertBeforeWithNonce();
|
|
48
52
|
}
|
|
49
53
|
/**
|
|
50
54
|
* Disable feature flags from the client global defined lists.
|
|
@@ -96,7 +100,11 @@ function injectVegaDialogIntoGlobal() {
|
|
|
96
100
|
* register global vega slimmers
|
|
97
101
|
*/
|
|
98
102
|
function registerGlobalVegaSlimmers() {
|
|
99
|
-
GlobalSlimmersRegistry.register([
|
|
103
|
+
GlobalSlimmersRegistry.register([
|
|
104
|
+
VegaWatchMethodCancelSlimmer,
|
|
105
|
+
VegaTranslateObserverSlimmer,
|
|
106
|
+
VegaNonceInjectorSlimmer,
|
|
107
|
+
]);
|
|
100
108
|
}
|
|
101
109
|
/**
|
|
102
110
|
* Inject setEventSemantics to global as a public api
|
|
@@ -204,3 +212,15 @@ function applyBrandingFromClientGlobal() {
|
|
|
204
212
|
VegaThemeManager.applyBranding(globalThis['VegaThemeManagerApplyBranding']);
|
|
205
213
|
}
|
|
206
214
|
}
|
|
215
|
+
/**
|
|
216
|
+
* Injects the `setVegaNonce` function into the global scope as `setVegaNonce`.
|
|
217
|
+
*/
|
|
218
|
+
function injectSetNonceIntoGlobal() {
|
|
219
|
+
globalThis.setVegaNonce = setVegaNonce;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Patch document.head.insertBefore to ensure nonce is set on injected elements.
|
|
223
|
+
*/
|
|
224
|
+
function patchHeadInsertBeforeWithNonce() {
|
|
225
|
+
vegaNonceManager.patchHeadInsertBeforeWithNonceToStencil();
|
|
226
|
+
}
|
|
@@ -15,7 +15,7 @@ export class SVGRenderer extends BaseRenderer {
|
|
|
15
15
|
.attr('width', width)
|
|
16
16
|
.attr('height', height)
|
|
17
17
|
.attr('viewBox', [0, 0, width, height])
|
|
18
|
-
.
|
|
18
|
+
.property('style', 'display:block;max-width:100%;height:auto;')
|
|
19
19
|
.call((g) => {
|
|
20
20
|
g.append('g')
|
|
21
21
|
.attr('class', 'vega-chart-draw-g')
|
|
@@ -71,7 +71,7 @@ export class SVGRenderer extends BaseRenderer {
|
|
|
71
71
|
})
|
|
72
72
|
.call((g) => {
|
|
73
73
|
g.selectAll('line').attr('stroke', color);
|
|
74
|
-
g.selectAll('text').
|
|
74
|
+
g.selectAll('text').property('style', textStyle);
|
|
75
75
|
})
|
|
76
76
|
.call((g) => {
|
|
77
77
|
if (direction === 'horizontal') {
|
|
@@ -104,7 +104,7 @@ export class SVGRenderer extends BaseRenderer {
|
|
|
104
104
|
})
|
|
105
105
|
.call((g) => {
|
|
106
106
|
g.selectAll('line').attr('stroke-width', 2).attr('stroke', color);
|
|
107
|
-
g.selectAll('text').
|
|
107
|
+
g.selectAll('text').property('style', textStyle);
|
|
108
108
|
})
|
|
109
109
|
.call((g) => {
|
|
110
110
|
if (direction !== 'horizontal') {
|
|
@@ -262,7 +262,7 @@ export class SVGRenderer extends BaseRenderer {
|
|
|
262
262
|
*/
|
|
263
263
|
getTextNode(position, text, textStyle, textAnchor = 'start', rotate = 0) {
|
|
264
264
|
const TextSelectionType = d3Create('svg:text')
|
|
265
|
-
.
|
|
265
|
+
.property('style', textStyle)
|
|
266
266
|
.attr('x', position.x)
|
|
267
267
|
.attr('y', position.y)
|
|
268
268
|
.attr('text-anchor', textAnchor)
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { isHTMLElement } from '../../utils/ui';
|
|
2
|
+
/**
|
|
3
|
+
* StylePreservator handles CSP-compliant style management by temporarily converting
|
|
4
|
+
* inline styles to data attributes during HTML parsing operations.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* const context = StylePreservator.preserve('<div style="color: red;">Content</div>');
|
|
9
|
+
* const safeHtml = context.getProcessedHtml();
|
|
10
|
+
* context.restore(parsedElements);
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export class StylePreservator {
|
|
14
|
+
/**
|
|
15
|
+
* Preserves inline styles by converting them to data attributes.
|
|
16
|
+
*
|
|
17
|
+
* @param {string} htmlString - The HTML string containing inline styles
|
|
18
|
+
* @returns {StylePreservationContext} A context object for later style restoration
|
|
19
|
+
*/
|
|
20
|
+
static preserve(htmlString) {
|
|
21
|
+
const processedHtml = htmlString.replace(/\s+style=/g, ' data-style=');
|
|
22
|
+
return new StylePreservationContext(processedHtml);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Context class that manages the lifecycle of preserved styles.
|
|
27
|
+
*/
|
|
28
|
+
export class StylePreservationContext {
|
|
29
|
+
constructor(processedHtml) {
|
|
30
|
+
this.processedHtml = processedHtml;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Returns the HTML string with style attributes converted to data-style.
|
|
34
|
+
*
|
|
35
|
+
* @returns {string} The processed HTML string
|
|
36
|
+
*/
|
|
37
|
+
getProcessedHtml() {
|
|
38
|
+
return this.processedHtml;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Restores data-style attributes back to style attributes.
|
|
42
|
+
*
|
|
43
|
+
* @param {HTMLElement[]} elements - Array of HTML elements to process
|
|
44
|
+
* @returns {void}
|
|
45
|
+
*/
|
|
46
|
+
restore(elements) {
|
|
47
|
+
this.walkNodes(elements);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Recursively walk through nodes and restore styles
|
|
51
|
+
*
|
|
52
|
+
* @param {HTMLElement[]} elements - list of nodes
|
|
53
|
+
* @returns {void}
|
|
54
|
+
*/
|
|
55
|
+
walkNodes(elements) {
|
|
56
|
+
elements.forEach((element) => {
|
|
57
|
+
if (isHTMLElement(element)) {
|
|
58
|
+
// Restore data-style back to style
|
|
59
|
+
const dataStyle = element.getAttribute('data-style');
|
|
60
|
+
if (dataStyle) {
|
|
61
|
+
element.style.cssText = dataStyle;
|
|
62
|
+
element.removeAttribute('data-style');
|
|
63
|
+
}
|
|
64
|
+
// Recursively process child nodes
|
|
65
|
+
if (element.children.length > 0) {
|
|
66
|
+
this.walkNodes(Array.from(element.children));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { StylePreservator, StylePreservationContext } from '../styles-preservator';
|
|
2
|
+
describe('StylePreservator', () => {
|
|
3
|
+
describe('preserve', () => {
|
|
4
|
+
it('should preserve styles by converting them to data-style attributes', () => {
|
|
5
|
+
// Arrange
|
|
6
|
+
const html = '<div style="color: red; font-weight: bold;">Test content</div>';
|
|
7
|
+
// Act
|
|
8
|
+
const context = StylePreservator.preserve(html);
|
|
9
|
+
const result = context.getProcessedHtml();
|
|
10
|
+
// Assert
|
|
11
|
+
expect(result).toBe('<div data-style="color: red; font-weight: bold;">Test content</div>');
|
|
12
|
+
});
|
|
13
|
+
it('should handle multiple style attributes in the same HTML string', () => {
|
|
14
|
+
// Arrange
|
|
15
|
+
const html = '<div style="color: red;"><span style="font-weight: bold;">Bold text</span></div>';
|
|
16
|
+
// Act
|
|
17
|
+
const context = StylePreservator.preserve(html);
|
|
18
|
+
const result = context.getProcessedHtml();
|
|
19
|
+
// Assert
|
|
20
|
+
expect(result).toBe('<div data-style="color: red;"><span data-style="font-weight: bold;">Bold text</span></div>');
|
|
21
|
+
});
|
|
22
|
+
it('should handle HTML without style attributes', () => {
|
|
23
|
+
// Arrange
|
|
24
|
+
const html = '<div class="test"><span>Regular text</span></div>';
|
|
25
|
+
// Act
|
|
26
|
+
const context = StylePreservator.preserve(html);
|
|
27
|
+
const result = context.getProcessedHtml();
|
|
28
|
+
// Assert
|
|
29
|
+
expect(result).toBe('<div class="test"><span>Regular text</span></div>');
|
|
30
|
+
});
|
|
31
|
+
it('should handle empty string input', () => {
|
|
32
|
+
// Arrange
|
|
33
|
+
const html = '';
|
|
34
|
+
// Act
|
|
35
|
+
const context = StylePreservator.preserve(html);
|
|
36
|
+
const result = context.getProcessedHtml();
|
|
37
|
+
// Assert
|
|
38
|
+
expect(result).toBe('');
|
|
39
|
+
});
|
|
40
|
+
it('should handle complex nested HTML with multiple style attributes', () => {
|
|
41
|
+
// Arrange
|
|
42
|
+
const html = `
|
|
43
|
+
<div style="padding: 20px; background: white;">
|
|
44
|
+
<header style="margin-bottom: 10px;">
|
|
45
|
+
<h1 style="font-size: 24px; color: blue;">Title</h1>
|
|
46
|
+
</header>
|
|
47
|
+
</div>
|
|
48
|
+
`;
|
|
49
|
+
// Act
|
|
50
|
+
const context = StylePreservator.preserve(html);
|
|
51
|
+
const result = context.getProcessedHtml();
|
|
52
|
+
// Assert
|
|
53
|
+
const expected = `
|
|
54
|
+
<div data-style="padding: 20px; background: white;">
|
|
55
|
+
<header data-style="margin-bottom: 10px;">
|
|
56
|
+
<h1 data-style="font-size: 24px; color: blue;">Title</h1>
|
|
57
|
+
</header>
|
|
58
|
+
</div>
|
|
59
|
+
`;
|
|
60
|
+
expect(result).toBe(expected);
|
|
61
|
+
});
|
|
62
|
+
it('should handle self-closing tags with style attributes', () => {
|
|
63
|
+
// Arrange
|
|
64
|
+
const html = '<img src="test.jpg" style="width: 100px; height: 100px;" alt="Test image" />';
|
|
65
|
+
// Act
|
|
66
|
+
const context = StylePreservator.preserve(html);
|
|
67
|
+
const result = context.getProcessedHtml();
|
|
68
|
+
// Assert
|
|
69
|
+
expect(result).toBe('<img src="test.jpg" data-style="width: 100px; height: 100px;" alt="Test image" />');
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
describe('StylePreservationContext', () => {
|
|
73
|
+
describe('restore', () => {
|
|
74
|
+
it('should restore data-style to style attribute for single element', () => {
|
|
75
|
+
// Arrange
|
|
76
|
+
const html = '<span data-style="font-weight: bold; color: red;">Bold text</span>';
|
|
77
|
+
const parser = new DOMParser();
|
|
78
|
+
const doc = parser.parseFromString(html, 'text/html');
|
|
79
|
+
const nodes = Array.from(doc.body.children);
|
|
80
|
+
const context = new StylePreservationContext('');
|
|
81
|
+
// Act
|
|
82
|
+
context.restore(nodes);
|
|
83
|
+
// Assert
|
|
84
|
+
const spanElement = nodes[0];
|
|
85
|
+
expect(spanElement.style.fontWeight).toBe('bold');
|
|
86
|
+
expect(spanElement.style.color).toBe('red');
|
|
87
|
+
expect(spanElement.hasAttribute('data-style')).toBe(false);
|
|
88
|
+
});
|
|
89
|
+
it('should restore data-style to style attribute for nested elements', () => {
|
|
90
|
+
// Arrange
|
|
91
|
+
const html = `
|
|
92
|
+
<div data-style="margin: 10px;">
|
|
93
|
+
<span data-style="font-weight: bold;">Bold text</span>
|
|
94
|
+
<p data-style="color: blue;">Blue paragraph</p>
|
|
95
|
+
</div>
|
|
96
|
+
`;
|
|
97
|
+
const parser = new DOMParser();
|
|
98
|
+
const doc = parser.parseFromString(html, 'text/html');
|
|
99
|
+
const nodes = Array.from(doc.body.children);
|
|
100
|
+
const context = new StylePreservationContext('');
|
|
101
|
+
// Act
|
|
102
|
+
context.restore(nodes);
|
|
103
|
+
// Assert
|
|
104
|
+
const divElement = nodes[0];
|
|
105
|
+
const spanElement = divElement.querySelector('span');
|
|
106
|
+
const pElement = divElement.querySelector('p');
|
|
107
|
+
expect(divElement.style.margin).toBe('10px');
|
|
108
|
+
expect(divElement.hasAttribute('data-style')).toBe(false);
|
|
109
|
+
expect(spanElement.style.fontWeight).toBe('bold');
|
|
110
|
+
expect(spanElement.hasAttribute('data-style')).toBe(false);
|
|
111
|
+
expect(pElement.style.color).toBe('blue');
|
|
112
|
+
expect(pElement.hasAttribute('data-style')).toBe(false);
|
|
113
|
+
});
|
|
114
|
+
it('should handle elements without data-style attributes', () => {
|
|
115
|
+
// Arrange
|
|
116
|
+
const html = '<div><span>Regular text</span><p>Normal paragraph</p></div>';
|
|
117
|
+
const parser = new DOMParser();
|
|
118
|
+
const doc = parser.parseFromString(html, 'text/html');
|
|
119
|
+
const nodes = Array.from(doc.body.children);
|
|
120
|
+
const context = new StylePreservationContext('');
|
|
121
|
+
// Act & Assert - should not throw any errors
|
|
122
|
+
expect(() => context.restore(nodes)).not.toThrow();
|
|
123
|
+
const divElement = nodes[0];
|
|
124
|
+
const spanElement = divElement.querySelector('span');
|
|
125
|
+
const pElement = divElement.querySelector('p');
|
|
126
|
+
expect(divElement.style.cssText).toBe('');
|
|
127
|
+
expect(spanElement.style.cssText).toBe('');
|
|
128
|
+
expect(pElement.style.cssText).toBe('');
|
|
129
|
+
});
|
|
130
|
+
it('should handle empty array of nodes', () => {
|
|
131
|
+
// Arrange
|
|
132
|
+
const nodes = [];
|
|
133
|
+
const context = new StylePreservationContext('');
|
|
134
|
+
// Act & Assert - should not throw any errors
|
|
135
|
+
expect(() => context.restore(nodes)).not.toThrow();
|
|
136
|
+
});
|
|
137
|
+
it('should handle complex CSS values', () => {
|
|
138
|
+
// Arrange
|
|
139
|
+
const html = '<div data-style="background: linear-gradient(45deg, red, blue); transform: rotate(45deg);">Complex styles</div>';
|
|
140
|
+
const parser = new DOMParser();
|
|
141
|
+
const doc = parser.parseFromString(html, 'text/html');
|
|
142
|
+
const nodes = Array.from(doc.body.children);
|
|
143
|
+
const context = new StylePreservationContext('');
|
|
144
|
+
// Act
|
|
145
|
+
context.restore(nodes);
|
|
146
|
+
// Assert
|
|
147
|
+
const divElement = nodes[0];
|
|
148
|
+
expect(divElement.style.background).toContain('linear-gradient');
|
|
149
|
+
expect(divElement.style.transform).toContain('rotate(45deg)');
|
|
150
|
+
expect(divElement.hasAttribute('data-style')).toBe(false);
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
describe('complete workflow', () => {
|
|
154
|
+
it('should preserve and restore styles correctly', () => {
|
|
155
|
+
// Arrange
|
|
156
|
+
const originalHtml = '<div style="color: red; font-weight: bold;">Test content</div>';
|
|
157
|
+
// Act - Preserve styles
|
|
158
|
+
const context = StylePreservator.preserve(originalHtml);
|
|
159
|
+
const processedHtml = context.getProcessedHtml();
|
|
160
|
+
// Parse the processed HTML
|
|
161
|
+
const parser = new DOMParser();
|
|
162
|
+
const doc = parser.parseFromString(processedHtml, 'text/html');
|
|
163
|
+
const nodes = Array.from(doc.body.children);
|
|
164
|
+
// Restore styles
|
|
165
|
+
context.restore(nodes);
|
|
166
|
+
// Assert
|
|
167
|
+
expect(processedHtml).toBe('<div data-style="color: red; font-weight: bold;">Test content</div>');
|
|
168
|
+
const divElement = nodes[0];
|
|
169
|
+
expect(divElement.style.color).toBe('red');
|
|
170
|
+
expect(divElement.style.fontWeight).toBe('bold');
|
|
171
|
+
expect(divElement.hasAttribute('data-style')).toBe(false);
|
|
172
|
+
});
|
|
173
|
+
it('should handle complex nested workflow', () => {
|
|
174
|
+
// Arrange
|
|
175
|
+
const originalHtml = `
|
|
176
|
+
<div style="padding: 20px;">
|
|
177
|
+
<h1 style="color: blue;">Title</h1>
|
|
178
|
+
<p style="text-align: center;">
|
|
179
|
+
<span style="font-weight: bold;">Bold text</span>
|
|
180
|
+
</p>
|
|
181
|
+
</div>
|
|
182
|
+
`;
|
|
183
|
+
// Act - Complete workflow
|
|
184
|
+
const context = StylePreservator.preserve(originalHtml);
|
|
185
|
+
const processedHtml = context.getProcessedHtml();
|
|
186
|
+
const parser = new DOMParser();
|
|
187
|
+
const doc = parser.parseFromString(processedHtml, 'text/html');
|
|
188
|
+
const nodes = Array.from(doc.body.children);
|
|
189
|
+
context.restore(nodes);
|
|
190
|
+
// Assert
|
|
191
|
+
const divElement = nodes[0];
|
|
192
|
+
const h1Element = divElement.querySelector('h1');
|
|
193
|
+
const pElement = divElement.querySelector('p');
|
|
194
|
+
const spanElement = divElement.querySelector('span');
|
|
195
|
+
expect(divElement.style.padding).toBe('20px');
|
|
196
|
+
expect(h1Element.style.color).toBe('blue');
|
|
197
|
+
expect(pElement.style.textAlign).toBe('center');
|
|
198
|
+
expect(spanElement.style.fontWeight).toBe('bold');
|
|
199
|
+
// All data-style attributes should be removed
|
|
200
|
+
expect(divElement.hasAttribute('data-style')).toBe(false);
|
|
201
|
+
expect(h1Element.hasAttribute('data-style')).toBe(false);
|
|
202
|
+
expect(pElement.hasAttribute('data-style')).toBe(false);
|
|
203
|
+
expect(spanElement.hasAttribute('data-style')).toBe(false);
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
});
|