iss-ctrl 0.0.2 → 0.0.4
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/README.md +24 -24
- package/fesm2022/iss-ctrl-checkbox.wrapper-BVw3Pu1B.mjs +81 -0
- package/fesm2022/iss-ctrl-checkbox.wrapper-BVw3Pu1B.mjs.map +1 -0
- package/fesm2022/iss-ctrl-chips.wrapper-FY02vbu1.mjs +83 -0
- package/fesm2022/iss-ctrl-chips.wrapper-FY02vbu1.mjs.map +1 -0
- package/fesm2022/iss-ctrl-date-picker.wrapper-BTyZyhiU.mjs +79 -0
- package/fesm2022/iss-ctrl-date-picker.wrapper-BTyZyhiU.mjs.map +1 -0
- package/fesm2022/iss-ctrl-date-range-picker.wrapper-BW1pwRKg.mjs +87 -0
- package/fesm2022/iss-ctrl-date-range-picker.wrapper-BW1pwRKg.mjs.map +1 -0
- package/fesm2022/iss-ctrl-datetime-picker.wrapper-h0P56I6e.mjs +83 -0
- package/fesm2022/iss-ctrl-datetime-picker.wrapper-h0P56I6e.mjs.map +1 -0
- package/fesm2022/iss-ctrl-file-picker.wrapper-D_4dLsqz.mjs +245 -0
- package/fesm2022/iss-ctrl-file-picker.wrapper-D_4dLsqz.mjs.map +1 -0
- package/fesm2022/iss-ctrl-input.wrapper-dK79kSim.mjs +83 -0
- package/fesm2022/iss-ctrl-input.wrapper-dK79kSim.mjs.map +1 -0
- package/fesm2022/iss-ctrl-iss-ctrl-BhZGHw0A.mjs +6024 -0
- package/fesm2022/iss-ctrl-iss-ctrl-BhZGHw0A.mjs.map +1 -0
- package/fesm2022/iss-ctrl-load-event.service-D_O5gUmg.mjs +62 -0
- package/fesm2022/iss-ctrl-load-event.service-D_O5gUmg.mjs.map +1 -0
- package/fesm2022/iss-ctrl-load-options-event.service-CylOcoz4.mjs +51 -0
- package/fesm2022/iss-ctrl-load-options-event.service-CylOcoz4.mjs.map +1 -0
- package/fesm2022/iss-ctrl-load-value-event.service-BRz28bIm.mjs +52 -0
- package/fesm2022/iss-ctrl-load-value-event.service-BRz28bIm.mjs.map +1 -0
- package/fesm2022/iss-ctrl-mobile.wrapper-DOvO-cRi.mjs +70 -0
- package/fesm2022/iss-ctrl-mobile.wrapper-DOvO-cRi.mjs.map +1 -0
- package/fesm2022/iss-ctrl-note.wrapper-BW6WOulk.mjs +43 -0
- package/fesm2022/iss-ctrl-note.wrapper-BW6WOulk.mjs.map +1 -0
- package/fesm2022/iss-ctrl-plate-number.wrapper-B_NXePR_.mjs +228 -0
- package/fesm2022/iss-ctrl-plate-number.wrapper-B_NXePR_.mjs.map +1 -0
- package/fesm2022/iss-ctrl-radio.wrapper-BHXkIyX9.mjs +84 -0
- package/fesm2022/iss-ctrl-radio.wrapper-BHXkIyX9.mjs.map +1 -0
- package/fesm2022/iss-ctrl-replace-api-keys.service-DNns4c2U.mjs +57 -0
- package/fesm2022/iss-ctrl-replace-api-keys.service-DNns4c2U.mjs.map +1 -0
- package/fesm2022/iss-ctrl-select.viewer-Bd4flLOk.mjs +30 -0
- package/fesm2022/iss-ctrl-select.viewer-Bd4flLOk.mjs.map +1 -0
- package/fesm2022/iss-ctrl-select.wrapper-B78Aap__.mjs +66 -0
- package/fesm2022/iss-ctrl-select.wrapper-B78Aap__.mjs.map +1 -0
- package/fesm2022/iss-ctrl-set-value-event.service-Dc4bcaTp.mjs +61 -0
- package/fesm2022/iss-ctrl-set-value-event.service-Dc4bcaTp.mjs.map +1 -0
- package/fesm2022/iss-ctrl-show-event.service-Bg9VNotN.mjs +18 -0
- package/fesm2022/iss-ctrl-show-event.service-Bg9VNotN.mjs.map +1 -0
- package/fesm2022/iss-ctrl-slide-toggle.wrapper-CRTpag4Q.mjs +75 -0
- package/fesm2022/iss-ctrl-slide-toggle.wrapper-CRTpag4Q.mjs.map +1 -0
- package/fesm2022/iss-ctrl-table.wrapper-B1q8mXCB.mjs +312 -0
- package/fesm2022/iss-ctrl-table.wrapper-B1q8mXCB.mjs.map +1 -0
- package/fesm2022/iss-ctrl-textarea.wrapper-LR5_KMxK.mjs +70 -0
- package/fesm2022/iss-ctrl-textarea.wrapper-LR5_KMxK.mjs.map +1 -0
- package/fesm2022/iss-ctrl-time-picker.wrapper-D_td2M3Z.mjs +67 -0
- package/fesm2022/iss-ctrl-time-picker.wrapper-D_td2M3Z.mjs.map +1 -0
- package/fesm2022/iss-ctrl-toggle-button.wrapper-DxA2jL1S.mjs +89 -0
- package/fesm2022/iss-ctrl-toggle-button.wrapper-DxA2jL1S.mjs.map +1 -0
- package/fesm2022/iss-ctrl-trigger-based-on-json-value.service-CAnJWl6G.mjs +24 -0
- package/fesm2022/iss-ctrl-trigger-based-on-json-value.service-CAnJWl6G.mjs.map +1 -0
- package/fesm2022/iss-ctrl-user-picker.wrapper-UeA0dCqd.mjs +190 -0
- package/fesm2022/iss-ctrl-user-picker.wrapper-UeA0dCqd.mjs.map +1 -0
- package/fesm2022/iss-ctrl-viewer.base-BCFfZsDG.mjs +17 -0
- package/fesm2022/iss-ctrl-viewer.base-BCFfZsDG.mjs.map +1 -0
- package/fesm2022/iss-ctrl.mjs +1 -3657
- package/fesm2022/iss-ctrl.mjs.map +1 -1
- package/package.json +10 -7
- package/types/iss-ctrl.d.ts +712 -0
- package/components/autocomplete/autocomplete.component.d.ts +0 -6
- package/components/base-ctrl.d.ts +0 -33
- package/components/checkbox/checkbox.component.d.ts +0 -16
- package/components/chips/chips.component.d.ts +0 -6
- package/components/ctrl-array/ctrl-array.component.d.ts +0 -6
- package/components/date-picker/date-adapter.d.ts +0 -37
- package/components/date-picker/date-picker.component.d.ts +0 -15
- package/components/date-range-picker/date-range-picker.component.d.ts +0 -19
- package/components/datetime-picker/datetime-picker.component.d.ts +0 -14
- package/components/datetime-range-picker/datetime-range-picker.component.d.ts +0 -6
- package/components/file-picker/file-picker.component.d.ts +0 -17
- package/components/hints/hints.component.d.ts +0 -9
- package/components/input/input.component.d.ts +0 -8
- package/components/mobile/COUNTRIES.d.ts +0 -2
- package/components/mobile/mobile.component.d.ts +0 -26
- package/components/mobile/phone.service.d.ts +0 -17
- package/components/note/note.component.d.ts +0 -6
- package/components/plate-number/plate-number.component.d.ts +0 -16
- package/components/radio/radio.component.d.ts +0 -11
- package/components/select/select.component.d.ts +0 -20
- package/components/slide-toggle/slide-toggle.component.d.ts +0 -7
- package/components/textarea/textarea.component.d.ts +0 -6
- package/components/time-picker/time-picker.component.d.ts +0 -19
- package/components/toggle-button/toggle-button.component.d.ts +0 -16
- package/directives/droppable.directive.d.ts +0 -10
- package/esm2022/components/autocomplete/autocomplete.component.mjs +0 -17
- package/esm2022/components/base-ctrl.mjs +0 -93
- package/esm2022/components/checkbox/checkbox.component.mjs +0 -73
- package/esm2022/components/chips/chips.component.mjs +0 -17
- package/esm2022/components/ctrl-array/ctrl-array.component.mjs +0 -17
- package/esm2022/components/date-picker/date-adapter.mjs +0 -183
- package/esm2022/components/date-picker/date-picker.component.mjs +0 -55
- package/esm2022/components/date-range-picker/date-range-picker.component.mjs +0 -101
- package/esm2022/components/datetime-picker/datetime-picker.component.mjs +0 -79
- package/esm2022/components/datetime-range-picker/datetime-range-picker.component.mjs +0 -17
- package/esm2022/components/file-picker/file-picker.component.mjs +0 -121
- package/esm2022/components/hints/hints.component.mjs +0 -66
- package/esm2022/components/input/input.component.mjs +0 -32
- package/esm2022/components/mobile/COUNTRIES.mjs +0 -2041
- package/esm2022/components/mobile/mobile.component.mjs +0 -141
- package/esm2022/components/mobile/phone.service.mjs +0 -99
- package/esm2022/components/note/note.component.mjs +0 -17
- package/esm2022/components/plate-number/plate-number.component.mjs +0 -114
- package/esm2022/components/radio/radio.component.mjs +0 -40
- package/esm2022/components/select/select.component.mjs +0 -123
- package/esm2022/components/slide-toggle/slide-toggle.component.mjs +0 -23
- package/esm2022/components/textarea/textarea.component.mjs +0 -17
- package/esm2022/components/time-picker/time-picker.component.mjs +0 -169
- package/esm2022/components/toggle-button/toggle-button.component.mjs +0 -87
- package/esm2022/directives/droppable.directive.mjs +0 -39
- package/esm2022/interfaces/country.interface.mjs +0 -2
- package/esm2022/interfaces/date-range-emission-object.mjs +0 -2
- package/esm2022/interfaces/hint.interface.mjs +0 -2
- package/esm2022/interfaces/iso2.interface.mjs +0 -2
- package/esm2022/interfaces/mobile.interface.mjs +0 -2
- package/esm2022/interfaces/option.interface.mjs +0 -2
- package/esm2022/interfaces/time.interface.mjs +0 -2
- package/esm2022/iss-ctrl.mjs +0 -5
- package/esm2022/pipes/select-status.pipe.mjs +0 -18
- package/esm2022/public-api.mjs +0 -20
- package/index.d.ts +0 -5
- package/interfaces/country.interface.d.ts +0 -10
- package/interfaces/date-range-emission-object.d.ts +0 -5
- package/interfaces/hint.interface.d.ts +0 -5
- package/interfaces/iso2.interface.d.ts +0 -1
- package/interfaces/mobile.interface.d.ts +0 -11
- package/interfaces/option.interface.d.ts +0 -4
- package/interfaces/time.interface.d.ts +0 -5
- package/pipes/select-status.pipe.d.ts +0 -8
- package/public-api.d.ts +0 -19
- package/src/components/mobile/flags/ad.svg +0 -154
- package/src/components/mobile/flags/ae.svg +0 -1
- package/src/components/mobile/flags/af.svg +0 -1
- package/src/components/mobile/flags/ag.svg +0 -1
- package/src/components/mobile/flags/ai.svg +0 -1
- package/src/components/mobile/flags/al.svg +0 -1
- package/src/components/mobile/flags/am.svg +0 -1
- package/src/components/mobile/flags/ao.svg +0 -1
- package/src/components/mobile/flags/aq.svg +0 -1
- package/src/components/mobile/flags/ar.svg +0 -1
- package/src/components/mobile/flags/as.svg +0 -1
- package/src/components/mobile/flags/at.svg +0 -1
- package/src/components/mobile/flags/au.svg +0 -1
- package/src/components/mobile/flags/aw.svg +0 -1
- package/src/components/mobile/flags/ax.svg +0 -1
- package/src/components/mobile/flags/az.svg +0 -1
- package/src/components/mobile/flags/ba.svg +0 -1
- package/src/components/mobile/flags/bb.svg +0 -7
- package/src/components/mobile/flags/bd.svg +0 -1
- package/src/components/mobile/flags/be.svg +0 -1
- package/src/components/mobile/flags/bf.svg +0 -1
- package/src/components/mobile/flags/bg.svg +0 -1
- package/src/components/mobile/flags/bh.svg +0 -1
- package/src/components/mobile/flags/bi.svg +0 -26
- package/src/components/mobile/flags/bj.svg +0 -1
- package/src/components/mobile/flags/bl.svg +0 -1
- package/src/components/mobile/flags/bm.svg +0 -1
- package/src/components/mobile/flags/bn.svg +0 -58
- package/src/components/mobile/flags/bo.svg +0 -1
- package/src/components/mobile/flags/bq.svg +0 -1
- package/src/components/mobile/flags/br.svg +0 -1
- package/src/components/mobile/flags/bs.svg +0 -1
- package/src/components/mobile/flags/bt.svg +0 -466
- package/src/components/mobile/flags/bv.svg +0 -1
- package/src/components/mobile/flags/bw.svg +0 -1
- package/src/components/mobile/flags/by.svg +0 -1
- package/src/components/mobile/flags/bz.svg +0 -1
- package/src/components/mobile/flags/ca.svg +0 -1
- package/src/components/mobile/flags/cc.svg +0 -19
- package/src/components/mobile/flags/cd.svg +0 -1
- package/src/components/mobile/flags/cf.svg +0 -1
- package/src/components/mobile/flags/cg.svg +0 -5
- package/src/components/mobile/flags/ch.svg +0 -1
- package/src/components/mobile/flags/ci.svg +0 -1
- package/src/components/mobile/flags/ck.svg +0 -1
- package/src/components/mobile/flags/cl.svg +0 -14
- package/src/components/mobile/flags/cm.svg +0 -15
- package/src/components/mobile/flags/cn.svg +0 -1
- package/src/components/mobile/flags/co.svg +0 -5
- package/src/components/mobile/flags/cr.svg +0 -1
- package/src/components/mobile/flags/cu.svg +0 -6
- package/src/components/mobile/flags/cv.svg +0 -24
- package/src/components/mobile/flags/cw.svg +0 -16
- package/src/components/mobile/flags/cx.svg +0 -15
- package/src/components/mobile/flags/cy.svg +0 -1
- package/src/components/mobile/flags/cz.svg +0 -5
- package/src/components/mobile/flags/de.svg +0 -1
- package/src/components/mobile/flags/dj.svg +0 -1
- package/src/components/mobile/flags/dk.svg +0 -5
- package/src/components/mobile/flags/dm.svg +0 -1
- package/src/components/mobile/flags/do.svg +0 -1
- package/src/components/mobile/flags/dz.svg +0 -5
- package/src/components/mobile/flags/ec.svg +0 -519
- package/src/components/mobile/flags/ee.svg +0 -1
- package/src/components/mobile/flags/eg.svg +0 -78
- package/src/components/mobile/flags/eh.svg +0 -9
- package/src/components/mobile/flags/er.svg +0 -6
- package/src/components/mobile/flags/es.svg +0 -1
- package/src/components/mobile/flags/et.svg +0 -1
- package/src/components/mobile/flags/eu.svg +0 -1
- package/src/components/mobile/flags/fi.svg +0 -5
- package/src/components/mobile/flags/fj.svg +0 -1
- package/src/components/mobile/flags/fk.svg +0 -1
- package/src/components/mobile/flags/fm.svg +0 -16
- package/src/components/mobile/flags/fo.svg +0 -11
- package/src/components/mobile/flags/fr.svg +0 -1
- package/src/components/mobile/flags/ga.svg +0 -5
- package/src/components/mobile/flags/gb-eng.svg +0 -7
- package/src/components/mobile/flags/gb-nir.svg +0 -1
- package/src/components/mobile/flags/gb-sct.svg +0 -1
- package/src/components/mobile/flags/gb-wls.svg +0 -9
- package/src/components/mobile/flags/gb.svg +0 -1
- package/src/components/mobile/flags/gd.svg +0 -1
- package/src/components/mobile/flags/ge.svg +0 -1
- package/src/components/mobile/flags/gf.svg +0 -1
- package/src/components/mobile/flags/gg.svg +0 -8
- package/src/components/mobile/flags/gh.svg +0 -6
- package/src/components/mobile/flags/gi.svg +0 -54
- package/src/components/mobile/flags/gl.svg +0 -4
- package/src/components/mobile/flags/gm.svg +0 -7
- package/src/components/mobile/flags/gn.svg +0 -5
- package/src/components/mobile/flags/gp.svg +0 -1
- package/src/components/mobile/flags/gq.svg +0 -75
- package/src/components/mobile/flags/gr.svg +0 -1
- package/src/components/mobile/flags/gs.svg +0 -1
- package/src/components/mobile/flags/gt.svg +0 -214
- package/src/components/mobile/flags/gu.svg +0 -1
- package/src/components/mobile/flags/gw.svg +0 -13
- package/src/components/mobile/flags/gy.svg +0 -7
- package/src/components/mobile/flags/hk.svg +0 -1
- package/src/components/mobile/flags/hm.svg +0 -1
- package/src/components/mobile/flags/hn.svg +0 -1
- package/src/components/mobile/flags/hr.svg +0 -1
- package/src/components/mobile/flags/ht.svg +0 -1
- package/src/components/mobile/flags/hu.svg +0 -1
- package/src/components/mobile/flags/id.svg +0 -1
- package/src/components/mobile/flags/ie.svg +0 -1
- package/src/components/mobile/flags/il.svg +0 -1
- package/src/components/mobile/flags/im.svg +0 -1
- package/src/components/mobile/flags/in.svg +0 -1
- package/src/components/mobile/flags/io.svg +0 -1
- package/src/components/mobile/flags/iq.svg +0 -1
- package/src/components/mobile/flags/ir.svg +0 -31
- package/src/components/mobile/flags/is.svg +0 -1
- package/src/components/mobile/flags/it.svg +0 -1
- package/src/components/mobile/flags/je.svg +0 -1
- package/src/components/mobile/flags/jm.svg +0 -1
- package/src/components/mobile/flags/jo.svg +0 -7
- package/src/components/mobile/flags/jp.svg +0 -4
- package/src/components/mobile/flags/ke.svg +0 -23
- package/src/components/mobile/flags/kg.svg +0 -1
- package/src/components/mobile/flags/kh.svg +0 -116
- package/src/components/mobile/flags/ki.svg +0 -1
- package/src/components/mobile/flags/km.svg +0 -13
- package/src/components/mobile/flags/kn.svg +0 -1
- package/src/components/mobile/flags/kp.svg +0 -16
- package/src/components/mobile/flags/kr.svg +0 -1
- package/src/components/mobile/flags/kw.svg +0 -6
- package/src/components/mobile/flags/ky.svg +0 -1
- package/src/components/mobile/flags/kz.svg +0 -37
- package/src/components/mobile/flags/la.svg +0 -1
- package/src/components/mobile/flags/lb.svg +0 -5
- package/src/components/mobile/flags/lc.svg +0 -6
- package/src/components/mobile/flags/li.svg +0 -56
- package/src/components/mobile/flags/lk.svg +0 -1
- package/src/components/mobile/flags/lr.svg +0 -15
- package/src/components/mobile/flags/ls.svg +0 -23
- package/src/components/mobile/flags/lt.svg +0 -1
- package/src/components/mobile/flags/lu.svg +0 -1
- package/src/components/mobile/flags/lv.svg +0 -1
- package/src/components/mobile/flags/ly.svg +0 -8
- package/src/components/mobile/flags/ma.svg +0 -1
- package/src/components/mobile/flags/mc.svg +0 -1
- package/src/components/mobile/flags/md.svg +0 -1
- package/src/components/mobile/flags/me.svg +0 -93
- package/src/components/mobile/flags/mf.svg +0 -1
- package/src/components/mobile/flags/mg.svg +0 -1
- package/src/components/mobile/flags/mh.svg +0 -1
- package/src/components/mobile/flags/mk.svg +0 -1
- package/src/components/mobile/flags/ml.svg +0 -5
- package/src/components/mobile/flags/mm.svg +0 -12
- package/src/components/mobile/flags/mn.svg +0 -1
- package/src/components/mobile/flags/mo.svg +0 -10
- package/src/components/mobile/flags/mp.svg +0 -1
- package/src/components/mobile/flags/mq.svg +0 -1
- package/src/components/mobile/flags/mr.svg +0 -1
- package/src/components/mobile/flags/ms.svg +0 -1
- package/src/components/mobile/flags/mt.svg +0 -1
- package/src/components/mobile/flags/mu.svg +0 -1
- package/src/components/mobile/flags/mv.svg +0 -1
- package/src/components/mobile/flags/mw.svg +0 -24
- package/src/components/mobile/flags/mx.svg +0 -1
- package/src/components/mobile/flags/my.svg +0 -1
- package/src/components/mobile/flags/mz.svg +0 -13
- package/src/components/mobile/flags/na.svg +0 -1
- package/src/components/mobile/flags/nc.svg +0 -1
- package/src/components/mobile/flags/ne.svg +0 -6
- package/src/components/mobile/flags/nf.svg +0 -5
- package/src/components/mobile/flags/ng.svg +0 -4
- package/src/components/mobile/flags/ni.svg +0 -161
- package/src/components/mobile/flags/nl.svg +0 -1
- package/src/components/mobile/flags/no.svg +0 -1
- package/src/components/mobile/flags/np.svg +0 -33
- package/src/components/mobile/flags/nr.svg +0 -1
- package/src/components/mobile/flags/nu.svg +0 -1
- package/src/components/mobile/flags/nz.svg +0 -1
- package/src/components/mobile/flags/om.svg +0 -1
- package/src/components/mobile/flags/pa.svg +0 -1
- package/src/components/mobile/flags/pe.svg +0 -320
- package/src/components/mobile/flags/pf.svg +0 -1
- package/src/components/mobile/flags/pg.svg +0 -13
- package/src/components/mobile/flags/ph.svg +0 -1
- package/src/components/mobile/flags/pk.svg +0 -1
- package/src/components/mobile/flags/pl.svg +0 -1
- package/src/components/mobile/flags/pm.svg +0 -1
- package/src/components/mobile/flags/pn.svg +0 -1
- package/src/components/mobile/flags/pr.svg +0 -1
- package/src/components/mobile/flags/ps.svg +0 -1
- package/src/components/mobile/flags/pt.svg +0 -1
- package/src/components/mobile/flags/pw.svg +0 -1
- package/src/components/mobile/flags/py.svg +0 -1
- package/src/components/mobile/flags/qa.svg +0 -1
- package/src/components/mobile/flags/re.svg +0 -1
- package/src/components/mobile/flags/ro.svg +0 -1
- package/src/components/mobile/flags/rs.svg +0 -1
- package/src/components/mobile/flags/ru.svg +0 -1
- package/src/components/mobile/flags/rw.svg +0 -13
- package/src/components/mobile/flags/sa.svg +0 -1
- package/src/components/mobile/flags/sb.svg +0 -1
- package/src/components/mobile/flags/sc.svg +0 -7
- package/src/components/mobile/flags/sd.svg +0 -6
- package/src/components/mobile/flags/se.svg +0 -5
- package/src/components/mobile/flags/sg.svg +0 -11
- package/src/components/mobile/flags/sh.svg +0 -1
- package/src/components/mobile/flags/si.svg +0 -1
- package/src/components/mobile/flags/sj.svg +0 -1
- package/src/components/mobile/flags/sk.svg +0 -1
- package/src/components/mobile/flags/sl.svg +0 -1
- package/src/components/mobile/flags/sm.svg +0 -1
- package/src/components/mobile/flags/sn.svg +0 -1
- package/src/components/mobile/flags/so.svg +0 -1
- package/src/components/mobile/flags/sr.svg +0 -1
- package/src/components/mobile/flags/ss.svg +0 -1
- package/src/components/mobile/flags/st.svg +0 -1
- package/src/components/mobile/flags/sv.svg +0 -1
- package/src/components/mobile/flags/sx.svg +0 -1
- package/src/components/mobile/flags/sy.svg +0 -1
- package/src/components/mobile/flags/sz.svg +0 -1
- package/src/components/mobile/flags/tc.svg +0 -1
- package/src/components/mobile/flags/td.svg +0 -1
- package/src/components/mobile/flags/tf.svg +0 -1
- package/src/components/mobile/flags/tg.svg +0 -1
- package/src/components/mobile/flags/th.svg +0 -1
- package/src/components/mobile/flags/tj.svg +0 -1
- package/src/components/mobile/flags/tk.svg +0 -1
- package/src/components/mobile/flags/tl.svg +0 -1
- package/src/components/mobile/flags/tm.svg +0 -1
- package/src/components/mobile/flags/tn.svg +0 -9
- package/src/components/mobile/flags/to.svg +0 -1
- package/src/components/mobile/flags/tr.svg +0 -1
- package/src/components/mobile/flags/tt.svg +0 -5
- package/src/components/mobile/flags/tv.svg +0 -1
- package/src/components/mobile/flags/tw.svg +0 -1
- package/src/components/mobile/flags/tz.svg +0 -1
- package/src/components/mobile/flags/ua.svg +0 -1
- package/src/components/mobile/flags/ug.svg +0 -1
- package/src/components/mobile/flags/um.svg +0 -1
- package/src/components/mobile/flags/us.svg +0 -1
- package/src/components/mobile/flags/uy.svg +0 -1
- package/src/components/mobile/flags/uz.svg +0 -1
- package/src/components/mobile/flags/va.svg +0 -1
- package/src/components/mobile/flags/vc.svg +0 -1
- package/src/components/mobile/flags/ve.svg +0 -1
- package/src/components/mobile/flags/vg.svg +0 -1
- package/src/components/mobile/flags/vi.svg +0 -1
- package/src/components/mobile/flags/vn.svg +0 -1
- package/src/components/mobile/flags/vu.svg +0 -1
- package/src/components/mobile/flags/wf.svg +0 -1
- package/src/components/mobile/flags/ws.svg +0 -1
- package/src/components/mobile/flags/xk.svg +0 -1
- package/src/components/mobile/flags/ye.svg +0 -1
- package/src/components/mobile/flags/yt.svg +0 -1
- package/src/components/mobile/flags/za.svg +0 -1
- package/src/components/mobile/flags/zm.svg +0 -1
- package/src/components/mobile/flags/zw.svg +0 -1
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject, input, signal } from "@angular/core";
|
|
2
|
-
import { BaseCtrl } from "../base-ctrl";
|
|
3
|
-
import { FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule } from "@angular/forms";
|
|
4
|
-
import { NgClass, NgOptimizedImage } from "@angular/common";
|
|
5
|
-
import { toSignal } from "@angular/core/rxjs-interop";
|
|
6
|
-
import { CdkConnectedOverlay, CdkOverlayOrigin } from "@angular/cdk/overlay";
|
|
7
|
-
import { MatFormField, MatPrefix } from "@angular/material/form-field";
|
|
8
|
-
import { MatInput } from "@angular/material/input";
|
|
9
|
-
import { PhoneService } from "./phone.service";
|
|
10
|
-
import { COUNTRIES } from "./COUNTRIES";
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "@angular/forms";
|
|
13
|
-
export const DEFAULT_COUNTRY = {
|
|
14
|
-
name: "Saudi Arabia (المملكة العربية السعودية)",
|
|
15
|
-
code: "sa",
|
|
16
|
-
dailCode: "966",
|
|
17
|
-
priority: 0,
|
|
18
|
-
order: 1000,
|
|
19
|
-
placeholder: "512345678"
|
|
20
|
-
};
|
|
21
|
-
export class MobileComponent extends BaseCtrl {
|
|
22
|
-
constructor() {
|
|
23
|
-
super(...arguments);
|
|
24
|
-
this.phoneService = inject(PhoneService);
|
|
25
|
-
this.isOpen = signal(false);
|
|
26
|
-
this.selectedCountry = signal(DEFAULT_COUNTRY);
|
|
27
|
-
this.preferredCountries = input(["sa"]);
|
|
28
|
-
this.searchInput = new FormControl("");
|
|
29
|
-
this.filteredCountries = computed(() => this.#searchInCountries());
|
|
30
|
-
this.#ctrlChanges = toSignal(this.ctrl.valueChanges);
|
|
31
|
-
this.#searchQuery = toSignal(this.searchInput.valueChanges);
|
|
32
|
-
}
|
|
33
|
-
#ctrlChanges;
|
|
34
|
-
#searchQuery;
|
|
35
|
-
writeValue(value) {
|
|
36
|
-
if (value) {
|
|
37
|
-
const mobileObject = this.phoneService.getPhoneNumberObject(value);
|
|
38
|
-
if (mobileObject) {
|
|
39
|
-
this.selectedCountry.set(mobileObject);
|
|
40
|
-
this.emitOnChangeEvent(this.selectedCountry());
|
|
41
|
-
}
|
|
42
|
-
this.ctrl.setValue(mobileObject?.nationalNumber);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
emit() {
|
|
46
|
-
if (this.#ctrlChanges()) {
|
|
47
|
-
const numberObject = this.phoneService.getPhoneNumberObject(`+${this.selectedCountry().dailCode}${this.#ctrlChanges()}`);
|
|
48
|
-
if (numberObject) {
|
|
49
|
-
this.selectedCountry.set(numberObject);
|
|
50
|
-
this.propagateValue(`+${numberObject.dailCode}${numberObject.nationalNumber}`);
|
|
51
|
-
this.emitOnChangeEvent(this.selectedCountry());
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
this.propagateValue(null);
|
|
56
|
-
this.emitOnChangeEvent(null);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
validate(control) {
|
|
60
|
-
if (!control.getRawValue()) {
|
|
61
|
-
return null;
|
|
62
|
-
}
|
|
63
|
-
let error = { invalidPhoneNumber: { accepted: this.selectedCountry().placeholder, input: control.getRawValue() } };
|
|
64
|
-
let isValid = this.phoneService.validate(control.getRawValue());
|
|
65
|
-
if (isValid) {
|
|
66
|
-
return null;
|
|
67
|
-
}
|
|
68
|
-
return error;
|
|
69
|
-
}
|
|
70
|
-
onInput(event) {
|
|
71
|
-
const allowedChars = /[0-9+\-()]/;
|
|
72
|
-
const allowedCtrlChars = /[axcv]/; // Allows copy-pasting
|
|
73
|
-
const allowedOtherKeys = [
|
|
74
|
-
"ArrowLeft",
|
|
75
|
-
"ArrowUp",
|
|
76
|
-
"ArrowRight",
|
|
77
|
-
"ArrowDown",
|
|
78
|
-
"Home",
|
|
79
|
-
"End",
|
|
80
|
-
"Insert",
|
|
81
|
-
"Delete",
|
|
82
|
-
"Backspace",
|
|
83
|
-
];
|
|
84
|
-
if (!allowedChars.test(event.key) && !(event.ctrlKey && allowedCtrlChars.test(event.key)) && !allowedOtherKeys.includes(event.key)) {
|
|
85
|
-
event.preventDefault();
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
onSelectCountry(country) {
|
|
89
|
-
this.selectedCountry.set(country);
|
|
90
|
-
this.searchInput.setValue("");
|
|
91
|
-
this.closeCountryCodeMenu();
|
|
92
|
-
this.propagateValue(`+${this.selectedCountry().dailCode}${this.#ctrlChanges()}`);
|
|
93
|
-
this.emitOnChangeEvent(`+${this.selectedCountry().dailCode}${this.#ctrlChanges()}`);
|
|
94
|
-
}
|
|
95
|
-
closeCountryCodeMenu() {
|
|
96
|
-
this.isOpen.set(false);
|
|
97
|
-
}
|
|
98
|
-
toggleCountryCodeMenu() {
|
|
99
|
-
this.isOpen.update((isOpen) => !isOpen);
|
|
100
|
-
}
|
|
101
|
-
#sortCountries() {
|
|
102
|
-
return COUNTRIES.map((country) => {
|
|
103
|
-
if (this.preferredCountries().includes(country.code)) {
|
|
104
|
-
country.order = country.priority + (-1 * (this.preferredCountries().indexOf(country.code) - this.preferredCountries().length)) * 100;
|
|
105
|
-
}
|
|
106
|
-
return country;
|
|
107
|
-
}).sort((a, b) => b.order - a.order);
|
|
108
|
-
}
|
|
109
|
-
#searchInCountries() {
|
|
110
|
-
if (this.#searchQuery()) {
|
|
111
|
-
return this.#sortCountries().filter((country) => {
|
|
112
|
-
return (country.code.toLowerCase().includes(this.#searchQuery())
|
|
113
|
-
|| country.name.toLowerCase().includes(this.#searchQuery())
|
|
114
|
-
|| country.dailCode.toLowerCase().includes(this.#searchQuery()));
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
return this.#sortCountries();
|
|
118
|
-
}
|
|
119
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MobileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
120
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: MobileComponent, isStandalone: true, selector: "iss-ctrl-mobile", inputs: { preferredCountries: { classPropertyName: "preferredCountries", publicName: "preferredCountries", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
121
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting: MobileComponent, multi: true },
|
|
122
|
-
{ provide: NG_VALIDATORS, useExisting: MobileComponent, multi: true }
|
|
123
|
-
], usesInheritance: true, ngImport: i0, template: "<mat-form-field cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\r\n <div class=\"d-inline-flex align-items-center gap-1 country-flag\" matPrefix (click)=\"toggleCountryCodeMenu()\">\r\n <img ngSrc=\"./flags/{{selectedCountry().code}}.svg\" width=\"20\" height=\"20\" alt=\"\" class=\"country-flag--image\" [priority]=\"true\">\r\n <!--@if (separateDialCode()) {\r\n <div class=\"selected-dial-code\">+{{ selectedCountry.dialCode }}</div>\r\n }-->\r\n <ds-icon icon=\"arrow-down\" class=\"fs-12 fc-dark-gray\"></ds-icon>\r\n </div>\r\n <input\r\n matInput\r\n type=\"tel\"\r\n autocomplete=\"off\"\r\n (blur)=\"markAsTouched()\"\r\n (keydown)=\"onInput($event)\"\r\n (input)=\"emit()\"\r\n [formControl]=\"ctrl\"\r\n [disabled]=\"disabled()\"\r\n [placeholder]=\"selectedCountry().placeholder\"\r\n />\r\n</mat-form-field>\r\n\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n (backdropClick)=\"closeCountryCodeMenu()\"\r\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isOpen()\"\r\n>\r\n <div class=\"country-dropdown bc-white box-shadow p-2\">\r\n <div class=\"search-container\">\r\n <mat-form-field>\r\n <input matInput id=\"country-search-box\" [formControl]=\"searchInput\" (click)=\"$event.stopPropagation()\"/>\r\n </mat-form-field>\r\n </div>\r\n <ul class=\"country-list\">\r\n @for (country of filteredCountries(); track $index) {\r\n <li\r\n #countryEl\r\n [ngClass]=\"country.order > 1 ? 'preferredCounty' : ''\"\r\n class=\"d-flex align-items-center gap-2 cursor-pointer p-2\"\r\n (click)=\"onSelectCountry(country)\"\r\n >\r\n @defer (on viewport(countryEl)) {\r\n <img ngSrc=\"./flags/{{country.code}}.svg\" width=\"20\" height=\"20\" alt=\"\" class=\"country-flag--image\">\r\n }\r\n <span class=\"fs-12 fc-black\">{{ country.name }}</span>\r\n <span class=\"fs-12 fc-dark-gray\">+{{ country.dailCode }}</span>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n</ng-template>\r\n", styles: [".country-flag{border-inline-end:var(--input-border);padding-inline-end:.5rem;margin-inline-end:.5rem;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }], deferBlockDependencies: [() => [NgOptimizedImage]] }); }
|
|
124
|
-
}
|
|
125
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MobileComponent, decorators: [{
|
|
126
|
-
type: Component,
|
|
127
|
-
args: [{ selector: "iss-ctrl-mobile", standalone: true, imports: [
|
|
128
|
-
ReactiveFormsModule,
|
|
129
|
-
NgClass,
|
|
130
|
-
CdkConnectedOverlay,
|
|
131
|
-
CdkOverlayOrigin,
|
|
132
|
-
MatFormField,
|
|
133
|
-
MatInput,
|
|
134
|
-
MatPrefix,
|
|
135
|
-
NgOptimizedImage
|
|
136
|
-
], providers: [
|
|
137
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting: MobileComponent, multi: true },
|
|
138
|
-
{ provide: NG_VALIDATORS, useExisting: MobileComponent, multi: true }
|
|
139
|
-
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<mat-form-field cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\r\n <div class=\"d-inline-flex align-items-center gap-1 country-flag\" matPrefix (click)=\"toggleCountryCodeMenu()\">\r\n <img ngSrc=\"./flags/{{selectedCountry().code}}.svg\" width=\"20\" height=\"20\" alt=\"\" class=\"country-flag--image\" [priority]=\"true\">\r\n <!--@if (separateDialCode()) {\r\n <div class=\"selected-dial-code\">+{{ selectedCountry.dialCode }}</div>\r\n }-->\r\n <ds-icon icon=\"arrow-down\" class=\"fs-12 fc-dark-gray\"></ds-icon>\r\n </div>\r\n <input\r\n matInput\r\n type=\"tel\"\r\n autocomplete=\"off\"\r\n (blur)=\"markAsTouched()\"\r\n (keydown)=\"onInput($event)\"\r\n (input)=\"emit()\"\r\n [formControl]=\"ctrl\"\r\n [disabled]=\"disabled()\"\r\n [placeholder]=\"selectedCountry().placeholder\"\r\n />\r\n</mat-form-field>\r\n\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n (backdropClick)=\"closeCountryCodeMenu()\"\r\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isOpen()\"\r\n>\r\n <div class=\"country-dropdown bc-white box-shadow p-2\">\r\n <div class=\"search-container\">\r\n <mat-form-field>\r\n <input matInput id=\"country-search-box\" [formControl]=\"searchInput\" (click)=\"$event.stopPropagation()\"/>\r\n </mat-form-field>\r\n </div>\r\n <ul class=\"country-list\">\r\n @for (country of filteredCountries(); track $index) {\r\n <li\r\n #countryEl\r\n [ngClass]=\"country.order > 1 ? 'preferredCounty' : ''\"\r\n class=\"d-flex align-items-center gap-2 cursor-pointer p-2\"\r\n (click)=\"onSelectCountry(country)\"\r\n >\r\n @defer (on viewport(countryEl)) {\r\n <img ngSrc=\"./flags/{{country.code}}.svg\" width=\"20\" height=\"20\" alt=\"\" class=\"country-flag--image\">\r\n }\r\n <span class=\"fs-12 fc-black\">{{ country.name }}</span>\r\n <span class=\"fs-12 fc-dark-gray\">+{{ country.dailCode }}</span>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n</ng-template>\r\n", styles: [".country-flag{border-inline-end:var(--input-border);padding-inline-end:.5rem;margin-inline-end:.5rem;cursor:pointer}\n"] }]
|
|
140
|
-
}] });
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lzcy1jdHJsL3NyYy9jb21wb25lbnRzL21vYmlsZS9tb2JpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvbW9iaWxlL21vYmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUF1QixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3RJLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFrQixXQUFXLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUE4QixNQUFNLGdCQUFnQixDQUFDO0FBQ2hKLE9BQU8sRUFBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFDLG1CQUFtQixFQUFFLGdCQUFnQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFDLFlBQVksRUFBRSxTQUFTLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFakQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxhQUFhLENBQUM7OztBQUd0QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQVk7SUFDdEMsSUFBSSxFQUFFLHlDQUF5QztJQUMvQyxJQUFJLEVBQUUsSUFBSTtJQUNWLFFBQVEsRUFBRSxLQUFLO0lBQ2Ys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X0VMRU1FTlRTX1NDSEVNQSwgaW5qZWN0LCBpbnB1dCwgSW5wdXRTaWduYWwsIFNpZ25hbCwgc2lnbmFsLCBXcml0YWJsZVNpZ25hbH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtCYXNlQ3RybH0gZnJvbSBcIi4uL2Jhc2UtY3RybFwiO1xyXG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3J9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge05nQ2xhc3MsIE5nT3B0aW1pemVkSW1hZ2V9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHt0b1NpZ25hbH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XHJcbmltcG9ydCB7Q2RrQ29ubmVjdGVkT3ZlcmxheSwgQ2RrT3ZlcmxheU9yaWdpbn0gZnJvbSBcIkBhbmd1bGFyL2Nkay9vdmVybGF5XCI7XHJcbmltcG9ydCB7TWF0Rm9ybUZpZWxkLCBNYXRQcmVmaXh9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XHJcbmltcG9ydCB7TWF0SW5wdXR9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xyXG5pbXBvcnQge0NvdW50cnl9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL2NvdW50cnkuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7UGhvbmVTZXJ2aWNlfSBmcm9tIFwiLi9waG9uZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7SVNPMn0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvaXNvMi5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtDT1VOVFJJRVN9IGZyb20gXCIuL0NPVU5UUklFU1wiO1xyXG5pbXBvcnQge01vYmlsZX0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvbW9iaWxlLmludGVyZmFjZVwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ09VTlRSWTogQ291bnRyeSA9IHtcclxuICBuYW1lOiBcIlNhdWRpIEFyYWJpYSAo2KfZhNmF2YXZhNmD2Kkg2KfZhNi52LHYqNmK2Kkg2KfZhNiz2LnZiNiv2YrYqSlcIixcclxuICBjb2RlOiBcInNhXCIsXHJcbiAgZGFpbENvZGU6IFwiOTY2XCIsXHJcbiAgcHJpb3JpdHk6IDAsXHJcbiAgb3JkZXI6IDEwMDAsXHJcbiAgcGxhY2Vob2xkZXI6IFwiNTEyMzQ1Njc4XCJcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImlzcy1jdHJsLW1vYmlsZVwiLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBDZGtDb25uZWN0ZWRPdmVybGF5LFxyXG4gICAgQ2RrT3ZlcmxheU9yaWdpbixcclxuICAgIE1hdEZvcm1GaWVsZCxcclxuICAgIE1hdElucHV0LFxyXG4gICAgTWF0UHJlZml4LFxyXG4gICAgTmdPcHRpbWl6ZWRJbWFnZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9tb2JpbGUuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL21vYmlsZS5jb21wb25lbnQuc2Nzc1wiLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge3Byb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogTW9iaWxlQ29tcG9uZW50LCBtdWx0aTogdHJ1ZX0sXHJcbiAgICB7cHJvdmlkZTogTkdfVkFMSURBVE9SUywgdXNlRXhpc3Rpbmc6IE1vYmlsZUNvbXBvbmVudCwgbXVsdGk6IHRydWV9XHJcbiAgXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNb2JpbGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ3RybCBpbXBsZW1lbnRzIFZhbGlkYXRvciB7XHJcbiAgcGhvbmVTZXJ2aWNlOiBQaG9uZVNlcnZpY2UgPSBpbmplY3QoUGhvbmVTZXJ2aWNlKTtcclxuICBpc09wZW46IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcclxuICBzZWxlY3RlZENvdW50cnk6IFdyaXRhYmxlU2lnbmFsPENvdW50cnk+ID0gc2lnbmFsPENvdW50cnk+KERFRkFVTFRfQ09VTlRSWSk7XHJcbiAgcHJlZmVycmVkQ291bnRyaWVzOiBJbnB1dFNpZ25hbDxJU08yW10+ID0gaW5wdXQ8SVNPMltdPihbXCJzYVwiXSk7XHJcbiAgc2VhcmNoSW5wdXQ6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKFwiXCIpO1xyXG4gIGZpbHRlcmVkQ291bnRyaWVzOiBTaWduYWw8Q291bnRyeVtdPiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuI3NlYXJjaEluQ291bnRyaWVzKCkpO1xyXG4gICNjdHJsQ2hhbmdlczogU2lnbmFsPHN0cmluZz4gPSB0b1NpZ25hbCh0aGlzLmN0cmwudmFsdWVDaGFuZ2VzKTtcclxuICAjc2VhcmNoUXVlcnk6IFNpZ25hbDxzdHJpbmc+ID0gdG9TaWduYWwodGhpcy5zZWFyY2hJbnB1dC52YWx1ZUNoYW5nZXMpO1xyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBjb25zdCBtb2JpbGVPYmplY3QgPSB0aGlzLnBob25lU2VydmljZS5nZXRQaG9uZU51bWJlck9iamVjdCh2YWx1ZSk7XHJcbiAgICAgIGlmIChtb2JpbGVPYmplY3QpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnRyeS5zZXQobW9iaWxlT2JqZWN0KTtcclxuICAgICAgICB0aGlzLmVtaXRPbkNoYW5nZUV2ZW50KHRoaXMuc2VsZWN0ZWRDb3VudHJ5KCkpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY3RybC5zZXRWYWx1ZShtb2JpbGVPYmplY3Q/Lm5hdGlvbmFsTnVtYmVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVtaXQoKSB7XHJcbiAgICBpZiAodGhpcy4jY3RybENoYW5nZXMoKSkge1xyXG4gICAgICBjb25zdCBudW1iZXJPYmplY3Q6IE1vYmlsZSB8IHVuZGVmaW5lZCA9IHRoaXMucGhvbmVTZXJ2aWNlLmdldFBob25lTnVtYmVyT2JqZWN0KGArJHt0aGlzLnNlbGVjdGVkQ291bnRyeSgpLmRhaWxDb2RlfSR7dGhpcy4jY3RybENoYW5nZXMoKX1gKTtcclxuICAgICAgaWYgKG51bWJlck9iamVjdCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5LnNldChudW1iZXJPYmplY3QpO1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlVmFsdWUoYCske251bWJlck9iamVjdC5kYWlsQ29kZX0ke251bWJlck9iamVjdC5uYXRpb25hbE51bWJlcn1gKTtcclxuICAgICAgICB0aGlzLmVtaXRPbkNoYW5nZUV2ZW50KHRoaXMuc2VsZWN0ZWRDb3VudHJ5KCkpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnByb3BhZ2F0ZVZhbHVlKG51bGwpO1xyXG4gICAgICB0aGlzLmVtaXRPbkNoYW5nZUV2ZW50KG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgaWYgKCFjb250cm9sLmdldFJhd1ZhbHVlKCkpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGVycm9yOiBhbnkgPSB7aW52YWxpZFBob25lTnVtYmVyOiB7YWNjZXB0ZWQ6IHRoaXMuc2VsZWN0ZWRDb3VudHJ5KCkucGxhY2Vob2xkZXIsIGlucHV0OiBjb250cm9sLmdldFJhd1ZhbHVlKCl9fTtcclxuICAgIGxldCBpc1ZhbGlkOiBib29sZWFuID0gdGhpcy5waG9uZVNlcnZpY2UudmFsaWRhdGUoY29udHJvbC5nZXRSYXdWYWx1ZSgpKTtcclxuXHJcbiAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZXJyb3I7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb25JbnB1dChldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgY29uc3QgYWxsb3dlZENoYXJzID0gL1swLTkrXFwtKCldLztcclxuICAgIGNvbnN0IGFsbG93ZWRDdHJsQ2hhcnMgPSAvW2F4Y3ZdLzsgLy8gQWxsb3dzIGNvcHktcGFzdGluZ1xyXG4gICAgY29uc3QgYWxsb3dlZE90aGVyS2V5cyA9IFtcclxuICAgICAgXCJBcnJvd0xlZnRcIixcclxuICAgICAgXCJBcnJvd1VwXCIsXHJcbiAgICAgIFwiQXJyb3dSaWdodFwiLFxyXG4gICAgICBcIkFycm93RG93blwiLFxyXG4gICAgICBcIkhvbWVcIixcclxuICAgICAgXCJFbmRcIixcclxuICAgICAgXCJJbnNlcnRcIixcclxuICAgICAgXCJEZWxldGVcIixcclxuICAgICAgXCJCYWNrc3BhY2VcIixcclxuICAgIF07XHJcblxyXG4gICAgaWYgKCFhbGxvd2VkQ2hhcnMudGVzdChldmVudC5rZXkpICYmICEoZXZlbnQuY3RybEtleSAmJiBhbGxvd2VkQ3RybENoYXJzLnRlc3QoZXZlbnQua2V5KSkgJiYgIWFsbG93ZWRPdGhlcktleXMuaW5jbHVkZXMoZXZlbnQua2V5KSkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uU2VsZWN0Q291bnRyeShjb3VudHJ5OiBDb3VudHJ5KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ291bnRyeS5zZXQoY291bnRyeSk7XHJcbiAgICB0aGlzLnNlYXJjaElucHV0LnNldFZhbHVlKFwiXCIpO1xyXG4gICAgdGhpcy5jbG9zZUNvdW50cnlDb2RlTWVudSgpO1xyXG4gICAgdGhpcy5wcm9wYWdhdGVWYWx1ZShgKyR7dGhpcy5zZWxlY3RlZENvdW50cnkoKS5kYWlsQ29kZX0ke3RoaXMuI2N0cmxDaGFuZ2VzKCl9YCk7XHJcbiAgICB0aGlzLmVtaXRPbkNoYW5nZUV2ZW50KGArJHt0aGlzLnNlbGVjdGVkQ291bnRyeSgpLmRhaWxDb2RlfSR7dGhpcy4jY3RybENoYW5nZXMoKX1gKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBjbG9zZUNvdW50cnlDb2RlTWVudSgpIHtcclxuICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdG9nZ2xlQ291bnRyeUNvZGVNZW51KCkge1xyXG4gICAgdGhpcy5pc09wZW4udXBkYXRlKChpc09wZW46IGJvb2xlYW4pID0+ICFpc09wZW4pO1xyXG4gIH1cclxuXHJcbiAgI3NvcnRDb3VudHJpZXMoKSB7XHJcbiAgICByZXR1cm4gQ09VTlRSSUVTLm1hcCgoY291bnRyeTogQ291bnRyeSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5wcmVmZXJyZWRDb3VudHJpZXMoKS5pbmNsdWRlcyhjb3VudHJ5LmNvZGUpKSB7XHJcbiAgICAgICAgY291bnRyeS5vcmRlciA9IGNvdW50cnkucHJpb3JpdHkgKyAoLTEgKiAodGhpcy5wcmVmZXJyZWRDb3VudHJpZXMoKS5pbmRleE9mKGNvdW50cnkuY29kZSkgLSB0aGlzLnByZWZlcnJlZENvdW50cmllcygpLmxlbmd0aCkpICogMTAwO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjb3VudHJ5O1xyXG4gICAgfSkuc29ydCgoYSwgYikgPT4gYi5vcmRlciAtIGEub3JkZXIpO1xyXG4gIH1cclxuXHJcbiAgI3NlYXJjaEluQ291bnRyaWVzKCk6IENvdW50cnlbXSB7XHJcbiAgICBpZiAodGhpcy4jc2VhcmNoUXVlcnkoKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy4jc29ydENvdW50cmllcygpLmZpbHRlcigoY291bnRyeTogQ291bnRyeSkgPT4ge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICBjb3VudHJ5LmNvZGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLiNzZWFyY2hRdWVyeSgpKVxyXG4gICAgICAgICAgfHwgY291bnRyeS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy4jc2VhcmNoUXVlcnkoKSlcclxuICAgICAgICAgIHx8IGNvdW50cnkuZGFpbENvZGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLiNzZWFyY2hRdWVyeSgpKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuI3NvcnRDb3VudHJpZXMoKTtcclxuICB9XHJcbn1cclxuIiwiPG1hdC1mb3JtLWZpZWxkIGNka092ZXJsYXlPcmlnaW4gI3RyaWdnZXI9XCJjZGtPdmVybGF5T3JpZ2luXCI+XHJcbiAgPGRpdiBjbGFzcz1cImQtaW5saW5lLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xIGNvdW50cnktZmxhZ1wiIG1hdFByZWZpeCAoY2xpY2spPVwidG9nZ2xlQ291bnRyeUNvZGVNZW51KClcIj5cclxuICAgIDxpbWcgbmdTcmM9XCIuL2ZsYWdzL3t7c2VsZWN0ZWRDb3VudHJ5KCkuY29kZX19LnN2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGFsdD1cIlwiIGNsYXNzPVwiY291bnRyeS1mbGFnLS1pbWFnZVwiIFtwcmlvcml0eV09XCJ0cnVlXCI+XHJcbiAgICA8IS0tQGlmIChzZXBhcmF0ZURpYWxDb2RlKCkpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLWRpYWwtY29kZVwiPit7eyBzZWxlY3RlZENvdW50cnkuZGlhbENvZGUgfX08L2Rpdj5cclxuICAgIH0tLT5cclxuICAgIDxkcy1pY29uIGljb249XCJhcnJvdy1kb3duXCIgY2xhc3M9XCJmcy0xMiBmYy1kYXJrLWdyYXlcIj48L2RzLWljb24+XHJcbiAgPC9kaXY+XHJcbiAgPGlucHV0XHJcbiAgICBtYXRJbnB1dFxyXG4gICAgdHlwZT1cInRlbFwiXHJcbiAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgKGJsdXIpPVwibWFya0FzVG91Y2hlZCgpXCJcclxuICAgIChrZXlkb3duKT1cIm9uSW5wdXQoJGV2ZW50KVwiXHJcbiAgICAoaW5wdXQpPVwiZW1pdCgpXCJcclxuICAgIFtmb3JtQ29udHJvbF09XCJjdHJsXCJcclxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcclxuICAgIFtwbGFjZWhvbGRlcl09XCJzZWxlY3RlZENvdW50cnkoKS5wbGFjZWhvbGRlclwiXHJcbiAgLz5cclxuPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcblxyXG48bmctdGVtcGxhdGVcclxuICBjZGtDb25uZWN0ZWRPdmVybGF5XHJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcF09XCJ0cnVlXCJcclxuICAoYmFja2Ryb3BDbGljayk9XCJjbG9zZUNvdW50cnlDb2RlTWVudSgpXCJcclxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheUdyb3dBZnRlck9wZW5dPVwidHJ1ZVwiXHJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlclwiXHJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcGVuXT1cImlzT3BlbigpXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJjb3VudHJ5LWRyb3Bkb3duIGJjLXdoaXRlIGJveC1zaGFkb3cgcC0yXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWNvbnRhaW5lclwiPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPGlucHV0IG1hdElucHV0IGlkPVwiY291bnRyeS1zZWFyY2gtYm94XCIgW2Zvcm1Db250cm9sXT1cInNlYXJjaElucHV0XCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiLz5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPHVsIGNsYXNzPVwiY291bnRyeS1saXN0XCI+XHJcbiAgICAgIEBmb3IgKGNvdW50cnkgb2YgZmlsdGVyZWRDb3VudHJpZXMoKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgPGxpXHJcbiAgICAgICAgICAjY291bnRyeUVsXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJjb3VudHJ5Lm9yZGVyID4gMSA/ICdwcmVmZXJyZWRDb3VudHknICA6ICcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBjdXJzb3ItcG9pbnRlciBwLTJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0Q291bnRyeShjb3VudHJ5KVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgQGRlZmVyIChvbiB2aWV3cG9ydChjb3VudHJ5RWwpKSB7XHJcbiAgICAgICAgICAgIDxpbWcgbmdTcmM9XCIuL2ZsYWdzL3t7Y291bnRyeS5jb2RlfX0uc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgYWx0PVwiXCIgY2xhc3M9XCJjb3VudHJ5LWZsYWctLWltYWdlXCI+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTEyIGZjLWJsYWNrXCI+e3sgY291bnRyeS5uYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xMiBmYy1kYXJrLWdyYXlcIj4re3sgY291bnRyeS5kYWlsQ29kZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICB9XHJcbiAgICA8L3VsPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { Injectable } from "@angular/core";
|
|
2
|
-
import { PhoneNumberFormat, PhoneNumberUtil } from "google-libphonenumber";
|
|
3
|
-
import { COUNTRIES } from "./COUNTRIES";
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class PhoneService {
|
|
6
|
-
#phoneUtil = PhoneNumberUtil.getInstance();
|
|
7
|
-
parse(phoneNumber, countryCode) {
|
|
8
|
-
let number = undefined;
|
|
9
|
-
try {
|
|
10
|
-
number = this.#phoneUtil.parse(phoneNumber, countryCode);
|
|
11
|
-
}
|
|
12
|
-
catch (e) { }
|
|
13
|
-
return number;
|
|
14
|
-
}
|
|
15
|
-
getPhoneNumberObject(number) {
|
|
16
|
-
const parsedNumber = this.parse(number);
|
|
17
|
-
if (parsedNumber) {
|
|
18
|
-
const dailCode = this.#getCountryDailCode(parsedNumber);
|
|
19
|
-
const code = this.getCountryIsoCode(dailCode, parsedNumber);
|
|
20
|
-
const nationalNumber = parsedNumber.getNationalNumberOrDefault().toString();
|
|
21
|
-
const internationalNumber = this.format(number, code, PhoneNumberFormat.E164);
|
|
22
|
-
const placeholder = this.getPlaceholder(code);
|
|
23
|
-
const name = this.getCountryByDailCode(dailCode, parsedNumber)?.name ?? "";
|
|
24
|
-
return { dailCode, code, nationalNumber, internationalNumber, placeholder, name, priority: 0, order: 0 };
|
|
25
|
-
}
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
format(phoneNumber, countryCode, numberFormat) {
|
|
29
|
-
const number = this.parse(phoneNumber, countryCode);
|
|
30
|
-
if (number) {
|
|
31
|
-
return this.#phoneUtil.format(number, numberFormat);
|
|
32
|
-
}
|
|
33
|
-
return "";
|
|
34
|
-
}
|
|
35
|
-
validate(number) {
|
|
36
|
-
let isValid;
|
|
37
|
-
try {
|
|
38
|
-
// 1 for mobile. for more https://libphonenumbers.js.org/docs/getNumberType/
|
|
39
|
-
if (this.#phoneUtil.getNumberType(this.#phoneUtil.parseAndKeepRawInput(number)) !== 1) {
|
|
40
|
-
isValid = false;
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
isValid = this.#phoneUtil.isValidNumber(this.#phoneUtil.parseAndKeepRawInput(number));
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
catch (e) {
|
|
47
|
-
isValid = false;
|
|
48
|
-
}
|
|
49
|
-
return isValid;
|
|
50
|
-
}
|
|
51
|
-
getPlaceholder(countryCode) {
|
|
52
|
-
// @ts-ignore
|
|
53
|
-
return this.#phoneUtil.getMetadataForRegion(countryCode).values_[3][6];
|
|
54
|
-
}
|
|
55
|
-
getCountryIsoCode(dailCode, number) {
|
|
56
|
-
return this.getCountryByDailCode(dailCode, number)?.code ?? "";
|
|
57
|
-
}
|
|
58
|
-
getCountryByDailCode(dailCode, number) {
|
|
59
|
-
// Will use this to match area code from the first numbers
|
|
60
|
-
const rawNumber = this.#getPhoneNumberValues(number)["2"].toString();
|
|
61
|
-
// List of all countries with dailCode (can be more than one. e.x. US, CA, DO, PR all have +1 dailCode)
|
|
62
|
-
const countries = COUNTRIES.filter((c) => c.dailCode === dailCode?.toString());
|
|
63
|
-
// Main country is the country, which has no areaCodes specified in country-code.ts file.
|
|
64
|
-
const mainCountry = countries.find((c) => c.areaCodes === undefined);
|
|
65
|
-
// Secondary countries are all countries, which have areaCodes specified in country-code.ts file.
|
|
66
|
-
const secondaryCountries = countries.filter((c) => c.areaCodes !== undefined);
|
|
67
|
-
let matchedCountry = mainCountry ? mainCountry : undefined;
|
|
68
|
-
/*
|
|
69
|
-
Iterate over each secondary country and check if nationalNumber starts with any of areaCodes available.
|
|
70
|
-
If no matches found, fallback to the main country.
|
|
71
|
-
*/
|
|
72
|
-
secondaryCountries.forEach((country) => {
|
|
73
|
-
if (country && country.areaCodes) {
|
|
74
|
-
country.areaCodes.forEach((areaCode) => {
|
|
75
|
-
if (rawNumber.startsWith(areaCode)) {
|
|
76
|
-
matchedCountry = country;
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
return matchedCountry;
|
|
82
|
-
}
|
|
83
|
-
#getCountryDailCode(number) {
|
|
84
|
-
return this.#getPhoneNumberValues(number)?.["1"].toString() ?? "";
|
|
85
|
-
}
|
|
86
|
-
#getPhoneNumberValues(number) {
|
|
87
|
-
// @ts-ignore
|
|
88
|
-
return number?.["values_"];
|
|
89
|
-
}
|
|
90
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PhoneService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
91
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PhoneService, providedIn: "root" }); }
|
|
92
|
-
}
|
|
93
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PhoneService, decorators: [{
|
|
94
|
-
type: Injectable,
|
|
95
|
-
args: [{
|
|
96
|
-
providedIn: "root"
|
|
97
|
-
}]
|
|
98
|
-
}] });
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lzcy1jdHJsL3NyYy9jb21wb25lbnRzL21vYmlsZS9waG9uZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFjLGlCQUFpQixFQUFFLGVBQWUsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3RGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxhQUFhLENBQUM7O0FBT3RDLE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFVBQVUsR0FBb0IsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRTVELEtBQUssQ0FBQyxXQUFtQixFQUFFLFdBQWtCO1FBQzNDLElBQUksTUFBTSxHQUE0QixTQUFTLENBQUM7UUFDaEQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUM7UUFDZCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsb0JBQW9CLENBQUMsTUFBYztRQUNqQyxNQUFNLFlBQVksR0FBNEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRSxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLE1BQU0sUUFBUSxHQUFXLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNoRSxNQUFNLElBQUksR0FBUyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBUyxDQUFDO1lBQzFFLE1BQU0sY0FBYyxHQUFXLFlBQVksQ0FBQywwQkFBMEIsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BGLE1BQU0sbUJB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LENBQUMsQ0FBQztRQUNsRyxJQUFJLGNBQWMsR0FBd0IsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUVoRjs7O1VBR0U7UUFDRixrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNyQyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2pDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7b0JBQ3JDLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO3dCQUNuQyxjQUFjLEdBQUcsT0FBTyxDQUFDO29CQUMzQixDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVELG1CQUFtQixDQUFDLE1BQW1CO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3BFLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxNQUFtQjtRQUN2QyxhQUFhO1FBQ2IsT0FBTyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3QixDQUFDOzhHQS9GVSxZQUFZO2tIQUFaLFlBQVksY0FGWCxNQUFNOzsyRkFFUCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtJU08yfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9pc28yLmludGVyZmFjZVwiO1xyXG5pbXBvcnQge1Bob25lTnVtYmVyLCBQaG9uZU51bWJlckZvcm1hdCwgUGhvbmVOdW1iZXJVdGlsfSBmcm9tIFwiZ29vZ2xlLWxpYnBob25lbnVtYmVyXCI7XHJcbmltcG9ydCB7Q09VTlRSSUVTfSBmcm9tIFwiLi9DT1VOVFJJRVNcIjtcclxuaW1wb3J0IHtDb3VudHJ5fSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9jb3VudHJ5LmludGVyZmFjZVwiO1xyXG5pbXBvcnQge01vYmlsZX0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvbW9iaWxlLmludGVyZmFjZVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQaG9uZVNlcnZpY2Uge1xyXG4gICNwaG9uZVV0aWw6IFBob25lTnVtYmVyVXRpbCA9IFBob25lTnVtYmVyVXRpbC5nZXRJbnN0YW5jZSgpO1xyXG5cclxuICBwYXJzZShwaG9uZU51bWJlcjogc3RyaW5nLCBjb3VudHJ5Q29kZT86IElTTzIpOiBQaG9uZU51bWJlciB8IHVuZGVmaW5lZCB7XHJcbiAgICBsZXQgbnVtYmVyOiBQaG9uZU51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICAgIHRyeSB7XHJcbiAgICAgIG51bWJlciA9IHRoaXMuI3Bob25lVXRpbC5wYXJzZShwaG9uZU51bWJlciwgY291bnRyeUNvZGUpO1xyXG4gICAgfSBjYXRjaCAoZSkge31cclxuICAgIHJldHVybiBudW1iZXI7XHJcbiAgfVxyXG5cclxuICBnZXRQaG9uZU51bWJlck9iamVjdChudW1iZXI6IHN0cmluZyk6IE1vYmlsZSB8IHVuZGVmaW5lZCB7XHJcbiAgICBjb25zdCBwYXJzZWROdW1iZXI6IFBob25lTnVtYmVyIHwgdW5kZWZpbmVkID0gdGhpcy5wYXJzZShudW1iZXIpO1xyXG4gICAgaWYgKHBhcnNlZE51bWJlcikge1xyXG4gICAgICBjb25zdCBkYWlsQ29kZTogc3RyaW5nID0gdGhpcy4jZ2V0Q291bnRyeURhaWxDb2RlKHBhcnNlZE51bWJlcik7XHJcbiAgICAgIGNvbnN0IGNvZGU6IElTTzIgPSB0aGlzLmdldENvdW50cnlJc29Db2RlKGRhaWxDb2RlLCBwYXJzZWROdW1iZXIpIGFzIElTTzI7XHJcbiAgICAgIGNvbnN0IG5hdGlvbmFsTnVtYmVyOiBzdHJpbmcgPSBwYXJzZWROdW1iZXIuZ2V0TmF0aW9uYWxOdW1iZXJPckRlZmF1bHQoKS50b1N0cmluZygpO1xyXG4gICAgICBjb25zdCBpbnRlcm5hdGlvbmFsTnVtYmVyOiBzdHJpbmcgPSB0aGlzLmZvcm1hdChudW1iZXIsIGNvZGUsIFBob25lTnVtYmVyRm9ybWF0LkUxNjQpO1xyXG4gICAgICBjb25zdCBwbGFjZWhvbGRlciA9IHRoaXMuZ2V0UGxhY2Vob2xkZXIoY29kZSk7XHJcbiAgICAgIGNvbnN0IG5hbWU6IHN0cmluZyA9IHRoaXMuZ2V0Q291bnRyeUJ5RGFpbENvZGUoZGFpbENvZGUsIHBhcnNlZE51bWJlcik/Lm5hbWUgPz8gXCJcIjtcclxuICAgICAgcmV0dXJuIHtkYWlsQ29kZSwgY29kZSwgbmF0aW9uYWxOdW1iZXIsIGludGVybmF0aW9uYWxOdW1iZXIsIHBsYWNlaG9sZGVyLCBuYW1lLCBwcmlvcml0eTogMCwgb3JkZXI6IDB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGZvcm1hdChwaG9uZU51bWJlcjogc3RyaW5nLCBjb3VudHJ5Q29kZTogSVNPMiwgbnVtYmVyRm9ybWF0OiBQaG9uZU51bWJlckZvcm1hdCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBudW1iZXIgPSB0aGlzLnBhcnNlKHBob25lTnVtYmVyLCBjb3VudHJ5Q29kZSk7XHJcblxyXG4gICAgaWYgKG51bWJlcikge1xyXG4gICAgICByZXR1cm4gdGhpcy4jcGhvbmVVdGlsLmZvcm1hdChudW1iZXIsIG51bWJlckZvcm1hdCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlKG51bWJlcjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgaXNWYWxpZDogYm9vbGVhbjtcclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIDEgZm9yIG1vYmlsZS4gZm9yIG1vcmUgaHR0cHM6Ly9saWJwaG9uZW51bWJlcnMuanMub3JnL2RvY3MvZ2V0TnVtYmVyVHlwZS9cclxuICAgICAgaWYgKHRoaXMuI3Bob25lVXRpbC5nZXROdW1iZXJUeXBlKHRoaXMuI3Bob25lVXRpbC5wYXJzZUFuZEtlZXBSYXdJbnB1dChudW1iZXIpKSAhPT0gMSkge1xyXG4gICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpc1ZhbGlkID0gdGhpcy4jcGhvbmVVdGlsLmlzVmFsaWROdW1iZXIodGhpcy4jcGhvbmVVdGlsLnBhcnNlQW5kS2VlcFJhd0lucHV0KG51bWJlcikpO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaXNWYWxpZDtcclxuICB9XHJcblxyXG4gIGdldFBsYWNlaG9sZGVyKGNvdW50cnlDb2RlOiBJU08yKSB7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICByZXR1cm4gdGhpcy4jcGhvbmVVdGlsLmdldE1ldGFkYXRhRm9yUmVnaW9uKGNvdW50cnlDb2RlKS52YWx1ZXNfWzNdWzZdO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q291bnRyeUlzb0NvZGUoZGFpbENvZGU6IHN0cmluZywgbnVtYmVyOiBQaG9uZU51bWJlcik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDb3VudHJ5QnlEYWlsQ29kZShkYWlsQ29kZSwgbnVtYmVyKT8uY29kZSA/PyBcIlwiO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q291bnRyeUJ5RGFpbENvZGUoZGFpbENvZGU6IHN0cmluZyB8IHVuZGVmaW5lZCwgbnVtYmVyOiBQaG9uZU51bWJlcik6IENvdW50cnkgfCB1bmRlZmluZWQge1xyXG4gICAgLy8gV2lsbCB1c2UgdGhpcyB0byBtYXRjaCBhcmVhIGNvZGUgZnJvbSB0aGUgZmlyc3QgbnVtYmVyc1xyXG4gICAgY29uc3QgcmF3TnVtYmVyID0gdGhpcy4jZ2V0UGhvbmVOdW1iZXJWYWx1ZXMobnVtYmVyKVtcIjJcIl0udG9TdHJpbmcoKTtcclxuICAgIC8vIExpc3Qgb2YgYWxsIGNvdW50cmllcyB3aXRoIGRhaWxDb2RlIChjYW4gYmUgbW9yZSB0aGFuIG9uZS4gZS54LiBVUywgQ0EsIERPLCBQUiBhbGwgaGF2ZSArMSBkYWlsQ29kZSlcclxuICAgIGNvbnN0IGNvdW50cmllczogQ291bnRyeVtdID0gQ09VTlRSSUVTLmZpbHRlcigoYzogQ291bnRyeSkgPT4gYy5kYWlsQ29kZSA9PT0gZGFpbENvZGU/LnRvU3RyaW5nKCkpO1xyXG4gICAgLy8gTWFpbiBjb3VudHJ5IGlzIHRoZSBjb3VudHJ5LCB3aGljaCBoYXMgbm8gYXJlYUNvZGVzIHNwZWNpZmllZCBpbiBjb3VudHJ5LWNvZGUudHMgZmlsZS5cclxuICAgIGNvbnN0IG1haW5Db3VudHJ5OiBDb3VudHJ5IHwgdW5kZWZpbmVkID0gY291bnRyaWVzLmZpbmQoKGM6IENvdW50cnkpID0+IGMuYXJlYUNvZGVzID09PSB1bmRlZmluZWQpO1xyXG4gICAgLy8gU2Vjb25kYXJ5IGNvdW50cmllcyBhcmUgYWxsIGNvdW50cmllcywgd2hpY2ggaGF2ZSBhcmVhQ29kZXMgc3BlY2lmaWVkIGluIGNvdW50cnktY29kZS50cyBmaWxlLlxyXG4gICAgY29uc3Qgc2Vjb25kYXJ5Q291bnRyaWVzOiBDb3VudHJ5W10gPSBjb3VudHJpZXMuZmlsdGVyKChjOiBDb3VudHJ5KSA9PiBjLmFyZWFDb2RlcyAhPT0gdW5kZWZpbmVkKTtcclxuICAgIGxldCBtYXRjaGVkQ291bnRyeTogQ291bnRyeSB8IHVuZGVmaW5lZCA9IG1haW5Db3VudHJ5ID8gbWFpbkNvdW50cnkgOiB1bmRlZmluZWQ7XHJcblxyXG4gICAgLypcclxuICAgICAgSXRlcmF0ZSBvdmVyIGVhY2ggc2Vjb25kYXJ5IGNvdW50cnkgYW5kIGNoZWNrIGlmIG5hdGlvbmFsTnVtYmVyIHN0YXJ0cyB3aXRoIGFueSBvZiBhcmVhQ29kZXMgYXZhaWxhYmxlLlxyXG4gICAgICBJZiBubyBtYXRjaGVzIGZvdW5kLCBmYWxsYmFjayB0byB0aGUgbWFpbiBjb3VudHJ5LlxyXG4gICAgKi9cclxuICAgIHNlY29uZGFyeUNvdW50cmllcy5mb3JFYWNoKChjb3VudHJ5KSA9PiB7XHJcbiAgICAgIGlmIChjb3VudHJ5ICYmIGNvdW50cnkuYXJlYUNvZGVzKSB7XHJcbiAgICAgICAgY291bnRyeS5hcmVhQ29kZXMuZm9yRWFjaCgoYXJlYUNvZGUpID0+IHtcclxuICAgICAgICAgIGlmIChyYXdOdW1iZXIuc3RhcnRzV2l0aChhcmVhQ29kZSkpIHtcclxuICAgICAgICAgICAgbWF0Y2hlZENvdW50cnkgPSBjb3VudHJ5O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gbWF0Y2hlZENvdW50cnk7XHJcbiAgfVxyXG5cclxuICAjZ2V0Q291bnRyeURhaWxDb2RlKG51bWJlcjogUGhvbmVOdW1iZXIpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuI2dldFBob25lTnVtYmVyVmFsdWVzKG51bWJlcik/LltcIjFcIl0udG9TdHJpbmcoKSA/PyBcIlwiO1xyXG4gIH1cclxuXHJcbiAgI2dldFBob25lTnVtYmVyVmFsdWVzKG51bWJlcjogUGhvbmVOdW1iZXIpIHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHJldHVybiBudW1iZXI/LltcInZhbHVlc19cIl07XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Component } from "@angular/core";
|
|
2
|
-
import { BaseCtrl } from "../base-ctrl";
|
|
3
|
-
import { NG_VALUE_ACCESSOR } from "@angular/forms";
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class NoteComponent extends BaseCtrl {
|
|
6
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NoteComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
7
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: NoteComponent, isStandalone: true, selector: "iss-ctrl-note", providers: [
|
|
8
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting: NoteComponent, multi: true }
|
|
9
|
-
], usesInheritance: true, ngImport: i0, template: "<p>note works!</p>\r\n", styles: [""] }); }
|
|
10
|
-
}
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NoteComponent, decorators: [{
|
|
12
|
-
type: Component,
|
|
13
|
-
args: [{ selector: "iss-ctrl-note", standalone: true, imports: [], providers: [
|
|
14
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting: NoteComponent, multi: true }
|
|
15
|
-
], template: "<p>note works!</p>\r\n" }]
|
|
16
|
-
}] });
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pc3MtY3RybC9zcmMvY29tcG9uZW50cy9ub3RlL25vdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvbm90ZS9ub3RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFZakQsTUFBTSxPQUFPLGFBQWMsU0FBUSxRQUFROzhHQUE5QixhQUFhO2tHQUFiLGFBQWEsNERBSmI7WUFDVCxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7U0FDdEUsaURDWkgsd0JBQ0E7OzJGRGFhLGFBQWE7a0JBVnpCLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUCxFQUFFLGFBR0E7d0JBQ1QsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxlQUFlLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQztxQkFDdEUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtCYXNlQ3RybH0gZnJvbSBcIi4uL2Jhc2UtY3RybFwiO1xyXG5pbXBvcnQge05HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImlzcy1jdHJsLW5vdGVcIixcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtdLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vbm90ZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vbm90ZS5jb21wb25lbnQuc2Nzc1wiLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge3Byb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogTm90ZUNvbXBvbmVudCwgbXVsdGk6IHRydWV9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTm90ZUNvbXBvbmVudCBleHRlbmRzIEJhc2VDdHJsIHtcclxuXHJcbn1cclxuIiwiPHA+bm90ZSB3b3JrcyE8L3A+XHJcbiJdfQ==
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { Component, computed, effect } from "@angular/core";
|
|
2
|
-
import { FormArray, FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule } from "@angular/forms";
|
|
3
|
-
import { BaseCtrl } from "../base-ctrl";
|
|
4
|
-
import { MatFormField } from "@angular/material/form-field";
|
|
5
|
-
import { MatInput } from "@angular/material/input";
|
|
6
|
-
import { MatOption, MatSelect } from "@angular/material/select";
|
|
7
|
-
import { NgTemplateOutlet } from "@angular/common";
|
|
8
|
-
import { toSignal } from "@angular/core/rxjs-interop";
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@angular/forms";
|
|
11
|
-
export class PlateNumberComponent extends BaseCtrl {
|
|
12
|
-
constructor() {
|
|
13
|
-
super(...arguments);
|
|
14
|
-
this.plate = new FormGroup({
|
|
15
|
-
numbers: new FormArray([
|
|
16
|
-
new FormControl(null),
|
|
17
|
-
new FormControl(null),
|
|
18
|
-
new FormControl(null),
|
|
19
|
-
new FormControl(null),
|
|
20
|
-
]),
|
|
21
|
-
letters: new FormArray([
|
|
22
|
-
new FormControl(null),
|
|
23
|
-
new FormControl(null),
|
|
24
|
-
new FormControl(null),
|
|
25
|
-
]),
|
|
26
|
-
});
|
|
27
|
-
this.options = [
|
|
28
|
-
{ label: "A/أ", value: "A" },
|
|
29
|
-
{ label: "B/ب", value: "B" },
|
|
30
|
-
{ label: "J/ح", value: "J" },
|
|
31
|
-
{ label: "D/د", value: "D" },
|
|
32
|
-
{ label: "R/ر", value: "R" },
|
|
33
|
-
{ label: "S/س", value: "S" },
|
|
34
|
-
{ label: "X/ص", value: "X" },
|
|
35
|
-
{ label: "T/ط", value: "T" },
|
|
36
|
-
{ label: "E/ع", value: "E" },
|
|
37
|
-
{ label: "G/ق", value: "G" },
|
|
38
|
-
{ label: "K/ك", value: "K" },
|
|
39
|
-
{ label: "L/ل", value: "L" },
|
|
40
|
-
{ label: "Z/م", value: "Z" },
|
|
41
|
-
{ label: "N/ن", value: "N" },
|
|
42
|
-
{ label: "H/هـ", value: "H" },
|
|
43
|
-
{ label: "U/و", value: "U" },
|
|
44
|
-
{ label: "V/ي", value: "V" }
|
|
45
|
-
];
|
|
46
|
-
this.#plateChanges = toSignal(this.plate.valueChanges);
|
|
47
|
-
this.#lettersArr = computed(() => this.#plateChanges()["letters"].filter((l) => l));
|
|
48
|
-
this.#letters = computed(() => this.#lettersArr().join(""));
|
|
49
|
-
this.#numbersArr = computed(() => this.#plateChanges()["numbers"].filter((l) => l));
|
|
50
|
-
this.#numbers = computed(() => this.#numbersArr().join(""));
|
|
51
|
-
this.#plateHasValue = computed(() => !!(this.#letters().length && this.#numbers().length));
|
|
52
|
-
this.#effectRef = effect(() => {
|
|
53
|
-
if (this.#plateChanges()) {
|
|
54
|
-
this.propagateValue(this.#getEmissionValue());
|
|
55
|
-
this.emitOnChangeEvent({ letters: this.#lettersArr(), numbers: this.#numbersArr() });
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
#plateChanges;
|
|
60
|
-
#lettersArr;
|
|
61
|
-
#letters;
|
|
62
|
-
#numbersArr;
|
|
63
|
-
#numbers;
|
|
64
|
-
#plateHasValue;
|
|
65
|
-
#effectRef;
|
|
66
|
-
get letterControls() {
|
|
67
|
-
return this.plate.controls["letters"].controls;
|
|
68
|
-
}
|
|
69
|
-
get numberControls() {
|
|
70
|
-
return this.plate.controls["numbers"].controls;
|
|
71
|
-
}
|
|
72
|
-
writeValue(value) {
|
|
73
|
-
let processedValue = this.#splitPlateValues(value);
|
|
74
|
-
if (processedValue) {
|
|
75
|
-
this.plate.patchValue(processedValue);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
ngOnDestroy() {
|
|
79
|
-
this.#effectRef.destroy();
|
|
80
|
-
}
|
|
81
|
-
#getEmissionValue() {
|
|
82
|
-
if (this.#plateHasValue()) {
|
|
83
|
-
return `${this.#letters()}-${this.#numbers()}`;
|
|
84
|
-
}
|
|
85
|
-
return null;
|
|
86
|
-
}
|
|
87
|
-
#splitPlateValues(value) {
|
|
88
|
-
if (value) {
|
|
89
|
-
let lettersAndNumbers = value.split("-");
|
|
90
|
-
let letters = lettersAndNumbers[0].split("");
|
|
91
|
-
let numbers = lettersAndNumbers[1].split("");
|
|
92
|
-
return { letters, numbers };
|
|
93
|
-
}
|
|
94
|
-
return null;
|
|
95
|
-
}
|
|
96
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PlateNumberComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
97
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: PlateNumberComponent, isStandalone: true, selector: "iss-ctrl-plate-number", providers: [
|
|
98
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting: PlateNumberComponent, multi: true }
|
|
99
|
-
], usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"plate\">\r\n <div class=\"row mb-4\">\r\n <ng-container formArrayName=\"numbers\">\r\n @for (item of numberControls; track $index) {\r\n <div class=\"col-sm-3\">\r\n <mat-form-field class=\"mat-form-field-number\">\r\n <input\r\n type=\"number\"\r\n matInput\r\n [formControlName]=\"$index\"\r\n maxlength=\"1\"\r\n placeholder=\"\"\r\n oninput=\"if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n }\r\n </ng-container>\r\n </div>\r\n <div class=\"row mb-4\">\r\n <ng-container formArrayName=\"letters\">\r\n @for (el of letterControls; track $index) {\r\n <div class=\"col-sm-4\">\r\n <mat-form-field class=\"mat-form-field-number\">\r\n <mat-select disableOptionCentering [formControlName]=\"$index\">\r\n @for (option of options; track option.value) {\r\n <mat-option [value]=\"option.value\">{{ option.label }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n }\r\n </ng-container>\r\n </div>\r\n <!--<div class=\"row mb-4\">\r\n <div class=\"col-12\">\r\n <ng-container *ngTemplateOutlet=\"plateElement\"></ng-container>\r\n </div>\r\n </div>-->\r\n</div>\r\n\r\n\r\n<!--<ng-template #plateElement>\r\n <div class=\"plate d-inline-flex align-items-stretch justify-content-between fs-18\">\r\n <div class=\"d-flex flex-column border-right w-100\">\r\n <div class=\"ARPlate border-bottom d-flex h-50 w-100\">\r\n <div class=\"fc-black border-right w-50 d-flex align-items-center justify-content-center gap-1\">\r\n <span>{{ number1 | arabicNumbers }}</span>\r\n <span>{{ number2 | arabicNumbers }}</span>\r\n <span>{{ number3 | arabicNumbers }}</span>\r\n <span>{{ number4 | arabicNumbers }}</span>\r\n </div>\r\n <span class=\"fw-medium fc-black w-50 d-flex align-items-center justify-content-center\">\r\n <span>{{ letter1Ar }}</span> <span class=\"m-1\">{{ letter2Ar }}</span> <span>{{ letter3Ar }}</span>\r\n </span>\r\n </div>\r\n <div class=\"ENPlate d-flex h-50 w-100\">\r\n <span class=\"fc-black border-right w-50 d-flex align-items-center justify-content-center\">\r\n {{ number1 === null || number1 === undefined ? '' : number1 }}\r\n {{ number2 === null || number2 === undefined ? '' : number2 }}\r\n {{ number3 === null || number3 === undefined ? '' : number3 }}\r\n {{ number4 === null || number4 === undefined ? '' : number4 }}\r\n </span>\r\n <span class=\"fw-medium fc-black w-50 d-flex align-items-center justify-content-center\">\r\n {{ letter1En.toUpperCase() + ' ' + letter2En.toUpperCase() + ' ' + letter3En.toUpperCase() }}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-column gap-2 justify-content-center px-2 align-items-center\">\r\n <img src=\"assets/images/ksa-symbol.svg\" alt=\"\"/>\r\n\r\n <span class=\"fw-medium fs-12 line-height-1-2\">K<br/>S<br/>A</span>\r\n <svg width=\"9\" height=\"9\" viewBox=\"0 0 9 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle cx=\"4.49162\" cy=\"4.06193\" r=\"3.99162\" fill=\"#1D252D\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n</ng-template>-->\r\n", styles: [""], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }] }); }
|
|
100
|
-
}
|
|
101
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PlateNumberComponent, decorators: [{
|
|
102
|
-
type: Component,
|
|
103
|
-
args: [{ selector: "iss-ctrl-plate-number", standalone: true, imports: [
|
|
104
|
-
MatFormField,
|
|
105
|
-
ReactiveFormsModule,
|
|
106
|
-
MatInput,
|
|
107
|
-
MatSelect,
|
|
108
|
-
MatOption,
|
|
109
|
-
NgTemplateOutlet
|
|
110
|
-
], providers: [
|
|
111
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting: PlateNumberComponent, multi: true }
|
|
112
|
-
], template: "<div [formGroup]=\"plate\">\r\n <div class=\"row mb-4\">\r\n <ng-container formArrayName=\"numbers\">\r\n @for (item of numberControls; track $index) {\r\n <div class=\"col-sm-3\">\r\n <mat-form-field class=\"mat-form-field-number\">\r\n <input\r\n type=\"number\"\r\n matInput\r\n [formControlName]=\"$index\"\r\n maxlength=\"1\"\r\n placeholder=\"\"\r\n oninput=\"if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n }\r\n </ng-container>\r\n </div>\r\n <div class=\"row mb-4\">\r\n <ng-container formArrayName=\"letters\">\r\n @for (el of letterControls; track $index) {\r\n <div class=\"col-sm-4\">\r\n <mat-form-field class=\"mat-form-field-number\">\r\n <mat-select disableOptionCentering [formControlName]=\"$index\">\r\n @for (option of options; track option.value) {\r\n <mat-option [value]=\"option.value\">{{ option.label }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n }\r\n </ng-container>\r\n </div>\r\n <!--<div class=\"row mb-4\">\r\n <div class=\"col-12\">\r\n <ng-container *ngTemplateOutlet=\"plateElement\"></ng-container>\r\n </div>\r\n </div>-->\r\n</div>\r\n\r\n\r\n<!--<ng-template #plateElement>\r\n <div class=\"plate d-inline-flex align-items-stretch justify-content-between fs-18\">\r\n <div class=\"d-flex flex-column border-right w-100\">\r\n <div class=\"ARPlate border-bottom d-flex h-50 w-100\">\r\n <div class=\"fc-black border-right w-50 d-flex align-items-center justify-content-center gap-1\">\r\n <span>{{ number1 | arabicNumbers }}</span>\r\n <span>{{ number2 | arabicNumbers }}</span>\r\n <span>{{ number3 | arabicNumbers }}</span>\r\n <span>{{ number4 | arabicNumbers }}</span>\r\n </div>\r\n <span class=\"fw-medium fc-black w-50 d-flex align-items-center justify-content-center\">\r\n <span>{{ letter1Ar }}</span> <span class=\"m-1\">{{ letter2Ar }}</span> <span>{{ letter3Ar }}</span>\r\n </span>\r\n </div>\r\n <div class=\"ENPlate d-flex h-50 w-100\">\r\n <span class=\"fc-black border-right w-50 d-flex align-items-center justify-content-center\">\r\n {{ number1 === null || number1 === undefined ? '' : number1 }}\r\n {{ number2 === null || number2 === undefined ? '' : number2 }}\r\n {{ number3 === null || number3 === undefined ? '' : number3 }}\r\n {{ number4 === null || number4 === undefined ? '' : number4 }}\r\n </span>\r\n <span class=\"fw-medium fc-black w-50 d-flex align-items-center justify-content-center\">\r\n {{ letter1En.toUpperCase() + ' ' + letter2En.toUpperCase() + ' ' + letter3En.toUpperCase() }}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-column gap-2 justify-content-center px-2 align-items-center\">\r\n <img src=\"assets/images/ksa-symbol.svg\" alt=\"\"/>\r\n\r\n <span class=\"fw-medium fs-12 line-height-1-2\">K<br/>S<br/>A</span>\r\n <svg width=\"9\" height=\"9\" viewBox=\"0 0 9 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle cx=\"4.49162\" cy=\"4.06193\" r=\"3.99162\" fill=\"#1D252D\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n</ng-template>-->\r\n" }]
|
|
113
|
-
}] });
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGUtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lzcy1jdHJsL3NyYy9jb21wb25lbnRzL3BsYXRlLW51bWJlci9wbGF0ZS1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvcGxhdGUtbnVtYmVyL3BsYXRlLW51bWJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQStCLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pHLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzFELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzlELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBb0JwRCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsUUFBUTtJQWpCbEQ7O1FBa0JZLFVBQUssR0FBYyxJQUFJLFNBQVMsQ0FBQztZQUN6QyxPQUFPLEVBQUUsSUFBSSxTQUFTLENBQUM7Z0JBQ3JCLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQztnQkFDckIsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDO2dCQUNyQixJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUM7Z0JB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QUFDO1FBQ2pELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFvQjtRQUNwQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsSUFBSSxpQkFBaUIsR0FBYSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25ELElBQUksT0FBTyxHQUFhLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2RCxJQUFJLE9BQU8sR0FBYSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdkQsT0FBTyxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUMsQ0FBQztRQUM1QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzhHQWhGVSxvQkFBb0I7a0dBQXBCLG9CQUFvQixvRUFKcEI7WUFDVCxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQztTQUM3RSxpREN6QkgsMCtHQThFQSwwRERoRUksWUFBWSwyTEFDWixtQkFBbUIsZ3hDQUNuQixRQUFRLGlVQUNSLFNBQVMsd2VBQ1QsU0FBUzs7MkZBU0Esb0JBQW9CO2tCQWpCaEMsU0FBUzsrQkFDRSx1QkFBdUIsY0FDckIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixRQUFRO3dCQUNSLFNBQVM7d0JBQ1QsU0FBUzt3QkFDVCxnQkFBZ0I7cUJBQ2pCLGFBR1U7d0JBQ1QsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDO3FCQUM3RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBFZmZlY3RSZWYsIE9uRGVzdHJveSwgU2lnbmFsfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0Zvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgTkdfVkFMVUVfQUNDRVNTT1IsIFJlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge0Jhc2VDdHJsfSBmcm9tIFwiLi4vYmFzZS1jdHJsXCI7XHJcbmltcG9ydCB7TWF0Rm9ybUZpZWxkfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xyXG5pbXBvcnQge01hdElucHV0fSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcclxuaW1wb3J0IHtNYXRPcHRpb24sIE1hdFNlbGVjdH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NlbGVjdFwiO1xyXG5pbXBvcnQge05nVGVtcGxhdGVPdXRsZXR9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHt0b1NpZ25hbH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XHJcbmltcG9ydCB7T3B0aW9ufSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9vcHRpb24uaW50ZXJmYWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJpc3MtY3RybC1wbGF0ZS1udW1iZXJcIixcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE1hdEZvcm1GaWVsZCxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRJbnB1dCxcclxuICAgIE1hdFNlbGVjdCxcclxuICAgIE1hdE9wdGlvbixcclxuICAgIE5nVGVtcGxhdGVPdXRsZXRcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vcGxhdGUtbnVtYmVyLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9wbGF0ZS1udW1iZXIuY29tcG9uZW50LnNjc3NcIixcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IFBsYXRlTnVtYmVyQ29tcG9uZW50LCBtdWx0aTogdHJ1ZX1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQbGF0ZU51bWJlckNvbXBvbmVudCBleHRlbmRzIEJhc2VDdHJsIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBwcm90ZWN0ZWQgcGxhdGU6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgbnVtYmVyczogbmV3IEZvcm1BcnJheShbXHJcbiAgICAgIG5ldyBGb3JtQ29udHJvbChudWxsKSxcclxuICAgICAgbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgICBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcbiAgICAgIG5ldyBGb3JtQ29udHJvbChudWxsKSxcclxuICAgIF0pLFxyXG4gICAgbGV0dGVyczogbmV3IEZvcm1BcnJheShbXHJcbiAgICAgIG5ldyBGb3JtQ29udHJvbChudWxsKSxcclxuICAgICAgbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgICBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcbiAgICBdKSxcclxuICB9KTtcclxuICBwcm90ZWN0ZWQgb3B0aW9uczogT3B0aW9uW10gPSBbXHJcbiAgICB7bGFiZWw6IFwiQS/Yo1wiLCB2YWx1ZTogXCJBXCJ9LFxyXG4gICAge2xhYmVsOiBcIkIv2KhcIiwgdmFsdWU6IFwiQlwifSxcclxuICAgIHtsYWJlbDogXCJKL9itXCIsIHZhbHVlOiBcIkpcIn0sXHJcbiAgICB7bGFiZWw6IFwiRC/Yr1wiLCB2YWx1ZTogXCJEXCJ9LFxyXG4gICAge2xhYmVsOiBcIlIv2LFcIiwgdmFsdWU6IFwiUlwifSxcclxuICAgIHtsYWJlbDogXCJTL9izXCIsIHZhbHVlOiBcIlNcIn0sXHJcbiAgICB7bGFiZWw6IFwiWC/YtVwiLCB2YWx1ZTogXCJYXCJ9LFxyXG4gICAge2xhYmVsOiBcIlQv2LdcIiwgdmFsdWU6IFwiVFwifSxcclxuICAgIHtsYWJlbDogXCJFL9i5XCIsIHZhbHVlOiBcIkVcIn0sXHJcbiAgICB7bGFiZWw6IFwiRy/ZglwiLCB2YWx1ZTogXCJHXCJ9LFxyXG4gICAge2xhYmVsOiBcIksv2YNcIiwgdmFsdWU6IFwiS1wifSxcclxuICAgIHtsYWJlbDogXCJML9mEXCIsIHZhbHVlOiBcIkxcIn0sXHJcbiAgICB7bGFiZWw6IFwiWi/ZhVwiLCB2YWx1ZTogXCJaXCJ9LFxyXG4gICAge2xhYmVsOiBcIk4v2YZcIiwgdmFsdWU6IFwiTlwifSxcclxuICAgIHtsYWJlbDogXCJIL9mH2YBcIiwgdmFsdWU6IFwiSFwifSxcclxuICAgIHtsYWJlbDogXCJVL9mIXCIsIHZhbHVlOiBcIlVcIn0sXHJcbiAgICB7bGFiZWw6IFwiVi/ZilwiLCB2YWx1ZTogXCJWXCJ9XHJcbiAgXTtcclxuICAjcGxhdGVDaGFuZ2VzID0gdG9TaWduYWwodGhpcy5wbGF0ZS52YWx1ZUNoYW5nZXMpO1xyXG4gICNsZXR0ZXJzQXJyOiBTaWduYWw8c3RyaW5nW10+ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy4jcGxhdGVDaGFuZ2VzKClbXCJsZXR0ZXJzXCJdLmZpbHRlcigobDogc3RyaW5nKSA9PiBsKSk7XHJcbiAgI2xldHRlcnM6IFNpZ25hbDxzdHJpbmc+ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy4jbGV0dGVyc0FycigpLmpvaW4oXCJcIikpO1xyXG4gICNudW1iZXJzQXJyOiBTaWduYWw8c3RyaW5nW10+ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy4jcGxhdGVDaGFuZ2VzKClbXCJudW1iZXJzXCJdLmZpbHRlcigobDogc3RyaW5nKSA9PiBsKSk7XHJcbiAgI251bWJlcnM6IFNpZ25hbDxzdHJpbmc+ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy4jbnVtYmVyc0FycigpLmpvaW4oXCJcIikpO1xyXG4gICNwbGF0ZUhhc1ZhbHVlOiBTaWduYWw8Ym9vbGVhbj4gPSBjb21wdXRlZCgoKSA9PiAhISh0aGlzLiNsZXR0ZXJzKCkubGVuZ3RoICYmIHRoaXMuI251bWJlcnMoKS5sZW5ndGgpKTtcclxuICAjZWZmZWN0UmVmOiBFZmZlY3RSZWYgPSBlZmZlY3QoKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuI3BsYXRlQ2hhbmdlcygpKSB7XHJcbiAgICAgIHRoaXMucHJvcGFnYXRlVmFsdWUodGhpcy4jZ2V0RW1pc3Npb25WYWx1ZSgpKTtcclxuICAgICAgdGhpcy5lbWl0T25DaGFuZ2VFdmVudCh7bGV0dGVyczogdGhpcy4jbGV0dGVyc0FycigpLCBudW1iZXJzOiB0aGlzLiNudW1iZXJzQXJyKCl9KTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgZ2V0IGxldHRlckNvbnRyb2xzKCkge1xyXG4gICAgcmV0dXJuICh0aGlzLnBsYXRlLmNvbnRyb2xzW1wibGV0dGVyc1wiXSBhcyBGb3JtQXJyYXkpLmNvbnRyb2xzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG51bWJlckNvbnRyb2xzKCkge1xyXG4gICAgcmV0dXJuICh0aGlzLnBsYXRlLmNvbnRyb2xzW1wibnVtYmVyc1wiXSBhcyBGb3JtQXJyYXkpLmNvbnRyb2xzO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xyXG4gICAgbGV0IHByb2Nlc3NlZFZhbHVlID0gdGhpcy4jc3BsaXRQbGF0ZVZhbHVlcyh2YWx1ZSk7XHJcbiAgICBpZiAocHJvY2Vzc2VkVmFsdWUpIHtcclxuICAgICAgdGhpcy5wbGF0ZS5wYXRjaFZhbHVlKHByb2Nlc3NlZFZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy4jZWZmZWN0UmVmLmRlc3Ryb3koKTtcclxuICB9XHJcblxyXG4gICNnZXRFbWlzc2lvblZhbHVlKCkge1xyXG4gICAgaWYgKHRoaXMuI3BsYXRlSGFzVmFsdWUoKSkge1xyXG4gICAgICByZXR1cm4gYCR7dGhpcy4jbGV0dGVycygpfS0ke3RoaXMuI251bWJlcnMoKX1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAjc3BsaXRQbGF0ZVZhbHVlcyh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIGxldCBsZXR0ZXJzQW5kTnVtYmVyczogc3RyaW5nW10gPSB2YWx1ZS5zcGxpdChcIi1cIik7XHJcbiAgICAgIGxldCBsZXR0ZXJzOiBzdHJpbmdbXSA9IGxldHRlcnNBbmROdW1iZXJzWzBdLnNwbGl0KFwiXCIpO1xyXG4gICAgICBsZXQgbnVtYmVyczogc3RyaW5nW10gPSBsZXR0ZXJzQW5kTnVtYmVyc1sxXS5zcGxpdChcIlwiKTtcclxuICAgICAgcmV0dXJuIHtsZXR0ZXJzLCBudW1iZXJzfTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IFtmb3JtR3JvdXBdPVwicGxhdGVcIj5cclxuICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIj5cclxuICAgIDxuZy1jb250YWluZXIgZm9ybUFycmF5TmFtZT1cIm51bWJlcnNcIj5cclxuICAgICAgQGZvciAoaXRlbSBvZiBudW1iZXJDb250cm9sczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0zXCI+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1udW1iZXJcIj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIiRpbmRleFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMVwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJcIlxyXG4gICAgICAgICAgICAgIG9uaW5wdXQ9XCJpZiAodGhpcy52YWx1ZS5sZW5ndGggPiB0aGlzLm1heExlbmd0aCkgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUuc2xpY2UoMCwgdGhpcy5tYXhMZW5ndGgpO1wiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIj5cclxuICAgIDxuZy1jb250YWluZXIgZm9ybUFycmF5TmFtZT1cImxldHRlcnNcIj5cclxuICAgICAgQGZvciAoZWwgb2YgbGV0dGVyQ29udHJvbHM7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWF0LWZvcm0tZmllbGQtbnVtYmVyXCI+XHJcbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGRpc2FibGVPcHRpb25DZW50ZXJpbmcgW2Zvcm1Db250cm9sTmFtZV09XCIkaW5kZXhcIj5cclxuICAgICAgICAgICAgICBAZm9yIChvcHRpb24gb2Ygb3B0aW9uczsgdHJhY2sgb3B0aW9uLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCI+e3sgb3B0aW9uLmxhYmVsIH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPCEtLTxkaXYgY2xhc3M9XCJyb3cgbWItNFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGxhdGVFbGVtZW50XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj4tLT5cclxuPC9kaXY+XHJcblxyXG5cclxuPCEtLTxuZy10ZW1wbGF0ZSAjcGxhdGVFbGVtZW50PlxyXG4gIDxkaXYgY2xhc3M9XCJwbGF0ZSBkLWlubGluZS1mbGV4IGFsaWduLWl0ZW1zLXN0cmV0Y2gganVzdGlmeS1jb250ZW50LWJldHdlZW4gZnMtMThcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gYm9yZGVyLXJpZ2h0IHctMTAwXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJBUlBsYXRlIGJvcmRlci1ib3R0b20gZC1mbGV4IGgtNTAgdy0xMDBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmMtYmxhY2sgYm9yZGVyLXJpZ2h0IHctNTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0xXCI+XHJcbiAgICAgICAgICA8c3Bhbj57eyBudW1iZXIxIHwgYXJhYmljTnVtYmVycyB9fTwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuPnt7IG51bWJlcjIgfCBhcmFiaWNOdW1iZXJzIH19PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4+e3sgbnVtYmVyMyB8IGFyYWJpY051bWJlcnMgfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3Bhbj57eyBudW1iZXI0IHwgYXJhYmljTnVtYmVycyB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LW1lZGl1bSBmYy1ibGFjayB3LTUwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgPHNwYW4+e3sgbGV0dGVyMUFyIH19PC9zcGFuPiA8c3BhbiBjbGFzcz1cIm0tMVwiPnt7IGxldHRlcjJBciB9fTwvc3Bhbj4gPHNwYW4+e3sgbGV0dGVyM0FyIH19PC9zcGFuPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJFTlBsYXRlIGQtZmxleCBoLTUwIHctMTAwXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmYy1ibGFjayBib3JkZXItcmlnaHQgdy01MCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgIHt7IG51bWJlcjEgPT09IG51bGwgfHwgbnVtYmVyMSA9PT0gdW5kZWZpbmVkID8gJycgOiBudW1iZXIxIH19XHJcbiAgICAgICAgICB7eyBudW1iZXIyID09PSBudWxsIHx8IG51bWJlcjIgPT09IHVuZGVmaW5lZCA/ICcnIDogbnVtYmVyMiB9fVxyXG4gICAgICAgICAge3sgbnVtYmVyMyA9PT0gbnVsbCB8fCBudW1iZXIzID09PSB1bmRlZmluZWQgPyAnJyA6IG51bWJlcjMgfX1cclxuICAgICAgICAgIHt7IG51bWJlcjQgPT09IG51bGwgfHwgbnVtYmVyNCA9PT0gdW5kZWZpbmVkID8gJycgOiBudW1iZXI0IH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZnctbWVkaXVtIGZjLWJsYWNrIHctNTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICB7eyBsZXR0ZXIxRW4udG9VcHBlckNhc2UoKSArICcgJyArIGxldHRlcjJFbi50b1VwcGVyQ2FzZSgpICsgJyAnICsgbGV0dGVyM0VuLnRvVXBwZXJDYXNlKCkgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0yIGp1c3RpZnktY29udGVudC1jZW50ZXIgcHgtMiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgPGltZyBzcmM9XCJhc3NldHMvaW1hZ2VzL2tzYS1zeW1ib2wuc3ZnXCIgYWx0PVwiXCIvPlxyXG5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJmdy1tZWRpdW0gZnMtMTIgbGluZS1oZWlnaHQtMS0yXCI+Szxici8+Uzxici8+QTwvc3Bhbj5cclxuICAgICAgPHN2ZyB3aWR0aD1cIjlcIiBoZWlnaHQ9XCI5XCIgdmlld0JveD1cIjAgMCA5IDlcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICA8Y2lyY2xlIGN4PVwiNC40OTE2MlwiIGN5PVwiNC4wNjE5M1wiIHI9XCIzLjk5MTYyXCIgZmlsbD1cIiMxRDI1MkRcIi8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+LS0+XHJcbiJdfQ==
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { Component, input } from "@angular/core";
|
|
2
|
-
import { NG_VALUE_ACCESSOR, ReactiveFormsModule } from "@angular/forms";
|
|
3
|
-
import { BaseCtrl } from "../base-ctrl";
|
|
4
|
-
import { MatRadioModule } from "@angular/material/radio";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/material/radio";
|
|
7
|
-
export class RadioComponent extends BaseCtrl {
|
|
8
|
-
constructor() {
|
|
9
|
-
super(...arguments);
|
|
10
|
-
this.options = input.required();
|
|
11
|
-
}
|
|
12
|
-
writeValue(value) {
|
|
13
|
-
if (value === null || value === undefined) {
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
const values = value.split(",").map(val => val.trim());
|
|
17
|
-
if (values.length > 1) {
|
|
18
|
-
this.emitValue(null);
|
|
19
|
-
throw new Error("You cannot set multiple values while the control is in single selection mode!");
|
|
20
|
-
}
|
|
21
|
-
this.ctrl.setValue(value);
|
|
22
|
-
}
|
|
23
|
-
onRadioChange(value) {
|
|
24
|
-
this.emitValue(value);
|
|
25
|
-
}
|
|
26
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: RadioComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: RadioComponent, isStandalone: true, selector: "iss-ctrl-radio", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null } }, providers: [
|
|
28
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting: RadioComponent, multi: true }
|
|
29
|
-
], usesInheritance: true, ngImport: i0, template: "<mat-radio-group aria-label=\"Select an option\">\r\n @for (option of options(); track option.value) {\r\n <mat-radio-button\r\n [value]=\"option.value\"\r\n [checked]=\"ctrl.value === option.value\"\r\n (change)=\"onRadioChange(option.value)\"\r\n >{{ option.label }}\r\n </mat-radio-button>\r\n }\r\n</mat-radio-group>\r\n", styles: [".mat-mdc-radio-group{flex-direction:column!important}\n"], dependencies: [{ kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i1.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i1.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: ReactiveFormsModule }] }); }
|
|
30
|
-
}
|
|
31
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: RadioComponent, decorators: [{
|
|
32
|
-
type: Component,
|
|
33
|
-
args: [{ selector: "iss-ctrl-radio", standalone: true, imports: [
|
|
34
|
-
MatRadioModule,
|
|
35
|
-
ReactiveFormsModule,
|
|
36
|
-
], providers: [
|
|
37
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting: RadioComponent, multi: true }
|
|
38
|
-
], template: "<mat-radio-group aria-label=\"Select an option\">\r\n @for (option of options(); track option.value) {\r\n <mat-radio-button\r\n [value]=\"option.value\"\r\n [checked]=\"ctrl.value === option.value\"\r\n (change)=\"onRadioChange(option.value)\"\r\n >{{ option.label }}\r\n </mat-radio-button>\r\n }\r\n</mat-radio-group>\r\n", styles: [".mat-mdc-radio-group{flex-direction:column!important}\n"] }]
|
|
39
|
-
}] });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvcmFkaW8vcmFkaW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvcmFkaW8vcmFkaW8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFDLGlCQUFpQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7OztBQWdCdkQsTUFBTSxPQUFPLGNBQWUsU0FBUSxRQUFRO0lBYjVDOztRQWNFLFlBQU8sR0FBMEIsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0tBbUJuRDtJQWpCVSxVQUFVLENBQUMsS0FBb0I7UUFDdEMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMxQyxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFhLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFFakUsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQywrRUFBK0UsQ0FBQyxDQUFDO1FBQ25HLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWE7UUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDOzhHQW5CVSxjQUFjO2tHQUFkLGNBQWMsc01BSmQ7WUFDVCxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7U0FDdkUsaURDakJILGdXQVVBLGdIREFJLGNBQWMsc2lCQUNkLG1CQUFtQjs7MkZBUVYsY0FBYztrQkFiMUIsU0FBUzsrQkFDRSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1A7d0JBQ1AsY0FBYzt3QkFDZCxtQkFBbUI7cUJBQ3BCLGFBR1U7d0JBQ1QsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDO3FCQUN2RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBpbnB1dCwgSW5wdXRTaWduYWx9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7TkdfVkFMVUVfQUNDRVNTT1IsIFJlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge0Jhc2VDdHJsfSBmcm9tIFwiLi4vYmFzZS1jdHJsXCI7XHJcbmltcG9ydCB7TWF0UmFkaW9Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9yYWRpb1wiO1xyXG5pbXBvcnQge09wdGlvbn0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvb3B0aW9uLmludGVyZmFjZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiaXNzLWN0cmwtcmFkaW9cIixcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE1hdFJhZGlvTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vcmFkaW8uY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL3JhZGlvLmNvbXBvbmVudC5zY3NzXCIsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBSYWRpb0NvbXBvbmVudCwgbXVsdGk6IHRydWV9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmFkaW9Db21wb25lbnQgZXh0ZW5kcyBCYXNlQ3RybCB7XHJcbiAgb3B0aW9uczogSW5wdXRTaWduYWw8T3B0aW9uW10+ID0gaW5wdXQucmVxdWlyZWQoKTtcclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xyXG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdmFsdWVzOiBzdHJpbmdbXSA9IHZhbHVlLnNwbGl0KFwiLFwiKS5tYXAodmFsID0+IHZhbC50cmltKCkpO1xyXG5cclxuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICB0aGlzLmVtaXRWYWx1ZShudWxsKTtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiWW91IGNhbm5vdCBzZXQgbXVsdGlwbGUgdmFsdWVzIHdoaWxlIHRoZSBjb250cm9sIGlzIGluIHNpbmdsZSBzZWxlY3Rpb24gbW9kZSFcIik7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jdHJsLnNldFZhbHVlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9uUmFkaW9DaGFuZ2UodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5lbWl0VmFsdWUodmFsdWUpO1xyXG4gIH1cclxufVxyXG4iLCI8bWF0LXJhZGlvLWdyb3VwIGFyaWEtbGFiZWw9XCJTZWxlY3QgYW4gb3B0aW9uXCI+XHJcbiAgQGZvciAob3B0aW9uIG9mIG9wdGlvbnMoKTsgdHJhY2sgb3B0aW9uLnZhbHVlKSB7XHJcbiAgICA8bWF0LXJhZGlvLWJ1dHRvblxyXG4gICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcclxuICAgICAgW2NoZWNrZWRdPVwiY3RybC52YWx1ZSA9PT0gb3B0aW9uLnZhbHVlXCJcclxuICAgICAgKGNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKG9wdGlvbi52YWx1ZSlcIlxyXG4gICAgPnt7IG9wdGlvbi5sYWJlbCB9fVxyXG4gICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxyXG4gIH1cclxuPC9tYXQtcmFkaW8tZ3JvdXA+XHJcbiJdfQ==
|