{"version":3,"mappings":"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,GACH,EACD,GAAM,CACF,GACH,EACD,GAAM,CACF,GACH,EACD,GAAM,CACF,GACH,EACD,GAAM,CACF,GACH,EACD,GAAM,CACF,GACH,EACD,GAAM,CACF,GACH,EACD,GAAM,CACF,GACH,EACD,GAAM,CACF,GACH,EACD,GAAM,CACF,IACA,GACH,EACD,GAAM,CACF,IACA,GACH,EACD,GAAM,CACF,IACA,GACH,EACD,GAAM,CACF,IACA,GACH,EACD,GAAM,CACF,IACA,GACH,EACD,GAAM,CACF,IACA,GACH,EACD,GAAM,CACF,IACA,GACH,EACD,GAAM,CACF,IACA,GACH,EACD,GAAM,CACF,IACA,GACH,EACD,GAAM,CACF,IACA,GACH,EACD,GAAM,CACF,IACA,GACH,EACD,GAAM,CACF,IACA,GACH,EACD,GAAM,CACF,IACA,GACH,EACD,MAAO,CACH,IACA,GACH,EACD,GAAM,CACF,IACA,IACA,IACH,EACD,GAAM,CACF,IACA,IACA,IACH,EACD,QAAS,CACL,IACA,IACA,IACH,EACD,GAAM,CACF,IACA,IACA,IACH,EACD,GAAM,CACF,IACA,IACA,IACH,EACD,QAAS,CACL,IACA,IACA,IACH,EACD,QAAS,CACL,IACA,IACA,IACH,EACD,QAAS,CACL,IACA,IACA,IACH,EACD,QAAS,CACL,IACA,IACA,IACH,EACD,GAAM,CACF,IACA,IACA,IACH,EACD,GAAM,CACF,IACA,IACA,IACH,EACD,GAAM,CACF,IACA,IACA,IACH,EACD,GAAM,CACF,IACA,IACA,IACH,EACD,GAAM,CACF,IACA,IACA,IACH,EACD,GAAM,CACF,IACA,IACA,IACH,EACD,GAAM,CACF,IACA,IACA,IACH,EACD,GAAM,CACF,IACA,IACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,QAAS,CACL,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,QAAS,CACL,IACA,IACA,KACA,IACH,EACD,QAAS,CACL,IACA,IACA,KACA,IACH,EACD,QAAS,CACL,IACA,IACA,KACA,IACH,EACD,QAAS,CACL,IACA,IACA,KACA,IACH,EACD,QAAS,CACL,IACA,IACA,KACA,IACH,EACD,QAAS,CACL,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,KACA,IACH,EACD,GAAM,CACF,IACA,IACA,GACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,SAAU,CACN,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,IACA,IACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,SAAU,CACN,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,IACA,KACA,KACA,GACH,EACD,QAAS,CACL,IACA,KACA,KACA,GACH,EACD,GAAM,CACF,KACA,GACH,EACD,GAAM,CACF,KACA,GACH,EACD,QAAS,CACL,KACA,IACA,GACH,EACD,QAAS,CACL,KACA,IACA,GACH,EACD,QAAS,CACL,KACA,IACA,GACH,EACD,QAAS,CACL,KACA,IACA,GACH,EACD,GAAM,CACF,KACA,IACA,IACA,IACH,EACD,QAAS,CACL,KACA,IACA,KACA,GACH,EACD,GAAM,CACF,KACA,KACA,IACA,GACH,EACD,GAAM,CACF,KACA,KACA,IACA,GACH,EACD,GAAM,CACF,KACA,KACA,IACA,GACH,EACD,QAAS,CACL,KACA,KACA,IACA,GACH,EACD,QAAS,CACL,KACA,KACA,IACA,GACH,EACD,QAAS,CACL,KACA,KACA,IACA,GACH,EACD,GAAM,CACF,KACA,KACA,IACA,GACH,EACD,GAAM,CACF,KACA,KACA,IACA,GACH,EACD,GAAM,CACF,KACA,KACA,IACA,GACH,EACD,GAAM,CACF,KACA,KACA,IACA,GACH,EACD,GAAM,CACF,KACA,KACA,IACA,GACH,CACL,EClzCO,SAASC,GAAe1C,EAAU2C,EAAQ,CAE7C,QADIC,EAAe,GACVC,EAAa,EAAGA,EAAa7C,EAAS,OAAQ6C,IAAc,CACjE,IAAIC,EAAc9C,EAAS,OAAO6C,CAAU,EAC5C,GAAIC,IAAgB,IAAK,CAErB,QADIC,EAAc,EACXF,EAAa,EAAI7C,EAAS,QAC7BA,EAAS,OAAO6C,EAAa,CAAC,IAAMC,GACpCC,IACAF,IAEJ,IAAIG,EAAU,GAAKD,EAAc,GAC7BE,EAAeF,EAAc,EAAI,EAAI,GAAKA,GAAe,GACzDG,EAAgB,IAChBC,EAAWC,GAA+BT,CAAM,EAIpD,KAHIQ,GAAY,KAAOA,GAAY,OAC/BF,EAAe,GAEZA,KAAiB,GACpBL,GAAgBM,EAEpB,KAAOF,KAAY,GACfJ,EAAeO,EAAWP,CAEjC,MACQE,IAAgB,IACrBF,GAAgB,IAGhBA,GAAgBE,CAEvB,CACD,OAAOF,CACX,CAMA,SAASQ,GAA+BT,EAAQ,CAC5C,IAAIU,EAAYV,EAAO,UASv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,IAAM,MACNA,IAAM,MACLA,GAAK,MAAUA,GAAK,MACrBA,IAAM,MACNA,IAAM,MACNA,IAAM,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACrBA,IAAM,MACNA,IAAM,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACrBA,IAAM,MACNA,IAAM,MACNA,IAAM,MACLA,GAAK,MAAUA,GAAK,MACrBA,IAAM,MACNA,IAAM,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACrBA,IAAM,MACLA,GAAK,MAAUA,GAAK,MACrBA,IAAM,MACLA,GAAK,MAAUA,GAAK,MACrBA,IAAM,MACLA,GAAK,MAAUA,GAAK,MACrBA,IAAM,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACrBA,IAAM,MACNA,IAAM,MACNA,IAAM,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACrBA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,KACrBA,IAAM,MACNA,IAAM,MACLA,GAAK,MAAUA,GAAK,MACrBA,IAAM,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACrBA,IAAM,MACLA,GAAK,MAAUA,GAAK,MACrBA,IAAM,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACrBA,IAAM,MACLA,GAAK,MAAUA,GAAK,OACrBA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACLA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACrBA,IAAM,OACNA,IAAM,OACLA,GAAK,OAAUA,GAAK,OACrBA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACLA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACrBA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACLA,GAAK,OAAUA,GAAK,OACrBA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACLA,GAAK,OAAUA,GAAK,OACrBA,IAAM,OACNA,IAAM,OACLA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACrBA,IAAM,OACLA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACrBA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACLA,GAAK,OAAUA,GAAK,OACrBA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACLA,GAAK,OAAUA,GAAK,OACrBA,IAAM,OACLA,GAAK,OAAUA,GAAK,OACrBA,IAAM,OAC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J,CAOO,SAAS6oD,IAAW7oD,EAA4B,CAC9C,OACL,KAAM,cACN,SAEJ,CASgB,aACdA,EACAhH,EACAinD,EACqB,CACd,OACL,KAAM,wBACN,SACA,QACA,YAEJ,CASgB,aACdjgD,EACAhH,EACAinD,EACc,CACP,OACL,KAAM,gBACN,SACA,QACA,YAEJ,CAQgB,aACdjgD,EACA26C,EACyB,CAClB,OACL,KAAM,4BACN,SACA,YAEJ,CASgB,aACd36C,EACAhH,EACA6B,EACwB,CACjB,OACL,KAAM,2BACN,SACA,QACA,kBAEJ,CAQgB,aACdmF,EACApjF,EAC6B,CACtB,OACL,KAAM,iCACN,SACA,QAEJ,CAQgB,aACdojF,EACA7D,EACsB,CACf,OACL,KAAM,yBACN,SACA,SAEJ,CASgB,aACd6D,EACA7D,EACA2sD,EACkB,CACX,OACL,KAAM,qBACN,SACA,SACA,mBAEJ,CAQgB,aAAa9oD,EAAgB1F,EAAwC,CAC5E,OACL,KAAM,iBACN,SACA,UAEJ,CAQgB,aAAa0F,EAAgBlF,EAA6B,CACjE,OACL,KAAM,iBACN,SACA,QAEJ,CAQgB,aAAgBkF,EAAgB7D,EAA4C,CACnF,OACL,KAAM,oBACN,SACA,SAEJ,CAOO,SAAS4sD,IAAU/oD,EAA2B,CAC5C,OACL,KAAM,aACN,SAEJ,CAMO,SAASgpD,IAAahpD,EAA8B,CAClD,OACL,KAAM,iBACN,SAEJ,CASgB,aACdA,EACAlF,EACA9B,EACwB,CACjB,OACL,KAAM,4BACN,SACA,QACA,QAEJ,CASgB,aACdgH,EACAhH,EACyB,CAClB,OACL,KAAM,6BACN,SACA,QAEJ,CASgB,aACdgH,EACAlF,EACAzwD,EAC8B,CACvB,OACL,KAAM,mCACN,SACA,QACA,OAEJ,CAMO,SAAS4+G,IAAqBjpD,EAAsC,CAClE,OACL,KAAM,0BACN,SAEJ,CAUO,SAASkpD,IACdlpD,EACA42B,EACAn8D,EACAgiF,EACmB,CACZ,OACL,KAAM,sBACN,SACA,WACA,QACA,UAEJ,CASgB,aACdz8C,EACA42B,EACAqlB,EACgB,CACT,OACL,KAAM,mBAC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ACA,iBACA,cAEJ,CAaO,SAAS2P,IACdp7D,EACAm7D,EACAhxF,EACAkxF,EACAlP,EACAC,EACAH,EAC6B,CACtB,OACL,KAAM,iCACN,UACA,QACA,QACA,YACA,UACA,oBACA,oBAEJ,CAUO,SAASqP,IACdt7D,EACAm7D,EACAnP,EACAC,EACuC,CAChC,OACL,KAAM,2CACN,UACA,QACA,WACA,oBAEJ,CASgB,aACdjsD,EACAm7D,EACA7uI,EACsB,CACf,OACL,KAAM,yBACN,UACA,QACA,QAEJ,CASgB,aACd0zE,EACAm7D,EACAtP,EACwB,CACjB,OACL,KAAM,2BACN,UACA,QACA,sBAEJ,CAOgB,aACd7rD,EACAm7D,EAC4B,CACrB,OACL,KAAM,gCACN,UACA,QAEJ,CAQgB,aACdn7D,EACAm7D,EAC4B,CACrB,OACL,KAAM,gCACN,UACA,QAEJ,CASgB,aACdn7D,EACAm7D,EACAtP,EAC0B,CACnB,OACL,KAAM,6BACN,UACA,QACA,sBAEJ,CAQgB,aACd7rD,EACAm7D,EAC2B,CACpB,OACL,KAAM,+BACN,UACA,QAEJ,CAOO,SAASI,IAAyBv7D,EAA2C,CAC3E,OACL,KAAM,8BACN,UAEJ,CCrNgB,aACdA,EACAqqD,EACgC,CACzB,OACL,KAAM,mCACN,UACA,YAEJ,CAQgB,aACdrqD,EACA1zE,EACoC,CAC7B,OACL,KAAM,wCACN,UACA,QAEJ,CAeO,SAASkvI,IACdx7D,EACA0I,EACAwB,EACAC,EACAqgD,EAAkB,GAClBC,EAAoB,GACpBgR,EAAU,GACVC,EACAjiC,EAC+B,CACxB,OACL,KAAM,kCACN,UACA,QACA,iBACA,kBACA,oBACA,YACA,UACA,sBACA,WAEJ,CChEgB,aACdz5B,EACAm7D,EAC+B,CACxB,OACL,KAAM,kCACN,UACA,QAEJ,CAOO,SAASQ,IACdz8D,EACmC,CAC5B,OACL,KAAM,uCACN,cAEJ,CAYO,SAAS08D,IACd57D,EACAm7D,EACAj8D,EACA28D,EACAt8D,EAC0B,CACnB,OACL,KAAM,6BACN,WAAY,cACZ,UACA,QACA,cACA,kBACA,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EAAcC,CAAiB,EAEtD,0HC6BO,SAASI,IACd59D,EACA69D,EACAC,EACAthE,EACyB,CAClB,OACL,KAAM,4BACN,QACA,UACA,UACA,WAEJ,CAOO,SAASuhE,IAA0B/9D,EAA0C,CAC3E,OACL,KAAM,8BACN,QAEJ,CAOO,SAASg+D,IAA2Bh+D,EAAkD,CACpF,OACL,KAAM,+BACN,QAEJ,CAQgB,aACdW,EACAs9D,EAC2B,CACpB,OACL,KAAM,8BACN,oBACA,UAEJ,CASgB,aACdt9D,EACAnE,EACA0hE,EAC8B,CACvB,OACL,KAAM,iCACN,oBACA,WACA,mBAEJ,CAQgB,aACdv9D,EACAk9D,EAC+B,CACxB,OACL,KAAM,mCACN,oBACA,UAEJ,CAYO,SAASM,IACdhlE,EACAC,EACAuhE,EACAC,EACAwD,EACAvgE,EACuB,CAChB,OACL,KAAM,0CACN,SACA,aACA,2BACA,eACA,kBACA,8BAEJ,CAQgB,aAAqBpE,EAAiB+C,EAAwC,CACrF,OACL,KAAM,yCACN,UACA,WAEJ,CAOO,SAAS6hE,IAAgB5kE,EAAkC,CACzD,OACL,KAAM,oCACN,UAEJ,CASO,SAAS6kE,IACdnlE,EACAwH,EACAsmD,EAAgB,GACY,CACrB,OACL,KAAM,+BACN,oBACA,SACA,gBAEJ,CAYO,SAASsX,IACd59D,EACAxH,EACAC,EACAuhE,EACAC,EACAh2G,EAC6B,CACtB,OACL,KAAM,iCACN,oBACA,SACA,aACA,WACA,kBACA,8BAEJ,CAWO,SAAS45G,IACd79D,EACAxH,EACAslE,EACA9D,EACAC,EAC6B,CACtB,OACL,KAAM,gCACN,oBACA,SACA,YACA,kBACA,8BAEJ,CAcgB,aACdj6D,EACA+9D,EACAjE,EACArhE,EACAqE,EACA74C,EACA+1G,EACAC,EAC+B,CACxB,OACL,KAAM,kCACN,oBACA,iBACA,OAAQH,EACR,aACA,cACA,WACA,kBACA,8BAEJ,CAYO,SAASkE,IACdh+D,EACA85D,EACArhE,EACAqE,EACAk9D,EACAC,EAC6B,CACtB,OACL,KAAM,gCACN,oBACA,OAAQH,EACR,aACA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AAC,CAAE,MAAO,aAAc,KAAM,OAAQ,EAEzFC,GAAyB,CAC7B,MAAO,GACT,EAEMC,GAAeC,GAAiDA,EAAO,IAAIz8I,GAAMq8I,IAAkBr8I,EAAG,EAE/F08I,GAAqC,CAChD,eAAgBH,GAChB,aAAcC,GAAY,CACxB,gBACA,SACA,OACA,OACA,eACA,UACA,cACA,iBACA,gBACA,eACA,kBACA,iBACA,MACA,OACA,WACA,WACA,WACA,UACA,UACA,SACA,QACA,UACA,YACA,gBACA,aACA,oBACD,EACD,UAAWF,GACX,SAAU,CAAC,CACb,EAEaK,GAAuC,CAClD,eAAgBJ,GAChB,aAAcC,GAAY,CACxB,gBACA,SACA,UACA,aACA,eACA,MACA,cACA,gBACA,eACA,iBACA,SACA,OACA,SACA,UACA,OACA,OACA,QACA,UACA,YACA,gBACA,aACA,kBACA,cACA,oBACA,eACA,eACA,qBACA,cACD,EACD,UAAWF,GACX,SAAU,CAAC,CACb,EAEaM,GAAsC,CACjD,eAAgBL,GAChB,aAAcC,GAAY,CACxB,SACA,cACA,MACA,UACA,eACA,MACA,WACA,mBACA,aACA,aACA,gBACA,UACA,aACA,iBACA,YACA,UACA,eACA,gBACA,eACA,WACA,YACA,aACA,eACA,kBACA,eACA,cACA,gBACA,cACA,QACA,kBACA,cACA,aACA,gBACA,kBACA,mBACA,cACA,QACD,EACD,UAAWF,GACX,SAAU,CAAC,CACb,EAEaO,GAA4C,CACvD,eAAgBN,GAChB,aAAcC,GAAY,CACxB,gBACA,SACA,UACA,eACA,MACA,SACA,UACA,kBACA,cACA,OACA,OACA,QACA,UACA,gBACA,YACA,kBACA,sBAOA,mBACA,SAED,EACD,UAAWF,GACX,SAAU,CAAC,CACb,EAEaQ,GAAiD,CAC5D,WAAY,KACZ,YAAa,KACb,KAAM,KACN,mBAAoB,EACtB,EAEaC,IAA0C,CACrD,OAAQ,GACR,KAAM,WACN,SAAU,WACV,WAAY,GACZ,OAAQ,CAAC,EACT,UAAW,OACX,YAAa,IACb,sBAAuB,GACvB,gBAAiB,KACjB,uBAAwB,GA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KAAM,+BACN,gBACA,YAEJ,CAKO,SAASq3D,KAAmE,CAC1E,OACL,KAAM,sCAEV,CAMO,SAASC,IAA0BtxB,EAAkD,CACnF,OACL,KAAM,+BACN,gBAEJ,CAQgB,aACdA,EACAhoD,EACAgiB,EAC2B,CACpB,OACL,KAAM,+BACN,gBACA,UACA,YAEJ,CAQgB,aACdgmC,EACAhoD,EACAimE,EAC+B,CACxB,OACL,KAAM,mCACN,gBACA,UACA,UAEJ,CAOgB,aACdje,EACAuxB,EACyB,CAClB,OACL,KAAM,4BACN,gBACA,WAEJ,CAMO,SAASC,IACdxxB,EAC+B,CACxB,OACL,KAAM,mCACN,gBAEJ,CAMO,SAASyxB,IAAwBzxB,EAAgD,CAC/E,OACL,KAAM,4BACN,gBAEJ,wZCvGO,SAAS0xB,IAAyC,CAChD,OAAE,KAAM,mBACjB,CAegB,YAAav2H,EAAiBg0B,EAAwB,CAC7D,OACL,KAAM,aACN,UACA,OAEJ,CAgBgB,aACdwoB,EACAsK,EACAjK,EACqB,CACd,OACL,KAAM,qBACN,aACA,QACA,UAEJ,CASgB,YACdL,EACAK,EACAiK,EAC8B,CACvB,OACL,KAAM,+BACN,aACA,UACA,QAEJ,CAWO,SAAS0vE,GACdh6E,EACAK,EACAiK,EACA2vE,EACAC,EAC4B,CACrB,OACL,KAAM,6BACN,aACA,UACA,QACA,mBACA,YAEJ,CAiBO,SAASC,IACdn6E,EACAsK,EACAjK,EACAwK,EACwB,CACjB,OACL,KAAM,yBACN,aACA,QACA,UACA,QAEJ,CAUO,SAASuvE,IACdp6E,EACAK,EACAwK,EACAP,EACiC,CAC1B,OACL,KAAM,mCACN,aACA,UACA,QACA,QAEJ,CAYO,SAAS+vE,IACdr6E,EACAK,EACAwK,EACAP,EACA2vE,EACAC,EAC+B,CACxB,OACL,KAAM,iCACN,aACA,UACA,QACA,QACA,mBACA,YAEJ,CAiBO,SAASI,IACdt6E,EACAsK,EACAjK,EACA+N,EAC0B,CACnB,OACL,KAAM,2BACN,aACA,QACA,UACA,UAEJ,CAMO,SAASmsE,IAAWl6E,EAA6B,CAC/C,OACL,KAAM,c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YACA,OAAQG,EACR,OAAQ,CAAC,GAAG,EAEhB,CAEA,SAASV,IACPz+K,EACAotB,EACAilD,EACAsH,EACA77C,EACAY,EACuB,CACjB,MACJ,OAAQ,CACN,kBACA,uBACA,iBACA,sBACA,cACA,iBACA,YACA,aACA,eACA,kBACF,CACE,IAAG,aAAatR,EAAOilD,CAAM,EAEjC,OAAI0E,IAAiB,KACZ,CACL,WAAY,OACZ,iBAAkB4C,UAAoB,OACtC,cACA,eACA,WACA,OACA,oBAGK,CACL,WAAY,OACZ,iBAAkBA,UAAoB,OACtC,YAAa4mC,EAAmB,WAAa5pC,EAC7C,mBACA,eACA,WACA,OACA,qBAEMgoG,GADJ5zC,IAAyBozC,GACDrR,EACA/hC,CADe,EAEzC,oBACmC4zC,GAAjC3zC,IAAwBmzC,GAA6BjkB,EAAsClvB,CAAxB,EACrE,iBACA,WAAY/tB,UAAc,OAC1B,UAAWD,UAAa,OAG9B,CAEA,SAAS0hE,IACP1+K,EACAotB,EACAilD,EACAv0C,EACAY,EACuB,CAEjB,MACJ,OAAQ,CACN,cACA,eACA,YACA,gBACA,cACA,mBACA,YACA,MACA,SACA,iBACA,kBACA,WACA,OACA,WAGA,MACA,UACA,QACA,WACA,aACA,QACA,aACA,aACA,SACA,mBACA,SACA,aACA,cACA,kBACA,kBACA,yBACA,kBACA,uBACA,YACA,gBACA,mBACA,mBACA,qBACF,CACE,IAAG,oBAAoBtR,EAAOilD,CAAM,EAEjC,OACL,WAAY,cACZ,cACA,WACA,OACA,aAAcssG,GAAoB5nG,CAAY,EAC9C,YACA,gBACA,YAAamsD,IAAqBi7C,GAASQ,GAAoB17C,CAAW,EAAI,OAC9E,iBAAkBC,IAAqBi7C,GAAS,OAAYQ,GAAoBz7C,CAAgB,EAChG,YACA,MACA,OAAQy7C,GAAoBtqF,CAAM,EAClC,iBACA,kBACA,SAAUsqF,GAAoBxH,CAAQ,EACtC,KAAMxgG,IAAgB,uBAAyBgoG,GAAoB5vH,CAAI,EAAI,OAC3E,WACA,MACA,QAAS+iB,YAAUulG,CAAO,EAAIA,EAAU,OACxC,MAAOvlG,YAAUylG,C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ChD,kBAAmB,CAAE,MAAO,mBAAoB,EAChD,YAAa,CAAE,MAAO,aAAc,CACtC,EAEM4rD,GAAgB5xE,GACpB,OAAO,QAAQgmB,EAAiB,EAC7B,OAAO,CAAC,CAACxvH,CAAG,IAAMwpG,EAAQ,SAASxpG,CAAe,CAAC,EACnD,IAAI,CAAC,EAAG+U,CAAK,IAAMA,CAAK,EAIbqmK,GAAa,CACzB,OACA,SACA,OACA,OACA,eACA,UACA,cACA,iBACA,gBACA,eACA,kBACA,iBACA,MACA,OACA,WACA,WACA,WACA,UACA,UACA,SACA,QACA,UACA,YACA,gBACA,aACA,oBACD,EAMaA,GAAa,CACzB,SACA,UACA,aACA,eACA,MACA,cACA,gBACA,eACA,iBACA,SACA,OACA,SACA,UACA,OACA,OACA,QACA,UACA,YACA,gBACA,aACA,kBACA,oBACD,EAMaA,GAAa,CACzB,SACA,SACA,YACA,MACA,UACA,eACA,MACA,WACA,mBACA,aACA,aACA,gBACA,UACA,aACA,iBACD,EC7NH,MAAME,GAAiB,EAEViB,IAAsD,CACjE,QAASjB,GACT,UAAU18I,EAAW,CACZ,SAAK,UAAY08I,GAAiB,CAC3C,EACA,OAASE,GAAuC,CA4BxC,QA3BaN,GACjBW,GAAoB,OAAQ,CAAC,WAAY,eAAgB,cAAe,kBAAkB,CAAC,EAC3FA,GAAoB,SAAU,CAC5B,WACA,eACA,cACA,mBACD,EACDD,GAAiB,OAAQ,CACvB,oBACA,cACA,iBACA,gBACA,eACA,kBACA,iBACD,EACDA,GAAiB,SAAU,CACzB,oBACA,cACA,gBACA,eACA,iBACA,aACD,GAGgDJ,CAAiB,EACpE,SAAe,QAAU,EAElB5tD,CACT,CACF,EAEMiuD,GACJ,CAACE,EAAwBS,IACP5uD,IACV,QAAcouD,GAAYD,CAAU,EACpCE,EAAuBruD,EAAe,QAAQsuD,GAe7C,MAbc,CACnB,GAAGtuD,EACH,QAAS,CACP,GAAGA,EAAe,QAClB,CAACsuD,GAAc,CACb,GAAGD,EACH,aAAcA,EAAqB,aAAa,OAC7C5yE,GAA8B,CAACmzE,EAAU,SAASnzE,EAAO,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A,gBACA,eACA,kBACA,iBACA,MACA,OACA,WACA,WACA,WACA,UACA,UACA,SACA,QACA,UACA,YACA,gBACA,aACA,oBACD,EAMaA,GAAa,CACzB,SACA,UACA,aACA,eACA,MACA,cACA,gBACA,eACA,iBACA,SACA,OACA,SACA,UACA,OACA,OACA,QACA,UACA,YACA,gBACA,aACA,kBACA,oBACD,EAMaA,GAAa,CACzB,SACA,SACA,YACA,MACA,UACA,eACA,MACA,WACA,mBACA,aACA,aACA,gBACA,UACA,aACA,iBACD,EAII,MAAMprD,IAAyC,CACpD,eAAgBN,GAChB,aAAc0rD,GAAa,CACzB,SACA,UACA,eACA,MAEA,UACA,kBACA,OACA,OACA,QACA,UACA,gBACA,YACD,EACD,UAAW3rD,EACb,EC3MM6rD,GAAiB,EAEVoB,IAAsD,CACjE,QAASpB,GACT,UAAU18I,EAAW,CACZ,SAAK,UAAY08I,GAAiB,CAC3C,EACA,OAASE,IACiC,CACtC,GAAGA,EACH,QAAS,CACP,GAAGA,EAAkB,QACrB,eAAgBxrD,GAClB,EACA,QAAS,GAKf,ECnBMsrD,GAAiB,EAEVqB,IAAsD,CACjE,QAASrB,GACT,UAAU18I,EAAW,CACZ,SAAK,UAAY08I,GAAiB,CAC3C,EACA,OAASE,IAQ+B,CACpC,GARiBN,GACjB0B,GAAuB,WAAY,CAAE,OAAQ,cAAe,EAC5DA,GAAuB,UAAW,CAAE,KAAM,gBAAiB,EAC3DA,GAAuB,YAAa,CAAE,KAAM,gBAAiB,EAC7DA,GAAuB,iBAAkB,CAAE,KAAM,gBAAiB,GAIpDpB,CAAiB,EAC/B,QAASF,IAIf,EAIMsB,GACJ,CAACb,EAAwBS,IACJhB,IACb,QAAkBA,EAAkB,QAAQO,GAc3C,MAbc,CACnB,GAAGP,EACH,QAAS,CACP,GAAGA,EAAkB,QACrB,CAACO,GAAa,CACZ,GAAGc,EACH,aAAcA,EAAgB,aAAa,IAAKC,GAAqB,OACnE,MAAMpsD,GAAQ3hH,IAAU+tK,EAAY,SAAtB,OAAgCA,EAAY,MACnD,OAAE,GAAGA,EAAa,QAAM,CAChC,CACH,CACF,EAG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","names":["majorVersion","params","theme","variation","cdnUrls","sgbsCdnUrl","id","url","link","originalSgwtConnect","setupSGWTConnect","getFakeUser","standardSgConnect","user","getFakeOverridenSGConnect","fakeUserEmail","originalFetchUserInfo","callback","error","claims","fakeUser","getNameFromEmail","sgwtConnect","email","connectionId","driver","streamingDisconnected","reason","streamingDegraded","streamingHealthy","dispatch","getState","ac","sl","l","n","p","q","r","t","u","v","w","x","y","z","A","a","B","C","D","E","b","e","F","G","H","I","J","K","L","M","d","c","k","h","g","f","m","N","O","escape","P","Q","R","S","T","U","V","W","react_production_min","module","require$$0","exports","aa","ca","require$$1","da","ea","fa","ha","ia","ja","ka","la","ma","oa","pa","qa","ra","sa","ta","ua","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","Ra","Sa","Ta","Ua","Va","Wa","Xa","Ya","Za","ab","bb","cb","db","eb","fb","gb","hb","ib","jb","kb","lb","mb","nb","ob","pb","qb","rb","sb","tb","ub","vb","wb","xb","yb","zb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","Yb","Zb","$b","bc","cc","dc","ec","fc","gc","hc","ic","jc","kc","lc","mc","oc","nc","pc","qc","rc","sc","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","Tc","Uc","Vc","Wc","Xc","Yc","Zc","$c","ad","bd","cd","dd","ed","fd","gd","hd","jd","kd","ld","md","nd","od","pd","qd","rd","sd","td","ud","vd","wd","xd","yd","Ad","zd","Bd","Cd","Dd","Ed","Fd","Gd","Hd","Id","Jd","Kd","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","Ud","Vd","Wd","Xd","Yd","Zd","$d","ae","be","ce","de","ee","fe","ge","he","ie","je","ke","le","me","ne","oe","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","Ae","Be","Ce","De","Ee","Fe","Ge","He","Ie","Je","Ke","Le","Me","Ne","Oe","Pe","Qe","Re","Se","Te","Ue","Ve","We","Xe","Ye","Ze","$e","af","bf","cf","df","ef","ff","gf","hf","jf","kf","lf","mf","nf","of","pf","qf","rf","sf","tf","uf","vf","wf","na","xa","$a","ba","xf","yf","zf","Af","Bf","Cf","Df","Ef","Ff","Gf","Hf","Jf","If","Kf","Lf","Mf","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","fh","gh","hh","ih","jh","kh","nh","lh","mh","oh","ph","qh","rh","sh","th","uh","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","ei","fi","gi","hi","ii","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","Ti","Ui","Vi","Wi","Xi","Yi","Zi","$i","aj","bj","cj","dj","ej","fj","gj","hj","ij","jj","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","vj","wj","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","uj","Hj","Ij","Jj","Kj","Lj","Mj","Nj","Oj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","Xj","X","Yj","Zj","ak","bk","ck","dk","ek","fk","gk","hk","ik","jk","kk","lk","mk","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","Qk","Rk","Sk","Tk","Uk","Vk","Wk","Xk","Yk","Zk","$k","al","bl","cl","dl","el","fl","gl","hl","il","jl","kl","ll","ml","nl","ol","pl","ql","rl","tl","ul","vl","wl","reactDom_production_min","checkDCE","err","createRoot","useSyncExternalStoreShim_production_min","withSelector_production_min","defaultNoopBatch","batch","setBatch","newBatch","getBatch","ReactReduxContext","createContext","useReduxContext","useContext","notInitialized","useSyncExternalStoreWithSelector","initializeUseSelector","fn","refEquality","createSelectorHook","context","useDefaultReduxContext","selector","equalityFn","selectedState","subscription","store","getServerState","useDebugValue","useSelector","_extends","target","i","source","key","_objectWithoutPropertiesLoose","excluded","sourceKeys","reactIs_production_min","reactIs","REACT_STATICS","KNOWN_STATICS","FORWARD_REF_STATICS","MEMO_STATICS","TYPE_STATICS","getStatics","component","defineProperty","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","keys","targetStatics","sourceStatics","descriptor","_excluded","pureFinalPropsSelectorFactory","mapStateToProps","mapDispatchToProps","mergeProps","hasRunAtLeastOnce","state","ownProps","stateProps","dispatchProps","mergedProps","handleFirstCall","firstState","firstOwnProps","handleNewPropsAndNewState","handleNewProps","handleNewState","nextStateProps","statePropsChanged","areStatePropsEqual","handleSubsequentCalls","nextState","nextOwnProps","propsChanged","areOwnPropsEqual","stateChanged","areStatesEqual","finalPropsSelectorFactory","_ref","options","initMapStateToProps","initMapDispatchToProps","initMergeProps","bindActionCreators","actionCreators","boundActionCreators","actionCreator","args","wrapMapToPropsConstant","getConstant","constant","constantSelector","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","methodName","proxy","stateOrDispatch","props","createInvalidArgFactory","arg","name","mapDispatchToPropsFactory","mapStateToPropsFactory","defaultMergeProps","wrapMergePropsFunc","hasRunOnce","nextMergedProps","areMergedPropsEqual","mergePropsFactory","createListenerCollection","first","last","listener","listeners","isSubscribed","nullListeners","createSubscription","parentSub","unsubscribe","addNestedSub","notifyNestedSubs","handleChangeWrapper","trySubscribe","tryUnsubscribe","canUseDOM","useIsomorphicLayoutEffect","useLayoutEffect","useEffect","is","shallowEqual","objA","objB","keysA","keysB","reactJsxRuntime_production_min","useSyncExternalStore","initializeConnect","NO_SUBSCRIPTION_ARRAY","useIsomorphicLayoutEffectWithArgs","effectFunc","effectArgs","dependencies","captureWrapperProps","lastWrapperProps","lastChildProps","renderIsScheduled","wrapperProps","childPropsFromStoreUpdate","current","subscribeUpdates","shouldHandleStateChanges","childPropsSelector","isMounted","additionalSubscribeListener","didUnsubscribe","lastThrownError","checkForUpdates","latestStoreState","newChildProps","onStateChange","unsubscribeWrapper","strictEqual","connect","pure","forwardRef","Context","Boolean","WrappedComponent","wrappedComponentName","displayName","selectorFactoryOptions","ConnectFunction","propsContext","reactReduxForwardedRef","useMemo","ContextToUse","Consumer","isContextConsumer","React","createElement","contextValue","didStoreComeFromProps","didStoreComeFromContext","defaultSelectorFactory","undefined","bind","overriddenContextValue","useRef","latestSubscriptionCallbackError","actualChildPropsSelector","subscribeForReact","reactListener","actualChildProps","message","stack","renderedWrappedComponent","_jsx","ref","children","Connect","memo","forwarded","hoistStatics","Provider","serverState","previousState","createStoreHook","useStore","createDispatchHook","useDefaultStore","useDispatch","getLogUrl","baseUrl","isNode","logBuilder","LogBuilder","extendStatics","__extends","__","__assign","s","__rest","__spreadArray","to","from","pack","ar","invariant","condition","Err","ErrorKind","TYPE","SKELETON_TYPE","isLiteralElement","isArgumentElement","isNumberElement","isDateElement","isTimeElement","isSelectElement","isPluralElement","isPoundElement","isTagElement","isNumberSkeleton","isDateTimeSkeleton","SPACE_SEPARATOR_REGEX","DATE_TIME_REGEX","parseDateTimeSkeleton","skeleton","result","match","len","WHITE_SPACE_REGEX","parseNumberSkeletonFromString","stringTokens","tokens","_i","stringTokens_1","stringToken","stemAndOptions","stem","_a","options_1","option","icuUnitToEcma","unit","FRACTION_PRECISION_REGEX","SIGNIFICANT_PRECISION_REGEX","INTEGER_WIDTH_REGEX","CONCISE_INTEGER_WIDTH_REGEX","parseSignificantPrecision","str","_","g1","g2","parseSign","parseConciseScientificAndEngineeringStem","signDisplay","parseNotationOptions","opt","signOpts","parseNumberSkeleton","tokens_1","token","all","g3","g4","g5","conciseScientificAndEngineeringOpts","timeData","getBestPattern","locale","skeletonCopy","patternPos","patternChar","extraLength","hourLen","dayPeriodLen","dayPeriodChar","hourChar","getDefaultHourSymbolFromLocale","hourCycle","languageTag","regionTag","hourCycles","SPACE_SEPARATOR_START_REGEX","SPACE_SEPARATOR_END_REGEX","createLocation","start","end","hasNativeStartsWith","hasNativeFromCodePoint","hasNativeFromEntries","hasNativeCodePointAt","hasTrimStart","hasTrimEnd","hasNativeIsSafeInteger","isSafeInteger","REGEX_SUPPORTS_U_AND_Y","RE","startsWith","search","position","fromCodePoint","codePoints","elements","length","code","fromEntries","entries","obj","entries_1","codePointAt","index","size","second","trimStart","trimEnd","flag","matchIdentifierAtIndex","IDENTIFIER_PREFIX_RE_1","_isWhiteSpace","_isPatternSyntax","Parser","nestingLevel","parentArgType","expectingCloseTag","char","_isAlpha","startPosition","tagName","childrenResult","endTagStartPosition","closingTagNameStartPosition","closingTagName","startOffset","_isPotentialElementNameChar","value","parseQuoteResult","parseUnquotedResult","parseLeftAngleResult","location","_isAlphaOrSlash","openingBracePosition","startingPosition","endOffset","endPosition","typeStartPosition","argType","typeEndPosition","styleAndLocation","styleStartPosition","style","styleLocation","argCloseResult","location_1","dateTimePattern","type","typeEndPosition_1","identifierAndLocation","pluralOffset","optionsResult","location_2","nestedBraces","apostrophePosition","expectCloseTag","parsedFirstIdentifier","hasOtherClause","parsedSelectors","selectorLocation","fragmentResult","expectNumberError","invalidNumberError","sign","hasDigits","decimal","offset","kind","prefix","pattern","currentOffset","targetOffset","nextCode","codepoint","pruneLocation","els","parse","opts","memoize","cache","cacheDefault","serializer","serializerDefault","strategy","strategyDefault","isPrimitive","monadic","cacheKey","computedValue","variadic","assemble","serialize","strategyVariadic","strategyMonadic","ObjectWithoutPrototypeCache","strategies","ErrorCode","FormatError","_super","msg","originalMessage","_this","InvalidValueError","variableId","InvalidValueTypeError","MissingValueError","PART_TYPE","mergeLiteral","parts","part","lastPart","isFormatXMLElementFn","formatToParts","locales","formatters","formats","values","currentPluralValue","els_1","varName","value_1","formatFn","chunks","rule","mergeConfig","c1","c2","mergeConfigs","defaultConfig","configs","createFastMemoizeCache","createDefaultFormatters","IntlMessageFormat","overrideFormats","parseOpts","supportedLocales","IntlErrorCode","IntlError","exception","UnsupportedFormatterError","InvalidConfigError","MissingDataError","IntlFormatError","MessageFormatError","MissingTranslationError","filterProps","allowlist","defaults","filtered","defaultErrorHandler","defaultWarnHandler","warning","DEFAULT_INTL_CONFIG","createIntlCache","createFormatters","RelativeTimeFormat","ListFormat","DisplayNames","getDateTimeFormat","getNumberFormat","getPluralRules","getNamedFormat","onError","formatType","format","setTimeZoneInOptions","timeZone","deepMergeOptions","opts1","opts2","deepMergeFormatsAndSetTimeZone","f1","mfFormats","formatMessage","messageDescriptor","messages","defaultLocale","defaultFormats","fallbackOnEmptyString","defaultRichTextElements","msgId","defaultMessage","formatter","DATE_TIME_FORMAT_OPTIONS","getFormatter","filteredOptions","formatDate","config","_b","date","formatTime","formatDateTimeRange","formatDateToParts","formatTimeToParts","DISPLAY_NAMES_OPTONS","formatDisplayName","getDisplayNames","LIST_FORMAT_OPTIONS","now","generateToken","formatList","getListFormat","results","formatListToParts","val","richValues_1","serializedValues","PLURAL_FORMAT_OPTIONS","formatPlural","RELATIVE_TIME_FORMAT_OPTIONS","getRelativeTimeFormat","formatRelativeTime","NUMBER_FORMAT_OPTIONS","formatNumber","formatNumberToParts","messagesContainString","firstMessage","verifyConfigMessages","createIntl","resolvedConfig","invariantIntlContext","intl","CORE_DEFAULT_INTL_CONFIG","textComponent","Fragment","assignUniqueKeysToParts","formatXMLElementFn","toArray","aKeys","Object","bKeys","prototype","hasOwnProperty","call","getDisplayName","Component","IntlContext","window","__REACT_INTL_CONTEXT__","IntlConsumer","IntlProvider","injectIntl","intlPropName","_c","_d","enforceContext","WithIntl","intlProp","forwardedRef","concat","useIntl","React.useContext","DisplayName","DisplayNameParts","createFormattedDateTimePartsComponent","ComponentParts","formatProps","Date","formattedParts","createFormattedComponent","formattedValue","Text","processIntlConfig","onWarn","wrapRichTextChunksInFragment","assignUniqueKeysToFormatXMLElementFnArgument","reduce","acc","rawValues","rest","arguments","coreFormatMessage","apply","Array","isArray","rawDefaultRichTextElements","coreIntl","coreCreateIntl","$t","prevConfig","getDerivedStateFromProps","render","defaultProps","areEqual","prevProps","nextProps","otherProps","nextValues","nextOtherProps","FormattedMessage","description","ignoreTag","nodes","MemoizedFormattedMessage","FormattedNumber","BUS_TOPIC_GLOBALLANGUAGE","getWidgetBus","widgetConfiguration","langKey","isSupportedLocale","makeValuesPredicate","globalMessagesMap","currentLocale","setCurrentLocale","useState","bus","languageSubscription","subscribe","lang","includes","toLowerCase","querySelector","localStorage","setItem","logger","logError","ReactIntlProvider","useMessages","messagesMap","IntlComponentBoundary","parentMessages","allMessages","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","factoryWithThrowingShims","shim","propName","componentName","propFullName","secret","getShim","ReactPropTypes","propTypesModule","hasOwn","classNames","classes","inner","getScrollbarWidth","scrollDiv","scrollbarWidth","setScrollbarWidth","padding","isBodyOverflowing","getOriginalBodyPadding","conditionallyUpdateScrollbar","fixedContent","bodyPadding","globalCssModule","mapToCssModules","className","cssModule","omit","omitKeys","pick","pickKeys","Element","DOMElement","targetPropType","PropTypes","tagPropType","TransitionTimeouts","TransitionPropTypeKeys","keyCodes","PopperPlacements","isReactRefObj","getTag","isObject","isFunction","tag","findDOMElements","selection","isArrayOrNodeList","getTarget","allElements","focusableElements","_assertThisInitialized","self","_setPrototypeOf","o","_inheritsLoose","subClass","superClass","setPrototypeOf","propTypes","active","bool","string","block","color","disabled","outline","innerRef","oneOfType","object","func","onClick","node","close","Button","_React$Component","_proto","preventDefault","_this$props","ariaLabel","Tag","attributes","btnOutlineColor","href","defaultAriaLabel","_typeof","_toPrimitive","input","hint","prim","res","toPrimitive","_toPropertyKey","toPropertyKey","_defineProperty","toStr","isArguments","isArgs","keysShim","has","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","ctor","excludedKeys","hasAutomationEqualityBug","equalsConstructorPrototypeIfNotBuggy","isString","theKeys","skipProto","j","skipConstructor","implementation","slice","origKeys","originalKeys","keysWorksWithArguments","shams","sym","symObj","symVal","syms","hasSymbols","origSymbol","hasSymbolSham","ERROR_MESSAGE","funcType","that","bound","binder","boundLength","boundArgs","Empty","functionBind","src","$SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","getProto","needsEval","TypedArray","INTRINSICS","errorProto","doEval","gen","LEGACY_ALIASES","require$$2","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","stringToPath","number","quote","subString","getBaseIntrinsic","allowMissing","intrinsicName","alias","getIntrinsic","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","desc","GetIntrinsic","$apply","$call","$reflectApply","$defineProperty","$max","originalFunction","applyBind","callBind","$indexOf","callBound","hasToStringTag","$toString","isStandardArguments","isLegacyArguments","supportsStandardArguments","hasPropertyDescriptors","origDefineProperty","supportsDescriptors","predicate","defineProperties","map","predicates","numberIsNaN","polyfill","getPolyfill","define","require$$3","require$$4","isRegexMarker","badStringifier","throwRegexMarker","gOPD","regexClass","isRegex","hasLastIndexDataProperty","functionsHaveNames","$bind","functionsHaveConfigurableNames","$Object","calls","TypeErr","regex","proto","flagsBound","getDay","tryDateObject","dateClass","isDateObject","objectKeys","flags","isDate","require$$5","getTime","deepEqual","actual","expected","objEquiv","isUndefinedOrNull","isBuffer","aIsRegex","bIsRegex","aIsBuffer","bIsBuffer","isBrowser","timeoutDuration","longerTimeoutBrowsers","microtaskDebounce","called","taskDebounce","scheduled","supportsMicroTasks","debounce","functionToCheck","getType","getStyleComputedProperty","element","property","css","getParentNode","getScrollParent","_getStyleComputedProp","overflow","overflowX","overflowY","getReferenceNode","reference","isIE11","isIE10","isIE","version","getOffsetParent","noOffsetParent","offsetParent","nodeName","isOffsetContainer","getRoot","findCommonOffsetParent","element1","element2","order","range","commonAncestorContainer","element1root","getScroll","side","upperSide","html","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","getBordersSize","styles","axis","sideA","sideB","getSize","body","computedStyle","getWindowSizes","document","classCallCheck","instance","Constructor","createClass","protoProps","staticProps","getClientRect","offsets","getBoundingClientRect","sizes","width","height","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","parent","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","isFixed","parentNode","getFixedPositionOffsetParent","getBoundaries","popper","boundariesElement","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","computeAutoPlacement","placement","refRect","rects","sortedAreas","filteredAreas","_ref2","computedPlacement","getReferenceOffsets","commonOffsetParent","getOuterSizes","getOppositePlacement","hash","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","arr","check","findIndex","prop","cur","runModifiers","modifiers","data","ends","modifiersToRun","update","isModifierEnabled","modifierName","enabled","getSupportedPropertyName","prefixes","upperProp","toCheck","destroy","getWindow","ownerDocument","attachToScrollParents","event","scrollParents","isBody","setupEventListeners","updateBound","scrollElement","enableEventListeners","removeEventListeners","disableEventListeners","isNumeric","setStyles","setAttributes","applyStyle","applyStyleOnLoad","modifierOptions","getRoundedOffsets","shouldRound","_data$offsets","round","floor","noRound","referenceWidth","popperWidth","isVertical","isVariation","sameWidthParity","bothOddWidth","horizontalToInteger","verticalToInteger","isFirefox","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","prefixedProperty","left","top","invertTop","invertLeft","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","arrow","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","opSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","getOppositeVariation","placements","validPlacements","clockwise","counter","BEHAVIORS","flip","placementOpposite","flipOrder","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flippedVariationByContent","flippedVariation","keepTogether","toValue","split","parseOffset","basePlacement","useHeight","fragments","frag","divider","splitRegex","ops","op","mergeWithPrevious","index2","preventOverflow","transformProp","popperStyles","transform","shift","shiftvariation","shiftOffsets","hide","subtractLength","Defaults","Popper","eventsEnabled","gud","global","warning_1","_react","_interopRequireDefault","_propTypes","_propTypes2","_gud","_gud2","_warning","_classCallCheck","_possibleConstructorReturn","_inherits","MAX_SIGNED_31_BIT_INT","objectIs","createEventEmitter","handlers","handler","newValue","changedBits","onlyChild","createReactContext","defaultValue","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","_Component","_temp","_ret","_len","_key","oldValue","_Component2","_temp2","_this2","_ret2","_len2","_key2","observedBits","_react2","_implementation","_implementation2","ManagerReferenceNodeContext","ManagerReferenceNodeSetterContext","Manager","newReferenceNode","referenceNode","forceUpdate","componentWillUnmount","setReferenceNode","unwrapArray","safeInvoke","setRef","initialStyle","opacity","pointerEvents","initialArrowStyle","InnerPopper","popperNode","updatePopperInstance","arrowNode","setState","positionFixed","updateStateModifier","arrowStyles","popperInstance","destroyPopperInstance","_assertThisInitialize","referenceElement","PopperJS","getOptions","scheduleUpdate","componentDidUpdate","prevState","strict","setPopperNode","getPopperStyle","getPopperPlacement","outOfBoundaries","getOutOfBoundariesState","arrowProps","setArrowNode","getArrowStyle","InnerReference","refHandler","Reference","DropdownContext","a11y","direction","oneOf","group","isOpen","nav","addonType","toggle","inNavbar","setActiveFromChild","menuRole","preventDefaultKeys","space","enter","up","down","home","Dropdown","addEvents","handleDocumentClick","handleKeyDown","removeEvents","handleMenuRef","containerRef","createRef","menuRef","getContextValue","dropup","onMenuRef","componentDidMount","handleProps","getContainer","getMenu","getMenuCtrl","_$menuCtrl","getItemType","getMenuItems","menuContainer","querySelectorAll","forEach","addEventListener","_this3","removeEventListener","which","tab","container","menu","clickIsInContainer","contains","clickIsInMenu","_this4","isTargetMenuItem","getAttribute","isTargetMenuCtrl","isTab","test","indexOf","setTimeout","focus","esc","click","ctrlKey","$menuitems","_$menuitems","_$menuitems2","_$menuitems3","charPressed","String","fromCharCode","firstLetter","textContent","_classNames","_omit","attrs","subItemIsActive","Children","dropdownItem","dropdown","show","onKeyDown","header","text","DropdownItem","getTabIndex","getRole","_this$props2","tabIndex","role","contextType","ownKeys","enumerableOnly","symbols","filter","enumerable","push","_objectSpread","getOwnPropertyDescriptors","right","persist","noFlipModifier","directionPositionMap","DropdownMenu","position1","position2","poperPlacement","poperModifiers","popperPositionFixed","combinedStyle","handleRef","tagRef","ReactDOM","createPortal","caret","DropdownToggle","hasClass","addClass","_hasClass","replaceClassName","origClass","classToRemove","componentWillMount","componentWillReceiveProps","updater","componentWillUpdate","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","newApiName","maybeSnapshot","snapshot","_default","Transition_1","_interopRequireWildcard","_reactDom","_reactLifecyclesCompat","_TransitionGroupContext","newObj","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","parentGroup","appear","initialStatus","nextIn","nextStatus","status","timeout","exit","mounting","appearing","timeouts","enterTimeout","doesNotHaveTimeoutOrListener","childProps","child","noop","_addClass","_removeClass","_Transition","removeClass","CSSTransition","_this$getClassNames","_this$getClassNames2","activeClassName","appearClassName","enterClassName","doneClassName","_this$getClassNames3","_this$getClassNames4","_this$getClassNames5","isStringClassNames","_this$getClassNames6","ChildMapping","getChildMapping","mergeChildMappings","getInitialChildMapping","getNextChildMapping","mapFn","mapper","prev","next","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","getProp","onExited","prevChildMapping","nextChildMapping","hasPrev","hasNext","prevChild","isLeaving","_ChildMapping","TransitionGroup","handleExited","firstRender","currentChildMapping","childFactory","_TransitionGroup","ReplaceTransition","_args","_len3","_key3","_len4","_key4","_len5","_key5","_len6","_key6","_len7","_key7","idx","originalArgs","_child$props","inProp","_React$Children$toArr","_CSSTransition","_ReplaceTransition","arrayOf","baseClass","baseClassActive","Fade","in","transitionProps","isActive","popperClassName","placementPrefix","arrowClassName","hideArrow","fallbackPlacement","array","onClosed","fade","transition","shape","PopperContent","setTargetNode","getTargetNode","getRef","_element","childNodes","targetNode","getContainerNode","renderChildren","_arrowClassName","_popperClassName","extendedModifiers","behavior","popperTransition","_jsxs","innerClassName","autohide","delay","trigger","DEFAULT_DELAYS","isInDOMSubtree","subtreeRoot","isInDOMSubtrees","subtreeRoots","subTreeRoot","TooltipPopoverWrapper","_targets","currentTargetElement","addTargetEvents","removeTargetEvents","showWithDelay","hideWithDelay","onMouseOverTooltipContent","onMouseLeaveTooltipContent","onEscKeyDown","_isMounted","updateTarget","clearShowTimeout","clearHideTimeout","_hideTimeout","_showTimeout","getDelay","_popover","isNaN","getCurrentTarget","parentElement","currentTarget","composedPath","path","clearTimeout","triggers","addEventOnTargets","isBubble","removeEventOnTargets","newTarget","popperClasses","onMouseOver","onMouseLeave","Popover","Portal","FadePropTypes","autoFocus","centered","scrollable","keyboard","labelledBy","backdrop","onEnter","onExit","onOpened","wrapClassName","modalClassName","backdropClassName","contentClassName","external","zIndex","backdropTransition","modalTransition","unmountOnClose","returnFocusAfterClose","trapFocus","propsToOmit","Modal","mountOnEnter","_originalBodyPadding","getFocusableChildren","handleBackdropClick","handleBackdropMouseDown","handleEscape","handleStaticBackdropAnimation","handleTab","manageFocusAfterClose","clearBackdropAnimationTimeout","showStaticBackdropAnimation","init","setFocus","ev","_dialog","modalIndex","openCount","stopPropagation","isAppearing","onEntered","join","getFocusedChild","currentFocus","focusableChildren","activeElement","_mouseDownElement","totalFocusable","focusedIndex","shiftKey","keyCode","_backdropAnimationTimeout","_triggeringElement","setAttribute","_mountContainer","appendChild","removeChild","modalOpenClassName","modalOpenClassNameRegex","RegExp","replace","trim","Math","max","renderModalDialog","dialogBaseClass","isModalHidden","display","modalAttributes","onMouseDown","onKeyUp","hasTransition","Backdrop","wrapTag","closeAriaLabel","charCode","ModalHeader","closeButton","WrapTag","closeIcon","ModalBody","ModalFooter","Tooltip","flush","horizontal","getHorizontalClass","ListGroup","action","any","handleDisabledOnClick","ListGroupItem","UncontrolledDropdown","defaultOpen","onToggle","UncontrolledTooltip","GLOBAL_ERROR_AUTH_EXPIRED","userOfflineAction","authExpiredAction","noClientsAction","noProductsAction","notifyDisconnection","sessionRegisterSuccess","sessionRegisterFailure","timer","identity","reduxSubTimer","reduxMiddleware","circuitBreakerTimer","actionNotification","actionNotificationStart","actionNotificationEnd","rafSchedulerTimer","rootReducerTimer","filterDatastreamTimer","filterESPPriceTimer","mapESPActionTimer","datastreamIsDataTimer","datastreamIsRFSTimer","configDefault","conf","actionNotifier","shouldTrigger","actionsList","didMatch","didNotMatch","actionCreatorTypeExtractor","collection","itemId","throwMsg","executionId","isDefined","tradeId","trades","hasTradeId","execution","userCanTrade","getGrowls","tileId","instrument","tile","_tile","keyName","getTileState","quoteId","NOT_FOUND","createSingletonCache","equals","entry","createLruCache","maxSize","get","cacheIndex","put","getEntries","clear","defaultEqualityCheck","createCacheKeyComparator","equalityCheck","defaultMemoize","equalityCheckOrOptions","providedOptions","_providedOptions$equa","_providedOptions$maxS","resultEqualityCheck","comparator","memoized","matchingEntry","getDependencies","funcs","dep","dependencyTypes","createSelectorCreator","memoizeOptionsFromArgs","createSelector","_recomputations","_lastResult","directlyPassedOptions","resultFunc","_directlyPassedOption","_directlyPassedOption2","memoizeOptions","finalMemoizeOptions","memoizedResultFunc","mapOptional","transformValue","getAvailableInstruments","getUserHasAccess","isEmpty","getAllUserClients","getAllCcyPairs","clientId","accountName","getDefaultClient","clients","getUserClientById","getUserInfo","getUserInfoUserType","isUserInternalSales","isUserInternalTrader","getUserInfoCanTrade","getUserInfoBdrId","hasFxTcaAccess","isInternalUser","isDefaultTieringEnabled","getFeatureToggles","getProductsAccess","getLocalMarketCcy","productName","productsAccess","hasCashAndOptionProductAccess","pair","currencyPair","getCurrencyPairDetails","pairDetails","doesCurrencyPairPass","mapOrDefault","optionalPredicate","getCurrencyPrecision","isCurrencyPairCompatible","compatiblePredicate","ccyPair","isCurrencyPairOptionCompatible","isOptionCurrency","isCurrencyPairAccumulatorCompatible","emptyArray","currency","espLimits","getMissingEspLimits","limit","ccy","getClient","getClientIdByQuoteId","getTileMaxTenor","getTileCurrencyPair","maxTenor","tabNameGenerators","marketData","greeks","commercialMargin","otherAttributes","editableAttributes","collapsableKeys","getClientWorkspaceTabs","getBiggestNumber","tabs","searchForNumber","tabId","getClientWorkspaceActiveTab","getClientWorkspaceActiveTabType","activeTabId","activeTab","clientWorkspaceEntry","tabState","throwIfUndefined","getTileOverriddenClientId","overrideClientId","getClientWorkspaceIdByQuoteId","clientWorkspaceId","getSaveState","getQuotes","getQuoteById","getElementById","isQuotePresent","getQuoteInstrument","getSharedProperty","form","getValues","getErrors","getWarnings","getInputs","getValueProperty","isOptionType","optionTypes","typedOptionTypes","allPriceTypes","defaultSolvingFor","validInputsInFine","removeKey","compareObject","isShallowContained","origin","patch","patcher","composeLeftPatcher","patchers","patcherReducer","updateProperty","updateArrayByMatchingKey","keyname","keyValue","pristine","newArray","filterArrayByMatchingKey","insertAtIndex","leftHandSlice","rightHandSlice","entriesDiff","delta","unpatchedEntries","entriesMap","removeKeys","updateValueByProperty","updateKey","product","field","idVersion","isReadyToPrice","legsPatcher","emptyLeg","legsPatch","excludedLegsIds","legId","quoteIdKey","legsIdsToRemove","patchLegIds","stateWithoutRemovedLegs","stateAcc","maybeLegPatch","getLegKey","legPatch","legKey","addKey","leg","defaultLegKey","buildLegsMap","legs","emptyFxOptionState","isVanillaLegSavedTile","isFxOptionMultilegSavedTile","isVanillaLeg","isFxOptionMultileg","createEmptyFxOptionMultilegState","legIds","createEmptyFxOptionVanillaLegState","optionVanillaLegValuesPatch","optionId","vanillaLegId","updatedState","addTileIdToLegKey","currentKey","updateLegIdsWithNewTileId","assertIsDefined","toSubLegIdsByLegId","subLegIdsByLegId","_leg","firstLegId","getFxOptionMultilegOfOption","optionPrefixLegId","getAllLegIdsOfOption","getOptionLeg","fxOptionMultilegId","getLegIdsOfMultilegOfOption","multileg","getAllLegsOfOptionWithId","legId1","legId2","getAllVanillaLegIdsOfOption","firstLeg","getVanillaLeg","firstSubLegId","getOptionLeafLegState","getOptionState","lastStreamId","currentStreamId","expiry","expiryGroups","hedgeId","getOptionHedge","hedge","isNotDefined","hedgeState","getAllHedgeIdsOfOption","getOptionMetadata","getOptionValue","getOptionInput","getOptionVanillaLegValue","vanillaLeg","getOptionVanillaLegInput","getOptionVanillaLegMetadata","getOptionHedgeInput","getOptionHedgeValue","getCashMetadata","CashId","getCashState","getCashValue","getCashInput","cashId","getSwapMetadata","SwapId","getSwapState","getSwapValue","getSwapInput","swapId","bulkId","margin","increment","tenNewMargin","precision","points","tenPower","convertToPointsWithPrecision","rawValue","getImpactedDigitsFromPoints","abs","toggleCurrency","getBidAskValueWith","customerWay","ask","bid","makeBidAskValueWith","makeBulkLegId","makeSpotWithMargin","spotWithoutMargin","marginPoints","precisionAdderWithPrecision","fromPoints","convertToRawWithPrecision","adder","makeForwardPointWithMargin","forwardPts","forwardPtsMargin","makeAllIn","spotWithMargin","fwdPoints","toggleSide","wayToSide","way","sideToWay","getDisplayedSide","amountCurrency","makeTotalMarginRaw","spotMarginPoints","forwardMarginPoints","fullLegId","getLegsForBulk","getBulkNettedLegs","getNettedLegField","nettedLeg","getBulkNettedLegMargin","getBulkNettedLegWay","getBulkMetadata","getBulkState","getBulkValue","getBulkInput","getBulkLegValue","getBulkLegState","getBulkLegInput","orderId","getOrdersState","getOrderMetadata","getOrderState","getOrderValue","getOrderInput","getAccumulatorState","accumulatorState","assertTargetAccu","targetAccuState","assertForwardAccu","forwardAccuState","getAccumulatorMetadata","accumulatorId","getAccumulatorValue","getTargetAccumulatorValue","getTargetAccumulatorState","getForwardAccumulatorValue","getForwardAccumulatorState","getAccumulatorInput","AccumulatorId","getTargetAccumulatorInput","getBlotterIsOpen","getBlotterMode","getBlotterFetching","getBlotterCanRefetch","getBlotterHistoricalError","getBlotterHistoricalDateRange","getBlotterHistoricalStartDate","getBlotterHistoricalEndDate","getBlotterAllIntraday","getBlotter","getBlotterAllHistorical","getBlotterAllEditedOrders","isInBlotterIntraday","getBlotterDataById","getBlotterEditedDataById","makeGetBlotterDataByInstrument","getBlotterData","filterProduct","getBlotterIntradayCashTrades","getBlotterIntradayOptionTrades","getBlotterOrders","getBlotterIntradayAccumulatorTrades","getBlotterHistoricalCashTrades","getBlotterHistoricalOptionTrades","getBlotterHistoricalAccumulatorTrades","assertOrder","blotterEntry","assertTrade","foundEntry","getBlotterEditedOrderById","getBlotterTradeById","getBlotterChildrenTrades","childrenIds","fieldData","errorId","userNotifiedError","warningId","userNotifiedWarning","shared","getFieldContent","mapValueData","getBlotterOrderInput","getBlotterOrderById","getBlotterOrderValue","getBlotterOrderLimitInput","getBlotterOrderLimitValue","getBlotterEditedOrderLimitValue","getBlotterOrderAlgoInput","getBlotterEditedOrderAlgoInput","getBlotterOrderAlgoValue","getBlotterOrderAlgoMetadata","inputs","errors","getBlotterOrderStatus","getBlotterOrderCurrencyPair","getBlotterOrderNotionalCurrency","getBlotterOrderIsGtc","getBlotterOrderExpiryDay","getBlotterOrderExpiryTime","getBlotterOrderWay","getBlotterOrderAccount","getBlotterOrderNotionalInput","getBlotterOrderExecutedNotional","getBlotterOrderLimitPriceInput","getBlotterOrderCustomerPriceInput","getBlotterOrderTakeProfitMarginInput","getBlotterOrderNoWorseThan","getBlotterOrderStartDate","getBlotterOrderStartTime","getBlotterOrderEndDate","getBlotterOrderEndTime","getBlotterOrderClippingMode","getBlotterOrderClipSize","getBlotterOrderRandomize","getBlotterOrderSpreadCapture","getBlotterOrderAlphaSeeker","getBlotterOrderSpeed","getBlotterOrderLiquidityPool","getBlotterOrderMarginInBpsInput","getBlotterOrderTakeProfitMarginEditableInput","getBlotterOrderFixingMarginTypeInput","getBlotterOrderFixingBenchmark","getBlotterOrderFixingDateUtc","getBlotterOrderFixingPriceTypeInput","getBlotterOrderFixingPlace","getBlotterOrderFixingTime","getBlotterOrderTogglePausePending","getBlotterOrderFillNowPending","getBlotterOrderStreamId","getBlotterOrderIsReadyToSubmit","getBlotterOrderMode","getBlotterEditedOrderInput","getBlotterEditedOrderValue","getBlotterEditedOrderLimitInput","getBlotterEditedOrderNotionalInput","getBlotterEditedOrderNotionalCurrency","getBlotterEditedOrderCurrencyPair","getBlotterEditedOrderWay","getBlotterEditedOrderExpiryDay","getBlotterEditedOrderExpiryTime","getBlotterEditedOrderFixingDateUtc","getBlotterEditedOrderFixingBenchmark","getBlotterEditedOrderFixingTime","getBlotterEditedOrderFixingPlace","getBlotterEditedOrderLimitPriceInput","getBlotterEditedOrderCustomerPriceInput","getBlotterEditedOrderTakeProfitMarginInput","getBlotterEditedOrderFixingMarginTypeInput","getBlotterEditedOrderFixingPriceTypeInput","getBlotterEditedOrderMarginInBpsInput","getBlotterEditedOrderStartDate","getBlotterEditedOrderStartTime","getBlotterEditedOrderEndDate","getBlotterEditedOrderEndTime","getBlotterEditedOrderIsGtc","getBlotterEditedOrderNoWorseThan","getBlotterEditedOrderSpeed","getBlotterEditedOrderAlphaSeeker","getBlotterEditedOrderClippingModeInput","getBlotterEditedOrderClipSizeInput","getBlotterEditedOrderRandomize","getBlotterEditedOrderSpreadCapture","getBlotteEditedrOrderIsReadyToSubmit","getBlotterEditedOrderNotional","notionalInput","getBlotterEditedOrderClippingMode","clippingMode","getBlotterEditedOrderClipSize","clipSize","getBlotterEditedOrderProduct","isInternalSales","orderProduct","limitPriceInput","customerPriceInput","isTakeProfit","limitPriceInputValue","customerPriceInputValue","getBlotterEditedOrderCustomerPrice","getBlotterEditedOrderTakeProfitMargin","takeProfitMarginInput","tileSelector","instrumentSelectors","getTileMetadata","getOptionMarkupCurrency","getOptionPremiumDate","getOptionPremiumDateTenor","getOptionHedgeType","getOptionAmountReference","getCashCurrencyPair","getCashIsNonDeliverable","getCashAmountCurrency","getCashMaturityDate","getCashFixingSource","getCashFixingCurrency","getCashXCurrency","getCashSndFixingSource","getCashMaturityDateTenor","getCashAmount","getSwapCurrencyPair","getSwapIsNonDeliverable","getSwapIsUneven","getSwapIsOffMarket","getSwapNearAmount","getSwapFarAmount","getSwapAmountCurrency","getSwapNearPaymentDate","getSwapNearPaymentDateTenor","getSwapFarPaymentDate","getSwapFarPaymentDateTenor","getSwapNearPrice","getSwapFarPrice","getSwapFixingSource","getSwapSndFixingSource","getAccumulatorProductName","getAccumulatorPossibleHedgeTypes","getAccumulatorHedgePaymentDate","getAccumulatorPossiblePriceTypes","getAccumulatorTargetProfitTypeList","getAccumulatorFixingFrequenciesList","getAccumulatorSettlementModeList","getAccumulatorCashSettlementCurrencyList","getAccumulatorSettlementFrequenciesList","getAccumulatorFixingReferencesList1","getAccumulatorFixingReferencesList2","getAccumulatorCalendar","getAccumulatorDeliveryDate","getAccumulatorCutOffMarketPlace","getAccumulatorLastFixingDate","getAccumulatorTotalLeverageAmount","getAccumulatorTotalNotionalAmount","getAccumulatorCustomFields","getAccumulatorPossibleCrossCurrencies","getAccumulatorDefaultFixingReference1","getAccumulatorDefaultFixingReference2","getAccumulatorStrikeComparator","getForwardAccumulatorAccuType","getTargetAccumulatorAccuType","getTargetAccuTypeList","getAccumulatorBarrier","getAccumulatorStepDown","getAccumulatorStepUp","calendarProperties","toInteger","dirtyNumber","requiredArgs","required","toDate","argument","argStr","addDays","dirtyDate","dirtyAmount","amount","addMonths","dayOfMonth","endOfDesiredMonth","daysInMonth","addMilliseconds","timestamp","defaultOptions","getDefaultOptions","startOfWeek","_ref3","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","weekStartsOn","day","diff","getTimezoneOffsetInMilliseconds","utcDate","startOfDay","MILLISECONDS_IN_MINUTE","addMinutes","addYears","millisecondsInMinute","millisecondsInHour","millisecondsInSecond","isValid","endOfDay","endOfMonth","month","startOfMonth","endOfWeek","subMilliseconds","MILLISECONDS_IN_DAY","getUTCDayOfYear","startOfYearTimestamp","difference","startOfUTCISOWeek","getUTCISOWeekYear","year","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","MILLISECONDS_IN_WEEK","getUTCISOWeek","startOfUTCWeek","getUTCWeekYear","_options$firstWeekCon","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfUTCWeekYear","firstWeek","getUTCWeek","addLeadingZeros","targetLength","output","signedYear","dayPeriodEnumValue","numberOfDigits","milliseconds","fractionalSeconds","dayPeriodEnum","localize","era","lightFormatters","signedWeekYear","weekYear","twoDigitYear","isoWeekYear","quarter","week","isoWeek","dayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","hours","_localize","originalDate","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","dirtyDelimiter","absOffset","minutes","delimiter","dateLongFormatter","formatLong","timeLongFormatter","dateTimeLongFormatter","matchResult","datePattern","timePattern","dateTimeFormat","longFormatters","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","formatDistanceLocale","formatDistance","count","tokenValue","buildFormatLongFn","dateFormats","timeFormats","dateTimeFormats","formatRelativeLocale","formatRelative","_date","_baseDate","_options","buildLocalizeFn","dirtyIndex","valuesArray","defaultWidth","_defaultWidth","_width","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","rem100","buildMatchFn","matchPattern","matchedString","parsePatterns","findKey","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","_ref4","_options$locale2","_options$locale2$opti","_ref5","_ref6","_ref7","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","formatterOptions","substring","firstCharacter","longFormatter","cleanEscapedString","assign","isAfter","dirtyDateToCompare","dateToCompare","isBefore","isFuture","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_defineProperties","_createClass","TIMEZONE_UNIT_PRIORITY","Setter","_utcDate","ValueSetter","_Setter","validateValue","setValue","priority","subPriority","DateToSystemTimezoneSetter","_Setter2","_super2","convertedDate","dateString","_value","EraParser","_Parser","numericPatterns","timezonePatterns","mapValue","parseFnResult","parseNumericPattern","parseTimezonePattern","seconds","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","dayPeriod","normalizeTwoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","rangeEndCentury","isPreviousCentury","isLeapYearIndex","YearParser","valueCallback","normalizedTwoDigitYear","LocalWeekYearParser","ISOWeekYearParser","_flags","firstWeekOfYear","ExtendedYearParser","QuarterParser","StandAloneQuarterParser","MonthParser","StandAloneMonthParser","setUTCWeek","dirtyWeek","LocalWeekParser","setUTCISOWeek","dirtyISOWeek","ISOWeekParser","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","DateParser","isLeapYear","DayOfYearParser","setUTCDay","dirtyDay","currentDay","remainder","dayIndex","DayParser","LocalDayParser","wholeWeekDays","StandAloneLocalDayParser","setUTCISODay","ISODayParser","AMPMParser","AMPMMidnightParser","DayPeriodParser","Hour1to12Parser","isPM","Hour0to23Parser","Hour0To11Parser","Hour1To24Parser","MinuteParser","SecondParser","FractionOfSecondParser","ISOTimezoneWithZParser","ISOTimezoneParser","TimestampSecondsParser","TimestampMillisecondsParser","parsers","_createForOfIteratorHelper","allowArrayLike","it","_unsupportedIterableToArray","_e","normalCompletion","didErr","_e2","minLen","_arrayLikeToArray","arr2","notWhitespaceRegExp","dirtyDateString","dirtyFormatString","dirtyReferenceDate","formatString","subFnOptions","setters","usedTokens","_iterator","_step","_loop","parser","incompatibleTokens","incompatibleToken","usedToken","uniquePrioritySetters","setter","setterArray","_iterator2","_step2","isSameWeek","dirtyDateLeft","dirtyDateRight","dateLeftStartOfWeek","dateRightStartOfWeek","parseISO","_options$additionalDi","additionalDigits","dateStrings","splitDateString","parseYearResult","parseYear","parseDate","time","parseTime","parseTimezone","patterns","dateRegex","timeRegex","timezoneRegex","timeString","captures","century","isWeekDate","parseDateUnit","validateWeekDate","dayOfISOWeekYear","validateDate","validateDayOfYearDate","parseTimeUnit","validateTime","timezoneString","validateTimezone","fourthOfJanuaryDay","daysInMonths","_year","_hours","formattingMonthValues","feminineUnits","suffix","en","fr","isTenor","dateOrTenor","DATE_FORMAT_TEXT","FULL_DATE_FORMAT_TEXT","FULL_DATE_FORMAT_EXPIRY","FULL_DATE_MULTIPASS","FULL_DATE_OMS","parsedDate","formatWithLocaleWith","formatDateTimeWithLocaleForExpiry","toUtc","formatDateWithLocaleAndFormat","chosenLocale","getDateForMultipass","getFullDateForOMS","userTimeZone","extractDayAndTime","getForwardAccumulatorCalendarProperties","isMaturitySettlementFrequency","propertiesToRemove","getTargetAccumulatorCalendarProperties","accumulatorType","downloadCSV","content","uri","formatDateTimeWithLocale","headerExport","mapScheduleValues","scheduleValues","calendarProps","usedValue","isTargetAccumulator","getAccumulatorScheduleItemIds","schedule","scheduleIdsWithDates","scheduleIds","id1","id2","getDisplayedDataInSchedule","isForwardAccumulator","getscheduleValues","getLegIdsOrderedForSchedule","schedules","getAccumulatorScheduleData","fixingId","getAccumulatorSchedule","isScheduleFieldCustom","getAccumulatorScheduleCustomFields","getAccumulatorScheduleSettlementDate","getAccumulatorScheduleStrike","getAccumulatorScheduleEki","getTargetAccumulatorScheduleEkiDown","getTargetAccumulatorScheduleEkiUp","getAccumulatorScheduleStep","getAccumulatorScheduleNotional","getAccumulatorScheduleLeverageAmount","getTargetAccumulatorScheduleStrikeDown","getTargetAccumulatorScheduleStrikeUp","getAccumulatorCurrencyPairInput","getAccumulatorCurrencyPair","getAccumulatorPriceType","getAccumulatorPriceCurrency","getAccumulatorPremiumDate","getAccumulatorPremiumDateTenor","getAccumulatorHedgeCurrency","getAccumulatorHedgeAmount","getAccumulatorHedgeType","getAccumulatorHedgePrice","getAccumulatorWay","getAccumulatorAmount","getAccumulatorAmountCurrency","getAccumulatorAmountSplitType","getAccumulatorTargetProfitType","getAccumulatorLeverage","getAccumulatorLeverageAmount","getAccumulatorStrike","getAccumulatorStep","getAccumulatorAkoTrigger","getAccumulatorEkiTrigger","getAccumulatorTarget","getAccumulatorFirstFixingDate","getAccumulatorFirstFixingTenor","getAccumulatorExpiryDate","getAccumulatorExpiryTenor","getAccumulatorFixingFrequency","getAccumulatorNumberOfFixings","getAccumulatorSettlementFrequency","getAccumulatorFixingReference1","getAccumulatorFixingReference2","getAccumulatorMarkupCurrency","getAccumulatorIsCrossed","getAccumulatorCrossCurrency","getAccumulatorSettlementMode","getAccumulatorCashSettlementCurrency","getTargetAccumulatorEki","getAccumulatorEkiDown","getAccumulatorEkiUp","getAccumulatorStrikeDown","getAccumulatorPivot","getAccumulatorStrikeUp","getTargetAccumulatorStrikeUpValue","isSchedule","strikeUp","getTargetAccumulatorStrikeDownValue","strikeDown","getTargetAccumulatorEkiUpValue","EkiUp","getTargetAccumulatorEkiDownValue","EkiDown","getBulkCurrencyPair","getBulkAmountCurrency","getOrderCurrencyPair","getOrderType","getOrderLimitPrice","getOrderCustomerPrice","getOrderWay","getOrderAmount","getOrderAmountCurrency","getOrderTrigger","getOrderExpiryDay","getOrderExpiryDayTenor","getOrderExpiryTime","getOrderEmails","getOrderEmailsWithSplit","getOrderIsGtc","getOrderMaturityDate","getOrderTenor","getOrderStartDate","getOrderStartTime","getOrderLiquidityPool","getOrderSpeed","getOrderClippingMode","getOrderClipSize","getOrderRandomize","getOrderSpreadCapture","getOrderAlphaSeeker","getOrderFixingBenchmark","getOrderFixingPriceType","getOrderFixingDateUtc","getOrderFixingTime","getOrderFixingPlace","getOrderFixingMarginType","getOrderMarginInBps","getOrderMargin","getOrderAlgoFixingReference","getOrderAlgoFixingDate","getTileCurrentStreamId","getTileCurrentEspStreamId","getTileIsPriceable","getTileLastExecutedQuoteId","getTileLastStreamError","getTileCurrentExecutionId","getTileRfsStartedAt","getTilePriceRecords","getTilePropertiesRequestError","getOptionCurrencyPair","isTileFirstCurrencyPairSelection","notCrashErrors","getGlobalError","isAuthExpired","isUserOffline","isNoClients","isNoProducts","isCrashError","getStreamError","getExecutionById","executionState","createThunkMiddleware","extraArgument","middleware","thunk","getOptionEspStreamId","getOptionRfsStreamId","getOptionPropertiesRequested","getOptionDisplayPriceType","getOptionIsStrategy","getOptionLegsCurrencyLinked","getOptionNextLegId","getOptionLastStreamId","getOptionUserSetGroup","getOptionDisplaySolveStrike","isUserPreferenceOpened","getUserPreference","isResetTileOnSuccessfulExecution","getUserPreferenceData","getSplitNotifications","getUserDateInputCultureInfo","getUserSwapPointsVisibility","getUserDeltaStrikeVisibility","getUserDefaultNotional","getAccountNameLength","getDefaultHedgeType","getDefaultPriceType","getUserOptionAlignCurrencies","getOptionVanillaLegSettlementType","getOptionVanillaLegCashSettlementCurrency","getOptionVanillaLegFixingReference1","getOptionVanillaLegExpiry","getOptionVanillaLegExpiryTenor","getOptionVanillaLegDelivery","getOptionVanillaLegMarketPlace","getOptionVanillaLegStrike","getOptionVanillaLegNotional","getOptionVanillaLegNotionalCurrency","getOptionVanillaLegMarkup","getOptionVanillaLegVolatilityAsk","getOptionVanillaLegVolatilityBid","getOptionVanillaLegSide","getOptionVanillaLegPremiumDate","getOptionVanillaLegPremiumDateTenor","getOptionVanillaLegPremiumBid","getOptionVanillaLegPremiumAsk","getOptionVanillaLegIsInFine","getOptionVanillaLegPremiumTypeString","getOptionVanillaLegPremiumCurrency","getOptionVanillaLegSolvingFor","getOptionVanillaLegSolved","currentState","ccy1","ccy2","getCurrencyPair","getMarkupCurrency","isStrategyView","isOneLegStrategy","defaultPriceType","getTileMaxDate","maxDate","getAllVanillaLegsOfOption","solvingFor","allVanillaLegIds","solvingStrikeVanillaLegs","strikeSetInValuesLegIds","strike","userSetGroup","hedges","paymentDate","allowedStreamStatus","isPrice","streamId","getOptionStreamState","stream","priceCurrency","activeStreamId","streamState","getOptionActiveRfsId","legData","getLegData","getQuoteFromStream","getGreeksFromStream","notionalCurrency","deltaCcy1","deltaCcy2","vegaCcy1","vegaCcy2","gammaCcy1","gammaCcy2","thetaCcy1","thetaCcy2","assertUnreachable","markupCurrency","getStrategyMarginFromQuoteCcy","marginData","getOptionLegPremiumFromStream","displayPriceType","premiumData","getBidAskPairFromPremiumData","displayType","assertUnhandled","getOptionLegMarkupFromStream","getMarkupCurrencyChoice","getLegMarginByCcy","getMarginDataFromStream","isOptionStreamPresent","hedgePaymentDate","getOptionHedgePaymentDate","mpLegId","quoteState","getOptionAmountReferenceIsOverridden","getOptionLegReadyToPrice","getOptionLegPossibleSettlementTypes","getOptionLegPossibleCashSettlementCurrencies","getOptionLegPossibleFixingReferences1","getOptionLegCurrency1","getOptionLegCurrency2","getOptionLegPossibleMarketPlaces","getOptionLegIsStrikeInDelta","getOptionLegSolvable","getStrippingState","isOptionStrippingOpen","getOptionStrippingError","getOptionHedgeAmount","getOptionHedgeCurrency","getOptionHedgeRate","getSwapRfsStream","titleId","toPoints","bidMargin","askMargin","defaultMarkup","bidSwapMargin","askSwapMargin","farAmount","nearAmount","salesSpot","nearClientPoints","farSalesPoints","swapStreamState","bidMarkup","askMarkup","nearPriceReference","nearSalesPoints","bidSpotMargin","askSpotMargin","nearDf2","farDf2","computeMarkup","nearNotional","farNotional","clientNearPrice","spotMargin","swapMargin","sumPairs","sumPairsWithPrecision","unevenFactor","clientSpotBid","precisionAdder","clientSpotAsk","nearEvenValues","computeNearEvenMarkups","farEvenValues","computeFarEvenMarkups","swapMarkup","spotMarkup","totalMarkup","clientSpot","nearClientPrice","nearSalesPrice","nearEvenMarkupBid","nearEvenMarkupAsk","farClientPoints","farClientPrice","farSalesPrice","farEvenMarkupBid","farEvenMarkupAsk","pair1","pair2","getNearAmount","getFarAmount","getSwapIsPriceable","getSwapCurrentStreamId","getSwapBidSpotMargin","getSwapAskSpotMargin","getSwapBidMargin","getSwapAskMargin","nearPrice","farPrice","isNonDeliverable","bidAskPairTransform","transformer","roundToSwapPrecision","roundToPrecision","roundToSpotPrecision","roundToSwapPointsPrecision","roundToSpotPointsPrecision","getSwapStreamCurrencyPrecision","bidAskPairToPoints","nearPointsRawValue","bidAskWithSwapPrecision","bidAskToSwapPointsPrecision","toRaw","bidAskPairToRaw","farPointswithPrecision","farPoints","traderSpot","manualNearPrice","bidAskToSpotPrecision","nearPoints","getDisplaySpot","getDisplayNearPoints","manualFarPrice","getDisplayFarPoints","getDisplayNearPrice","getDisplayFarPrice","bidAskToPoints","bidAskWithSwapPointsPrecision","rawSwapPoints","bidAskToSpotPointsPrecision","rawSpotMargin","currency1","currency2","getSwapCurrency2","bidWith","priceType","price","askWith","getEspPriceByNotional","notional","ladders","coeffBid","coeffAsk","clientMidRate","threshold","traderMidRate","espStreamingState","ladder","isEmptyOrNotDefined","getLadderIndexFrom","computeMarkupWithNotionalInCcy1","computeMarkupWithNotionalInCcy2","bidMarkupCcy2","bidTotalMargin","askMarkupCcy2","askTotalMargin","allInAsk","allInBid","traderBid","traderAsk","conversionFactorBid","conversionFactorAsk","bidMarkupCcy1","askMarkupCcy1","espStreamId","currentEspStreamId","dirtyFields","utils.getMarkupCurrency","getCashEspSpotPriceWithMarginForExecution","clientBid","clientAsk","getEspStreamState","espStreamState","getAmountCurrency","amountCcy","getEspLimit","espLimit","getLadderIndex","isCashAmountInsideEspLimits","bidForwardMargin","askForwardMargin","getBulkLegs","getBulkStep","getBulkSelectedLegs","getBulkExcludedLegs","getBulkLastLegIdRequested","getBulkTradeCaptureCurrentSessionId","getBulkTradeCaptureIdVersion","getBulkPropertiesRequested","getBulkPropertiesRequestedError","getBulkIsPriceable","getBulkCurrentStreamId","getBulkLastStreamError","getBulkLegProduct","getBulkLegIsUneven","getBulkLegWay","getBulkLegAmount","getBulkLegFarAmount","getBulkLegPaymentDate","getBulkLegPaymentDateTenor","getBulkLegFarPaymentDate","getBulkLegFarPaymentDateTenor","getBulkLegCurrency1","getBulkLegCurrency2","getBulkStreamState","isFarDateValid","isDateValid","isStreamingStatusInitialising","isStreamingStatusConnected","isStreamingStatusDisconnected","patchConnected","pickStreamingConnection","getConnectionId","streamingConnectionState","isStreamingInitialising","isStreamingConnected","isStreamingDisconnected","isStreamingDegraded","isStreamingNotOptimal","featureTogglesKeys","defaultFeatureToggles","defaultProductsAccess","switchableInstruments","instrumentChoices","executableInstruments","tileInstruments","leggedInstruments","isInstrumentChoice","isSwitchableInstrument","isExecutableInstrument","isTileInstrument","isLeggedInstrument","defaultUserInfo","getAccumulatorPropertiesRequested","getAccumulatorTradeCaptureCurrentSessionId","getAccumulatorTradeCaptureIdVersion","getAccumulatorIsPriceable","getAccumulatorRfsStreamId","getAccumulatorLastStreamId","getAccumulatorSummary","getAccumulatorDisplayMode","getAccumulatorNumberOfSettlements","prioritySelect","normal","getAccumulatorActiveStreamId","getAccumulatorRfsState","getAccumulatorRfsQuote","compareArray","oldState","newState","immutableReferenceUpdate","ret","changed","rfsStreamId","isPricing","getAccumulatorRfsByQuoteId","rfs","getAccumulatorRfsQuoteByQuoteId","accuId","getAccumulatorRfsPremiumByQuoteId","premium","getFieldValidationState","fieldsState","stateAccessors","fieldErrorState","fieldWarningState","getRecommendedHedgeAmount","isLegExist","isHedgeExist","getLegFieldValidationState","legFieldsState","legStateAccessors","legFieldErrorState","legFieldWarningState","getHedgeFieldValidationState","hedgeFieldsState","hedgeStateAccessors","hedgeFieldErrorState","hedgeFieldWarningState","productState","productInputs","productDirty","curr","legAccessor","_quoteId","isTilePresent","lastStreamError","getTileRfsStream","rfsState","getGlobalStatus","predealChecks","emptyPreDealChecks","isCanTradeState","getEspSpotMidRate","midSpot","getEspStreams","getStreamKeys","espStreamCollection","getEspStreamKeys","getCashEspStreamMargin","espStream","getHeartbeatMissedEspStreams","streamKey","getProductName","isCashProductEspCompatible","isNotCashProductEspCompatible","NOT_CACH_PRODUCT_ESP_COMPATIBLE","CASH_PRODUCT_NAME","isCashProduct","cashData","getCashRfsSpotPriceWithMargin","fwdBidPts","fwdAskPts","getCashRfsForwardPointsWithMargin","emptyBidAskProps","getCashRfsStreamState","getCashSpotMarginValue","getCashForwardMargin","forwardPointsWithMargin","currentStream","userInputtedValues","getCashRfsAllInPrice","allIn","getCashRfsTotalMargin","totalMargin","spotBidMargin","spotAskMargin","userDefinedMargin","getCashIsEspTieringDefault","getCashRfsStreamId","getCashProductName","getCashCurrency1","getCashCurrency2","getCashFixingDate","getCashPossibleFixingCurrencies","getCashPossibleFixingSources","getCashIsCrossed","getCashPossibleXCurrencies","getCashPossibleSndFixingSources","getOrderCurrency1","getOrderCurrency2","getOrderFixingTypes","getOrderIsCcyForcedBidAsk","getOrderIsStandardGroup","getOrderFixingTimesOfSelectedType","getOrderSourceNameOfSelectedType","getOrderCanModifyMarginInBps","getOrderIsReadyToSubmit","getOrderPropertiesRequestError","getOrderStatus","getOrderEditingEmails","getOrderClockOffset","getOrderPropertiesRequested","getOrderIsStartDateNow","getOrderTemplateId","strictEntries","limitOrderTypes","isLimitOrder","isFixingOrder","algoOrderTypes","isAlgoOrder","orderTypes","orderTypeByGroupMap","orderTypeByGroup","clippingModes","liquidityPools","liquidityPoolsFalcon","getOrderLiquidityPoolOptions","orderType","speeds","speedsFalcon","allowedNdfCurrencies","finalStatuses","emptyFxOrderState","emptyEmails","bdrId","orderTypeToProductAccess","getAvailableOrderTypes","makeGetAvailableOrderTypes","hasOrderProductAccess","orders","ot","getOrderTemplatesIds","getOrderTemplateById","templateId","getOrderTemplateByOrderId","isOrderFromTemplateEdited","getFieldsForTemplates","template","orderFields","getFieldGettersByOrderType","agg","getter","getGridLayoutState","gridId","getGridLayout","gridItemId","gridLayout","getGridById","grid","colWidth","growlWidth","orderTileWidth","normalDetailsPanelWidth","xlDetailsPanelWidth","tileContainerPadding","ratesHeight","defaultCashHeight","defaultSwapHeight","defaultAccumulatorHeight","defaultOptionHeight","defaultOrderHeight","xlBreakpoint","tableBorderColorByTheme","defaultHeights","gridState","_item","findLocusInsertionIndexInColumn","bottom","column","locus","findForceInsertionIndexInColumn","columns","startColumn","gridItemIdQuery","getOccupiedColumnsById","colIndex","locusIndex","getPreviousLocusInColumn","rightHandSizeColumn","occupiedColumns","currentLocus","nextColumn","filterGridItemInColumn","positiveOrZero","newDragPositionWouldChangePosition","dragPosition","getGridItemSize","currentPosition","getGridItemPosition","getOccupiedColumnsByCoordinates","slots","slot","getFreeLayoutState","layoutId","getFreeLayoutById","getSessionState","properties","handle","strictKeys","strictValues","nullify","extract","client","getCompanyIdFromClientId","getCompanyNameFromClientId","optionStream","cashStream","getTileContribution","emptyFaultyIds","getFaultyStreamIds","cashs","swaps","accu","bulks","executions","allValues","espIdsNoPrice","rfsIdsErrors","getRfsErrorMessages","rfsIdsNoPrice","executionIdsErrors","toTileError","faultyIdsSelector","getBlotterMetadata","getBlotterErrors","getBlotterActiveTab","getBlotterPanelHeight","getBlotterEnableShowMyMainDeals","getBlotterOrderRejectedId","getBlotterOrderShowSaveErrorDialogBox","getBlotterOrderDisplayedErrorId","getBlotterTabMetadata","getBlotterDetailsPanel","getBlotterCantReopenReason","getBlotterDetailsPanelSelectedId","getBlotterDetailsPanelChildrenIds","getBlotterDetailsPanelMode","getBlotterDetailsPanelSaveError","getBlotterDetailsPanelHasUnexpectedError","getBlotterDetailsValidationResponse","getBlotterTradeInput","getBlotterTradeValue","getBlotterTradeStatus","getBlotterTradeCurrencyPair","getBlotterTradeDealtCurrency","getBlotterTradeContraCurrency","getBlotterTradeContraAmount","getBlotterTradeFarContraAmount","getBlotterTradeWay","getBlotterTradeAccount","getBlotterTradeSpotRate","getBlotterTradeFarRate","getBlotterTradeNearRate","getBlotterTradeSwapPoints","getBlotterTradeSpotDate","getBlotterTradeTradeDate","getBlotterTradeFarDate","getBlotterTradeNearDate","getBlotterTradeFarDealtAmount","getBlotterTradeDealtAmount","getBlotterTradeStrike","getBlotterTradeExpiry","getBlotterTradePremium","getBlotterTradePremiumSide","getBlotterTradeOptionType","isMifid2PanelVisible","isStartingMifid2Negotiation","getMifid2PanelNegotiations","negotiationId","selectors","executionSelectors","optionSelectors","swapSelectors","cashSelectors","bulkSelectors","accumulatorSelectors","orderSelectors","espSelectors","clientWorkspaceSelectors","referenceDataSelectors","streamingConnectionSelectors","globalErrorSelectors","gridLayoutSelectors","freeLayoutSelectors","sessionSelectors","tileSelectors","tileLegacySelectors","sharedSelectors","userPreferencesSelectors","blotterSelectors","mifid2PanelSelectors","clientSelectors","optionLegAdded","patchKeys","optionLegsCurrencyLinkedToggled","optionLegsPremiumPinToggled","optionTileRestoreEpic","tiles","streamError","optionExecutionSentSucceeded","optionExecutionSent","strategyType","optionType","legsId","optionCopyPasted","sessionId","hedgesPatch","optionPatch","isPriceObsolete","isProductObsolete","optionExecutionReceived","tradeIds","isStrategy","isGroup","expiries","orientation","optionSolvingRequested","optionSolvingStarted","premiumWay","premiumAmount","isCompactView","hasMultilegDifferentLegSide","callSide","strikes","forceTradable","bypassCheck","optionStreamStarted","rfsStartedAt","forceTradeable","shouldKeepAsExpired","optionRfsClearError","optionTraderNotificationReceived","traderId","quoteContribution","optionQuoteReceived","tiering","skippedLimitCheck","optionStrippingOpened","optionStrippingClosed","optionStrippingRequested","frequency","startDate","iterations","endDate","optionStrippingReceived","_getState","optionStreamRefreshThunk","isSolvable","isSolvingPremium","isSolvingStrike","isObsolete","isValidDate","forceKeepExpired","shouldKeepPrice","optionQuoteReceivedThunk","optionTraderNotificationReceivedThunk","automatically","optionTileStateCleaned","companyId","isBuy","defaultHedgeType","shouldResetPremium","currentPriceType","newPriceType","optionPriceTypeCurrencyChangedThunk","newCcy","priceTypePrecision","decimalToPps","percentToDecimal","percent","ppsToDecimal","pps","premiumDisplayMappers","decimalToPercent","makeTransformPremiumForDisplay","premiumType","premiumInputMappers","makeTransformPremiumInput","dividerWithPrecision","dividend","divisor","factor","optionPatchValues","vanillaLegIds","optionIsSolvable","allLegsHaveStrike","notionalAmount","oldCurrency","localCurrencyChangeLegIds","premiumTypeString","optionLegsWayToggledThunk","patchLegs","optionLegPremiumChangedThunk","premiumInputBid","premiumInputAsk","mapPremium","transformStringNum","ccyChoice","optionLegAddedThunk","FIRST_CURRENCY","SECOND_CURRENCY","hedgeTypes","premiumDate","premiumDateTenor","hedgeAmount","hedgeCurrency","isDefinedAndNonEmpty","optionStreamCancelThunk","strategyId","importedStrategyRows","mapStrategyImportToTradeCapturePatch","wayMap","typeMap","importedStrategyRow","legValues","line","legIndex","propertyName","toProperty","propertyIndex","pastedValueToDate","pastedValueToNumber","manageSeparator","separator","searchRegExp","manageCommaSeparator","managePointSeparator","pastedValue","fct","possibleFormats","valueRef","possibleFormat","isNotUnionLitteral","enumType","getNearestNeighbour","positionOfValue","lastPosition","distinct","optionExpandAllThunk","cashTileReset","cashTileRestoreEpic","cashEspExecutionRequested","cashExecutionReceived","cashExecutionSentSucceeded","cashRfsExecutionSent","cashEspExecutionSent","fieldName","cashPropertiesReceived","previousStreamId","cashQuoteReceived","cashRfsClearError","cashRfsRequestedThunk","cashRfsCancelThunk","oldAmount","amountAndCurrency","isDirty","cashTileStateCleaned","getCashMarginPlus","askMarginName","bidMarginName","getCashMarginFromState","cashState","getMargin","updateMargin","cashSwapMarginPlus","getCashMarginMinus","cashSwapMarginMinus","getCashMarginLeftSkew","cashSwapMarginLeftSkew","getCashMarginRightSkew","cashSwapMarginRightSkew","cashSpotMarginReset","cashForwardMarginReset","cashSwitchMarkupCurrency","cashPatch","oldProductName","oldTenor","oldCurrencyPair","isPreviouslyESPEnabled","isPreviousRFSObsolete","receivedPatch","tenor","hasChangedProductName","hasChangedCurrencyPair","hasChangedTenor","hasChangedNdfProperties","isESPEnabled","cashRfsExecutionRequested","priceAge","swapTileReset","swapTileRestoreEpic","swapPropertiesReceived","swapQuoteReceived","swapRfsClearError","swapExecutionReceived","swapExecutionSent","swapExecutionSentSucceeded","swapClientChangedThunk","swapTileStateCleaned","clearUndefined","cleaned","oldAmountCurrency","oldFarAmount","isUneven","oldNearAmount","defaultNotional","computeUpdatedMargin","bidMarginIncrement","askMarginIncrement","swapMarginPlusThunk","swapSpotMarginPlusThunk","swapMarginMinusThunk","swapSpotMarginMinusThunk","swapMarginLeftSkewThunk","swapSpotMarginLeftSkewThunk","getDisplaySpotMargin","swapMarginRightSkewThunk","swapSpotMarginRightSkewThunk","swapMarginResetThunk","swapSpotMarginResetThunk","swapMarginChangedThunk","swapSpotMarginChangedThunk","swapSwitchMarkupCurrencyThunk","swapResetNearPriceThunk","swapRfsRequestedThunk","switchingInstrument","isOffMarket","swapPatch","nearPaymentDateTenor","farPaymentDateTenor","bulkCreated","bulkClosed","activatedLegsIds","bulkReset","bulkResetAll","bulkRfsRequestedEpic","bulkQuoteReceived","bulkRfsClearError","bulkExecutionSent","bulkExecutionSentSucceeded","bulkExecutionReceived","bulkRestart","bulkCurrencyChanged","prevCcy","prevWay","prevIsUneven","previouslySelectedLegs","selectedLegs","bulkAllSelected","bulkAllUnselected","bulkRemoveSelectedLegs","bulkActivateSelectedLegs","previouslyExcludedLegs","excludedLegs","bulkExcludeSelectedLegs","bulkRfsCancelThunk","bulkExecutionRequestedThunk","bulkRestartThunk","fileName","file","bulkExportCsv","_dispatch","csvContent","formatCsv","mapLegWith","saveFile","nettedLegs","splitLegs","legMapper","csvHeaders","row","dealtCcy","getBidAskValue","allInWithMargin","accumulatorRfsStarted","rfsId","accumulatorRfsQuoteReceived","quoteDate","accumulatorTraderNotificationReceived","accumulatorRfsClearError","accumulatorPropertiesReceived","summary","numberOfSettlements","accumulatorExecutionSentSucceeded","accumulatorExecutionSent","executedQuoteId","accumulatorExecutionReceived","accumulatorTileRestoreEpic","accumulatorScheduleReset","accumulatorTileReset","accumulatorToggleDisplayMode","accumulatorAmountCurrencyMaskChangedThunk","accumulatorTileStateCleaned","accumulatorScheduleAddFixingThunk","getNewGuid","accumulatorRfsCancelThunk","accumulatorExecutionRequestedThunk","accumulatorQuoteReceivedThunk","accumulatorTraderNotificationReceivedThunk","importedScheduleRows","mapScheduleRowToFixing","espSubscriptionRequestedEpic","tieringInfo","espTieringRequestEpic","espStreamKeyRequestPending","isDefaultTIering","streamKeys","espStartPricesReceptionEpic","isDefaultTiering","multipassInstanceId","priceDecodedTime","frontTimestamp","backtimestamp","espInvalidPriceReceived","espHeartbeatMissed","SPOT_TENOR","DEFAULT_TENORS","PREMIUM_DATE_WITH_IN_FINE_TENORS","espStreamRestartThunk","newCurrencyPair","newProductName","newCompanyId","newTenor","isTileEspCompatible","espTieringRequestSuccessThunk","previousStreamKey","buildStreamKey","refCount","espTileSubscriptionRequestSuccessThunk","espTieringInfo","actualCurrencyPair","actualCompanyId","espCancelInvalidSubscriptionThunk","marginPatch","previousEspStreamId","cashHeartbeatMissedESPStreamsRefreshThunk","tileExecutionOverlayHidden","liftToString","cashMappers","swapMappers","optionMappers","vanillaLegsMappers","getAllLegsInputs","vanillaSelectors","legFieldValue","getAllHedgesInputs","accuMappers","mappers","fieldValue","TileExecutionStatus","allCcyPairs","currencyPairExtended","missingCurrencies","closedDates","isTileFirstTCRequest","optionStrategyGroupLegs","resetedValues","getCashResetedValues","getSwapResetedToCashValues","getCashResetedDeliverableForwardValues","getCashResetedNonDeliverableForwardValues","isCanBeDelivered","extCcyPair","rfsRequestThunk","resetTileThunk","partialResetTileThunk","tileDuplicateThunk","instrumentChoice","newTileId","newPosition","isOptionGrouped","isOptionGreekAndMktExpanded","getTCUpdateActions","existingTileId","swapMargins","allLegsInput","allHedgesInput","defaultClientId","tileClientResetThunk","clientChangedThunk","referenceDataReceived","productTypes","userInfo","matomoLogin","userClients","featureToggles","localMarketsCcy","retrieveClosedDates","currencyPairs","closedDatesRetrieved","espLimitsAddCurrencies","currencies","retrieveEspLimitsEpic","espLimitsRetrieved","limits","retryAfterMs","pinClientAction","unpinClientAction","moveUpPinnedClientAction","moveDownPinnedClientAction","retrievePinnedClientsAction","retrieveMissingEspLimits","missingEspLimits","retrieveEspLimits","retrieveEspLimitsFailed","delayInSeconds","redirectToRequestAccessPage","getQueryParam","queryParam","initStreamThunk","_extraArg","isTraceLogEnabled","isTraceLogEnabledQueryParameter","logIntervalMs","pingInterval","maxEspPingDelayMs","startSignalR","startRemoteLogging","startStreamingPing","clientWorkspaceTabAdded","tabType","tabName","clientWorkspaceTabRemoved","clientWorkspaceTabSwitched","newName","previousClientId","tileInstrumentChanged","tradeCaptureSessionInfos","tileClientReset","clientWorkspaceTileDeleted","clientWorkspaceNewTileAdded","clientWorkspaceTileRestored","savedTile","originalTileId","clientWorkspaceTileReopened","clientWorkspaceTileMinimized","growlClosed","growlId","executionStillPending","executionCleanup","executionTimeoutedDeal","toggleTradingDisabled","toggleTradingReceived","canTrade","saveWorkspaceRequested","saveWorkspaceRequestedEpic","workspace","saveWorkspaceReady","saveWorkspaceDone","success","savedWorkspaceReceived","savedWorkspace","saveOrderTemplatesRequestedEpic","templates","saveOrderTemplatesReady","saveOrderTemplatesDone","savedOrderTemplatesRequested","savedOrderTemplatesReceived","displayStreamErrorDetail","displayExecutionErrorDetail","displayPropertiesErrorDetail","closeErrorDetail","clientError","blotterTabs","detailsPanelConfirmationModes","detailsPanelSuccessModes","openTileAction","isSameBlotterSortModel","columnsState","rightModel","blotterModes","dateRanges","yesterday","lastWeekDay","sameDayPrevWeek","sameDayPrevMonth","mondayOfWeek","sundayOfWeek","datesByDateRange","columnsDefinition","defaultBlotterSortModel","defaultAutoColumnState","pickColumns","colIds","defaultCashTab","defaultOptionTab","defaultOrderTab","defaultAccumulatorTab","blotterDetailsPanelHidden","defaultBlotterMetadata","updateBlotterColumns","defaultColumns","savedColumns","defaultColIds","cleanSavedColumns","userColIds","col","colId","previousColumnIndex","previousColumnId","positionToInsert","injectBlotterTab","defaultTab","savedTab","injectDefaultCashTab","injectDefaultOptionTab","injectDefaultOrderTab","injectDefaultAccumulatorTab","tabClientId","selectTab","getDefaultClientId","newTabId","clientWorkspaceTabClosedThunk","tabIdToClose","tabToClose","newTabToSelect","tabIds","clientWorkspaceTabTypeToggleThunk","shouldKeepTradeCaptureSessionInfos","newInstrument","instrumentTypeGroup2","instrumentTypeGroup1","defaultTradeCaptureSessionInfos","growlClosedThunk","growlData","executionData","usedByOrderTile","instruments","setupWorkspaceThunk","a1","_snd","getSavedCurrencyPairs","restoredTabs","setupWorkspaceTabThunk","workspaceClientId","mapToInstrumentChoice","restoreTabs","allSavedTiles","ccyPairs","tilesToRestore","isProductAuthorized","restoredTiles","restoreTileThunk","cashRestoredTiles","optionRestoredTiles","swapRestoredTiles","accuRestoredTiles","isCurrencyPairUndefined","clientWorkspaceTileZoomedThunk","clientWorkspaceTileMinimizedThunk","toggleLockTraddingThunk","saveWorkspaceThunk","msl","workspaceToSave","waitstateClientId","hasClients","clientsList","setupWorkspaceCanTradeThunk","actualcanTrade","gridItemDragEnd","gridItemSize","roundedSize","userPreferenceToggleModal","open","userPreferenceDataReceived","userPreferenceDataChanged","userPreferencesDataNotSaved","userPreferencesDataReceivedThunk","optionOneWayQuotationDefault","blotterToggle","blotterUpdateModeMetadata","modeMetadata","blotterCantReopenEntry","blotterEntryReceived","blotterOrderListReceived","blotterIntradayTradesReceived","blotterFetchIntradayTradesStarted","ordersToKeep","blotterIntradayTradesRequestFailed","blotterOrderListRequestFailed","blotterTabChanged","blotterPanelHeightChanged","blotterLiveRegisterSuccess","blotterFetchTradesAndOrdersEpic","blotterLiveRegisterStart","blotterLiveRegisterFailure","tabMetatada","blotterTableCrashed","blotterRetrieveHistoricalTrades","blotterAllowRefetchTrades","blotterHistoricalTradesReceived","errorDetails","blotterOpenTileFromTrade","blotterShowDetailsPanel","selectedId","mode","blotterHideDetailsPanel","saveError","blotterChangeDetailsPanelUnexpectedError","hasError","blotterOrderUpdateSuccess","blotterOrderUpdateStillPending","blotterOrderUpdateFailed","errorCode","isValidationError","blotterOrderModifyEpic","blotterOrderRejectedShowDialog","blotterOrderRejectedHideDialog","blotterOrderSaveErrorShowDialog","blotterOrderSaveErrorHideDialog","blotterOrderPauseEpic","blotterOrderPauseSuccess","blotterOrderPauseFailure","blotterOrderResumeEpic","blotterOrderResumeSuccess","blotterOrderResumeFailure","blotterOrderFillEpic","blotterOrderFillSuccess","blotterOrderFillFailure","blotterEditedOrderValidationRequested","blotterEditedOrderValidationReceived","details","allowOrderTakeProfitMargin","blotterEditedOrderPropertiesChanged","blotterEditedOrderRemoveEntry","blotterOrderOpenTile","account","currentTabId","blotterClickActionThunk","blotterId","clickAction","isAlgo","clickActionToOrderResultMode","blotterChangeMode","allHistorical","defaultDateRange","blotterChangeDateRange","dateRange","wasCustom","isConfirmation","mapToTab","blotterDisplayDetailPanelThunk","entryTab","currentOpenedPanel","blotterResetOrderInputThunk","blotterSetDetailsPanelModeThunk","blotterDetailsPanelConfirmMessageThunk","currentMode","newOrderType","getUpdatedProperties","updatePropertied","resetProperties","orderTakeProfitMargin","cashTradeTypes","isCashTrade","swapTradeTypes","isSwapTrade","optionTradeTypes","accumulatorTypes","isOptionTrade","blotterOrderQuickActions","isSgmeOrder","quickActionsRules","isOrderEditable","quickAction","isOrderBlotterEntry","isTradeBlotterEntry","tileOpenFromTradeBlotterEntryThunk","blotterEntryId","getTileToOpen","productMapper","getCurrencyChoice","_f","getOptionType","childrenBlotterEntries","getLegToOpen","getStrategyHedgeEntry","hedgeType","hedgeEntry","getTileSide","extractDay","_g","_h","getSettlementType","tileOpenedFromBlotterThunk","firstNotionalCurrency","deliveryType","getCounterPartyBdrId","orderAccount","tabAccount","tileAccount","editedOrder","emails","editingEmails","isStartDateNow","orderPropertyChanged","orderValidationRequested","defaultOrderValidationReceivedDetails","orderValidationReceived","clockOffset","currencyChoice","orderSubmissionEpic","orderSubmissionSent","orderSubmissionSuccess","receivedDate","orderSubmissionStillPending","orderErrorDismissed","orderTemplateSaved","orderTemplateApplied","fields","orderTemplateDeleted","orderCancellationStarted","orderCancellationSuccess","orderCancellationStillPending","orderCreatedFromTemplateThunk","workspaceId","orderCreatedThunk","limitPrice","customerPrice","newId","tilePosition","tileSize","userEmails","userEmailsOrder","mail","finalEmails","orderIds","acceptedUsFormats","acceptedFrFormats","standardFormat","addOneYearIfPastDate","addOneMonthIfPastDate","tryParseDate","cultureInfo","selectedDate","acceptedFormats","dateStringTrimmed","parsedDayDate","tenorRegex","isValidStandardDate","parseWithCultureInfoWith","selectedDateOrTenor","maybeParsedDate","parseWithCultureInfo","orderWayToggled","expiryDay","fixingDateUtc","defaultExpiryTime","isGtc","orderSaveAsNewTemplate","templateName","orderUpdateTemplate","newFields","orderApplyTemplate","orderDeleteTemplate","toggleMifid2Panel","mifid2StartNewNegotiationEpic","mifid2StartNewNegotiationFailed","mifid2RecordTimestampEpic","dealDone","mifid2FinishNegotiationFailed","mifid2RemoveNegotiation","appBootstrapped","localFieldValidationSet","validationStatus","messageId","legFieldTooltipSeen","localLegFieldValidationClear","localLegFieldValidationSet","hedgeFieldTooltipSeen","hedgeReset","localHedgeFieldValidationClear","localHedgeFieldValidationSet","recordPriceSucceeded","prices","recordPriceEpic","autoHideToastDelay","addToastAction","toast","v4","removeToastAction","productStringRepresentation","createSmartRfsDone","optionActions","optionThunks","cashActions","cashThunks","swapActions","swapThunks","bulkActions","bulkThunks","accumulatorActions","accumulatorThunks","espActions","espThunks","tileActions","tileThunks","referenceDataActions","referenceDataThunks","streamingConnectionActions","initStreamThunks","clientWorkspaceActions","clientWorkspaceThunks","gridLayoutActions","gridLayoutThunks","sessionActions","userPreferencesActions","userPreferencesThunks","blotterActions","blotterDetailsPanelActions","blotterOrderActions","blotterClickActionThunks","blotterModeThunks","blotterPanelThunks","blotterTileThunks","freeLayoutActions","orderActions","orderThunks","mifid2PanelActions","globalErrorActions","globalActions","toastsActions","smartRfsActions","QueueAction","tslib_1.__extends","scheduler","work","AsyncAction","QueueScheduler","AsyncScheduler","queueScheduler","queue","observeOn","ObserveOnOperator","subscriber","ObserveOnSubscriber","destination","notification","ObserveOnMessage","Notification","Subscriber","nextHandle","RESOLVED","activeHandles","findAndClearHandle","Immediate","AsapAction","AsapScheduler","actions","asapScheduler","asap","fromEvent","eventName","resultSelector","Observable","setupSubscription","sourceObj","isEventTarget","source_1","isJQueryStyleEventEmitter","source_2","isNodeStyleEventEmitter","source_3","ignoreElements","IgnoreElementsOperator","IgnoreElementsSubscriber","unused","publish","multicast","Subject","SubscribeOnObservable","delayTime","subscribeOn","SubscribeOnOperator","tap","nextOrObserver","complete","DoOperator","TapSubscriber","observerOrNext","keyHasType","ofType","ActionsObservable","_Observable","_of","_from","actionsSubject","operator","observable","_ofType","StateObservable","stateSubject","initialState","createEpicMiddleware","uniqueQueueScheduler","epic$","epicMiddleware","_store","actionSubject$","stateSubject$","action$","state$","result$","epic","output$","mergeMap","rootEpic","encoding","encodingLength","uuidToBase36","uuid","cleanUuid","iUuid","getNewRfsId","metaSelectorTradeCaptureToBackendWith","getNextIdVersion","changedBulkFields","metaSelectorBulkToTradeCapturePatchWith","defaultLeg","metaSelectorBulkLegToTradeCapturePatchWith","lastIdVersion","_sl","_state","isLegSwap","paymentDateString","dateToPatch","farPaymentDateString","amount1String","amount2String","farAmount1String","farAmount2String","buildLegs","bulkImportedToPatchWith","legChangedToPatchWith","legAddToPatchWith","legIdToAdd","legRemovedToPatchWith","currentlegIds","legExcludedToPatchWith","activatedLegsPatchs","buildLegsPatch","bulkResetToPatchWith","legState","innerAcc","legValue","previousValue","previousValueAsString","fromTcWarning","fromTcWarningAsString","fromTcError","fromTcErrorAsString","getPreviousMap","negotiatedCurrency","amount1","amount2","legsError","bulkErrors","legsWarning","bulkWarnings","warnings","bulkProperties","metaSelectorTradeCaptureToBulkPropertiesWith","changedFields","metaSelectorTradeCaptureToBulkLegValuesWith","_sel","tcErrors","changes","amountCurrencyState","mapAmount","isSwapLeg","amount1Error","amount2Error","amount1Warning","tcWarnings","amount2Warning","metaSelectorQuoteRequestBuilderWith","processedLegs","toLegQuoteRequest","fxBulkProduct","requesterCounterpartyId","paymentDateTenor","fixingInfos","nearLeg","farPaymentDate","farLeg","metaSelectorQuoteExecutionBuilderWith","streamLegs","splitNotifications","splitNotificationsEmailsCash","emailNotificationList","tradeDate","lastQuoteFromBackTimestamp","backTimestamp","lastQuoteReceivedByFrontTimestamp","executionClickByFrontTimestamp","dominantWay","toBulkLegExecution","quoteLeg","dominantSide","getBidAskValueByWay","spotTrader","spotClient","forwardPointsWithoutMargin","bulkResponseToPatchMetaSelector","metaSelectorTradeCaptureFromBackendWith","createBulkTradeCaptureRequest","bulkLegAddedToPatch","bulkLegChangedToPatch","bulkLegRemovedToPatch","bulkLegsExcludedToPatch","bulkResetToPatch","bulkPropertyChangedToPatch","bulkPropertyChangedToPatchWith","bulkImportedToPatch","bulkBuildQuoteRequest","bulkQuoteExecution","isVanilla","strippingFrequencies","mapLegSettlementTypeToTradeCaptureSettlementType","convertLegSettlementTypeToTradeCaptureSettlementType","mapTradeCaptureSettlementTypeToLegSettlementType","convertTradeCaptureSettlementTypeToLegSettlementType","mapLegOptionTypeToTradeCaptureType","convertLegOptionTypeToTradeCaptureType","mapTradeCaptureTypeToLegOptionType","convertTradeCaptureTypeToLegOptionType","PRE_MULTI_HEDGES_HEDGE_ID","orderChildrenLegs","childrenLegs","newKey","childrenKey","flattenNestedLegsValuesWithLegIds","allLegs","legsValuesWithLegIds","parentPath","otherProperties","flattenNestedLegsErrorsOrWarning","allErrorOrWarningLegs","returnObject","flattenLegsValuesWithOptionId","tcLegs","flattenLegsErrorsOrWarningsWithOptionId","tcLegsErrorsOrWarning","appendLegKeysWithOptionId","getChildrenLegIds","mapPremiumData","premiumCurrency","computeNotionalAmount","notionalCurrencyState","computeIsStrikeInDelta","addValuesErrorsAndWarningsToLegs","allFlattenedLegs","flattenedLegsWithValuesErrorsAndWarnings","allLegsValues","errorsForLeg","warningsForLeg","mergeLegErrors","mergeLegWarnings","mergeLegValues","computeExpectedValue","mapPremiumType","optionTypeToModel","dateToModel","possibleSettlementTypesToModel","settlementTypeToModel","tcChangedFields","isTCNewModel","isMultiHedgesEnabled","tcLegsErrors","tcOptionErrors","tcLegsWarnings","tcOptionWarnings","changedFieldWithoutHedges","extractHedgeFromChangedFields","legsWarnings","flattenedLegsErrors","legsErrors","flattenedLegsWarnings","flattenedLegsValues","legsWithValues","optionValues","optionErrors","optionWarnings","mergeOptionValuesWithChanges","optionGlobalPremiumDateValuesFromLeg","getOptionGlobalPremiumDateChangedFieldsFromFirstLeg","optionErrorsFromLeg","getOptionErrorsFromLegErrors","cleanedLegs","removePremiumDateFromLegsError","optionWarningsFromLeg","getOptionWarningsFromLegWarnings","getMostNestedKey","getHedgesFromTradeCaptureHedges","getHedgesFromTradeCaptureChangedFields","legsWithoutHedges","legResult","hedgeResult","toReduxHedge","mapHedgeAmount","mapHedgeCurrency","getHedgeWarnings","getHedgeErrors","getHedgeWarningsOrErrors","tcWarningsOrErrors","hedgeWarningsOrErrors","warningsOrErrors","propertyTradeCaptureName","propertyWarnings","TRADE_CAPTURE_NAME_TO_LOCAL","extractHedgeCurrencyFromCallLeg","hedgeRate","extractHedgRateFromCallLeg","hedgeTypeToModel","extractHedgeNotionalFromCallLeg","getCallLeg","callLeg","hedgeAmountInCcy1","hedgeAmountInCcy2","alternativeValue","possibleSettlementTypes","keyWithMaxLength","anyVanillaLeg","getOptionErrorOrWarningFromErrorOrWarningLegs","optionErrorFromLeg","cleanedErrors","level","firstValue","errorsOrWarnings","nestedLegs","parentId","flattenLegs","legForIteration","isEmptyObject","pickedLegs","unflattenObject","findPath","foundPath","updateValueOnTargetPath","keyExists","parentKey","original","keyValuePair","nestedKey","nestedValue","targetKeys","keyValues","execArray","updateStateLegKeyToTradeCaptureLegKey","obj1","obj2","patchLegsFromAction","legsChangedToPatchWith","optionStrikeSolvedToPatchWith","optionPropertyChangedToPatchWith","otherPatch","patchHedgesFromAction","optionHedgePropertyChangedToPatchWith","getHedgePatch","getHedgeOptionPatch","hedgePatch","optionStrategyTypeChangedToPatchWith","createOptionStrategyTypeChangedPathVanillaLeg","createOptionStrategyTypeChangedPathTypedStrategyLegs","createDefaultVanillaLeg","defaultVanillaLeg","fxOptionMultileg","legIdsPatch","legGroupRemovedToPatchWith","legsImportedToPatchWith","importedLegIds","toPatchLegId","allImportedLegs","importedLeg","legsPremiumPinToggledToPatchWith","isLegPinned","premiumAsk","vanillaLegsIds","allPinned","pinChanges","marketPlace","settlementType","cashSettlementCurrency","legToAdd","legDuplicateToPatchWith","getOptionLegInputs","optionTileRestoreToPatchWith","updatedLegs","isVanillaSavedLeg","mapSavedVanillaLeg","updatedHedges","priceTypeCcy","optionTileOpenFromBlotterToPatch","mapBlotterOptionLegs","mapLegValues","optionTileResetToPatchWith","optionSolvingWantedToPatchWith","legsWithId","patchedLegs","mergeValues","unflattenLegs","unflattenHedgeId","buildTradeCaptureRequestCreator","changedOptionFields","getChangedOptionFieldsWith","getNewModelPatchedLegs","getOldModelPatchedLegs","mapOptionLegs","optionLegs","hedgesWithPatch","getEmptyHedges","mapOptionHedges","legsWithHedges","typedStrategyLegOrVanillaLegs","firstLegChangedProductName","firstStateLegId","firstStateLegProductName","incrementIdVersion","mappedOptionLegs","vanillaOrTypedStrategyLegs","metaSelectorOptionLegToTradeCapturePatch","childrens","childrenAcc","childrenLegId","childrenLeg","_side","_strike","_premiumBid","_premiumAsk","_markup","_volatilityBid","_volatilityAsk","possibleLegPatchInputs","legPatchInputs","firstChildrenLeg","legSide","legStrike","getHedgeCurrency","hedgeNotionalCurrency","optionHedgeProperties","hedgeTypeToPatch","optionTypeToPatch","settlementTypeToPatch","mapToPremiumType","priceAndCcyToPremiumType","_optionId","allHedges","optionResponseToPatchMetaSelector","generatePathFromResponseCreator","createTradeCaptureRequest","optionStrategyTypeChangedToPatch","legAddedToPatch","legDuplicatedToPatch","legChangedToPatch","legsChangedToPatch","optionStrikeSolvedToPatch","legsPremiumPinToggledToPatch","legRemovedToPatch","legGroupRemovedToPatch","legsImportedToPatch","optionPropertyChangedToPatch","optionHedgePropertyChangedToPatch","optionTileResetToPatch","optionSolvingWantedToPatch","optionTileRestoreToPatch","optionTileInstrumentChangedToPatch","swapRfsExecuteRequestWith","farPointsTrader","spot","spotWithWay","getRelevantPriceFromBidAsk","nearPriceWithWay","farPriceWithWay","farPointsWithMarginWithWay","nearPointsWithWay","farPointsWithoutMarginWithWay","nearSalesAllInRateWithWay","nearSalesAllInRate","farSalesAllInRateWithWay","farSalesAllInRate","swapRfsExecutionWith","nearNotionalAmount","farNotionalAmount","nearPaymentDate","allInPrice","swapTradeCaptureToBackendWith","productPatch","tradeCapturelegPatch","mapPriceReferenceToTradeCapture","SwapLegId","swapTradeCaptureFromBackendWith","swapProperties","swapErrors","swapWarnings","_legIsReadyToPrice","_legIsPriceObsolete","legProperties","legErrors","legWarnings","stateNearPrice","stateFarPrice","mapPriceReferenceFromTradeCapture","mapSwapTCPropertiesToSwapStoreProperties","metaSelectorTradeCaptureFromBackendToSwapLegValuesWith","_j","_k","_l","mappedSwapLegProperties","responseSwapLeg","responseSwap","mappedSwapProperties","priceState","priceReferenceBid","priceReferenceAsk","swapRfsExecution","createSwapTradeCaptureToBackendRequest","swapTCResponseToPatch","negociatedAmount","maturityDate","currencyPrecision","cashType","ndfData","emptyFxCashState","assertIsPricing","fullSpotWithoutMargin","fullSpotWithMargin","forwardPtsWithMargin","replyToStream","forwardPoints","cashRfsExecutionWith","fromBidAsk","swapPoints","ensureFieldIsDefined","expiryDate","expiryDateTenor","ndReference","ndFixingDate","mapCashPropertiesPatchToTCRequest","request","dateInputCultureInfo","CashLegId","cashLegPropertiesChangedToTCPatch","cashTileRestoreToTCPatch","cashTileOpenFromBlotter","cashTileIntrumentChangedToPatch","cashRfsExecuteRequest","cashRfsExecuteRequestWith","cashRfsExecution","cashBuildTradeCaptureRequest","cashBuildTradeCaptureRequestWith","dayAndTimeToDate","normalizedTime","dateTimeString","getUtcExpiry","expiryTime","utcExpiry","dateAndTimeToUtc","localDateTime","getDatesDataHOF","startTime","endTime","getEditedDatesDataHOF","getAmountsHOF","isFirstCurrency","getEditedAmountsHOF","getLimitPriceHOF","sharedProperty","getEditedLimitPriceHOF","getClipDataHOF","rowClipSize","getEditedClipDataHOF","metaSelectorBlotterOrderModifyData","getClipData","getLimitPrice","getDatesData","fixingMarginType","getAmounts","_m","_n","_o","_p","getBlotterOrderModify","orderMetaSelectors","metaSelectorBlotterOrderToBackend","makeOrderTypeToBackendPayloadWith","orderTypeSpecificPayload","makeOrderTypeToBackendPayload","currencyNumber","payload","toOmsSide","metaSelectorBlotterEditedOrderToBackend","makeEditedOrderTypeToBackendPayloadWith","fixingPriceType","isTakeProfitOrder","takeProfitMargin","applicableUtcExpiry","marginInBps","getOrderRequestFromBlotter","getEditedOrderRequestFromBlotter","metaSelectorBlotterOrderSimpleRequestData","getBlotterOrderSimpleRequest","getLogInstrumentType","getLegDealInfo","lkey","lvalue","metaSelectorBuildPendingExecutionEventLogWith","metaSelectorBuildExecutionPendingMailPayloadWith","metaSelectorBuildApiErrorExecutionEventLogWith","buildPendingExecutionEventLog","buildPendingExecutionMailPayload","buildApiErrorExecutionEventLog","toCurrencyLabel","buildAccuExecutionReportWith","toCurrencyLabelWithPair","expiryTenor","firstFixingDate","firstFixingTenor","lastFixingDate","fixingFrequency","numberOfFixings","akoTriggerValue","akoTrigger","barrier","ekiTriggerValue","ekiTrigger","ForexOptionExecuteRequestFrontDtoWay","buildAccuQuoteExecuteWith","splitNotificationsEmailsOptions","rfsQuoteId","accumulatorAmountSplitTypes","scheduleCustomFieldValues","camelize","makeGetValues","getTradeCaptureErrors","getTradeCaptureWarnings","tcFixingCustomFields","tcSchedule","stateFixingCustomFields","getMetadata","mapToSchedule","currencyPairRef","previousBarrier","mapToString","mapToHedgeType","hedgePrice","premiumPaymentDate","premiumPaymentDateTenor","mapToCurrencyChoice","leverage","leverageAmount","ekiDown","pivot","ekiUp","possibleAccuTypeList","mapAkoTriggerFromBackend","step2","mapToPriceCurrency","premiumPaymentCurrency","koPaymentConvention","possibleKoPaymentConventions","possibleFixingFrequencies","possibleFixingReferences1","possibleFixingReferences2","possibleSettlementFrequencies","possibleDeliveryTypes","possibleCashSettlementCurrencies","totalLeverageAmount","totalNotionalAmount","possibleCrossCurrencies","hasPreviousValue","hasNewValue","responseError","responseWarning","toStringMapper","prevValue","tcScheduleCustomFields","_tcWarnings","scheduleFixings","extractErrorsFromTC","previous","fieldErrors","extractPreviousValues","fieldMapper","affectedLeg","affectedField","previousFieldName","previousTcValue","currLeg","custom","accumulatorChangedToPatchWith","accumulatorScheduleChangedToPatchWith","accumulatorScheduleResetToPatchWith","accumulatorScheduleAddedToPatchWith","accumulatorScheduleRemovedToPatchWith","accumulatorScheduleImportedToPatchWith","accumulatorRestoreToPatchWith","metaSelectorAccumulatorToTradeCapturePatchWith","toTradeCaptureLegPatch","metaSelectorAccumulatorToTradeCaptureLegPatchWith","productChangedFields","toTradeCapturePatch","legChangedFields","isFirstHedgeCurrency","mapToTcHedgeType","expiryDateString","targetAccuType","mapToPremiumPaymentCurrency","mapToCurrency","mapAkoTriggerToBackend","mapToTradeCaptureSchedule","accuType","accumulatorScheduleChangedToPatch","accumulatorScheduleResetToPatch","accumulatorScheduleAddedToPatch","accumulatorScheduleRemovedToPatch","accumulatorScheduleImportedToPatch","accumulatorRestoreToPatch","createAccumulatorTradeCaptureRequest","accumulatorResponseToPatchMetaSelector","buildAccuQuoteExecute","buildAccuExecutionReport","keysWhichShouldMakeFieldReset","shouldResetField","ignoreResetPredicate","patchedKey","computeTakeProfitCustomerPrice","ignorePriceResetPredicate","computeTakeProfitLimitPrice","metaSelectorOrderToBackend","orderTypeToBackendPayload","splitNotificationsEmailsOrders","orderClockOffset","dateNow","isNdf","maturityDateString","startDateUtc","endDateUtc","liquidityPool","speed","metaSelectorOrderToBlotterOrderData","commonValues","startDateTime","getDateNow","getOrderRequest","getBlotterOrderData","buildTieringRequestWith","buildTieringRequest","localeThousandSeparator","localeDecimalSeparator","formatNumberAsStringToLocale","integer","localeInteger","splitIntegerByThousands","splitNumber","leftHandLength","splitInto","splitIndex","cursor","localized","stringToNumber","dateBR","toCol","shouldSaveTile","makeGetTileToSave","makeCashTileToSave","makeOptionTileToSave","makeSwapTileToSave","makeAccumulatorTileToSave","getValueOrUndefined","maturityDateTenor","isVanillaLegInput","allLegsInputs","allHedgesInputs","updatedLegsInSavedTileFormat","stripOptionIdFromElementId","mapVanillaLeg","updatedHedgesInSavedTileFormat","targetProfitType","firstFixingDateTenor","crossCurrency","fixingReference1","fixingReference2","settlementFrequency","argLeg","isNotUndefinedTuple","tuple","tabsToSave","blotter","getBlotterToSave","pickPropertiesToSave","mapToSavedTab","cashMetadata","optionMetadata","orderMetadata","accumulatorMetadata","getWorkspaceToSaveWith","metaSelectors","bulkMsl","optionMsl","swapMsl","cashMsl","blotterMsl","eventLogMsl","accumulatorMsl","orderMsl","espMsl","workspaceMsl","effects","cssSelector","sentValue","inputValue","formattedNumber","makeEpicMiddleware","api","getApiUrl","apiUrl","correlationIdHeaderName","buildContentTypeHeader","buildCorrelationIdHeader","headers","buildFakeAuthenticationHeader","cleanUpSensitiveInformation","getAuthorizationHeader","ajaxApi","buildCommonHeaders","fakeAuthenticationHeader","buildPostHeaders","catchError","buildGetHeaders","sgmeHttp","SgmeHttp","ajax","_objectSpread2","formatProdErrorMessage","$$observable","randomString","ActionTypes","isPlainObject","createStore","reducer","preloadedState","enhancer","currentReducer","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","nextReducer","outerSubscribe","observer","observeState","assertReducerShape","reducers","combineReducers","reducerKeys","finalReducers","finalReducerKeys","shapeAssertionError","hasChanged","previousStateForKey","nextStateForKey","compose","applyMiddleware","middlewares","middlewareAPI","chain","clientWorkspaceTabsReducer","findLastNumber","clientWorkspaceActiveTabReducer","mapToTileInstrument","clientWorkspaceTilesReducer","expanded","existingTileState","newTiles","clientWorkspaceGrowlsReducer","growls","tradingDisabledReducer","defaultSaveState","saveStateReducer","clientWorkspaceReducer","addPriceRecorded","validationPartialReducer","reducerInstrument","validation","_error","mapDisplayPriceType","emptyStateWithGrouping","defaultLegIds","getLastNumberLastLegId","legKeys","legIdValue","allIds","optionValidationReducer","optionsProductReducer","errorKey","newErrors","oldOption","fxOptionMultilegIds","lastLegId","metadata","optionsStreamsReducer","setKeyIfExisty","prevStream","optionsStrippingsReducer","typedStrategyLegTypes","strategyLegTypes","optionsLegsReducer","createEmptyTypedLegState","multilegId","stateWithMultileg","getLegKeysForOption","currentLegKey","currentLegId","createEmptyFxOptionsState","findLegIdgOfType","firstVanillaLegId","firstVanillaLeg","defaultValues","emptyFxOptionStateWithoutValues","newLeg","newFxOptionMultileg","updateLeg","legError","patchOptionLegs","legIdKeys","childrenLegIds","getFirstLegOfMultilegOfOption","isAlreadyStrikeSolving","fillLeg","patchLeg","existingLeg","patchedLegId","currentLeg","emptyFxOptionLegState","stateWithoutCurrentLeg","updatedLeg","legPatchWithoutStrikeSolvingDoublon","getStrikeToSolvingFor","getAllLegsOfOption","optionLegId","ids","optionsHedgesReducer","getHedgeKeysForOption","currentHedgeKey","originalHedge","currentHedgeId","patchHedgeFromOption","hasOptionHedgeUpdate","patchHedge","newValues","oldValues","mergeValuesOrDefault","fxOptionsReducer","fxCashsStreamsReducer","initialRfsWindow","nullifyNDFields","cashValidationReducer","fxCashsProductReducer","addCashForTileIfNeeded","patchedFields","cash","updateCashMarginOnEspPrice","newCashsState","isMarginsSet","fxCashsReducer","emptyFxSwapState","swapValidationReducer","swapsReducer","swap","_swap","keyState","swapStreamsReducer","fxSwapsReducer","bulkLineTypeMap","Step","emptyFxBulkState","emptyFxBulkLegState","bulkValidationReducer","bulksReducer","bulk","errorsToKeep","legsIds","potentialLastLegId","_bulk","bulkStreamsReducer","currentStreamState","patchBulkLegs","resetLeg","legsReducer","getLegKeys","updateBulkLeg","accumulatedState","_stateAcc","splitLegsReducer","toSimpleLeg","nettedLegsReducer","toMargedLeg","old","marginReducer","bulkLegId","computeMargin","simpleLeg","getBidAskValueWithWay","fxBulksReducer","defaultFxAccumulatorState","defaultFxAccumulatorsState","updateInput","accumulatorValidationReducer","fxAccumulatorsProductReducer","accumulator","legacyAccu","displayMode","defaultFxAccumulatorRfsStreamState","fxAccumulatorsRfsStreams","legPatcher","fxAccumulatorsScheduleReducer","removeSchedules","prefixScheduleId","scheduleId","deletedSchedule","otherSchedules","fxAccumulatorsReducer","addCurrencyPairRuntimeFields","referenceDataReducer","toClientsMap","updateCcyPairsWithLocalMarket","updateClosedDates","existingCcyPair","newCurrencies","swapElements","pinnedCompanies","newIndex","tmp","pinneds","existingPairs","dates","currenciesData","ccyPairData","defaultState","streamingConnectionReducer","addGridItem","newGridItemPositions","gridItemPositions","newGridItemSizes","gridItemSizes","colNumber","newTileLocus","missingColNumber","missingColumns","newColumns","sortLocus","updateAddTilePositions","addTilePositions","columnIndex","previousBottom","newAddTilePosition","updateLocusByPixelOffset","pixel","shiftRight","lociCoordinates","previousGridState","locusCoordinate","shiftRightOnceGridItemHorizontalPosition","locusToMove","getLociById","getRightNeighbourGridItemCoordinates","recursivelyObtainedNewState","neighbours","columnWithDeletedLocusUpdater","insertionLocusIndex","columnWithInsertedLocusUpdater","updatedColumns","newPositions","loci","previousGridLayout","updateGridItemVerticalPosition","oldTop","getPositionById","newTop","getUpwardNeighbourGridItem","deltaPixel","newGridState","getDownwardNeighbourGridItem","removeGridItem","columnUpdater","newGridLayout","reduceGridItemVerticalOffsetPropagation","stripTrailingEmptyColumns","verticalSizeChanged","oldSize","getSizeById","updateGridItemSizeByGridItemId","horizontalSizeChanged","deltaCol","templateLocus","findLocusInsertionIndex","gridStateTmp","getInsertionLocusIndex","deleteLocusInColumns","downWardNeighbours","colUpdater","gridItemSizeChanged","updateHeight","updateWidth","setDraggingStatus","draggingGridItemId","isDragging","dragGridItem","move","layout","originalPosition","downwardNeighbours","originColumns","getOccupiedColumnsIndicesByCoordinates","filterOrigin","destinationColumns","newLocus","indexFinder","insertDestination","insertionIndex","newLayout","destinationDownwardNeighbours","restoreGridItem","addLoci","colSize","colPosition","maxIndex","columnIndexes","submitDraggingLayout","defaultLayout","defaultAddTilePositions","defaultGridState","defaultGridCollection","gridLayoutAuthorizedInstruments","gridCollectionReducer","gridLayoutCollection","gridStatePatcher","sessionReducer","dateInputCultureInfoOptions","autoCloseGrowlAfterChoices","accountLengthOptions","defaultUserPreferenceData","userPreferenceShowReducer","userPreferenceDataReducer","userPreferencesReducer","integrateTrades","currentTrades","newTrades","trade","existingTrade","strategyNewChildrenIds","updatedTrades","tradesToAdd","updateChildrenIds","stratId","newChildIds","existingChildrenIds","childIdsToAdd","childId","possiblePriceFields","isPriceField","isOrderBlotterLimitEntry","isBlotterOrderLimitInputs","getCurrentPriceField","calculatePrice","calculatePriceWith","subtractMarginFromPrice","addMarginFromPrice","operation","marginValue","response","extractAndComputeOrderValidationDetails","omsError","omsFieldToStateField","parseAndExtractDayAndTime","maturityDay","parseAndExtractDay","validationResponseDetailContent","receivedDateTime","nullifyEmptyDate","tradeNotificationToTradeBlotterEntryWith","getChildrenIdsInBlotterData","tradesList","isChildrenOf","getChildrenIds","tradeNotificationsData","tradeData","orderNotificationToOrderBlotterEntryWith","mapValuesWith","convertExpiryToUserTimezone","convertExpiryToUserTimezoneWith","mapValues","localExpiryData","dayTime","omsFieldToBlotterOrderStateField","extractBlotterOrderValidationDetails","endDayTime","getMarginWith","startDayTime","orderValidationReducer","intradayReducer","blotterData","patchValueByProperty","mapOrderInputsToValues","updateTradeState","newTrade","legacyTrade","strategyReferenceTrade","takeProfitmargin","inputsWhichNeedNumberConvert","needConvert","currentPriceField","getPrice","getPriceWith","customerPriceValue","historicalTradesReducer","removeError","errorValue","filterArray","removeNetworkError","removeLiveError","removeHistoricalError","removeHistoricalOrderError","addError","insertInArray","addNetworkError","addLiveError","addHistoricalError","addHistoricalOrderError","updateBlotterEnableShowMyMainDeals","isVisible","metadataReducer","ordersReducer","prepareCommonResetFieldsAfterTypeChange","prepareSpecificResetFieldsAfterTypeChangePatch","prepareResetExpiryPatch","prepareFixingPatch","preparePricesAndMargin","_order","initialPatch","mapValuesFromActionIfValidated","getFixingOrderValues","adaptPriceForTakeProfitIfNeeded","commonResetFields","specificResetFieldsAfterChangePatches","convertAmountToNumber","editedOrdersReducer","mappedInputs","blotterReducer","executionsReducer","orderEmailsReducer","orderTemplatesReducer","fxOrdersReducer","emptyFreeLayout","freeLayoutStatePatcher","openTileOffset","freeLayoutCollectionReducer","existing","otherItemPositions","itemPositions","espStreamsReducer","mifid2ToggleReducer","mifid2NegotiationsReducer","quotes","mifid2StartingNegotiationReducer","getMifidQuoteId","mifid2QuotesReducer","mifid2PanelReducer","toastsReducer","rootReducer","globalErrorReducer","isStreamingData","blotterDataTypes","isBlotterLiveNotification","isDisconnectionNotification","isRequestForStreamData","logLevelMap","getLogLevelCode","idLogger","loggerBuilder","query","queryLogLevel","logLevel","title","requestType","worker","MyWorker","fromWebworker$","toWebworker$","fromMessagePort","windowMs","intervalMs","maxEspStreamingMs","setUserInfo","loggingSessionId","terminate","hidden","dom","startWith","delayMs","source$","pollingDelayMs","hidden$","messageType","SubjectFactoryByProperty","legacy$","heartbeatMissed$","share","flush$","session$","dataStream$","disconnectionNotification$","blotterNotification$","withLatestFrom","hiddenBefore","measuredDelay","item","observedDelay","hiddenAfter","delayInfo","esp$","esp","rfs$","getStreams","createCircuitBreaker","fused","subs","onCrash","crashStatus","crash$","obs","actionsToCategories","extractTypeRegex","mapActionToCategory","matomoHandlerInitializer","matomo","mapDisplayType","trackedOptionStrategyType","errorActions","createAppCrashedAction","changeTileClientError","sanitizeLoggedAction","logActionCallback","tryCatchMiddleware","onCatchActionCreator","logActionMiddleware","espPriceReceived","gridItemSizeChange","gridItemDrag","crashOnActionMiddleware","crash","autosendHelpRequestMiddleware","isDev","sendHelpRequest","catchMiddleware","crashHandler","rememberLastActionsMiddleware","actionsBuffer","maxActions","circuitBreakerMiddleware","shouldBreak","referenceDataApi","http","getGuid","_logger","correlationId","tradeCaptureApi","queries","httpCall","mapCashTCLegPropertiesToCashStoreLegProperties","responseCashLeg","mappedCashLegProperties","mapTCCashResponseToCashPropertiesPatch","currencyProperties","mergeAll","numberOfRequests","quoteCancelRequestApi","optionQuoteRequestApi","optionQuoteUpdateApi","fieldIn","fieldOut","optionQuoteExecuteRequestApi","transformEmailsToBase64","cashRfsQuoteExecuteRequestApi","cashEspQuoteExecuteRequestApi","cashRfsQuoteRequestApi","cashStreamRequestApi","cashStreamsRefreshApi","espStreamUnsubscribeRequestApi","omsApi","sendRequestHOF","sendRequest","isOmsOrderValidationResponse","isOmsOrderValidationResponseWithFieldError","recordPriceRequestApi","sessionServiceApi","swapRfsQuoteRequestApi","swapRfsQuoteExecuteRequestApi","swapRfsCancelApi","cashRfsCancelApi","composeLeftFunction","intermediaryResult","filterColumn","defaultSavedBlotter","currentVersion","updater1","previousWorkspace","tryToUpdateFormat","discardIfOldFormat","defaultTabType","addBlotterColumn","removeBlotterColumn","columnId","blotterTab","getSavedTab","blotterStateToModify","tabToModify","after","addColumn","legacyColumnState","other","updater2","columnIds","previousColumnState","updater3","updater4","renameBlotterTabColumn","previousblotter","columnState","updater5","updater6","updateOptionTiles","updateOptionTileLegs","firstLegProduct","updater7","updateAccumulatorTiles","updater8","isTypedLeg","computeVanillaLegs","subLegs","typedLeg","vanillaLegs","legsWithIndexKey","updater9","updaters","previousData","anUpdater","workspaceServiceEndPoint","endPoint","workspaceServiceApi","userPreferencesServiceApi","userPreferences","transformEmails","transformEmailsCash","transformEmailsOrders","EmailsTransformed","bulkQuoteRequestApi","bulkQuoteExecuteApi","bulkQuoteCancelApi","blotterServiceApi","showMyMainDeals","counterpartyBdrInitials","fromDate","NO_TIERING","cashTieringRequestApi","req","orderEmailsApi","xoneAutomationApi","preTradeRegistrationApi","bamSearchApi","dealId","accumulatorRfsRequestApi","accumulatorRfsCancelApi","accumulatorRfsExecuteApi","ordersTemplatesServiceEndPoint","ordersTemplateServiceApi","pinnedCompaniesServiceEndPoint","pinnedCompaniesServiceApi","smartRfsServiceApi","endpoint","createFxApi","optionTradeCaptureApi","cashTradeCaptureApi","swapTradeCaptureApi","bulkTradeCaptureApi","accumulatorTradeCaptureApi","sendHelpRequestObservable","eventLogApi","dateApi","devEnv","devServerBackend","getEnvironment","environment","agGridLicenseKey","producerCode","footerWidget","_footerWidget","_userConsentAsyncResolve","_userConsentAsyncReject","consent","getMatomo","userConsentAsync","resolve","reject","MatomoUtils","__publicField","currentDomain","matomoScript","firstDocumentScriptNode","login","isOk","category","additionalData","scope","_matomo","thunkExtraArgument","lastActions","getLastActions","getStore","fxApi","utils","__vitePreload","makeRootEpic","sendHelpRequestHOF","sgmeHttpParam","sgwtConnectParam","lastActionsGetter","isProbablyUsingRemoteDesktop","probableConnection","includeState","includeLastActions","cleanUpSensitiveInformations","httpPost","_payload","screenshot","throwError","_sendHelpRequest","additionalParams","HelpButton","constructor","sendHelp","updateStatus","stringifyIfNeeded","then","catch","JSON","stringify","sendHelpStatus","statusUpdateCallBack","labelId","_Fragment","mailLink","root","factory","this","modules","installedModules","__webpack_require__","moduleId","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","source_map_consumer","global_mapForUri","mapStackTrace","done","lines","rows","expected_fields","skip_lines","fetcher","Fetcher","traceFormat","isChromeOrEdge","isIE11Plus","isSafari","processSourceMaps","Semaphore","xhr","createXMLHTTPObject","absUrlRegex","mapUri","embeddedSourceMap","lastSlash","mapForUri","origName","origNameChrome","origNameFirefox","origPos","formatOriginalPosition","origLine","XMLHttpFactories","xmlhttp","util","binarySearch","ArraySet","base64VLQ","quickSort","SourceMapConsumer","aSourceMap","sourceMap","IndexedSourceMapConsumer","BasicSourceMapConsumer","aStr","aSourceRoot","aCallback","aContext","aOrder","mappings","sourceRoot","mapping","aArgs","needle","originalLine","originalColumn","sources","names","sourcesContent","smc","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","Mapping","generatedLine","previousGeneratedColumn","previousOriginalLine","previousOriginalColumn","previousSource","previousName","cachedSegments","temp","originalMappings","segment","aNeedle","aMappings","aLineName","aColumnName","aComparator","aBias","nextMapping","aSource","nullOnMissing","fileUriAbsPath","sections","lastOffset","offsetLine","offsetColumn","sectionIndex","section","cmp","generatedPosition","sectionMappings","adjustedMapping","getArg","aName","aDefaultValue","urlRegexp","dataUrlRegexp","urlParse","aUrl","urlGenerate","aParsedUrl","normalize","aPath","isAbsolute","aRoot","aPathUrl","aRootUrl","joined","relative","supportsNullProto","toSetString","isProtoString","fromSetString","compareByOriginalPositions","mappingA","mappingB","onlyCompareOriginal","compareByGeneratedPositionsDeflated","onlyCompareGenerated","strcmp","aStr1","aStr2","compareByGeneratedPositionsInflated","recursiveSearch","aLow","aHigh","aHaystack","aCompare","mid","aArray","aAllowDuplicates","set","sStr","isDuplicate","aIdx","base64","VLQ_BASE_SHIFT","VLQ_BASE","VLQ_BASE_MASK","VLQ_CONTINUATION_BIT","toVLQSigned","aValue","fromVLQSigned","isNegative","shifted","encoded","digit","vlq","aIndex","aOutParam","strLen","continuation","intToCharMap","bigA","bigZ","littleA","littleZ","zero","nine","plus","slash","littleOffset","numberOffset","ary","randomIntInRange","low","high","doQuickSort","pivotIndex","mapStateToPropsCollapsable","mapDispatchToPropsCollapsable","genericContext","pascalCasedKey","charAt","toUpperCase","withDisplayName","GenericContext","withValue","WithValue","genericProp","jsx_runtime_1","react_1","uninitializedValue","createSafeContext","identifier","initialValue","pascalCasedIdentifier","useGenericContext","createSafeContextWithHoC","SafeContextProvider","useSafeContextValue","makeWithContextValue","contextValueGetter","lazy","retryLazy","lazyWithRetry","__createBinding","k2","__exportStar","lazy_1","QuoteIdContext","QuoteIdProvider","withQuoteId","LegIdContext","LegIdProvider","withLegId","withQuoteAndLegIds","WithQuoteAndLegIds","HedgeIdContext","HedgeIdProvider","withHedgeId","GroupIdProvider","useGroupId","withQuoteAndHedgeIds","WithQuoteAndHedgeIds","IndexContext","IndexProvider","withIndex","WorkspaceIdContext","WorkspaceIdProvider","withWorkspaceId","LegIdsContext","LegIdsProvider","withLegIds","InstrumentContext","InstrumentProvider","withInstrument","GrowlIdContext","GrowlIdProvider","withGrowlId","IsZoomedContext","IsZoomedProvider","withIsZoomed","IsCollapsedContext","IsCollapsedProvider","withIsCollapsed","_renderPropsConnect","renderPropsConnect","stringOrUndefined","tileWrapper","overlay","e2e","errorPanel","collapsable","rate","checkBox","button","itemSelector","label","chip","menuItem","inputLevelE2eHandle","inputErrorLevel","alertLevel","buttonLevelE2eHandle","buttonErrorLevel","emphasis","cancelPricing","spotMid","isModifiedHandleValue","isModified","useToggle","initial","useCallback","clean","closeNow","CollapsableComponent","isCollapsed","toggleCollapsed","e2eHandle","UncontrolledCollapsable","collapsed","AccumulatorCollapseButton","stylis_min","unitlessKeys","reactPropsRegex","isPropValid","$","SummaryWIthoutBefore","styled","CollapsableBlockComponent","connectCollapsable","Collapsable","CollapsableBlock","reload","TechnicalDetails","pre","CrashModalRaw","userDetails","stackTrace","setUserDetails","sendHelpRequestCallback","placeholder","onChange","globalError","CrashModal","propertiesRequestError","ErrorLine","sentCallback","formatDetails","ErrorDetail","PropertiesErrorDetailsModal","multipassSessionId","multipassErrorCode","ErrorDetailsModal","accessRequestError","errorType","RequestAccessModalRaw","onMailChange","userMail","getIdTokenClaims","sub","accessError","assistance","submitButton","noClientsMessages","noProductsMessages","NO_CLIENTS","NO_PRODUCTS","RequestAccessModal","SessionDisconnectedModalRaw","errorMsg","br","session","logoffReason","SessionDisconnectedModal","SessionTimeoutModalRaw","sessionTimeout","SessionTimeoutModal","crudeEmailRegex","onKeyDownWith","onAddEmail","userInput","onPasteWith","addEmails","pastedText","possibleEmails","possibleMatch","SizeContext","FormSizeProvider","FormSizeConsumer","sizeClass","inputGroupClassName","formControlClassBySize","formControlClassName","levelClass","inputClassName","buttonEmphasisClass","buttonClassName","buttonIconClassName","typeOfState","EmailsDisplayContainer","div","IconButton","icon","scrollToBottom","setImmediate","scrollHeight","EmailsInput","live","notificationsType","onSubmit","onsubmitWithSplit","formControlClass","badgeClass","inputRef","emailsContainerRef","mappingValues","actionType","add","adds","remove","typeOfEmail","onKeyPress","onPaste","newEmails","onEditEmail","emailToEdit","dataset","onRemoveEmail","emailToRemove","onCancelChanges","onSubmitChanges","submittedEmails","autoComplete","mapStateToPropsUserPref","_ownProps","splitNotificationsEmails","mapDispatchToPropsUserPref","typeofEmail","connectUserPref","EmailComponent","userPrefValue","onChangeUserPrefWithSplit","onEmailsChangeWithSplit","splitEmails","onChangeUserPref","onEmailsChange","emailsDefault","dispatchDefault","useReducer","emailsReducerDefault","emailsCash","dispatchCash","emailsReducerCash","emailsOrders","dispatchOrders","emailsReducerOrders","emailsOptions","dispatchOptions","emailsReducerOptions","usePreferences","splitedEmails","NotificationEmails","UserPrefLabel","NEVER","choice","toString","AutoCloseGrowlAfterSelect","onChangeAutoCloseAfter","Number","AutoCloseGrowlAfterPref","StatusLabel","SwitchInput","useId","onSwitchChange","checked","htmlFor","CheckboxUserPrefInput","userPrefKey","tooltipId","tooltipTargetId","replaceAll","maxWidth","CheckboxUserPref","ShowSwapPointsPref","SplitNotificationsPref","ResetTileToSpotOnQuoteExecutionPref","ShowDeltaStrikePref","OptionOneWayQuotationPref","OptionExpandGreekAndMktPref","OptionDisplayMidVolatilityPref","OptionStrategyGroupLegsPref","OptionAlignCurrenciesPref","OrderQuickLimitPref","localeSeparators","getSeparatorByLocale","isAccelerator","keyReceived","acceleratorOffset","insertDigitKey","valueStartOffset","getCursorOffsetFromSelectionToValue","selectionStart","valueLocale","valueEndOffset","selectionEnd","valueCursorPositionStart","valueCursorPositionEnd","valueCursorDelta","leftHandString","rightHandString","newValueLocale","newValuePosition","newSelectionOffset","getCursorOffsetFromValueToSelection","changeSign","cursorPosition","negative","insertAcceleratorKey","multiplier","copy","getPreviousProps","addNextPropsToState","deriveStateOnChangedProps","DecimalKey","decimalKeyStateFromProps","onCopy","sep","edit","clipboard","onCut","dirty","isDecimal","isDecimalSeparator","integerOnly","isMinus","allowNegative","withAccelerators","reset","renderProps","currentValue","callbacks","nextDecimalKeyState","autofocus","createEventHandler","scopedEventHandlers","eventHandlers","scopedHandlers","NumberInputRenderProps","frozenValue","setFrozenValue","NumberInputHandler","getNumberInputHandlerValueFromDecimalKey","decimalKey","getNumberInputHandlerValueFromProps","events","valueFromDecimalKey","valueFromProp","onDirty","setSelectionRange","eventSetSelectionRange","clip","clipboardData","setData","getData","onFocus","select","onBlur","onBlurPristine","FormTypeContext","FormTypeProvider","FormTypeConsumer","InputGroup","formType","tabContext","TabContextProvider","TabContextConsumer","useTabContext","BareNumberInput","readOnly","tabNoIndex","e2eIsModified","inputMode","NumberInput","coerceDefaultNotional","DefaultNotionalInput","onDefaultNotional","DefaultNotionalPref","makeGetTrades","getAccountDisplayNameHoF","accountNameLength","blotterEntryEnhancer","getDisplayAccountName","mapStateToPropsLiveBlotter","getEnhancedTrades","getTrades","activeTabMetadata","getColumnsForExternalUser","mapDispatchToPropsLiveBlotter","tabMetadata","columnsStates","getTabs","getCountByTab","mapDispatchToPropsLiveBlotterTab","mapStateToPropsLiveBlotterPanel","mapDispatchToPropsLiveBlotterPanel","mapStateToPropsReadonly","mapDispatchToPropsMinimizeButton","mapStateToPropsHistoricalToggle","mapDispatchToPropsHistoricalToggle","mapStateToPropsHistoricalDateRange","mapDispatchToPropsHistoricalDateRange","mapDispatchToPropsHistoricalDateRangeOption","additionalAction","mapStateToPropsBlotterError","mapStateToPropsBlotterLoading","mapStateToPropsBlotterErrors","mapStateToPropsQuickBlotterButton","mapDispatchToPropsQuickBlotterButton","connectReadonly","connectMinimizeButton","connectBlotterMode","connectToggleMode","connectHistoricalDateRange","connectHistoricalDateRangeOption","connectLiveBlotter","connectLiveBlotterTab","mapStateToPropsLiveBlotterTab","connectLiveBlotterPanel","connectBlotterError","connectBlotterLoading","connectBlotterErrors","connectQuickBlotterButton","ShowMyMainDeals","fetching","canRefetch","onShowMyMainDealsChange","ShowMyMainDealsPref","createSwitchChildren","childrenMap","SwitchChildren","defaultSwitch","mapStateToPropsUserType","useUserType","IsInternal","userType","IsInternalSales","UserType","SelectColored","highlight","Select","selectProps","groupOptions","groupName","groupRender","themeKey","cdnUrl","variableSgbsUrls","updateThemeUrls","linkElement","newLinkElement","setTheme","getTheme","savedTheme","selectedTheme","ThemeContext","ThemeProvider","ChangeThemeComponent","ListUserPrefInput","intlLabelsPrefix","ListUserPref","AccountNameLengthPref","DateInputFormatPref","DefaultHedgeTypePref","DefaultPriceTypePref","OneClickExecPref","menuItems","general","notifications","UserPrefsByTab","userPrefsByTabConst","LeftColumn","Body","UserPreferencesContents","SelectedTabContent","setActiveTab","changeTab","CloseButton","UserPreferencesModalRaw","UserPreferencesModal","Footer","language","onFooterSetRef","phones","DraggingContext","DraggingProvider","DraggingConsumer","mapDispatchToPropsCatchTile","mapStateToPropsTileSize","mapStateToPropsQuoteHasError","mapDispatchToPropsQuoteError","mapStateToPropsTileInstrument","hasTileError","requestError","mapStateToPropsTileStatus","connectCatchTile","connectTileSize","connectQuoteHasError","connectQuoteError","connectTileInstrument","connectTileStatus","CloseTile","closeTile","mapDispatchToPropsCloseTile","connectCloseTile","CloseTileRaw","InstrumentChooserRaw","availableInstruments","onInstrumentChange","instrumentItem","InstrumentChoice","filterTileInstruments","mapStateToPropsInstrumentChooser","getFilteredInstruments","filteredInstruments","productAccess","getInstrumentChoiceForTile","getInstrumentChoiceForTileWith","mapDispatchToPropsInstrumentChooser","connectInstrumentChooser","InstrumentChooser","setGlobalCssModule","warnOnce","deprecated","toNumber","addMultipleEventListeners","warned","propType","explanation","TransitionStatuses","NAN","isBinary","defaultToggleEvents","_els","_events","useCapture","Fade_1","_extends2","_objectWithoutPropertiesLoose2","_defineProperty2","_classnames","require$$6","_reactTransitionGroup","require$$7","_utils","require$$8","PopperContent_1","_assertThisInitialized2","_inheritsLoose2","require$$9","_reactPopper","require$$10","require$$11","_Fade","require$$12","TooltipPopoverWrapper_1","_PopperContent","default_1","_TooltipPopoverWrapper","_getRequireWildcardCache","nodeInterop","cacheBabelInterop","cacheNodeInterop","hasPropertyDescriptor","RefToggle","PureComponent","propIsOpen","childrenProps","getTilePredealChecks","statusToIcon","Unknown","Nok","Warning","Missing","statusToStylename","predealCheckStatusHealth","PredealCheckLine","predealCheck","statusHealth","statusValue","PdcIcon","PredealChecksRaw","globalStatus","popover","PredealChecks","connectPredealChecks","mapStateToPropsNDCheckbox","canDealND","mapDispatchToPropsNDCheckbox","connectNDCheckbox","CheckboxInput","indeterminate","onCheckBoxChange","NDCheckboxRaw","NDCheckbox","inherits","possibleConstructorReturn","slicedToArray","sliceIterator","_arr","_s","windowObject","cancelFrame","requestFrame","TIMEOUT_DURATION","clearTimeoutFn","setTimeoutFn","cancelAnimationFrameFn","requestAnimationFrameFn","animationFrameID","timeoutID","createDetectElementResize","nonce","animationKeyframes","animationName","animationStartEvent","animationStyle","checkTriggers","resetTriggers","scrollListener","attachEvent","expand","contract","expandChild","animation","keyframeprefix","domPrefixes","startEvents","pfx","elm","createStyles","doc","head","addResizeListener","elementStyle","expandTrigger","contractTrigger","removeResizeListener","AutoSizer","_React$PureComponent","disableHeight","disableWidth","onResize","_height","_style","paddingLeft","paddingRight","paddingTop","paddingBottom","newHeight","newWidth","autoSizer","_props","outerStyle","childParams","bailoutOnChildren","safeIsNaN","isEqual","areInputsEqual","newInputs","lastInputs","memoizeOne","resultFn","lastThis","lastArgs","lastResult","calledOnce","newArgs","hasNativePerformanceNow","cancelTimeout","requestTimeout","tick","getScrollbarSize","recalculate","cachedRTLResult","getRTLOffsetType","outerDiv","innerDiv","innerStyle","IS_SCROLLING_DEBOUNCE_INTERVAL$1","defaultItemKey$1","createListComponent","_class","getItemOffset","getEstimatedTotalSize","getItemSize","getOffsetForIndexAndAlignment","getStartIndexForOffset","getStopIndexForStartIndex","initInstanceProps","shouldResetStyleCacheOnItemSizeChange","validateProps","_PureComponent","List","overscanStartIndex","overscanStopIndex","visibleStartIndex","visibleStopIndex","scrollDirection","scrollOffset","scrollUpdateWasRequested","itemSize","itemStyleCache","_offset","isHorizontal","isRtl","offsetHorizontal","___","_event$currentTarget","clientWidth","scrollWidth","_event$currentTarget2","clientHeight","outerRef","align","itemCount","scrollbarSize","_this$props3","initialScrollOffset","_this$props4","_this$state","_this$props5","innerElementType","innerTagName","itemData","_this$props5$itemKey","itemKey","outerElementType","outerTagName","useIsScrolling","isScrolling","onScroll","_this$_getRangeToRend","startIndex","stopIndex","items","_index","estimatedTotalSize","_this$_getRangeToRend2","_overscanStartIndex","_overscanStopIndex","_visibleStartIndex","_visibleStopIndex","_this$state2","_scrollDirection","_scrollOffset","_scrollUpdateWasRequested","_this$props6","overscanCount","_this$state3","overscanBackward","overscanForward","validateSharedProps$1","FixedSizeList","instanceProps","lastItemOffset","maxOffset","minOffset","middleOffset","numVisibleItems","normalizeInput","createFindStartRegexp","currencyPairFilter","re1","re2","currencyPairEmphasize","regexps","regexp","CurrencyPickerContext","CurrencyPickerProviderRaw","currentInputRef","escHandler","blur","CurrencyPickerProvider","useProductsAccess","orderTypeContext","OrderTypeContextProvider","OrderTypeContextConsumer","useOrderTypeContext","selectClass","invertedClass","ccyListContainerClass","rowHeight","filterCcy","filterFn","useEventHandler","filterCcyPairs","allCurrencyPairs","sort","sortCurrencies","makeFilterCcyPairsForInstrument","canTradeNonDeliverable","canBeDelivered","isAlgoOrderNdfAllowed","some","useCurrencyPairs","nonDeliverable","ccyPairsForInstrument","CurrencyList","availableCcyPairs","setInputValue","filteredCurrencyPairs","selectedIndex","setSelectedIndex","selectCcyPair","currencyPairChangeThunk","triggerError","min","selectedCurrencyPair","onClickListItem","shouldAppear","setShouldAppear","currentInput","listRef","scrollToItem","CurrencyListContainer","Autosizer","rowRenderer","CurrencyListItem","ccyInputValue","filteredCcyPairs","onCcyPairMouseDown","getListRowProps","isInverted","dangerouslySetInnerHTML","__html","CurrencyListContainerUl","ccyPairExtendedMessageValues","ccyPairExtended","mapStateToPropsFieldTooltip","mapDispatchToPropsFieldTooltip","mapStateToPropsLegFieldTooltip","mapDispatchToPropsLegFieldTooltip","createRefContext","contextDisplayName","RefContext","RefProvider","TooltipContainerContext","TooltipContainerRef","tooltipSuffix","invalid","valid","tooltipClassName","minWidth","callbackOnEventHelper","DisplayTooltip","localValidate","setValidationState","seen","onSeen","onSeenCallback","useConditionalCallback","setTarget","setOpen","isFocus","newValidationResult","messageValues","mapStateToPropsHedgeFieldTooltip","mapDispatchToPropsHedgeFieldTooltip","connectFieldTooltip","connectLegFieldTooltip","connectHedgeFieldTooltip","FieldTooltip","LegFieldTooltip","HedgeFieldTooltip","mapStateToPropsCurrencyPicker","connectCurrencyPicker","CurrencyPickerRaw","CcyInput","setTooltipTargetRef","CurrencyPicker","combinedRef","onInputFocus","onInputBlur","localFieldValidationClear","getAllClients","mapDispatchToPropsTileClientPicker","createFilterList","FilterList","filterByQuery","list","filteredList","selectionIndex","onQueryChange","goto","memList","memQuery","memFilteredList","trimAll","cleanDiacritics","collator","compareCompaniesPuttingTheseFirst","specialValues","normalizedSpecials","getIndex","indexB","indexA","specials","companyName","searchString","normalizedSearch","externalCompanyName","toLowerWithoutAccents","textPart","emphasizeWithAccentsIgnored","trimmedSearchString","normalizedText","trimmedText","normalizedSearchString","lastIndex","currIndex","HighlightMatches","ClientRow","onClientChange","gotoClient","onMouseEnter","PrimeBrokerBadge","primeBroker","showTooltip","ClientListRowMenu","pinClient","unpinClient","moveUpClient","moveDownClient","pinnedStatus","canMoveUp","canMoveDown","ClientListRowMenuConnected","maxClients","widths","table","bdr","Table","AccountContainer","BdrContainer","NameContainer","ClientList","foundClients","selected","pinned","getPinnedStatus","ClientPicker","ClientFilterList","ClientSelectEventHandler","clientFilter","banner","filterClientsBy","Banner","TileClientPicker","handleReset","onReset","isClientOverridden","connectTileClientPicker","mapStateToPropsTileClientPicker","TileClientPickerRaw","useQuoteType","countPercentage","computePriceType","displayPriceCurrency","numberFormatter","isPriceCurrency1","currentCurrency","displayedCurrency","quoteAskAmount","quoteBidAmount","computeTypedStrategyStrikeInfo","vanillaLegsId","putStrike","callStrike","callLegValue","putLegValue","callLegId","putLegId","putStrikeData","callStrikeData","formatOptionRawData","optionRawData","formatNumberWithDecimal","isTypedStrategy","firstVanillaLegValues","firstTypeOfSell","isFirstTypeOfSellExist","firstTypeOfBuy","isFirstTypeOfBuyExist","expiryTenorDateFormatted","optionLabel","strikeInfo","formatPointsValue","formatSwapRawData","swapDataToCopy","swapStateData","isAmountCurrency1","swapQuoteData","dealtCurrency","bidSpot","askSpot","bidNearPriceValue","askNearPriceValue","bidNearPrice","askNearPrice","bidNearPointsValue","askNearPointsValue","bidNearPoints","askNearPoints","bidFarPriceValue","askFarPriceValue","bidFarPrice","askFarPrice","bidFarPointsValue","askFarPointsValue","bidFarPoints","askFarPoints","bidSwapPointsValue","askSwapPointsValue","bidSwapPoints","askSwapPoints","formatAccumulatorRawData","accumulatorStateData","premiumPercent","accumulatorQuoteData","premiumCcy1","premiumCcy2","premiumPctCcy1","premiumPctCcy2","fixingFrequencyField","settlementFrequencyField","leverageField","amountMode","amountSplitType","notionalField","leveragedNotionalField","firstFixingField","lastDateField","strikeField","spotRef","clientPaysOrReceives","clientPremium","premiumField","accuTypeVariant","ekiValueField","eki","accuTypeAdditionalData","underlyingField","akoValueField","getSwapStateData","swapState","swapData","getSwapStreamStatus","emptyBidAskObject","streamStatus","isStreamId","getSwapRfsStreamQuote","midPoints","getDisplaySwapPointsAllIn","selectCopyToClipBoardRawData","getOptionQuote","getSwapQuoteData","Error","useGetFormattedDataToCopy","rawData","navigator","writeText","CopyToClipBoardDropDown","hideClipBoard","onCopyDataTileToClipboard","CopyToClipBoard","supportedInstruments","TileMenu","duplicateTile","resetTile","clientPicker","mapDispatchToPropsTileMenu","connectTileMenu","TileMenuRaw","AccountChanged","mapStateToPropsAccountChanged","accountId","AccountChangedRaw","CurrencyContainer","TileHeader","mapStateToPropsTestUtil","connectTestUtil","TestUtilSpanRaw","lastExecutedQuoteId","TestUtilSpan","getNextFocus","groupElement","currentElement","backwards","el1","i1","el2","i2","changeFocusOnKeyDown","onSubmitPreventDefault","TileWrapper","colsStyles","cols","TileContainer","setContainer","dragging","fixedColNumber","TileLayout","currencyList","col1","LeftCol","col2","col3","Extension","leftColWidth","leftColStyle","doubleExtensionWidth","doubleExtensionStyle","constantProps","errorClass","titleClass","span","tagWithProps","Danger","DangerTitle","CloseTileContainer","TileErrorRaw","showErrorDetails","TileError","mapStateToPropsSpinner","SpinnerContainer","waiting","SpinnerOverlay","TradeCaptureSpinner","emptyTileClass","TileEmptyRaw","TileEmpty","Catch","getDerivedStateFromError","componentDidCatch","errorInfo","onCatch","TileCatchError","elementRef","onSize","contentRect","currentObserver","TileSizeMonitor","gridItemSizeChangeThunk","useElementSize","FxCashTile","FxSwapTile","FxOptionTile","FxAccumulatorTile","FxOrderTile","OrderResultTileContent","instrumentChildren","Cash","Swap","Option","Accumulator","Order","BlotterOrder","TileInstrumentRaw","TileInstrument","FxOptionTileZoomed","FxAccumulatorTileZoomed","zoomedInstrumentChildren","ZoomedTileInstrumentRaw","ZoomedTileInstrument","TileStatusRaw","empty","TileStatus","QuoteStatusRaw","QuoteStatus","QuoteErrorRaw","resetLabelId","QuoteError","EmphasizedIcon","mapStateToPropsInstrument","mapStateToPropsViewSgLogExecutionError","mapDispatchToPropsViewSgLogExecutionError","mapStateToPropsCurrencyPair","mapStateToPropsExecStatus","currentExecutionId","mapDispatchToPropsExecStatus","mapStateToPropsTraderInfos","contribution","noTrader","mapStateToPropsMifidButton","isDisabled","priceRecords","mapDispatchToPropsMifidButton","mapDispatchToPropsFieldError","toModeStatus","orderStatus","mapStateToPropsOrderResultOverlay","mapDispatchToPropsOrderResultOverlay","connectViewSgLogExecutionError","connectCurrencyPair","CurrencyPairRenderProps","connectTileExecutionStatus","connectInstrument","connectTraderInfos","connectMifidButton","connectFieldError","connectOrderOverlay","Overlay","ExecutionOverlay","executionStatus","getColorForStatus","instrumentMessage","getSymbolForStatus","InstrumentedOverlay","Bulk","ExecutionStatus","AutoInstrumentProviderRaw","AutoInstrumentProvider","TileRoot","Suspense","fallback","GridDraggingPlaceholderRaw","GridDraggingPlaceholder","positiveOrZeroPosition","gridItemContainerClassName","GridItemContainer","sensitivityThresholdPixel","GridItem","isMouseDown","offsetPosition","addWindowEventListeners","mouseup","dragEnd","mousemove","onMouseMove","buttons","noDragSelector","matches","dragStart","removeWindowEventListeners","logWarning","drag","clientY","clientX","deltaPosition","centerOfMass","originalCenterOfMass","onDrag","onDragEnd","warnOnLeak","windowEventListeners","eventListener","capture","_GridItem","calculatedOriginalCenterOfMass","AddTileButton","AddTileContainer","NewTileRaw","addTile","clientWorkspaceNewDefaultTileAddedThunk","NewTile","mapStateToPropsFreeLayoutContainer","mapDispatchToPropsFreeLayoutContainer","getColumnsNumber","columnsNumber","getStyle","mapDispatchToPropsGridContainer","newPostion","mapStateToPropsTabContents","connectFreeLayoutContainer","connectGridContainer","mapStateToPropsGridContainer","connectTabContents","GridContainerRaw","draggingStatus","GridContainer","OrderResultOverlayRaw","modeStatus","onDismiss","onViewLog","onClose","OrderResultOverlay","defaultSize","GridItemsContainer","FreeLayoutContainerRaw","dragState","draggingItemId","positionDraggingItem","onPositionChanged","FreeLayoutContainer","Growls","BulkPricer","Workspace","ClientWorkspaceRaw","TabContents","TabContentsRaw","zoomedTile","ClientWorkspace","BlotterErrorIndicatorRaw","BlotterErrorIndicator","BlotterContent","LiveBlotterTab","BlotterContainer","BlotterHeader","BlotterPanelContent","DragHandle","LiveBlotterPanelRaw","initialHeight","onPanelHeightChanged","setOffsetPosition","setHeight","isResizing","setIsResizing","onMouseUp","maxHeight","innerHeight","isEventOnMatchingTarget","getContainerStyle","LiveBlotterPanel","liveBlotterCollapseIcon","CenteredFloatingButton","QuickBlotterButtonRaw","onShowBlotter","QuickBlotterButton","whenTrue","renderWhen","mapStateToPropsUserHasAccess","mapStateToPropsUserHasProducts","access","hasAccessOrUnneeded","products","mapStateToPropsFeatureToggle","toggles","mapStateToPropsAtLeastFeatureToggle","mapStateToPropsIsProductName","not","connectUserHasAccess","connectUserHasProducts","connectFeatureToggle","connectAtLeastFeatureToggle","connectIsProductName","UserHasAccess","RenderWhen","IsProductName","useTheme","HelpCenterId","defaultSendTo","btoa","sgmeConfiguration","helpCenterSendMailto","HelpCenter","class","helpCenterQuery","getHelpCenter","mapDispatchToPropsAppCrash","AppCrash","TabIdContext","TabIdProvider","TabIdConsumer","withTabId","WithTabId","getTabIds","getClientsIds","mapStateToPropsTabItem","getClientName","mapDispatchToPropsTabItem","mapStateToPropsTabName","mapDispatchToPropsTabName","mapDispatchToPropsCloseTabButton","connectTabList","mapStateToPropsTabList","connectTabItem","connectTabName","connectCloseTabButton","mapStateToPropsChangeTabTypeButton","mapDispatchToPropsChangeTabTypeButton","mapStateToPropsTabPopover","getClients","mapDispatchToPropsTabPopover","connectChangeTabTypeButton","connectTabPopover","ChangeTabTypeButtonRaw","toggleTabType","ChangeTabTypeButton","TabPopoverRaw","UserHasProducts","TabPopover","CloseTabButtonRaw","CloseTabButton","createHandler","scopedHandler","InputToggle","Handler","EnhancedInput","afterUserInput","onkeydown","displayClassName","strong","isEditable","TabNameRaw","rename","TabName","TabItemContainer","TabItemRaw","showClose","clientName","TabItem","TabBar","TabListRaw","setOffset","setMaxOffset","tabBarRef","newMaxOffset","onWheel","deltaMode","WheelEvent","DOM_DELTA_PIXEL","deltaY","TabList","mapDispatchToPropsAddTabButton","mapStateToPropsLockButton","mapDispatchToPropsLockButton","mapDispatchToPropsUserPrefButton","mapStateToPropsSaveWorkspaceButton","mapDispatchToPropsSaveWorkspaceButton","mapDispatchToPropsMifidPanelButton","mapStateToPropsTabsMenu","mapDispatchToPropsTabMenuItem","connectAddTabButton","connectLockButton","connectUserPrefButton","connectMifidPanelButton","connectSaveWorkspaceButton","connectTabsMenu","connectTabMenuItem","DisabledButtonLike","DisableableButtonWithTooltip","tooltipContents","btnLikeRef","setBtnLikeRef","btnRef","setBtnRef","tooltipTarget","MenuButton","tooltip","AddTabButtonRaw","addTab","AddTabButton","lockedTooltip","unlockedTooltip","LockButtonRaw","locked","canToggleLock","toggleLock","iconClassName","LockButton","UserPrefButtonRaw","toggleUserPref","UserPrefButton","HelpRequestModal","HelpRequestButton","shouldTakeScreenshot","useFeatureToggles","icons","READY","PENDING","SUCCESS","FAIL","tooltipIds","SaveWorkspaceButtonRaw","saveWorkspace","saveWorkspaceState","allowSaveWorkspace","SaveWorkspaceButton","MifidPanelButtonRaw","toggleMifidPanel","MifidPanelButton","TabMenuItemRaw","onSwitchToTab","TabMenuItem","TabsMenuRaw","setMaxHeight","TabsMenu","NavMenu","MenuButtons","languageChanged","navigateAsSelectUser","ready","signIn","signOut","stopNavigationAs","detail","pluck","pluckLanguage","AccountCenter","accountCenterElement","authentication","availableLanguages","debug","hideCurrentLanguage","hideServicesLink","navigateAs","json","navigateAsUser","navigateAsList","showNotification","displayHelpCenterLink","topicId","topic","HelpCenterLink","helpCenterLinkId","displayLink","NotificationZone","notif","streamingInitializingNotification","streamingUnavailableNotification","streamingDegradedNotification","userOfflineNotification","streamingNotOptimalNotification","mapStateToPropsNotificationZone","HeaderButtons","MifidPanel","HelpRequest","UserPref","outIcon","out","Header","setCustomVariable","trackPageView","onOpenCalendar","track","xmlns","viewBox","fill","rel","getNegotiationsIds","mapDispatchToPropsMifidPanel","mapStateToPropsNegotiation","mapDispatchToPropsNegotiation","mapStateToPropsMifidQuote","connectMifidPanel","mapStateToPropsMifidPanel","connectNegotiation","connectMifidQuote","MifidQuoteRaw","MifidQuote","OverlayDiv","hasFailed","onRemoveNegotiation","NegotiationRaw","onRecordTimestamp","onDealDone","onDealMissed","Negotiation","Container","MifidPanelRaw","negociations","isCreatingNewNegotiation","onNewNegotiation","Theme","setThemeState","setThemeFunction","newTheme","toggleTheme","toastTypeToClass","Toast","ToastsContainer","ToastsRaw","toasts","removeGrowl","Toasts","AppModals","App","WorkspaceBar","getLang","getItem","renderReactApp","ReduxProvider","StrictMode","listenToAllExecution","Type","productType","mapRejectToStreamError","mappedReject","sgwtConnectEventEmitter","notifyWebWorker","EVENT_AUTH_DISCARDED","logAction","EVENT_AUTH_EXPIRED","EVENT_AUTH_RENEW_ERROR","EVENT_AUTH_RENEW_SUCCESS","rafSchd","frameId","wrapperFn","patchStoreSubscribeWithScheduler","isStart","isReconnect","isDisconnect","bootstrap","setConfig","handleSgConnectEvents","setupSgwtConnectWidget","streaming$","streamingConnected","streamingReconnectedThunk","rafSchedule","patchedStore","widget","defaultContext","_font","getMeasureTextWidthContext","font","ctx","fonts","forceLoadFonts","loadFont","weight","authorizationError"],"sources":["../../index.html?html-proxy&index=1.js","../../src/api/connect.ts","../../src/state/streamingConnection/streamingConnectionActions.ts","../../src/state/streamingConnection/streamingConnectionThunks.ts","../../node_modules/.pnpm/react@18.2.0/node_modules/react/cjs/react.production.min.js","../../node_modules/.pnpm/react@18.2.0/node_modules/react/index.js","../../node_modules/.pnpm/scheduler@0.23.0/node_modules/scheduler/cjs/scheduler.production.min.js","../../node_modules/.pnpm/scheduler@0.23.0/node_modules/scheduler/index.js","../../node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom.production.min.js","../../node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/index.js","../../node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/client.js","../../node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.2.0/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../../node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.2.0/node_modules/use-sync-external-store/shim/index.js","../../node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.2.0/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../../node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.2.0/node_modules/use-sync-external-store/shim/with-selector.js","../../node_modules/.pnpm/react-redux@8.0.5_@types+react-dom@18.0.11_@types+react@18.0.30_react-dom@18.2.0_react@18.2.0_redux@4.2.1/node_modules/react-redux/es/utils/batch.js","../../node_modules/.pnpm/react-redux@8.0.5_@types+react-dom@18.0.11_@types+react@18.0.30_react-dom@18.2.0_react@18.2.0_redux@4.2.1/node_modules/react-redux/es/components/Context.js","../../node_modules/.pnpm/react-redux@8.0.5_@types+react-dom@18.0.11_@types+react@18.0.30_react-dom@18.2.0_react@18.2.0_redux@4.2.1/node_modules/react-redux/es/hooks/useReduxContext.js","../../node_modules/.pnpm/react-redux@8.0.5_@types+react-dom@18.0.11_@types+react@18.0.30_react-dom@18.2.0_react@18.2.0_redux@4.2.1/node_modules/react-redux/es/utils/useSyncExternalStore.js","../../node_modules/.pnpm/react-redux@8.0.5_@types+react-dom@18.0.11_@types+react@18.0.30_react-dom@18.2.0_react@18.2.0_redux@4.2.1/node_modules/react-redux/es/hooks/useSelector.js","../../node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/esm/extends.js","../../node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/cjs/react-is.production.min.js","../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js","../../node_modules/.pnpm/hoist-non-react-statics@3.3.2/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../../node_modules/.pnpm/react-is@18.2.0/node_modules/react-is/cjs/react-is.production.min.js","../../node_modules/.pnpm/react-is@18.2.0/node_modules/react-is/index.js","../../node_modules/.pnpm/react-redux@8.0.5_@types+react-dom@18.0.11_@types+react@18.0.30_react-dom@18.2.0_react@18.2.0_redux@4.2.1/node_modules/react-redux/es/connect/selectorFactory.js","../../node_modules/.pnpm/react-redux@8.0.5_@types+react-dom@18.0.11_@types+react@18.0.30_react-dom@18.2.0_react@18.2.0_redux@4.2.1/node_modules/react-redux/es/utils/bindActionCreators.js","../../node_modules/.pnpm/react-redux@8.0.5_@types+react-dom@18.0.11_@types+react@18.0.30_react-dom@18.2.0_react@18.2.0_redux@4.2.1/node_modules/react-redux/es/connect/wrapMapToProps.js","../../node_modules/.pnpm/react-redux@8.0.5_@types+react-dom@18.0.11_@types+react@18.0.30_react-dom@18.2.0_react@18.2.0_redux@4.2.1/node_modules/react-redux/es/connect/invalidArgFactory.js","../../node_modules/.pnpm/react-redux@8.0.5_@types+react-dom@18.0.11_@types+react@18.0.30_react-dom@18.2.0_react@18.2.0_redux@4.2.1/node_modules/react-redux/es/connect/mapDispatchToProps.js","../../node_modules/.pnpm/react-redux@8.0.5_@types+react-dom@18.0.11_@types+react@18.0.30_react-dom@18.2.0_react@18.2.0_redux@4.2.1/node_modules/react-redux/es/connect/mapStateToProps.js","../../node_modules/.pnpm/react-redux@8.0.5_@types+react-dom@18.0.11_@types+react@18.0.30_react-dom@18.2.0_react@18.2.0_redux@4.2.1/node_modules/react-redux/es/connect/mergeProps.js","../../node_modules/.pnpm/react-redux@8.0.5_@types+react-dom@18.0.11_@types+react@18.0.30_react-dom@18.2.0_react@18.2.0_redux@4.2.1/node_modules/react-redux/es/utils/Subscription.js","../../node_modules/.pnpm/react-redux@8.0.5_@types+react-dom@18.0.11_@types+react@18.0.30_react-dom@18.2.0_react@18.2.0_redux@4.2.1/node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../../node_modules/.pnpm/react-redux@8.0.5_@types+react-dom@18.0.11_@types+react@18.0.30_react-dom@18.2.0_react@18.2.0_redux@4.2.1/node_modules/react-redux/es/utils/shallowEqual.js","../../node_modules/.pnpm/react@18.2.0/node_modules/react/cjs/react-jsx-runtime.production.min.js","../../node_modules/.pnpm/react@18.2.0/node_modules/react/jsx-runtime.js","../../node_modules/.pnpm/react-redux@8.0.5_@types+react-dom@18.0.11_@types+react@18.0.30_react-dom@18.2.0_react@18.2.0_redux@4.2.1/node_modules/react-redux/es/components/connect.js","../../node_modules/.pnpm/react-redux@8.0.5_@types+react-dom@18.0.11_@types+react@18.0.30_react-dom@18.2.0_react@18.2.0_redux@4.2.1/node_modules/react-redux/es/components/Provider.js","../../node_modules/.pnpm/react-redux@8.0.5_@types+react-dom@18.0.11_@types+react@18.0.30_react-dom@18.2.0_react@18.2.0_redux@4.2.1/node_modules/react-redux/es/hooks/useStore.js","../../node_modules/.pnpm/react-redux@8.0.5_@types+react-dom@18.0.11_@types+react@18.0.30_react-dom@18.2.0_react@18.2.0_redux@4.2.1/node_modules/react-redux/es/hooks/useDispatch.js","../../node_modules/.pnpm/react-redux@8.0.5_@types+react-dom@18.0.11_@types+react@18.0.30_react-dom@18.2.0_react@18.2.0_redux@4.2.1/node_modules/react-redux/es/index.js","../../src/logging/logger.ts","../../node_modules/.pnpm/tslib@2.5.0/node_modules/tslib/tslib.es6.js","../../node_modules/.pnpm/@formatjs+ecma402-abstract@1.14.3/node_modules/@formatjs/ecma402-abstract/lib/utils.js","../../node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.3.0/node_modules/@formatjs/icu-messageformat-parser/lib/error.js","../../node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.3.0/node_modules/@formatjs/icu-messageformat-parser/lib/types.js","../../node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.3.0/node_modules/@formatjs/icu-messageformat-parser/lib/regex.generated.js","../../node_modules/.pnpm/@formatjs+icu-skeleton-parser@1.3.18/node_modules/@formatjs/icu-skeleton-parser/lib/date-time.js","../../node_modules/.pnpm/@formatjs+icu-skeleton-parser@1.3.18/node_modules/@formatjs/icu-skeleton-parser/lib/regex.generated.js","../../node_modules/.pnpm/@formatjs+icu-skeleton-parser@1.3.18/node_modules/@formatjs/icu-skeleton-parser/lib/number.js","../../node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.3.0/node_modules/@formatjs/icu-messageformat-parser/lib/time-data.generated.js","../../node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.3.0/node_modules/@formatjs/icu-messageformat-parser/lib/date-time-pattern-generator.js","../../node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.3.0/node_modules/@formatjs/icu-messageformat-parser/lib/parser.js","../../node_modules/.pnpm/@formatjs+icu-messageformat-parser@2.3.0/node_modules/@formatjs/icu-messageformat-parser/lib/index.js","../../node_modules/.pnpm/@formatjs+fast-memoize@2.0.1/node_modules/@formatjs/fast-memoize/lib/index.js","../../node_modules/.pnpm/intl-messageformat@10.3.3/node_modules/intl-messageformat/lib/src/error.js","../../node_modules/.pnpm/intl-messageformat@10.3.3/node_modules/intl-messageformat/lib/src/formatters.js","../../node_modules/.pnpm/intl-messageformat@10.3.3/node_modules/intl-messageformat/lib/src/core.js","../../node_modules/.pnpm/@formatjs+intl@2.6.9_typescript@5.0.2/node_modules/@formatjs/intl/lib/src/error.js","../../node_modules/.pnpm/@formatjs+intl@2.6.9_typescript@5.0.2/node_modules/@formatjs/intl/lib/src/utils.js","../../node_modules/.pnpm/@formatjs+intl@2.6.9_typescript@5.0.2/node_modules/@formatjs/intl/lib/src/message.js","../../node_modules/.pnpm/@formatjs+intl@2.6.9_typescript@5.0.2/node_modules/@formatjs/intl/lib/src/dateTime.js","../../node_modules/.pnpm/@formatjs+intl@2.6.9_typescript@5.0.2/node_modules/@formatjs/intl/lib/src/displayName.js","../../node_modules/.pnpm/@formatjs+intl@2.6.9_typescript@5.0.2/node_modules/@formatjs/intl/lib/src/list.js","../../node_modules/.pnpm/@formatjs+intl@2.6.9_typescript@5.0.2/node_modules/@formatjs/intl/lib/src/plural.js","../../node_modules/.pnpm/@formatjs+intl@2.6.9_typescript@5.0.2/node_modules/@formatjs/intl/lib/src/relativeTime.js","../../node_modules/.pnpm/@formatjs+intl@2.6.9_typescript@5.0.2/node_modules/@formatjs/intl/lib/src/number.js","../../node_modules/.pnpm/@formatjs+intl@2.6.9_typescript@5.0.2/node_modules/@formatjs/intl/lib/src/create-intl.js","../../node_modules/.pnpm/react-intl@6.3.2_react@18.2.0_typescript@5.0.2/node_modules/react-intl/lib/src/utils.js","../../node_modules/.pnpm/react-intl@6.3.2_react@18.2.0_typescript@5.0.2/node_modules/react-intl/lib/src/components/injectIntl.js","../../node_modules/.pnpm/react-intl@6.3.2_react@18.2.0_typescript@5.0.2/node_modules/react-intl/lib/src/components/useIntl.js","../../node_modules/.pnpm/react-intl@6.3.2_react@18.2.0_typescript@5.0.2/node_modules/react-intl/lib/src/components/createFormattedComponent.js","../../node_modules/.pnpm/react-intl@6.3.2_react@18.2.0_typescript@5.0.2/node_modules/react-intl/lib/src/components/provider.js","../../node_modules/.pnpm/react-intl@6.3.2_react@18.2.0_typescript@5.0.2/node_modules/react-intl/lib/src/components/message.js","../../node_modules/.pnpm/react-intl@6.3.2_react@18.2.0_typescript@5.0.2/node_modules/react-intl/lib/index.js","../../src/components/contexts/helpers.ts","../../src/components/contexts/IntlContext.tsx","../../src/utils/i18n/IntlComponentBoundary.tsx","../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/lib/ReactPropTypesSecret.js","../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/factoryWithThrowingShims.js","../../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js","../../node_modules/.pnpm/classnames@2.3.2/node_modules/classnames/index.js","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/es/utils.js","../../node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/es/Button.js","../../node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../../node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/extends.js","../../node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/inheritsLoose.js","../../node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/assertThisInitialized.js","../../node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/typeof.js","../../node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/toPrimitive.js","../../node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/toPropertyKey.js","../../node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/defineProperty.js","../../node_modules/.pnpm/object-keys@1.1.1/node_modules/object-keys/isArguments.js","../../node_modules/.pnpm/object-keys@1.1.1/node_modules/object-keys/implementation.js","../../node_modules/.pnpm/object-keys@1.1.1/node_modules/object-keys/index.js","../../node_modules/.pnpm/has-symbols@1.0.3/node_modules/has-symbols/shams.js","../../node_modules/.pnpm/has-tostringtag@1.0.0/node_modules/has-tostringtag/shams.js","../../node_modules/.pnpm/has-symbols@1.0.3/node_modules/has-symbols/index.js","../../node_modules/.pnpm/function-bind@1.1.1/node_modules/function-bind/implementation.js","../../node_modules/.pnpm/function-bind@1.1.1/node_modules/function-bind/index.js","../../node_modules/.pnpm/has@1.0.3/node_modules/has/src/index.js","../../node_modules/.pnpm/get-intrinsic@1.2.0/node_modules/get-intrinsic/index.js","../../node_modules/.pnpm/call-bind@1.0.2/node_modules/call-bind/index.js","../../node_modules/.pnpm/call-bind@1.0.2/node_modules/call-bind/callBound.js","../../node_modules/.pnpm/is-arguments@1.1.1/node_modules/is-arguments/index.js","../../node_modules/.pnpm/has-property-descriptors@1.0.0/node_modules/has-property-descriptors/index.js","../../node_modules/.pnpm/define-properties@1.2.0/node_modules/define-properties/index.js","../../node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/implementation.js","../../node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/polyfill.js","../../node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/shim.js","../../node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/index.js","../../node_modules/.pnpm/is-regex@1.1.4/node_modules/is-regex/index.js","../../node_modules/.pnpm/functions-have-names@1.2.3/node_modules/functions-have-names/index.js","../../node_modules/.pnpm/regexp.prototype.flags@1.4.3/node_modules/regexp.prototype.flags/implementation.js","../../node_modules/.pnpm/regexp.prototype.flags@1.4.3/node_modules/regexp.prototype.flags/polyfill.js","../../node_modules/.pnpm/regexp.prototype.flags@1.4.3/node_modules/regexp.prototype.flags/shim.js","../../node_modules/.pnpm/regexp.prototype.flags@1.4.3/node_modules/regexp.prototype.flags/index.js","../../node_modules/.pnpm/is-date-object@1.0.5/node_modules/is-date-object/index.js","../../node_modules/.pnpm/deep-equal@1.1.1/node_modules/deep-equal/index.js","../../node_modules/.pnpm/popper.js@1.16.1/node_modules/popper.js/dist/esm/popper.js","../../node_modules/.pnpm/gud@1.0.0/node_modules/gud/index.js","../../node_modules/.pnpm/warning@4.0.3/node_modules/warning/warning.js","../../node_modules/.pnpm/@hypnosphi+create-react-context@0.3.1_prop-types@15.8.1_react@18.2.0/node_modules/@hypnosphi/create-react-context/lib/implementation.js","../../node_modules/.pnpm/@hypnosphi+create-react-context@0.3.1_prop-types@15.8.1_react@18.2.0/node_modules/@hypnosphi/create-react-context/lib/index.js","../../node_modules/.pnpm/react-popper@1.3.11_react@18.2.0/node_modules/react-popper/lib/esm/Manager.js","../../node_modules/.pnpm/react-popper@1.3.11_react@18.2.0/node_modules/react-popper/lib/esm/utils.js","../../node_modules/.pnpm/react-popper@1.3.11_react@18.2.0/node_modules/react-popper/lib/esm/Popper.js","../../node_modules/.pnpm/react-popper@1.3.11_react@18.2.0/node_modules/react-popper/lib/esm/Reference.js","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/es/DropdownContext.js","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/es/Dropdown.js","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/es/DropdownItem.js","../../node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/esm/typeof.js","../../node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/es/DropdownMenu.js","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/es/DropdownToggle.js","../../node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/interopRequireDefault.js","../../node_modules/.pnpm/dom-helpers@3.4.0/node_modules/dom-helpers/class/hasClass.js","../../node_modules/.pnpm/dom-helpers@3.4.0/node_modules/dom-helpers/class/addClass.js","../../node_modules/.pnpm/dom-helpers@3.4.0/node_modules/dom-helpers/class/removeClass.js","../../node_modules/.pnpm/react-lifecycles-compat@3.0.4/node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../../node_modules/.pnpm/react-transition-group@3.0.0_react-dom@18.2.0_react@18.2.0/node_modules/react-transition-group/TransitionGroupContext.js","../../node_modules/.pnpm/react-transition-group@3.0.0_react-dom@18.2.0_react@18.2.0/node_modules/react-transition-group/Transition.js","../../node_modules/.pnpm/react-transition-group@3.0.0_react-dom@18.2.0_react@18.2.0/node_modules/react-transition-group/CSSTransition.js","../../node_modules/.pnpm/react-transition-group@3.0.0_react-dom@18.2.0_react@18.2.0/node_modules/react-transition-group/utils/ChildMapping.js","../../node_modules/.pnpm/react-transition-group@3.0.0_react-dom@18.2.0_react@18.2.0/node_modules/react-transition-group/TransitionGroup.js","../../node_modules/.pnpm/react-transition-group@3.0.0_react-dom@18.2.0_react@18.2.0/node_modules/react-transition-group/ReplaceTransition.js","../../node_modules/.pnpm/react-transition-group@3.0.0_react-dom@18.2.0_react@18.2.0/node_modules/react-transition-group/index.js","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/es/Fade.js","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/es/PopperContent.js","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/es/TooltipPopoverWrapper.js","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/es/Popover.js","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/es/Portal.js","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/es/Modal.js","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/es/ModalHeader.js","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/es/ModalBody.js","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/es/ModalFooter.js","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/es/Tooltip.js","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/es/ListGroup.js","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/es/ListGroupItem.js","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/es/UncontrolledDropdown.js","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/es/UncontrolledTooltip.js","../../src/state/globalError/globalErrorModel.ts","../../src/state/globalError/globalErrorActions.ts","../../src/state/session/sessionActions.ts","../../src/utils/Timer/index.ts","../../src/utils/Timer/Timers.ts","../../src/redux-middlewares/actionNotificationMiddleware.ts","../../src/utils/maps.ts","../../src/state/executions/executionsSelectors.ts","../../src/state/clientWorkspace/selectors/clientWorkspaceSelectors.ts","../../src/state/clientWorkspace/selectors/clientWorkspaceGrowlsSelectors.ts","../../src/state/clientWorkspace/selectors/clientWorkspaceTilesSelectors.ts","../../node_modules/.pnpm/reselect@4.1.7/node_modules/reselect/es/defaultMemoize.js","../../node_modules/.pnpm/reselect@4.1.7/node_modules/reselect/es/index.js","../../src/utils/optional.ts","../../src/state/referenceData/referenceDataSelectors.ts","../../src/state/clientWorkspace/clientWorkspaceModel.ts","../../src/state/clientWorkspace/selectors/clientWorkspaceTabsSelectors.ts","../../src/state/clientWorkspace/selectors/clientWorkspaceSaveStateSelectors.ts","../../src/state/clientWorkspace/selectors/quoteSelectors.ts","../../src/state/share/form/formSelectors.ts","../../src/state/fxOptions/fxOptionsModel.ts","../../src/utils/stateMap.ts","../../src/state/share/patchHelper.ts","../../src/state/fxOptions/utilities.ts","../../src/state/fxOptions/selectors/fxOptionsLegsSelectors.ts","../../src/state/fxOptions/selectors/optionLeg.ts","../../src/state/fxOptions/selectors/fxOptionsProductSelectors.ts","../../src/state/fxOptions/selectors/fxOptionsHedgesSelectors.ts","../../src/state/fxOptions/selectors/factories.ts","../../src/state/fxCashs/selectors/cash.ts","../../src/state/fxCashs/selectors/factories.ts","../../src/state/fxSwaps/selectors/swap.ts","../../src/state/fxSwaps/selectors/factories.ts","../../src/state/fxBulks/selectors/bulk.ts","../../src/utils/margin.ts","../../src/state/fxBulks/selectors/utils.ts","../../src/state/fxBulks/selectors/bulkLeg.ts","../../src/state/fxBulks/selectors/factories.ts","../../src/state/fxOrders/selectors/fxOrdersProductSelectors.ts","../../src/state/fxOrders/selectors/factories.ts","../../src/state/fxAccumulators/selectors/accumulator.ts","../../src/state/fxAccumulators/selectors/factories.ts","../../src/state/blotter/selectors/blotterSelectors.ts","../../src/utils/fieldSelectors.ts","../../src/state/blotter/selectors/blotterOrderSelectors.ts","../../src/state/tile/selectors/factories.ts","../../src/state/fxOptions/selectors/optionInput.ts","../../src/state/fxCashs/selectors/cashInput.ts","../../src/state/fxSwaps/selectors/swapInput.ts","../../src/state/fxAccumulators/selectors/accumulatorValue.ts","../../src/components/FxAccumulatorTile/Scheduler/calendarProperties.ts","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/_lib/toInteger/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/_lib/requiredArgs/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/toDate/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/addDays/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/addMonths/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/addMilliseconds/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/_lib/defaultOptions/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/startOfWeek/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/startOfDay/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/addMinutes/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/addYears/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/constants/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/isDate/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/isValid/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/endOfDay/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/endOfMonth/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/startOfMonth/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/endOfWeek/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/subMilliseconds/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/_lib/getUTCWeek/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/_lib/format/formatters/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/_lib/format/longFormatters/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/_lib/protectedTokens/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/locale/en-US/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/format/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/_lib/assign/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/isAfter/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/isBefore/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/isFuture/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/Setter.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/Parser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/EraParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/constants.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/utils.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/YearParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekYearParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekYearParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/ExtendedYearParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/QuarterParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/StandAloneQuarterParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/MonthParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/StandAloneMonthParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/_lib/setUTCWeek/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/DateParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/DayOfYearParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/_lib/setUTCDay/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/DayParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/LocalDayParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/StandAloneLocalDayParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/_lib/setUTCISODay/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/ISODayParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/AMPMParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/AMPMMidnightParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/DayPeriodParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/Hour1to12Parser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/Hour0to23Parser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/Hour0To11Parser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/Hour1To24Parser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/MinuteParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/SecondParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/FractionOfSecondParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneWithZParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/TimestampSecondsParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/TimestampMillisecondsParser.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/_lib/parsers/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parse/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/isSameWeek/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/parseISO/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/locale/de/_lib/formatDistance/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/locale/de/_lib/formatLong/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/locale/de/_lib/formatRelative/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/locale/de/_lib/localize/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/locale/de/_lib/match/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/locale/de/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/locale/fr/_lib/formatDistance/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/locale/fr/_lib/formatLong/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/locale/fr/_lib/formatRelative/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/locale/fr/_lib/localize/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/locale/fr/_lib/match/index.js","../../node_modules/.pnpm/date-fns@2.29.3/node_modules/date-fns/esm/locale/fr/index.js","../../src/utils/dateFormats.ts","../../src/components/FxAccumulatorTile/Scheduler/utils.ts","../../src/state/fxAccumulators/selectors/accumulatorSchedule.ts","../../src/state/fxAccumulators/selectors/accumulatorInput.ts","../../src/state/fxBulks/selectors/bulkInput.ts","../../src/state/fxOrders/selectors/orderInput.ts","../../src/state/tile/selectors/index.ts","../../src/state/globalError/globalErrorSelectors.ts","../../node_modules/.pnpm/redux-thunk@2.4.2_redux@4.2.1/node_modules/redux-thunk/es/index.js","../../src/state/fxOptions/selectors/optionMetadata.ts","../../src/state/userPreferences/selectors/userPreferenceSelectors.ts","../../src/state/fxOptions/selectors/optionLegInput.ts","../../src/state/fxOptions/selectors/optionLegMetadata.ts","../../src/state/fxOptions/selectors/fxOptionsSelectors.ts","../../src/utils/error.ts","../../src/state/fxOptions/selectors/optionHedgeValue.ts","../../src/components/FxOptionTile/Hedge/findHedge.ts","../../src/state/fxOptions/selectors/fxOptionsStreamsSelectors.ts","../../src/state/fxOptions/selectors/optionValue.ts","../../src/state/fxOptions/selectors/optionLegValue.ts","../../src/state/fxOptions/selectors/optionStripping.ts","../../src/state/fxOptions/selectors/optionHedgeInput.ts","../../src/state/fxSwaps/selectors/fxSwapsStreamsSelectors.ts","../../src/state/fxSwaps/selectors/fxSwapsProductSelectors.ts","../../src/state/fxSwaps/selectors/swapMetadata.ts","../../src/state/fxSwaps/selectors/fxSwapsSelectors.ts","../../src/state/fxSwaps/selectors/swapValue.ts","../../src/state/esp/utils.ts","../../src/state/fxCashs/selectors/utils.ts","../../src/state/fxCashs/selectors/fxCashsSelectors.ts","../../src/state/fxCashs/selectors/fxCashsMarginSelectors.ts","../../src/state/fxBulks/selectors/bulkValue.ts","../../src/state/fxBulks/selectors/bulkMetadata.ts","../../src/state/fxBulks/selectors/bulkLegInput.ts","../../src/state/fxBulks/selectors/bulkLegValue.ts","../../src/state/fxBulks/selectors/bulkStream.ts","../../src/state/fxBulks/selectors/fxBulksSelectors.ts","../../src/state/streamingConnection/streamingConnectionModel.ts","../../src/state/streamingConnection/streamingConnectionSelectors.ts","../../src/state/referenceData/referenceDataModel.ts","../../src/state/fxAccumulators/selectors/accumulatorMetadata.ts","../../src/state/fxAccumulators/selectors/accumulatorRfs.ts","../../src/utils/immutableReferenceUpdate.ts","../../src/state/fxAccumulators/selectors/accumulatorRfsByQuoteId.ts","../../src/state/fxAccumulators/selectors/fxAccumulatorsSelectors.ts","../../src/state/sharedSelectors.ts","../../src/state/esp/espStreamsSelectors.ts","../../src/state/fxCashs/selectors/fxCashsRfsStreamsSelectors.ts","../../src/state/fxCashs/selectors/cashMetadata.ts","../../src/state/fxCashs/selectors/cashValue.ts","../../src/state/fxOrders/selectors/orderValue.ts","../../src/state/fxOrders/selectors/orderMetadata.ts","../../src/utils/object/entries.ts","../../src/state/fxOrders/fxOrdersModel.ts","../../src/state/fxOrders/selectors/selectors.ts","../../src/state/fxOrders/selectors/orderTemplates.ts","../../src/state/gridLayout/selectors/getGrid.ts","../../src/state/gridLayout/selectors/getGridItems.ts","../../src/styles/constants.ts","../../src/state/gridLayout/reducer/utils/gridLayoutPosition.ts","../../src/state/gridLayout/reducer/utils/gridLayoutSize.ts","../../src/state/gridLayout/reducer/utils/gridLayoutColumns.ts","../../src/state/gridLayout/reducer/utils/gridLayoutLocus.ts","../../src/state/gridLayout/reducer/utils/gridLayoutNeighbours.ts","../../src/state/gridLayout/selectors/dragPosition.ts","../../src/state/freeLayout/selectors/getLayout.ts","../../src/state/freeLayout/selectors/getLayoutItem.ts","../../src/state/session/sessionSelectors.ts","../../src/utils/object/pick.ts","../../src/utils/object/keys.ts","../../src/utils/object/values.ts","../../src/utils/object/nullify.ts","../../src/utils/object/extract.ts","../../src/state/tile/tileSelectors.ts","../../src/state/blotter/selectors/metadataSelectors.ts","../../src/state/blotter/selectors/blotterTradeSelectors.ts","../../src/state/mifidPanel/mifidPanelSelectors.ts","../../src/state/share/clientSelectors.ts","../../src/state/selectors.ts","../../src/state/fxOptions/actions/optionHedges.ts","../../src/state/fxOptions/actions/optionLegs.ts","../../src/state/fxOptions/actions/optionProduct.ts","../../src/state/fxOptions/actions/optionSolving.ts","../../src/state/fxOptions/actions/optionStreams.ts","../../src/state/fxOptions/actions/optionStrippings.ts","../../src/state/fxOptions/fxOptionsThunks/optionsRFS.ts","../../src/state/fxOptions/fxOptionsThunks/optionsWorkspace.ts","../../src/state/fxOptions/fxOptionsThunks/optionsExecution.ts","../../src/state/fxOptions/fxOptionsThunks/optionsMarkupPremium.ts","../../src/state/fxOptions/selectors/optionPremium.ts","../../src/state/fxOptions/fxOptionsThunks/optionsTradeCapture.ts","../../src/state/share/productModel/litterals.ts","../../src/state/fxOptions/fxOptionsThunks/optionInput.ts","../../src/state/fxOptions/fxOptionsThunks/optionStreamCancel.ts","../../src/state/fxOptions/fxOptionsThunks/optionStrategyImport.ts","../../src/state/fxOptions/fxOptionsThunks/optionsPastedValues.ts","../../src/utils/array.ts","../../src/state/fxOptions/fxOptionsThunks/optionsMetadata.ts","../../src/state/fxOptions/fxOptionsThunks/optionsSolving.ts","../../src/state/fxCashs/fxCashsActions.ts","../../src/state/fxCashs/fxCashsThunks/cashRFS.ts","../../src/state/fxCashs/fxCashsThunks/cashInput.ts","../../src/state/fxCashs/fxCashsThunks/cashWorkspace.ts","../../src/state/fxCashs/fxCashsThunks/cashMargin.ts","../../src/state/fxCashs/fxCashsThunks/cashTradeCapture.ts","../../src/state/fxCashs/fxCashsThunks/cashExecution.ts","../../src/state/fxSwaps/fxSwapsActions.ts","../../src/state/fxSwaps/thunks/swapWorkspace.ts","../../src/utils/clearUndefined.ts","../../src/state/fxSwaps/thunks/swapInput.ts","../../src/state/fxSwaps/thunks/swapMargin.ts","../../src/state/fxSwaps/thunks/swapRFS.ts","../../src/state/fxSwaps/thunks/swapTradeCapture.ts","../../src/state/fxSwaps/thunks/swapExecution.ts","../../src/state/fxBulks/fxBulksActions.ts","../../src/state/fxBulks/fxBulksThunks/bulkInput.ts","../../src/state/fxBulks/fxBulksThunks/bulkLegInput.ts","../../src/state/fxBulks/fxBulksThunks/bulkMetadata.ts","../../src/state/fxBulks/fxBulksThunks/bulkRfs.ts","../../src/state/fxBulks/fxBulksThunks/bulkExecution.ts","../../src/utils/saveFile.ts","../../src/state/fxBulks/fxBulksThunks/bulkExport.ts","../../src/state/fxAccumulators/actions/rfs.ts","../../src/state/fxAccumulators/actions/tradeCapture.ts","../../src/state/fxAccumulators/actions/execution.ts","../../src/state/fxAccumulators/actions/index.ts","../../src/state/fxAccumulators/thunks/tile.ts","../../src/state/fxAccumulators/thunks/tradeCapture.ts","../../src/state/fxAccumulators/thunks/rfs.ts","../../src/state/fxAccumulators/thunks/schedulerImport.ts","../../src/state/fxAccumulators/thunks/inputs.ts","../../src/state/esp/espStreamsActions.ts","../../src/components/share/tenors.ts","../../src/state/esp/espStreamsThunks.ts","../../src/state/tile/tileActions.ts","../../src/state/share/productMappers/utils.ts","../../src/state/share/productMappers/cashMappers.ts","../../src/state/share/productMappers/swapMappers.ts","../../src/state/share/productMappers/optionMappers.ts","../../src/state/share/productMappers/accumulatorMappers.ts","../../src/state/share/productMappers/index.ts","../../src/state/executions/executionsStateModel.ts","../../src/state/tile/tileThunks.ts","../../src/state/referenceData/referenceDataActions.ts","../../src/state/referenceData/referenceDataThunks.ts","../../src/utils/url.ts","../../src/state/streamingConnection/initStreamThunk.ts","../../src/state/clientWorkspace/clientWorkspaceActions.ts","../../src/state/blotter/blotterModel.ts","../../src/state/blotter/utils.ts","../../src/state/clientWorkspace/clientWorkspaceThunks.ts","../../src/state/gridLayout/gridLayoutActions.ts","../../src/state/gridLayout/gridLayoutThunks.ts","../../src/state/userPreferences/userPreferencesActions.ts","../../src/state/userPreferences/thunks/userPreferencesThunks.ts","../../src/state/blotter/action/blotterActions.ts","../../src/state/blotter/action/blotterDetailsPanelActions.ts","../../src/state/blotter/action/blotterOrderActions.ts","../../src/state/blotter/thunks/blotterActionsThunks.ts","../../src/state/blotter/thunks/blotterModeThunks.ts","../../src/state/blotter/thunks/blotterPanelThunks.ts","../../src/state/blotter/blotterEntryModel.ts","../../src/components/Blotter/LiveBlotter/liveBlotterType.ts","../../src/utils/predicates.ts","../../src/state/blotter/thunks/blotterTileThunks.ts","../../src/state/freeLayout/freeLayoutActions.ts","../../src/state/fxOrders/fxOrdersActions.ts","../../src/state/fxOrders/thunks/orderClientWorkspace.ts","../../src/state/fxOrders/thunks/orderEmails.ts","../../src/utils/parseDateWithCultureInfo.ts","../../src/state/fxOrders/thunks/orderInput.ts","../../src/state/fxOrders/thunks/orderTemplates.ts","../../src/state/fxOrders/thunks/orderValidation.ts","../../src/state/mifidPanel/mifidPanelActions.ts","../../src/state/globalActions.ts","../../src/state/toasts/toastsActions.ts","../../src/state/smartRfs/smartRfsActions.ts","../../src/state/actions.ts","../../node_modules/.pnpm/rxjs@6.6.7/node_modules/rxjs/_esm5/internal/scheduler/QueueAction.js","../../node_modules/.pnpm/rxjs@6.6.7/node_modules/rxjs/_esm5/internal/scheduler/QueueScheduler.js","../../node_modules/.pnpm/rxjs@6.6.7/node_modules/rxjs/_esm5/internal/scheduler/queue.js","../../node_modules/.pnpm/rxjs@6.6.7/node_modules/rxjs/_esm5/internal/operators/observeOn.js","../../node_modules/.pnpm/rxjs@6.6.7/node_modules/rxjs/_esm5/internal/util/Immediate.js","../../node_modules/.pnpm/rxjs@6.6.7/node_modules/rxjs/_esm5/internal/scheduler/AsapAction.js","../../node_modules/.pnpm/rxjs@6.6.7/node_modules/rxjs/_esm5/internal/scheduler/AsapScheduler.js","../../node_modules/.pnpm/rxjs@6.6.7/node_modules/rxjs/_esm5/internal/scheduler/asap.js","../../node_modules/.pnpm/rxjs@6.6.7/node_modules/rxjs/_esm5/internal/util/noop.js","../../node_modules/.pnpm/rxjs@6.6.7/node_modules/rxjs/_esm5/internal/observable/fromEvent.js","../../node_modules/.pnpm/rxjs@6.6.7/node_modules/rxjs/_esm5/internal/operators/ignoreElements.js","../../node_modules/.pnpm/rxjs@6.6.7/node_modules/rxjs/_esm5/internal/operators/publish.js","../../node_modules/.pnpm/rxjs@6.6.7/node_modules/rxjs/_esm5/internal/observable/SubscribeOnObservable.js","../../node_modules/.pnpm/rxjs@6.6.7/node_modules/rxjs/_esm5/internal/operators/subscribeOn.js","../../node_modules/.pnpm/rxjs@6.6.7/node_modules/rxjs/_esm5/internal/operators/tap.js","../../node_modules/.pnpm/redux-observable@1.2.0_redux@4.2.1_rxjs@6.6.7/node_modules/redux-observable/lib/esm/operators.js","../../node_modules/.pnpm/redux-observable@1.2.0_redux@4.2.1_rxjs@6.6.7/node_modules/redux-observable/lib/esm/ActionsObservable.js","../../node_modules/.pnpm/redux-observable@1.2.0_redux@4.2.1_rxjs@6.6.7/node_modules/redux-observable/lib/esm/StateObservable.js","../../node_modules/.pnpm/redux-observable@1.2.0_redux@4.2.1_rxjs@6.6.7/node_modules/redux-observable/lib/esm/createEpicMiddleware.js","../../src/utils/base36.ts","../../src/utils/rfs.ts","../../src/epics/metaSelectors/bulk/tradeCaptureToBackend.ts","../../src/epics/metaSelectors/bulk/tradeCapturePatchBuilderFromAction.ts","../../src/api/tradeCapture/tradeCaptureMappingHelper.ts","../../src/epics/metaSelectors/bulk/tradeCaptureFromBackend.ts","../../src/epics/metaSelectors/bulk/buildQuoteRequest.ts","../../src/epics/metaSelectors/bulk/buildQuoteExecution.ts","../../src/epics/metaSelectors/bulk/index.ts","../../src/api/tradeCapture/option/tradeCaptureOptionModel.ts","../../src/epics/metaSelectors/option/utils/settlementTypesMap.ts","../../src/epics/metaSelectors/option/utils/optionTypesMap.ts","../../src/state/fxOptions/model/optionHedges.ts","../../src/epics/metaSelectors/option/tradeCaptureFromBackend.ts","../../src/epics/metaSelectors/option/utils/patchBuilder.ts","../../src/epics/metaSelectors/option/tradeCapturePatchBuilderFromAction.ts","../../src/epics/metaSelectors/option/tradeCaptureModel.ts","../../src/epics/metaSelectors/option/tradeCaptureToBackend.ts","../../src/epics/metaSelectors/option/index.ts","../../src/state/share/productModel/utils.ts","../../src/epics/metaSelectors/swap/swapRfsExecuteRequest.ts","../../src/epics/metaSelectors/swap/swapRfsExecution.ts","../../src/epics/metaSelectors/swap/tradeCaptureToBackend.ts","../../src/api/tradeCapture/swap/tradeCaptureModel.ts","../../src/epics/metaSelectors/swap/tradeCaptureFromBackend.ts","../../src/epics/metaSelectors/swap/index.ts","../../src/epics/metaSelectors/cash/buildQuoteRequest.ts","../../src/state/fxCashs/fxCashsModel.ts","../../src/epics/metaSelectors/cash/cashRfsExecuteRequest.ts","../../src/epics/metaSelectors/cash/cashRfsExecution.ts","../../src/epics/metaSelectors/cash/buildTradeCaptureRequest.ts","../../src/api/tradeCapture/cash/tradeCaptureModel.ts","../../src/epics/metaSelectors/cash/tradeCaptureToBackend.ts","../../src/epics/metaSelectors/cash/index.ts","../../src/epics/metaSelectors/order/utils.ts","../../src/epics/metaSelectors/blotter/blotterOrderGetters.ts","../../src/epics/metaSelectors/blotter/blotterOrderModifyToBackend.ts","../../src/epics/metaSelectors/blotter/blotterOrderValidation.ts","../../src/epics/metaSelectors/blotter/blotterOrderCancellationToBackend.ts","../../src/epics/metaSelectors/eventLog/tools.ts","../../src/epics/metaSelectors/eventLog/buildPendingExecutionEventLog.ts","../../src/epics/metaSelectors/eventLog/buildPendingExecutionMailPayload.ts","../../src/epics/metaSelectors/eventLog/buildApiTimeoutExecutionEventLog.ts","../../src/epics/metaSelectors/eventLog/index.ts","../../src/epics/metaSelectors/accumulator/buildAccuExecutionReport.ts","../../src/api/multipass/accumulator/model.ts","../../src/epics/metaSelectors/accumulator/buildAccuQuoteExecute.ts","../../src/state/fxAccumulators/fxAccumulatorsModel.ts","../../src/utils/camelize.ts","../../src/epics/metaSelectors/accumulator/tradeCaptureFromBackend.ts","../../src/epics/metaSelectors/accumulator/tradeCapturePatchBuilderFromAction.ts","../../src/epics/metaSelectors/accumulator/tradeCaptureToBackend.ts","../../src/epics/metaSelectors/accumulator/index.ts","../../src/epics/metaSelectors/order/orderToBackendPayload.ts","../../src/epics/metaSelectors/order/orderToBlotterOrderData.ts","../../src/epics/metaSelectors/order/index.ts","../../src/epics/metaSelectors/esp/buildTieringRequest.ts","../../src/epics/metaSelectors/esp/index.ts","../../src/utils/numberInputFormats.ts","../../src/epics/metaSelectors/workspace/saveWorkspaceSelectors.ts","../../src/epics/metaSelectors/workspace/index.ts","../../src/epics/metaSelectors/index.ts","../../src/epics/makeMiddleware.ts","../../src/bootstrap/sgmeConfiguration.ts","../../src/utils/sgmeHttp.ts","../../src/bootstrap/http.ts","../../node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../../node_modules/.pnpm/redux@4.2.1/node_modules/redux/es/redux.js","../../src/state/clientWorkspace/reducer/clientWorkspaceTabsReducer.ts","../../src/state/clientWorkspace/reducer/clientWorkspaceActiveTabReducer.ts","../../src/state/clientWorkspace/reducer/clientWorkspaceTilesReducer.ts","../../src/state/clientWorkspace/reducer/clientWorkspaceGrowlsReducer.ts","../../src/state/clientWorkspace/reducer/clientWorkspaceTradingDisabledReducer.ts","../../src/state/clientWorkspace/reducer/clientWorkspaceSavingReducer.ts","../../src/state/clientWorkspace/reducer/index.ts","../../src/state/share/priceRecordReducerHelper.ts","../../src/state/share/validationReducer.ts","../../src/utils/shallowEqual.ts","../../src/state/fxOptions/reducers/optionsProductReducer.ts","../../src/state/fxOptions/reducers/optionsStreamsReducer.ts","../../src/state/fxOptions/reducers/optionStrippingsReducer.ts","../../src/state/fxOptions/model/optionsLegs.ts","../../src/state/fxOptions/reducers/optionsLegsReducer.ts","../../src/state/fxOptions/reducers/optionsHedgesReducer.ts","../../src/state/fxOptions/reducers/index.ts","../../src/state/fxCashs/reducer/fxCashsStreamsReducer.ts","../../src/state/fxCashs/reducer/fxCashsProductReducer.ts","../../src/state/fxCashs/reducer/index.ts","../../src/state/fxSwaps/fxSwapsModel.ts","../../src/state/fxSwaps/reducer/fxSwapsProductReducer.ts","../../src/state/fxSwaps/reducer/fxSwapsStreamsReducer.ts","../../src/state/fxSwaps/reducer/index.ts","../../src/state/fxBulks/fxBulksModel.ts","../../src/state/fxBulks/reducer/fxBulksProductReducer.ts","../../src/state/fxBulks/reducer/fxBulkStreamReducer.ts","../../src/state/fxBulks/reducer/fxBulksLegReducer.ts","../../src/state/fxBulks/reducer/index.ts","../../src/state/fxAccumulators/reducer/fxAccumulatorsProductReducer.ts","../../src/state/fxAccumulators/reducer/fxAccumulatorsRfsStreamsReducer.ts","../../src/state/fxAccumulators/reducer/fxAccumulatorsScheduleReducer.ts","../../src/state/fxAccumulators/reducer/index.ts","../../src/data/currencies.ts","../../src/state/referenceData/referenceDataReducer.ts","../../src/state/globalError/globalErrorReducer.ts","../../src/state/streamingConnection/streamingConnectionReducer.ts","../../src/state/gridLayout/reducer/addGridItem.ts","../../src/state/gridLayout/reducer/updateAddTilePositions.ts","../../src/state/gridLayout/reducer/moveGridItems.ts","../../src/state/gridLayout/reducer/removeGridItem.ts","../../src/state/gridLayout/reducer/stripTrailingEmptyColumns.ts","../../src/state/gridLayout/reducer/gridItemSizeChange.ts","../../src/state/gridLayout/reducer/dragGridItem.ts","../../src/state/gridLayout/reducer/restoreGridItem.ts","../../src/state/gridLayout/reducer/gridStatePatcher.ts","../../src/state/gridLayout/reducer/gridCollectionReducer.ts","../../src/state/session/sessionReducer.ts","../../src/state/userPreferences/userPreferencesModel.ts","../../src/state/userPreferences/reducer/userPreferencesShowReducer.ts","../../src/state/userPreferences/reducer/userPreferencesDataReducer.ts","../../src/state/userPreferences/reducer/index.ts","../../src/state/blotter/reducer/integrateTrades.ts","../../src/state/fxOrders/utils.ts","../../src/epics/order/utils.ts","../../src/epics/blotter/utils.ts","../../src/state/blotter/reducer/intradayReducer.ts","../../src/state/blotter/reducer/historicalTradesReducer.ts","../../src/utils/stateArray.ts","../../src/state/blotter/reducer/metadataReducer.ts","../../src/state/fxOrders/reducers/fxOrdersProductReducer.ts","../../src/state/blotter/reducer/editedOrdersReducer.ts","../../src/state/blotter/reducer/index.ts","../../src/state/executions/executionsReducer.ts","../../src/state/fxOrders/reducers/fxOrdersEmailsReducer.ts","../../src/state/fxOrders/reducers/fxOrderTemplatesReducer.ts","../../src/state/fxOrders/reducers/index.ts","../../src/state/freeLayout/freeLayoutModel.ts","../../src/state/freeLayout/reducer/freeLayoutStatePatcher.ts","../../src/state/freeLayout/reducer/freeLayoutCollectionReducer.ts","../../src/state/esp/espStreamsReducer.ts","../../src/state/mifidPanel/reducers/mifidToggleReducer.ts","../../src/state/mifidPanel/reducers/mifidNegotiationsReducer.ts","../../src/state/mifidPanel/reducers/mifidStartingNegotiationReducer.ts","../../src/state/mifidPanel/utils.ts","../../src/state/mifidPanel/reducers/mifidQuotesReducer.ts","../../src/state/mifidPanel/reducers/index.ts","../../src/state/toasts/toastsReducer.ts","../../src/state/rootReducer.ts","../../src/bootstrap/streams/typings.ts","../../src/bootstrap/streams/typeGuards.ts","../../src/utils/logger.ts","../../src/bootstrap/streams/streamingWorker.ts","../../src/bootstrap/streams/visibility.ts","../../src/utils/RX/operators/measuredDelay.ts","../../src/bootstrap/streams/streamWebworker.ts","../../src/utils/createCircuitBreaker.ts","../../src/circuitBreaker.ts","../../src/bootstrap/reduxMiddlewares/matomoHandler.ts","../../src/bootstrap/reduxMiddlewares/logActionCallback.ts","../../src/redux-middlewares/tryCatchMiddleware.ts","../../src/bootstrap/reduxMiddlewares/crashEventHandler.ts","../../src/bootstrap/reduxMiddlewares/index.ts","../../src/redux-middlewares/circuitBreakerMiddleware.ts","../../src/api/referenceData.ts","../../src/api/tradeCapture/option/tradeCapture.ts","../../src/api/tradeCapture/cash/tradeCaptureMapping.ts","../../src/api/tradeCapture/cash/tradeCapture.ts","../../src/api/tradeCapture/swap/tradeCapture.ts","../../src/api/tradeCapture/bulk/tradeCapture.ts","../../src/api/tradeCapture/accumulator/tradeCapture.ts","../../src/api/multipass/option/rfsQuoteCancel.ts","../../src/api/multipass/option/optionQuoteRequest.ts","../../src/api/multipass/option/optionRfsQuoteUpdate.ts","../../src/utils/base64.ts","../../src/api/multipass/option/optionQuoteExecution.ts","../../src/api/multipass/cash/rfs/cashRfsQuoteExecution.ts","../../src/api/multipass/cash/esp/cashEspQuoteExecution.ts","../../src/api/multipass/cash/rfs/cashRfsQuoteRequest.ts","../../src/api/multipass/cash/esp/cashStreamRequest.ts","../../src/api/multipass/cash/esp/espStreamUnsubcribe.ts","../../src/api/order/oms.ts","../../src/api/multipass/recordPriceRequestApi.ts","../../src/api/sessionService.ts","../../src/api/multipass/swap/swapRfsQuoteRequest.ts","../../src/api/multipass/swap/swapRfsQuoteExecution.ts","../../src/api/multipass/swap/swapRfsQuoteCancel.ts","../../src/api/multipass/cash/rfs/cashRfsQuoteCancel.ts","../../src/utils/composer.ts","../../src/api/workspaceService/updaters/updater1/model/blotterModel.ts","../../src/api/workspaceService/updaters/updater1/updater1.ts","../../src/api/workspaceService/updaters/updater2/model/blotterModel.ts","../../src/api/workspaceService/updaters/updater2/updater2.ts","../../src/api/workspaceService/updaters/updater3/model/blotterModel.ts","../../src/api/workspaceService/updaters/updater3/updater3.ts","../../src/api/workspaceService/updaters/updater4/updater4.ts","../../src/api/workspaceService/updaters/updater5/updater5.ts","../../src/api/workspaceService/updaters/updater6/updater6.ts","../../src/api/workspaceService/updaters/updater7/updater7.ts","../../src/api/workspaceService/updaters/updater8/updater8.ts","../../src/api/workspaceService/updaters/updater9/updater9.ts","../../src/api/workspaceService/updaters/index.ts","../../src/api/workspaceService/updater.ts","../../src/api/workspaceService/workspaceService.ts","../../src/api/userPreferencesService.ts","../../src/api/eventLog.ts","../../src/api/multipass/bulk/bulkQuoteRequest.ts","../../src/api/multipass/bulk/bulkQuoteExecution.ts","../../src/api/multipass/bulk/bulkQuoteCancel.ts","../../src/api/blotter/blotterService.ts","../../src/api/multipass/cash/esp/cashTieringRequest.ts","../../src/api/order/orderEmails.ts","../../src/api/xoneAutomation.ts","../../src/api/preTradeRegistrations.ts","../../src/api/bamSearch.ts","../../src/api/multipass/accumulator/accumulatorRfsRequest.ts","../../src/api/multipass/accumulator/accumulatorRfsCancel.ts","../../src/api/multipass/accumulator/accumulatorRfsExecute.ts","../../src/api/ordersTemplatesService.ts","../../src/api/dateApi.ts","../../src/api/pinnedCompaniesService.ts","../../src/api/smartRfsService.ts","../../src/api/index.ts","../../configuration.ts","../../src/utils/userConsent.ts","../../src/utils/matomoUtils.ts","../../src/bootstrap/matomo.ts","../../src/bootstrap/store.ts","../../src/api/help/sendHelpRequest.ts","../../src/api/help/index.ts","../../src/components/Modals/HelpButton.tsx","../../node_modules/.pnpm/sourcemapped-stacktrace@1.1.11/node_modules/sourcemapped-stacktrace/dist/sourcemapped-stacktrace.js","../../src/components/share/formElements/Collapsable/connectCollapsable.ts","../../src/components/contexts/GenericContext.tsx","../../node_modules/.pnpm/@sgme+react@1.3.0_react@18.2.0/node_modules/@sgme/react/lib/context.js","../../node_modules/.pnpm/@sgme+react@1.3.0_react@18.2.0/node_modules/@sgme/react/lib/lazy.js","../../node_modules/.pnpm/@sgme+react@1.3.0_react@18.2.0/node_modules/@sgme/react/lib/index.js","../../src/components/contexts/QuoteAndLegIdsContext.tsx","../../src/components/contexts/index.ts","../../src/components/share/renderPropsConnect.tsx","../../src/components/Form/Inputs/e2e.ts","../../src/components/share/hooks/useToggle.ts","../../src/components/share/formElements/Collapsable/Collapsables.tsx","../../src/components/FxAccumulatorTile/Extension/AccumulatorCollapseButton.tsx","../../node_modules/.pnpm/@emotion+stylis@0.8.5/node_modules/@emotion/stylis/dist/stylis.browser.esm.js","../../node_modules/.pnpm/@emotion+unitless@0.7.5/node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../../node_modules/.pnpm/@emotion+memoize@0.8.0/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../../node_modules/.pnpm/@emotion+is-prop-valid@1.2.0/node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../../node_modules/.pnpm/styled-components@5.3.9_react-dom@18.2.0_react-is@18.2.0_react@18.2.0/node_modules/styled-components/dist/styled-components.browser.esm.js","../../src/components/share/formElements/Collapsable/CollapsableBlock.tsx","../../src/components/share/formElements/Collapsable/index.ts","../../src/components/Modals/CrashModal.tsx","../../src/components/Modals/PropertiesErrorDetails.tsx","../../src/components/Modals/ErrorDetails.tsx","../../src/components/Modals/AccessRequest.tsx","../../src/components/Modals/SessionDisconnected.tsx","../../src/components/Modals/SessionTimeout.tsx","../../src/components/share/EmailsInput/emailsInputHandlers.ts","../../src/components/Form/Inputs/SizeContext.tsx","../../src/components/Form/Inputs/className.ts","../../src/components/share/EmailsInput/emailsInputActions.ts","../../src/components/share/EmailsInput/EmailsInput.tsx","../../src/components/share/EmailsInput/emailsLocalReducer.ts","../../src/components/share/hooks/usePreferences.ts","../../src/components/UserPreferences/connect/connectUserPref.ts","../../src/components/UserPreferences/connect/index.ts","../../src/components/UserPreferences/NotificationEmails.tsx","../../src/components/UserPreferences/UserPrefLabel.tsx","../../src/components/UserPreferences/AutoCloseGrowlAfter.tsx","../../src/components/share/formElements/SwitchInput.tsx","../../src/components/UserPreferences/CheckboxUserPref.tsx","../../src/components/UserPreferences/simpleCheckboxUserPrefs.ts","../../src/utils/numberInputConstants.ts","../../src/utils/numberInputKeyHandlers.ts","../../src/utils/stateProps.ts","../../src/components/share/NumberInput/DecimalKey.tsx","../../src/components/share/createEventHandler.tsx","../../src/components/share/NumberInput/NumberInputRenderProps.tsx","../../src/components/Form/Inputs/formTypeContext.tsx","../../src/components/Form/Inputs/InputGroup.tsx","../../src/components/contexts/tabContext.ts","../../src/components/Form/Inputs/NumberInput.tsx","../../src/components/UserPreferences/coerceDefaultNotional.ts","../../src/components/UserPreferences/DefaultNotional.tsx","../../src/components/Blotter/connect/connectLiveBlotter.ts","../../src/components/Blotter/connect/connectLiveBlotterTab.ts","../../src/components/Blotter/connect/connectLiveBlotterPanel.ts","../../src/components/share/connect/connectReadonly.ts","../../src/components/Blotter/connect/connectMinimizeButton.ts","../../src/components/Blotter/connect/connectHistoricalToggle.ts","../../src/components/Blotter/connect/connectHistoricalDateRange.ts","../../src/components/Blotter/connect/connectHistoricalDateRangeOption.ts","../../src/components/Blotter/connect/connectBlotterError.ts","../../src/components/Blotter/connect/connectBlotterLoading.ts","../../src/components/Blotter/connect/connectBlotterErrors.ts","../../src/components/Blotter/connect/connectQuickBlotterButton.ts","../../src/components/Blotter/connect/index.ts","../../src/components/UserPreferences/ShowMyMainDeals.tsx","../../src/components/share/SwitchChildren.tsx","../../src/components/share/UserType/connectUserType.ts","../../src/components/share/hooks/useUserType.ts","../../src/components/share/UserType/IsInternal.tsx","../../src/components/share/UserType/IsInternalSales.tsx","../../src/components/share/UserType/index.tsx","../../src/components/share/Select.tsx","../../src/utils/theme.ts","../../src/components/contexts/ThemeContext.ts","../../src/components/UserPreferences/ChangeTheme.tsx","../../src/components/UserPreferences/ListUserPref.tsx","../../src/components/UserPreferences/selectPreferences.ts","../../src/components/UserPreferences/UserPreferencesContents.tsx","../../src/components/Modals/UserPreferences.tsx","../../src/components/share/lazy.ts","../../src/components/layout/Footer.tsx","../../src/components/contexts/Dragging.ts","../../src/components/GenericTile/connect/connectCatchTile.ts","../../src/components/GenericTile/connect/connectTileSize.ts","../../src/components/GenericTile/connect/connectQuoteHasError.ts","../../src/components/GenericTile/connect/connectQuoteError.ts","../../src/components/GenericTile/connect/connectTileInstrument.ts","../../src/components/GenericTile/connect/connectTileStatus.ts","../../src/components/GenericTile/connect/index.ts","../../src/components/FxTileHeader/CloseTile/CloseTile.tsx","../../src/components/FxTileHeader/CloseTile/connectCloseTile.ts","../../src/components/FxTileHeader/CloseTile/index.ts","../../src/components/FxTileHeader/InstrumentChooser/InstrumentChooser.tsx","../../src/components/FxTileHeader/InstrumentChooser/connectInstrumentChooser.ts","../../src/components/FxTileHeader/InstrumentChooser/index.ts","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/lib/utils.js","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/lib/Fade.js","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/lib/PopperContent.js","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/lib/TooltipPopoverWrapper.js","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/lib/Popover.js","../../src/components/share/RefToggle.tsx","../../src/components/FxTileHeader/PredealChecksConnect.ts","../../src/components/FxTileHeader/PredealChecks.tsx","../../src/components/FxTileHeader/connect/connectNDCheckbox.ts","../../src/components/FxTileHeader/connect/index.ts","../../src/components/share/formElements/CheckboxInput.tsx","../../src/components/FxTileHeader/NDCheckbox.tsx","../../node_modules/.pnpm/react-virtualized-auto-sizer@1.0.7_react-dom@18.2.0_react@18.2.0/node_modules/react-virtualized-auto-sizer/dist/index.esm.js","../../node_modules/.pnpm/memoize-one@5.2.1/node_modules/memoize-one/dist/memoize-one.esm.js","../../node_modules/.pnpm/react-window@1.8.8_react-dom@18.2.0_react@18.2.0/node_modules/react-window/dist/index.esm.js","../../src/utils/filter.ts","../../src/components/CurrencyPicker/CurrencyPickerContext.tsx","../../src/components/share/hooks/useProductAccess.ts","../../src/utils/sortCurrencies.ts","../../src/components/contexts/OrderTypeContext.ts","../../src/components/CurrencyPicker/CurrencyList.tsx","../../src/components/CurrencyPicker/extendedCurrencyWarning.ts","../../src/components/Tooltip/connectFieldTooltip.ts","../../src/components/Tooltip/connectLegFieldTooltip.ts","../../src/components/share/hooks/useConditionalCallback.ts","../../src/components/contexts/RefContext.tsx","../../src/components/contexts/TooltipContainer.ts","../../src/components/Tooltip/DisplayTooltip.tsx","../../src/components/Tooltip/connectHedgeFieldTooltip.ts","../../src/components/Tooltip/index.ts","../../src/components/CurrencyPicker/connectCurrencyPicker.ts","../../src/components/CurrencyPicker/CurrencyPicker.tsx","../../src/components/FxTileHeader/TileClientPicker/connectTileClientPicker.ts","../../src/components/share/FilterList/FilterList.tsx","../../src/components/ClientPicker/utils/string.ts","../../src/components/ClientPicker/utils/sort.ts","../../src/components/ClientPicker/utils/filter.ts","../../src/components/ClientPicker/utils/emphasize.ts","../../src/components/ClientPicker/utils/HighlightMatches.tsx","../../src/components/ClientPicker/ClientRow.tsx","../../src/components/NavMenu/PrimeBrokerBadge.tsx","../../src/components/ClientPicker/ClientListRowMenu.tsx","../../src/components/ClientPicker/ClientList.tsx","../../src/components/ClientPicker/ClientPicker.tsx","../../src/components/FxTileHeader/TileClientPicker/TileClientPicker.tsx","../../src/components/FxTileHeader/TileClientPicker/index.ts","../../src/components/share/hooks/useQuoteType.ts","../../src/components/FxTileHeader/TileMenu/CopyToClipBoard/formatRawData.ts","../../src/components/FxTileHeader/TileMenu/CopyToClipBoard/swapData.ts","../../src/components/FxTileHeader/TileMenu/CopyToClipBoard/CopyToClipBoard.tsx","../../src/components/FxTileHeader/TileMenu/TileMenu.tsx","../../src/components/FxTileHeader/TileMenu/connectTileMenu.ts","../../src/components/FxTileHeader/TileMenu/index.ts","../../src/components/FxTileHeader/AccountChanged/AccountChanged.tsx","../../src/components/FxTileHeader/AccountChanged/connectAccountChanged.ts","../../src/components/FxTileHeader/AccountChanged/index.ts","../../src/components/FxTileHeader/TileHeader.tsx","../../src/components/share/TestUtilSpan/connect/connectTestUtil.ts","../../src/components/share/TestUtilSpan/connect/index.ts","../../src/components/share/TestUtilSpan/TestUtilSpan.tsx","../../src/utils/getNextFocus.ts","../../src/components/share/changeFocusOnKeyDown.ts","../../src/components/FxTileLayout/TileWrapper.tsx","../../src/components/FxTileLayout/TileContainer.tsx","../../src/components/FxTileLayout/TileLayout.tsx","../../src/components/share/tagWithProps.ts","../../src/components/GenericTile/TileError.tsx","../../src/components/share/TradeCaptureSpinner/connectSpinner.ts","../../src/components/share/TradeCaptureSpinner/Spinner.tsx","../../src/components/share/TradeCaptureSpinner/index.ts","../../src/components/GenericTile/TileEmpty.tsx","../../src/components/share/Catch.tsx","../../src/components/GenericTile/TileCatchError.tsx","../../src/components/GenericTile/useElementSize.ts","../../src/components/GenericTile/TileSizeMonitor.tsx","../../src/components/GenericTile/TileInstrument.tsx","../../src/components/GenericTile/TileStatus.tsx","../../src/components/GenericTile/QuoteStatus.tsx","../../src/components/GenericTile/QuoteError.tsx","../../src/components/share/EmphasizedIcon.tsx","../../src/components/share/connect/connectInstrument.ts","../../src/components/share/connect/connectViewSgLogExecutionError.ts","../../src/components/share/connect/connectCurrencyPair.ts","../../src/components/share/connect/connectExecutionStatus.ts","../../src/components/share/connect/connectTraderInfos.ts","../../src/components/share/connect/connectMifidButton.ts","../../src/components/share/connect/connectFieldError.ts","../../src/components/share/connect/connectOrderResultOverlay.ts","../../src/components/share/connect/index.ts","../../src/components/share/ExecutionStatus.tsx","../../src/components/contexts/AutoInstrumentProvider.tsx","../../src/components/GenericTile/TileRoot.tsx","../../src/components/ClientWorkspace/GridDraggingPlaceholder.tsx","../../src/state/gridLayout/positivePositions.tsx","../../src/components/ClientWorkspace/GridItem.tsx","../../src/components/ClientWorkspace/NewTile.tsx","../../src/components/ClientWorkspace/connect/connectFreeLayoutContainer.ts","../../src/components/ClientWorkspace/connect/connectGridContainer.ts","../../src/components/ClientWorkspace/connect/connectTabContents.ts","../../src/components/ClientWorkspace/connect/index.ts","../../src/components/ClientWorkspace/GridContainer.tsx","../../src/components/share/OrderResultOverlay.tsx","../../src/components/ClientWorkspace/FreeLayoutContainer.tsx","../../src/components/ClientWorkspace/ClientWorkspace.tsx","../../node_modules/.pnpm/reactstrap@8.10.1_react-dom@18.2.0_react@18.2.0/node_modules/reactstrap/lib/Tooltip.js","../../src/components/Blotter/LiveBlotterErrorIndicator.tsx","../../src/components/Blotter/LiveBlotterPanel.tsx","../../src/components/Blotter/QuickBlotterButton.tsx","../../src/components/share/RenderWhen/RenderWhen.ts","../../src/components/share/RenderWhen/connect/connectUserHasAccess.ts","../../src/components/share/RenderWhen/connect/connectUserHasProducts.ts","../../src/components/share/RenderWhen/connect/connectFeatureToggle.ts","../../src/components/share/RenderWhen/connect/connectIsProductName.ts","../../src/components/share/RenderWhen/connect/index.ts","../../src/components/share/RenderWhen/index.ts","../../src/components/share/hooks/useTheme.ts","../../src/components/layout/HelpCenter.tsx","../../src/components/AppCrash.ts","../../src/components/NavMenu/TabId.tsx","../../src/components/NavMenu/TabList/connect/connectTabList.ts","../../src/components/NavMenu/TabList/connect/connectTabItem.ts","../../src/components/NavMenu/TabList/connect/connectTabName.ts","../../src/components/NavMenu/TabList/connect/connectCloseTabButton.ts","../../src/components/NavMenu/TabList/connect/index.ts","../../src/components/NavMenu/TabPopover/connect/connectChangeTabTypeButton.ts","../../src/components/NavMenu/TabPopover/connect/connectTabPopover.ts","../../src/components/NavMenu/TabPopover/connect/index.ts","../../src/components/NavMenu/TabPopover/ChangeTabTypeButton.tsx","../../src/components/NavMenu/TabPopover/TabPopover.tsx","../../src/components/NavMenu/TabList/CloseTabButton.tsx","../../src/components/share/createHandler.tsx","../../src/components/share/InputToggle.tsx","../../src/components/share/EnhancedInput/EnhancedInput.tsx","../../src/components/NavMenu/TabList/TabName.tsx","../../src/components/NavMenu/TabList/TabItem.tsx","../../src/components/NavMenu/TabList/TabList.tsx","../../src/components/NavMenu/MenuButtons/connect/connectAddTabButton.ts","../../src/components/NavMenu/MenuButtons/connect/connectLockButton.ts","../../src/components/NavMenu/MenuButtons/connect/connectUserPrefButton.ts","../../src/components/NavMenu/MenuButtons/connect/connectSaveWorkspaceButton.ts","../../src/components/NavMenu/MenuButtons/connect/connectMifidPanelButton.ts","../../src/components/NavMenu/MenuButtons/connect/connectTabsMenu.ts","../../src/components/NavMenu/MenuButtons/connect/connectTabMenuItem.ts","../../src/components/NavMenu/MenuButtons/connect/index.ts","../../src/components/Form/Inputs/DisableableButtonWithTooltip.tsx","../../src/components/NavMenu/MenuButtons/MenuButton.tsx","../../src/components/NavMenu/MenuButtons/AddTabButton.tsx","../../src/components/NavMenu/MenuButtons/LockButton.tsx","../../src/components/NavMenu/MenuButtons/UserPrefButton.tsx","../../src/components/NavMenu/MenuButtons/HelpRequestButton.tsx","../../src/components/share/hooks/useFeatureToggle.ts","../../src/components/NavMenu/MenuButtons/SaveWorkspaceButton.tsx","../../src/components/NavMenu/MenuButtons/MifidPanelButton.tsx","../../src/components/NavMenu/MenuButtons/TabsMenu.tsx","../../src/components/NavMenu/NavMenu.tsx","../../src/components/layout/AccountCenter.tsx","../../src/components/layout/NotificationZone/NotificationZone.tsx","../../src/components/layout/NotificationZone/connect.ts","../../src/components/layout/NotificationZone/index.ts","../../src/components/NavMenu/HeaderButtons.tsx","../../src/components/layout/Header.tsx","../../src/components/MifidPanel/connect/connectMifidPanel.ts","../../src/components/MifidPanel/connect/connectNegotiation.ts","../../src/components/MifidPanel/connect/connectMifidQuote.ts","../../src/components/MifidPanel/connect/index.ts","../../src/components/MifidPanel/MifidQuote.tsx","../../src/components/MifidPanel/Negotiation.tsx","../../src/components/MifidPanel/MifidPanel.tsx","../../src/components/ClientWorkspace/Theme.tsx","../../src/components/Toasts/Toast.tsx","../../src/components/Toasts/Toasts.tsx","../../src/components/App.tsx","../../src/main.tsx","../../src/execution/handleExecutionStream.ts","../../src/bootstrap/sgwtConnectEventHandler.ts","../../node_modules/.pnpm/raf-schd@4.0.3/node_modules/raf-schd/dist/raf-schd.esm.js","../../src/bootstrap/storeSubscribeScheduler.ts","../../src/bootstrap/index.ts","../../src/utils/canvas.ts","../../src/utils/font.ts","../../src/index.ts"],"sourcesContent":["\n window.sgbsVersion = '4.31.0';\n \n const majorVersion = window.sgbsVersion.split('.')[0];\n const params = new URLSearchParams(self.location.search);\n const theme = params.get('theme') ?? localStorage.getItem('sgmeFxTheme');\n const variation = theme === 'DARK' ? 'dark' : 'standard';\n let cdnUrls;\n if (location.href.includes('fr.world.socgen') || location.href.includes('azureedge') || location.href.includes('local')) {\n const sgbsCdnUrl = `https://shared.fr.world.socgen/sg-bootstrap/v${majorVersion}/`;\n cdnUrls = {\n sgbs: `${sgbsCdnUrl}${window.sgbsVersion}/sg-bootstrap-${variation}.min.css`,\n aggrid: `${sgbsCdnUrl}ag-grid-theme/${window.sgbsVersion}/28-${variation}.min.css`,\n icons: `${sgbsCdnUrl}icons/index.min.css`,\n }\n } else {\n const sgbsCdnUrl = `https://sgwt-cdn-sgbs.sgmarkets.com/sg-bootstrap/${window.sgbsVersion}`;\n cdnUrls = {\n sgbs: `${sgbsCdnUrl}/core/sg-bootstrap-${variation}.min.css`,\n aggrid: `${sgbsCdnUrl}/ag-grid-theme/28-${variation}.min.css`,\n icons: `${sgbsCdnUrl}/icons/index.min.css`,\n }\n }\n \n Object.entries(cdnUrls).forEach(([id, url]) => {\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.id = id;\n link.href = url;\n document.head.appendChild(link);\n });\n ","import { setupSGWTConnect } from '@sgwt/connect-core';\nimport type { ISGWTConnectIdTokenClaims } from '@sgwt/connect-core/dist/src/SGWTConnectIdTokenClaims';\nimport type { ISGWTConnectOpenIDStandardClaims } from '@sgwt/connect-core/dist/src/SGWTConnectOpenIDUserInfo';\n\nconst originalSgwtConnect = setupSGWTConnect(window.sgmeConfiguration.sgConnect);\n\nexport const getFakeUser = (): string | undefined => {\n let user: string | undefined;\n const standardSgConnect = originalSgwtConnect;\n\n const params = new URLSearchParams(self.location.search);\n\n if (params.has('user')) {\n user = params.get('user') ?? undefined;\n } else if (window.sgmeConfiguration.env.toLowerCase().includes('demo')) {\n user = standardSgConnect.getIdTokenClaims()?.sub;\n } else if (window.sgmeConfiguration.useFakeSgConnect) {\n user = 'dow.jones@sgcib.com';\n }\n\n return user;\n};\n\nconst getFakeOverridenSGConnect = () => {\n const standardSgConnect = originalSgwtConnect;\n const fakeUserEmail = getFakeUser()!;\n\n standardSgConnect.getIdTokenClaims = () => ({ sub: fakeUserEmail } as ISGWTConnectIdTokenClaims);\n\n const originalFetchUserInfo = standardSgConnect.fetchUserInfo.bind(standardSgConnect);\n standardSgConnect.fetchUserInfo = callback => {\n originalFetchUserInfo((error, claims) => {\n const fakeUser = {\n ...claims,\n sub: fakeUserEmail,\n mail: fakeUserEmail,\n name: getNameFromEmail(fakeUserEmail),\n } as ISGWTConnectOpenIDStandardClaims;\n callback(error, fakeUser);\n });\n return standardSgConnect;\n };\n\n return standardSgConnect;\n};\n\nexport const sgwtConnect = window.sgmeConfiguration.useFakeSgConnect\n ? getFakeOverridenSGConnect()\n : originalSgwtConnect;\n\nconst getNameFromEmail = (email: string) =>\n email.split('@')[0].replace('-ext', '').replace('.', ' ');\n","export type StreamingConnectionAction =\n | StreamingConnected\n | StreamingReconnected\n | StreamingDisconnected\n | StreamingDegraded\n | StreamingHealthy;\n\nexport interface StreamingConnected {\n type: 'STREAMING_CONNECTED';\n connectionId: string;\n driver: string;\n}\n\nexport function streamingConnected(connectionId: string, driver: string): StreamingConnected {\n return {\n type: 'STREAMING_CONNECTED',\n connectionId,\n driver,\n };\n}\n\nexport interface StreamingReconnected {\n type: 'STREAMING_RECONNECTED';\n connectionId: string;\n driver: string;\n}\n\nexport function streamingReconnected(connectionId: string, driver: string): StreamingReconnected {\n return {\n type: 'STREAMING_RECONNECTED',\n connectionId,\n driver,\n };\n}\n\nexport interface StreamingDisconnected {\n type: 'STREAMING_DISCONNECTED';\n reason: string;\n}\n\nexport function streamingDisconnected(reason: string): StreamingDisconnected {\n return {\n type: 'STREAMING_DISCONNECTED',\n reason,\n };\n}\n\nexport interface StreamingDegraded {\n type: 'STREAMING_DEGRADED';\n}\n\nexport function streamingDegraded(): StreamingDegraded {\n return {\n type: 'STREAMING_DEGRADED',\n };\n}\n\nexport interface StreamingHealthy {\n type: 'STREAMING_HEALTHY';\n}\n\nexport function streamingHealthy(): StreamingHealthy {\n return {\n type: 'STREAMING_HEALTHY',\n };\n}\n","import type { Thunk } from 'state';\n\nexport function streamingReconnectedThunk(connectionId: string, driver: string): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n dispatch(ac.streamingReconnected(connectionId, driver));\n dispatch(ac.espStreamsRefreshEpic(connectionId, sl.getEspStreamKeys(getState())));\n };\n}\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3 batch = newBatch; // Supply a getter just to skip dealing with ESM bindings\n\nexport const getBatch = () => batch;","import { createContext } from 'react';\nexport const ReactReduxContext = /*#__PURE__*/createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const { store } = useReduxContext()\r\n * return
{store.getState()}
\r\n * }\r\n */\nexport function useReduxContext() {\n const contextValue = useContext(ReactReduxContext);\n\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a ');\n }\n\n return contextValue;\n}","export const notInitialized = () => {\n throw new Error('uSES not initialized!');\n};","import { useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { ReactReduxContext } from '../components/Context';\nimport { notInitialized } from '../utils/useSyncExternalStore';\nlet useSyncExternalStoreWithSelector = notInitialized;\nexport const initializeUseSelector = fn => {\n useSyncExternalStoreWithSelector = fn;\n};\n\nconst refEquality = (a, b) => a === b;\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context = ReactReduxContext) {\n const useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : () => useContext(context);\n return function useSelector(selector, equalityFn = refEquality) {\n if (process.env.NODE_ENV !== 'production') {\n if (!selector) {\n throw new Error(`You must pass a selector to useSelector`);\n }\n\n if (typeof selector !== 'function') {\n throw new Error(`You must pass a function as a selector to useSelector`);\n }\n\n if (typeof equalityFn !== 'function') {\n throw new Error(`You must pass a function as an equality function to useSelector`);\n }\n }\n\n const {\n store,\n subscription,\n getServerState\n } = useReduxContext();\n const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store.getState, getServerState || store.getState, selector, equalityFn);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return
{counter}
\r\n * }\r\n */\n\nexport const useSelector = /*#__PURE__*/createSelectorHook();","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"];\nimport verifySubselectors from './verifySubselectors';\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, {\n areStatesEqual,\n areOwnPropsEqual,\n areStatePropsEqual\n}) {\n let hasRunAtLeastOnce = false;\n let state;\n let ownProps;\n let stateProps;\n let dispatchProps;\n let mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n const nextStateProps = mapStateToProps(state, ownProps);\n const statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n const propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n const stateChanged = !areStatesEqual(nextState, state, nextOwnProps, ownProps);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n}\n// TODO: Add more comments\n// The selector returned by selectorFactory will memoize its results,\n// allowing connect's shouldComponentUpdate to return false if final\n// props have not changed.\nexport default function finalPropsSelectorFactory(dispatch, _ref) {\n let {\n initMapStateToProps,\n initMapDispatchToProps,\n initMergeProps\n } = _ref,\n options = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n const mapStateToProps = initMapStateToProps(dispatch, options);\n const mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n const mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps);\n }\n\n return pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","export default function bindActionCreators(actionCreators, dispatch) {\n const boundActionCreators = {};\n\n for (const key in actionCreators) {\n const actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = (...args) => dispatch(actionCreator(...args));\n }\n }\n\n return boundActionCreators;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant( // * Note:\n// It seems that the dispatch argument\n// could be a dispatch function in some cases (ex: whenMapDispatchToPropsIsMissing)\n// and a state object in some others (ex: whenMapStateToPropsIsMissing)\n// eslint-disable-next-line no-unused-vars\ngetConstant) {\n return function initConstantSelector(dispatch) {\n const constant = getConstant(dispatch);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n// TODO Can this get pulled out so that we can subscribe directly to the store if we don't need ownProps?\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, {\n displayName\n }) {\n const proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch, undefined);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n let props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","export function createInvalidArgFactory(arg, name) {\n return (dispatch, options) => {\n throw new Error(`Invalid value of type ${typeof arg} for ${name} argument when connecting component ${options.wrappedComponentName}.`);\n };\n}","import bindActionCreators from '../utils/bindActionCreators';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nimport { createInvalidArgFactory } from './invalidArgFactory';\nexport function mapDispatchToPropsFactory(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(dispatch => // @ts-ignore\n bindActionCreators(mapDispatchToProps, dispatch)) : !mapDispatchToProps ? wrapMapToPropsConstant(dispatch => ({\n dispatch\n })) : typeof mapDispatchToProps === 'function' ? // @ts-ignore\n wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : createInvalidArgFactory(mapDispatchToProps, 'mapDispatchToProps');\n}","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nimport { createInvalidArgFactory } from './invalidArgFactory';\nexport function mapStateToPropsFactory(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(() => ({})) : typeof mapStateToProps === 'function' ? // @ts-ignore\n wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : createInvalidArgFactory(mapStateToProps, 'mapStateToProps');\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nimport { createInvalidArgFactory } from './invalidArgFactory';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n // @ts-ignore\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, {\n displayName,\n areMergedPropsEqual\n }) {\n let hasRunOnce = false;\n let mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n const nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function mergePropsFactory(mergeProps) {\n return !mergeProps ? () => defaultMergeProps : typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : createInvalidArgFactory(mergeProps, 'mergeProps');\n}","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n const batch = getBatch();\n let first = null;\n let last = null;\n return {\n clear() {\n first = null;\n last = null;\n },\n\n notify() {\n batch(() => {\n let listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n\n get() {\n let listeners = [];\n let listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n\n subscribe(callback) {\n let isSubscribed = true;\n let listener = last = {\n callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n\n };\n}\n\nconst nullListeners = {\n notify() {},\n\n get: () => []\n};\nexport function createSubscription(store, parentSub) {\n let unsubscribe;\n let listeners = nullListeners;\n\n function addNestedSub(listener) {\n trySubscribe();\n return listeners.subscribe(listener);\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return Boolean(unsubscribe);\n }\n\n function trySubscribe() {\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n const subscription = {\n addNestedSub,\n notifyNestedSubs,\n handleChangeWrapper,\n isSubscribed,\n trySubscribe,\n tryUnsubscribe,\n getListeners: () => listeners\n };\n return subscription;\n}","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n// Matches logic in React's `shared/ExecutionEnvironment` file\n\nexport const canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\nexport const useIsomorphicLayoutEffect = canUseDOM ? useLayoutEffect : useEffect;","function is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n const keysA = Object.keys(objA);\n const keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"reactReduxForwardedRef\"];\n\n/* eslint-disable valid-jsdoc, @typescript-eslint/no-unused-vars */\nimport hoistStatics from 'hoist-non-react-statics';\nimport React, { useContext, useMemo, useRef } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport defaultSelectorFactory from '../connect/selectorFactory';\nimport { mapDispatchToPropsFactory } from '../connect/mapDispatchToProps';\nimport { mapStateToPropsFactory } from '../connect/mapStateToProps';\nimport { mergePropsFactory } from '../connect/mergeProps';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport shallowEqual from '../utils/shallowEqual';\nimport warning from '../utils/warning';\nimport { ReactReduxContext } from './Context';\nimport { notInitialized } from '../utils/useSyncExternalStore';\nlet useSyncExternalStore = notInitialized;\nexport const initializeConnect = fn => {\n useSyncExternalStore = fn;\n}; // Define some constant arrays just to avoid re-creating these\n\nconst EMPTY_ARRAY = [null, 0];\nconst NO_SUBSCRIPTION_ARRAY = [null, null]; // Attempts to stringify whatever not-really-a-component value we were given\n// for logging in an error message\n\nconst stringifyComponent = Comp => {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\n// This is \"just\" a `useLayoutEffect`, but with two modifications:\n// - we need to fall back to `useEffect` in SSR to avoid annoying warnings\n// - we extract this to a separate function to avoid closing over values\n// and causing memory leaks\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(() => effectFunc(...effectArgs), dependencies);\n} // Effect callback, extracted: assign the latest props values to refs for later usage\n\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, // actualChildProps: unknown,\nchildPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n} // Effect callback, extracted: subscribe to the Redux store or nearest connected ancestor,\n// check for updates after dispatched actions, and trigger re-renders.\n\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, // forceComponentUpdateDispatch: React.Dispatch,\nadditionalSubscribeListener) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return () => {}; // Capture values for checking if and when this component unmounts\n\n let didUnsubscribe = false;\n let lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n const checkForUpdates = () => {\n if (didUnsubscribe || !isMounted.current) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n } // TODO We're currently calling getState ourselves here, rather than letting `uSES` do it\n\n\n const latestStoreState = store.getState();\n let newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // TODO This is hacky and not how `uSES` is meant to be used\n // Trigger the React `useSyncExternalStore` subscriber\n\n additionalSubscribeListener();\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n const unsubscribeWrapper = () => {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n} // Reducer initial state creation for our update reducer\n\n\nconst initStateUpdates = () => EMPTY_ARRAY;\n\nfunction strictEqual(a, b) {\n return a === b;\n}\n/**\r\n * Infers the type of props that a connector will inject into a component.\r\n */\n\n\nlet hasWarnedAboutDeprecatedPureOption = false;\n/**\r\n * Connects a React component to a Redux store.\r\n *\r\n * - Without arguments, just wraps the component, without changing the behavior / props\r\n *\r\n * - If 2 params are passed (3rd param, mergeProps, is skipped), default behavior\r\n * is to override ownProps (as stated in the docs), so what remains is everything that's\r\n * not a state or dispatch prop\r\n *\r\n * - When 3rd param is passed, we don't know if ownProps propagate and whether they\r\n * should be valid component props, because it depends on mergeProps implementation.\r\n * As such, it is the user's responsibility to extend ownProps interface from state or\r\n * dispatch props or both when applicable\r\n *\r\n * @param mapStateToProps A function that extracts values from state\r\n * @param mapDispatchToProps Setup for dispatching actions\r\n * @param mergeProps Optional callback to merge state and dispatch props together\r\n * @param options Options for configuring the connection\r\n *\r\n */\n\nfunction connect(mapStateToProps, mapDispatchToProps, mergeProps, {\n // The `pure` option has been removed, so TS doesn't like us destructuring this to check its existence.\n // @ts-ignore\n pure,\n areStatesEqual = strictEqual,\n areOwnPropsEqual = shallowEqual,\n areStatePropsEqual = shallowEqual,\n areMergedPropsEqual = shallowEqual,\n // use React's forwardRef to expose a ref of the wrapped component\n forwardRef = false,\n // the context consumer to use\n context = ReactReduxContext\n} = {}) {\n if (process.env.NODE_ENV !== 'production') {\n if (pure !== undefined && !hasWarnedAboutDeprecatedPureOption) {\n hasWarnedAboutDeprecatedPureOption = true;\n warning('The `pure` option has been removed. `connect` is now always a \"pure/memoized\" component');\n }\n }\n\n const Context = context;\n const initMapStateToProps = mapStateToPropsFactory(mapStateToProps);\n const initMapDispatchToProps = mapDispatchToPropsFactory(mapDispatchToProps);\n const initMergeProps = mergePropsFactory(mergeProps);\n const shouldHandleStateChanges = Boolean(mapStateToProps);\n\n const wrapWithConnect = WrappedComponent => {\n if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n throw new Error(`You must pass a component to the function returned by connect. Instead received ${stringifyComponent(WrappedComponent)}`);\n }\n\n const wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n const displayName = `Connect(${wrappedComponentName})`;\n const selectorFactoryOptions = {\n shouldHandleStateChanges,\n displayName,\n wrappedComponentName,\n WrappedComponent,\n // @ts-ignore\n initMapStateToProps,\n // @ts-ignore\n initMapDispatchToProps,\n initMergeProps,\n areStatesEqual,\n areStatePropsEqual,\n areOwnPropsEqual,\n areMergedPropsEqual\n };\n\n function ConnectFunction(props) {\n const [propsContext, reactReduxForwardedRef, wrapperProps] = useMemo(() => {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n const {\n reactReduxForwardedRef\n } = props,\n wrapperProps = _objectWithoutPropertiesLoose(props, _excluded);\n\n return [props.context, reactReduxForwardedRef, wrapperProps];\n }, [props]);\n const ContextToUse = useMemo(() => {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && // @ts-ignore\n isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n const contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n const didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n const didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(`Could not find \"store\" in the context of ` + `\"${displayName}\". Either wrap the root component in a , ` + `or pass a custom React context provider to and the corresponding ` + `React context consumer to ${displayName} in connect options.`);\n } // Based on the previous check, one of these must be true\n\n\n const store = didStoreComeFromProps ? props.store : contextValue.store;\n const getServerState = didStoreComeFromContext ? contextValue.getServerState : store.getState;\n const childPropsSelector = useMemo(() => {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return defaultSelectorFactory(store.dispatch, selectorFactoryOptions);\n }, [store]);\n const [subscription, notifyNestedSubs] = useMemo(() => {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n const subscription = createSubscription(store, didStoreComeFromProps ? undefined : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n const notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]); // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n const overriddenContextValue = useMemo(() => {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // Set up refs to coordinate values between the subscription effect and the render logic\n\n const lastChildProps = useRef();\n const lastWrapperProps = useRef(wrapperProps);\n const childPropsFromStoreUpdate = useRef();\n const renderIsScheduled = useRef(false);\n const isProcessingDispatch = useRef(false);\n const isMounted = useRef(false);\n const latestSubscriptionCallbackError = useRef();\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n const actualChildPropsSelector = useMemo(() => {\n const selector = () => {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n };\n\n return selector;\n }, [store, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n const subscribeForReact = useMemo(() => {\n const subscribe = reactListener => {\n if (!subscription) {\n return () => {};\n }\n\n return subscribeUpdates(shouldHandleStateChanges, store, subscription, // @ts-ignore\n childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, reactListener);\n };\n\n return subscribe;\n }, [subscription]);\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, childPropsFromStoreUpdate, notifyNestedSubs]);\n let actualChildProps;\n\n try {\n actualChildProps = useSyncExternalStore( // TODO We're passing through a big wrapper that does a bunch of extra side effects besides subscribing\n subscribeForReact, // TODO This is incredibly hacky. We've already processed the store update and calculated new child props,\n // TODO and we're just passing that through so it triggers a re-render for us rather than relying on `uSES`.\n actualChildPropsSelector, getServerState ? () => childPropsSelector(getServerState(), wrapperProps) : actualChildPropsSelector);\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n ;\n err.message += `\\nThe error may be correlated with this previous error:\\n${latestSubscriptionCallbackError.current.stack}\\n\\n`;\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(() => {\n latestSubscriptionCallbackError.current = undefined;\n childPropsFromStoreUpdate.current = undefined;\n lastChildProps.current = actualChildProps;\n }); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n const renderedWrappedComponent = useMemo(() => {\n return (\n /*#__PURE__*/\n // @ts-ignore\n React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: reactReduxForwardedRef\n }))\n );\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n const renderedChild = useMemo(() => {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n }\n\n const _Connect = React.memo(ConnectFunction);\n\n // Add a hacky cast to get the right output type\n const Connect = _Connect;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n\n if (forwardRef) {\n const _forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n // @ts-ignore\n return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n\n const forwarded = _forwarded;\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n\n return wrapWithConnect;\n}\n\nexport default connect;","import React, { useMemo } from 'react';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider({\n store,\n context,\n children,\n serverState\n}) {\n const contextValue = useMemo(() => {\n const subscription = createSubscription(store);\n return {\n store,\n subscription,\n getServerState: serverState ? () => serverState : undefined\n };\n }, [store, serverState]);\n const previousState = useMemo(() => store.getState(), [store]);\n useIsomorphicLayoutEffect(() => {\n const {\n subscription\n } = contextValue;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return () => {\n subscription.tryUnsubscribe();\n subscription.onStateChange = undefined;\n };\n }, [contextValue, previousState]);\n const Context = context || ReactReduxContext; // @ts-ignore 'AnyAction' is assignable to the constraint of type 'A', but 'A' could be instantiated with a different subtype\n\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nexport default Provider;","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context = ReactReduxContext) {\n const useReduxContext = // @ts-ignore\n context === ReactReduxContext ? useDefaultReduxContext : () => useContext(context);\n return function useStore() {\n const {\n store\n } = useReduxContext(); // @ts-ignore\n\n return store;\n };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n * const store = useStore()\r\n * return
{store.getState()}
\r\n * }\r\n */\n\nexport const useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context = ReactReduxContext) {\n const useStore = // @ts-ignore\n context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n const store = useStore(); // @ts-ignore\n\n return store.dispatch;\n };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const dispatch = useDispatch()\r\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n * return (\r\n *
\r\n * {value}\r\n * \r\n *
\r\n * )\r\n * }\r\n */\n\nexport const useDispatch = /*#__PURE__*/createDispatchHook();","// The primary entry point assumes we're working with standard ReactDOM/RN, but\n// older versions that do not include `useSyncExternalStore` (React 16.9 - 17.x).\n// Because of that, the useSyncExternalStore compat shim is needed.\nimport { useSyncExternalStore } from 'use-sync-external-store/shim';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch';\nimport { initializeUseSelector } from './hooks/useSelector';\nimport { initializeConnect } from './components/connect';\ninitializeUseSelector(useSyncExternalStoreWithSelector);\ninitializeConnect(useSyncExternalStore); // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };\nexport * from './exports';","import { LogBuilder } from '@sgme/logger';\n\nfunction getLogUrl() {\n const baseUrl = window.sgmeConfiguration.apiUrl;\n if (baseUrl.endsWith('/')) {\n return baseUrl + 'api/log';\n }\n return baseUrl + '/api/log';\n}\n\nconst isNode =\n typeof process === 'object' && Boolean(process.versions) && Boolean(process.versions.node);\n\nlet logBuilder = LogBuilder();\nif (!isNode) {\n if (process.env.NODE_ENV === 'production') {\n logBuilder = logBuilder\n .enableServerLogs({\n url: getLogUrl(),\n prefix: 'FX ',\n storeName: 'FX',\n scheduler: {\n defaultInterval: 10_000,\n batchSize: 500,\n range: {\n min: 5_000,\n max: 20_000,\n },\n retryPolicy: 'dropOnFail',\n },\n })\n .setAuthTokenFactory(() => (window as any)?.sgwtConnect?.getAuthorizationHeader());\n } else {\n logBuilder = logBuilder.enableConsole({ minLevel: 'WARN' });\n }\n}\n\nexport const logger = logBuilder.build();\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.push(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.push(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","/**\n * Cannot do Math.log(x) / Math.log(10) bc if IEEE floating point issue\n * @param x number\n */\nexport function getMagnitude(x) {\n // Cannot count string length via Number.toString because it may use scientific notation\n // for very small or very large numbers.\n return Math.floor(Math.log(x) * Math.LOG10E);\n}\nexport function repeat(s, times) {\n if (typeof s.repeat === 'function') {\n return s.repeat(times);\n }\n var arr = new Array(times);\n for (var i = 0; i < arr.length; i++) {\n arr[i] = s;\n }\n return arr.join('');\n}\nexport function setInternalSlot(map, pl, field, value) {\n if (!map.get(pl)) {\n map.set(pl, Object.create(null));\n }\n var slots = map.get(pl);\n slots[field] = value;\n}\nexport function setMultiInternalSlots(map, pl, props) {\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\n var k = _a[_i];\n setInternalSlot(map, pl, k, props[k]);\n }\n}\nexport function getInternalSlot(map, pl, field) {\n return getMultiInternalSlots(map, pl, field)[field];\n}\nexport function getMultiInternalSlots(map, pl) {\n var fields = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n fields[_i - 2] = arguments[_i];\n }\n var slots = map.get(pl);\n if (!slots) {\n throw new TypeError(\"\".concat(pl, \" InternalSlot has not been initialized\"));\n }\n return fields.reduce(function (all, f) {\n all[f] = slots[f];\n return all;\n }, Object.create(null));\n}\nexport function isLiteralPart(patternPart) {\n return patternPart.type === 'literal';\n}\n/*\n 17 ECMAScript Standard Built-in Objects:\n Every built-in Function object, including constructors, that is not\n identified as an anonymous function has a name property whose value\n is a String.\n\n Unless otherwise specified, the name property of a built-in Function\n object, if it exists, has the attributes { [[Writable]]: false,\n [[Enumerable]]: false, [[Configurable]]: true }.\n*/\nexport function defineProperty(target, name, _a) {\n var value = _a.value;\n Object.defineProperty(target, name, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: value,\n });\n}\nexport var UNICODE_EXTENSION_SEQUENCE_REGEX = /-u(?:-[0-9a-z]{2,8})+/gi;\nexport function invariant(condition, message, Err) {\n if (Err === void 0) { Err = Error; }\n if (!condition) {\n throw new Err(message);\n }\n}\n","export var ErrorKind;\n(function (ErrorKind) {\n /** Argument is unclosed (e.g. `{0`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_CLOSING_BRACE\"] = 1] = \"EXPECT_ARGUMENT_CLOSING_BRACE\";\n /** Argument is empty (e.g. `{}`). */\n ErrorKind[ErrorKind[\"EMPTY_ARGUMENT\"] = 2] = \"EMPTY_ARGUMENT\";\n /** Argument is malformed (e.g. `{foo!}``) */\n ErrorKind[ErrorKind[\"MALFORMED_ARGUMENT\"] = 3] = \"MALFORMED_ARGUMENT\";\n /** Expect an argument type (e.g. `{foo,}`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_TYPE\"] = 4] = \"EXPECT_ARGUMENT_TYPE\";\n /** Unsupported argument type (e.g. `{foo,foo}`) */\n ErrorKind[ErrorKind[\"INVALID_ARGUMENT_TYPE\"] = 5] = \"INVALID_ARGUMENT_TYPE\";\n /** Expect an argument style (e.g. `{foo, number, }`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_STYLE\"] = 6] = \"EXPECT_ARGUMENT_STYLE\";\n /** The number skeleton is invalid. */\n ErrorKind[ErrorKind[\"INVALID_NUMBER_SKELETON\"] = 7] = \"INVALID_NUMBER_SKELETON\";\n /** The date time skeleton is invalid. */\n ErrorKind[ErrorKind[\"INVALID_DATE_TIME_SKELETON\"] = 8] = \"INVALID_DATE_TIME_SKELETON\";\n /** Exepct a number skeleton following the `::` (e.g. `{foo, number, ::}`) */\n ErrorKind[ErrorKind[\"EXPECT_NUMBER_SKELETON\"] = 9] = \"EXPECT_NUMBER_SKELETON\";\n /** Exepct a date time skeleton following the `::` (e.g. `{foo, date, ::}`) */\n ErrorKind[ErrorKind[\"EXPECT_DATE_TIME_SKELETON\"] = 10] = \"EXPECT_DATE_TIME_SKELETON\";\n /** Unmatched apostrophes in the argument style (e.g. `{foo, number, 'test`) */\n ErrorKind[ErrorKind[\"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\"] = 11] = \"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\";\n /** Missing select argument options (e.g. `{foo, select}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_OPTIONS\"] = 12] = \"EXPECT_SELECT_ARGUMENT_OPTIONS\";\n /** Expecting an offset value in `plural` or `selectordinal` argument (e.g `{foo, plural, offset}`) */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 13] = \"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\";\n /** Offset value in `plural` or `selectordinal` is invalid (e.g. `{foo, plural, offset: x}`) */\n ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 14] = \"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\";\n /** Expecting a selector in `select` argument (e.g `{foo, select}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR\"] = 15] = \"EXPECT_SELECT_ARGUMENT_SELECTOR\";\n /** Expecting a selector in `plural` or `selectordinal` argument (e.g `{foo, plural}`) */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR\"] = 16] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR\";\n /** Expecting a message fragment after the `select` selector (e.g. `{foo, select, apple}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\"] = 17] = \"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\";\n /**\n * Expecting a message fragment after the `plural` or `selectordinal` selector\n * (e.g. `{foo, plural, one}`)\n */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\"] = 18] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\";\n /** Selector in `plural` or `selectordinal` is malformed (e.g. `{foo, plural, =x {#}}`) */\n ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_SELECTOR\"] = 19] = \"INVALID_PLURAL_ARGUMENT_SELECTOR\";\n /**\n * Duplicate selectors in `plural` or `selectordinal` argument.\n * (e.g. {foo, plural, one {#} one {#}})\n */\n ErrorKind[ErrorKind[\"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\"] = 20] = \"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\";\n /** Duplicate selectors in `select` argument.\n * (e.g. {foo, select, apple {apple} apple {apple}})\n */\n ErrorKind[ErrorKind[\"DUPLICATE_SELECT_ARGUMENT_SELECTOR\"] = 21] = \"DUPLICATE_SELECT_ARGUMENT_SELECTOR\";\n /** Plural or select argument option must have `other` clause. */\n ErrorKind[ErrorKind[\"MISSING_OTHER_CLAUSE\"] = 22] = \"MISSING_OTHER_CLAUSE\";\n /** The tag is malformed. (e.g. `foo) */\n ErrorKind[ErrorKind[\"INVALID_TAG\"] = 23] = \"INVALID_TAG\";\n /** The tag name is invalid. (e.g. `<123>foo`) */\n ErrorKind[ErrorKind[\"INVALID_TAG_NAME\"] = 25] = \"INVALID_TAG_NAME\";\n /** The closing tag does not match the opening tag. (e.g. `foo`) */\n ErrorKind[ErrorKind[\"UNMATCHED_CLOSING_TAG\"] = 26] = \"UNMATCHED_CLOSING_TAG\";\n /** The opening tag has unmatched closing tag. (e.g. `foo`) */\n ErrorKind[ErrorKind[\"UNCLOSED_TAG\"] = 27] = \"UNCLOSED_TAG\";\n})(ErrorKind || (ErrorKind = {}));\n","export var TYPE;\n(function (TYPE) {\n /**\n * Raw text\n */\n TYPE[TYPE[\"literal\"] = 0] = \"literal\";\n /**\n * Variable w/o any format, e.g `var` in `this is a {var}`\n */\n TYPE[TYPE[\"argument\"] = 1] = \"argument\";\n /**\n * Variable w/ number format\n */\n TYPE[TYPE[\"number\"] = 2] = \"number\";\n /**\n * Variable w/ date format\n */\n TYPE[TYPE[\"date\"] = 3] = \"date\";\n /**\n * Variable w/ time format\n */\n TYPE[TYPE[\"time\"] = 4] = \"time\";\n /**\n * Variable w/ select format\n */\n TYPE[TYPE[\"select\"] = 5] = \"select\";\n /**\n * Variable w/ plural format\n */\n TYPE[TYPE[\"plural\"] = 6] = \"plural\";\n /**\n * Only possible within plural argument.\n * This is the `#` symbol that will be substituted with the count.\n */\n TYPE[TYPE[\"pound\"] = 7] = \"pound\";\n /**\n * XML-like tag\n */\n TYPE[TYPE[\"tag\"] = 8] = \"tag\";\n})(TYPE || (TYPE = {}));\nexport var SKELETON_TYPE;\n(function (SKELETON_TYPE) {\n SKELETON_TYPE[SKELETON_TYPE[\"number\"] = 0] = \"number\";\n SKELETON_TYPE[SKELETON_TYPE[\"dateTime\"] = 1] = \"dateTime\";\n})(SKELETON_TYPE || (SKELETON_TYPE = {}));\n/**\n * Type Guards\n */\nexport function isLiteralElement(el) {\n return el.type === TYPE.literal;\n}\nexport function isArgumentElement(el) {\n return el.type === TYPE.argument;\n}\nexport function isNumberElement(el) {\n return el.type === TYPE.number;\n}\nexport function isDateElement(el) {\n return el.type === TYPE.date;\n}\nexport function isTimeElement(el) {\n return el.type === TYPE.time;\n}\nexport function isSelectElement(el) {\n return el.type === TYPE.select;\n}\nexport function isPluralElement(el) {\n return el.type === TYPE.plural;\n}\nexport function isPoundElement(el) {\n return el.type === TYPE.pound;\n}\nexport function isTagElement(el) {\n return el.type === TYPE.tag;\n}\nexport function isNumberSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.number);\n}\nexport function isDateTimeSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.dateTime);\n}\nexport function createLiteralElement(value) {\n return {\n type: TYPE.literal,\n value: value,\n };\n}\nexport function createNumberElement(value, style) {\n return {\n type: TYPE.number,\n value: value,\n style: style,\n };\n}\n","// @generated from regex-gen.ts\nexport var SPACE_SEPARATOR_REGEX = /[ \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\nexport var WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/;\n","/**\n * https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * Credit: https://github.com/caridy/intl-datetimeformat-pattern/blob/master/index.js\n * with some tweaks\n */\nvar DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n/**\n * Parse Date time skeleton into Intl.DateTimeFormatOptions\n * Ref: https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * @public\n * @param skeleton skeleton string\n */\nexport function parseDateTimeSkeleton(skeleton) {\n var result = {};\n skeleton.replace(DATE_TIME_REGEX, function (match) {\n var len = match.length;\n switch (match[0]) {\n // Era\n case 'G':\n result.era = len === 4 ? 'long' : len === 5 ? 'narrow' : 'short';\n break;\n // Year\n case 'y':\n result.year = len === 2 ? '2-digit' : 'numeric';\n break;\n case 'Y':\n case 'u':\n case 'U':\n case 'r':\n throw new RangeError('`Y/u/U/r` (year) patterns are not supported, use `y` instead');\n // Quarter\n case 'q':\n case 'Q':\n throw new RangeError('`q/Q` (quarter) patterns are not supported');\n // Month\n case 'M':\n case 'L':\n result.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][len - 1];\n break;\n // Week\n case 'w':\n case 'W':\n throw new RangeError('`w/W` (week) patterns are not supported');\n case 'd':\n result.day = ['numeric', '2-digit'][len - 1];\n break;\n case 'D':\n case 'F':\n case 'g':\n throw new RangeError('`D/F/g` (day) patterns are not supported, use `d` instead');\n // Weekday\n case 'E':\n result.weekday = len === 4 ? 'short' : len === 5 ? 'narrow' : 'short';\n break;\n case 'e':\n if (len < 4) {\n throw new RangeError('`e..eee` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n case 'c':\n if (len < 4) {\n throw new RangeError('`c..ccc` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n // Period\n case 'a': // AM, PM\n result.hour12 = true;\n break;\n case 'b': // am, pm, noon, midnight\n case 'B': // flexible day periods\n throw new RangeError('`b/B` (period) patterns are not supported, use `a` instead');\n // Hour\n case 'h':\n result.hourCycle = 'h12';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'H':\n result.hourCycle = 'h23';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'K':\n result.hourCycle = 'h11';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'k':\n result.hourCycle = 'h24';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'j':\n case 'J':\n case 'C':\n throw new RangeError('`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead');\n // Minute\n case 'm':\n result.minute = ['numeric', '2-digit'][len - 1];\n break;\n // Second\n case 's':\n result.second = ['numeric', '2-digit'][len - 1];\n break;\n case 'S':\n case 'A':\n throw new RangeError('`S/A` (second) patterns are not supported, use `s` instead');\n // Zone\n case 'z': // 1..3, 4: specific non-location format\n result.timeZoneName = len < 4 ? 'short' : 'long';\n break;\n case 'Z': // 1..3, 4, 5: The ISO8601 varios formats\n case 'O': // 1, 4: miliseconds in day short, long\n case 'v': // 1, 4: generic non-location format\n case 'V': // 1, 2, 3, 4: time zone ID or city\n case 'X': // 1, 2, 3, 4: The ISO8601 varios formats\n case 'x': // 1, 2, 3, 4: The ISO8601 varios formats\n throw new RangeError('`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead');\n }\n return '';\n });\n return result;\n}\n","// @generated from regex-gen.ts\nexport var WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/i;\n","import { __assign } from \"tslib\";\nimport { WHITE_SPACE_REGEX } from './regex.generated';\nexport function parseNumberSkeletonFromString(skeleton) {\n if (skeleton.length === 0) {\n throw new Error('Number skeleton cannot be empty');\n }\n // Parse the skeleton\n var stringTokens = skeleton\n .split(WHITE_SPACE_REGEX)\n .filter(function (x) { return x.length > 0; });\n var tokens = [];\n for (var _i = 0, stringTokens_1 = stringTokens; _i < stringTokens_1.length; _i++) {\n var stringToken = stringTokens_1[_i];\n var stemAndOptions = stringToken.split('/');\n if (stemAndOptions.length === 0) {\n throw new Error('Invalid number skeleton');\n }\n var stem = stemAndOptions[0], options = stemAndOptions.slice(1);\n for (var _a = 0, options_1 = options; _a < options_1.length; _a++) {\n var option = options_1[_a];\n if (option.length === 0) {\n throw new Error('Invalid number skeleton');\n }\n }\n tokens.push({ stem: stem, options: options });\n }\n return tokens;\n}\nfunction icuUnitToEcma(unit) {\n return unit.replace(/^(.*?)-/, '');\n}\nvar FRACTION_PRECISION_REGEX = /^\\.(?:(0+)(\\*)?|(#+)|(0+)(#+))$/g;\nvar SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\\+|#+)?[rs]?$/g;\nvar INTEGER_WIDTH_REGEX = /(\\*)(0+)|(#+)(0+)|(0+)/g;\nvar CONCISE_INTEGER_WIDTH_REGEX = /^(0+)$/;\nfunction parseSignificantPrecision(str) {\n var result = {};\n if (str[str.length - 1] === 'r') {\n result.roundingPriority = 'morePrecision';\n }\n else if (str[str.length - 1] === 's') {\n result.roundingPriority = 'lessPrecision';\n }\n str.replace(SIGNIFICANT_PRECISION_REGEX, function (_, g1, g2) {\n // @@@ case\n if (typeof g2 !== 'string') {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits = g1.length;\n }\n // @@@+ case\n else if (g2 === '+') {\n result.minimumSignificantDigits = g1.length;\n }\n // .### case\n else if (g1[0] === '#') {\n result.maximumSignificantDigits = g1.length;\n }\n // .@@## or .@@@ case\n else {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits =\n g1.length + (typeof g2 === 'string' ? g2.length : 0);\n }\n return '';\n });\n return result;\n}\nfunction parseSign(str) {\n switch (str) {\n case 'sign-auto':\n return {\n signDisplay: 'auto',\n };\n case 'sign-accounting':\n case '()':\n return {\n currencySign: 'accounting',\n };\n case 'sign-always':\n case '+!':\n return {\n signDisplay: 'always',\n };\n case 'sign-accounting-always':\n case '()!':\n return {\n signDisplay: 'always',\n currencySign: 'accounting',\n };\n case 'sign-except-zero':\n case '+?':\n return {\n signDisplay: 'exceptZero',\n };\n case 'sign-accounting-except-zero':\n case '()?':\n return {\n signDisplay: 'exceptZero',\n currencySign: 'accounting',\n };\n case 'sign-never':\n case '+_':\n return {\n signDisplay: 'never',\n };\n }\n}\nfunction parseConciseScientificAndEngineeringStem(stem) {\n // Engineering\n var result;\n if (stem[0] === 'E' && stem[1] === 'E') {\n result = {\n notation: 'engineering',\n };\n stem = stem.slice(2);\n }\n else if (stem[0] === 'E') {\n result = {\n notation: 'scientific',\n };\n stem = stem.slice(1);\n }\n if (result) {\n var signDisplay = stem.slice(0, 2);\n if (signDisplay === '+!') {\n result.signDisplay = 'always';\n stem = stem.slice(2);\n }\n else if (signDisplay === '+?') {\n result.signDisplay = 'exceptZero';\n stem = stem.slice(2);\n }\n if (!CONCISE_INTEGER_WIDTH_REGEX.test(stem)) {\n throw new Error('Malformed concise eng/scientific notation');\n }\n result.minimumIntegerDigits = stem.length;\n }\n return result;\n}\nfunction parseNotationOptions(opt) {\n var result = {};\n var signOpts = parseSign(opt);\n if (signOpts) {\n return signOpts;\n }\n return result;\n}\n/**\n * https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#skeleton-stems-and-options\n */\nexport function parseNumberSkeleton(tokens) {\n var result = {};\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n switch (token.stem) {\n case 'percent':\n case '%':\n result.style = 'percent';\n continue;\n case '%x100':\n result.style = 'percent';\n result.scale = 100;\n continue;\n case 'currency':\n result.style = 'currency';\n result.currency = token.options[0];\n continue;\n case 'group-off':\n case ',_':\n result.useGrouping = false;\n continue;\n case 'precision-integer':\n case '.':\n result.maximumFractionDigits = 0;\n continue;\n case 'measure-unit':\n case 'unit':\n result.style = 'unit';\n result.unit = icuUnitToEcma(token.options[0]);\n continue;\n case 'compact-short':\n case 'K':\n result.notation = 'compact';\n result.compactDisplay = 'short';\n continue;\n case 'compact-long':\n case 'KK':\n result.notation = 'compact';\n result.compactDisplay = 'long';\n continue;\n case 'scientific':\n result = __assign(__assign(__assign({}, result), { notation: 'scientific' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n continue;\n case 'engineering':\n result = __assign(__assign(__assign({}, result), { notation: 'engineering' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n continue;\n case 'notation-simple':\n result.notation = 'standard';\n continue;\n // https://github.com/unicode-org/icu/blob/master/icu4c/source/i18n/unicode/unumberformatter.h\n case 'unit-width-narrow':\n result.currencyDisplay = 'narrowSymbol';\n result.unitDisplay = 'narrow';\n continue;\n case 'unit-width-short':\n result.currencyDisplay = 'code';\n result.unitDisplay = 'short';\n continue;\n case 'unit-width-full-name':\n result.currencyDisplay = 'name';\n result.unitDisplay = 'long';\n continue;\n case 'unit-width-iso-code':\n result.currencyDisplay = 'symbol';\n continue;\n case 'scale':\n result.scale = parseFloat(token.options[0]);\n continue;\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n case 'integer-width':\n if (token.options.length > 1) {\n throw new RangeError('integer-width stems only accept a single optional option');\n }\n token.options[0].replace(INTEGER_WIDTH_REGEX, function (_, g1, g2, g3, g4, g5) {\n if (g1) {\n result.minimumIntegerDigits = g2.length;\n }\n else if (g3 && g4) {\n throw new Error('We currently do not support maximum integer digits');\n }\n else if (g5) {\n throw new Error('We currently do not support exact integer digits');\n }\n return '';\n });\n continue;\n }\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n if (CONCISE_INTEGER_WIDTH_REGEX.test(token.stem)) {\n result.minimumIntegerDigits = token.stem.length;\n continue;\n }\n if (FRACTION_PRECISION_REGEX.test(token.stem)) {\n // Precision\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#fraction-precision\n // precision-integer case\n if (token.options.length > 1) {\n throw new RangeError('Fraction-precision stems only accept a single optional option');\n }\n token.stem.replace(FRACTION_PRECISION_REGEX, function (_, g1, g2, g3, g4, g5) {\n // .000* case (before ICU67 it was .000+)\n if (g2 === '*') {\n result.minimumFractionDigits = g1.length;\n }\n // .### case\n else if (g3 && g3[0] === '#') {\n result.maximumFractionDigits = g3.length;\n }\n // .00## case\n else if (g4 && g5) {\n result.minimumFractionDigits = g4.length;\n result.maximumFractionDigits = g4.length + g5.length;\n }\n else {\n result.minimumFractionDigits = g1.length;\n result.maximumFractionDigits = g1.length;\n }\n return '';\n });\n var opt = token.options[0];\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#trailing-zero-display\n if (opt === 'w') {\n result = __assign(__assign({}, result), { trailingZeroDisplay: 'stripIfInteger' });\n }\n else if (opt) {\n result = __assign(__assign({}, result), parseSignificantPrecision(opt));\n }\n continue;\n }\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#significant-digits-precision\n if (SIGNIFICANT_PRECISION_REGEX.test(token.stem)) {\n result = __assign(__assign({}, result), parseSignificantPrecision(token.stem));\n continue;\n }\n var signOpts = parseSign(token.stem);\n if (signOpts) {\n result = __assign(__assign({}, result), signOpts);\n }\n var conciseScientificAndEngineeringOpts = parseConciseScientificAndEngineeringStem(token.stem);\n if (conciseScientificAndEngineeringOpts) {\n result = __assign(__assign({}, result), conciseScientificAndEngineeringOpts);\n }\n }\n return result;\n}\n","// @generated from time-data-gen.ts\n// prettier-ignore \nexport var timeData = {\n \"AX\": [\n \"H\"\n ],\n \"BQ\": [\n \"H\"\n ],\n \"CP\": [\n \"H\"\n ],\n \"CZ\": [\n \"H\"\n ],\n \"DK\": [\n \"H\"\n ],\n \"FI\": [\n \"H\"\n ],\n \"ID\": [\n \"H\"\n ],\n \"IS\": [\n \"H\"\n ],\n \"ML\": [\n \"H\"\n ],\n \"NE\": [\n \"H\"\n ],\n \"RU\": [\n \"H\"\n ],\n \"SE\": [\n \"H\"\n ],\n \"SJ\": [\n \"H\"\n ],\n \"SK\": [\n \"H\"\n ],\n \"AS\": [\n \"h\",\n \"H\"\n ],\n \"BT\": [\n \"h\",\n \"H\"\n ],\n \"DJ\": [\n \"h\",\n \"H\"\n ],\n \"ER\": [\n \"h\",\n \"H\"\n ],\n \"GH\": [\n \"h\",\n \"H\"\n ],\n \"IN\": [\n \"h\",\n \"H\"\n ],\n \"LS\": [\n \"h\",\n \"H\"\n ],\n \"PG\": [\n \"h\",\n \"H\"\n ],\n \"PW\": [\n \"h\",\n \"H\"\n ],\n \"SO\": [\n \"h\",\n \"H\"\n ],\n \"TO\": [\n \"h\",\n \"H\"\n ],\n \"VU\": [\n \"h\",\n \"H\"\n ],\n \"WS\": [\n \"h\",\n \"H\"\n ],\n \"001\": [\n \"H\",\n \"h\"\n ],\n \"AL\": [\n \"h\",\n \"H\",\n \"hB\"\n ],\n \"TD\": [\n \"h\",\n \"H\",\n \"hB\"\n ],\n \"ca-ES\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"CF\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"CM\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"fr-CA\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"gl-ES\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"it-CH\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"it-IT\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"LU\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"NP\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"PF\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"SC\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"SM\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"SN\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"TF\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"VA\": [\n \"H\",\n \"h\",\n \"hB\"\n ],\n \"CY\": [\n \"h\",\n \"H\",\n \"hb\",\n \"hB\"\n ],\n \"GR\": [\n \"h\",\n \"H\",\n \"hb\",\n \"hB\"\n ],\n \"CO\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"DO\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"KP\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"KR\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"NA\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"PA\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"PR\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"VE\": [\n \"h\",\n \"H\",\n \"hB\",\n \"hb\"\n ],\n \"AC\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"AI\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"BW\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"BZ\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"CC\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"CK\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"CX\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"DG\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"FK\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"GB\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"GG\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"GI\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"IE\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"IM\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"IO\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"JE\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"LT\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"MK\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"MN\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"MS\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"NF\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"NG\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"NR\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"NU\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"PN\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"SH\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"SX\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"TA\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"ZA\": [\n \"H\",\n \"h\",\n \"hb\",\n \"hB\"\n ],\n \"af-ZA\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"AR\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"CL\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"CR\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"CU\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"EA\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"es-BO\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"es-BR\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"es-EC\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"es-ES\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"es-GQ\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"es-PE\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"GT\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"HN\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"IC\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"KG\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"KM\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"LK\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"MA\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"MX\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"NI\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"PY\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"SV\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"UY\": [\n \"H\",\n \"h\",\n \"hB\",\n \"hb\"\n ],\n \"JP\": [\n \"H\",\n \"h\",\n \"K\"\n ],\n \"AD\": [\n \"H\",\n \"hB\"\n ],\n \"AM\": [\n \"H\",\n \"hB\"\n ],\n \"AO\": [\n \"H\",\n \"hB\"\n ],\n \"AT\": [\n \"H\",\n \"hB\"\n ],\n \"AW\": [\n \"H\",\n \"hB\"\n ],\n \"BE\": [\n \"H\",\n \"hB\"\n ],\n \"BF\": [\n \"H\",\n \"hB\"\n ],\n \"BJ\": [\n \"H\",\n \"hB\"\n ],\n \"BL\": [\n \"H\",\n \"hB\"\n ],\n \"BR\": [\n \"H\",\n \"hB\"\n ],\n \"CG\": [\n \"H\",\n \"hB\"\n ],\n \"CI\": [\n \"H\",\n \"hB\"\n ],\n \"CV\": [\n \"H\",\n \"hB\"\n ],\n \"DE\": [\n \"H\",\n \"hB\"\n ],\n \"EE\": [\n \"H\",\n \"hB\"\n ],\n \"FR\": [\n \"H\",\n \"hB\"\n ],\n \"GA\": [\n \"H\",\n \"hB\"\n ],\n \"GF\": [\n \"H\",\n \"hB\"\n ],\n \"GN\": [\n \"H\",\n \"hB\"\n ],\n \"GP\": [\n \"H\",\n \"hB\"\n ],\n \"GW\": [\n \"H\",\n \"hB\"\n ],\n \"HR\": [\n \"H\",\n \"hB\"\n ],\n \"IL\": [\n \"H\",\n \"hB\"\n ],\n \"IT\": [\n \"H\",\n \"hB\"\n ],\n \"KZ\": [\n \"H\",\n \"hB\"\n ],\n \"MC\": [\n \"H\",\n \"hB\"\n ],\n \"MD\": [\n \"H\",\n \"hB\"\n ],\n \"MF\": [\n \"H\",\n \"hB\"\n ],\n \"MQ\": [\n \"H\",\n \"hB\"\n ],\n \"MZ\": [\n \"H\",\n \"hB\"\n ],\n \"NC\": [\n \"H\",\n \"hB\"\n ],\n \"NL\": [\n \"H\",\n \"hB\"\n ],\n \"PM\": [\n \"H\",\n \"hB\"\n ],\n \"PT\": [\n \"H\",\n \"hB\"\n ],\n \"RE\": [\n \"H\",\n \"hB\"\n ],\n \"RO\": [\n \"H\",\n \"hB\"\n ],\n \"SI\": [\n \"H\",\n \"hB\"\n ],\n \"SR\": [\n \"H\",\n \"hB\"\n ],\n \"ST\": [\n \"H\",\n \"hB\"\n ],\n \"TG\": [\n \"H\",\n \"hB\"\n ],\n \"TR\": [\n \"H\",\n \"hB\"\n ],\n \"WF\": [\n \"H\",\n \"hB\"\n ],\n \"YT\": [\n \"H\",\n \"hB\"\n ],\n \"BD\": [\n \"h\",\n \"hB\",\n \"H\"\n ],\n \"PK\": [\n \"h\",\n \"hB\",\n \"H\"\n ],\n \"AZ\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"BA\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"BG\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"CH\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"GE\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"LI\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"ME\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"RS\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"UA\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"UZ\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"XK\": [\n \"H\",\n \"hB\",\n \"h\"\n ],\n \"AG\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"AU\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"BB\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"BM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"BS\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"CA\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"DM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"en-001\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"FJ\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"FM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"GD\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"GM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"GU\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"GY\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"JM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"KI\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"KN\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"KY\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"LC\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"LR\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"MH\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"MP\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"MW\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"NZ\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"SB\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"SG\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"SL\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"SS\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"SZ\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"TC\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"TT\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"UM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"US\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"VC\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"VG\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"VI\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"ZM\": [\n \"h\",\n \"hb\",\n \"H\",\n \"hB\"\n ],\n \"BO\": [\n \"H\",\n \"hB\",\n \"h\",\n \"hb\"\n ],\n \"EC\": [\n \"H\",\n \"hB\",\n \"h\",\n \"hb\"\n ],\n \"ES\": [\n \"H\",\n \"hB\",\n \"h\",\n \"hb\"\n ],\n \"GQ\": [\n \"H\",\n \"hB\",\n \"h\",\n \"hb\"\n ],\n \"PE\": [\n \"H\",\n \"hB\",\n \"h\",\n \"hb\"\n ],\n \"AE\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"ar-001\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"BH\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"DZ\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"EG\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"EH\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"HK\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"IQ\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"JO\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"KW\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"LB\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"LY\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"MO\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"MR\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"OM\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"PH\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"PS\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"QA\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"SA\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"SD\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"SY\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"TN\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"YE\": [\n \"h\",\n \"hB\",\n \"hb\",\n \"H\"\n ],\n \"AF\": [\n \"H\",\n \"hb\",\n \"hB\",\n \"h\"\n ],\n \"LA\": [\n \"H\",\n \"hb\",\n \"hB\",\n \"h\"\n ],\n \"CN\": [\n \"H\",\n \"hB\",\n \"hb\",\n \"h\"\n ],\n \"LV\": [\n \"H\",\n \"hB\",\n \"hb\",\n \"h\"\n ],\n \"TL\": [\n \"H\",\n \"hB\",\n \"hb\",\n \"h\"\n ],\n \"zu-ZA\": [\n \"H\",\n \"hB\",\n \"hb\",\n \"h\"\n ],\n \"CD\": [\n \"hB\",\n \"H\"\n ],\n \"IR\": [\n \"hB\",\n \"H\"\n ],\n \"hi-IN\": [\n \"hB\",\n \"h\",\n \"H\"\n ],\n \"kn-IN\": [\n \"hB\",\n \"h\",\n \"H\"\n ],\n \"ml-IN\": [\n \"hB\",\n \"h\",\n \"H\"\n ],\n \"te-IN\": [\n \"hB\",\n \"h\",\n \"H\"\n ],\n \"KH\": [\n \"hB\",\n \"h\",\n \"H\",\n \"hb\"\n ],\n \"ta-IN\": [\n \"hB\",\n \"h\",\n \"hb\",\n \"H\"\n ],\n \"BN\": [\n \"hb\",\n \"hB\",\n \"h\",\n \"H\"\n ],\n \"MY\": [\n \"hb\",\n \"hB\",\n \"h\",\n \"H\"\n ],\n \"ET\": [\n \"hB\",\n \"hb\",\n \"h\",\n \"H\"\n ],\n \"gu-IN\": [\n \"hB\",\n \"hb\",\n \"h\",\n \"H\"\n ],\n \"mr-IN\": [\n \"hB\",\n \"hb\",\n \"h\",\n \"H\"\n ],\n \"pa-IN\": [\n \"hB\",\n \"hb\",\n \"h\",\n \"H\"\n ],\n \"TW\": [\n \"hB\",\n \"hb\",\n \"h\",\n \"H\"\n ],\n \"KE\": [\n \"hB\",\n \"hb\",\n \"H\",\n \"h\"\n ],\n \"MM\": [\n \"hB\",\n \"hb\",\n \"H\",\n \"h\"\n ],\n \"TZ\": [\n \"hB\",\n \"hb\",\n \"H\",\n \"h\"\n ],\n \"UG\": [\n \"hB\",\n \"hb\",\n \"H\",\n \"h\"\n ]\n};\n","import { timeData } from './time-data.generated';\n/**\n * Returns the best matching date time pattern if a date time skeleton\n * pattern is provided with a locale. Follows the Unicode specification:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#table-mapping-requested-time-skeletons-to-patterns\n * @param skeleton date time skeleton pattern that possibly includes j, J or C\n * @param locale\n */\nexport function getBestPattern(skeleton, locale) {\n var skeletonCopy = '';\n for (var patternPos = 0; patternPos < skeleton.length; patternPos++) {\n var patternChar = skeleton.charAt(patternPos);\n if (patternChar === 'j') {\n var extraLength = 0;\n while (patternPos + 1 < skeleton.length &&\n skeleton.charAt(patternPos + 1) === patternChar) {\n extraLength++;\n patternPos++;\n }\n var hourLen = 1 + (extraLength & 1);\n var dayPeriodLen = extraLength < 2 ? 1 : 3 + (extraLength >> 1);\n var dayPeriodChar = 'a';\n var hourChar = getDefaultHourSymbolFromLocale(locale);\n if (hourChar == 'H' || hourChar == 'k') {\n dayPeriodLen = 0;\n }\n while (dayPeriodLen-- > 0) {\n skeletonCopy += dayPeriodChar;\n }\n while (hourLen-- > 0) {\n skeletonCopy = hourChar + skeletonCopy;\n }\n }\n else if (patternChar === 'J') {\n skeletonCopy += 'H';\n }\n else {\n skeletonCopy += patternChar;\n }\n }\n return skeletonCopy;\n}\n/**\n * Maps the [hour cycle type](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale/hourCycle)\n * of the given `locale` to the corresponding time pattern.\n * @param locale\n */\nfunction getDefaultHourSymbolFromLocale(locale) {\n var hourCycle = locale.hourCycle;\n if (hourCycle === undefined &&\n // @ts-ignore hourCycle(s) is not identified yet\n locale.hourCycles &&\n // @ts-ignore\n locale.hourCycles.length) {\n // @ts-ignore\n hourCycle = locale.hourCycles[0];\n }\n if (hourCycle) {\n switch (hourCycle) {\n case 'h24':\n return 'k';\n case 'h23':\n return 'H';\n case 'h12':\n return 'h';\n case 'h11':\n return 'K';\n default:\n throw new Error('Invalid hourCycle');\n }\n }\n // TODO: Once hourCycle is fully supported remove the following with data generation\n var languageTag = locale.language;\n var regionTag;\n if (languageTag !== 'root') {\n regionTag = locale.maximize().region;\n }\n var hourCycles = timeData[regionTag || ''] ||\n timeData[languageTag || ''] ||\n timeData[\"\".concat(languageTag, \"-001\")] ||\n timeData['001'];\n return hourCycles[0];\n}\n","var _a;\nimport { __assign } from \"tslib\";\nimport { ErrorKind } from './error';\nimport { SKELETON_TYPE, TYPE, } from './types';\nimport { SPACE_SEPARATOR_REGEX } from './regex.generated';\nimport { parseNumberSkeleton, parseNumberSkeletonFromString, parseDateTimeSkeleton, } from '@formatjs/icu-skeleton-parser';\nimport { getBestPattern } from './date-time-pattern-generator';\nvar SPACE_SEPARATOR_START_REGEX = new RegExp(\"^\".concat(SPACE_SEPARATOR_REGEX.source, \"*\"));\nvar SPACE_SEPARATOR_END_REGEX = new RegExp(\"\".concat(SPACE_SEPARATOR_REGEX.source, \"*$\"));\nfunction createLocation(start, end) {\n return { start: start, end: end };\n}\n// #region Ponyfills\n// Consolidate these variables up top for easier toggling during debugging\nvar hasNativeStartsWith = !!String.prototype.startsWith;\nvar hasNativeFromCodePoint = !!String.fromCodePoint;\nvar hasNativeFromEntries = !!Object.fromEntries;\nvar hasNativeCodePointAt = !!String.prototype.codePointAt;\nvar hasTrimStart = !!String.prototype.trimStart;\nvar hasTrimEnd = !!String.prototype.trimEnd;\nvar hasNativeIsSafeInteger = !!Number.isSafeInteger;\nvar isSafeInteger = hasNativeIsSafeInteger\n ? Number.isSafeInteger\n : function (n) {\n return (typeof n === 'number' &&\n isFinite(n) &&\n Math.floor(n) === n &&\n Math.abs(n) <= 0x1fffffffffffff);\n };\n// IE11 does not support y and u.\nvar REGEX_SUPPORTS_U_AND_Y = true;\ntry {\n var re = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n /**\n * legacy Edge or Xbox One browser\n * Unicode flag support: supported\n * Pattern_Syntax support: not supported\n * See https://github.com/formatjs/formatjs/issues/2822\n */\n REGEX_SUPPORTS_U_AND_Y = ((_a = re.exec('a')) === null || _a === void 0 ? void 0 : _a[0]) === 'a';\n}\ncatch (_) {\n REGEX_SUPPORTS_U_AND_Y = false;\n}\nvar startsWith = hasNativeStartsWith\n ? // Native\n function startsWith(s, search, position) {\n return s.startsWith(search, position);\n }\n : // For IE11\n function startsWith(s, search, position) {\n return s.slice(position, position + search.length) === search;\n };\nvar fromCodePoint = hasNativeFromCodePoint\n ? String.fromCodePoint\n : // IE11\n function fromCodePoint() {\n var codePoints = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n codePoints[_i] = arguments[_i];\n }\n var elements = '';\n var length = codePoints.length;\n var i = 0;\n var code;\n while (length > i) {\n code = codePoints[i++];\n if (code > 0x10ffff)\n throw RangeError(code + ' is not a valid code point');\n elements +=\n code < 0x10000\n ? String.fromCharCode(code)\n : String.fromCharCode(((code -= 0x10000) >> 10) + 0xd800, (code % 0x400) + 0xdc00);\n }\n return elements;\n };\nvar fromEntries = \n// native\nhasNativeFromEntries\n ? Object.fromEntries\n : // Ponyfill\n function fromEntries(entries) {\n var obj = {};\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var _a = entries_1[_i], k = _a[0], v = _a[1];\n obj[k] = v;\n }\n return obj;\n };\nvar codePointAt = hasNativeCodePointAt\n ? // Native\n function codePointAt(s, index) {\n return s.codePointAt(index);\n }\n : // IE 11\n function codePointAt(s, index) {\n var size = s.length;\n if (index < 0 || index >= size) {\n return undefined;\n }\n var first = s.charCodeAt(index);\n var second;\n return first < 0xd800 ||\n first > 0xdbff ||\n index + 1 === size ||\n (second = s.charCodeAt(index + 1)) < 0xdc00 ||\n second > 0xdfff\n ? first\n : ((first - 0xd800) << 10) + (second - 0xdc00) + 0x10000;\n };\nvar trimStart = hasTrimStart\n ? // Native\n function trimStart(s) {\n return s.trimStart();\n }\n : // Ponyfill\n function trimStart(s) {\n return s.replace(SPACE_SEPARATOR_START_REGEX, '');\n };\nvar trimEnd = hasTrimEnd\n ? // Native\n function trimEnd(s) {\n return s.trimEnd();\n }\n : // Ponyfill\n function trimEnd(s) {\n return s.replace(SPACE_SEPARATOR_END_REGEX, '');\n };\n// Prevent minifier to translate new RegExp to literal form that might cause syntax error on IE11.\nfunction RE(s, flag) {\n return new RegExp(s, flag);\n}\n// #endregion\nvar matchIdentifierAtIndex;\nif (REGEX_SUPPORTS_U_AND_Y) {\n // Native\n var IDENTIFIER_PREFIX_RE_1 = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n var _a;\n IDENTIFIER_PREFIX_RE_1.lastIndex = index;\n var match = IDENTIFIER_PREFIX_RE_1.exec(s);\n return (_a = match[1]) !== null && _a !== void 0 ? _a : '';\n };\n}\nelse {\n // IE11\n matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n var match = [];\n while (true) {\n var c = codePointAt(s, index);\n if (c === undefined || _isWhiteSpace(c) || _isPatternSyntax(c)) {\n break;\n }\n match.push(c);\n index += c >= 0x10000 ? 2 : 1;\n }\n return fromCodePoint.apply(void 0, match);\n };\n}\nvar Parser = /** @class */ (function () {\n function Parser(message, options) {\n if (options === void 0) { options = {}; }\n this.message = message;\n this.position = { offset: 0, line: 1, column: 1 };\n this.ignoreTag = !!options.ignoreTag;\n this.locale = options.locale;\n this.requiresOtherClause = !!options.requiresOtherClause;\n this.shouldParseSkeletons = !!options.shouldParseSkeletons;\n }\n Parser.prototype.parse = function () {\n if (this.offset() !== 0) {\n throw Error('parser can only be used once');\n }\n return this.parseMessage(0, '', false);\n };\n Parser.prototype.parseMessage = function (nestingLevel, parentArgType, expectingCloseTag) {\n var elements = [];\n while (!this.isEOF()) {\n var char = this.char();\n if (char === 123 /* `{` */) {\n var result = this.parseArgument(nestingLevel, expectingCloseTag);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n else if (char === 125 /* `}` */ && nestingLevel > 0) {\n break;\n }\n else if (char === 35 /* `#` */ &&\n (parentArgType === 'plural' || parentArgType === 'selectordinal')) {\n var position = this.clonePosition();\n this.bump();\n elements.push({\n type: TYPE.pound,\n location: createLocation(position, this.clonePosition()),\n });\n }\n else if (char === 60 /* `<` */ &&\n !this.ignoreTag &&\n this.peek() === 47 // char code for '/'\n ) {\n if (expectingCloseTag) {\n break;\n }\n else {\n return this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(this.clonePosition(), this.clonePosition()));\n }\n }\n else if (char === 60 /* `<` */ &&\n !this.ignoreTag &&\n _isAlpha(this.peek() || 0)) {\n var result = this.parseTag(nestingLevel, parentArgType);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n else {\n var result = this.parseLiteral(nestingLevel, parentArgType);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n }\n return { val: elements, err: null };\n };\n /**\n * A tag name must start with an ASCII lower/upper case letter. The grammar is based on the\n * [custom element name][] except that a dash is NOT always mandatory and uppercase letters\n * are accepted:\n *\n * ```\n * tag ::= \"<\" tagName (whitespace)* \"/>\" | \"<\" tagName (whitespace)* \">\" message \"\"\n * tagName ::= [a-z] (PENChar)*\n * PENChar ::=\n * \"-\" | \".\" | [0-9] | \"_\" | [a-z] | [A-Z] | #xB7 | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x37D] |\n * [#x37F-#x1FFF] | [#x200C-#x200D] | [#x203F-#x2040] | [#x2070-#x218F] | [#x2C00-#x2FEF] |\n * [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n * ```\n *\n * [custom element name]: https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n * NOTE: We're a bit more lax here since HTML technically does not allow uppercase HTML element but we do\n * since other tag-based engines like React allow it\n */\n Parser.prototype.parseTag = function (nestingLevel, parentArgType) {\n var startPosition = this.clonePosition();\n this.bump(); // `<`\n var tagName = this.parseTagName();\n this.bumpSpace();\n if (this.bumpIf('/>')) {\n // Self closing tag\n return {\n val: {\n type: TYPE.literal,\n value: \"<\".concat(tagName, \"/>\"),\n location: createLocation(startPosition, this.clonePosition()),\n },\n err: null,\n };\n }\n else if (this.bumpIf('>')) {\n var childrenResult = this.parseMessage(nestingLevel + 1, parentArgType, true);\n if (childrenResult.err) {\n return childrenResult;\n }\n var children = childrenResult.val;\n // Expecting a close tag\n var endTagStartPosition = this.clonePosition();\n if (this.bumpIf('')) {\n return this.error(ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n }\n return {\n val: {\n type: TYPE.tag,\n value: tagName,\n children: children,\n location: createLocation(startPosition, this.clonePosition()),\n },\n err: null,\n };\n }\n else {\n return this.error(ErrorKind.UNCLOSED_TAG, createLocation(startPosition, this.clonePosition()));\n }\n }\n else {\n return this.error(ErrorKind.INVALID_TAG, createLocation(startPosition, this.clonePosition()));\n }\n };\n /**\n * This method assumes that the caller has peeked ahead for the first tag character.\n */\n Parser.prototype.parseTagName = function () {\n var startOffset = this.offset();\n this.bump(); // the first tag name character\n while (!this.isEOF() && _isPotentialElementNameChar(this.char())) {\n this.bump();\n }\n return this.message.slice(startOffset, this.offset());\n };\n Parser.prototype.parseLiteral = function (nestingLevel, parentArgType) {\n var start = this.clonePosition();\n var value = '';\n while (true) {\n var parseQuoteResult = this.tryParseQuote(parentArgType);\n if (parseQuoteResult) {\n value += parseQuoteResult;\n continue;\n }\n var parseUnquotedResult = this.tryParseUnquoted(nestingLevel, parentArgType);\n if (parseUnquotedResult) {\n value += parseUnquotedResult;\n continue;\n }\n var parseLeftAngleResult = this.tryParseLeftAngleBracket();\n if (parseLeftAngleResult) {\n value += parseLeftAngleResult;\n continue;\n }\n break;\n }\n var location = createLocation(start, this.clonePosition());\n return {\n val: { type: TYPE.literal, value: value, location: location },\n err: null,\n };\n };\n Parser.prototype.tryParseLeftAngleBracket = function () {\n if (!this.isEOF() &&\n this.char() === 60 /* `<` */ &&\n (this.ignoreTag ||\n // If at the opening tag or closing tag position, bail.\n !_isAlphaOrSlash(this.peek() || 0))) {\n this.bump(); // `<`\n return '<';\n }\n return null;\n };\n /**\n * Starting with ICU 4.8, an ASCII apostrophe only starts quoted text if it immediately precedes\n * a character that requires quoting (that is, \"only where needed\"), and works the same in\n * nested messages as on the top level of the pattern. The new behavior is otherwise compatible.\n */\n Parser.prototype.tryParseQuote = function (parentArgType) {\n if (this.isEOF() || this.char() !== 39 /* `'` */) {\n return null;\n }\n // Parse escaped char following the apostrophe, or early return if there is no escaped char.\n // Check if is valid escaped character\n switch (this.peek()) {\n case 39 /* `'` */:\n // double quote, should return as a single quote.\n this.bump();\n this.bump();\n return \"'\";\n // '{', '<', '>', '}'\n case 123:\n case 60:\n case 62:\n case 125:\n break;\n case 35: // '#'\n if (parentArgType === 'plural' || parentArgType === 'selectordinal') {\n break;\n }\n return null;\n default:\n return null;\n }\n this.bump(); // apostrophe\n var codePoints = [this.char()]; // escaped char\n this.bump();\n // read chars until the optional closing apostrophe is found\n while (!this.isEOF()) {\n var ch = this.char();\n if (ch === 39 /* `'` */) {\n if (this.peek() === 39 /* `'` */) {\n codePoints.push(39);\n // Bump one more time because we need to skip 2 characters.\n this.bump();\n }\n else {\n // Optional closing apostrophe.\n this.bump();\n break;\n }\n }\n else {\n codePoints.push(ch);\n }\n this.bump();\n }\n return fromCodePoint.apply(void 0, codePoints);\n };\n Parser.prototype.tryParseUnquoted = function (nestingLevel, parentArgType) {\n if (this.isEOF()) {\n return null;\n }\n var ch = this.char();\n if (ch === 60 /* `<` */ ||\n ch === 123 /* `{` */ ||\n (ch === 35 /* `#` */ &&\n (parentArgType === 'plural' || parentArgType === 'selectordinal')) ||\n (ch === 125 /* `}` */ && nestingLevel > 0)) {\n return null;\n }\n else {\n this.bump();\n return fromCodePoint(ch);\n }\n };\n Parser.prototype.parseArgument = function (nestingLevel, expectingCloseTag) {\n var openingBracePosition = this.clonePosition();\n this.bump(); // `{`\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n if (this.char() === 125 /* `}` */) {\n this.bump();\n return this.error(ErrorKind.EMPTY_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n // argument name\n var value = this.parseIdentifierIfPossible().value;\n if (!value) {\n return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n switch (this.char()) {\n // Simple argument: `{name}`\n case 125 /* `}` */: {\n this.bump(); // `}`\n return {\n val: {\n type: TYPE.argument,\n // value does not include the opening and closing braces.\n value: value,\n location: createLocation(openingBracePosition, this.clonePosition()),\n },\n err: null,\n };\n }\n // Argument with options: `{name, format, ...}`\n case 44 /* `,` */: {\n this.bump(); // `,`\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n return this.parseArgumentOptions(nestingLevel, expectingCloseTag, value, openingBracePosition);\n }\n default:\n return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n };\n /**\n * Advance the parser until the end of the identifier, if it is currently on\n * an identifier character. Return an empty string otherwise.\n */\n Parser.prototype.parseIdentifierIfPossible = function () {\n var startingPosition = this.clonePosition();\n var startOffset = this.offset();\n var value = matchIdentifierAtIndex(this.message, startOffset);\n var endOffset = startOffset + value.length;\n this.bumpTo(endOffset);\n var endPosition = this.clonePosition();\n var location = createLocation(startingPosition, endPosition);\n return { value: value, location: location };\n };\n Parser.prototype.parseArgumentOptions = function (nestingLevel, expectingCloseTag, value, openingBracePosition) {\n var _a;\n // Parse this range:\n // {name, type, style}\n // ^---^\n var typeStartPosition = this.clonePosition();\n var argType = this.parseIdentifierIfPossible().value;\n var typeEndPosition = this.clonePosition();\n switch (argType) {\n case '':\n // Expecting a style string number, date, time, plural, selectordinal, or select.\n return this.error(ErrorKind.EXPECT_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n case 'number':\n case 'date':\n case 'time': {\n // Parse this range:\n // {name, number, style}\n // ^-------^\n this.bumpSpace();\n var styleAndLocation = null;\n if (this.bumpIf(',')) {\n this.bumpSpace();\n var styleStartPosition = this.clonePosition();\n var result = this.parseSimpleArgStyleIfPossible();\n if (result.err) {\n return result;\n }\n var style = trimEnd(result.val);\n if (style.length === 0) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_STYLE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n var styleLocation = createLocation(styleStartPosition, this.clonePosition());\n styleAndLocation = { style: style, styleLocation: styleLocation };\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n var location_1 = createLocation(openingBracePosition, this.clonePosition());\n // Extract style or skeleton\n if (styleAndLocation && startsWith(styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style, '::', 0)) {\n // Skeleton starts with `::`.\n var skeleton = trimStart(styleAndLocation.style.slice(2));\n if (argType === 'number') {\n var result = this.parseNumberSkeletonFromString(skeleton, styleAndLocation.styleLocation);\n if (result.err) {\n return result;\n }\n return {\n val: { type: TYPE.number, value: value, location: location_1, style: result.val },\n err: null,\n };\n }\n else {\n if (skeleton.length === 0) {\n return this.error(ErrorKind.EXPECT_DATE_TIME_SKELETON, location_1);\n }\n var dateTimePattern = skeleton;\n // Get \"best match\" pattern only if locale is passed, if not, let it\n // pass as-is where `parseDateTimeSkeleton()` will throw an error\n // for unsupported patterns.\n if (this.locale) {\n dateTimePattern = getBestPattern(skeleton, this.locale);\n }\n var style = {\n type: SKELETON_TYPE.dateTime,\n pattern: dateTimePattern,\n location: styleAndLocation.styleLocation,\n parsedOptions: this.shouldParseSkeletons\n ? parseDateTimeSkeleton(dateTimePattern)\n : {},\n };\n var type = argType === 'date' ? TYPE.date : TYPE.time;\n return {\n val: { type: type, value: value, location: location_1, style: style },\n err: null,\n };\n }\n }\n // Regular style or no style.\n return {\n val: {\n type: argType === 'number'\n ? TYPE.number\n : argType === 'date'\n ? TYPE.date\n : TYPE.time,\n value: value,\n location: location_1,\n style: (_a = styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style) !== null && _a !== void 0 ? _a : null,\n },\n err: null,\n };\n }\n case 'plural':\n case 'selectordinal':\n case 'select': {\n // Parse this range:\n // {name, plural, options}\n // ^---------^\n var typeEndPosition_1 = this.clonePosition();\n this.bumpSpace();\n if (!this.bumpIf(',')) {\n return this.error(ErrorKind.EXPECT_SELECT_ARGUMENT_OPTIONS, createLocation(typeEndPosition_1, __assign({}, typeEndPosition_1)));\n }\n this.bumpSpace();\n // Parse offset:\n // {name, plural, offset:1, options}\n // ^-----^\n //\n // or the first option:\n //\n // {name, plural, one {...} other {...}}\n // ^--^\n var identifierAndLocation = this.parseIdentifierIfPossible();\n var pluralOffset = 0;\n if (argType !== 'select' && identifierAndLocation.value === 'offset') {\n if (!this.bumpIf(':')) {\n return this.error(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n this.bumpSpace();\n var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, ErrorKind.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);\n if (result.err) {\n return result;\n }\n // Parse another identifier for option parsing\n this.bumpSpace();\n identifierAndLocation = this.parseIdentifierIfPossible();\n pluralOffset = result.val;\n }\n var optionsResult = this.tryParsePluralOrSelectOptions(nestingLevel, argType, expectingCloseTag, identifierAndLocation);\n if (optionsResult.err) {\n return optionsResult;\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n var location_2 = createLocation(openingBracePosition, this.clonePosition());\n if (argType === 'select') {\n return {\n val: {\n type: TYPE.select,\n value: value,\n options: fromEntries(optionsResult.val),\n location: location_2,\n },\n err: null,\n };\n }\n else {\n return {\n val: {\n type: TYPE.plural,\n value: value,\n options: fromEntries(optionsResult.val),\n offset: pluralOffset,\n pluralType: argType === 'plural' ? 'cardinal' : 'ordinal',\n location: location_2,\n },\n err: null,\n };\n }\n }\n default:\n return this.error(ErrorKind.INVALID_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n }\n };\n Parser.prototype.tryParseArgumentClose = function (openingBracePosition) {\n // Parse: {value, number, ::currency/GBP }\n //\n if (this.isEOF() || this.char() !== 125 /* `}` */) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n this.bump(); // `}`\n return { val: true, err: null };\n };\n /**\n * See: https://github.com/unicode-org/icu/blob/af7ed1f6d2298013dc303628438ec4abe1f16479/icu4c/source/common/messagepattern.cpp#L659\n */\n Parser.prototype.parseSimpleArgStyleIfPossible = function () {\n var nestedBraces = 0;\n var startPosition = this.clonePosition();\n while (!this.isEOF()) {\n var ch = this.char();\n switch (ch) {\n case 39 /* `'` */: {\n // Treat apostrophe as quoting but include it in the style part.\n // Find the end of the quoted literal text.\n this.bump();\n var apostrophePosition = this.clonePosition();\n if (!this.bumpUntil(\"'\")) {\n return this.error(ErrorKind.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE, createLocation(apostrophePosition, this.clonePosition()));\n }\n this.bump();\n break;\n }\n case 123 /* `{` */: {\n nestedBraces += 1;\n this.bump();\n break;\n }\n case 125 /* `}` */: {\n if (nestedBraces > 0) {\n nestedBraces -= 1;\n }\n else {\n return {\n val: this.message.slice(startPosition.offset, this.offset()),\n err: null,\n };\n }\n break;\n }\n default:\n this.bump();\n break;\n }\n }\n return {\n val: this.message.slice(startPosition.offset, this.offset()),\n err: null,\n };\n };\n Parser.prototype.parseNumberSkeletonFromString = function (skeleton, location) {\n var tokens = [];\n try {\n tokens = parseNumberSkeletonFromString(skeleton);\n }\n catch (e) {\n return this.error(ErrorKind.INVALID_NUMBER_SKELETON, location);\n }\n return {\n val: {\n type: SKELETON_TYPE.number,\n tokens: tokens,\n location: location,\n parsedOptions: this.shouldParseSkeletons\n ? parseNumberSkeleton(tokens)\n : {},\n },\n err: null,\n };\n };\n /**\n * @param nesting_level The current nesting level of messages.\n * This can be positive when parsing message fragment in select or plural argument options.\n * @param parent_arg_type The parent argument's type.\n * @param parsed_first_identifier If provided, this is the first identifier-like selector of\n * the argument. It is a by-product of a previous parsing attempt.\n * @param expecting_close_tag If true, this message is directly or indirectly nested inside\n * between a pair of opening and closing tags. The nested message will not parse beyond\n * the closing tag boundary.\n */\n Parser.prototype.tryParsePluralOrSelectOptions = function (nestingLevel, parentArgType, expectCloseTag, parsedFirstIdentifier) {\n var _a;\n var hasOtherClause = false;\n var options = [];\n var parsedSelectors = new Set();\n var selector = parsedFirstIdentifier.value, selectorLocation = parsedFirstIdentifier.location;\n // Parse:\n // one {one apple}\n // ^--^\n while (true) {\n if (selector.length === 0) {\n var startPosition = this.clonePosition();\n if (parentArgType !== 'select' && this.bumpIf('=')) {\n // Try parse `={number}` selector\n var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, ErrorKind.INVALID_PLURAL_ARGUMENT_SELECTOR);\n if (result.err) {\n return result;\n }\n selectorLocation = createLocation(startPosition, this.clonePosition());\n selector = this.message.slice(startPosition.offset, this.offset());\n }\n else {\n break;\n }\n }\n // Duplicate selector clauses\n if (parsedSelectors.has(selector)) {\n return this.error(parentArgType === 'select'\n ? ErrorKind.DUPLICATE_SELECT_ARGUMENT_SELECTOR\n : ErrorKind.DUPLICATE_PLURAL_ARGUMENT_SELECTOR, selectorLocation);\n }\n if (selector === 'other') {\n hasOtherClause = true;\n }\n // Parse:\n // one {one apple}\n // ^----------^\n this.bumpSpace();\n var openingBracePosition = this.clonePosition();\n if (!this.bumpIf('{')) {\n return this.error(parentArgType === 'select'\n ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\n : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT, createLocation(this.clonePosition(), this.clonePosition()));\n }\n var fragmentResult = this.parseMessage(nestingLevel + 1, parentArgType, expectCloseTag);\n if (fragmentResult.err) {\n return fragmentResult;\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n options.push([\n selector,\n {\n value: fragmentResult.val,\n location: createLocation(openingBracePosition, this.clonePosition()),\n },\n ]);\n // Keep track of the existing selectors\n parsedSelectors.add(selector);\n // Prep next selector clause.\n this.bumpSpace();\n (_a = this.parseIdentifierIfPossible(), selector = _a.value, selectorLocation = _a.location);\n }\n if (options.length === 0) {\n return this.error(parentArgType === 'select'\n ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR\n : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, createLocation(this.clonePosition(), this.clonePosition()));\n }\n if (this.requiresOtherClause && !hasOtherClause) {\n return this.error(ErrorKind.MISSING_OTHER_CLAUSE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n return { val: options, err: null };\n };\n Parser.prototype.tryParseDecimalInteger = function (expectNumberError, invalidNumberError) {\n var sign = 1;\n var startingPosition = this.clonePosition();\n if (this.bumpIf('+')) {\n }\n else if (this.bumpIf('-')) {\n sign = -1;\n }\n var hasDigits = false;\n var decimal = 0;\n while (!this.isEOF()) {\n var ch = this.char();\n if (ch >= 48 /* `0` */ && ch <= 57 /* `9` */) {\n hasDigits = true;\n decimal = decimal * 10 + (ch - 48);\n this.bump();\n }\n else {\n break;\n }\n }\n var location = createLocation(startingPosition, this.clonePosition());\n if (!hasDigits) {\n return this.error(expectNumberError, location);\n }\n decimal *= sign;\n if (!isSafeInteger(decimal)) {\n return this.error(invalidNumberError, location);\n }\n return { val: decimal, err: null };\n };\n Parser.prototype.offset = function () {\n return this.position.offset;\n };\n Parser.prototype.isEOF = function () {\n return this.offset() === this.message.length;\n };\n Parser.prototype.clonePosition = function () {\n // This is much faster than `Object.assign` or spread.\n return {\n offset: this.position.offset,\n line: this.position.line,\n column: this.position.column,\n };\n };\n /**\n * Return the code point at the current position of the parser.\n * Throws if the index is out of bound.\n */\n Parser.prototype.char = function () {\n var offset = this.position.offset;\n if (offset >= this.message.length) {\n throw Error('out of bound');\n }\n var code = codePointAt(this.message, offset);\n if (code === undefined) {\n throw Error(\"Offset \".concat(offset, \" is at invalid UTF-16 code unit boundary\"));\n }\n return code;\n };\n Parser.prototype.error = function (kind, location) {\n return {\n val: null,\n err: {\n kind: kind,\n message: this.message,\n location: location,\n },\n };\n };\n /** Bump the parser to the next UTF-16 code unit. */\n Parser.prototype.bump = function () {\n if (this.isEOF()) {\n return;\n }\n var code = this.char();\n if (code === 10 /* '\\n' */) {\n this.position.line += 1;\n this.position.column = 1;\n this.position.offset += 1;\n }\n else {\n this.position.column += 1;\n // 0 ~ 0x10000 -> unicode BMP, otherwise skip the surrogate pair.\n this.position.offset += code < 0x10000 ? 1 : 2;\n }\n };\n /**\n * If the substring starting at the current position of the parser has\n * the given prefix, then bump the parser to the character immediately\n * following the prefix and return true. Otherwise, don't bump the parser\n * and return false.\n */\n Parser.prototype.bumpIf = function (prefix) {\n if (startsWith(this.message, prefix, this.offset())) {\n for (var i = 0; i < prefix.length; i++) {\n this.bump();\n }\n return true;\n }\n return false;\n };\n /**\n * Bump the parser until the pattern character is found and return `true`.\n * Otherwise bump to the end of the file and return `false`.\n */\n Parser.prototype.bumpUntil = function (pattern) {\n var currentOffset = this.offset();\n var index = this.message.indexOf(pattern, currentOffset);\n if (index >= 0) {\n this.bumpTo(index);\n return true;\n }\n else {\n this.bumpTo(this.message.length);\n return false;\n }\n };\n /**\n * Bump the parser to the target offset.\n * If target offset is beyond the end of the input, bump the parser to the end of the input.\n */\n Parser.prototype.bumpTo = function (targetOffset) {\n if (this.offset() > targetOffset) {\n throw Error(\"targetOffset \".concat(targetOffset, \" must be greater than or equal to the current offset \").concat(this.offset()));\n }\n targetOffset = Math.min(targetOffset, this.message.length);\n while (true) {\n var offset = this.offset();\n if (offset === targetOffset) {\n break;\n }\n if (offset > targetOffset) {\n throw Error(\"targetOffset \".concat(targetOffset, \" is at invalid UTF-16 code unit boundary\"));\n }\n this.bump();\n if (this.isEOF()) {\n break;\n }\n }\n };\n /** advance the parser through all whitespace to the next non-whitespace code unit. */\n Parser.prototype.bumpSpace = function () {\n while (!this.isEOF() && _isWhiteSpace(this.char())) {\n this.bump();\n }\n };\n /**\n * Peek at the *next* Unicode codepoint in the input without advancing the parser.\n * If the input has been exhausted, then this returns null.\n */\n Parser.prototype.peek = function () {\n if (this.isEOF()) {\n return null;\n }\n var code = this.char();\n var offset = this.offset();\n var nextCode = this.message.charCodeAt(offset + (code >= 0x10000 ? 2 : 1));\n return nextCode !== null && nextCode !== void 0 ? nextCode : null;\n };\n return Parser;\n}());\nexport { Parser };\n/**\n * This check if codepoint is alphabet (lower & uppercase)\n * @param codepoint\n * @returns\n */\nfunction _isAlpha(codepoint) {\n return ((codepoint >= 97 && codepoint <= 122) ||\n (codepoint >= 65 && codepoint <= 90));\n}\nfunction _isAlphaOrSlash(codepoint) {\n return _isAlpha(codepoint) || codepoint === 47; /* '/' */\n}\n/** See `parseTag` function docs. */\nfunction _isPotentialElementNameChar(c) {\n return (c === 45 /* '-' */ ||\n c === 46 /* '.' */ ||\n (c >= 48 && c <= 57) /* 0..9 */ ||\n c === 95 /* '_' */ ||\n (c >= 97 && c <= 122) /** a..z */ ||\n (c >= 65 && c <= 90) /* A..Z */ ||\n c == 0xb7 ||\n (c >= 0xc0 && c <= 0xd6) ||\n (c >= 0xd8 && c <= 0xf6) ||\n (c >= 0xf8 && c <= 0x37d) ||\n (c >= 0x37f && c <= 0x1fff) ||\n (c >= 0x200c && c <= 0x200d) ||\n (c >= 0x203f && c <= 0x2040) ||\n (c >= 0x2070 && c <= 0x218f) ||\n (c >= 0x2c00 && c <= 0x2fef) ||\n (c >= 0x3001 && c <= 0xd7ff) ||\n (c >= 0xf900 && c <= 0xfdcf) ||\n (c >= 0xfdf0 && c <= 0xfffd) ||\n (c >= 0x10000 && c <= 0xeffff));\n}\n/**\n * Code point equivalent of regex `\\p{White_Space}`.\n * From: https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isWhiteSpace(c) {\n return ((c >= 0x0009 && c <= 0x000d) ||\n c === 0x0020 ||\n c === 0x0085 ||\n (c >= 0x200e && c <= 0x200f) ||\n c === 0x2028 ||\n c === 0x2029);\n}\n/**\n * Code point equivalent of regex `\\p{Pattern_Syntax}`.\n * See https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isPatternSyntax(c) {\n return ((c >= 0x0021 && c <= 0x0023) ||\n c === 0x0024 ||\n (c >= 0x0025 && c <= 0x0027) ||\n c === 0x0028 ||\n c === 0x0029 ||\n c === 0x002a ||\n c === 0x002b ||\n c === 0x002c ||\n c === 0x002d ||\n (c >= 0x002e && c <= 0x002f) ||\n (c >= 0x003a && c <= 0x003b) ||\n (c >= 0x003c && c <= 0x003e) ||\n (c >= 0x003f && c <= 0x0040) ||\n c === 0x005b ||\n c === 0x005c ||\n c === 0x005d ||\n c === 0x005e ||\n c === 0x0060 ||\n c === 0x007b ||\n c === 0x007c ||\n c === 0x007d ||\n c === 0x007e ||\n c === 0x00a1 ||\n (c >= 0x00a2 && c <= 0x00a5) ||\n c === 0x00a6 ||\n c === 0x00a7 ||\n c === 0x00a9 ||\n c === 0x00ab ||\n c === 0x00ac ||\n c === 0x00ae ||\n c === 0x00b0 ||\n c === 0x00b1 ||\n c === 0x00b6 ||\n c === 0x00bb ||\n c === 0x00bf ||\n c === 0x00d7 ||\n c === 0x00f7 ||\n (c >= 0x2010 && c <= 0x2015) ||\n (c >= 0x2016 && c <= 0x2017) ||\n c === 0x2018 ||\n c === 0x2019 ||\n c === 0x201a ||\n (c >= 0x201b && c <= 0x201c) ||\n c === 0x201d ||\n c === 0x201e ||\n c === 0x201f ||\n (c >= 0x2020 && c <= 0x2027) ||\n (c >= 0x2030 && c <= 0x2038) ||\n c === 0x2039 ||\n c === 0x203a ||\n (c >= 0x203b && c <= 0x203e) ||\n (c >= 0x2041 && c <= 0x2043) ||\n c === 0x2044 ||\n c === 0x2045 ||\n c === 0x2046 ||\n (c >= 0x2047 && c <= 0x2051) ||\n c === 0x2052 ||\n c === 0x2053 ||\n (c >= 0x2055 && c <= 0x205e) ||\n (c >= 0x2190 && c <= 0x2194) ||\n (c >= 0x2195 && c <= 0x2199) ||\n (c >= 0x219a && c <= 0x219b) ||\n (c >= 0x219c && c <= 0x219f) ||\n c === 0x21a0 ||\n (c >= 0x21a1 && c <= 0x21a2) ||\n c === 0x21a3 ||\n (c >= 0x21a4 && c <= 0x21a5) ||\n c === 0x21a6 ||\n (c >= 0x21a7 && c <= 0x21ad) ||\n c === 0x21ae ||\n (c >= 0x21af && c <= 0x21cd) ||\n (c >= 0x21ce && c <= 0x21cf) ||\n (c >= 0x21d0 && c <= 0x21d1) ||\n c === 0x21d2 ||\n c === 0x21d3 ||\n c === 0x21d4 ||\n (c >= 0x21d5 && c <= 0x21f3) ||\n (c >= 0x21f4 && c <= 0x22ff) ||\n (c >= 0x2300 && c <= 0x2307) ||\n c === 0x2308 ||\n c === 0x2309 ||\n c === 0x230a ||\n c === 0x230b ||\n (c >= 0x230c && c <= 0x231f) ||\n (c >= 0x2320 && c <= 0x2321) ||\n (c >= 0x2322 && c <= 0x2328) ||\n c === 0x2329 ||\n c === 0x232a ||\n (c >= 0x232b && c <= 0x237b) ||\n c === 0x237c ||\n (c >= 0x237d && c <= 0x239a) ||\n (c >= 0x239b && c <= 0x23b3) ||\n (c >= 0x23b4 && c <= 0x23db) ||\n (c >= 0x23dc && c <= 0x23e1) ||\n (c >= 0x23e2 && c <= 0x2426) ||\n (c >= 0x2427 && c <= 0x243f) ||\n (c >= 0x2440 && c <= 0x244a) ||\n (c >= 0x244b && c <= 0x245f) ||\n (c >= 0x2500 && c <= 0x25b6) ||\n c === 0x25b7 ||\n (c >= 0x25b8 && c <= 0x25c0) ||\n c === 0x25c1 ||\n (c >= 0x25c2 && c <= 0x25f7) ||\n (c >= 0x25f8 && c <= 0x25ff) ||\n (c >= 0x2600 && c <= 0x266e) ||\n c === 0x266f ||\n (c >= 0x2670 && c <= 0x2767) ||\n c === 0x2768 ||\n c === 0x2769 ||\n c === 0x276a ||\n c === 0x276b ||\n c === 0x276c ||\n c === 0x276d ||\n c === 0x276e ||\n c === 0x276f ||\n c === 0x2770 ||\n c === 0x2771 ||\n c === 0x2772 ||\n c === 0x2773 ||\n c === 0x2774 ||\n c === 0x2775 ||\n (c >= 0x2794 && c <= 0x27bf) ||\n (c >= 0x27c0 && c <= 0x27c4) ||\n c === 0x27c5 ||\n c === 0x27c6 ||\n (c >= 0x27c7 && c <= 0x27e5) ||\n c === 0x27e6 ||\n c === 0x27e7 ||\n c === 0x27e8 ||\n c === 0x27e9 ||\n c === 0x27ea ||\n c === 0x27eb ||\n c === 0x27ec ||\n c === 0x27ed ||\n c === 0x27ee ||\n c === 0x27ef ||\n (c >= 0x27f0 && c <= 0x27ff) ||\n (c >= 0x2800 && c <= 0x28ff) ||\n (c >= 0x2900 && c <= 0x2982) ||\n c === 0x2983 ||\n c === 0x2984 ||\n c === 0x2985 ||\n c === 0x2986 ||\n c === 0x2987 ||\n c === 0x2988 ||\n c === 0x2989 ||\n c === 0x298a ||\n c === 0x298b ||\n c === 0x298c ||\n c === 0x298d ||\n c === 0x298e ||\n c === 0x298f ||\n c === 0x2990 ||\n c === 0x2991 ||\n c === 0x2992 ||\n c === 0x2993 ||\n c === 0x2994 ||\n c === 0x2995 ||\n c === 0x2996 ||\n c === 0x2997 ||\n c === 0x2998 ||\n (c >= 0x2999 && c <= 0x29d7) ||\n c === 0x29d8 ||\n c === 0x29d9 ||\n c === 0x29da ||\n c === 0x29db ||\n (c >= 0x29dc && c <= 0x29fb) ||\n c === 0x29fc ||\n c === 0x29fd ||\n (c >= 0x29fe && c <= 0x2aff) ||\n (c >= 0x2b00 && c <= 0x2b2f) ||\n (c >= 0x2b30 && c <= 0x2b44) ||\n (c >= 0x2b45 && c <= 0x2b46) ||\n (c >= 0x2b47 && c <= 0x2b4c) ||\n (c >= 0x2b4d && c <= 0x2b73) ||\n (c >= 0x2b74 && c <= 0x2b75) ||\n (c >= 0x2b76 && c <= 0x2b95) ||\n c === 0x2b96 ||\n (c >= 0x2b97 && c <= 0x2bff) ||\n (c >= 0x2e00 && c <= 0x2e01) ||\n c === 0x2e02 ||\n c === 0x2e03 ||\n c === 0x2e04 ||\n c === 0x2e05 ||\n (c >= 0x2e06 && c <= 0x2e08) ||\n c === 0x2e09 ||\n c === 0x2e0a ||\n c === 0x2e0b ||\n c === 0x2e0c ||\n c === 0x2e0d ||\n (c >= 0x2e0e && c <= 0x2e16) ||\n c === 0x2e17 ||\n (c >= 0x2e18 && c <= 0x2e19) ||\n c === 0x2e1a ||\n c === 0x2e1b ||\n c === 0x2e1c ||\n c === 0x2e1d ||\n (c >= 0x2e1e && c <= 0x2e1f) ||\n c === 0x2e20 ||\n c === 0x2e21 ||\n c === 0x2e22 ||\n c === 0x2e23 ||\n c === 0x2e24 ||\n c === 0x2e25 ||\n c === 0x2e26 ||\n c === 0x2e27 ||\n c === 0x2e28 ||\n c === 0x2e29 ||\n (c >= 0x2e2a && c <= 0x2e2e) ||\n c === 0x2e2f ||\n (c >= 0x2e30 && c <= 0x2e39) ||\n (c >= 0x2e3a && c <= 0x2e3b) ||\n (c >= 0x2e3c && c <= 0x2e3f) ||\n c === 0x2e40 ||\n c === 0x2e41 ||\n c === 0x2e42 ||\n (c >= 0x2e43 && c <= 0x2e4f) ||\n (c >= 0x2e50 && c <= 0x2e51) ||\n c === 0x2e52 ||\n (c >= 0x2e53 && c <= 0x2e7f) ||\n (c >= 0x3001 && c <= 0x3003) ||\n c === 0x3008 ||\n c === 0x3009 ||\n c === 0x300a ||\n c === 0x300b ||\n c === 0x300c ||\n c === 0x300d ||\n c === 0x300e ||\n c === 0x300f ||\n c === 0x3010 ||\n c === 0x3011 ||\n (c >= 0x3012 && c <= 0x3013) ||\n c === 0x3014 ||\n c === 0x3015 ||\n c === 0x3016 ||\n c === 0x3017 ||\n c === 0x3018 ||\n c === 0x3019 ||\n c === 0x301a ||\n c === 0x301b ||\n c === 0x301c ||\n c === 0x301d ||\n (c >= 0x301e && c <= 0x301f) ||\n c === 0x3020 ||\n c === 0x3030 ||\n c === 0xfd3e ||\n c === 0xfd3f ||\n (c >= 0xfe45 && c <= 0xfe46));\n}\n","import { __assign } from \"tslib\";\nimport { ErrorKind } from './error';\nimport { Parser } from './parser';\nimport { isDateElement, isDateTimeSkeleton, isNumberElement, isNumberSkeleton, isPluralElement, isSelectElement, isTagElement, isTimeElement, } from './types';\nfunction pruneLocation(els) {\n els.forEach(function (el) {\n delete el.location;\n if (isSelectElement(el) || isPluralElement(el)) {\n for (var k in el.options) {\n delete el.options[k].location;\n pruneLocation(el.options[k].value);\n }\n }\n else if (isNumberElement(el) && isNumberSkeleton(el.style)) {\n delete el.style.location;\n }\n else if ((isDateElement(el) || isTimeElement(el)) &&\n isDateTimeSkeleton(el.style)) {\n delete el.style.location;\n }\n else if (isTagElement(el)) {\n pruneLocation(el.children);\n }\n });\n}\nexport function parse(message, opts) {\n if (opts === void 0) { opts = {}; }\n opts = __assign({ shouldParseSkeletons: true, requiresOtherClause: true }, opts);\n var result = new Parser(message, opts).parse();\n if (result.err) {\n var error = SyntaxError(ErrorKind[result.err.kind]);\n // @ts-expect-error Assign to error object\n error.location = result.err.location;\n // @ts-expect-error Assign to error object\n error.originalMessage = result.err.message;\n throw error;\n }\n if (!(opts === null || opts === void 0 ? void 0 : opts.captureLocation)) {\n pruneLocation(result.val);\n }\n return result.val;\n}\nexport * from './types';\n// only for testing\nexport var _Parser = Parser;\n","//\n// Main\n//\nexport function memoize(fn, options) {\n var cache = options && options.cache ? options.cache : cacheDefault;\n var serializer = options && options.serializer ? options.serializer : serializerDefault;\n var strategy = options && options.strategy ? options.strategy : strategyDefault;\n return strategy(fn, {\n cache: cache,\n serializer: serializer,\n });\n}\n//\n// Strategy\n//\nfunction isPrimitive(value) {\n return (value == null || typeof value === 'number' || typeof value === 'boolean'); // || typeof value === \"string\" 'unsafe' primitive for our needs\n}\nfunction monadic(fn, cache, serializer, arg) {\n var cacheKey = isPrimitive(arg) ? arg : serializer(arg);\n var computedValue = cache.get(cacheKey);\n if (typeof computedValue === 'undefined') {\n computedValue = fn.call(this, arg);\n cache.set(cacheKey, computedValue);\n }\n return computedValue;\n}\nfunction variadic(fn, cache, serializer) {\n var args = Array.prototype.slice.call(arguments, 3);\n var cacheKey = serializer(args);\n var computedValue = cache.get(cacheKey);\n if (typeof computedValue === 'undefined') {\n computedValue = fn.apply(this, args);\n cache.set(cacheKey, computedValue);\n }\n return computedValue;\n}\nfunction assemble(fn, context, strategy, cache, serialize) {\n return strategy.bind(context, fn, cache, serialize);\n}\nfunction strategyDefault(fn, options) {\n var strategy = fn.length === 1 ? monadic : variadic;\n return assemble(fn, this, strategy, options.cache.create(), options.serializer);\n}\nfunction strategyVariadic(fn, options) {\n return assemble(fn, this, variadic, options.cache.create(), options.serializer);\n}\nfunction strategyMonadic(fn, options) {\n return assemble(fn, this, monadic, options.cache.create(), options.serializer);\n}\n//\n// Serializer\n//\nvar serializerDefault = function () {\n return JSON.stringify(arguments);\n};\n//\n// Cache\n//\nfunction ObjectWithoutPrototypeCache() {\n this.cache = Object.create(null);\n}\nObjectWithoutPrototypeCache.prototype.get = function (key) {\n return this.cache[key];\n};\nObjectWithoutPrototypeCache.prototype.set = function (key, value) {\n this.cache[key] = value;\n};\nvar cacheDefault = {\n create: function create() {\n // @ts-ignore\n return new ObjectWithoutPrototypeCache();\n },\n};\nexport var strategies = {\n variadic: strategyVariadic,\n monadic: strategyMonadic,\n};\n","import { __extends } from \"tslib\";\nexport var ErrorCode;\n(function (ErrorCode) {\n // When we have a placeholder but no value to format\n ErrorCode[\"MISSING_VALUE\"] = \"MISSING_VALUE\";\n // When value supplied is invalid\n ErrorCode[\"INVALID_VALUE\"] = \"INVALID_VALUE\";\n // When we need specific Intl API but it's not available\n ErrorCode[\"MISSING_INTL_API\"] = \"MISSING_INTL_API\";\n})(ErrorCode || (ErrorCode = {}));\nvar FormatError = /** @class */ (function (_super) {\n __extends(FormatError, _super);\n function FormatError(msg, code, originalMessage) {\n var _this = _super.call(this, msg) || this;\n _this.code = code;\n _this.originalMessage = originalMessage;\n return _this;\n }\n FormatError.prototype.toString = function () {\n return \"[formatjs Error: \".concat(this.code, \"] \").concat(this.message);\n };\n return FormatError;\n}(Error));\nexport { FormatError };\nvar InvalidValueError = /** @class */ (function (_super) {\n __extends(InvalidValueError, _super);\n function InvalidValueError(variableId, value, options, originalMessage) {\n return _super.call(this, \"Invalid values for \\\"\".concat(variableId, \"\\\": \\\"\").concat(value, \"\\\". Options are \\\"\").concat(Object.keys(options).join('\", \"'), \"\\\"\"), ErrorCode.INVALID_VALUE, originalMessage) || this;\n }\n return InvalidValueError;\n}(FormatError));\nexport { InvalidValueError };\nvar InvalidValueTypeError = /** @class */ (function (_super) {\n __extends(InvalidValueTypeError, _super);\n function InvalidValueTypeError(value, type, originalMessage) {\n return _super.call(this, \"Value for \\\"\".concat(value, \"\\\" must be of type \").concat(type), ErrorCode.INVALID_VALUE, originalMessage) || this;\n }\n return InvalidValueTypeError;\n}(FormatError));\nexport { InvalidValueTypeError };\nvar MissingValueError = /** @class */ (function (_super) {\n __extends(MissingValueError, _super);\n function MissingValueError(variableId, originalMessage) {\n return _super.call(this, \"The intl string context variable \\\"\".concat(variableId, \"\\\" was not provided to the string \\\"\").concat(originalMessage, \"\\\"\"), ErrorCode.MISSING_VALUE, originalMessage) || this;\n }\n return MissingValueError;\n}(FormatError));\nexport { MissingValueError };\n","import { isArgumentElement, isDateElement, isDateTimeSkeleton, isLiteralElement, isNumberElement, isNumberSkeleton, isPluralElement, isPoundElement, isSelectElement, isTimeElement, isTagElement, } from '@formatjs/icu-messageformat-parser';\nimport { MissingValueError, InvalidValueError, ErrorCode, FormatError, InvalidValueTypeError, } from './error';\nexport var PART_TYPE;\n(function (PART_TYPE) {\n PART_TYPE[PART_TYPE[\"literal\"] = 0] = \"literal\";\n PART_TYPE[PART_TYPE[\"object\"] = 1] = \"object\";\n})(PART_TYPE || (PART_TYPE = {}));\nfunction mergeLiteral(parts) {\n if (parts.length < 2) {\n return parts;\n }\n return parts.reduce(function (all, part) {\n var lastPart = all[all.length - 1];\n if (!lastPart ||\n lastPart.type !== PART_TYPE.literal ||\n part.type !== PART_TYPE.literal) {\n all.push(part);\n }\n else {\n lastPart.value += part.value;\n }\n return all;\n }, []);\n}\nexport function isFormatXMLElementFn(el) {\n return typeof el === 'function';\n}\n// TODO(skeleton): add skeleton support\nexport function formatToParts(els, locales, formatters, formats, values, currentPluralValue, \n// For debugging\noriginalMessage) {\n // Hot path for straight simple msg translations\n if (els.length === 1 && isLiteralElement(els[0])) {\n return [\n {\n type: PART_TYPE.literal,\n value: els[0].value,\n },\n ];\n }\n var result = [];\n for (var _i = 0, els_1 = els; _i < els_1.length; _i++) {\n var el = els_1[_i];\n // Exit early for string parts.\n if (isLiteralElement(el)) {\n result.push({\n type: PART_TYPE.literal,\n value: el.value,\n });\n continue;\n }\n // TODO: should this part be literal type?\n // Replace `#` in plural rules with the actual numeric value.\n if (isPoundElement(el)) {\n if (typeof currentPluralValue === 'number') {\n result.push({\n type: PART_TYPE.literal,\n value: formatters.getNumberFormat(locales).format(currentPluralValue),\n });\n }\n continue;\n }\n var varName = el.value;\n // Enforce that all required values are provided by the caller.\n if (!(values && varName in values)) {\n throw new MissingValueError(varName, originalMessage);\n }\n var value = values[varName];\n if (isArgumentElement(el)) {\n if (!value || typeof value === 'string' || typeof value === 'number') {\n value =\n typeof value === 'string' || typeof value === 'number'\n ? String(value)\n : '';\n }\n result.push({\n type: typeof value === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n value: value,\n });\n continue;\n }\n // Recursively format plural and select parts' option — which can be a\n // nested pattern structure. The choosing of the option to use is\n // abstracted-by and delegated-to the part helper object.\n if (isDateElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.date[el.style]\n : isDateTimeSkeleton(el.style)\n ? el.style.parsedOptions\n : undefined;\n result.push({\n type: PART_TYPE.literal,\n value: formatters\n .getDateTimeFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isTimeElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.time[el.style]\n : isDateTimeSkeleton(el.style)\n ? el.style.parsedOptions\n : formats.time.medium;\n result.push({\n type: PART_TYPE.literal,\n value: formatters\n .getDateTimeFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isNumberElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.number[el.style]\n : isNumberSkeleton(el.style)\n ? el.style.parsedOptions\n : undefined;\n if (style && style.scale) {\n value =\n value *\n (style.scale || 1);\n }\n result.push({\n type: PART_TYPE.literal,\n value: formatters\n .getNumberFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isTagElement(el)) {\n var children = el.children, value_1 = el.value;\n var formatFn = values[value_1];\n if (!isFormatXMLElementFn(formatFn)) {\n throw new InvalidValueTypeError(value_1, 'function', originalMessage);\n }\n var parts = formatToParts(children, locales, formatters, formats, values, currentPluralValue);\n var chunks = formatFn(parts.map(function (p) { return p.value; }));\n if (!Array.isArray(chunks)) {\n chunks = [chunks];\n }\n result.push.apply(result, chunks.map(function (c) {\n return {\n type: typeof c === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n value: c,\n };\n }));\n }\n if (isSelectElement(el)) {\n var opt = el.options[value] || el.options.other;\n if (!opt) {\n throw new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n }\n result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values));\n continue;\n }\n if (isPluralElement(el)) {\n var opt = el.options[\"=\".concat(value)];\n if (!opt) {\n if (!Intl.PluralRules) {\n throw new FormatError(\"Intl.PluralRules is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-pluralrules\\\"\\n\", ErrorCode.MISSING_INTL_API, originalMessage);\n }\n var rule = formatters\n .getPluralRules(locales, { type: el.pluralType })\n .select(value - (el.offset || 0));\n opt = el.options[rule] || el.options.other;\n }\n if (!opt) {\n throw new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n }\n result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values, value - (el.offset || 0)));\n continue;\n }\n }\n return mergeLiteral(result);\n}\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nimport { __assign, __rest, __spreadArray } from \"tslib\";\nimport { parse, } from '@formatjs/icu-messageformat-parser';\nimport { memoize, strategies } from '@formatjs/fast-memoize';\nimport { formatToParts, PART_TYPE, } from './formatters';\n// -- MessageFormat --------------------------------------------------------\nfunction mergeConfig(c1, c2) {\n if (!c2) {\n return c1;\n }\n return __assign(__assign(__assign({}, (c1 || {})), (c2 || {})), Object.keys(c1).reduce(function (all, k) {\n all[k] = __assign(__assign({}, c1[k]), (c2[k] || {}));\n return all;\n }, {}));\n}\nfunction mergeConfigs(defaultConfig, configs) {\n if (!configs) {\n return defaultConfig;\n }\n return Object.keys(defaultConfig).reduce(function (all, k) {\n all[k] = mergeConfig(defaultConfig[k], configs[k]);\n return all;\n }, __assign({}, defaultConfig));\n}\nfunction createFastMemoizeCache(store) {\n return {\n create: function () {\n return {\n get: function (key) {\n return store[key];\n },\n set: function (key, value) {\n store[key] = value;\n },\n };\n },\n };\n}\nfunction createDefaultFormatters(cache) {\n if (cache === void 0) { cache = {\n number: {},\n dateTime: {},\n pluralRules: {},\n }; }\n return {\n getNumberFormat: memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.number),\n strategy: strategies.variadic,\n }),\n getDateTimeFormat: memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.dateTime),\n strategy: strategies.variadic,\n }),\n getPluralRules: memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.pluralRules),\n strategy: strategies.variadic,\n }),\n };\n}\nvar IntlMessageFormat = /** @class */ (function () {\n function IntlMessageFormat(message, locales, overrideFormats, opts) {\n if (locales === void 0) { locales = IntlMessageFormat.defaultLocale; }\n var _this = this;\n this.formatterCache = {\n number: {},\n dateTime: {},\n pluralRules: {},\n };\n this.format = function (values) {\n var parts = _this.formatToParts(values);\n // Hot path for straight simple msg translations\n if (parts.length === 1) {\n return parts[0].value;\n }\n var result = parts.reduce(function (all, part) {\n if (!all.length ||\n part.type !== PART_TYPE.literal ||\n typeof all[all.length - 1] !== 'string') {\n all.push(part.value);\n }\n else {\n all[all.length - 1] += part.value;\n }\n return all;\n }, []);\n if (result.length <= 1) {\n return result[0] || '';\n }\n return result;\n };\n this.formatToParts = function (values) {\n return formatToParts(_this.ast, _this.locales, _this.formatters, _this.formats, values, undefined, _this.message);\n };\n this.resolvedOptions = function () {\n var _a;\n return ({\n locale: ((_a = _this.resolvedLocale) === null || _a === void 0 ? void 0 : _a.toString()) ||\n Intl.NumberFormat.supportedLocalesOf(_this.locales)[0],\n });\n };\n this.getAst = function () { return _this.ast; };\n // Defined first because it's used to build the format pattern.\n this.locales = locales;\n this.resolvedLocale = IntlMessageFormat.resolveLocale(locales);\n if (typeof message === 'string') {\n this.message = message;\n if (!IntlMessageFormat.__parse) {\n throw new TypeError('IntlMessageFormat.__parse must be set to process `message` of type `string`');\n }\n var _a = opts || {}, formatters = _a.formatters, parseOpts = __rest(_a, [\"formatters\"]);\n // Parse string messages into an AST.\n this.ast = IntlMessageFormat.__parse(message, __assign(__assign({}, parseOpts), { locale: this.resolvedLocale }));\n }\n else {\n this.ast = message;\n }\n if (!Array.isArray(this.ast)) {\n throw new TypeError('A message must be provided as a String or AST.');\n }\n // Creates a new object with the specified `formats` merged with the default\n // formats.\n this.formats = mergeConfigs(IntlMessageFormat.formats, overrideFormats);\n this.formatters =\n (opts && opts.formatters) || createDefaultFormatters(this.formatterCache);\n }\n Object.defineProperty(IntlMessageFormat, \"defaultLocale\", {\n get: function () {\n if (!IntlMessageFormat.memoizedDefaultLocale) {\n IntlMessageFormat.memoizedDefaultLocale =\n new Intl.NumberFormat().resolvedOptions().locale;\n }\n return IntlMessageFormat.memoizedDefaultLocale;\n },\n enumerable: false,\n configurable: true\n });\n IntlMessageFormat.memoizedDefaultLocale = null;\n IntlMessageFormat.resolveLocale = function (locales) {\n if (typeof Intl.Locale === 'undefined') {\n return;\n }\n var supportedLocales = Intl.NumberFormat.supportedLocalesOf(locales);\n if (supportedLocales.length > 0) {\n return new Intl.Locale(supportedLocales[0]);\n }\n return new Intl.Locale(typeof locales === 'string' ? locales : locales[0]);\n };\n IntlMessageFormat.__parse = parse;\n // Default format options used as the prototype of the `formats` provided to the\n // constructor. These are used when constructing the internal Intl.NumberFormat\n // and Intl.DateTimeFormat instances.\n IntlMessageFormat.formats = {\n number: {\n integer: {\n maximumFractionDigits: 0,\n },\n currency: {\n style: 'currency',\n },\n percent: {\n style: 'percent',\n },\n },\n date: {\n short: {\n month: 'numeric',\n day: 'numeric',\n year: '2-digit',\n },\n medium: {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n },\n long: {\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n },\n full: {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n },\n },\n time: {\n short: {\n hour: 'numeric',\n minute: 'numeric',\n },\n medium: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n },\n long: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n timeZoneName: 'short',\n },\n full: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n timeZoneName: 'short',\n },\n },\n };\n return IntlMessageFormat;\n}());\nexport { IntlMessageFormat };\n","import { __extends } from \"tslib\";\nexport var IntlErrorCode;\n(function (IntlErrorCode) {\n IntlErrorCode[\"FORMAT_ERROR\"] = \"FORMAT_ERROR\";\n IntlErrorCode[\"UNSUPPORTED_FORMATTER\"] = \"UNSUPPORTED_FORMATTER\";\n IntlErrorCode[\"INVALID_CONFIG\"] = \"INVALID_CONFIG\";\n IntlErrorCode[\"MISSING_DATA\"] = \"MISSING_DATA\";\n IntlErrorCode[\"MISSING_TRANSLATION\"] = \"MISSING_TRANSLATION\";\n})(IntlErrorCode || (IntlErrorCode = {}));\nvar IntlError = /** @class */ (function (_super) {\n __extends(IntlError, _super);\n function IntlError(code, message, exception) {\n var _this = this;\n var err = exception\n ? exception instanceof Error\n ? exception\n : new Error(String(exception))\n : undefined;\n _this = _super.call(this, \"[@formatjs/intl Error \".concat(code, \"] \").concat(message, \"\\n\").concat(err ? \"\\n\".concat(err.message, \"\\n\").concat(err.stack) : '')) || this;\n _this.code = code;\n // @ts-ignore just so we don't need to declare dep on @types/node\n if (typeof Error.captureStackTrace === 'function') {\n // @ts-ignore just so we don't need to declare dep on @types/node\n Error.captureStackTrace(_this, IntlError);\n }\n return _this;\n }\n return IntlError;\n}(Error));\nexport { IntlError };\nvar UnsupportedFormatterError = /** @class */ (function (_super) {\n __extends(UnsupportedFormatterError, _super);\n function UnsupportedFormatterError(message, exception) {\n return _super.call(this, IntlErrorCode.UNSUPPORTED_FORMATTER, message, exception) || this;\n }\n return UnsupportedFormatterError;\n}(IntlError));\nexport { UnsupportedFormatterError };\nvar InvalidConfigError = /** @class */ (function (_super) {\n __extends(InvalidConfigError, _super);\n function InvalidConfigError(message, exception) {\n return _super.call(this, IntlErrorCode.INVALID_CONFIG, message, exception) || this;\n }\n return InvalidConfigError;\n}(IntlError));\nexport { InvalidConfigError };\nvar MissingDataError = /** @class */ (function (_super) {\n __extends(MissingDataError, _super);\n function MissingDataError(message, exception) {\n return _super.call(this, IntlErrorCode.MISSING_DATA, message, exception) || this;\n }\n return MissingDataError;\n}(IntlError));\nexport { MissingDataError };\nvar IntlFormatError = /** @class */ (function (_super) {\n __extends(IntlFormatError, _super);\n function IntlFormatError(message, locale, exception) {\n return _super.call(this, IntlErrorCode.FORMAT_ERROR, \"\".concat(message, \"\\nLocale: \").concat(locale, \"\\n\"), exception) || this;\n }\n return IntlFormatError;\n}(IntlError));\nexport { IntlFormatError };\nvar MessageFormatError = /** @class */ (function (_super) {\n __extends(MessageFormatError, _super);\n function MessageFormatError(message, locale, descriptor, exception) {\n var _this = _super.call(this, \"\".concat(message, \"\\nMessageID: \").concat(descriptor === null || descriptor === void 0 ? void 0 : descriptor.id, \"\\nDefault Message: \").concat(descriptor === null || descriptor === void 0 ? void 0 : descriptor.defaultMessage, \"\\nDescription: \").concat(descriptor === null || descriptor === void 0 ? void 0 : descriptor.description, \"\\n\"), locale, exception) || this;\n _this.descriptor = descriptor;\n return _this;\n }\n return MessageFormatError;\n}(IntlFormatError));\nexport { MessageFormatError };\nvar MissingTranslationError = /** @class */ (function (_super) {\n __extends(MissingTranslationError, _super);\n function MissingTranslationError(descriptor, locale) {\n var _this = _super.call(this, IntlErrorCode.MISSING_TRANSLATION, \"Missing message: \\\"\".concat(descriptor.id, \"\\\" for locale \\\"\").concat(locale, \"\\\", using \").concat(descriptor.defaultMessage\n ? \"default message (\".concat(typeof descriptor.defaultMessage === 'string'\n ? descriptor.defaultMessage\n : descriptor.defaultMessage\n .map(function (e) { var _a; return (_a = e.value) !== null && _a !== void 0 ? _a : JSON.stringify(e); })\n .join(), \")\")\n : 'id', \" as fallback.\")) || this;\n _this.descriptor = descriptor;\n return _this;\n }\n return MissingTranslationError;\n}(IntlError));\nexport { MissingTranslationError };\n","import { __assign, __spreadArray } from \"tslib\";\nimport { IntlMessageFormat } from 'intl-messageformat';\nimport { memoize, strategies } from '@formatjs/fast-memoize';\nimport { UnsupportedFormatterError } from './error';\nexport function filterProps(props, allowlist, defaults) {\n if (defaults === void 0) { defaults = {}; }\n return allowlist.reduce(function (filtered, name) {\n if (name in props) {\n filtered[name] = props[name];\n }\n else if (name in defaults) {\n filtered[name] = defaults[name];\n }\n return filtered;\n }, {});\n}\nvar defaultErrorHandler = function (error) {\n // @ts-ignore just so we don't need to declare dep on @types/node\n if (process.env.NODE_ENV !== 'production') {\n console.error(error);\n }\n};\nvar defaultWarnHandler = function (warning) {\n // @ts-ignore just so we don't need to declare dep on @types/node\n if (process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n};\nexport var DEFAULT_INTL_CONFIG = {\n formats: {},\n messages: {},\n timeZone: undefined,\n defaultLocale: 'en',\n defaultFormats: {},\n fallbackOnEmptyString: true,\n onError: defaultErrorHandler,\n onWarn: defaultWarnHandler,\n};\nexport function createIntlCache() {\n return {\n dateTime: {},\n number: {},\n message: {},\n relativeTime: {},\n pluralRules: {},\n list: {},\n displayNames: {},\n };\n}\nfunction createFastMemoizeCache(store) {\n return {\n create: function () {\n return {\n get: function (key) {\n return store[key];\n },\n set: function (key, value) {\n store[key] = value;\n },\n };\n },\n };\n}\n/**\n * Create intl formatters and populate cache\n * @param cache explicit cache to prevent leaking memory\n */\nexport function createFormatters(cache) {\n if (cache === void 0) { cache = createIntlCache(); }\n var RelativeTimeFormat = Intl.RelativeTimeFormat;\n var ListFormat = Intl.ListFormat;\n var DisplayNames = Intl.DisplayNames;\n var getDateTimeFormat = memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.dateTime),\n strategy: strategies.variadic,\n });\n var getNumberFormat = memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.number),\n strategy: strategies.variadic,\n });\n var getPluralRules = memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.pluralRules),\n strategy: strategies.variadic,\n });\n return {\n getDateTimeFormat: getDateTimeFormat,\n getNumberFormat: getNumberFormat,\n getMessageFormat: memoize(function (message, locales, overrideFormats, opts) {\n return new IntlMessageFormat(message, locales, overrideFormats, __assign({ formatters: {\n getNumberFormat: getNumberFormat,\n getDateTimeFormat: getDateTimeFormat,\n getPluralRules: getPluralRules,\n } }, (opts || {})));\n }, {\n cache: createFastMemoizeCache(cache.message),\n strategy: strategies.variadic,\n }),\n getRelativeTimeFormat: memoize(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new (RelativeTimeFormat.bind.apply(RelativeTimeFormat, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.relativeTime),\n strategy: strategies.variadic,\n }),\n getPluralRules: getPluralRules,\n getListFormat: memoize(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new (ListFormat.bind.apply(ListFormat, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.list),\n strategy: strategies.variadic,\n }),\n getDisplayNames: memoize(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new (DisplayNames.bind.apply(DisplayNames, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.displayNames),\n strategy: strategies.variadic,\n }),\n };\n}\nexport function getNamedFormat(formats, type, name, onError) {\n var formatType = formats && formats[type];\n var format;\n if (formatType) {\n format = formatType[name];\n }\n if (format) {\n return format;\n }\n onError(new UnsupportedFormatterError(\"No \".concat(type, \" format named: \").concat(name)));\n}\n","import { __assign } from \"tslib\";\nimport { invariant } from '@formatjs/ecma402-abstract';\nimport { IntlMessageFormat, } from 'intl-messageformat';\nimport { MissingTranslationError, MessageFormatError } from './error';\nimport { TYPE } from '@formatjs/icu-messageformat-parser';\nfunction setTimeZoneInOptions(opts, timeZone) {\n return Object.keys(opts).reduce(function (all, k) {\n all[k] = __assign({ timeZone: timeZone }, opts[k]);\n return all;\n }, {});\n}\nfunction deepMergeOptions(opts1, opts2) {\n var keys = Object.keys(__assign(__assign({}, opts1), opts2));\n return keys.reduce(function (all, k) {\n all[k] = __assign(__assign({}, (opts1[k] || {})), (opts2[k] || {}));\n return all;\n }, {});\n}\nfunction deepMergeFormatsAndSetTimeZone(f1, timeZone) {\n if (!timeZone) {\n return f1;\n }\n var mfFormats = IntlMessageFormat.formats;\n return __assign(__assign(__assign({}, mfFormats), f1), { date: deepMergeOptions(setTimeZoneInOptions(mfFormats.date, timeZone), setTimeZoneInOptions(f1.date || {}, timeZone)), time: deepMergeOptions(setTimeZoneInOptions(mfFormats.time, timeZone), setTimeZoneInOptions(f1.time || {}, timeZone)) });\n}\nexport var formatMessage = function (_a, state, messageDescriptor, values, opts) {\n var locale = _a.locale, formats = _a.formats, messages = _a.messages, defaultLocale = _a.defaultLocale, defaultFormats = _a.defaultFormats, fallbackOnEmptyString = _a.fallbackOnEmptyString, onError = _a.onError, timeZone = _a.timeZone, defaultRichTextElements = _a.defaultRichTextElements;\n if (messageDescriptor === void 0) { messageDescriptor = { id: '' }; }\n var msgId = messageDescriptor.id, defaultMessage = messageDescriptor.defaultMessage;\n // `id` is a required field of a Message Descriptor.\n invariant(!!msgId, \"[@formatjs/intl] An `id` must be provided to format a message. You can either:\\n1. Configure your build toolchain with [babel-plugin-formatjs](https://formatjs.io/docs/tooling/babel-plugin)\\nor [@formatjs/ts-transformer](https://formatjs.io/docs/tooling/ts-transformer) OR\\n2. Configure your `eslint` config to include [eslint-plugin-formatjs](https://formatjs.io/docs/tooling/linter#enforce-id)\\nto autofix this issue\");\n var id = String(msgId);\n var message = \n // In case messages is Object.create(null)\n // e.g import('foo.json') from webpack)\n // See https://github.com/formatjs/formatjs/issues/1914\n messages &&\n Object.prototype.hasOwnProperty.call(messages, id) &&\n messages[id];\n // IMPORTANT: Hot path if `message` is AST with a single literal node\n if (Array.isArray(message) &&\n message.length === 1 &&\n message[0].type === TYPE.literal) {\n return message[0].value;\n }\n // IMPORTANT: Hot path straight lookup for performance\n if (!values &&\n message &&\n typeof message === 'string' &&\n !defaultRichTextElements) {\n return message.replace(/'\\{(.*?)\\}'/gi, \"{$1}\");\n }\n values = __assign(__assign({}, defaultRichTextElements), (values || {}));\n formats = deepMergeFormatsAndSetTimeZone(formats, timeZone);\n defaultFormats = deepMergeFormatsAndSetTimeZone(defaultFormats, timeZone);\n if (!message) {\n if (fallbackOnEmptyString === false && message === '') {\n return message;\n }\n if (!defaultMessage ||\n (locale && locale.toLowerCase() !== defaultLocale.toLowerCase())) {\n // This prevents warnings from littering the console in development\n // when no `messages` are passed into the for the\n // default locale.\n onError(new MissingTranslationError(messageDescriptor, locale));\n }\n if (defaultMessage) {\n try {\n var formatter = state.getMessageFormat(defaultMessage, defaultLocale, defaultFormats, opts);\n return formatter.format(values);\n }\n catch (e) {\n onError(new MessageFormatError(\"Error formatting default message for: \\\"\".concat(id, \"\\\", rendering default message verbatim\"), locale, messageDescriptor, e));\n return typeof defaultMessage === 'string' ? defaultMessage : id;\n }\n }\n return id;\n }\n // We have the translated message\n try {\n var formatter = state.getMessageFormat(message, locale, formats, __assign({ formatters: state }, (opts || {})));\n return formatter.format(values);\n }\n catch (e) {\n onError(new MessageFormatError(\"Error formatting message: \\\"\".concat(id, \"\\\", using \").concat(defaultMessage ? 'default message' : 'id', \" as fallback.\"), locale, messageDescriptor, e));\n }\n if (defaultMessage) {\n try {\n var formatter = state.getMessageFormat(defaultMessage, defaultLocale, defaultFormats, opts);\n return formatter.format(values);\n }\n catch (e) {\n onError(new MessageFormatError(\"Error formatting the default message for: \\\"\".concat(id, \"\\\", rendering message verbatim\"), locale, messageDescriptor, e));\n }\n }\n if (typeof message === 'string') {\n return message;\n }\n if (typeof defaultMessage === 'string') {\n return defaultMessage;\n }\n return id;\n};\n","import { __assign } from \"tslib\";\nimport { filterProps, getNamedFormat } from './utils';\nimport { IntlError, IntlErrorCode } from './error';\nvar DATE_TIME_FORMAT_OPTIONS = [\n 'formatMatcher',\n 'timeZone',\n 'hour12',\n 'weekday',\n 'era',\n 'year',\n 'month',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'timeZoneName',\n 'hourCycle',\n 'dateStyle',\n 'timeStyle',\n 'calendar',\n // 'dayPeriod',\n 'numberingSystem',\n 'fractionalSecondDigits',\n];\nexport function getFormatter(_a, type, getDateTimeFormat, options) {\n var locale = _a.locale, formats = _a.formats, onError = _a.onError, timeZone = _a.timeZone;\n if (options === void 0) { options = {}; }\n var format = options.format;\n var defaults = __assign(__assign({}, (timeZone && { timeZone: timeZone })), (format && getNamedFormat(formats, type, format, onError)));\n var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, defaults);\n if (type === 'time' &&\n !filteredOptions.hour &&\n !filteredOptions.minute &&\n !filteredOptions.second &&\n !filteredOptions.timeStyle &&\n !filteredOptions.dateStyle) {\n // Add default formatting options if hour, minute, or second isn't defined.\n filteredOptions = __assign(__assign({}, filteredOptions), { hour: 'numeric', minute: 'numeric' });\n }\n return getDateTimeFormat(locale, filteredOptions);\n}\nexport function formatDate(config, getDateTimeFormat) {\n var _a = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n _a[_i - 2] = arguments[_i];\n }\n var value = _a[0], _b = _a[1], options = _b === void 0 ? {} : _b;\n var date = typeof value === 'string' ? new Date(value || 0) : value;\n try {\n return getFormatter(config, 'date', getDateTimeFormat, options).format(date);\n }\n catch (e) {\n config.onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting date.', e));\n }\n return String(date);\n}\nexport function formatTime(config, getDateTimeFormat) {\n var _a = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n _a[_i - 2] = arguments[_i];\n }\n var value = _a[0], _b = _a[1], options = _b === void 0 ? {} : _b;\n var date = typeof value === 'string' ? new Date(value || 0) : value;\n try {\n return getFormatter(config, 'time', getDateTimeFormat, options).format(date);\n }\n catch (e) {\n config.onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting time.', e));\n }\n return String(date);\n}\nexport function formatDateTimeRange(config, getDateTimeFormat) {\n var _a = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n _a[_i - 2] = arguments[_i];\n }\n var from = _a[0], to = _a[1], _b = _a[2], options = _b === void 0 ? {} : _b;\n var timeZone = config.timeZone, locale = config.locale, onError = config.onError;\n var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, timeZone ? { timeZone: timeZone } : {});\n try {\n return getDateTimeFormat(locale, filteredOptions).formatRange(from, to);\n }\n catch (e) {\n onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting date time range.', e));\n }\n return String(from);\n}\nexport function formatDateToParts(config, getDateTimeFormat) {\n var _a = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n _a[_i - 2] = arguments[_i];\n }\n var value = _a[0], _b = _a[1], options = _b === void 0 ? {} : _b;\n var date = typeof value === 'string' ? new Date(value || 0) : value;\n try {\n return getFormatter(config, 'date', getDateTimeFormat, options).formatToParts(date); // TODO: remove this when https://github.com/microsoft/TypeScript/pull/50402 is merged\n }\n catch (e) {\n config.onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting date.', e));\n }\n return [];\n}\nexport function formatTimeToParts(config, getDateTimeFormat) {\n var _a = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n _a[_i - 2] = arguments[_i];\n }\n var value = _a[0], _b = _a[1], options = _b === void 0 ? {} : _b;\n var date = typeof value === 'string' ? new Date(value || 0) : value;\n try {\n return getFormatter(config, 'time', getDateTimeFormat, options).formatToParts(date); // TODO: remove this when https://github.com/microsoft/TypeScript/pull/50402 is merged\n }\n catch (e) {\n config.onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting time.', e));\n }\n return [];\n}\n","import { filterProps } from './utils';\nimport { FormatError, ErrorCode } from 'intl-messageformat';\nimport { IntlErrorCode, IntlError } from './error';\nvar DISPLAY_NAMES_OPTONS = [\n 'style',\n 'type',\n 'fallback',\n 'languageDisplay',\n];\nexport function formatDisplayName(_a, getDisplayNames, value, options) {\n var locale = _a.locale, onError = _a.onError;\n var DisplayNames = Intl.DisplayNames;\n if (!DisplayNames) {\n onError(new FormatError(\"Intl.DisplayNames is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-displaynames\\\"\\n\", ErrorCode.MISSING_INTL_API));\n }\n var filteredOptions = filterProps(options, DISPLAY_NAMES_OPTONS);\n try {\n return getDisplayNames(locale, filteredOptions).of(value);\n }\n catch (e) {\n onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting display name.', e));\n }\n}\n","import { __assign } from \"tslib\";\nimport { filterProps } from './utils';\nimport { FormatError, ErrorCode } from 'intl-messageformat';\nimport { IntlError, IntlErrorCode } from './error';\nvar LIST_FORMAT_OPTIONS = [\n 'type',\n 'style',\n];\nvar now = Date.now();\nfunction generateToken(i) {\n return \"\".concat(now, \"_\").concat(i, \"_\").concat(now);\n}\nexport function formatList(opts, getListFormat, values, options) {\n if (options === void 0) { options = {}; }\n var results = formatListToParts(opts, getListFormat, values, options).reduce(function (all, el) {\n var val = el.value;\n if (typeof val !== 'string') {\n all.push(val);\n }\n else if (typeof all[all.length - 1] === 'string') {\n all[all.length - 1] += val;\n }\n else {\n all.push(val);\n }\n return all;\n }, []);\n return results.length === 1 ? results[0] : results.length === 0 ? '' : results;\n}\nexport function formatListToParts(_a, getListFormat, values, options) {\n var locale = _a.locale, onError = _a.onError;\n if (options === void 0) { options = {}; }\n var ListFormat = Intl.ListFormat;\n if (!ListFormat) {\n onError(new FormatError(\"Intl.ListFormat is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-listformat\\\"\\n\", ErrorCode.MISSING_INTL_API));\n }\n var filteredOptions = filterProps(options, LIST_FORMAT_OPTIONS);\n try {\n var richValues_1 = {};\n var serializedValues = values.map(function (v, i) {\n if (typeof v === 'object') {\n var id = generateToken(i);\n richValues_1[id] = v;\n return id;\n }\n return String(v);\n });\n return getListFormat(locale, filteredOptions)\n .formatToParts(serializedValues)\n .map(function (part) {\n return part.type === 'literal'\n ? part\n : __assign(__assign({}, part), { value: richValues_1[part.value] || part.value });\n });\n }\n catch (e) {\n onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting list.', e));\n }\n // @ts-ignore\n return values;\n}\n","import { filterProps } from './utils';\nimport { IntlFormatError } from './error';\nimport { ErrorCode, FormatError } from 'intl-messageformat';\nvar PLURAL_FORMAT_OPTIONS = ['type'];\nexport function formatPlural(_a, getPluralRules, value, options) {\n var locale = _a.locale, onError = _a.onError;\n if (options === void 0) { options = {}; }\n if (!Intl.PluralRules) {\n onError(new FormatError(\"Intl.PluralRules is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-pluralrules\\\"\\n\", ErrorCode.MISSING_INTL_API));\n }\n var filteredOptions = filterProps(options, PLURAL_FORMAT_OPTIONS);\n try {\n return getPluralRules(locale, filteredOptions).select(value);\n }\n catch (e) {\n onError(new IntlFormatError('Error formatting plural.', locale, e));\n }\n return 'other';\n}\n","import { getNamedFormat, filterProps } from './utils';\nimport { FormatError, ErrorCode } from 'intl-messageformat';\nimport { IntlFormatError } from './error';\nvar RELATIVE_TIME_FORMAT_OPTIONS = ['numeric', 'style'];\nfunction getFormatter(_a, getRelativeTimeFormat, options) {\n var locale = _a.locale, formats = _a.formats, onError = _a.onError;\n if (options === void 0) { options = {}; }\n var format = options.format;\n var defaults = (!!format && getNamedFormat(formats, 'relative', format, onError)) || {};\n var filteredOptions = filterProps(options, RELATIVE_TIME_FORMAT_OPTIONS, defaults);\n return getRelativeTimeFormat(locale, filteredOptions);\n}\nexport function formatRelativeTime(config, getRelativeTimeFormat, value, unit, options) {\n if (options === void 0) { options = {}; }\n if (!unit) {\n unit = 'second';\n }\n var RelativeTimeFormat = Intl.RelativeTimeFormat;\n if (!RelativeTimeFormat) {\n config.onError(new FormatError(\"Intl.RelativeTimeFormat is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-relativetimeformat\\\"\\n\", ErrorCode.MISSING_INTL_API));\n }\n try {\n return getFormatter(config, getRelativeTimeFormat, options).format(value, unit);\n }\n catch (e) {\n config.onError(new IntlFormatError('Error formatting relative time.', config.locale, e));\n }\n return String(value);\n}\n","import { getNamedFormat, filterProps } from './utils';\nimport { IntlError, IntlErrorCode } from './error';\nvar NUMBER_FORMAT_OPTIONS = [\n 'style',\n 'currency',\n 'currencyDisplay',\n 'unit',\n 'unitDisplay',\n 'useGrouping',\n 'minimumIntegerDigits',\n 'minimumFractionDigits',\n 'maximumFractionDigits',\n 'minimumSignificantDigits',\n 'maximumSignificantDigits',\n // ES2020 NumberFormat\n 'compactDisplay',\n 'currencyDisplay',\n 'currencySign',\n 'notation',\n 'signDisplay',\n 'unit',\n 'unitDisplay',\n 'numberingSystem',\n];\nexport function getFormatter(_a, getNumberFormat, options) {\n var locale = _a.locale, formats = _a.formats, onError = _a.onError;\n if (options === void 0) { options = {}; }\n var format = options.format;\n var defaults = ((format &&\n getNamedFormat(formats, 'number', format, onError)) ||\n {});\n var filteredOptions = filterProps(options, NUMBER_FORMAT_OPTIONS, defaults);\n return getNumberFormat(locale, filteredOptions);\n}\nexport function formatNumber(config, getNumberFormat, value, options) {\n if (options === void 0) { options = {}; }\n try {\n return getFormatter(config, getNumberFormat, options).format(value);\n }\n catch (e) {\n config.onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting number.', e));\n }\n return String(value);\n}\nexport function formatNumberToParts(config, getNumberFormat, value, options) {\n if (options === void 0) { options = {}; }\n try {\n return getFormatter(config, getNumberFormat, options).formatToParts(value);\n }\n catch (e) {\n config.onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting number.', e));\n }\n return [];\n}\n","import { __assign } from \"tslib\";\nimport { createFormatters, DEFAULT_INTL_CONFIG } from './utils';\nimport { InvalidConfigError, MissingDataError } from './error';\nimport { formatNumber, formatNumberToParts } from './number';\nimport { formatRelativeTime } from './relativeTime';\nimport { formatDate, formatDateToParts, formatTime, formatTimeToParts, formatDateTimeRange, } from './dateTime';\nimport { formatPlural } from './plural';\nimport { formatMessage } from './message';\nimport { formatList, formatListToParts } from './list';\nimport { formatDisplayName } from './displayName';\nfunction messagesContainString(messages) {\n var firstMessage = messages ? messages[Object.keys(messages)[0]] : undefined;\n return typeof firstMessage === 'string';\n}\nfunction verifyConfigMessages(config) {\n if (config.onWarn &&\n config.defaultRichTextElements &&\n messagesContainString(config.messages || {})) {\n config.onWarn(\"[@formatjs/intl] \\\"defaultRichTextElements\\\" was specified but \\\"message\\\" was not pre-compiled. \\nPlease consider using \\\"@formatjs/cli\\\" to pre-compile your messages for performance.\\nFor more details see https://formatjs.io/docs/getting-started/message-distribution\");\n }\n}\n/**\n * Create intl object\n * @param config intl config\n * @param cache cache for formatter instances to prevent memory leak\n */\nexport function createIntl(config, cache) {\n var formatters = createFormatters(cache);\n var resolvedConfig = __assign(__assign({}, DEFAULT_INTL_CONFIG), config);\n var locale = resolvedConfig.locale, defaultLocale = resolvedConfig.defaultLocale, onError = resolvedConfig.onError;\n if (!locale) {\n if (onError) {\n onError(new InvalidConfigError(\"\\\"locale\\\" was not configured, using \\\"\".concat(defaultLocale, \"\\\" as fallback. See https://formatjs.io/docs/react-intl/api#intlshape for more details\")));\n }\n // Since there's no registered locale data for `locale`, this will\n // fallback to the `defaultLocale` to make sure things can render.\n // The `messages` are overridden to the `defaultProps` empty object\n // to maintain referential equality across re-renders. It's assumed\n // each contains a `defaultMessage` prop.\n resolvedConfig.locale = resolvedConfig.defaultLocale || 'en';\n }\n else if (!Intl.NumberFormat.supportedLocalesOf(locale).length && onError) {\n onError(new MissingDataError(\"Missing locale data for locale: \\\"\".concat(locale, \"\\\" in Intl.NumberFormat. Using default locale: \\\"\").concat(defaultLocale, \"\\\" as fallback. See https://formatjs.io/docs/react-intl#runtime-requirements for more details\")));\n }\n else if (!Intl.DateTimeFormat.supportedLocalesOf(locale).length &&\n onError) {\n onError(new MissingDataError(\"Missing locale data for locale: \\\"\".concat(locale, \"\\\" in Intl.DateTimeFormat. Using default locale: \\\"\").concat(defaultLocale, \"\\\" as fallback. See https://formatjs.io/docs/react-intl#runtime-requirements for more details\")));\n }\n verifyConfigMessages(resolvedConfig);\n return __assign(__assign({}, resolvedConfig), { formatters: formatters, formatNumber: formatNumber.bind(null, resolvedConfig, formatters.getNumberFormat), formatNumberToParts: formatNumberToParts.bind(null, resolvedConfig, formatters.getNumberFormat), formatRelativeTime: formatRelativeTime.bind(null, resolvedConfig, formatters.getRelativeTimeFormat), formatDate: formatDate.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatDateToParts: formatDateToParts.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatTime: formatTime.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatDateTimeRange: formatDateTimeRange.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatTimeToParts: formatTimeToParts.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatPlural: formatPlural.bind(null, resolvedConfig, formatters.getPluralRules), \n // @ts-expect-error TODO: will get to this later\n formatMessage: formatMessage.bind(null, resolvedConfig, formatters), \n // @ts-expect-error TODO: will get to this later\n $t: formatMessage.bind(null, resolvedConfig, formatters), formatList: formatList.bind(null, resolvedConfig, formatters.getListFormat), formatListToParts: formatListToParts.bind(null, resolvedConfig, formatters.getListFormat), formatDisplayName: formatDisplayName.bind(null, resolvedConfig, formatters.getDisplayNames) });\n}\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { invariant } from '@formatjs/ecma402-abstract';\nimport { DEFAULT_INTL_CONFIG as CORE_DEFAULT_INTL_CONFIG } from '@formatjs/intl';\nexport function invariantIntlContext(intl) {\n invariant(intl, '[React Intl] Could not find required `intl` object. ' +\n ' needs to exist in the component ancestry.');\n}\nexport var DEFAULT_INTL_CONFIG = __assign(__assign({}, CORE_DEFAULT_INTL_CONFIG), { textComponent: React.Fragment });\n/**\n * Takes a `formatXMLElementFn`, and composes it in function, which passes\n * argument `parts` through, assigning unique key to each part, to prevent\n * \"Each child in a list should have a unique \"key\"\" React error.\n * @param formatXMLElementFn\n */\nexport function assignUniqueKeysToParts(formatXMLElementFn) {\n return function (parts) {\n // eslint-disable-next-line prefer-rest-params\n return formatXMLElementFn(React.Children.toArray(parts));\n };\n}\nexport function shallowEqual(objA, objB) {\n if (objA === objB) {\n return true;\n }\n if (!objA || !objB) {\n return false;\n }\n var aKeys = Object.keys(objA);\n var bKeys = Object.keys(objB);\n var len = aKeys.length;\n if (bKeys.length !== len) {\n return false;\n }\n for (var i = 0; i < len; i++) {\n var key = aKeys[i];\n if (objA[key] !== objB[key] ||\n !Object.prototype.hasOwnProperty.call(objB, key)) {\n return false;\n }\n }\n return true;\n}\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { invariantIntlContext } from '../utils';\nfunction getDisplayName(Component) {\n return Component.displayName || Component.name || 'Component';\n}\n// This is primarily dealing with packaging systems where multiple copies of react-intl\n// might exist\nvar IntlContext = typeof window !== 'undefined'\n ? window.__REACT_INTL_CONTEXT__ ||\n (window.__REACT_INTL_CONTEXT__ = React.createContext(null))\n : React.createContext(null);\nvar IntlConsumer = IntlContext.Consumer, IntlProvider = IntlContext.Provider;\nexport var Provider = IntlProvider;\nexport var Context = IntlContext;\nexport default function injectIntl(WrappedComponent, options) {\n var _a = options || {}, _b = _a.intlPropName, intlPropName = _b === void 0 ? 'intl' : _b, _c = _a.forwardRef, forwardRef = _c === void 0 ? false : _c, _d = _a.enforceContext, enforceContext = _d === void 0 ? true : _d;\n var WithIntl = function (props) { return (React.createElement(IntlConsumer, null, function (intl) {\n var _a;\n if (enforceContext) {\n invariantIntlContext(intl);\n }\n var intlProp = (_a = {}, _a[intlPropName] = intl, _a);\n return (React.createElement(WrappedComponent, __assign({}, props, intlProp, { ref: forwardRef ? props.forwardedRef : null })));\n })); };\n WithIntl.displayName = \"injectIntl(\".concat(getDisplayName(WrappedComponent), \")\");\n WithIntl.WrappedComponent = WrappedComponent;\n if (forwardRef) {\n return hoistNonReactStatics(React.forwardRef(function (props, ref) { return (React.createElement(WithIntl, __assign({}, props, { forwardedRef: ref }))); }), WrappedComponent);\n }\n return hoistNonReactStatics(WithIntl, WrappedComponent);\n}\n","import * as React from 'react';\nimport { Context } from './injectIntl';\nimport { invariantIntlContext } from '../utils';\nexport default function useIntl() {\n var intl = React.useContext(Context);\n invariantIntlContext(intl);\n return intl;\n}\n","import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport useIntl from './useIntl';\nvar DisplayName;\n(function (DisplayName) {\n DisplayName[\"formatDate\"] = \"FormattedDate\";\n DisplayName[\"formatTime\"] = \"FormattedTime\";\n DisplayName[\"formatNumber\"] = \"FormattedNumber\";\n DisplayName[\"formatList\"] = \"FormattedList\";\n // Note that this DisplayName is the locale display name, not to be confused with\n // the name of the enum, which is for React component display name in dev tools.\n DisplayName[\"formatDisplayName\"] = \"FormattedDisplayName\";\n})(DisplayName || (DisplayName = {}));\nvar DisplayNameParts;\n(function (DisplayNameParts) {\n DisplayNameParts[\"formatDate\"] = \"FormattedDateParts\";\n DisplayNameParts[\"formatTime\"] = \"FormattedTimeParts\";\n DisplayNameParts[\"formatNumber\"] = \"FormattedNumberParts\";\n DisplayNameParts[\"formatList\"] = \"FormattedListParts\";\n})(DisplayNameParts || (DisplayNameParts = {}));\nexport var FormattedNumberParts = function (props) {\n var intl = useIntl();\n var value = props.value, children = props.children, formatProps = __rest(props, [\"value\", \"children\"]);\n return children(intl.formatNumberToParts(value, formatProps));\n};\nFormattedNumberParts.displayName = 'FormattedNumberParts';\nexport var FormattedListParts = function (props) {\n var intl = useIntl();\n var value = props.value, children = props.children, formatProps = __rest(props, [\"value\", \"children\"]);\n return children(intl.formatListToParts(value, formatProps));\n};\nFormattedNumberParts.displayName = 'FormattedNumberParts';\nexport function createFormattedDateTimePartsComponent(name) {\n var ComponentParts = function (props) {\n var intl = useIntl();\n var value = props.value, children = props.children, formatProps = __rest(props, [\"value\", \"children\"]);\n var date = typeof value === 'string' ? new Date(value || 0) : value;\n var formattedParts = name === 'formatDate'\n ? intl.formatDateToParts(date, formatProps)\n : intl.formatTimeToParts(date, formatProps);\n return children(formattedParts);\n };\n ComponentParts.displayName = DisplayNameParts[name];\n return ComponentParts;\n}\nexport function createFormattedComponent(name) {\n var Component = function (props) {\n var intl = useIntl();\n var value = props.value, children = props.children, formatProps = __rest(props\n // TODO: fix TS type definition for localeMatcher upstream\n , [\"value\", \"children\"]);\n // TODO: fix TS type definition for localeMatcher upstream\n var formattedValue = intl[name](value, formatProps);\n if (typeof children === 'function') {\n return children(formattedValue);\n }\n var Text = intl.textComponent || React.Fragment;\n return React.createElement(Text, null, formattedValue);\n };\n Component.displayName = DisplayName[name];\n return Component;\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\nimport { __assign, __extends, __rest, __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { Provider } from './injectIntl';\nimport { DEFAULT_INTL_CONFIG, invariantIntlContext, assignUniqueKeysToParts, shallowEqual, } from '../utils';\nimport { formatMessage as coreFormatMessage, createIntl as coreCreateIntl, createIntlCache, } from '@formatjs/intl';\nimport { isFormatXMLElementFn, } from 'intl-messageformat';\nfunction processIntlConfig(config) {\n return {\n locale: config.locale,\n timeZone: config.timeZone,\n fallbackOnEmptyString: config.fallbackOnEmptyString,\n formats: config.formats,\n textComponent: config.textComponent,\n messages: config.messages,\n defaultLocale: config.defaultLocale,\n defaultFormats: config.defaultFormats,\n onError: config.onError,\n onWarn: config.onWarn,\n wrapRichTextChunksInFragment: config.wrapRichTextChunksInFragment,\n defaultRichTextElements: config.defaultRichTextElements,\n };\n}\nfunction assignUniqueKeysToFormatXMLElementFnArgument(values) {\n if (!values) {\n return values;\n }\n return Object.keys(values).reduce(function (acc, k) {\n var v = values[k];\n acc[k] = isFormatXMLElementFn(v)\n ? assignUniqueKeysToParts(v)\n : v;\n return acc;\n }, {});\n}\nvar formatMessage = function (config, formatters, descriptor, rawValues) {\n var rest = [];\n for (var _i = 4; _i < arguments.length; _i++) {\n rest[_i - 4] = arguments[_i];\n }\n var values = assignUniqueKeysToFormatXMLElementFnArgument(rawValues);\n var chunks = coreFormatMessage.apply(void 0, __spreadArray([config,\n formatters,\n descriptor,\n values], rest, false));\n if (Array.isArray(chunks)) {\n return React.Children.toArray(chunks);\n }\n return chunks;\n};\n/**\n * Create intl object\n * @param config intl config\n * @param cache cache for formatter instances to prevent memory leak\n */\nexport var createIntl = function (_a, cache) {\n var rawDefaultRichTextElements = _a.defaultRichTextElements, config = __rest(_a, [\"defaultRichTextElements\"]);\n var defaultRichTextElements = assignUniqueKeysToFormatXMLElementFnArgument(rawDefaultRichTextElements);\n var coreIntl = coreCreateIntl(__assign(__assign(__assign({}, DEFAULT_INTL_CONFIG), config), { defaultRichTextElements: defaultRichTextElements }), cache);\n var resolvedConfig = {\n locale: coreIntl.locale,\n timeZone: coreIntl.timeZone,\n fallbackOnEmptyString: coreIntl.fallbackOnEmptyString,\n formats: coreIntl.formats,\n defaultLocale: coreIntl.defaultLocale,\n defaultFormats: coreIntl.defaultFormats,\n messages: coreIntl.messages,\n onError: coreIntl.onError,\n defaultRichTextElements: defaultRichTextElements,\n };\n return __assign(__assign({}, coreIntl), { \n // @ts-expect-error fix this\n formatMessage: formatMessage.bind(null, resolvedConfig, coreIntl.formatters), \n // @ts-expect-error fix this\n $t: formatMessage.bind(null, resolvedConfig, coreIntl.formatters) });\n};\nvar IntlProvider = /** @class */ (function (_super) {\n __extends(IntlProvider, _super);\n function IntlProvider() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cache = createIntlCache();\n _this.state = {\n cache: _this.cache,\n intl: createIntl(processIntlConfig(_this.props), _this.cache),\n prevConfig: processIntlConfig(_this.props),\n };\n return _this;\n }\n IntlProvider.getDerivedStateFromProps = function (props, _a) {\n var prevConfig = _a.prevConfig, cache = _a.cache;\n var config = processIntlConfig(props);\n if (!shallowEqual(prevConfig, config)) {\n return {\n intl: createIntl(config, cache),\n prevConfig: config,\n };\n }\n return null;\n };\n IntlProvider.prototype.render = function () {\n invariantIntlContext(this.state.intl);\n return React.createElement(Provider, { value: this.state.intl }, this.props.children);\n };\n IntlProvider.displayName = 'IntlProvider';\n IntlProvider.defaultProps = DEFAULT_INTL_CONFIG;\n return IntlProvider;\n}(React.PureComponent));\nexport default IntlProvider;\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\nimport { __rest } from \"tslib\";\nimport * as React from 'react';\nimport useIntl from './useIntl';\nimport { shallowEqual } from '../utils';\nfunction areEqual(prevProps, nextProps) {\n var values = prevProps.values, otherProps = __rest(prevProps, [\"values\"]);\n var nextValues = nextProps.values, nextOtherProps = __rest(nextProps, [\"values\"]);\n return (shallowEqual(nextValues, values) &&\n shallowEqual(otherProps, nextOtherProps));\n}\nfunction FormattedMessage(props) {\n var intl = useIntl();\n var formatMessage = intl.formatMessage, _a = intl.textComponent, Text = _a === void 0 ? React.Fragment : _a;\n var id = props.id, description = props.description, defaultMessage = props.defaultMessage, values = props.values, children = props.children, _b = props.tagName, Component = _b === void 0 ? Text : _b, ignoreTag = props.ignoreTag;\n var descriptor = { id: id, description: description, defaultMessage: defaultMessage };\n var nodes = formatMessage(descriptor, values, {\n ignoreTag: ignoreTag,\n });\n if (typeof children === 'function') {\n return children(Array.isArray(nodes) ? nodes : [nodes]);\n }\n if (Component) {\n return React.createElement(Component, null, React.Children.toArray(nodes));\n }\n return React.createElement(React.Fragment, null, nodes);\n}\nFormattedMessage.displayName = 'FormattedMessage';\nvar MemoizedFormattedMessage = React.memo(FormattedMessage, areEqual);\nMemoizedFormattedMessage.displayName = 'MemoizedFormattedMessage';\nexport default MemoizedFormattedMessage;\n","import { createFormattedComponent, createFormattedDateTimePartsComponent, } from './src/components/createFormattedComponent';\nimport injectIntl, { Provider as RawIntlProvider, Context as IntlContext, } from './src/components/injectIntl';\nimport useIntl from './src/components/useIntl';\nimport IntlProvider, { createIntl } from './src/components/provider';\nimport FormattedRelativeTime from './src/components/relative';\nimport FormattedPlural from './src/components/plural';\nimport FormattedMessage from './src/components/message';\nimport FormattedDateTimeRange from './src/components/dateTimeRange';\nexport { FormattedDateTimeRange, FormattedMessage, FormattedPlural, FormattedRelativeTime, IntlContext, IntlProvider, RawIntlProvider, createIntl, injectIntl, useIntl, };\nexport { createIntlCache, UnsupportedFormatterError, InvalidConfigError, MissingDataError, MessageFormatError, MissingTranslationError, IntlErrorCode as ReactIntlErrorCode, IntlError as ReactIntlError, } from '@formatjs/intl';\nexport function defineMessages(msgs) {\n return msgs;\n}\nexport function defineMessage(msg) {\n return msg;\n}\n// IMPORTANT: Explicit here to prevent api-extractor from outputing `import('./src/types').CustomFormatConfig`\nexport var FormattedDate = createFormattedComponent('formatDate');\nexport var FormattedTime = createFormattedComponent('formatTime');\nexport var FormattedNumber = createFormattedComponent('formatNumber');\nexport var FormattedList = createFormattedComponent('formatList');\nexport var FormattedDisplayName = createFormattedComponent('formatDisplayName');\nexport var FormattedDateParts = createFormattedDateTimePartsComponent('formatDate');\nexport var FormattedTimeParts = createFormattedDateTimePartsComponent('formatTime');\nexport { FormattedNumberParts, FormattedListParts, } from './src/components/createFormattedComponent';\n","export const BUS_TOPIC_GLOBALLANGUAGE = 'global.language';\nexport const BUS_TOPIC_SGCONNECT_ACCESSTOKEN = 'sg-connect.access-token';\nexport const BUS_TOPIC_SGCONNECT_USERCONNECTION = 'sg-connect.user-connection';\nexport const BUS_TOPIC_SGCONNECT_USERINFO = 'sg-connect.user-info';\nexport const BUS_TOPIC_SGCONNECT_GRANTEDSCOPE = 'sg-connect.granted-scope';\n\ntype BusEventCallback = (payload: T | undefined) => void;\ntype SubscriptionHandle = any;\n\nexport interface SgWidgetsBus {\n dangerouslyGetCurrentValue(topicName: string): T | undefined;\n subscribe(topicName: string, cb: BusEventCallback): SubscriptionHandle;\n unsubscribe(handle: SubscriptionHandle): void;\n}\n\nexport function getWidgetBus(): SgWidgetsBus | null {\n const widgetConfiguration = (window as any).SGWTWidgetConfiguration;\n return widgetConfiguration && widgetConfiguration.bus ? widgetConfiguration.bus : null;\n}\n\nexport function getWidget(tagName: string) {\n return document.querySelector(tagName) as T;\n}\n\nexport function getAuthorizationHeader(): string | undefined {\n const bus = getWidgetBus();\n if (bus) {\n return bus.dangerouslyGetCurrentValue(BUS_TOPIC_SGCONNECT_ACCESSTOKEN);\n }\n return undefined;\n}\n","import { makeValuesPredicate } from '@sgme/fp';\nimport { logger } from 'logging/logger';\nimport { type ReactNode, useEffect, useState } from 'react';\nimport { IntlProvider as ReactIntlProvider } from 'react-intl';\nimport { BUS_TOPIC_GLOBALLANGUAGE, getWidgetBus } from './helpers';\n\nconst supportedLocales = ['en', 'fr'] as const;\ntype SupportedLocale = (typeof supportedLocales)[number];\n\nexport const langKey = 'sgmeFxLang';\n\nconst isSupportedLocale = makeValuesPredicate(supportedLocales);\n\ninterface IntlProviderProps {\n locale: string;\n globalMessagesMap: Record>;\n children: ReactNode;\n}\n\nexport function IntlProvider({ locale, globalMessagesMap, children }: IntlProviderProps) {\n const [currentLocale, setCurrentLocale] = useState(\n isSupportedLocale(locale) ? locale : 'en',\n );\n\n // Use the SGWT Widgets bus to be aware of the modification of the language,\n // which is triggered by the widget.\n useEffect(() => {\n const bus = getWidgetBus();\n if (bus) {\n const languageSubscription = bus.subscribe(BUS_TOPIC_GLOBALLANGUAGE, lang => {\n if (lang && supportedLocales.includes(lang.toLowerCase() as SupportedLocale)) {\n setCurrentLocale(lang.toLowerCase() as SupportedLocale);\n document.querySelector('html')!.lang = lang;\n if (localStorage) {\n try {\n localStorage.setItem(langKey, lang);\n } catch {\n logger.logError('Unable to store language, localStorage might be full');\n }\n }\n }\n });\n return () => {\n bus.unsubscribe(languageSubscription);\n };\n }\n }, []);\n\n return (\n \n {children}\n \n );\n}\n","import type { ReactNode } from 'react';\nimport { IntlProvider, useIntl } from 'react-intl';\n\ntype Messages = Record;\n\nexport type MessagesMap = Record;\n\ninterface IntlComponentBoundaryProps {\n messagesMap: MessagesMap;\n children: ReactNode;\n}\n\nfunction useMessages(messagesMap: MessagesMap, locale: string): Messages {\n const { defaultLocale } = useIntl();\n const messages = messagesMap[locale];\n return locale === defaultLocale ? messages : { ...messagesMap[defaultLocale], ...messages };\n}\n\nexport function IntlComponentBoundary({\n messagesMap,\n children,\n}: IntlComponentBoundaryProps): JSX.Element {\n const { locale, messages: parentMessages } = useIntl();\n const messages = useMessages(messagesMap, locale);\n const allMessages: Messages = { ...(parentMessages as Messages), ...messages };\n return (\n \n {children}\n \n );\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import PropTypes from 'prop-types'; // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/js/src/modal.js#L436-L443\n\nexport function getScrollbarWidth() {\n var scrollDiv = document.createElement('div'); // .modal-scrollbar-measure styles // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/scss/_modal.scss#L106-L113\n\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n}\nexport function setScrollbarWidth(padding) {\n document.body.style.paddingRight = padding > 0 ? padding + \"px\" : null;\n}\nexport function isBodyOverflowing() {\n return document.body.clientWidth < window.innerWidth;\n}\nexport function getOriginalBodyPadding() {\n var style = window.getComputedStyle(document.body, null);\n return parseInt(style && style.getPropertyValue('padding-right') || 0, 10);\n}\nexport function conditionallyUpdateScrollbar() {\n var scrollbarWidth = getScrollbarWidth(); // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.6/js/src/modal.js#L433\n\n var fixedContent = document.querySelectorAll('.fixed-top, .fixed-bottom, .is-fixed, .sticky-top')[0];\n var bodyPadding = fixedContent ? parseInt(fixedContent.style.paddingRight || 0, 10) : 0;\n\n if (isBodyOverflowing()) {\n setScrollbarWidth(bodyPadding + scrollbarWidth);\n }\n}\nvar globalCssModule;\nexport function setGlobalCssModule(cssModule) {\n globalCssModule = cssModule;\n}\nexport function mapToCssModules(className, cssModule) {\n if (className === void 0) {\n className = '';\n }\n\n if (cssModule === void 0) {\n cssModule = globalCssModule;\n }\n\n if (!cssModule) return className;\n return className.split(' ').map(function (c) {\n return cssModule[c] || c;\n }).join(' ');\n}\n/**\n * Returns a new object with the key/value pairs from `obj` that are not in the array `omitKeys`.\n */\n\nexport function omit(obj, omitKeys) {\n var result = {};\n Object.keys(obj).forEach(function (key) {\n if (omitKeys.indexOf(key) === -1) {\n result[key] = obj[key];\n }\n });\n return result;\n}\n/**\n * Returns a filtered copy of an object with only the specified keys.\n */\n\nexport function pick(obj, keys) {\n var pickKeys = Array.isArray(keys) ? keys : [keys];\n var length = pickKeys.length;\n var key;\n var result = {};\n\n while (length > 0) {\n length -= 1;\n key = pickKeys[length];\n result[key] = obj[key];\n }\n\n return result;\n}\nvar warned = {};\nexport function warnOnce(message) {\n if (!warned[message]) {\n /* istanbul ignore else */\n if (typeof console !== 'undefined') {\n console.error(message); // eslint-disable-line no-console\n }\n\n warned[message] = true;\n }\n}\nexport function deprecated(propType, explanation) {\n return function validate(props, propName, componentName) {\n if (props[propName] !== null && typeof props[propName] !== 'undefined') {\n warnOnce(\"\\\"\" + propName + \"\\\" property of \\\"\" + componentName + \"\\\" has been deprecated.\\n\" + explanation);\n }\n\n for (var _len = arguments.length, rest = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n rest[_key - 3] = arguments[_key];\n }\n\n return propType.apply(void 0, [props, propName, componentName].concat(rest));\n };\n} // Shim Element if needed (e.g. in Node environment)\n\nvar Element = typeof window === 'object' && window.Element || function () {};\n\nexport function DOMElement(props, propName, componentName) {\n if (!(props[propName] instanceof Element)) {\n return new Error('Invalid prop `' + propName + '` supplied to `' + componentName + '`. Expected prop to be an instance of Element. Validation failed.');\n }\n}\nexport var targetPropType = PropTypes.oneOfType([PropTypes.string, PropTypes.func, DOMElement, PropTypes.shape({\n current: PropTypes.any\n})]);\nexport var tagPropType = PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.shape({\n $$typeof: PropTypes.symbol,\n render: PropTypes.func\n}), PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.shape({\n $$typeof: PropTypes.symbol,\n render: PropTypes.func\n})]))]);\n/* eslint key-spacing: [\"error\", { afterColon: true, align: \"value\" }] */\n// These are all setup to match what is in the bootstrap _variables.scss\n// https://github.com/twbs/bootstrap/blob/v4-dev/scss/_variables.scss\n\nexport var TransitionTimeouts = {\n Fade: 150,\n // $transition-fade\n Collapse: 350,\n // $transition-collapse\n Modal: 300,\n // $modal-transition\n Carousel: 600 // $carousel-transition\n\n}; // Duplicated Transition.propType keys to ensure that Reactstrap builds\n// for distribution properly exclude these keys for nested child HTML attributes\n// since `react-transition-group` removes propTypes in production builds.\n\nexport var TransitionPropTypeKeys = ['in', 'mountOnEnter', 'unmountOnExit', 'appear', 'enter', 'exit', 'timeout', 'onEnter', 'onEntering', 'onEntered', 'onExit', 'onExiting', 'onExited'];\nexport var TransitionStatuses = {\n ENTERING: 'entering',\n ENTERED: 'entered',\n EXITING: 'exiting',\n EXITED: 'exited'\n};\nexport var keyCodes = {\n esc: 27,\n space: 32,\n enter: 13,\n tab: 9,\n up: 38,\n down: 40,\n home: 36,\n end: 35,\n n: 78,\n p: 80\n};\nexport var PopperPlacements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\nexport var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexport function isReactRefObj(target) {\n if (target && typeof target === 'object') {\n return 'current' in target;\n }\n\n return false;\n}\n\nfunction getTag(value) {\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n\n return Object.prototype.toString.call(value);\n}\n\nexport function toNumber(value) {\n var type = typeof value;\n var NAN = 0 / 0;\n\n if (type === 'number') {\n return value;\n }\n\n if (type === 'symbol' || type === 'object' && getTag(value) === '[object Symbol]') {\n return NAN;\n }\n\n if (isObject(value)) {\n var other = typeof value.valueOf === 'function' ? value.valueOf() : value;\n value = isObject(other) ? \"\" + other : other;\n }\n\n if (type !== 'string') {\n return value === 0 ? value : +value;\n }\n\n value = value.replace(/^\\s+|\\s+$/g, '');\n var isBinary = /^0b[01]+$/i.test(value);\n return isBinary || /^0o[0-7]+$/i.test(value) ? parseInt(value.slice(2), isBinary ? 2 : 8) : /^[-+]0x[0-9a-f]+$/i.test(value) ? NAN : +value;\n}\nexport function isObject(value) {\n var type = typeof value;\n return value != null && (type === 'object' || type === 'function');\n}\nexport function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n\n var tag = getTag(value);\n return tag === '[object Function]' || tag === '[object AsyncFunction]' || tag === '[object GeneratorFunction]' || tag === '[object Proxy]';\n}\nexport function findDOMElements(target) {\n if (isReactRefObj(target)) {\n return target.current;\n }\n\n if (isFunction(target)) {\n return target();\n }\n\n if (typeof target === 'string' && canUseDOM) {\n var selection = document.querySelectorAll(target);\n\n if (!selection.length) {\n selection = document.querySelectorAll(\"#\" + target);\n }\n\n if (!selection.length) {\n throw new Error(\"The target '\" + target + \"' could not be identified in the dom, tip: check spelling\");\n }\n\n return selection;\n }\n\n return target;\n}\nexport function isArrayOrNodeList(els) {\n if (els === null) {\n return false;\n }\n\n return Array.isArray(els) || canUseDOM && typeof els.length === 'number';\n}\nexport function getTarget(target, allElements) {\n var els = findDOMElements(target);\n\n if (allElements) {\n if (isArrayOrNodeList(els)) {\n return els;\n }\n\n if (els === null) {\n return [];\n }\n\n return [els];\n } else {\n if (isArrayOrNodeList(els)) {\n return els[0];\n }\n\n return els;\n }\n}\nexport var defaultToggleEvents = ['touchstart', 'click'];\nexport function addMultipleEventListeners(_els, handler, _events, useCapture) {\n var els = _els;\n\n if (!isArrayOrNodeList(els)) {\n els = [els];\n }\n\n var events = _events;\n\n if (typeof events === 'string') {\n events = events.split(/\\s+/);\n }\n\n if (!isArrayOrNodeList(els) || typeof handler !== 'function' || !Array.isArray(events)) {\n throw new Error(\"\\n The first argument of this function must be DOM node or an array on DOM nodes or NodeList.\\n The second must be a function.\\n The third is a string or an array of strings that represents DOM events\\n \");\n }\n\n Array.prototype.forEach.call(events, function (event) {\n Array.prototype.forEach.call(els, function (el) {\n el.addEventListener(event, handler, useCapture);\n });\n });\n return function removeEvents() {\n Array.prototype.forEach.call(events, function (event) {\n Array.prototype.forEach.call(els, function (el) {\n el.removeEventListener(event, handler, useCapture);\n });\n });\n };\n}\nexport var focusableElements = ['a[href]', 'area[href]', 'input:not([disabled]):not([type=hidden])', 'select:not([disabled])', 'textarea:not([disabled])', 'button:not([disabled])', 'object', 'embed', '[tabindex]:not(.modal)', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])'];","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nvar _excluded = [\"active\", \"aria-label\", \"block\", \"className\", \"close\", \"cssModule\", \"color\", \"outline\", \"size\", \"tag\", \"innerRef\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n active: PropTypes.bool,\n 'aria-label': PropTypes.string,\n block: PropTypes.bool,\n color: PropTypes.string,\n disabled: PropTypes.bool,\n outline: PropTypes.bool,\n tag: tagPropType,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n onClick: PropTypes.func,\n size: PropTypes.string,\n children: PropTypes.node,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n close: PropTypes.bool\n};\nvar defaultProps = {\n color: 'secondary',\n tag: 'button'\n};\n\nvar Button = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Button, _React$Component);\n\n function Button(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.onClick = _this.onClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = Button.prototype;\n\n _proto.onClick = function onClick(e) {\n if (this.props.disabled) {\n e.preventDefault();\n return;\n }\n\n if (this.props.onClick) {\n return this.props.onClick(e);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n active = _this$props.active,\n ariaLabel = _this$props['aria-label'],\n block = _this$props.block,\n className = _this$props.className,\n close = _this$props.close,\n cssModule = _this$props.cssModule,\n color = _this$props.color,\n outline = _this$props.outline,\n size = _this$props.size,\n Tag = _this$props.tag,\n innerRef = _this$props.innerRef,\n attributes = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n if (close && typeof attributes.children === 'undefined') {\n attributes.children = /*#__PURE__*/React.createElement(\"span\", {\n \"aria-hidden\": true\n }, \"\\xD7\");\n }\n\n var btnOutlineColor = \"btn\" + (outline ? '-outline' : '') + \"-\" + color;\n var classes = mapToCssModules(classNames(className, {\n close: close\n }, close || 'btn', close || btnOutlineColor, size ? \"btn-\" + size : false, block ? 'btn-block' : false, {\n active: active,\n disabled: this.props.disabled\n }), cssModule);\n\n if (attributes.href && Tag === 'button') {\n Tag = 'a';\n }\n\n var defaultAriaLabel = close ? 'Close' : null;\n return /*#__PURE__*/React.createElement(Tag, _extends({\n type: Tag === 'button' && attributes.onClick ? 'button' : undefined\n }, attributes, {\n className: classes,\n ref: innerRef,\n onClick: this.onClick,\n \"aria-label\": ariaLabel || defaultAriaLabel\n }));\n };\n\n return Button;\n}(React.Component);\n\nButton.propTypes = propTypes;\nButton.defaultProps = defaultProps;\nexport default Button;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _extends() {\n module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nmodule.exports = _toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\ntry {\n\tnull.error; // eslint-disable-line no-unused-expressions\n} catch (e) {\n\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\tvar errorProto = getProto(getProto(e));\n\tINTRINSICS['%Error.prototype%'] = errorProto;\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!hasPropertyDescriptors()) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar hasPropertyDescriptors = require('has-property-descriptors')();\n\nvar supportsDescriptors = origDefineProperty && hasPropertyDescriptors;\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value; // eslint-disable-line no-param-reassign\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar has;\nvar $exec;\nvar isRegexMarker;\nvar badStringifier;\n\nif (hasToStringTag) {\n\thas = callBound('Object.prototype.hasOwnProperty');\n\t$exec = callBound('RegExp.prototype.exec');\n\tisRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\tbadStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n}\n\nvar $toString = callBound('Object.prototype.toString');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar regexClass = '[object RegExp]';\n\nmodule.exports = hasToStringTag\n\t// eslint-disable-next-line consistent-return\n\t? function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar descriptor = gOPD(value, 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t$exec(value, badStringifier);\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t}\n\t: function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n","'use strict';\n\nvar functionsHaveNames = function functionsHaveNames() {\n\treturn typeof function f() {}.name === 'string';\n};\n\nvar gOPD = Object.getOwnPropertyDescriptor;\nif (gOPD) {\n\ttry {\n\t\tgOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\tgOPD = null;\n\t}\n}\n\nfunctionsHaveNames.functionsHaveConfigurableNames = function functionsHaveConfigurableNames() {\n\tif (!functionsHaveNames() || !gOPD) {\n\t\treturn false;\n\t}\n\tvar desc = gOPD(function () {}, 'name');\n\treturn !!desc && !!desc.configurable;\n};\n\nvar $bind = Function.prototype.bind;\n\nfunctionsHaveNames.boundFunctionsHaveNames = function boundFunctionsHaveNames() {\n\treturn functionsHaveNames() && typeof $bind === 'function' && function f() {}.bind().name !== '';\n};\n\nmodule.exports = functionsHaveNames;\n","'use strict';\n\nvar functionsHaveConfigurableNames = require('functions-have-names').functionsHaveConfigurableNames();\n\nvar $Object = Object;\nvar $TypeError = TypeError;\n\nmodule.exports = function flags() {\n\tif (this != null && this !== $Object(this)) {\n\t\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.hasIndices) {\n\t\tresult += 'd';\n\t}\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n};\n\nif (functionsHaveConfigurableNames && Object.defineProperty) {\n\tObject.defineProperty(module.exports, 'name', { value: 'get flags' });\n}\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar $gOPD = Object.getOwnPropertyDescriptor;\n\nmodule.exports = function getPolyfill() {\n\tif (supportsDescriptors && (/a/mig).flags === 'gim') {\n\t\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\n\t\tif (\n\t\t\tdescriptor\n\t\t\t&& typeof descriptor.get === 'function'\n\t\t\t&& typeof RegExp.prototype.dotAll === 'boolean'\n\t\t\t&& typeof RegExp.prototype.hasIndices === 'boolean'\n\t\t) {\n\t\t\t/* eslint getter-return: 0 */\n\t\t\tvar calls = '';\n\t\t\tvar o = {};\n\t\t\tObject.defineProperty(o, 'hasIndices', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'd';\n\t\t\t\t}\n\t\t\t});\n\t\t\tObject.defineProperty(o, 'sticky', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'y';\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (calls === 'dy') {\n\t\t\t\treturn descriptor.get;\n\t\t\t}\n\t\t}\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar getPolyfill = require('./polyfill');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar TypeErr = TypeError;\nvar getProto = Object.getPrototypeOf;\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar flagsBound = callBind(getPolyfill());\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n","'use strict';\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n","var objectKeys = require('object-keys');\nvar isArguments = require('is-arguments');\nvar is = require('object-is');\nvar isRegex = require('is-regex');\nvar flags = require('regexp.prototype.flags');\nvar isDate = require('is-date-object');\n\nvar getTime = Date.prototype.getTime;\n\nfunction deepEqual(actual, expected, options) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected;\n }\n\n /*\n * 7.4. For all other Object pairs, including Array objects, equivalence is\n * determined by having the same number of owned properties (as verified\n * with Object.prototype.hasOwnProperty.call), the same set of keys\n * (although not necessarily the same order), equivalent values for every\n * corresponding key, and an identical 'prototype' property. Note: this\n * accounts for both named and indexed properties on Arrays.\n */\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts);\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n /* eslint max-statements: [2, 50] */\n var i, key;\n if (typeof a !== typeof b) { return false; }\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { return false; }\n\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if (aIsRegex || bIsRegex) {\n return a.source === b.source && flags(a) === flags(b);\n }\n\n if (isDate(a) && isDate(b)) {\n return getTime.call(a) === getTime.call(b);\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n if (typeof a !== typeof b) { return false; }\n\n try {\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n } catch (e) { // happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\n // the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n // ~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) { return false; }\n }\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) { return false; }\n }\n\n return true;\n}\n\nmodule.exports = deepEqual;\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop);\n var marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overridden using the `options` argument of Popper.js.
\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","// @flow\n'use strict';\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function() {\n return global[key] = (global[key] || 0) + 1;\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _gud = require('gud');\n\nvar _gud2 = _interopRequireDefault(_gud);\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + (0, _gud2.default)() + '__';\n\n var Provider = function (_Component) {\n _inherits(Provider, _Component);\n\n function Provider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Provider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.emitter = createEventEmitter(_this.props.value), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Provider.prototype.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits = void 0;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== 'production') {\n (0, _warning2.default)((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: %s', changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n Provider.prototype.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(_react.Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = _propTypes2.default.object.isRequired, _Provider$childContex);\n\n var Consumer = function (_Component2) {\n _inherits(Consumer, _Component2);\n\n function Consumer() {\n var _temp2, _this2, _ret2;\n\n _classCallCheck(this, Consumer);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.state = {\n value: _this2.getValue()\n }, _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({ value: _this2.getValue() });\n }\n }, _temp2), _possibleConstructorReturn(_this2, _ret2);\n }\n\n Consumer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n var observedBits = this.props.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n Consumer.prototype.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n Consumer.prototype.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(_react.Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = _propTypes2.default.object, _Consumer$contextType);\n\n\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nexports.default = createReactContext;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _implementation = require('./implementation');\n\nvar _implementation2 = _interopRequireDefault(_implementation);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createContext || _implementation2.default;\nmodule.exports = exports['default'];","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport createContext from '@hypnosphi/create-react-context';\nexport var ManagerReferenceNodeContext = createContext();\nexport var ManagerReferenceNodeSetterContext = createContext();\n\nvar Manager =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Manager, _React$Component);\n\n function Manager() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"referenceNode\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setReferenceNode\", function (newReferenceNode) {\n if (newReferenceNode && _this.referenceNode !== newReferenceNode) {\n _this.referenceNode = newReferenceNode;\n\n _this.forceUpdate();\n }\n });\n\n return _this;\n }\n\n var _proto = Manager.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.referenceNode = null;\n };\n\n _proto.render = function render() {\n return React.createElement(ManagerReferenceNodeContext.Provider, {\n value: this.referenceNode\n }, React.createElement(ManagerReferenceNodeSetterContext.Provider, {\n value: this.setReferenceNode\n }, this.props.children));\n };\n\n return Manager;\n}(React.Component);\n\nexport { Manager as default };","/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nexport var unwrapArray = function unwrapArray(arg) {\n return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nexport var safeInvoke = function safeInvoke(fn) {\n if (typeof fn === \"function\") {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return fn.apply(void 0, args);\n }\n};\n/**\n * Does a shallow equality check of two objects by comparing the reference\n * equality of each value.\n */\n\nexport var shallowEqual = function shallowEqual(objA, objB) {\n var aKeys = Object.keys(objA);\n var bKeys = Object.keys(objB);\n\n if (bKeys.length !== aKeys.length) {\n return false;\n }\n\n for (var i = 0; i < bKeys.length; i++) {\n var key = aKeys[i];\n\n if (objA[key] !== objB[key]) {\n return false;\n }\n }\n\n return true;\n};\n/**\n * Sets a ref using either a ref callback or a ref object\n */\n\nexport var setRef = function setRef(ref, node) {\n // if its a function call it\n if (typeof ref === \"function\") {\n return safeInvoke(ref, node);\n } // otherwise we should treat it as a ref object\n else if (ref != null) {\n ref.current = node;\n }\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport deepEqual from \"deep-equal\";\nimport * as React from 'react';\nimport PopperJS from 'popper.js';\nimport { ManagerReferenceNodeContext } from './Manager';\nimport { unwrapArray, setRef, shallowEqual } from './utils';\nvar initialStyle = {\n position: 'absolute',\n top: 0,\n left: 0,\n opacity: 0,\n pointerEvents: 'none'\n};\nvar initialArrowStyle = {};\nexport var InnerPopper =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(InnerPopper, _React$Component);\n\n function InnerPopper() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n data: undefined,\n placement: undefined\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"popperInstance\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"popperNode\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"arrowNode\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setPopperNode\", function (popperNode) {\n if (!popperNode || _this.popperNode === popperNode) return;\n setRef(_this.props.innerRef, popperNode);\n _this.popperNode = popperNode;\n\n _this.updatePopperInstance();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setArrowNode\", function (arrowNode) {\n _this.arrowNode = arrowNode;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"updateStateModifier\", {\n enabled: true,\n order: 900,\n fn: function fn(data) {\n var placement = data.placement;\n\n _this.setState({\n data: data,\n placement: placement\n });\n\n return data;\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOptions\", function () {\n return {\n placement: _this.props.placement,\n eventsEnabled: _this.props.eventsEnabled,\n positionFixed: _this.props.positionFixed,\n modifiers: _extends({}, _this.props.modifiers, {\n arrow: _extends({}, _this.props.modifiers && _this.props.modifiers.arrow, {\n enabled: !!_this.arrowNode,\n element: _this.arrowNode\n }),\n applyStyle: {\n enabled: false\n },\n updateStateModifier: _this.updateStateModifier\n })\n };\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPopperStyle\", function () {\n return !_this.popperNode || !_this.state.data ? initialStyle : _extends({\n position: _this.state.data.offsets.popper.position\n }, _this.state.data.styles);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPopperPlacement\", function () {\n return !_this.state.data ? undefined : _this.state.placement;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getArrowStyle\", function () {\n return !_this.arrowNode || !_this.state.data ? initialArrowStyle : _this.state.data.arrowStyles;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOutOfBoundariesState\", function () {\n return _this.state.data ? _this.state.data.hide : undefined;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"destroyPopperInstance\", function () {\n if (!_this.popperInstance) return;\n\n _this.popperInstance.destroy();\n\n _this.popperInstance = null;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"updatePopperInstance\", function () {\n _this.destroyPopperInstance();\n\n var _assertThisInitialize = _assertThisInitialized(_assertThisInitialized(_this)),\n popperNode = _assertThisInitialize.popperNode;\n\n var referenceElement = _this.props.referenceElement;\n if (!referenceElement || !popperNode) return;\n _this.popperInstance = new PopperJS(referenceElement, popperNode, _this.getOptions());\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scheduleUpdate\", function () {\n if (_this.popperInstance) {\n _this.popperInstance.scheduleUpdate();\n }\n });\n\n return _this;\n }\n\n var _proto = InnerPopper.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // If the Popper.js options have changed, update the instance (destroy + create)\n if (this.props.placement !== prevProps.placement || this.props.referenceElement !== prevProps.referenceElement || this.props.positionFixed !== prevProps.positionFixed || !deepEqual(this.props.modifiers, prevProps.modifiers, {\n strict: true\n })) {\n // develop only check that modifiers isn't being updated needlessly\n if (process.env.NODE_ENV === \"development\") {\n if (this.props.modifiers !== prevProps.modifiers && this.props.modifiers != null && prevProps.modifiers != null && shallowEqual(this.props.modifiers, prevProps.modifiers)) {\n console.warn(\"'modifiers' prop reference updated even though all values appear the same.\\nConsider memoizing the 'modifiers' object to avoid needless rendering.\");\n }\n }\n\n this.updatePopperInstance();\n } else if (this.props.eventsEnabled !== prevProps.eventsEnabled && this.popperInstance) {\n this.props.eventsEnabled ? this.popperInstance.enableEventListeners() : this.popperInstance.disableEventListeners();\n } // A placement difference in state means popper determined a new placement\n // apart from the props value. By the time the popper element is rendered with\n // the new position Popper has already measured it, if the place change triggers\n // a size change it will result in a misaligned popper. So we schedule an update to be sure.\n\n\n if (prevState.placement !== this.state.placement) {\n this.scheduleUpdate();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n setRef(this.props.innerRef, null);\n this.destroyPopperInstance();\n };\n\n _proto.render = function render() {\n return unwrapArray(this.props.children)({\n ref: this.setPopperNode,\n style: this.getPopperStyle(),\n placement: this.getPopperPlacement(),\n outOfBoundaries: this.getOutOfBoundariesState(),\n scheduleUpdate: this.scheduleUpdate,\n arrowProps: {\n ref: this.setArrowNode,\n style: this.getArrowStyle()\n }\n });\n };\n\n return InnerPopper;\n}(React.Component);\n\n_defineProperty(InnerPopper, \"defaultProps\", {\n placement: 'bottom',\n eventsEnabled: true,\n referenceElement: undefined,\n positionFixed: false\n});\n\nvar placements = PopperJS.placements;\nexport { placements };\nexport default function Popper(_ref) {\n var referenceElement = _ref.referenceElement,\n props = _objectWithoutPropertiesLoose(_ref, [\"referenceElement\"]);\n\n return React.createElement(ManagerReferenceNodeContext.Consumer, null, function (referenceNode) {\n return React.createElement(InnerPopper, _extends({\n referenceElement: referenceElement !== undefined ? referenceElement : referenceNode\n }, props));\n });\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport warning from 'warning';\nimport { ManagerReferenceNodeSetterContext } from './Manager';\nimport { safeInvoke, unwrapArray, setRef } from './utils';\n\nvar InnerReference =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(InnerReference, _React$Component);\n\n function InnerReference() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"refHandler\", function (node) {\n setRef(_this.props.innerRef, node);\n safeInvoke(_this.props.setReferenceNode, node);\n });\n\n return _this;\n }\n\n var _proto = InnerReference.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n setRef(this.props.innerRef, null);\n };\n\n _proto.render = function render() {\n warning(Boolean(this.props.setReferenceNode), '`Reference` should not be used outside of a `Manager` component.');\n return unwrapArray(this.props.children)({\n ref: this.refHandler\n });\n };\n\n return InnerReference;\n}(React.Component);\n\nexport default function Reference(props) {\n return React.createElement(ManagerReferenceNodeSetterContext.Consumer, null, function (setReferenceNode) {\n return React.createElement(InnerReference, _extends({\n setReferenceNode: setReferenceNode\n }, props));\n });\n}","import React from 'react';\n/**\n * DropdownContext\n * {\n * toggle: PropTypes.func.isRequired,\n * isOpen: PropTypes.bool.isRequired,\n * direction: PropTypes.oneOf(['up', 'down', 'left', 'right']).isRequired,\n * inNavbar: PropTypes.bool.isRequired,\n * disabled: PropTypes.bool\n * }\n */\n\nexport var DropdownContext = /*#__PURE__*/React.createContext({});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"direction\", \"isOpen\", \"group\", \"size\", \"nav\", \"setActiveFromChild\", \"active\", \"addonType\", \"tag\", \"menuRole\"];\n\n/* eslint react/no-find-dom-node: 0 */\n// https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-find-dom-node.md\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Manager } from 'react-popper';\nimport classNames from 'classnames';\nimport { DropdownContext } from './DropdownContext';\nimport { mapToCssModules, omit, keyCodes, tagPropType } from './utils';\nvar propTypes = {\n a11y: PropTypes.bool,\n disabled: PropTypes.bool,\n direction: PropTypes.oneOf(['up', 'down', 'left', 'right']),\n group: PropTypes.bool,\n isOpen: PropTypes.bool,\n nav: PropTypes.bool,\n active: PropTypes.bool,\n addonType: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['prepend', 'append'])]),\n size: PropTypes.string,\n tag: tagPropType,\n toggle: PropTypes.func,\n children: PropTypes.node,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n inNavbar: PropTypes.bool,\n setActiveFromChild: PropTypes.bool,\n menuRole: PropTypes.oneOf(['listbox', 'menu'])\n};\nvar defaultProps = {\n a11y: true,\n isOpen: false,\n direction: 'down',\n nav: false,\n active: false,\n addonType: false,\n inNavbar: false,\n setActiveFromChild: false\n};\nvar preventDefaultKeys = [keyCodes.space, keyCodes.enter, keyCodes.up, keyCodes.down, keyCodes.end, keyCodes.home];\n\nvar Dropdown = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Dropdown, _React$Component);\n\n function Dropdown(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.addEvents = _this.addEvents.bind(_assertThisInitialized(_this));\n _this.handleDocumentClick = _this.handleDocumentClick.bind(_assertThisInitialized(_this));\n _this.handleKeyDown = _this.handleKeyDown.bind(_assertThisInitialized(_this));\n _this.removeEvents = _this.removeEvents.bind(_assertThisInitialized(_this));\n _this.toggle = _this.toggle.bind(_assertThisInitialized(_this));\n _this.handleMenuRef = _this.handleMenuRef.bind(_assertThisInitialized(_this));\n _this.containerRef = /*#__PURE__*/React.createRef();\n _this.menuRef = /*#__PURE__*/React.createRef();\n return _this;\n }\n\n var _proto = Dropdown.prototype;\n\n _proto.handleMenuRef = function handleMenuRef(menuRef) {\n this.menuRef.current = menuRef;\n };\n\n _proto.getContextValue = function getContextValue() {\n return {\n toggle: this.toggle,\n isOpen: this.props.isOpen,\n direction: this.props.direction === 'down' && this.props.dropup ? 'up' : this.props.direction,\n inNavbar: this.props.inNavbar,\n disabled: this.props.disabled,\n // Callback that should be called by DropdownMenu to provide a ref to\n // a HTML tag that's used for the DropdownMenu\n onMenuRef: this.handleMenuRef,\n menuRole: this.props.menuRole\n };\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.handleProps();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (this.props.isOpen !== prevProps.isOpen) {\n this.handleProps();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.removeEvents();\n };\n\n _proto.getContainer = function getContainer() {\n return this.containerRef.current;\n };\n\n _proto.getMenu = function getMenu() {\n return this.menuRef.current;\n };\n\n _proto.getMenuCtrl = function getMenuCtrl() {\n if (this._$menuCtrl) return this._$menuCtrl;\n this._$menuCtrl = this.getContainer().querySelector('[aria-expanded]');\n return this._$menuCtrl;\n };\n\n _proto.getItemType = function getItemType() {\n if (this.context.menuRole === 'listbox') {\n return 'option';\n }\n\n return 'menuitem';\n };\n\n _proto.getMenuItems = function getMenuItems() {\n // In a real menu with a child DropdownMenu, `this.getMenu()` should never\n // be null, but it is sometimes null in tests. To mitigate that, we just\n // use `this.getContainer()` as the fallback `menuContainer`.\n var menuContainer = this.getMenu() || this.getContainer();\n return [].slice.call(menuContainer.querySelectorAll(\"[role=\\\"\" + this.getItemType() + \"\\\"]\"));\n };\n\n _proto.addEvents = function addEvents() {\n var _this2 = this;\n\n ['click', 'touchstart', 'keyup'].forEach(function (event) {\n return document.addEventListener(event, _this2.handleDocumentClick, true);\n });\n };\n\n _proto.removeEvents = function removeEvents() {\n var _this3 = this;\n\n ['click', 'touchstart', 'keyup'].forEach(function (event) {\n return document.removeEventListener(event, _this3.handleDocumentClick, true);\n });\n };\n\n _proto.handleDocumentClick = function handleDocumentClick(e) {\n if (e && (e.which === 3 || e.type === 'keyup' && e.which !== keyCodes.tab)) return;\n var container = this.getContainer();\n var menu = this.getMenu();\n var clickIsInContainer = container.contains(e.target) && container !== e.target;\n var clickIsInMenu = menu && menu.contains(e.target) && menu !== e.target;\n\n if ((clickIsInContainer || clickIsInMenu) && (e.type !== 'keyup' || e.which === keyCodes.tab)) {\n return;\n }\n\n this.toggle(e);\n };\n\n _proto.handleKeyDown = function handleKeyDown(e) {\n var _this4 = this;\n\n var isTargetMenuItem = e.target.getAttribute('role') === 'menuitem' || e.target.getAttribute('role') === 'option';\n var isTargetMenuCtrl = this.getMenuCtrl() === e.target;\n var isTab = keyCodes.tab === e.which;\n\n if (/input|textarea/i.test(e.target.tagName) || isTab && !this.props.a11y || isTab && !(isTargetMenuItem || isTargetMenuCtrl)) {\n return;\n }\n\n if (preventDefaultKeys.indexOf(e.which) !== -1 || e.which >= 48 && e.which <= 90) {\n e.preventDefault();\n }\n\n if (this.props.disabled) return;\n\n if (isTargetMenuCtrl) {\n if ([keyCodes.space, keyCodes.enter, keyCodes.up, keyCodes.down].indexOf(e.which) > -1) {\n // Open the menu (if not open) and focus the first menu item\n if (!this.props.isOpen) {\n this.toggle(e);\n }\n\n setTimeout(function () {\n return _this4.getMenuItems()[0].focus();\n });\n } else if (this.props.isOpen && isTab) {\n // Focus the first menu item if tabbing from an open menu. We need this\n // for cases where the DropdownMenu sets a custom container, which may\n // not be the natural next item to tab to from the DropdownToggle.\n e.preventDefault();\n this.getMenuItems()[0].focus();\n } else if (this.props.isOpen && e.which === keyCodes.esc) {\n this.toggle(e);\n }\n }\n\n if (this.props.isOpen && isTargetMenuItem) {\n if ([keyCodes.tab, keyCodes.esc].indexOf(e.which) > -1) {\n this.toggle(e);\n this.getMenuCtrl().focus();\n } else if ([keyCodes.space, keyCodes.enter].indexOf(e.which) > -1) {\n e.target.click();\n this.getMenuCtrl().focus();\n } else if ([keyCodes.down, keyCodes.up].indexOf(e.which) > -1 || [keyCodes.n, keyCodes.p].indexOf(e.which) > -1 && e.ctrlKey) {\n var $menuitems = this.getMenuItems();\n var index = $menuitems.indexOf(e.target);\n\n if (keyCodes.up === e.which || keyCodes.p === e.which && e.ctrlKey) {\n index = index !== 0 ? index - 1 : $menuitems.length - 1;\n } else if (keyCodes.down === e.which || keyCodes.n === e.which && e.ctrlKey) {\n index = index === $menuitems.length - 1 ? 0 : index + 1;\n }\n\n $menuitems[index].focus();\n } else if (keyCodes.end === e.which) {\n var _$menuitems = this.getMenuItems();\n\n _$menuitems[_$menuitems.length - 1].focus();\n } else if (keyCodes.home === e.which) {\n var _$menuitems2 = this.getMenuItems();\n\n _$menuitems2[0].focus();\n } else if (e.which >= 48 && e.which <= 90) {\n var _$menuitems3 = this.getMenuItems();\n\n var charPressed = String.fromCharCode(e.which).toLowerCase();\n\n for (var i = 0; i < _$menuitems3.length; i += 1) {\n var firstLetter = _$menuitems3[i].textContent && _$menuitems3[i].textContent[0].toLowerCase();\n\n if (firstLetter === charPressed) {\n _$menuitems3[i].focus();\n\n break;\n }\n }\n }\n }\n };\n\n _proto.handleProps = function handleProps() {\n if (this.props.isOpen) {\n this.addEvents();\n } else {\n this.removeEvents();\n }\n };\n\n _proto.toggle = function toggle(e) {\n if (this.props.disabled) {\n return e && e.preventDefault();\n }\n\n return this.props.toggle(e);\n };\n\n _proto.render = function render() {\n var _classNames, _ref;\n\n var _omit = omit(this.props, ['toggle', 'disabled', 'inNavbar', 'a11y']),\n className = _omit.className,\n cssModule = _omit.cssModule,\n direction = _omit.direction,\n isOpen = _omit.isOpen,\n group = _omit.group,\n size = _omit.size,\n nav = _omit.nav,\n setActiveFromChild = _omit.setActiveFromChild,\n active = _omit.active,\n addonType = _omit.addonType,\n tag = _omit.tag,\n menuRole = _omit.menuRole,\n attrs = _objectWithoutPropertiesLoose(_omit, _excluded);\n\n var Tag = tag || (nav ? 'li' : 'div');\n var subItemIsActive = false;\n\n if (setActiveFromChild) {\n React.Children.map(this.props.children[1].props.children, function (dropdownItem) {\n if (dropdownItem && dropdownItem.props.active) subItemIsActive = true;\n });\n }\n\n var classes = mapToCssModules(classNames(className, direction !== 'down' && \"drop\" + direction, nav && active ? 'active' : false, setActiveFromChild && subItemIsActive ? 'active' : false, (_classNames = {}, _classNames[\"input-group-\" + addonType] = addonType, _classNames['btn-group'] = group, _classNames[\"btn-group-\" + size] = !!size, _classNames.dropdown = !group && !addonType, _classNames.show = isOpen, _classNames['nav-item'] = nav, _classNames)), cssModule);\n return /*#__PURE__*/React.createElement(DropdownContext.Provider, {\n value: this.getContextValue()\n }, /*#__PURE__*/React.createElement(Manager, null, /*#__PURE__*/React.createElement(Tag, _extends({}, attrs, (_ref = {}, _ref[typeof Tag === 'string' ? 'ref' : 'innerRef'] = this.containerRef, _ref), {\n onKeyDown: this.handleKeyDown,\n className: classes\n }))));\n };\n\n return Dropdown;\n}(React.Component);\n\nDropdown.propTypes = propTypes;\nDropdown.defaultProps = defaultProps;\nexport default Dropdown;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"divider\", \"tag\", \"header\", \"active\", \"text\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { DropdownContext } from './DropdownContext';\nimport { mapToCssModules, omit, tagPropType } from './utils';\nvar propTypes = {\n children: PropTypes.node,\n active: PropTypes.bool,\n disabled: PropTypes.bool,\n divider: PropTypes.bool,\n tag: tagPropType,\n header: PropTypes.bool,\n onClick: PropTypes.func,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n toggle: PropTypes.bool,\n text: PropTypes.bool\n};\nvar defaultProps = {\n tag: 'button',\n toggle: true\n};\n\nvar DropdownItem = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DropdownItem, _React$Component);\n\n function DropdownItem(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.onClick = _this.onClick.bind(_assertThisInitialized(_this));\n _this.getTabIndex = _this.getTabIndex.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = DropdownItem.prototype;\n\n _proto.getRole = function getRole() {\n if (this.context.menuRole === 'listbox') {\n return 'option';\n }\n\n return 'menuitem';\n };\n\n _proto.onClick = function onClick(e) {\n var _this$props = this.props,\n disabled = _this$props.disabled,\n header = _this$props.header,\n divider = _this$props.divider,\n text = _this$props.text;\n\n if (disabled || header || divider || text) {\n e.preventDefault();\n return;\n }\n\n if (this.props.onClick) {\n this.props.onClick(e);\n }\n\n if (this.props.toggle) {\n this.context.toggle(e);\n }\n };\n\n _proto.getTabIndex = function getTabIndex() {\n var _this$props2 = this.props,\n disabled = _this$props2.disabled,\n header = _this$props2.header,\n divider = _this$props2.divider,\n text = _this$props2.text;\n\n if (disabled || header || divider || text) {\n return '-1';\n }\n\n return '0';\n };\n\n _proto.render = function render() {\n var tabIndex = this.getTabIndex();\n var role = tabIndex > -1 ? this.getRole() : undefined;\n\n var _omit = omit(this.props, ['toggle']),\n className = _omit.className,\n cssModule = _omit.cssModule,\n divider = _omit.divider,\n Tag = _omit.tag,\n header = _omit.header,\n active = _omit.active,\n text = _omit.text,\n props = _objectWithoutPropertiesLoose(_omit, _excluded);\n\n var classes = mapToCssModules(classNames(className, {\n disabled: props.disabled,\n 'dropdown-item': !divider && !header && !text,\n active: active,\n 'dropdown-header': header,\n 'dropdown-divider': divider,\n 'dropdown-item-text': text\n }), cssModule);\n\n if (Tag === 'button') {\n if (header) {\n Tag = 'h6';\n } else if (divider) {\n Tag = 'div';\n } else if (props.href) {\n Tag = 'a';\n } else if (text) {\n Tag = 'span';\n }\n }\n\n return /*#__PURE__*/React.createElement(Tag, _extends({\n type: Tag === 'button' && (props.onClick || this.props.toggle) ? 'button' : undefined\n }, props, {\n tabIndex: tabIndex,\n role: role,\n className: classes,\n onClick: this.onClick\n }));\n };\n\n return DropdownItem;\n}(React.Component);\n\nDropdownItem.propTypes = propTypes;\nDropdownItem.defaultProps = defaultProps;\nDropdownItem.contextType = DropdownContext;\nexport default DropdownItem;","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"right\", \"tag\", \"flip\", \"modifiers\", \"persist\", \"positionFixed\", \"container\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport { Popper } from 'react-popper';\nimport { DropdownContext } from './DropdownContext';\nimport { mapToCssModules, tagPropType, targetPropType, getTarget } from './utils';\nvar propTypes = {\n tag: tagPropType,\n children: PropTypes.node.isRequired,\n right: PropTypes.bool,\n flip: PropTypes.bool,\n modifiers: PropTypes.object,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n persist: PropTypes.bool,\n positionFixed: PropTypes.bool,\n container: targetPropType\n};\nvar defaultProps = {\n tag: 'div',\n flip: true\n};\nvar noFlipModifier = {\n flip: {\n enabled: false\n }\n};\nvar directionPositionMap = {\n up: 'top',\n left: 'left',\n right: 'right',\n down: 'bottom'\n};\n\nvar DropdownMenu = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DropdownMenu, _React$Component);\n\n function DropdownMenu() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = DropdownMenu.prototype;\n\n _proto.getRole = function getRole() {\n if (this.context.menuRole === 'listbox') {\n return 'listbox';\n }\n\n return 'menu';\n };\n\n _proto.render = function render() {\n var _this = this;\n\n var _this$props = this.props,\n className = _this$props.className,\n cssModule = _this$props.cssModule,\n right = _this$props.right,\n tag = _this$props.tag,\n flip = _this$props.flip,\n modifiers = _this$props.modifiers,\n persist = _this$props.persist,\n positionFixed = _this$props.positionFixed,\n container = _this$props.container,\n attrs = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'dropdown-menu', {\n 'dropdown-menu-right': right,\n show: this.context.isOpen\n }), cssModule);\n var Tag = tag;\n\n if (persist || this.context.isOpen && !this.context.inNavbar) {\n var position1 = directionPositionMap[this.context.direction] || 'bottom';\n var position2 = right ? 'end' : 'start';\n var poperPlacement = position1 + \"-\" + position2;\n var poperModifiers = !flip ? _objectSpread(_objectSpread({}, modifiers), noFlipModifier) : modifiers;\n var popperPositionFixed = !!positionFixed;\n var popper = /*#__PURE__*/React.createElement(Popper, {\n placement: poperPlacement,\n modifiers: poperModifiers,\n positionFixed: popperPositionFixed\n }, function (_ref) {\n var ref = _ref.ref,\n style = _ref.style,\n placement = _ref.placement;\n\n var combinedStyle = _objectSpread(_objectSpread({}, _this.props.style), style);\n\n var handleRef = function handleRef(tagRef) {\n // Send the ref to `react-popper`\n ref(tagRef); // Send the ref to the parent Dropdown so that clicks outside\n // it will cause it to close\n\n var onMenuRef = _this.context.onMenuRef;\n if (onMenuRef) onMenuRef(tagRef);\n };\n\n return /*#__PURE__*/React.createElement(Tag, _extends({\n tabIndex: \"-1\",\n role: _this.getRole(),\n ref: handleRef\n }, attrs, {\n style: combinedStyle,\n \"aria-hidden\": !_this.context.isOpen,\n className: classes,\n \"x-placement\": placement\n }));\n });\n\n if (container) {\n return /*#__PURE__*/ReactDOM.createPortal(popper, getTarget(container));\n } else {\n return popper;\n }\n }\n\n return /*#__PURE__*/React.createElement(Tag, _extends({\n tabIndex: \"-1\",\n role: this.getRole()\n }, attrs, {\n \"aria-hidden\": !this.context.isOpen,\n className: classes,\n \"x-placement\": attrs.placement\n }));\n };\n\n return DropdownMenu;\n}(React.Component);\n\n;\nDropdownMenu.propTypes = propTypes;\nDropdownMenu.defaultProps = defaultProps;\nDropdownMenu.contextType = DropdownContext;\nexport default DropdownMenu;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nvar _excluded = [\"className\", \"color\", \"cssModule\", \"caret\", \"split\", \"nav\", \"tag\", \"innerRef\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Reference } from 'react-popper';\nimport { DropdownContext } from './DropdownContext';\nimport { mapToCssModules, tagPropType } from './utils';\nimport Button from './Button';\nvar propTypes = {\n caret: PropTypes.bool,\n color: PropTypes.string,\n children: PropTypes.node,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n 'aria-haspopup': PropTypes.bool,\n split: PropTypes.bool,\n tag: tagPropType,\n nav: PropTypes.bool\n};\nvar defaultProps = {\n color: 'secondary',\n 'aria-haspopup': true\n};\n\nvar DropdownToggle = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DropdownToggle, _React$Component);\n\n function DropdownToggle(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.onClick = _this.onClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = DropdownToggle.prototype;\n\n _proto.onClick = function onClick(e) {\n if (this.props.disabled || this.context.disabled) {\n e.preventDefault();\n return;\n }\n\n if (this.props.nav && !this.props.tag) {\n e.preventDefault();\n }\n\n if (this.props.onClick) {\n this.props.onClick(e);\n }\n\n this.context.toggle(e);\n };\n\n _proto.getRole = function getRole() {\n return this.context.menuRole || this.props['aria-haspopup'];\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n className = _this$props.className,\n color = _this$props.color,\n cssModule = _this$props.cssModule,\n caret = _this$props.caret,\n split = _this$props.split,\n nav = _this$props.nav,\n tag = _this$props.tag,\n innerRef = _this$props.innerRef,\n props = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n var ariaLabel = props['aria-label'] || 'Toggle Dropdown';\n var classes = mapToCssModules(classNames(className, {\n 'dropdown-toggle': caret || split,\n 'dropdown-toggle-split': split,\n 'nav-link': nav\n }), cssModule);\n var children = typeof props.children !== 'undefined' ? props.children : /*#__PURE__*/React.createElement(\"span\", {\n className: \"sr-only\"\n }, ariaLabel);\n var Tag;\n\n if (nav && !tag) {\n Tag = 'a';\n props.href = '#';\n } else if (!tag) {\n Tag = Button;\n props.color = color;\n props.cssModule = cssModule;\n } else {\n Tag = tag;\n }\n\n if (this.context.inNavbar) {\n return /*#__PURE__*/React.createElement(Tag, _extends({}, props, {\n className: classes,\n onClick: this.onClick,\n \"aria-expanded\": this.context.isOpen,\n \"aria-haspopup\": this.getRole(),\n children: children\n }));\n }\n\n return /*#__PURE__*/React.createElement(Reference, {\n innerRef: innerRef\n }, function (_ref) {\n var _ref2;\n\n var ref = _ref.ref;\n return /*#__PURE__*/React.createElement(Tag, _extends({}, props, (_ref2 = {}, _ref2[typeof Tag === 'string' ? 'ref' : 'innerRef'] = ref, _ref2), {\n className: classes,\n onClick: _this2.onClick,\n \"aria-expanded\": _this2.context.isOpen,\n \"aria-haspopup\": _this2.getRole(),\n children: children\n }));\n });\n };\n\n return DropdownToggle;\n}(React.Component);\n\nDropdownToggle.propTypes = propTypes;\nDropdownToggle.defaultProps = defaultProps;\nDropdownToggle.contextType = DropdownContext;\nexport default DropdownToggle;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = _react.default.createContext(null);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nvar _TransitionGroupContext = _interopRequireDefault(require(\"./TransitionGroupContext\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n // allows for nested Transitions\n return _react.default.createElement(_TransitionGroupContext.default.Provider, {\n value: null\n }, children(status, childProps));\n }\n\n var child = _react.default.Children.only(children);\n\n return (// allows for nested Transitions\n _react.default.createElement(_TransitionGroupContext.default.Provider, {\n value: null\n }, _react.default.cloneElement(child, childProps))\n );\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextType = _TransitionGroupContext.default;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`, `'unmounted'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = _PropTypes.timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _addClass = _interopRequireDefault(require(\"dom-helpers/class/addClass\"));\n\nvar _removeClass = _interopRequireDefault(require(\"dom-helpers/class/removeClass\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _addClass.default)(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _removeClass.default)(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](http://www.nganimate.org/) library, you should use it if you're\n * using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n *
\n * {\"I'll receive my-node-* classes\"}\n *
\n *
\n * \n *
\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**.\n */\n\n\nvar CSSTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _this.onEnter = function (node, appearing) {\n var _this$getClassNames = _this.getClassNames(appearing ? 'appear' : 'enter'),\n className = _this$getClassNames.className;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, className);\n\n if (_this.props.onEnter) {\n _this.props.onEnter(node, appearing);\n }\n };\n\n _this.onEntering = function (node, appearing) {\n var _this$getClassNames2 = _this.getClassNames(appearing ? 'appear' : 'enter'),\n activeClassName = _this$getClassNames2.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onEntering) {\n _this.props.onEntering(node, appearing);\n }\n };\n\n _this.onEntered = function (node, appearing) {\n var appearClassName = _this.getClassNames('appear').doneClassName;\n\n var enterClassName = _this.getClassNames('enter').doneClassName;\n\n var doneClassName = appearing ? appearClassName + \" \" + enterClassName : enterClassName;\n\n _this.removeClasses(node, appearing ? 'appear' : 'enter');\n\n addClass(node, doneClassName);\n\n if (_this.props.onEntered) {\n _this.props.onEntered(node, appearing);\n }\n };\n\n _this.onExit = function (node) {\n var _this$getClassNames3 = _this.getClassNames('exit'),\n className = _this$getClassNames3.className;\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n addClass(node, className);\n\n if (_this.props.onExit) {\n _this.props.onExit(node);\n }\n };\n\n _this.onExiting = function (node) {\n var _this$getClassNames4 = _this.getClassNames('exit'),\n activeClassName = _this$getClassNames4.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onExiting) {\n _this.props.onExiting(node);\n }\n };\n\n _this.onExited = function (node) {\n var _this$getClassNames5 = _this.getClassNames('exit'),\n doneClassName = _this$getClassNames5.doneClassName;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, doneClassName);\n\n if (_this.props.onExited) {\n _this.props.onExited(node);\n }\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + '-' : '';\n var className = isStringClassNames ? prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? className + '-active' : classNames[type + 'Active'];\n var doneClassName = isStringClassNames ? className + '-done' : classNames[type + 'Done'];\n return {\n className: className,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$getClassNames6 = this.getClassNames(type),\n className = _this$getClassNames6.className,\n activeClassName = _this$getClassNames6.activeClassName,\n doneClassName = _this$getClassNames6.doneClassName;\n\n className && removeClass(node, className);\n activeClassName && removeClass(node, activeClassName);\n doneClassName && removeClass(node, doneClassName);\n };\n\n _proto.reflowAndAddClass = function reflowAndAddClass(node, className) {\n // This is for to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n if (className) {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n /* eslint-enable no-unused-expressions */\n\n addClass(node, className);\n }\n };\n\n _proto.render = function render() {\n var props = _extends({}, this.props);\n\n delete props.classNames;\n return _react.default.createElement(_Transition.default, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(_react.default.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, _Transition.default.propTypes, {\n /**\n * The animation classNames applied to the component as it enters, exits or\n * has finished the transition. A single name can be provided and it will be\n * suffixed for each stage: e.g.\n *\n * `classNames=\"fade\"` applies `fade-enter`, `fade-enter-active`,\n * `fade-enter-done`, `fade-exit`, `fade-exit-active`, `fade-exit-done`,\n * `fade-appear`, `fade-appear-active`, and `fade-appear-done`.\n *\n * **Note**: `fade-appear-done` and `fade-enter-done` will _both_ be applied.\n * This allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply an\n * epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: _PropTypes.classNamesShape,\n\n /**\n * A `` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' class is\n * applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit-active' is applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nvar _default = CSSTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\nexports.getInitialChildMapping = getInitialChildMapping;\nexports.getNextChildMapping = getNextChildMapping;\n\nvar _react = require(\"react\");\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\nfunction getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && (0, _react.isValidElement)(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) _react.Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\n\nfunction mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nfunction getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\n\nfunction getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!(0, _react.isValidElement)(child)) return;\n var hasPrev = key in prevChildMapping;\n var hasNext = key in nextChildMapping;\n var prevChild = prevChildMapping[key];\n var isLeaving = (0, _react.isValidElement)(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = (0, _react.cloneElement)(child, {\n in: false\n });\n } else if (hasNext && hasPrev && (0, _react.isValidElement)(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _TransitionGroupContext = _interopRequireDefault(require(\"./TransitionGroupContext\"));\n\nvar _ChildMapping = require(\"./utils/ChildMapping\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n /**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\n};\n\nvar TransitionGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? (0, _ChildMapping.getInitialChildMapping)(nextProps, handleExited) : (0, _ChildMapping.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n };\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return _react.default.createElement(_TransitionGroupContext.default.Provider, {\n value: contextValue\n }, children);\n }\n\n return _react.default.createElement(_TransitionGroupContext.default.Provider, {\n value: contextValue\n }, _react.default.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(_react.default.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: _propTypes.default.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: _propTypes.default.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: _propTypes.default.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: _propTypes.default.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(TransitionGroup);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = require(\"react-dom\");\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * The `` component is a specialized `Transition` component\n * that animates between two children.\n *\n * ```jsx\n * \n *
I appear first
\n *
I replace the above
\n *
\n * ```\n */\nvar ReplaceTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ReplaceTransition, _React$Component);\n\n function ReplaceTransition() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n\n _this.handleEnter = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _this.handleLifecycle('onEnter', 0, args);\n };\n\n _this.handleEntering = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return _this.handleLifecycle('onEntering', 0, args);\n };\n\n _this.handleEntered = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return _this.handleLifecycle('onEntered', 0, args);\n };\n\n _this.handleExit = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n return _this.handleLifecycle('onExit', 1, args);\n };\n\n _this.handleExiting = function () {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n return _this.handleLifecycle('onExiting', 1, args);\n };\n\n _this.handleExited = function () {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n return _this.handleLifecycle('onExited', 1, args);\n };\n\n return _this;\n }\n\n var _proto = ReplaceTransition.prototype;\n\n _proto.handleLifecycle = function handleLifecycle(handler, idx, originalArgs) {\n var _child$props;\n\n var children = this.props.children;\n\n var child = _react.default.Children.toArray(children)[idx];\n\n if (child.props[handler]) (_child$props = child.props)[handler].apply(_child$props, originalArgs);\n if (this.props[handler]) this.props[handler]((0, _reactDom.findDOMNode)(this));\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n inProp = _this$props.in,\n props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\"]);\n\n var _React$Children$toArr = _react.default.Children.toArray(children),\n first = _React$Children$toArr[0],\n second = _React$Children$toArr[1];\n\n delete props.onEnter;\n delete props.onEntering;\n delete props.onEntered;\n delete props.onExit;\n delete props.onExiting;\n delete props.onExited;\n return _react.default.createElement(_TransitionGroup.default, props, inProp ? _react.default.cloneElement(first, {\n key: 'first',\n onEnter: this.handleEnter,\n onEntering: this.handleEntering,\n onEntered: this.handleEntered\n }) : _react.default.cloneElement(second, {\n key: 'second',\n onEnter: this.handleExit,\n onEntering: this.handleExiting,\n onEntered: this.handleExited\n }));\n };\n\n return ReplaceTransition;\n}(_react.default.Component);\n\nReplaceTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n in: _propTypes.default.bool.isRequired,\n children: function children(props, propName) {\n if (_react.default.Children.count(props[propName]) !== 2) return new Error(\"\\\"\" + propName + \"\\\" must be exactly two transition components.\");\n return null;\n }\n} : {};\nvar _default = ReplaceTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _CSSTransition = _interopRequireDefault(require(\"./CSSTransition\"));\n\nvar _ReplaceTransition = _interopRequireDefault(require(\"./ReplaceTransition\"));\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n Transition: _Transition.default,\n TransitionGroup: _TransitionGroup.default,\n ReplaceTransition: _ReplaceTransition.default,\n CSSTransition: _CSSTransition.default\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"tag\", \"baseClass\", \"baseClassActive\", \"className\", \"cssModule\", \"children\", \"innerRef\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Transition } from 'react-transition-group';\nimport { mapToCssModules, omit, pick, TransitionPropTypeKeys, TransitionTimeouts, tagPropType } from './utils';\n\nvar propTypes = _objectSpread(_objectSpread({}, Transition.propTypes), {}, {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n tag: tagPropType,\n baseClass: PropTypes.string,\n baseClassActive: PropTypes.string,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func])\n});\n\nvar defaultProps = _objectSpread(_objectSpread({}, Transition.defaultProps), {}, {\n tag: 'div',\n baseClass: 'fade',\n baseClassActive: 'show',\n timeout: TransitionTimeouts.Fade,\n appear: true,\n enter: true,\n exit: true,\n in: true\n});\n\nfunction Fade(props) {\n var Tag = props.tag,\n baseClass = props.baseClass,\n baseClassActive = props.baseClassActive,\n className = props.className,\n cssModule = props.cssModule,\n children = props.children,\n innerRef = props.innerRef,\n otherProps = _objectWithoutPropertiesLoose(props, _excluded);\n\n var transitionProps = pick(otherProps, TransitionPropTypeKeys);\n var childProps = omit(otherProps, TransitionPropTypeKeys);\n return /*#__PURE__*/React.createElement(Transition, transitionProps, function (status) {\n var isActive = status === 'entered';\n var classes = mapToCssModules(classNames(className, baseClass, isActive && baseClassActive), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({\n className: classes\n }, childProps, {\n ref: innerRef\n }), children);\n });\n}\n\nFade.propTypes = propTypes;\nFade.defaultProps = defaultProps;\nexport default Fade;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"cssModule\", \"children\", \"isOpen\", \"flip\", \"target\", \"offset\", \"fallbackPlacement\", \"placementPrefix\", \"arrowClassName\", \"hideArrow\", \"popperClassName\", \"tag\", \"container\", \"modifiers\", \"positionFixed\", \"boundariesElement\", \"onClosed\", \"fade\", \"transition\", \"placement\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport { Popper as ReactPopper } from 'react-popper';\nimport { getTarget, targetPropType, mapToCssModules, DOMElement, tagPropType } from './utils';\nimport Fade from './Fade';\n\nfunction noop() {}\n\nvar propTypes = {\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]).isRequired,\n popperClassName: PropTypes.string,\n placement: PropTypes.string,\n placementPrefix: PropTypes.string,\n arrowClassName: PropTypes.string,\n hideArrow: PropTypes.bool,\n tag: tagPropType,\n isOpen: PropTypes.bool.isRequired,\n cssModule: PropTypes.object,\n offset: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n fallbackPlacement: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n flip: PropTypes.bool,\n container: targetPropType,\n target: targetPropType.isRequired,\n modifiers: PropTypes.object,\n positionFixed: PropTypes.bool,\n boundariesElement: PropTypes.oneOfType([PropTypes.string, DOMElement]),\n onClosed: PropTypes.func,\n fade: PropTypes.bool,\n transition: PropTypes.shape(Fade.propTypes)\n};\nvar defaultProps = {\n boundariesElement: 'scrollParent',\n placement: 'auto',\n hideArrow: false,\n isOpen: false,\n offset: 0,\n fallbackPlacement: 'flip',\n flip: true,\n container: 'body',\n modifiers: {},\n onClosed: noop,\n fade: true,\n transition: _objectSpread({}, Fade.defaultProps)\n};\n\nvar PopperContent = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(PopperContent, _React$Component);\n\n function PopperContent(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.setTargetNode = _this.setTargetNode.bind(_assertThisInitialized(_this));\n _this.getTargetNode = _this.getTargetNode.bind(_assertThisInitialized(_this));\n _this.getRef = _this.getRef.bind(_assertThisInitialized(_this));\n _this.onClosed = _this.onClosed.bind(_assertThisInitialized(_this));\n _this.state = {\n isOpen: props.isOpen\n };\n return _this;\n }\n\n PopperContent.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n if (props.isOpen && !state.isOpen) {\n return {\n isOpen: props.isOpen\n };\n } else return null;\n };\n\n var _proto = PopperContent.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n if (this._element && this._element.childNodes && this._element.childNodes[0] && this._element.childNodes[0].focus) {\n this._element.childNodes[0].focus();\n }\n };\n\n _proto.setTargetNode = function setTargetNode(node) {\n this.targetNode = typeof node === 'string' ? getTarget(node) : node;\n };\n\n _proto.getTargetNode = function getTargetNode() {\n return this.targetNode;\n };\n\n _proto.getContainerNode = function getContainerNode() {\n return getTarget(this.props.container);\n };\n\n _proto.getRef = function getRef(ref) {\n this._element = ref;\n };\n\n _proto.onClosed = function onClosed() {\n this.props.onClosed();\n this.setState({\n isOpen: false\n });\n };\n\n _proto.renderChildren = function renderChildren() {\n var _this$props = this.props,\n cssModule = _this$props.cssModule,\n children = _this$props.children,\n isOpen = _this$props.isOpen,\n flip = _this$props.flip,\n target = _this$props.target,\n offset = _this$props.offset,\n fallbackPlacement = _this$props.fallbackPlacement,\n placementPrefix = _this$props.placementPrefix,\n _arrowClassName = _this$props.arrowClassName,\n hideArrow = _this$props.hideArrow,\n _popperClassName = _this$props.popperClassName,\n tag = _this$props.tag,\n container = _this$props.container,\n modifiers = _this$props.modifiers,\n positionFixed = _this$props.positionFixed,\n boundariesElement = _this$props.boundariesElement,\n onClosed = _this$props.onClosed,\n fade = _this$props.fade,\n transition = _this$props.transition,\n placement = _this$props.placement,\n attrs = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n var arrowClassName = mapToCssModules(classNames('arrow', _arrowClassName), cssModule);\n var popperClassName = mapToCssModules(classNames(_popperClassName, placementPrefix ? placementPrefix + \"-auto\" : ''), this.props.cssModule);\n\n var extendedModifiers = _objectSpread({\n offset: {\n offset: offset\n },\n flip: {\n enabled: flip,\n behavior: fallbackPlacement\n },\n preventOverflow: {\n boundariesElement: boundariesElement\n }\n }, modifiers);\n\n var popperTransition = _objectSpread(_objectSpread(_objectSpread({}, Fade.defaultProps), transition), {}, {\n baseClass: fade ? transition.baseClass : '',\n timeout: fade ? transition.timeout : 0\n });\n\n return /*#__PURE__*/React.createElement(Fade, _extends({}, popperTransition, attrs, {\n in: isOpen,\n onExited: this.onClosed,\n tag: tag\n }), /*#__PURE__*/React.createElement(ReactPopper, {\n referenceElement: this.targetNode,\n modifiers: extendedModifiers,\n placement: placement,\n positionFixed: positionFixed\n }, function (_ref) {\n var ref = _ref.ref,\n style = _ref.style,\n placement = _ref.placement,\n outOfBoundaries = _ref.outOfBoundaries,\n arrowProps = _ref.arrowProps,\n scheduleUpdate = _ref.scheduleUpdate;\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: ref,\n style: style,\n className: popperClassName,\n \"x-placement\": placement,\n \"x-out-of-boundaries\": outOfBoundaries ? 'true' : undefined\n }, typeof children === 'function' ? children({\n scheduleUpdate: scheduleUpdate\n }) : children, !hideArrow && /*#__PURE__*/React.createElement(\"span\", {\n ref: arrowProps.ref,\n className: arrowClassName,\n style: arrowProps.style\n }));\n }));\n };\n\n _proto.render = function render() {\n this.setTargetNode(this.props.target);\n\n if (this.state.isOpen) {\n return this.props.container === 'inline' ? this.renderChildren() : /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/React.createElement(\"div\", {\n ref: this.getRef\n }, this.renderChildren()), this.getContainerNode());\n }\n\n return null;\n };\n\n return PopperContent;\n}(React.Component);\n\nPopperContent.propTypes = propTypes;\nPopperContent.defaultProps = defaultProps;\nexport default PopperContent;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport PopperContent from './PopperContent';\nimport { getTarget, targetPropType, omit, PopperPlacements, mapToCssModules, DOMElement } from './utils';\nexport var propTypes = {\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n placement: PropTypes.oneOf(PopperPlacements),\n target: targetPropType.isRequired,\n container: targetPropType,\n isOpen: PropTypes.bool,\n disabled: PropTypes.bool,\n hideArrow: PropTypes.bool,\n boundariesElement: PropTypes.oneOfType([PropTypes.string, DOMElement]),\n className: PropTypes.string,\n innerClassName: PropTypes.string,\n arrowClassName: PropTypes.string,\n popperClassName: PropTypes.string,\n cssModule: PropTypes.object,\n toggle: PropTypes.func,\n autohide: PropTypes.bool,\n placementPrefix: PropTypes.string,\n delay: PropTypes.oneOfType([PropTypes.shape({\n show: PropTypes.number,\n hide: PropTypes.number\n }), PropTypes.number]),\n modifiers: PropTypes.object,\n positionFixed: PropTypes.bool,\n offset: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n innerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.object]),\n trigger: PropTypes.string,\n fade: PropTypes.bool,\n flip: PropTypes.bool\n};\nvar DEFAULT_DELAYS = {\n show: 0,\n hide: 50\n};\nvar defaultProps = {\n isOpen: false,\n hideArrow: false,\n autohide: false,\n delay: DEFAULT_DELAYS,\n toggle: function toggle() {},\n trigger: 'click',\n fade: true\n};\n\nfunction isInDOMSubtree(element, subtreeRoot) {\n return subtreeRoot && (element === subtreeRoot || subtreeRoot.contains(element));\n}\n\nfunction isInDOMSubtrees(element, subtreeRoots) {\n if (subtreeRoots === void 0) {\n subtreeRoots = [];\n }\n\n return subtreeRoots && subtreeRoots.length && subtreeRoots.filter(function (subTreeRoot) {\n return isInDOMSubtree(element, subTreeRoot);\n })[0];\n}\n\nvar TooltipPopoverWrapper = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TooltipPopoverWrapper, _React$Component);\n\n function TooltipPopoverWrapper(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this._targets = [];\n _this.currentTargetElement = null;\n _this.addTargetEvents = _this.addTargetEvents.bind(_assertThisInitialized(_this));\n _this.handleDocumentClick = _this.handleDocumentClick.bind(_assertThisInitialized(_this));\n _this.removeTargetEvents = _this.removeTargetEvents.bind(_assertThisInitialized(_this));\n _this.toggle = _this.toggle.bind(_assertThisInitialized(_this));\n _this.showWithDelay = _this.showWithDelay.bind(_assertThisInitialized(_this));\n _this.hideWithDelay = _this.hideWithDelay.bind(_assertThisInitialized(_this));\n _this.onMouseOverTooltipContent = _this.onMouseOverTooltipContent.bind(_assertThisInitialized(_this));\n _this.onMouseLeaveTooltipContent = _this.onMouseLeaveTooltipContent.bind(_assertThisInitialized(_this));\n _this.show = _this.show.bind(_assertThisInitialized(_this));\n _this.hide = _this.hide.bind(_assertThisInitialized(_this));\n _this.onEscKeyDown = _this.onEscKeyDown.bind(_assertThisInitialized(_this));\n _this.getRef = _this.getRef.bind(_assertThisInitialized(_this));\n _this.state = {\n isOpen: props.isOpen\n };\n _this._isMounted = false;\n return _this;\n }\n\n var _proto = TooltipPopoverWrapper.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n this.updateTarget();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this._isMounted = false;\n this.removeTargetEvents();\n this._targets = null;\n this.clearShowTimeout();\n this.clearHideTimeout();\n };\n\n TooltipPopoverWrapper.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n if (props.isOpen && !state.isOpen) {\n return {\n isOpen: props.isOpen\n };\n } else return null;\n };\n\n _proto.onMouseOverTooltipContent = function onMouseOverTooltipContent() {\n if (this.props.trigger.indexOf('hover') > -1 && !this.props.autohide) {\n if (this._hideTimeout) {\n this.clearHideTimeout();\n }\n\n if (this.state.isOpen && !this.props.isOpen) {\n this.toggle();\n }\n }\n };\n\n _proto.onMouseLeaveTooltipContent = function onMouseLeaveTooltipContent(e) {\n if (this.props.trigger.indexOf('hover') > -1 && !this.props.autohide) {\n if (this._showTimeout) {\n this.clearShowTimeout();\n }\n\n e.persist();\n this._hideTimeout = setTimeout(this.hide.bind(this, e), this.getDelay('hide'));\n }\n };\n\n _proto.onEscKeyDown = function onEscKeyDown(e) {\n if (e.key === 'Escape') {\n this.hide(e);\n }\n };\n\n _proto.getRef = function getRef(ref) {\n var innerRef = this.props.innerRef;\n\n if (innerRef) {\n if (typeof innerRef === 'function') {\n innerRef(ref);\n } else if (typeof innerRef === 'object') {\n innerRef.current = ref;\n }\n }\n\n this._popover = ref;\n };\n\n _proto.getDelay = function getDelay(key) {\n var delay = this.props.delay;\n\n if (typeof delay === 'object') {\n return isNaN(delay[key]) ? DEFAULT_DELAYS[key] : delay[key];\n }\n\n return delay;\n };\n\n _proto.getCurrentTarget = function getCurrentTarget(target) {\n if (!target) return null;\n\n var index = this._targets.indexOf(target);\n\n if (index >= 0) return this._targets[index];\n return this.getCurrentTarget(target.parentElement);\n };\n\n _proto.show = function show(e) {\n if (!this.props.isOpen) {\n this.clearShowTimeout();\n this.currentTargetElement = e ? e.currentTarget || this.getCurrentTarget(e.target) : null;\n\n if (e && e.composedPath && typeof e.composedPath === 'function') {\n var path = e.composedPath();\n this.currentTargetElement = path && path[0] || this.currentTargetElement;\n }\n\n this.toggle(e);\n }\n };\n\n _proto.showWithDelay = function showWithDelay(e) {\n if (this._hideTimeout) {\n this.clearHideTimeout();\n }\n\n this._showTimeout = setTimeout(this.show.bind(this, e), this.getDelay('show'));\n };\n\n _proto.hide = function hide(e) {\n if (this.props.isOpen) {\n this.clearHideTimeout();\n this.currentTargetElement = null;\n this.toggle(e);\n }\n };\n\n _proto.hideWithDelay = function hideWithDelay(e) {\n if (this._showTimeout) {\n this.clearShowTimeout();\n }\n\n this._hideTimeout = setTimeout(this.hide.bind(this, e), this.getDelay('hide'));\n };\n\n _proto.clearShowTimeout = function clearShowTimeout() {\n clearTimeout(this._showTimeout);\n this._showTimeout = undefined;\n };\n\n _proto.clearHideTimeout = function clearHideTimeout() {\n clearTimeout(this._hideTimeout);\n this._hideTimeout = undefined;\n };\n\n _proto.handleDocumentClick = function handleDocumentClick(e) {\n var triggers = this.props.trigger.split(' ');\n\n if (triggers.indexOf('legacy') > -1 && (this.props.isOpen || isInDOMSubtrees(e.target, this._targets))) {\n if (this._hideTimeout) {\n this.clearHideTimeout();\n }\n\n if (this.props.isOpen && !isInDOMSubtree(e.target, this._popover)) {\n this.hideWithDelay(e);\n } else if (!this.props.isOpen) {\n this.showWithDelay(e);\n }\n } else if (triggers.indexOf('click') > -1 && isInDOMSubtrees(e.target, this._targets)) {\n if (this._hideTimeout) {\n this.clearHideTimeout();\n }\n\n if (!this.props.isOpen) {\n this.showWithDelay(e);\n } else {\n this.hideWithDelay(e);\n }\n }\n };\n\n _proto.addEventOnTargets = function addEventOnTargets(type, handler, isBubble) {\n this._targets.forEach(function (target) {\n target.addEventListener(type, handler, isBubble);\n });\n };\n\n _proto.removeEventOnTargets = function removeEventOnTargets(type, handler, isBubble) {\n this._targets.forEach(function (target) {\n target.removeEventListener(type, handler, isBubble);\n });\n };\n\n _proto.addTargetEvents = function addTargetEvents() {\n if (this.props.trigger) {\n var triggers = this.props.trigger.split(' ');\n\n if (triggers.indexOf('manual') === -1) {\n if (triggers.indexOf('click') > -1 || triggers.indexOf('legacy') > -1) {\n document.addEventListener('click', this.handleDocumentClick, true);\n }\n\n if (this._targets && this._targets.length) {\n if (triggers.indexOf('hover') > -1) {\n this.addEventOnTargets('mouseover', this.showWithDelay, true);\n this.addEventOnTargets('mouseout', this.hideWithDelay, true);\n }\n\n if (triggers.indexOf('focus') > -1) {\n this.addEventOnTargets('focusin', this.show, true);\n this.addEventOnTargets('focusout', this.hide, true);\n }\n\n this.addEventOnTargets('keydown', this.onEscKeyDown, true);\n }\n }\n }\n };\n\n _proto.removeTargetEvents = function removeTargetEvents() {\n if (this._targets) {\n this.removeEventOnTargets('mouseover', this.showWithDelay, true);\n this.removeEventOnTargets('mouseout', this.hideWithDelay, true);\n this.removeEventOnTargets('keydown', this.onEscKeyDown, true);\n this.removeEventOnTargets('focusin', this.show, true);\n this.removeEventOnTargets('focusout', this.hide, true);\n }\n\n document.removeEventListener('click', this.handleDocumentClick, true);\n };\n\n _proto.updateTarget = function updateTarget() {\n var newTarget = getTarget(this.props.target, true);\n\n if (newTarget !== this._targets) {\n this.removeTargetEvents();\n this._targets = newTarget ? Array.from(newTarget) : [];\n this.currentTargetElement = this.currentTargetElement || this._targets[0];\n this.addTargetEvents();\n }\n };\n\n _proto.toggle = function toggle(e) {\n if (this.props.disabled || !this._isMounted) {\n return e && e.preventDefault();\n }\n\n return this.props.toggle(e);\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n if (this.props.isOpen) {\n this.updateTarget();\n }\n\n var target = this.currentTargetElement || this._targets[0];\n\n if (!target) {\n return null;\n }\n\n var _this$props = this.props,\n className = _this$props.className,\n cssModule = _this$props.cssModule,\n innerClassName = _this$props.innerClassName,\n isOpen = _this$props.isOpen,\n hideArrow = _this$props.hideArrow,\n boundariesElement = _this$props.boundariesElement,\n placement = _this$props.placement,\n placementPrefix = _this$props.placementPrefix,\n arrowClassName = _this$props.arrowClassName,\n popperClassName = _this$props.popperClassName,\n container = _this$props.container,\n modifiers = _this$props.modifiers,\n positionFixed = _this$props.positionFixed,\n offset = _this$props.offset,\n fade = _this$props.fade,\n flip = _this$props.flip,\n children = _this$props.children;\n var attributes = omit(this.props, Object.keys(propTypes));\n var popperClasses = mapToCssModules(popperClassName, cssModule);\n var classes = mapToCssModules(innerClassName, cssModule);\n return /*#__PURE__*/React.createElement(PopperContent, {\n className: className,\n target: target,\n isOpen: isOpen,\n hideArrow: hideArrow,\n boundariesElement: boundariesElement,\n placement: placement,\n placementPrefix: placementPrefix,\n arrowClassName: arrowClassName,\n popperClassName: popperClasses,\n container: container,\n modifiers: modifiers,\n positionFixed: positionFixed,\n offset: offset,\n cssModule: cssModule,\n fade: fade,\n flip: flip\n }, function (_ref) {\n var scheduleUpdate = _ref.scheduleUpdate;\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, attributes, {\n ref: _this2.getRef,\n className: classes,\n role: \"tooltip\",\n onMouseOver: _this2.onMouseOverTooltipContent,\n onMouseLeave: _this2.onMouseLeaveTooltipContent,\n onKeyDown: _this2.onEscKeyDown\n }), typeof children === 'function' ? children({\n scheduleUpdate: scheduleUpdate\n }) : children);\n });\n };\n\n return TooltipPopoverWrapper;\n}(React.Component);\n\nTooltipPopoverWrapper.propTypes = propTypes;\nTooltipPopoverWrapper.defaultProps = defaultProps;\nexport default TooltipPopoverWrapper;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport classNames from 'classnames';\nimport TooltipPopoverWrapper, { propTypes } from './TooltipPopoverWrapper';\nvar defaultProps = {\n placement: 'right',\n placementPrefix: 'bs-popover',\n trigger: 'click'\n};\n\nvar Popover = function Popover(props) {\n var popperClasses = classNames('popover', 'show', props.popperClassName);\n var classes = classNames('popover-inner', props.innerClassName);\n return /*#__PURE__*/React.createElement(TooltipPopoverWrapper, _extends({}, props, {\n popperClassName: popperClasses,\n innerClassName: classes\n }));\n};\n\nPopover.propTypes = propTypes;\nPopover.defaultProps = defaultProps;\nexport default Popover;","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { canUseDOM } from './utils';\nvar propTypes = {\n children: PropTypes.node.isRequired,\n node: PropTypes.any\n};\n\nvar Portal = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Portal, _React$Component);\n\n function Portal() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Portal.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.defaultNode) {\n document.body.removeChild(this.defaultNode);\n }\n\n this.defaultNode = null;\n };\n\n _proto.render = function render() {\n if (!canUseDOM) {\n return null;\n }\n\n if (!this.props.node && !this.defaultNode) {\n this.defaultNode = document.createElement('div');\n document.body.appendChild(this.defaultNode);\n }\n\n return /*#__PURE__*/ReactDOM.createPortal(this.props.children, this.props.node || this.defaultNode);\n };\n\n return Portal;\n}(React.Component);\n\nPortal.propTypes = propTypes;\nexport default Portal;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Portal from './Portal';\nimport Fade from './Fade';\nimport { getOriginalBodyPadding, conditionallyUpdateScrollbar, setScrollbarWidth, mapToCssModules, omit, focusableElements, TransitionTimeouts, keyCodes, targetPropType, getTarget } from './utils';\n\nfunction noop() {}\n\nvar FadePropTypes = PropTypes.shape(Fade.propTypes);\nvar propTypes = {\n isOpen: PropTypes.bool,\n autoFocus: PropTypes.bool,\n centered: PropTypes.bool,\n scrollable: PropTypes.bool,\n size: PropTypes.string,\n toggle: PropTypes.func,\n keyboard: PropTypes.bool,\n role: PropTypes.string,\n labelledBy: PropTypes.string,\n backdrop: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['static'])]),\n onEnter: PropTypes.func,\n onExit: PropTypes.func,\n onOpened: PropTypes.func,\n onClosed: PropTypes.func,\n children: PropTypes.node,\n className: PropTypes.string,\n wrapClassName: PropTypes.string,\n modalClassName: PropTypes.string,\n backdropClassName: PropTypes.string,\n contentClassName: PropTypes.string,\n external: PropTypes.node,\n fade: PropTypes.bool,\n cssModule: PropTypes.object,\n zIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n backdropTransition: FadePropTypes,\n modalTransition: FadePropTypes,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func]),\n unmountOnClose: PropTypes.bool,\n returnFocusAfterClose: PropTypes.bool,\n container: targetPropType,\n trapFocus: PropTypes.bool\n};\nvar propsToOmit = Object.keys(propTypes);\nvar defaultProps = {\n isOpen: false,\n autoFocus: true,\n centered: false,\n scrollable: false,\n role: 'dialog',\n backdrop: true,\n keyboard: true,\n zIndex: 1050,\n fade: true,\n onOpened: noop,\n onClosed: noop,\n modalTransition: {\n timeout: TransitionTimeouts.Modal\n },\n backdropTransition: {\n mountOnEnter: true,\n timeout: TransitionTimeouts.Fade // uses standard fade transition\n\n },\n unmountOnClose: true,\n returnFocusAfterClose: true,\n container: 'body',\n trapFocus: false\n};\n\nvar Modal = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Modal, _React$Component);\n\n function Modal(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this._element = null;\n _this._originalBodyPadding = null;\n _this.getFocusableChildren = _this.getFocusableChildren.bind(_assertThisInitialized(_this));\n _this.handleBackdropClick = _this.handleBackdropClick.bind(_assertThisInitialized(_this));\n _this.handleBackdropMouseDown = _this.handleBackdropMouseDown.bind(_assertThisInitialized(_this));\n _this.handleEscape = _this.handleEscape.bind(_assertThisInitialized(_this));\n _this.handleStaticBackdropAnimation = _this.handleStaticBackdropAnimation.bind(_assertThisInitialized(_this));\n _this.handleTab = _this.handleTab.bind(_assertThisInitialized(_this));\n _this.onOpened = _this.onOpened.bind(_assertThisInitialized(_this));\n _this.onClosed = _this.onClosed.bind(_assertThisInitialized(_this));\n _this.manageFocusAfterClose = _this.manageFocusAfterClose.bind(_assertThisInitialized(_this));\n _this.clearBackdropAnimationTimeout = _this.clearBackdropAnimationTimeout.bind(_assertThisInitialized(_this));\n _this.trapFocus = _this.trapFocus.bind(_assertThisInitialized(_this));\n _this.state = {\n isOpen: false,\n showStaticBackdropAnimation: false\n };\n return _this;\n }\n\n var _proto = Modal.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n var _this$props = this.props,\n isOpen = _this$props.isOpen,\n autoFocus = _this$props.autoFocus,\n onEnter = _this$props.onEnter;\n\n if (isOpen) {\n this.init();\n this.setState({\n isOpen: true\n });\n\n if (autoFocus) {\n this.setFocus();\n }\n }\n\n if (onEnter) {\n onEnter();\n } // traps focus inside the Modal, even if the browser address bar is focused\n\n\n document.addEventListener('focus', this.trapFocus, true);\n this._isMounted = true;\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (this.props.isOpen && !prevProps.isOpen) {\n this.init();\n this.setState({\n isOpen: true\n }); // let render() renders Modal Dialog first\n\n return;\n } // now Modal Dialog is rendered and we can refer this._element and this._dialog\n\n\n if (this.props.autoFocus && this.state.isOpen && !prevState.isOpen) {\n this.setFocus();\n }\n\n if (this._element && prevProps.zIndex !== this.props.zIndex) {\n this._element.style.zIndex = this.props.zIndex;\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.clearBackdropAnimationTimeout();\n\n if (this.props.onExit) {\n this.props.onExit();\n }\n\n if (this._element) {\n this.destroy();\n\n if (this.props.isOpen || this.state.isOpen) {\n this.close();\n }\n }\n\n document.removeEventListener('focus', this.trapFocus, true);\n this._isMounted = false;\n };\n\n _proto.trapFocus = function trapFocus(ev) {\n if (!this.props.trapFocus) {\n return;\n }\n\n if (!this._element) //element is not attached\n return;\n if (this._dialog && this._dialog.parentNode === ev.target) // initial focus when the Modal is opened\n return;\n if (this.modalIndex < Modal.openCount - 1) // last opened modal\n return;\n var children = this.getFocusableChildren();\n\n for (var i = 0; i < children.length; i++) {\n // focus is already inside the Modal\n if (children[i] === ev.target) return;\n }\n\n if (children.length > 0) {\n // otherwise focus the first focusable element in the Modal\n ev.preventDefault();\n ev.stopPropagation();\n children[0].focus();\n }\n };\n\n _proto.onOpened = function onOpened(node, isAppearing) {\n this.props.onOpened();\n (this.props.modalTransition.onEntered || noop)(node, isAppearing);\n };\n\n _proto.onClosed = function onClosed(node) {\n var unmountOnClose = this.props.unmountOnClose; // so all methods get called before it is unmounted\n\n this.props.onClosed();\n (this.props.modalTransition.onExited || noop)(node);\n\n if (unmountOnClose) {\n this.destroy();\n }\n\n this.close();\n\n if (this._isMounted) {\n this.setState({\n isOpen: false\n });\n }\n };\n\n _proto.setFocus = function setFocus() {\n if (this._dialog && this._dialog.parentNode && typeof this._dialog.parentNode.focus === 'function') {\n this._dialog.parentNode.focus();\n }\n };\n\n _proto.getFocusableChildren = function getFocusableChildren() {\n return this._element.querySelectorAll(focusableElements.join(', '));\n };\n\n _proto.getFocusedChild = function getFocusedChild() {\n var currentFocus;\n var focusableChildren = this.getFocusableChildren();\n\n try {\n currentFocus = document.activeElement;\n } catch (err) {\n currentFocus = focusableChildren[0];\n }\n\n return currentFocus;\n } // not mouseUp because scrollbar fires it, shouldn't close when user scrolls\n ;\n\n _proto.handleBackdropClick = function handleBackdropClick(e) {\n if (e.target === this._mouseDownElement) {\n e.stopPropagation();\n var backdrop = this._dialog ? this._dialog.parentNode : null;\n\n if (backdrop && e.target === backdrop && this.props.backdrop === 'static') {\n this.handleStaticBackdropAnimation();\n }\n\n if (!this.props.isOpen || this.props.backdrop !== true) return;\n\n if (backdrop && e.target === backdrop && this.props.toggle) {\n this.props.toggle(e);\n }\n }\n };\n\n _proto.handleTab = function handleTab(e) {\n if (e.which !== 9) return;\n if (this.modalIndex < Modal.openCount - 1) return; // last opened modal\n\n var focusableChildren = this.getFocusableChildren();\n var totalFocusable = focusableChildren.length;\n if (totalFocusable === 0) return;\n var currentFocus = this.getFocusedChild();\n var focusedIndex = 0;\n\n for (var i = 0; i < totalFocusable; i += 1) {\n if (focusableChildren[i] === currentFocus) {\n focusedIndex = i;\n break;\n }\n }\n\n if (e.shiftKey && focusedIndex === 0) {\n e.preventDefault();\n focusableChildren[totalFocusable - 1].focus();\n } else if (!e.shiftKey && focusedIndex === totalFocusable - 1) {\n e.preventDefault();\n focusableChildren[0].focus();\n }\n };\n\n _proto.handleBackdropMouseDown = function handleBackdropMouseDown(e) {\n this._mouseDownElement = e.target;\n };\n\n _proto.handleEscape = function handleEscape(e) {\n if (this.props.isOpen && e.keyCode === keyCodes.esc && this.props.toggle) {\n if (this.props.keyboard) {\n e.preventDefault();\n e.stopPropagation();\n this.props.toggle(e);\n } else if (this.props.backdrop === 'static') {\n e.preventDefault();\n e.stopPropagation();\n this.handleStaticBackdropAnimation();\n }\n }\n };\n\n _proto.handleStaticBackdropAnimation = function handleStaticBackdropAnimation() {\n var _this2 = this;\n\n this.clearBackdropAnimationTimeout();\n this.setState({\n showStaticBackdropAnimation: true\n });\n this._backdropAnimationTimeout = setTimeout(function () {\n _this2.setState({\n showStaticBackdropAnimation: false\n });\n }, 100);\n };\n\n _proto.init = function init() {\n try {\n this._triggeringElement = document.activeElement;\n } catch (err) {\n this._triggeringElement = null;\n }\n\n if (!this._element) {\n this._element = document.createElement('div');\n\n this._element.setAttribute('tabindex', '-1');\n\n this._element.style.position = 'relative';\n this._element.style.zIndex = this.props.zIndex;\n this._mountContainer = getTarget(this.props.container);\n\n this._mountContainer.appendChild(this._element);\n }\n\n this._originalBodyPadding = getOriginalBodyPadding();\n conditionallyUpdateScrollbar();\n\n if (Modal.openCount === 0) {\n document.body.className = classNames(document.body.className, mapToCssModules('modal-open', this.props.cssModule));\n }\n\n this.modalIndex = Modal.openCount;\n Modal.openCount += 1;\n };\n\n _proto.destroy = function destroy() {\n if (this._element) {\n this._mountContainer.removeChild(this._element);\n\n this._element = null;\n }\n\n this.manageFocusAfterClose();\n };\n\n _proto.manageFocusAfterClose = function manageFocusAfterClose() {\n if (this._triggeringElement) {\n var returnFocusAfterClose = this.props.returnFocusAfterClose;\n if (this._triggeringElement.focus && returnFocusAfterClose) this._triggeringElement.focus();\n this._triggeringElement = null;\n }\n };\n\n _proto.close = function close() {\n if (Modal.openCount <= 1) {\n var modalOpenClassName = mapToCssModules('modal-open', this.props.cssModule); // Use regex to prevent matching `modal-open` as part of a different class, e.g. `my-modal-opened`\n\n var modalOpenClassNameRegex = new RegExp(\"(^| )\" + modalOpenClassName + \"( |$)\");\n document.body.className = document.body.className.replace(modalOpenClassNameRegex, ' ').trim();\n }\n\n this.manageFocusAfterClose();\n Modal.openCount = Math.max(0, Modal.openCount - 1);\n setScrollbarWidth(this._originalBodyPadding);\n };\n\n _proto.renderModalDialog = function renderModalDialog() {\n var _classNames,\n _this3 = this;\n\n var attributes = omit(this.props, propsToOmit);\n var dialogBaseClass = 'modal-dialog';\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, attributes, {\n className: mapToCssModules(classNames(dialogBaseClass, this.props.className, (_classNames = {}, _classNames[\"modal-\" + this.props.size] = this.props.size, _classNames[dialogBaseClass + \"-centered\"] = this.props.centered, _classNames[dialogBaseClass + \"-scrollable\"] = this.props.scrollable, _classNames)), this.props.cssModule),\n role: \"document\",\n ref: function ref(c) {\n _this3._dialog = c;\n }\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: mapToCssModules(classNames('modal-content', this.props.contentClassName), this.props.cssModule)\n }, this.props.children));\n };\n\n _proto.render = function render() {\n var unmountOnClose = this.props.unmountOnClose;\n\n if (!!this._element && (this.state.isOpen || !unmountOnClose)) {\n var isModalHidden = !!this._element && !this.state.isOpen && !unmountOnClose;\n this._element.style.display = isModalHidden ? 'none' : 'block';\n var _this$props2 = this.props,\n wrapClassName = _this$props2.wrapClassName,\n modalClassName = _this$props2.modalClassName,\n backdropClassName = _this$props2.backdropClassName,\n cssModule = _this$props2.cssModule,\n isOpen = _this$props2.isOpen,\n backdrop = _this$props2.backdrop,\n role = _this$props2.role,\n labelledBy = _this$props2.labelledBy,\n external = _this$props2.external,\n innerRef = _this$props2.innerRef;\n var modalAttributes = {\n onClick: this.handleBackdropClick,\n onMouseDown: this.handleBackdropMouseDown,\n onKeyUp: this.handleEscape,\n onKeyDown: this.handleTab,\n style: {\n display: 'block'\n },\n 'aria-labelledby': labelledBy,\n role: role,\n tabIndex: '-1'\n };\n var hasTransition = this.props.fade;\n\n var modalTransition = _objectSpread(_objectSpread(_objectSpread({}, Fade.defaultProps), this.props.modalTransition), {}, {\n baseClass: hasTransition ? this.props.modalTransition.baseClass : '',\n timeout: hasTransition ? this.props.modalTransition.timeout : 0\n });\n\n var backdropTransition = _objectSpread(_objectSpread(_objectSpread({}, Fade.defaultProps), this.props.backdropTransition), {}, {\n baseClass: hasTransition ? this.props.backdropTransition.baseClass : '',\n timeout: hasTransition ? this.props.backdropTransition.timeout : 0\n });\n\n var Backdrop = backdrop && (hasTransition ? /*#__PURE__*/React.createElement(Fade, _extends({}, backdropTransition, {\n in: isOpen && !!backdrop,\n cssModule: cssModule,\n className: mapToCssModules(classNames('modal-backdrop', backdropClassName), cssModule)\n })) : /*#__PURE__*/React.createElement(\"div\", {\n className: mapToCssModules(classNames('modal-backdrop', 'show', backdropClassName), cssModule)\n }));\n return /*#__PURE__*/React.createElement(Portal, {\n node: this._element\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: mapToCssModules(wrapClassName)\n }, /*#__PURE__*/React.createElement(Fade, _extends({}, modalAttributes, modalTransition, {\n in: isOpen,\n onEntered: this.onOpened,\n onExited: this.onClosed,\n cssModule: cssModule,\n className: mapToCssModules(classNames('modal', modalClassName, this.state.showStaticBackdropAnimation && 'modal-static'), cssModule),\n innerRef: innerRef\n }), external, this.renderModalDialog()), Backdrop));\n }\n\n return null;\n };\n\n _proto.clearBackdropAnimationTimeout = function clearBackdropAnimationTimeout() {\n if (this._backdropAnimationTimeout) {\n clearTimeout(this._backdropAnimationTimeout);\n this._backdropAnimationTimeout = undefined;\n }\n };\n\n return Modal;\n}(React.Component);\n\nModal.propTypes = propTypes;\nModal.defaultProps = defaultProps;\nModal.openCount = 0;\nexport default Modal;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"children\", \"toggle\", \"tag\", \"wrapTag\", \"closeAriaLabel\", \"charCode\", \"close\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n wrapTag: tagPropType,\n toggle: PropTypes.func,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n children: PropTypes.node,\n closeAriaLabel: PropTypes.string,\n charCode: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n close: PropTypes.object\n};\nvar defaultProps = {\n tag: 'h5',\n wrapTag: 'div',\n closeAriaLabel: 'Close',\n charCode: 215\n};\n\nvar ModalHeader = function ModalHeader(props) {\n var closeButton;\n\n var className = props.className,\n cssModule = props.cssModule,\n children = props.children,\n toggle = props.toggle,\n Tag = props.tag,\n WrapTag = props.wrapTag,\n closeAriaLabel = props.closeAriaLabel,\n charCode = props.charCode,\n close = props.close,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'modal-header'), cssModule);\n\n if (!close && toggle) {\n var closeIcon = typeof charCode === 'number' ? String.fromCharCode(charCode) : charCode;\n closeButton = /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: toggle,\n className: mapToCssModules('close', cssModule),\n \"aria-label\": closeAriaLabel\n }, /*#__PURE__*/React.createElement(\"span\", {\n \"aria-hidden\": \"true\"\n }, closeIcon));\n }\n\n return /*#__PURE__*/React.createElement(WrapTag, _extends({}, attributes, {\n className: classes\n }), /*#__PURE__*/React.createElement(Tag, {\n className: mapToCssModules('modal-title', cssModule)\n }, children), close || closeButton);\n};\n\nModalHeader.propTypes = propTypes;\nModalHeader.defaultProps = defaultProps;\nexport default ModalHeader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar ModalBody = function ModalBody(props) {\n var className = props.className,\n cssModule = props.cssModule,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'modal-body'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nModalBody.propTypes = propTypes;\nModalBody.defaultProps = defaultProps;\nexport default ModalBody;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar ModalFooter = function ModalFooter(props) {\n var className = props.className,\n cssModule = props.cssModule,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'modal-footer'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nModalFooter.propTypes = propTypes;\nModalFooter.defaultProps = defaultProps;\nexport default ModalFooter;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport classNames from 'classnames';\nimport TooltipPopoverWrapper, { propTypes } from './TooltipPopoverWrapper';\nvar defaultProps = {\n placement: 'top',\n autohide: true,\n placementPrefix: 'bs-tooltip',\n trigger: 'hover focus'\n};\n\nvar Tooltip = function Tooltip(props) {\n var popperClasses = classNames('tooltip', 'show', props.popperClassName);\n var classes = classNames('tooltip-inner', props.innerClassName);\n return /*#__PURE__*/React.createElement(TooltipPopoverWrapper, _extends({}, props, {\n popperClassName: popperClasses,\n innerClassName: classes\n }));\n};\n\nTooltip.propTypes = propTypes;\nTooltip.defaultProps = defaultProps;\nexport default Tooltip;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"tag\", \"flush\", \"horizontal\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n flush: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n horizontal: PropTypes.oneOfType([PropTypes.bool, PropTypes.string])\n};\nvar defaultProps = {\n tag: 'ul',\n horizontal: false\n};\n\nvar getHorizontalClass = function getHorizontalClass(horizontal) {\n if (horizontal === false) {\n return false;\n } else if (horizontal === true || horizontal === \"xs\") {\n return \"list-group-horizontal\";\n }\n\n return \"list-group-horizontal-\" + horizontal;\n};\n\nvar ListGroup = function ListGroup(props) {\n var className = props.className,\n cssModule = props.cssModule,\n Tag = props.tag,\n flush = props.flush,\n horizontal = props.horizontal,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'list-group', // list-group-horizontal cannot currently be mixed with list-group-flush\n // we only try to apply horizontal classes if flush is false\n flush ? 'list-group-flush' : getHorizontalClass(horizontal)), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nListGroup.propTypes = propTypes;\nListGroup.defaultProps = defaultProps;\nexport default ListGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"tag\", \"active\", \"disabled\", \"action\", \"color\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n active: PropTypes.bool,\n disabled: PropTypes.bool,\n color: PropTypes.string,\n action: PropTypes.bool,\n className: PropTypes.any,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'li'\n};\n\nvar handleDisabledOnClick = function handleDisabledOnClick(e) {\n e.preventDefault();\n};\n\nvar ListGroupItem = function ListGroupItem(props) {\n var className = props.className,\n cssModule = props.cssModule,\n Tag = props.tag,\n active = props.active,\n disabled = props.disabled,\n action = props.action,\n color = props.color,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, active ? 'active' : false, disabled ? 'disabled' : false, action ? 'list-group-item-action' : false, color ? \"list-group-item-\" + color : false, 'list-group-item'), cssModule); // Prevent click event when disabled.\n\n if (disabled) {\n attributes.onClick = handleDisabledOnClick;\n }\n\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nListGroupItem.propTypes = propTypes;\nListGroupItem.defaultProps = defaultProps;\nexport default ListGroupItem;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Dropdown from './Dropdown';\nimport { omit } from './utils';\nvar omitKeys = ['defaultOpen'];\n\nvar UncontrolledDropdown = /*#__PURE__*/function (_Component) {\n _inheritsLoose(UncontrolledDropdown, _Component);\n\n function UncontrolledDropdown(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n _this.state = {\n isOpen: props.defaultOpen || false\n };\n _this.toggle = _this.toggle.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = UncontrolledDropdown.prototype;\n\n _proto.toggle = function toggle(e) {\n var _this2 = this;\n\n var isOpen = !this.state.isOpen;\n this.setState({\n isOpen: isOpen\n }, function () {\n if (_this2.props.onToggle) {\n _this2.props.onToggle(e, isOpen);\n }\n });\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(Dropdown, _extends({\n isOpen: this.state.isOpen,\n toggle: this.toggle\n }, omit(this.props, omitKeys)));\n };\n\n return UncontrolledDropdown;\n}(Component);\n\nexport { UncontrolledDropdown as default };\nUncontrolledDropdown.propTypes = _objectSpread({\n defaultOpen: PropTypes.bool,\n onToggle: PropTypes.func\n}, Dropdown.propTypes);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from './Tooltip';\nimport { omit } from './utils';\nvar omitKeys = ['defaultOpen'];\n\nvar UncontrolledTooltip = /*#__PURE__*/function (_Component) {\n _inheritsLoose(UncontrolledTooltip, _Component);\n\n function UncontrolledTooltip(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n _this.state = {\n isOpen: props.defaultOpen || false\n };\n _this.toggle = _this.toggle.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = UncontrolledTooltip.prototype;\n\n _proto.toggle = function toggle() {\n this.setState({\n isOpen: !this.state.isOpen\n });\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(Tooltip, _extends({\n isOpen: this.state.isOpen,\n toggle: this.toggle\n }, omit(this.props, omitKeys)));\n };\n\n return UncontrolledTooltip;\n}(Component);\n\nexport { UncontrolledTooltip as default };\nUncontrolledTooltip.propTypes = _objectSpread({\n defaultOpen: PropTypes.bool\n}, Tooltip.propTypes);","import type { PredealCheck } from 'state/share/predealChecksModel';\n\nexport const GLOBAL_ERROR_AUTH_EXPIRED = 'AUTH_EXPIRED';\n\nexport type SendHelpStatus = 'sending' | 'failed' | 'success';\n\ninterface IGlobalErrorState {\n error: string | null;\n tileId: string | null;\n executionId: string | null;\n isOffline: boolean;\n}\n\nexport interface IStreamError {\n code: string | null;\n message?: string | null;\n multipassErrorCode?: string | null;\n multipassSessionId?: string | null;\n predealChecks?: readonly PredealCheck[];\n}\n\nexport interface IOrderError {\n orderId: string | null;\n message?: string | null;\n}\n\nexport type GlobalErrorState = Readonly;\n","export interface AppCrashedAction {\n type: 'APP_CRASHED';\n source: string;\n error: any;\n}\n\nexport function createAppCrashedAction(source: string, error?: any): AppCrashedAction {\n return {\n type: 'APP_CRASHED',\n source,\n error,\n };\n}\n\nexport interface UserOfflineAction {\n type: 'USER_OFFLINE';\n}\n\nexport function userOfflineAction(): UserOfflineAction {\n return {\n type: 'USER_OFFLINE',\n };\n}\n\nexport interface AuthExpired {\n type: 'AUTH_EXPIRED';\n}\n\nexport function authExpiredAction(): AuthExpired {\n return {\n type: 'AUTH_EXPIRED',\n };\n}\n\nexport interface NoClients {\n type: 'NO_CLIENTS';\n}\nexport function noClientsAction(): NoClients {\n return {\n type: 'NO_CLIENTS',\n };\n}\n\nexport interface NoProducts {\n type: 'NO_PRODUCTS';\n}\nexport function noProductsAction(): NoProducts {\n return {\n type: 'NO_PRODUCTS',\n };\n}\n\nexport type GlobalErrorAction =\n | AppCrashedAction\n | AuthExpired\n | NoClients\n | NoProducts\n | UserOfflineAction;\n","import type { LogoffReason } from './sessionModel';\n\nexport type SessionActions = NotifyDisconnection | SessionRegisterSuccess | SessionRegisterFailure;\n\nexport interface NotifyDisconnection {\n type: 'NOTIFY_DISCONNECTION';\n reason: LogoffReason;\n}\n\nexport function notifyDisconnection(reason: LogoffReason): NotifyDisconnection {\n return {\n type: 'NOTIFY_DISCONNECTION',\n reason,\n };\n}\n\nexport interface SessionRegisterSuccess {\n type: 'SESSION_REGISTER_SUCCESS';\n}\n\nexport function sessionRegisterSuccess(): SessionRegisterSuccess {\n return {\n type: 'SESSION_REGISTER_SUCCESS',\n };\n}\n\nexport interface SessionRegisterFailure {\n type: 'SESSION_REGISTER_FAILURE';\n}\n\nexport function sessionRegisterFailure(): SessionRegisterFailure {\n return {\n type: 'SESSION_REGISTER_FAILURE',\n };\n}\n","import { noop, identity } from '@sgme/fp';\nimport type { TimerKey } from './timerKey';\n\nexport const start: (key: TimerKey, domain: TimerKey) => void =\n // process.env.DEBUG === 'profiling'\n // ? await import('./Timer')._start(await import('./maps').startMap)\n // :\n noop;\n\nexport const end: (key: TimerKey, domain: TimerKey) => void =\n // process.env.DEBUG === 'profiling'\n // ? await import('./Timer')._end(await import('./maps').startMap, await import('./maps').timerMap)\n // :\n noop;\n\nexport const timer: (key: TimerKey, domain: TimerKey) => (fn: T) => T =\n // process.env.DEBUG === 'profiling'\n // ? await import('./Timer')._timer(\n // await import('./maps').startMap,\n // await import('./maps').timerMap,\n // )\n // :\n () => identity;\n\n// const interval = 10000;\n// if (process.env.DEBUG === 'profiling') {\n// // eslint-disable-next-line no-console\n// console.log('Start Debugging Timer');\n// const flush = await import('./flush')._flush(await import('./maps').timerMap);\n// setInterval(flush, interval);\n// }\n","import { timer, start, end } from '.';\n\n/**\n * Repaint\n */\nconst repaint = Symbol('Repaint');\nexport const reduxSubTimer = timer(Symbol('Redux Front Repaint'), repaint);\n\n/**\n * Redux middlewares\n */\nconst reduxMiddleware = Symbol('Redux middleware');\nexport const circuitBreakerTimer = timer(Symbol('Circuit breaker middleware'), reduxMiddleware);\nconst actionNotification = Symbol('Action notification');\nexport const actionNotificationStart = () => start(actionNotification, reduxMiddleware);\nexport const actionNotificationEnd = () => end(actionNotification, reduxMiddleware);\n\n/**\n * Redux scheduling\n */\nconst reduxEmitter = Symbol('Redux subscribe');\nexport const rafSchedulerTimer = timer(Symbol('Raf Scheduler'), reduxEmitter);\n\n/**\n * Reduction\n */\nconst redux = Symbol('Redux');\nexport const rootReducerTimer = timer(Symbol('Root Reducer'), redux);\n\n/**\n * RX\n */\nconst rxFilters = Symbol('Rx Filter');\nconst rxMaps = Symbol('Rx Map');\n/**\n * ESP\n */\nexport const filterDatastreamTimer = timer(Symbol('filter esp by ID'), rxFilters);\nexport const filterESPPriceTimer = timer(Symbol('is ESP price'), rxFilters);\nexport const mapESPActionTimer = timer(Symbol('ESP to Action'), rxMaps);\n/**\n * STREAMS\n */\nexport const deserializeDatastreamTimer = timer(Symbol('deserialize datastream'), rxMaps);\nexport const datastreamIsDataTimer = timer(Symbol('datastream is data'), rxFilters);\nexport const datastreamIsESPTimer = timer(Symbol('datastream is ESP'), rxFilters);\nexport const datastreamIsRFSTimer = timer(Symbol('datastream is RFS'), rxFilters);\nexport const convertLaddersTimer = timer(Symbol('convert ESP ladders'), rxMaps);\n","import type { Dispatch, Middleware, MiddlewareAPI, Action, ActionCreator } from 'redux';\nimport type { DispatchWithThunkExt } from 'state';\nimport { makeValuesPredicate, noop } from '@sgme/fp';\nimport { actionNotificationStart, actionNotificationEnd } from 'utils/Timer/Timers';\n\nexport type OnActionNotifierCallback = (action: any, state: S) => void;\n\ninterface IActionNotifierWhitelistMatchOrNotConfig {\n didMatch: OnActionNotifierCallback;\n didNotMatch: OnActionNotifierCallback;\n actionsList: readonly string[];\n}\n\ninterface IActionNotifierMatchAll {\n didMatch: OnActionNotifierCallback;\n}\n\ninterface IActionNotifierWhitelistMatch {\n didMatch: OnActionNotifierCallback;\n actionsList: readonly string[];\n}\n\ninterface IActionNotifierWhitelistNoMatch {\n didNotMatch: OnActionNotifierCallback;\n actionsList: readonly string[];\n}\n\nfunction configDefault(\n config: ActionNotifierConfig,\n): Partial> {\n const conf = config as IActionNotifierWhitelistMatchOrNotConfig;\n return {\n actionsList: conf.actionsList ?? undefined,\n didMatch: conf.didMatch ?? undefined,\n didNotMatch: conf.didNotMatch ?? undefined,\n };\n}\n\nexport type ActionNotifierConfig =\n | IActionNotifierWhitelistMatchOrNotConfig\n | IActionNotifierMatchAll\n | IActionNotifierWhitelistMatch\n | IActionNotifierWhitelistNoMatch;\n\nexport function actionNotifier(config: ActionNotifierConfig) {\n const { actionsList, didMatch = noop, didNotMatch = noop } = configDefault(config);\n const shouldTrigger = actionsList ? makeValuesPredicate(actionsList) : () => true;\n return ((store: MiddlewareAPI) =>\n (next: Dispatch) =>\n (action: Action) => {\n actionNotificationStart();\n if (action.type === undefined) {\n actionNotificationEnd();\n return next(action);\n }\n if (shouldTrigger(action.type)) {\n didMatch(action, store.getState());\n } else {\n didNotMatch(action, store.getState());\n }\n actionNotificationEnd();\n next(action);\n }) satisfies Middleware;\n}\n\nexport function actionCreatorTypeExtractor(actionCreator: ActionCreator>): K {\n return actionCreator().type;\n}\n","import type { ImmutableCollection } from 'typings/utils';\n\nexport function getElementById(\n collection: ImmutableCollection,\n itemId: string,\n): T | undefined {\n return collection[itemId];\n}\n\n/**\n * @deprecated use assertIsDefined instead\n * @param value Value to check if it is undefined\n * @param throwMsg Message to include in the error thrown when value is undefined\n */\nexport function throwIfUndefined(value: T | undefined, throwMsg: string): T {\n if (value === undefined) {\n throw new Error(throwMsg);\n }\n return value;\n}\n","import type { AppState } from 'state/model';\nimport type { FxExecutionState } from './executionsModel';\nimport type { IFxExecutionFillReportState, IFxExecutionState } from './executionsStateModel';\nimport { throwIfUndefined } from 'utils/maps';\nimport { isDefined } from '@sgme/fp';\n\nexport function hasExecution(state: AppState, executionId: string | undefined | null): boolean {\n return isDefined(executionId) && state.executions[executionId] !== undefined;\n}\n\nexport function getExecutionById(state: AppState, executionId: string): FxExecutionState {\n return throwIfUndefined(\n state.executions[executionId],\n `Execution state ${executionId} does not exist`,\n );\n}\n\nexport function getExecutionIdOfTradeId(state: AppState, tradeId: string): string | undefined {\n const trades = 'tradeIds';\n const executionIds = Object.keys(state.executions);\n return executionIds.find(executionId => {\n const execution = state.executions[executionId] as any;\n return execution[trades]?.includes(tradeId);\n });\n}\n\nexport function hasTradeId(execution: IFxExecutionState): execution is IFxExecutionFillReportState {\n return execution.status === 'BackOfficeValidated';\n}\n","import type { AppState } from 'state/model';\n\nexport function userCanTrade(state: AppState) {\n return state.clientWorkspace.tradingDisabled === false;\n}\n","import type { AppState } from 'state/model';\n\nexport function getGrowls(state: AppState) {\n return state.clientWorkspace.growls;\n}\n","import type { AppState } from 'state/model';\nimport type { IWorkspaceTileState } from 'state/clientWorkspace';\nimport { throwIfUndefined } from 'utils/maps';\nimport type { CollapsableKey } from '../clientWorkspaceModel';\nimport type { Instrument } from 'state/referenceData';\n\nexport function getTileState(state: AppState, tileId: string): IWorkspaceTileState {\n return throwIfUndefined(\n state.clientWorkspace.tiles[tileId],\n `State for tile ${tileId} does not exist`,\n );\n}\n\nexport function getTilesKeysByInstrument(state: AppState, instrument: Instrument): string[] {\n return Object.entries(state.clientWorkspace.tiles)\n .filter(([_key, tile]) => tile && tile.instrument === instrument)\n .map(([key, _tile]) => key);\n}\n\nexport function isTilePresent(state: AppState, tileId: string) {\n return state.clientWorkspace.tiles.hasOwnProperty(tileId);\n}\n\nexport function isKeyCollapsedInTile(state: AppState, tileId: string, keyName: CollapsableKey) {\n return !getTileState(state, tileId).expanded.includes(keyName);\n}\n\nexport function getTileOverriddenClientId(state: AppState, quoteId: string) {\n return getTileState(state, quoteId).overrideClientId;\n}\n\nexport function isTileClientIdOverridden(state: AppState, quoteId: string) {\n return getTileOverriddenClientId(state, quoteId) !== null;\n}\n","// Cache implementation based on Erik Rasmussen's `lru-memoize`:\n// https://github.com/erikras/lru-memoize\nvar NOT_FOUND = 'NOT_FOUND';\n\nfunction createSingletonCache(equals) {\n var entry;\n return {\n get: function get(key) {\n if (entry && equals(entry.key, key)) {\n return entry.value;\n }\n\n return NOT_FOUND;\n },\n put: function put(key, value) {\n entry = {\n key: key,\n value: value\n };\n },\n getEntries: function getEntries() {\n return entry ? [entry] : [];\n },\n clear: function clear() {\n entry = undefined;\n }\n };\n}\n\nfunction createLruCache(maxSize, equals) {\n var entries = [];\n\n function get(key) {\n var cacheIndex = entries.findIndex(function (entry) {\n return equals(key, entry.key);\n }); // We found a cached entry\n\n if (cacheIndex > -1) {\n var entry = entries[cacheIndex]; // Cached entry not at top of cache, move it to the top\n\n if (cacheIndex > 0) {\n entries.splice(cacheIndex, 1);\n entries.unshift(entry);\n }\n\n return entry.value;\n } // No entry found in cache, return sentinel\n\n\n return NOT_FOUND;\n }\n\n function put(key, value) {\n if (get(key) === NOT_FOUND) {\n // TODO Is unshift slow?\n entries.unshift({\n key: key,\n value: value\n });\n\n if (entries.length > maxSize) {\n entries.pop();\n }\n }\n }\n\n function getEntries() {\n return entries;\n }\n\n function clear() {\n entries = [];\n }\n\n return {\n get: get,\n put: put,\n getEntries: getEntries,\n clear: clear\n };\n}\n\nexport var defaultEqualityCheck = function defaultEqualityCheck(a, b) {\n return a === b;\n};\nexport function createCacheKeyComparator(equalityCheck) {\n return function areArgumentsShallowlyEqual(prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n } // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n\n\n var length = prev.length;\n\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n };\n}\n// defaultMemoize now supports a configurable cache size with LRU behavior,\n// and optional comparison of the result value with existing values\nexport function defaultMemoize(func, equalityCheckOrOptions) {\n var providedOptions = typeof equalityCheckOrOptions === 'object' ? equalityCheckOrOptions : {\n equalityCheck: equalityCheckOrOptions\n };\n var _providedOptions$equa = providedOptions.equalityCheck,\n equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa,\n _providedOptions$maxS = providedOptions.maxSize,\n maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS,\n resultEqualityCheck = providedOptions.resultEqualityCheck;\n var comparator = createCacheKeyComparator(equalityCheck);\n var cache = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator); // we reference arguments instead of spreading them for performance reasons\n\n function memoized() {\n var value = cache.get(arguments);\n\n if (value === NOT_FOUND) {\n // @ts-ignore\n value = func.apply(null, arguments);\n\n if (resultEqualityCheck) {\n var entries = cache.getEntries();\n var matchingEntry = entries.find(function (entry) {\n return resultEqualityCheck(entry.value, value);\n });\n\n if (matchingEntry) {\n value = matchingEntry.value;\n }\n }\n\n cache.put(arguments, value);\n }\n\n return value;\n }\n\n memoized.clearCache = function () {\n return cache.clear();\n };\n\n return memoized;\n}","import { defaultMemoize, defaultEqualityCheck } from './defaultMemoize';\nexport { defaultMemoize, defaultEqualityCheck };\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep === 'function' ? \"function \" + (dep.name || 'unnamed') + \"()\" : typeof dep;\n }).join(', ');\n throw new Error(\"createSelector expects all input-selectors to be functions, but received the following types: [\" + dependencyTypes + \"]\");\n }\n\n return dependencies;\n}\n\nexport function createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptionsFromArgs[_key - 1] = arguments[_key];\n }\n\n var createSelector = function createSelector() {\n for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var _recomputations = 0;\n\n var _lastResult; // Due to the intricacies of rest params, we can't do an optional arg after `...funcs`.\n // So, start by declaring the default value here.\n // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.)\n\n\n var directlyPassedOptions = {\n memoizeOptions: undefined\n }; // Normally, the result func or \"output selector\" is the last arg\n\n var resultFunc = funcs.pop(); // If the result func is actually an _object_, assume it's our options object\n\n if (typeof resultFunc === 'object') {\n directlyPassedOptions = resultFunc; // and pop the real result func off\n\n resultFunc = funcs.pop();\n }\n\n if (typeof resultFunc !== 'function') {\n throw new Error(\"createSelector expects an output function after the inputs, but received: [\" + typeof resultFunc + \"]\");\n } // Determine which set of options we're using. Prefer options passed directly,\n // but fall back to options given to createSelectorCreator.\n\n\n var _directlyPassedOption = directlyPassedOptions,\n _directlyPassedOption2 = _directlyPassedOption.memoizeOptions,\n memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2; // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer\n // is an array. In most libs I've looked at, it's an equality function or options object.\n // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full\n // user-provided array of options. Otherwise, it must be just the _first_ arg, and so\n // we wrap it in an array so we can apply it.\n\n var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];\n var dependencies = getDependencies(funcs);\n var memoizedResultFunc = memoize.apply(void 0, [function recomputationWrapper() {\n _recomputations++; // apply arguments instead of spreading for performance.\n\n return resultFunc.apply(null, arguments);\n }].concat(finalMemoizeOptions)); // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n\n var selector = memoize(function dependenciesChecker() {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n // @ts-ignore\n params.push(dependencies[i].apply(null, arguments));\n } // apply arguments instead of spreading for performance.\n\n\n _lastResult = memoizedResultFunc.apply(null, params);\n return _lastResult;\n });\n Object.assign(selector, {\n resultFunc: resultFunc,\n memoizedResultFunc: memoizedResultFunc,\n dependencies: dependencies,\n lastResult: function lastResult() {\n return _lastResult;\n },\n recomputations: function recomputations() {\n return _recomputations;\n },\n resetRecomputations: function resetRecomputations() {\n return _recomputations = 0;\n }\n });\n return selector;\n }; // @ts-ignore\n\n\n return createSelector;\n}\nexport var createSelector = /* #__PURE__ */createSelectorCreator(defaultMemoize);\n// Manual definition of state and output arguments\nexport var createStructuredSelector = function createStructuredSelector(selectors, selectorCreator) {\n if (selectorCreator === void 0) {\n selectorCreator = createSelector;\n }\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + (\"where each property is a selector, instead received a \" + typeof selectors));\n }\n\n var objectKeys = Object.keys(selectors);\n var resultSelector = selectorCreator( // @ts-ignore\n objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n return resultSelector;\n};","export function mapOptional(\n transformValue: (val: T) => U,\n): (val: T | null | undefined) => U | null | undefined {\n return val => (val === null ? null : val === undefined ? undefined : transformValue(val));\n}\n\nexport function mapOrDefault(\n transformValue: (val: T) => U,\n defaultValue: U,\n): (val: T | null | undefined) => U {\n return val => (val ? transformValue(val) : defaultValue);\n}\n","import { isDefined, isEmpty } from '@sgme/fp';\nimport { createSelector } from 'reselect';\nimport { getClientIdByQuoteId } from 'state/clientWorkspace/selectors/clientWorkspaceTabsSelectors';\nimport type { AppState } from 'state/model';\nimport type { ProductName } from 'state/share/productModel';\nimport { getTileCurrencyPair } from 'state/tile/selectors';\nimport { mapOrDefault } from 'utils/optional';\nimport type { Predicate } from 'utils/predicates';\nimport type { Client, CurrencyPair } from './referenceDataModel';\n\nexport function getAvailableInstruments(state: AppState) {\n return state.referenceData.instruments;\n}\n\nexport function getUserHasAccess(state: AppState) {\n return (\n !isEmpty(getAvailableInstruments(state)) && Object.keys(getAllUserClients(state)).length !== 0\n );\n}\n\nexport function getAllCcyPairs(state: AppState) {\n return state.referenceData.ccyPairs;\n}\n\nexport function getUserClientById(state: AppState, clientId: string) {\n return state.referenceData.userClients[clientId];\n}\n\nexport function getUserClientByName(\n state: AppState,\n accountName: string,\n): Readonly | undefined {\n const clients = Object.values(getAllUserClients(state));\n return clients.find(({ companyName }) => companyName.trim() === accountName.trim());\n}\n\nexport function getClient(state: AppState, clientId: string | null) {\n const getDefaultClient = createSelector(\n getAllUserClients,\n clients => clients[Object.keys(clients)[0]],\n );\n return clientId === null ? getDefaultClient(state) : getUserClientById(state, clientId);\n}\n\nexport function getCompanyIdFromClientId(state: AppState, clientId: string) {\n const { companyId } = getUserClientById(state, clientId);\n return companyId;\n}\n\nexport function getCompanyNameFromClientId(state: AppState, clientId: string) {\n const { companyName } = getUserClientById(state, clientId);\n return companyName;\n}\n\nexport function getAllUserClients(state: AppState) {\n return state.referenceData.userClients;\n}\n\nexport function getUserInfo(state: AppState) {\n return state.referenceData.userInfo;\n}\n\nexport function getUserInfoUserType(state: AppState) {\n return getUserInfo(state).userType;\n}\n\nexport function isUserInternalSales(state: AppState) {\n return getUserInfo(state).userType === 'Internal Sales';\n}\n\nexport function isUserInternalTrader(state: AppState) {\n return getUserInfo(state).userType === 'Internal Trader';\n}\n\nexport function getUserInfoCanTrade(state: AppState) {\n return getUserInfo(state).canTrade;\n}\n\nexport function getUserInfoBdrId(state: AppState) {\n return getUserInfo(state).bdrId;\n}\n\nexport function hasFxTcaAccess(state: AppState) {\n return getUserInfo(state).hasFxTcaAccess;\n}\n\nexport function isInternalUser(state: AppState) {\n return isUserInternalSales(state) || isUserInternalTrader(state);\n}\n\nexport function isDefaultTieringEnabled(state: AppState): boolean {\n return isUserInternalSales(state);\n}\n\nexport function getFeatureToggles(state: AppState) {\n return state.referenceData.featureToggles;\n}\n\nexport function getProductsAccess(state: AppState) {\n return state.referenceData.productsAccess;\n}\n\nexport function getLocalMarketCcy(state: AppState) {\n return state.referenceData.localMarketsCcy;\n}\n\nexport function isProductAuthorized(state: AppState, productName: ProductName) {\n const productsAccess = getProductsAccess(state);\n const authorization: Record = {\n FxSpot: productsAccess.spot,\n FxFwd: productsAccess.forward,\n FxNdf: productsAccess.forward && productsAccess.nonDeliverable,\n FxSwap: productsAccess.swap,\n FxNdSwap: productsAccess.swap && productsAccess.nonDeliverable,\n FxPredeliver: productsAccess.swap,\n FxRollover: productsAccess.swap,\n FxOption: productsAccess.option,\n FxOrder: productsAccess.takeProfit || productsAccess.stopLoss || productsAccess.callOrder,\n FxBulk: false,\n FxTargetAccumulator: productsAccess.targetAccu,\n FxForwardAccumulator: productsAccess.forwardAccu,\n };\n\n return authorization[productName];\n}\n\nexport function hasCashAndOptionProductAccess(state: AppState) {\n return (\n state.referenceData.productsAccess.spot === true ||\n state.referenceData.productsAccess.forward === true ||\n state.referenceData.productsAccess.swap === true ||\n state.referenceData.productsAccess.targetAccu === true ||\n state.referenceData.productsAccess.nonDeliverable === true ||\n state.referenceData.productsAccess.option === true\n );\n}\n\nexport function getCurrencyPairDetails(state: AppState, pair: string): CurrencyPair | null {\n return state.referenceData.ccyPairs[pair] ?? null;\n}\n\nexport function isCurrencyPairEspCompatible(state: AppState, currencyPair: string | null) {\n if (currencyPair === null) {\n return false;\n }\n const pairDetails = getCurrencyPairDetails(state, currencyPair);\n return isDefined(pairDetails) && !pairDetails.isInverted;\n}\n\nconst doesCurrencyPairPass = (predicate: Predicate) => {\n const optionalPredicate = mapOrDefault(predicate, false);\n return (state: AppState, currencyPair: string | null) => {\n if (currencyPair === null) {\n return false;\n }\n return optionalPredicate(getCurrencyPairDetails(state, currencyPair));\n };\n};\n\nexport function isCurrencyPairInverted(state: AppState, currencyPair: string | null) {\n return doesCurrencyPairPass(pair => pair.isInverted)(state, currencyPair);\n}\n\nexport function isCurrencyPairNeverDeliverable(state: AppState, currencyPair: string | null) {\n return doesCurrencyPairPass(pair => !pair.canBeDelivered && !pair.isCashDeliverable)(\n state,\n currencyPair,\n );\n}\n\nexport function getCurrencyPrecision(state: AppState, pair: string) {\n return getCurrencyPairDetails(state, pair)!.precision;\n}\n\nexport function getCurrencyPrecisionForPps(state: AppState, pair: string) {\n const extendedPrecision = getCurrencyPrecision(state, pair);\n return extendedPrecision - 1;\n}\n\nconst isCurrencyPairCompatible = (compatiblePredicate: Predicate) => {\n const optionalPredicate = mapOrDefault(compatiblePredicate, false);\n return (state: Readonly, ccyPair: string) =>\n optionalPredicate(getAllCcyPairs(state)[ccyPair]);\n};\n\nexport const isCurrencyPairOptionCompatible = isCurrencyPairCompatible(\n ({ isOptionCurrency }) => isOptionCurrency,\n);\nexport const isCurrencyPairAccumulatorCompatible = isCurrencyPairOptionCompatible;\n\nconst emptyArray: readonly string[] = [];\n\nexport function getCurrencyClosedDates(state: AppState, pair: string): readonly string[] {\n const pairDetails = getCurrencyPairDetails(state, pair);\n return pairDetails?.closedDates ?? emptyArray;\n}\n\nexport function getEspLimit(state: AppState, currency: string): number | undefined {\n const { espLimits } = state.referenceData;\n return espLimits[currency];\n}\n\nexport function getMissingEspLimits(state: AppState): readonly string[] {\n const { espLimits } = state.referenceData;\n return Object.entries(espLimits)\n .filter(([, limit]) => limit === undefined)\n .map(([ccy]) => ccy);\n}\n\nexport function getTileMaxTenor(state: AppState, quoteId: string) {\n return getClient(state, getClientIdByQuoteId(state, quoteId)).maxTenor;\n}\n\nexport function getTileMaxDate(state: AppState, quoteId: string): Date | undefined {\n const maxTenor = getTileMaxTenor(state, quoteId);\n const ccyPair = getTileCurrencyPair(state, quoteId).value;\n if (maxTenor === null || ccyPair === null) {\n return undefined;\n }\n return getCurrencyPairDetails(state, ccyPair)?.tenorDatesCache[maxTenor];\n}\n","import type { Instrument, TileInstrument } from 'state/referenceData/referenceDataModel';\nimport type { ImmutableCollection } from 'typings/utils';\n\nexport type TabType = 'tiles' | 'bulkTrade';\n\nexport const tabTypePrettyName: Record = {\n tiles: 'Workspace',\n bulkTrade: 'Bulk Trade',\n};\n\nexport const tabNameGenerators: Record string> = {\n tiles: (index: number) => `Workspace ${index}`,\n bulkTrade: (index: number) => `Bulk trade ${index}`,\n};\n\nexport const marketData = 'MarketData' as const;\nexport const greeks = 'Greeks' as const;\nexport const commercialMargin = 'CommercialMargin' as const;\nexport const otherAttributes = 'OtherAttributes' as const;\nexport const editableAttributes = 'EditableAttributes' as const;\n\nexport const collapsableKeys = {\n marketData,\n greeks,\n commercialMargin,\n otherAttributes,\n editableAttributes,\n};\n\nexport type CollapsableKey = typeof collapsableKeys[keyof typeof collapsableKeys];\n\nexport interface IWorkspaceTabState {\n readonly name: string;\n readonly isNamePristine: boolean;\n readonly type: TabType;\n readonly clientId: string | null;\n readonly tiles: readonly string[];\n readonly zoomedTile: string | null;\n}\nexport type IWorkspaceTabs = ImmutableCollection;\n\nexport interface IWorkspaceTileState {\n readonly clientError?: boolean;\n readonly expanded: readonly CollapsableKey[];\n readonly instrument: Instrument;\n readonly clientWorkspaceId: string;\n readonly overrideClientId: string | null;\n}\n\nexport type IWorkspaceTiles = ImmutableCollection;\n\nexport interface GrowlData {\n id: string;\n instrument: TileInstrument;\n}\n\nexport type IWorkspaceGrowls = readonly GrowlData[];\n\nexport type SaveState = 'READY' | 'PENDING' | 'FAIL' | 'SUCCESS';\n\ninterface IClientWorkspaceState {\n tradingDisabled: boolean;\n saveState: SaveState;\n tabs: IWorkspaceTabs;\n activeTab: string | null;\n tiles: IWorkspaceTiles;\n growls: IWorkspaceGrowls;\n}\n\nexport type ClientWorkspaceState = Readonly;\n","import type { AppState } from 'state/model';\nimport { getClient } from 'state/referenceData/referenceDataSelectors';\nimport { throwIfUndefined } from 'utils/maps';\nimport {\n tabNameGenerators,\n type TabType,\n type IWorkspaceTabState,\n type IWorkspaceTabs,\n} from '../clientWorkspaceModel';\nimport { getTileOverriddenClientId } from './clientWorkspaceTilesSelectors';\n\nexport function getClientWorkspaceTabs(state: AppState) {\n return state.clientWorkspace.tabs;\n}\n\nexport function getClientWorkspaceTabNextName(state: AppState, type: TabType) {\n return tabNameGenerators[type](getBiggestNumber(state.clientWorkspace.tabs) + 1);\n}\n\nconst getBiggestNumber = (tabs: IWorkspaceTabs): number =>\n Math.max(\n 0,\n ...Object.values(tabs).map(tab => {\n const searchForNumber = /(\\d+)$/.exec(tab!.name);\n return searchForNumber === null ? 0 : parseInt(searchForNumber[1], 10);\n }),\n );\n\nexport function isTabPresent(state: AppState, tabId: string) {\n return getClientWorkspaceTabs(state)[tabId] !== undefined;\n}\n\nexport function getClientWorkspaceTab(\n state: AppState,\n tabId: string,\n): Readonly {\n return throwIfUndefined(\n getClientWorkspaceTabs(state)[tabId],\n `Tab ${tabId} does not exist in state`,\n );\n}\n\nexport function getClientWorkspaceActiveTab(state: AppState) {\n return state.clientWorkspace.activeTab;\n}\n\nexport function getTabType(state: AppState, tabId: string): TabType {\n return getClientWorkspaceTab(state, tabId).type;\n}\n\nexport function getTabZoomedTile(state: AppState, tabId: string): string | null {\n return getClientWorkspaceTab(state, tabId).zoomedTile;\n}\n\nexport function getClientWorkspaceActiveTabType(state: AppState): TabType | null {\n const { activeTab: activeTabId, tabs } = state.clientWorkspace;\n const activeTab = activeTabId === null ? null : tabs[activeTabId];\n return activeTab ? activeTab.type : null;\n}\n\nexport function getClientWorkspaceIdByQuoteId(state: AppState, quoteId: string) {\n const clientWorkspaceEntry = Object.entries(getClientWorkspaceTabs(state)).find(\n ([tabId, tabState]) =>\n tabState !== undefined && (tabState.tiles.includes(quoteId) || tabId === quoteId),\n );\n\n return throwIfUndefined(clientWorkspaceEntry, `Cannot find clientId for quote ${quoteId}`)[0];\n}\n\nexport function getClientIdByQuoteId(state: AppState, quoteId: string) {\n const overrideClientId = getTileOverriddenClientId(state, quoteId);\n if (overrideClientId !== null && getClient(state, overrideClientId) !== undefined) {\n return overrideClientId;\n }\n const clientWorkspaceId = getClientWorkspaceIdByQuoteId(state, quoteId);\n const { clientId } = getClientWorkspaceTab(state, clientWorkspaceId);\n return clientId;\n}\n\nexport function getWorkspaceTileIds(state: AppState, tabId: string) {\n return getClientWorkspaceTab(state, tabId).tiles;\n}\n","import type { AppState } from 'state/model';\nimport type { SaveState } from '../clientWorkspaceModel';\n\nexport function getSaveState(state: AppState): SaveState {\n return state.clientWorkspace.saveState;\n}\n","import type { AppState } from 'state/model';\nimport { getElementById, throwIfUndefined } from 'utils/maps';\nimport type { Instrument } from 'state/referenceData/referenceDataModel';\nimport type { CollapsableKey } from '../clientWorkspaceModel';\n\nfunction getQuotes({ clientWorkspace: { tiles } }: AppState) {\n return tiles;\n}\n\n// function getQuoteByIdUnsafe(state: AppState, quoteId: string) {\n// return getElementById(getQuotes(state), quoteId);\n// }\n\nfunction getQuoteById(state: AppState, quoteId: string) {\n return throwIfUndefined(\n getElementById(getQuotes(state), quoteId),\n `Quote with id ${quoteId} not found`,\n );\n}\n\nexport function getWorkspaceIdByQuoteId(state: AppState, quoteId: string) {\n return getQuoteById(state, quoteId).clientWorkspaceId;\n}\n\nexport function isQuotePresent(state: AppState, quoteId: string) {\n return getQuotes(state).hasOwnProperty(quoteId);\n}\n\nexport function isKeyCollapsedInQuote(state: AppState, quoteId: string, keyName: CollapsableKey) {\n return !getQuoteById(state, quoteId).expanded.includes(keyName);\n}\n\nexport function getQuoteInstrument(state: AppState, quoteId: string) {\n return getQuoteById(state, quoteId).instrument;\n}\n\nexport function isQuotePresentWithInstrument(\n state: AppState,\n tileId: string,\n instrument: Instrument,\n): boolean {\n return isQuotePresent(state, tileId) && getQuoteInstrument(state, tileId) === instrument;\n}\n","import type { IFormData, SharedKey, SharedPropertyStatus, ValueKey } from './formModel';\n\nexport function getValues({ values }: IFormData) {\n return values;\n}\n\nexport function getInputs({ inputs }: IFormData) {\n return inputs;\n}\n\nexport function getErrors({ errors }: IFormData) {\n return errors;\n}\n\nexport function getWarnings({ warnings }: IFormData) {\n return warnings;\n}\n\nexport function getSharedProperty>(\n property: PropertyName,\n) {\n return (\n form: IFormData,\n ): SharedPropertyStatus<\n IFormData['values'][PropertyName],\n IFormData['inputs'][PropertyName]\n > => ({\n value: getValues(form)[property],\n error: getErrors(form)[property],\n warning: getWarnings(form)[property],\n input: getInputs(form)[property],\n });\n}\n\nexport function getValueProperty>(property: T) {\n return (form: IFormData): V[T] => getValues(form)[property];\n}\n","import { makeValuesPredicate } from '@sgme/fp';\nimport type { BidAsk, CurrencyChoice } from 'state/share/productModel/litterals';\nimport type { IFxExecutionState } from 'state/executions/executionsStateModel';\nimport type { IFxOptionExecutionData } from './actions/optionProduct';\n\nexport const optionTypes = ['Call', 'Put'] as const;\nexport type OptionType = typeof optionTypes[number];\nexport const isOptionType = makeValuesPredicate(optionTypes);\n\nexport const typedOptionTypes = ['Call', 'Put', 'Straddle', 'Strangle', 'RiskReversal'] as const;\nexport type TypedOptionType = typeof typedOptionTypes[number];\n\nexport type SettlementType = 'Cash' | 'Physical' | 'Forward' | 'NDF';\n\nexport const allPriceTypes = ['AMOUNT', 'VOLATILITY', 'PERCENT', 'PPS'] as const;\nexport type PriceType = typeof allPriceTypes[number];\nexport type DisplayPriceType = [ccyChoice: CurrencyChoice, priceType: PriceType];\n\nexport const defaultSolvingFor = 'PremiumPaymentAmount' as const;\nexport const optionSolvableValues = ['Strike', 'Amount1', defaultSolvingFor] as const;\nexport type OptionSolvableValue = typeof optionSolvableValues[number];\n\nexport const validInputsInFine = ['in fine', 'in-fine', 'infine', 'if'];\n\nexport interface IGreeks {\n deltaCcy: number;\n vegaCcy: number;\n gammaCcy: number;\n thetaCcy: number;\n}\n\nexport type IPremiumPairData = BidAsk;\n\nexport type IPremiumPairDataString = BidAsk;\n\nexport type FxOptionExecutionState = IFxExecutionState & IFxOptionExecutionData;\n","import type { Collection } from 'typings/utils';\nimport type { Predicate } from './predicates';\n\nexport function addKey(map: Collection, key: string, val: T): Collection {\n if (map[key] !== undefined) {\n throw new Error('addKey cannot overwrite existing key');\n }\n return { ...map, [key]: val };\n}\n\n// export function removeKey, Key extends keyof V>(\n// map: V,\n// key: Key,\n// ): Omit {\n// const { [key]: val, ...rest } = map;\n// return val !== undefined ? rest : map;\n// }\n\n// export function removeKeys, Keys extends Array>(\n// map: V,\n// keys: Keys,\n// ): Omit {\n// return keys.reduce((acc, key) => removeKey(acc, key) as V /* just a trick */, map);\n// }\n\n// export const unpatchedEntries = , Keys extends Array>(\n// entriesMap: V,\n// patch: { [key in Keys[number]]: V[key] },\n// ): Omit => removeKeys(entriesMap, Object.keys(patch)) as Omit;\n\nexport function removeKey(map: Collection, key: string): Collection {\n const { [key]: val, ...rest } = map;\n return val !== undefined ? rest : map;\n}\n\nexport function removeKeys(map: Collection, keys: readonly string[]): Collection {\n return keys.reduce((acc, key) => removeKey(acc, key), map);\n}\n\nfunction compareObject(a: T, b: T) {\n return ((key: K) => a[key] === b[key]) as Predicate;\n}\n\nfunction isShallowContained(origin: T, patch: Partial): boolean {\n return Object.keys(patch).every(compareObject(origin, patch));\n}\n\nexport type Patcher = (keyState: T) => Partial | null;\nexport type Putter = (keyState: T) => T;\nexport type ComposedPatcher = (keyState: T) => T;\n\nexport function patcherReducer(previousState: T, patcher: Patcher): T {\n const nextState = patcher(previousState);\n if (nextState === null || isShallowContained(previousState, nextState)) {\n return previousState;\n }\n return { ...previousState, ...nextState };\n}\n\nexport function composeLeftPatcher(...patchers: ReadonlyArray>): ComposedPatcher {\n return (state: T) => patchers.reduce(patcherReducer, state);\n}\n\n/**\n * Apply a list of patchers to the value of a property of an object and clone the object\n * only if the property value changed.\n * @param map The object to update\n * @param key The name of the property\n * @param patchers The list of patchers\n * @returns The original or cloned/updated object\n */\nexport function updateKey(\n map: Collection,\n key: string,\n ...patchers: ReadonlyArray>\n): Collection {\n const origin = map[key];\n\n if (origin === undefined) {\n return map;\n }\n\n const patch = composeLeftPatcher(...patchers)(origin);\n\n if (patch === origin) {\n return map;\n }\n\n return {\n ...map,\n [key]: { ...origin, ...patch } as T,\n };\n}\n\n/**\n * update / set the value of the key, and not patch it as updateKey\n *\n * @param map\n * @param key\n * @param updater\n * @returns\n */\nexport function setKeyIfExisty(\n map: Collection,\n key: string,\n updater: (keyState: T) => T | null,\n): Collection {\n const origin = map[key];\n\n if (origin === undefined) {\n return map;\n }\n\n const value = updater(origin);\n\n if (value === origin) {\n return map;\n }\n\n return {\n ...map,\n [key]: value ?? undefined,\n };\n}\n\n/**\n * Returns a function that can get patchers and returns a function which when apply to an object\n * will use these patchers to compute a new property value.\n * If the property value is unchanged then the original object is return, otherwise a clone\n * of the object with the updated property is returned.\n * @param property The name of the property\n */\nexport const updateProperty =\n (property: K) =>\n (...patchers: ReadonlyArray>) =>\n >(obj: C): C => {\n const origin = obj[property];\n if (origin === undefined) {\n return obj;\n }\n const patch = composeLeftPatcher(...patchers)(origin);\n if (patch === origin) {\n return obj;\n }\n return {\n ...obj,\n [property]: { ...origin, ...patch },\n };\n };\n\nexport const updateArrayByMatchingKey =\n (keyname: K, keyValue: T[K], ...patchers: ReadonlyArray>) =>\n (array: readonly T[]): readonly T[] => {\n let pristine: boolean = true;\n const newArray = array.map(data => {\n if (data[keyname] !== keyValue) {\n return data;\n }\n pristine = false;\n return composeLeftPatcher(...patchers)(data);\n });\n return pristine ? array : newArray;\n };\n\nexport const filterArrayByMatchingKey =\n (keyname: K, keyValue: T[K]) =>\n (array: readonly T[]): readonly T[] => {\n let pristine: boolean = true;\n const newArray = array.filter(data => {\n if (data[keyname] !== keyValue) {\n return true;\n }\n pristine = false;\n return false;\n });\n return pristine ? array : newArray;\n };\n\nexport const insertAtIndex =\n (data: readonly T[], index: number) =>\n (array: readonly T[]): readonly T[] => {\n if (data.length === undefined || data.length < 1) {\n return array;\n }\n const leftHandSlice = array.slice(0, index);\n const rightHandSlice = array.slice(index);\n return leftHandSlice.concat(data, rightHandSlice);\n };\n\nexport const entriesDiff = (origin: Collection, delta: Collection) =>\n Object.entries(delta).filter(([key, value]) => value !== origin[key]);\n\nexport const unpatchedEntries = (\n entriesMap: Collection,\n patch: { [key: string]: any },\n): Collection => removeKeys(entriesMap, Object.keys(patch));\n\nexport function patchState(state: T) {\n return (...patchers: ReadonlyArray>): T =>\n patchers.reduce((previousState: T, patcher: Patcher) => {\n const nextState = patcher(previousState);\n if (nextState === null || isShallowContained(previousState, nextState)) {\n return previousState;\n }\n return { ...previousState, ...nextState };\n }, state);\n}\n\nexport function updateValueByProperty(key: K) {\n return function withUpdater(updater: Putter) {\n return function apply>(obj: C): Record | null {\n const oldValue = obj[key];\n const newValue = updater(oldValue);\n if (oldValue === newValue) {\n return null;\n }\n return { [key]: newValue } as Record;\n };\n };\n}\n\nexport function patchValueByProperty(\n obj: S,\n key: K,\n ...patchers: ReadonlyArray>\n) {\n const oldValue = obj[key];\n const newValue = composeLeftPatcher(...patchers)(oldValue);\n\n if (oldValue === newValue) {\n return obj;\n }\n\n return { ...obj, [key]: newValue };\n}\n","import type { Collection } from 'typings/utils';\nimport type { IPatch } from './patchModels';\nimport { removeKeys, updateKey, addKey, unpatchedEntries } from 'utils/stateMap';\nimport type { IFormData } from './form';\nimport type { IFxTileMetadata } from 'state/tile/fxTileModel';\n\ninterface TcEvent {\n quoteId: string;\n patch: IPatch;\n idVersion: number;\n isReadyToPrice: boolean | null;\n}\n\nexport const productPatcher = <\n VALUES extends {},\n INPUTS,\n STATE_TYPE extends IFormData & IFxTileMetadata = IFormData &\n IFxTileMetadata,\n>(\n state: Collection,\n { quoteId, patch, idVersion, isReadyToPrice }: TcEvent,\n ...patchers: ReadonlyArray<(current: STATE_TYPE) => Partial | null>\n): Collection =>\n updateKey(\n state,\n quoteId,\n (product): STATE_TYPE => ({\n ...product,\n inputs: {},\n values: {\n ...product.values,\n ...patch.values,\n },\n errors: {\n ...removeKeys(\n product.errors,\n Object.keys(patch.values).filter(field =>\n product.errors[field as keyof VALUES]?.code?.startsWith('error-tc-'),\n ),\n ),\n ...patch.errors,\n },\n warnings: {\n ...removeKeys(\n product.warnings,\n Object.keys(patch.values).filter(field =>\n product.warnings[field as keyof VALUES]?.code?.startsWith('warning-tc-'),\n ),\n ),\n ...patch.warnings,\n },\n propertiesRequested: false,\n tradeCaptureIdVersion: idVersion,\n ...(isReadyToPrice === null ? {} : { isPriceable: isReadyToPrice }),\n }),\n ...patchers,\n );\n\nexport const legsPatcher =\n <\n LEGVALUES extends {},\n LEGINPUTS,\n STATE_TYPE extends IFormData = IFormData,\n >(\n emptyLeg: STATE_TYPE,\n ) =>\n (\n state: Collection,\n quoteId: string,\n legsPatch: Record>,\n excludedLegsIds?: readonly string[],\n ): Collection => {\n const patchLegIds = Object.keys(legsPatch).map(legId => getLegKey(quoteId, legId));\n const quoteIdKey = `${quoteId}/`;\n const legsIdsToRemove = Object.keys(state).filter(\n id =>\n id.startsWith(quoteIdKey) &&\n !patchLegIds.includes(id) &&\n (excludedLegsIds ? !excludedLegsIds.includes(id.replace(quoteIdKey, '')) : true),\n );\n\n const stateWithoutRemovedLegs = removeKeys(state, legsIdsToRemove);\n\n return Object.entries(legsPatch).reduce((stateAcc, [legId, maybeLegPatch]) => {\n const legKey = getLegKey(quoteId, legId);\n const legPatch = maybeLegPatch || {\n values: {},\n errors: {},\n warnings: {},\n };\n if (stateAcc[legKey] === undefined) {\n return addKey(stateAcc, legKey, {\n ...emptyLeg,\n ...legPatch,\n values: {\n ...emptyLeg.values,\n ...legPatch.values,\n },\n errors: legPatch.errors,\n warnings: legPatch.warnings,\n });\n }\n return updateKey(stateAcc, legKey, leg => ({\n ...leg,\n ...legPatch,\n inputs: {} as Readonly>,\n values: {\n ...leg.values,\n ...legPatch.values,\n },\n errors: {\n ...unpatchedEntries(leg.errors, legPatch.values),\n ...legPatch.errors,\n },\n warnings: {\n ...unpatchedEntries(leg.warnings, legPatch.values),\n ...legPatch.warnings,\n },\n }));\n }, stateWithoutRemovedLegs);\n };\n\nconst defaultLegKey = '0';\n\n// WARNING: don't use this function for a leg of an option (because the legId has already the quoteId inside\nexport const getLegKey = (quoteId: string, legId: string = defaultLegKey) => `${quoteId}/${legId}`;\n\nexport function buildLegsMap(legs: ReadonlyArray<{ legId: string; patch: T }>) {\n return legs.reduce((acc, { legId, patch }) => {\n acc[legId] = patch;\n return acc;\n }, {} as Record);\n}\n","import { defaultSolvingFor } from './fxOptionsModel';\nimport type { FxOptionState } from './model/optionProduct';\nimport type {\n FxOptionLegState,\n FxOptionMultilegState,\n IFxVanillaLegValues,\n TypedLegState,\n TypedStrategyLegType,\n VanillaLegState,\n} from './model/optionsLegs';\nimport type { Collection } from '../../typings/utils';\nimport { addKey } from '../../utils/stateMap';\nimport { getLegKey } from '../share/patchHelper';\nimport type {\n OptionLegSavedTile,\n OptionMultilegSavedTile,\n OptionVanillaLegSavedTile,\n} from '../../api/workspaceService/updaters/updater9/model';\n\nexport const emptyFxOptionState: FxOptionState = {\n values: {\n currencyPair: null,\n hedgeType: 'Live',\n markupCurrency: null,\n amountReference: null,\n amountReferenceCurrency: null,\n amountReferenceIsOverridden: false,\n premiumDate: null,\n premiumDateTenor: null,\n isInFine: null,\n },\n errors: {},\n warnings: {},\n inputs: {},\n legIds: [],\n // legIds: ['optionId/0'],\n nextLegId: 0,\n propertiesRequested: false,\n propertiesRequestError: null,\n currentSessionId: null,\n isPriceable: false,\n isStrategy: false,\n orientation: 'vertical',\n currentStreamId: null,\n lastStreamId: null,\n tradeCaptureIdVersion: null,\n lastStreamError: null,\n displayPriceType: [1, 'AMOUNT'],\n legsCurrencyLinked: true,\n group: false,\n expanded: [],\n currentEspStreamId: null,\n lastExecutedQuoteId: null,\n currentExecutionId: null,\n rfsStartedAt: null,\n priceRecords: [],\n displaySolveStrikeModal: false,\n};\n\nexport function isVanillaLegSavedTile(leg: OptionLegSavedTile): leg is OptionVanillaLegSavedTile {\n return leg.productName === 'Vanilla';\n}\nexport function isFxOptionMultilegSavedTile(\n leg: OptionLegSavedTile,\n): leg is OptionMultilegSavedTile {\n return leg.productName === 'FxOptionMultileg';\n}\n\nexport function isVanillaLeg(leg: FxOptionLegState): leg is VanillaLegState {\n return leg.productName === 'Vanilla';\n}\n\nexport function isFxOptionMultileg(leg: FxOptionLegState): leg is FxOptionMultilegState {\n return leg.productName === 'FxOptionMultileg';\n}\n\nexport function createEmptyFxOptionMultilegState(legIds: string[]): FxOptionMultilegState {\n return {\n errors: {},\n warnings: {},\n values: {},\n inputs: {},\n productName: 'FxOptionMultileg',\n legIds,\n };\n}\n\nexport function createEmptyTypedLegState(\n productName: TypedStrategyLegType,\n legIds: string[],\n): TypedLegState {\n return {\n errors: {},\n warnings: {},\n values: {},\n inputs: {},\n productName,\n legIds,\n };\n}\n\nexport function createEmptyFxOptionVanillaLegState(\n legIds: string[] | undefined = undefined,\n optionVanillaLegValuesPatch: Partial = {},\n): VanillaLegState {\n return {\n productName: 'Vanilla',\n values: {\n currency1: null,\n currency2: null,\n hedgePrice: null,\n optionType: null,\n possibleOptionTypes: null,\n expiryDate: null,\n expiryDateTenor: null,\n strike: null,\n strikeShortcut: null,\n isStrikeInDelta: false,\n notionalAmount: null,\n notionalCurrency: 1,\n deliveryDate: null,\n deliveryDateTenor: null,\n settlementType: null,\n possibleSettlementTypes: null,\n cashSettlementCurrency: null,\n possibleCashSettlementCurrencies: null,\n fixingReference1: null,\n possibleFixingReferences1: null,\n marketPlace: null,\n possibleMarketPlaces: null,\n premiumDate: null,\n premiumDateTenor: null,\n side: null,\n isReadyToPrice: false,\n premiumBid: null,\n premiumAsk: null,\n premiumTypeString: null,\n premiumCurrency: null,\n markup: null,\n isInFine: null,\n solvable: null,\n volatilityBid: null,\n volatilityAsk: null,\n ...optionVanillaLegValuesPatch,\n },\n inputs: {},\n errors: {},\n warnings: {},\n solvingFor: defaultSolvingFor,\n solved: null,\n ...(legIds ? { legIds } : {}),\n };\n}\n\nexport function createEmptyFxOptionsState(\n state: Readonly>,\n optionId: string,\n) {\n const vanillaLegId = `${optionId}/0/0`;\n\n const updatedState = addKey(\n state,\n getLegKey(optionId),\n createEmptyFxOptionMultilegState([vanillaLegId]),\n );\n return addKey(updatedState, vanillaLegId, createEmptyFxOptionVanillaLegState());\n}\n\n// todo 4376 see where it could live to be used both in epic and state folder\nexport const addTileIdToLegKey = (tileId: string, currentKey: string): string =>\n `${tileId}/${currentKey}`;\n\nexport const updateLegIdsWithNewTileId = (tileId: string, legIds: string[]) =>\n legIds.map(legId => addTileIdToLegKey(tileId, legId));\n","import type { AppState } from 'state/model';\nimport { assertIsDefined } from '@sgme/fp';\nimport { isFxOptionMultileg, isVanillaLeg } from '../utilities';\nimport type {\n FxOptionLegState,\n FxOptionMultilegState,\n TypedStrategyLegType,\n VanillaLegState,\n} from '../model/optionsLegs';\nimport type { IFxOptionsState } from '../model';\n\n// ██████╗ ██████╗ ███╗ ███╗███╗ ███╗ ██████╗ ███╗ ██╗\n// ██╔════╝██╔═══██╗████╗ ████║████╗ ████║██╔═══██╗████╗ ██║\n// ██║ ██║ ██║██╔████╔██║██╔████╔██║██║ ██║██╔██╗ ██║\n// ██║ ██║ ██║██║╚██╔╝██║██║╚██╔╝██║██║ ██║██║╚██╗██║\n// ╚██████╗╚██████╔╝██║ ╚═╝ ██║██║ ╚═╝ ██║╚██████╔╝██║ ╚████║\n// ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝\n//\n\nexport function getOptionLeg(state: AppState, legId: string): FxOptionLegState {\n const leg = state.fxOptions.legs[legId];\n assertIsDefined(leg, `Leg ${legId} does not exist in state`);\n return leg;\n}\n\n// ██████╗ ██████╗ ████████╗██╗ ██████╗ ███╗ ██╗\n// ██╔═══██╗██╔══██╗╚══██╔══╝██║██╔═══██╗████╗ ██║\n// ██║ ██║██████╔╝ ██║ ██║██║ ██║██╔██╗ ██║\n// ██║ ██║██╔═══╝ ██║ ██║██║ ██║██║╚██╗██║\n// ╚██████╔╝██║ ██║ ██║╚██████╔╝██║ ╚████║\n// ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝\n//\n\nexport function getOptionSubLegIdsByLegId(\n state: AppState,\n optionId: string,\n): Record {\n return getAllLegsOfOptionWithId(state, optionId).reduce(\n toSubLegIdsByLegId,\n {} as Record,\n );\n}\n\nconst toSubLegIdsByLegId = (\n subLegIdsByLegId: Record,\n [legId, leg]: readonly [string, FxOptionLegState],\n): Record => {\n subLegIdsByLegId[legId] = isVanillaLeg(leg) ? [undefined] : leg.legIds;\n\n return subLegIdsByLegId;\n};\n\nexport function getProductNameAndSublegIdsOfAllLegsOfOptionById(\n state: IFxOptionsState,\n optionId: string,\n): Record<\n string,\n { productName: 'Vanilla' | 'FxOptionMultileg' | TypedStrategyLegType; legIds?: string[] }\n> {\n return Object.entries(state.legs)\n .filter(([legId, _leg]) => legId.startsWith(optionId))\n .reduce((acc, [legId, leg]) => {\n if (leg && !isVanillaLeg(leg)) {\n acc[legId] = { legIds: leg.legIds, productName: leg.productName };\n } else {\n acc[legId] = { productName: leg!.productName };\n }\n return acc;\n }, {} as Record);\n}\n\n// TODO: useful ?? better use = getFxOptionMultilegOfOption ?\nexport function getFirstLegIdOfOption(state: AppState, optionId: string) {\n const [firstLegId] = getFxOptionMultilegOfOption(state, optionId).legIds;\n\n return firstLegId;\n}\n\nexport function getAllLegIdsOfOption(state: AppState, optionId: string) {\n const optionPrefixLegId = `${optionId}/`;\n\n return Object.keys(state.fxOptions.legs).filter(legId => legId.startsWith(optionPrefixLegId));\n}\n\nexport function getAllLegsOfOption(\n state: AppState,\n optionId: string,\n): Array> {\n return getAllLegIdsOfOption(state, optionId).map(legId => getOptionLeg(state, legId));\n}\n\nexport function getAllLegsOfOptionWithId(\n state: AppState,\n optionId: string,\n): Array {\n return getAllLegIdsOfOption(state, optionId).map(legId => [legId, getOptionLeg(state, legId)]);\n}\n\n// ███╗ ███╗██╗ ██╗██╗ ████████╗██╗██╗ ███████╗ ██████╗\n// ████╗ ████║██║ ██║██║ ╚══██╔══╝██║██║ ██╔════╝██╔════╝\n// ██╔████╔██║██║ ██║██║ ██║ ██║██║ █████╗ ██║ ███╗\n// ██║╚██╔╝██║██║ ██║██║ ██║ ██║██║ ██╔══╝ ██║ ██║\n// ██║ ╚═╝ ██║╚██████╔╝███████╗██║ ██║███████╗███████╗╚██████╔╝\n// ╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚══════╝╚══════╝ ╚═════╝\n//\n\nexport function getFxOptionMultilegOfOption(state: AppState, optionId: string) {\n const [fxOptionMultilegId] = state.fxOptions.options[optionId]?.legIds!;\n const leg = getOptionLeg(state, fxOptionMultilegId);\n\n if (!isFxOptionMultileg(leg)) {\n throw new Error(`No multileg in option: ${optionId}`);\n }\n\n return leg;\n}\n\n// TODO: use getFxOptionMultilegOfOption instead ?\nexport function getLegIdsOfMultilegOfOption(state: AppState, optionId: string) {\n return getFxOptionMultilegOfOption(state, optionId).legIds;\n}\n\nexport function getAllLegsOfMultilegOfOptionWithId(\n state: AppState,\n optionId: string,\n): Array {\n return getLegIdsOfMultilegOfOption(state, optionId).map(legId => [\n legId,\n getOptionLeg(state, legId),\n ]);\n}\n\nexport function getFirstLegOfMultilegOfOption(state: AppState, optionId: string) {\n const multileg = getFxOptionMultilegOfOption(state, optionId);\n const [firstLegId] = multileg.legIds;\n\n return getOptionLeg(state, firstLegId) as Exclude;\n}\n\nexport function getSublegIdsOfLegsOfFxOptionMultiLegById(\n state: AppState,\n optionId: string,\n): Record {\n return getAllLegsOfMultilegOfOptionWithId(state, optionId).reduce(\n toSubLegIdsByLegId,\n {} as Record,\n );\n}\n\n// ██╗ ██╗ █████╗ ███╗ ██╗██╗██╗ ██╗ █████╗\n// ██║ ██║██╔══██╗████╗ ██║██║██║ ██║ ██╔══██╗\n// ██║ ██║███████║██╔██╗ ██║██║██║ ██║ ███████║\n// ╚██╗ ██╔╝██╔══██║██║╚██╗██║██║██║ ██║ ██╔══██║\n// ╚████╔╝ ██║ ██║██║ ╚████║██║███████╗███████╗██║ ██║\n// ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝╚══════╝╚══════╝╚═╝ ╚═╝\n//\n\nexport function getVanillaLeg(state: AppState, legId: string) {\n const leg = getOptionLeg(state, legId);\n\n if (!isVanillaLeg(leg)) {\n throw new Error(`Leg is not a vanilla: ${legId}`);\n }\n\n return leg;\n}\n\nexport function assertLegIsVanilla(state: AppState, legId: string) {\n getVanillaLeg(state, legId); // must throw an error if the leg is undefined or not a vanilla\n\n return true;\n}\n\nexport function getAllVanillaLegsOfOption(\n state: AppState,\n optionId: string,\n): Readonly {\n return getAllLegsOfOption(state, optionId).filter(leg => isVanillaLeg(leg)) as Readonly<\n VanillaLegState[]\n >;\n}\n\nexport function getAllVanillaLegIdsOfOption(state: AppState, optionId: string): string[] {\n return getAllLegsOfOptionWithId(state, optionId)\n .filter(([, leg]) => isVanillaLeg(leg))\n .map(([legId]) => legId);\n}\n\nexport function getCallPutLegIdsOfOption(state: AppState, optionId: string): [ string, string ] | [ undefined, undefined ] {\n const [ legId1, legId2 ] = getAllVanillaLegIdsOfOption(state, optionId)\n\n if (legId1.endsWith(\"call\")) {\n return [ legId1, legId2 ]\n }\n\n if (legId2.endsWith(\"call\")) {\n return [ legId2, legId1 ]\n }\n\n return [ undefined, undefined ]\n}\n\nexport function getAllVanillaLegsOfOptionWithId(\n state: AppState,\n optionId: string,\n): Array {\n return getAllLegsOfOptionWithId(state, optionId).filter(([, leg]) => isVanillaLeg(leg)) as Array<\n readonly [string, VanillaLegState]\n >;\n}\n\nexport function getFirstVanillaLegOfOption(state: AppState, optionId: string): VanillaLegState {\n const [firstLegId] = getFxOptionMultilegOfOption(state, optionId).legIds;\n const firstLeg = getOptionLeg(state, firstLegId);\n\n if (isVanillaLeg(firstLeg)) {\n return firstLeg;\n }\n\n return getVanillaLeg(state, firstLeg.legIds[0]);\n}\n\nexport function getFirstVanillaLegIdOfOption(state: AppState, optionId: string): string {\n const [firstLegId] = getFxOptionMultilegOfOption(state, optionId).legIds;\n const firstLeg = getOptionLeg(state, firstLegId);\n\n if (isVanillaLeg(firstLeg)) {\n return firstLegId;\n }\n\n const firstSubLegId = firstLeg.legIds[0];\n assertLegIsVanilla(state, firstSubLegId);\n\n return firstSubLegId;\n}\n","/**\n * @private\n * these exports are shared helper for exported selectors\n *\n * don't export this file in barrel ('./index.ts')\n */\n\nimport type { AppState } from 'state/model';\nimport type { VanillaLegState } from '../model/optionsLegs';\nimport { isVanillaLeg } from '../utilities';\nimport { getOptionLeg } from './fxOptionsLegsSelectors';\n\nexport function getOptionLeafLegState(state: AppState, legId: string): VanillaLegState {\n const leg = getOptionLeg(state, legId);\n\n if (isVanillaLeg(leg)) {\n return leg;\n }\n\n return getOptionLeafLegState(state, leg.legIds[0]);\n}\n","import type { AppState } from 'state/model';\nimport { throwIfUndefined } from 'utils/maps';\nimport type { FxOptionState, OptionLegsOrientation } from '../model/optionProduct';\nimport { getOptionLeafLegState } from './optionLeg';\n\nexport function getOptionState(state: AppState, optionId: string): FxOptionState {\n return throwIfUndefined(\n state.fxOptions.options[optionId],\n `Option state for ${optionId} does not exist`,\n );\n}\n\nexport function getOptionActiveRfsId(state: AppState, optionId: string): string | null {\n const { currentStreamId, lastStreamId } = getOptionState(state, optionId);\n return lastStreamId ?? currentStreamId;\n}\n\nexport function getOptionLegOrientation(state: AppState, optionId: string): OptionLegsOrientation {\n return getOptionState(state, optionId).orientation;\n}\n\nexport function getOptionGroupExpanded(state: AppState, quoteId: string, expiry: string): boolean {\n const option = getOptionState(state, quoteId);\n return isOptionGroupExpanded(option, expiry);\n}\n\nexport function isOptionGroupExpanded(option: FxOptionState, expiry: string): boolean {\n return option.expanded.includes(expiry);\n}\n\nexport function canOptionGroupsExpand(state: AppState, quoteId: string): boolean {\n const option = getOptionState(state, quoteId);\n const legs = option.legIds.map(legId => getOptionLeafLegState(state, legId));\n const expiryGroups = legs.map(leg => leg.values.expiryDate);\n\n return (\n expiryGroups.filter((value, index) => !!value && expiryGroups.indexOf(value) !== index).length >\n option.expanded.length\n );\n}\n\nexport function canOptionGroupsCollapse(state: AppState, quoteId: string): boolean {\n const option = getOptionState(state, quoteId);\n return option.expanded.some(g => !!g);\n}\n\nexport function haveOptionCollapsibleGroups(state: AppState, quoteId: string): boolean {\n const option = getOptionState(state, quoteId);\n const legs = option.legIds.map(legId => getOptionLeafLegState(state, legId));\n const expiryGroups = legs.map(leg => leg.values.expiryDate);\n\n return (\n expiryGroups.filter((value, index) => !!value && expiryGroups.indexOf(value) !== index).length >\n 0\n );\n}\n","import type { AppState } from 'state/model';\nimport { isDefined, isNotDefined } from '@sgme/fp';\n\nimport type { FxOptionHedgeState } from '../model/optionHedges';\nimport type { Collection } from 'typings/utils';\n\n// ██╗ ██╗███████╗██████╗ ██████╗ ███████╗\n// ██║ ██║██╔════╝██╔══██╗██╔════╝ ██╔════╝\n// ███████║█████╗ ██║ ██║██║ ███╗█████╗\n// ██╔══██║██╔══╝ ██║ ██║██║ ██║██╔══╝\n// ██║ ██║███████╗██████╔╝╚██████╔╝███████╗\n// ╚═╝ ╚═╝╚══════╝╚═════╝ ╚═════╝ ╚══════╝\n//\n\nexport function getOptionHedge(state: AppState, hedgeId: string): FxOptionHedgeState | undefined {\n const hedge = state.fxOptions.hedges[hedgeId];\n // assertIsDefined(hedge, `hedge ${hedgeId} does not exist in state`);\n return hedge;\n}\n\nexport function isHedgeAmountValidated(state: AppState, hedgeId: string) {\n const hedge = getOptionHedge(state, hedgeId);\n\n return (\n isDefined(hedge) && isNotDefined(hedge.errors.amount) && isNotDefined(hedge.warnings.amount)\n );\n}\n\n// ██████╗ ██████╗ ████████╗██╗ ██████╗ ███╗ ██╗\n// ██╔═══██╗██╔══██╗╚══██╔══╝██║██╔═══██╗████╗ ██║\n// ██║ ██║██████╔╝ ██║ ██║██║ ██║██╔██╗ ██║\n// ██║ ██║██╔═══╝ ██║ ██║██║ ██║██║╚██╗██║\n// ╚██████╔╝██║ ██║ ██║╚██████╔╝██║ ╚████║\n// ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝\n//\n\n// TODO: useful ?? better use = getFxOptionMultilegOfOption ?\nexport function getAllHedgeIdsOfOption(state: AppState, optionId: string) {\n const optionPrefixLegId = `${optionId}/`;\n\n return Object.keys(state.fxOptions.hedges).filter(hedgeId =>\n hedgeId.startsWith(optionPrefixLegId),\n );\n}\n\nexport function getHedgeStateOfOption(\n state: AppState,\n optionId: string,\n): Collection {\n return getAllHedgesOfOptionWithId(state, optionId).reduce((hedgeState, [hedgeId, hedge]) => {\n hedgeState[hedgeId] = hedge;\n return hedgeState;\n }, {} as Collection);\n}\n\nexport function getAllHedgesOfOption(\n state: AppState,\n optionId: string,\n): Array> {\n return getAllHedgeIdsOfOption(state, optionId).map(hedgeId => getOptionHedge(state, hedgeId)!);\n}\n\nexport function getAllHedgesOfOptionWithId(\n state: AppState,\n optionId: string,\n): Array {\n return getAllHedgeIdsOfOption(state, optionId).map(hedgeId => [\n hedgeId,\n getOptionHedge(state, hedgeId)!,\n ]);\n}\n","import type { AppState } from 'state/model';\nimport {\n getValueProperty,\n type ValueKey,\n type SharedKey,\n getSharedProperty,\n type SharedPropertyStatus,\n} from 'state/share/form';\n\nimport { getOptionState } from './fxOptionsProductSelectors';\nimport type { IFxOptionInputs, IFxOptionMetadata, IFxOptionValues } from '../model/optionProduct';\nimport type {\n FxOptionVanillaLegMetadata,\n IFxVanillaLegInputs,\n IFxVanillaLegValues,\n} from '../model/optionsLegs';\nimport { getOptionLeg, getVanillaLeg } from './fxOptionsLegsSelectors';\nimport { isVanillaLeg } from '../utilities';\nimport type { IFxHedgeInputs, IFxHedgeValues } from '../model/optionHedges';\nimport { getOptionHedge } from './fxOptionsHedgesSelectors';\nimport { isDefined } from '@sgme/fp';\n\nexport type OptionMetadataStatus = IFxOptionMetadata[T];\n\nexport function getOptionMetadata(property: T) {\n return (state: AppState, optionId: string): OptionMetadataStatus =>\n getOptionState(state, optionId)[property];\n}\ntype OptionValuePropertyKey = ValueKey;\n\nexport function getOptionValue(prop: T) {\n const get = getValueProperty(prop);\n return (state: AppState, optionId: string) => get(getOptionState(state, optionId));\n}\nexport type OptionValuePropertyStatus = IFxOptionValues[T];\n\ntype OptionSharedPropertyKey = SharedKey;\n\nexport function getOptionInput(prop: T) {\n const get = getSharedProperty(prop);\n return (state: AppState, optionId: string) => get(getOptionState(state, optionId));\n // return (state: AppState, optionId: string) => get(getOptionState(state, optionId));\n}\n\nexport type OptionSharedPropertyStatus = SharedPropertyStatus<\n IFxOptionValues[T],\n IFxOptionInputs[T]\n>;\n\n// TODO: validate that all references have the same behavior of the previous one with subLegId\n// if leg with legId is a vanilla, don't use subLegId, and return the leg\n// if subLegId i defined, get the leg.sublegs[subLegId], and check it is defined\n// else return leg.sublegs[0]\nexport function getOptionVanillaLegValue<\n T extends ValueKey,\n>(prop: T) {\n const get = getValueProperty(prop);\n return (state: AppState, legId: string) => {\n const leg = getOptionLeg(state, legId);\n\n if (isVanillaLeg(leg)) {\n return get(leg);\n }\n\n const vanillaLeg = leg.legIds[0];\n return get(getVanillaLeg(state, vanillaLeg));\n };\n}\n\ntype OptionLegSharedPropertyKey = SharedKey;\n\n// TODO: validate that all references have the same behavior of the previous one with subLegId\n// if leg with legId is a vanilla, don't use subLegId, and return the leg\n// if subLegId i defined, get the leg.sublegs[subLegId], and check it is defined\n// else return leg.sublegs[0]\nexport function getOptionVanillaLegInput(prop: T) {\n const get = getSharedProperty(prop);\n return (state: AppState, legId: string) => {\n const leg = getOptionLeg(state, legId);\n\n if (isVanillaLeg(leg)) {\n return get(leg);\n }\n\n const vanillaLeg = leg.legIds[0];\n return get(getVanillaLeg(state, vanillaLeg));\n };\n}\n\nexport type OptionLegSharedPropertyStatus =\n SharedPropertyStatus;\n\nexport type OptionLegMetadataStatus =\n FxOptionVanillaLegMetadata[T];\n\nexport function getOptionVanillaLegMetadata(\n property: T,\n) {\n return (state: AppState, legId: string) => getVanillaLeg(state, legId)[property];\n}\n\ntype OptionHedgeSharedPropertyKey = SharedKey;\n\nexport function getOptionHedgeInput(prop: T) {\n const get = getSharedProperty(prop);\n\n return (state: AppState, hedgeId: string) => {\n const hedge = getOptionHedge(state, hedgeId);\n\n return isDefined(hedge) ? get(hedge) : undefined;\n };\n}\n\ntype OptionHedgeValuePropertyKey = ValueKey;\n\nexport function getOptionHedgeValue(prop: T) {\n const get = getValueProperty(prop);\n return (state: AppState, hedgeId: string) => {\n const hedge = getOptionHedge(state, hedgeId);\n\n return isDefined(hedge) ? get(hedge) : undefined;\n };\n}\n","/**\n * @private\n * these exports are shared helper for exported selectors\n *\n * don't export this file in barrel ('./index.ts')\n */\n\nimport type { AppState } from 'state/model';\nimport { throwIfUndefined } from 'utils/maps';\n\nexport function getCashState(state: AppState, tileId: string) {\n return throwIfUndefined(\n state.fxCashs.cashs[tileId],\n `Cash state for tile ${tileId} does not exist`,\n );\n}\n","import type { AppState } from 'state/model';\nimport {\n getValueProperty,\n type ValueKey,\n type SharedKey,\n getSharedProperty,\n type SharedPropertyStatus,\n} from 'state/share/form';\nimport type {\n IFxCashMetadata,\n IFxCashValues as CashValue,\n IFxCashInputs as CashInput,\n} from '../fxCashsModel';\nimport { getCashState } from './cash';\n\nexport type CashMetadataStatus = IFxCashMetadata[T];\n\nexport function getCashMetadata(property: T) {\n return (state: AppState, CashId: string): CashMetadataStatus =>\n getCashState(state, CashId)[property];\n}\ntype CashValuePropertyKey = ValueKey;\n\nexport function getCashValue(prop: T) {\n const get = getValueProperty(prop);\n return (state: AppState, CashId: string) => get(getCashState(state, CashId));\n}\n\ntype CashSharedPropertyKey = SharedKey;\n\nexport function getCashInput(prop: T) {\n const get = getSharedProperty(prop);\n return (state: AppState, cashId: string) => get(getCashState(state, cashId));\n}\n\nexport type CashSharedPropertyStatus = SharedPropertyStatus<\n CashValue[T],\n CashInput[T]\n>;\n","/**\n * @private\n * these exports are shared helper for exported selectors\n *\n * don't export this file in barrel ('./index.ts')\n */\n\nimport type { AppState } from 'state/model';\nimport { throwIfUndefined } from 'utils/maps';\n\nexport function getSwapState(state: AppState, tileId: string) {\n return throwIfUndefined(\n state.fxSwaps.swaps[tileId],\n `Swap state for tile ${tileId} does not exist`,\n );\n}\n","import type { AppState } from 'state/model';\nimport {\n getValueProperty,\n type ValueKey,\n type SharedKey,\n getSharedProperty,\n type SharedPropertyStatus,\n} from 'state/share/form';\nimport type {\n IFxSwapMetadata,\n IFxSwapValues as SwapValue,\n IFxSwapInputs as SwapInput,\n} from '../fxSwapsModel';\nimport { getSwapState } from './swap';\n\nexport type SwapMetadataStatus = IFxSwapMetadata[T];\n\nexport function getSwapMetadata(property: T) {\n return (state: AppState, SwapId: string): SwapMetadataStatus =>\n getSwapState(state, SwapId)[property];\n}\ntype SwapValuePropertyKey = ValueKey;\n\nexport function getSwapValue(prop: T) {\n const get = getValueProperty(prop);\n return (state: AppState, SwapId: string) => get(getSwapState(state, SwapId));\n}\n\ntype SwapSharedPropertyKey = SharedKey;\n\nexport function getSwapInput(prop: T) {\n const get = getSharedProperty(prop);\n return (state: AppState, swapId: string) => get(getSwapState(state, swapId));\n}\n\nexport type SwapSharedPropertyStatus = SharedPropertyStatus<\n SwapValue[T],\n SwapInput[T]\n>;\n","/**\n * @private\n * these exports are shared helper for exported selectors\n *\n * don't export this file in barrel ('./index.ts')\n */\n\nimport type { AppState } from 'state/model';\nimport { throwIfUndefined } from 'utils/maps';\n\n/**\n * @private\n */\nexport function getBulkState(state: AppState, bulkId: string) {\n return throwIfUndefined(\n state.fxBulks.bulks[bulkId],\n `Bulk state for tab ${bulkId} does not exist`,\n );\n}\n","import { tenPower } from 'utils/number';\n\n/**\n * Update margin by 0.1 increment\n * @description should behave this way: 2.11 + 0.1 => 2.2, 2.11 - 0.1 => 2.1, 2.1 + 0.1 => 2.2, 2.1 - 0.1 => 2.0\n * @param margin original margin\n * @param increment margin increment\n * @see https://modernweb.com/what-every-javascript-developer-should-know-about-floating-points/ for why we multiply and divide by ten\n */\nexport function updateMargin(margin: number, increment: -0.1 | 0.1) {\n const tenNewMargin = margin * 10 + increment * 10;\n return (increment > 0 ? Math.floor(tenNewMargin) : Math.ceil(tenNewMargin)) / 10;\n}\n\nexport const convertToRawWithPrecision =\n (precision: number) =>\n (points: number | null): number =>\n (points || 0) / tenPower(precision - 1);\n\nexport const convertToPointsWithPrecision =\n (precision: number) =>\n (rawValue: number): number =>\n rawValue * tenPower(precision - 1);\n","import type { CurrencyChoice, Side, BidAskPair, Way } from 'state/share/productModel/litterals';\nimport { precisionAdderWithPrecision } from 'utils/number';\nimport { convertToRawWithPrecision } from 'utils/margin';\n\nexport const getImpactedDigitsFromPoints = (points: number) => {\n const abs = Math.abs(points);\n return abs > 0 ? Math.floor(Math.log10(1000 * abs)) : 0;\n};\n\nexport const toggleCurrency = (ccy: CurrencyChoice): CurrencyChoice => (ccy === 1 ? 2 : 1);\n\nexport const getBidAskValueWith =\n (customerWay: Side) =>\n ({ bid, ask }: BidAskPair): number =>\n customerWay === 'Buy' ? ask : bid;\n\nexport const makeBidAskValueWith = (customerWay: Side) => (value: number) =>\n customerWay === 'Buy'\n ? {\n ask: value,\n bid: 0,\n }\n : {\n ask: 0,\n bid: value,\n };\n\nexport const makeBulkLegId = (bulkId: string, legId: string) => `${bulkId}/${legId}`;\n\n// TODO: factorize me with CASH product\nexport const makeSpotWithMargin = (\n customerWay: Way,\n spotWithoutMargin: number,\n marginPoints: number,\n precision: number,\n): number => {\n const adder = precisionAdderWithPrecision(precision);\n const fromPoints = convertToRawWithPrecision(precision);\n switch (customerWay) {\n case 'Bid':\n return adder(spotWithoutMargin, -fromPoints(marginPoints));\n case 'Ask':\n return adder(spotWithoutMargin, fromPoints(marginPoints));\n }\n};\n\nexport const makeForwardPointWithMargin = (\n customerWay: Way,\n forwardPts: number,\n forwardPtsMargin: number,\n): number => {\n switch (customerWay) {\n case 'Bid':\n return forwardPts - forwardPtsMargin;\n case 'Ask':\n return forwardPts + forwardPtsMargin;\n }\n};\n\nexport const makeAllIn = (spotWithMargin: number, fwdPoints: number, precision: number) => {\n const adder = precisionAdderWithPrecision(precision + 1);\n const fromPoints = convertToRawWithPrecision(precision);\n return adder(spotWithMargin, fromPoints(fwdPoints));\n};\n\nexport const toggleSide = (side: Side): Side => (side === 'Sell' ? 'Buy' : 'Sell');\n\nexport const wayToSide = (way: Way) => (way === 'Ask' ? 'Buy' : 'Sell');\n\nexport const sideToWay = (side: Side) => (side === 'Buy' ? 'Ask' : 'Bid');\n\nexport const getDisplayedSide = (side: Side, amountCurrency: CurrencyChoice) =>\n amountCurrency === 2 ? toggleSide(side) : side;\n\nexport const makeTotalMarginRaw = (\n spotMarginPoints: number,\n forwardMarginPoints: number,\n precision: number,\n): number => {\n const fromPoints = convertToRawWithPrecision(precision);\n const result = fromPoints(spotMarginPoints + forwardMarginPoints);\n return result;\n};\n","/**\n * @private\n * these exports are shared helper for exported selectors\n *\n * don't export this file in barrel ('./index.ts')\n */\n\nimport type { AppState } from 'state/model';\nimport { throwIfUndefined } from 'utils/maps';\nimport { isDefined } from '@sgme/fp';\nimport type { IMargedLeg, ISimpleLeg } from '../fxBulksModel';\nimport { makeBulkLegId } from './utils';\nimport type { Collection } from 'typings/utils';\n\nexport function getBulkLegState(state: AppState, bulkId: string, legId: string) {\n const fullLegId = makeBulkLegId(bulkId, legId);\n return throwIfUndefined(\n state.fxBulks.legs[fullLegId],\n `Leg ${fullLegId} does not exist in state`,\n );\n}\n\nexport const getBulkSplitLegs = (state: AppState, bulkId: string) =>\n getLegsForBulk(state.fxBulks.splitLegs, bulkId);\n\nexport const getBulkNettedLegs = (state: AppState, bulkId: string) =>\n getLegsForBulk(state.fxBulks.nettedLegs, bulkId);\n\nconst getLegsForBulk = (\n legs: Collection,\n bulkId: string,\n): L[] =>\n Object.entries(legs)\n .filter(([id]) => id.startsWith(bulkId))\n .map(([, leg]) => leg)\n .filter(isDefined);\n\nconst getNettedLegField =\n (field: F) =>\n (state: AppState, bulkId: string, date: string): IMargedLeg[F] | null => {\n const nettedLeg = state.fxBulks.nettedLegs[makeBulkLegId(bulkId, date)];\n return nettedLeg === undefined ? null : nettedLeg[field];\n };\n\nexport const getBulkNettedLegMargin = getNettedLegField('margin');\nexport const getBulkNettedLegWay = getNettedLegField('way');\n","import type { AppState } from 'state/model';\nimport {\n getValueProperty,\n type ValueKey,\n type SharedKey,\n getSharedProperty,\n type SharedPropertyStatus,\n} from 'state/share/form';\nimport type {\n IFxBulkMetadata,\n IFxBulkValues as BulkValue,\n IFxBulkInputs as BulkInput,\n IFxBulkLegValues as BulkLegValue,\n FxBulkLegInputs as BulkLegInput,\n} from '../fxBulksModel';\nimport { getBulkState } from './bulk';\nimport { getBulkLegState } from './bulkLeg';\n\nexport type BulkMetadataStatus = IFxBulkMetadata[T];\n\nexport function getBulkMetadata(property: T) {\n return (state: AppState, bulkId: string): BulkMetadataStatus =>\n getBulkState(state, bulkId)[property];\n}\ntype BulkValuePropertyKey = ValueKey;\n\nexport function getBulkValue(prop: T) {\n const get = getValueProperty(prop);\n return (state: AppState, bulkId: string) => get(getBulkState(state, bulkId));\n}\n\ntype BulkSharedPropertyKey = SharedKey;\n\nexport function getBulkInput(prop: T) {\n const get = getSharedProperty(prop);\n return (state: AppState, bulkId: string) => get(getBulkState(state, bulkId));\n}\n\nexport type BulkSharedPropertyStatus = SharedPropertyStatus<\n BulkValue[T],\n BulkInput[T]\n>;\n\nexport function getBulkLegValue>(prop: T) {\n const get = getValueProperty(prop);\n return (state: AppState, bulkId: string, legId: string) =>\n get(getBulkLegState(state, bulkId, legId));\n}\n\ntype BulkLegSharedPropertyKey = SharedKey;\n\nexport function getBulkLegInput(prop: T) {\n const get = getSharedProperty(prop);\n return (state: AppState, bulkId: string, legId: string) =>\n get(getBulkLegState(state, bulkId, legId));\n}\n\nexport type BulkLegSharedPropertyStatus = SharedPropertyStatus<\n BulkLegValue[T],\n BulkLegInput[T]\n>;\n","import type { FxOrderState, FxOrderStateMap } from '../fxOrdersModel';\nimport type { AppState } from 'state/model';\nimport { throwIfUndefined } from 'utils/maps';\n\nexport function getOrderState(state: AppState, orderId: string): FxOrderState {\n return throwIfUndefined(\n state.fxOrders.orders[orderId],\n `Order state for ${orderId} does not exist`,\n );\n}\n\nexport function getOrdersState(state: AppState): FxOrderStateMap {\n return state.fxOrders.orders;\n}\n\nexport function getOrderByExecutionId(\n state: AppState,\n executionId: string,\n): FxOrderState | undefined {\n return Object.values(state.fxOrders.orders).find(\n order => order?.currentExecutionId === executionId,\n );\n}\n","import {\n type ValueKey,\n getValueProperty,\n type SharedKey,\n getSharedProperty,\n type SharedPropertyStatus,\n} from 'state/share/form';\nimport type {\n IFxOrderValues as OrderValue,\n IFxOrderInputs as OrderInput,\n IFxOrderMetadata,\n} from '../fxOrdersModel';\nimport type { AppState } from 'state/model';\nimport { getOrderState } from './fxOrdersProductSelectors';\n\nexport type OrderMetadataStatus = IFxOrderMetadata[T];\n\nexport function getOrderMetadata(property: T) {\n return (state: AppState, orderId: string): OrderMetadataStatus =>\n getOrderState(state, orderId)[property];\n}\n\ntype OrderValuePropertyKey = ValueKey;\n\nexport function getOrderValue(prop: T) {\n const get = getValueProperty(prop);\n return (state: AppState, orderId: string) => get(getOrderState(state, orderId));\n}\n\ntype OrderSharedPropertyKey = SharedKey;\n\nexport function getOrderInput(prop: T) {\n const get = getSharedProperty(prop);\n return (state: AppState, orderId: string) => get(getOrderState(state, orderId));\n}\n\nexport type OrderSharedPropertyStatus = SharedPropertyStatus<\n OrderValue[T],\n OrderInput[T]\n>;\n","/**\n * @private\n * these exports are shared helper for exported selectors\n *\n * don't export this file in barrel ('./index.ts')\n */\n\nimport { logger } from 'logging/logger';\nimport type { AppState } from 'state/model';\nimport { throwIfUndefined } from 'utils/maps';\nimport type {\n FxAccumulatorState,\n FxForwardAccumulatorState,\n FxTargetAccumulatorState,\n} from '../fxAccumulatorsModel';\n\nexport function getAccumulatorState(state: AppState, tileId: string) {\n return throwIfUndefined(\n state.fxAccumulators.accumulators[tileId],\n `Accumulator state for tile ${tileId} does not exist`,\n );\n}\n\nexport function getTargetAccumulatorState(state: AppState, tileId: string) {\n const accumulatorState = getAccumulatorState(state, tileId);\n\n assertTargetAccu(accumulatorState);\n\n return accumulatorState;\n}\n\nexport function getForwardAccumulatorState(state: AppState, tileId: string) {\n const accumulatorState = getAccumulatorState(state, tileId);\n\n assertForwardAccu(accumulatorState);\n\n return accumulatorState;\n}\n\nfunction assertTargetAccu(\n targetAccuState: FxAccumulatorState,\n): asserts targetAccuState is FxTargetAccumulatorState {\n if (targetAccuState.values.productName !== 'FxTargetAccumulator') {\n const err = new Error('This should have been a targetAccu');\n logger.logError(\n 'This should have been a targetAccu : {targetAccuState} from : {stack}, source: state',\n JSON.stringify(targetAccuState),\n err.stack,\n );\n throw err;\n }\n}\n\n// TODO review can be refactored ?\nfunction assertForwardAccu(\n forwardAccuState: FxAccumulatorState,\n): asserts forwardAccuState is FxForwardAccumulatorState {\n if (forwardAccuState.values.productName !== 'FxForwardAccumulator') {\n const err = new Error('This should have been a forwardAccu');\n logger.logError(\n 'This should have been a forwardAccu : {forwardAccuState} from : {stack}, source: state',\n JSON.stringify(forwardAccuState),\n err.stack,\n );\n throw err;\n }\n}\n","import type { AppState } from 'state/model';\nimport {\n getValueProperty,\n type ValueKey,\n type SharedKey,\n getSharedProperty,\n type SharedPropertyStatus,\n} from 'state/share/form';\nimport type {\n IFxAccumulatorMetadata,\n IFxAccumulatorValues as AccumulatorValue,\n FxAccumulatorInputs as AccumulatorInput,\n IFxTargetAccumulatorValues as TargetAccumulatorValue,\n FxTargetAccumulatorInputs as TargetAccumulatorInput,\n IFxForwardAccumulatorValues as ForwardAccumulatorValue,\n FxForwardAccumulatorInputs as ForwardAccumulatorInput,\n} from '../fxAccumulatorsModel';\nimport {\n getAccumulatorState,\n getForwardAccumulatorState,\n getTargetAccumulatorState,\n} from './accumulator';\n\nexport type AccumulatorMetadataStatus =\n IFxAccumulatorMetadata[T];\n\nexport function getAccumulatorMetadata(property: T) {\n return (state: AppState, accumulatorId: string): AccumulatorMetadataStatus =>\n getAccumulatorState(state, accumulatorId)[property];\n}\n\n// common accumulator value\ntype AccumulatorValuePropertyKey = ValueKey;\n\nexport function getAccumulatorValue(prop: T) {\n const get = getValueProperty(prop);\n return (state: AppState, accumulatorId: string) => get(getAccumulatorState(state, accumulatorId));\n}\n\n// target accumulator value\ntype TargetAccumulatorValuePropertyKey = ValueKey;\n\nexport function getTargetAccumulatorValue(prop: T) {\n const get = getValueProperty(prop);\n return (state: AppState, accumulatorId: string) =>\n get(getTargetAccumulatorState(state, accumulatorId));\n}\n\n// forward accumulator value\ntype ForwardAccumulatorValuePropertyKey = ValueKey<\n ForwardAccumulatorValue,\n ForwardAccumulatorInput\n>;\n\nexport function getForwardAccumulatorValue(prop: T) {\n const get = getValueProperty(prop);\n return (state: AppState, accumulatorId: string) =>\n get(getForwardAccumulatorState(state, accumulatorId));\n}\n\n// common accumulator input\ntype AccumulatorSharedPropertyKey = SharedKey;\n\nexport function getAccumulatorInput(prop: T) {\n const get = getSharedProperty(prop);\n return (state: AppState, AccumulatorId: string) => get(getAccumulatorState(state, AccumulatorId));\n}\n\n// target accumulator input\ntype TargetAccumulatorSharedPropertyKey = SharedKey;\n\nexport function getTargetAccumulatorInput(prop: T) {\n const get = getSharedProperty(prop);\n return (state: AppState, AccumulatorId: string) =>\n get(getTargetAccumulatorState(state, AccumulatorId));\n}\n\nexport type ForwardAccumulatorSharedPropertyStatus =\n SharedPropertyStatus;\n\n// forward accumulator input\ntype ForwardAccumulatorSharedPropertyKey = SharedKey<\n ForwardAccumulatorValue,\n ForwardAccumulatorInput\n>;\n\nexport function getForwardAccumulatorInput(prop: T) {\n const get = getSharedProperty(prop);\n return (state: AppState, AccumulatorId: string) =>\n get(getForwardAccumulatorState(state, AccumulatorId));\n}\n\nexport type AccumulatorSharedPropertyStatus =\n SharedPropertyStatus;\n","import type { AppState } from 'state/model';\nimport { isDefined } from '@sgme/fp';\nimport type { BlotterEntry, BlotterInstrument, OrderBlotterEntry, TradeBlotterEntry } from '../blotterEntryModel';\nimport { createSelector } from 'reselect';\nimport { throwIfUndefined } from 'utils/maps';\nimport type { BlotterHistoricalError, BlotterMode, DateRange } from '../blotterModel';\nimport type { ImmutableCollection } from 'typings/utils';\nimport { logger } from 'logging/logger';\n\nexport const getBlotter = (state: AppState) => state.blotter;\n\nexport const getBlotterIsOpen = (state: AppState) => state.blotter.metadata.isOpen;\n\nexport const getBlotterMode = (state: AppState): BlotterMode => state.blotter.metadata.mode;\n\nexport const getBlotterFetching = (state: AppState) => state.blotter.metadata.fetching;\n\nexport const getBlotterCanRefetch = (state: AppState) => state.blotter.metadata.canRefetch;\n\nexport const getBlotterHistoricalError = (state: AppState): BlotterHistoricalError =>\n state.blotter.metadata.historical ? state.blotter.metadata.historical.error : null;\n\nexport const getBlotterHistoricalDateRange = (state: AppState): DateRange =>\n state.blotter.metadata.historical ? state.blotter.metadata.historical.dateRange : 'yesterday';\n\nexport const getBlotterHistoricalStartDate = (state: AppState): Date | null =>\n state.blotter.metadata.historical ? state.blotter.metadata.historical.startDate : null;\n\nexport const getBlotterHistoricalEndDate = (state: AppState): Date | null =>\n state.blotter.metadata.historical ? state.blotter.metadata.historical.endDate : null;\n\nexport const getBlotterAllIntraday = (state: AppState) => getBlotter(state).intraday;\nexport const getBlotterAllHistorical = (state: AppState) => getBlotter(state).historical;\nexport const getBlotterAllEditedOrders = (state: AppState) => getBlotter(state).editedOrders;\n\nexport const isInBlotterIntraday = (state: AppState, id: string): boolean =>\n getBlotterAllIntraday(state)[id] !== undefined;\n\nexport const getBlotterDataById = (state: AppState, id: string): BlotterEntry =>\n throwIfUndefined(\n getBlotterAllIntraday(state)[id] ?? getBlotterAllHistorical(state)[id],\n `Blotter entry not found for id ${id}`,\n );\n\nexport const getBlotterEditedDataById = (state: AppState, id: string): BlotterEntry =>\n throwIfUndefined(getBlotterAllEditedOrders(state)[id], `Blotter entry not found for id ${id}`);\n\nconst makeGetBlotterDataByInstrument = (\n getBlotterData: (state: AppState) => ImmutableCollection,\n instrument: BlotterInstrument,\n) => {\n const filterProduct = (data: BlotterEntry) => data.instrument === instrument;\n return createSelector(getBlotterData, data => Object.values(data).filter(isDefined).filter(filterProduct));\n};\n\nexport const getBlotterIntradayCashTrades = makeGetBlotterDataByInstrument(getBlotterAllIntraday, 'Cash');\n\nexport const getBlotterIntradayOptionTrades = makeGetBlotterDataByInstrument(getBlotterAllIntraday, 'Option');\nexport const getBlotterOrders = makeGetBlotterDataByInstrument(getBlotterAllIntraday, 'Order');\nexport const getBlotterIntradayAccumulatorTrades = makeGetBlotterDataByInstrument(getBlotterAllIntraday, 'Accumulator');\nexport const getBlotterHistoricalCashTrades = makeGetBlotterDataByInstrument(getBlotterAllHistorical, 'Cash');\nexport const getBlotterHistoricalOptionTrades = makeGetBlotterDataByInstrument(getBlotterAllHistorical, 'Option');\nexport const getBlotterHistoricalAccumulatorTrades = makeGetBlotterDataByInstrument(\n getBlotterAllHistorical,\n 'Accumulator',\n);\n\nfunction assertOrder(blotterEntry: BlotterEntry): asserts blotterEntry is OrderBlotterEntry {\n if (blotterEntry.instrument !== 'Order') {\n const err = new Error('This should have been an order');\n logger.logError(\n 'This should have been an order : {blotterEntry} from : {stack}, source: state',\n JSON.stringify(blotterEntry),\n err.stack,\n );\n throw err;\n }\n}\n\nfunction assertTrade(blotterEntry: BlotterEntry): asserts blotterEntry is TradeBlotterEntry {\n if (blotterEntry.instrument === 'Order') {\n const err = new Error('This should have been a trade');\n logger.logError(\n 'This should have been a trade : {blotterEntry} from : {stack}, source: state',\n JSON.stringify(blotterEntry),\n err.stack,\n );\n throw err;\n }\n}\n\nexport const getBlotterOrderById = (state: AppState, id: string): OrderBlotterEntry => {\n const foundEntry = getBlotterDataById(state, id);\n assertOrder(foundEntry);\n return foundEntry;\n};\n\nexport const getBlotterEditedOrderById = (state: AppState, id: string): OrderBlotterEntry => {\n const foundEntry = getBlotterEditedDataById(state, id);\n assertOrder(foundEntry);\n return foundEntry;\n};\n\nexport const getBlotterTradeById = (state: AppState, id: string): TradeBlotterEntry => {\n const foundEntry = getBlotterDataById(state, id);\n assertTrade(foundEntry);\n return foundEntry;\n};\n\nexport const getBlotterChildrenTrades = (state: AppState, childrenIds: readonly string[]) =>\n childrenIds.map(id => getBlotterDataById(state, id));\n","import { isDefined, isNotDefined } from '@sgme/fp';\nimport type { PropertyError, PropertyWarning } from 'state/share/productModel/litterals';\n\nexport interface FieldSelector {\n value: V;\n input?: I;\n error?: PropertyError;\n warning?: PropertyWarning;\n}\n\n// TODO: remove this complex function because the only returned property used is \"data\"\nexport function fieldData({\n input,\n value,\n error,\n warning,\n}: FieldSelector): FieldData {\n const errorId = error === undefined ? undefined : error.code.toString();\n const userNotifiedError = error === undefined ? undefined : error.userNotified;\n const warningId = warning === undefined ? undefined : warning.code.toString();\n const userNotifiedWarning = warning === undefined ? undefined : warning.userNotified;\n\n const shared = { errorId, userNotifiedError, warningId, userNotifiedWarning };\n\n return input !== undefined\n ? { isInput: true, data: input, ...shared }\n : { isInput: false, data: value, ...shared };\n}\n\nexport function getFieldContent(field: FieldSelector | undefined) {\n if (isNotDefined(field)) {\n return undefined;\n }\n\n const { input, value } = field;\n\n return isDefined(input) ? input : isDefined(value) ? value : null;\n}\n\nexport function fieldUndefinableData(\n field: FieldSelector | undefined,\n): FieldData | undefined {\n if (isNotDefined(field)) {\n return undefined;\n }\n\n const { input, value, error, warning } = field;\n\n const errorId = error === undefined ? undefined : error.code.toString();\n const userNotifiedError = error === undefined ? undefined : error.userNotified;\n const warningId = warning === undefined ? undefined : warning.code.toString();\n const userNotifiedWarning = warning === undefined ? undefined : warning.userNotified;\n\n const shared = { errorId, userNotifiedError, warningId, userNotifiedWarning };\n\n return input !== undefined\n ? { isInput: true, data: input, ...shared }\n : { isInput: false, data: value, ...shared };\n}\n\ninterface IsInputData {\n isInput: true;\n data: I;\n}\n\ninterface IsValueData {\n isInput: false;\n data: V;\n}\n\nexport type FieldData = {\n errorId?: string;\n userNotifiedError?: boolean;\n warningId?: string;\n userNotifiedWarning?: boolean;\n} & (IsValueData | IsInputData);\n\nexport const mapValueData =\n (mapper: (value: V) => I) =>\n (shared: FieldData): FieldData =>\n shared.isInput === true ? shared : { ...shared, data: mapper(shared.data) };\n","import { getSharedProperty, getValueProperty, type IFormData, type SharedKey, type ValueKey } from 'state/share/form';\nimport type {\n BlotterOrderAlgoInputs,\n BlotterOrderAlgoMetadata,\n BlotterOrderAlgoPropertiesWithMetaData,\n BlotterOrderAlgoValues,\n BlotterOrderCommonInputs,\n BlotterOrderCommonValues,\n BlotterOrderLimitInputs,\n BlotterOrderLimitValues,\n} from '../blotterEntryModel';\nimport type { AppState } from 'state/model';\nimport { getBlotterEditedOrderById, getBlotterOrderById } from './blotterSelectors';\nimport { createSelector } from 'reselect';\nimport { fieldData } from '../../../utils/fieldSelectors';\n\nexport function getBlotterOrderInput>(prop: T) {\n const get = getSharedProperty(prop);\n return (state: AppState, orderId: string) => get(getBlotterOrderById(state, orderId));\n}\n\nexport function getBlotterOrderValue>(prop: T) {\n const get = getValueProperty(prop);\n return (state: AppState, orderId: string) => get(getBlotterOrderById(state, orderId));\n}\n\nexport function getBlotterOrderLimitInput>(\n prop: T,\n) {\n const get = getSharedProperty(prop);\n return (state: AppState, orderId: string) =>\n get(getBlotterOrderById(state, orderId) as IFormData);\n}\n\nexport function getBlotterOrderLimitValue>(\n prop: T,\n) {\n const get = getValueProperty(prop);\n return (state: AppState, orderId: string) =>\n get(getBlotterOrderById(state, orderId) as IFormData);\n}\n\nexport function getBlotterEditedOrderLimitValue>(\n prop: T,\n) {\n const get = getValueProperty(prop);\n return (state: AppState, orderId: string) =>\n get(getBlotterEditedOrderById(state, orderId) as IFormData);\n}\n\nexport function getBlotterOrderAlgoInput>(prop: T) {\n const get = getSharedProperty(prop);\n return (state: AppState, orderId: string) =>\n get(getBlotterOrderById(state, orderId) as IFormData);\n}\n\nexport function getBlotterEditedOrderAlgoInput>(\n prop: T,\n) {\n const get = getSharedProperty(prop);\n return (state: AppState, orderId: string) =>\n get(getBlotterEditedOrderById(state, orderId) as IFormData);\n}\n\nexport function getBlotterOrderAlgoValue>(prop: T) {\n const get = getValueProperty(prop);\n return (state: AppState, orderId: string) =>\n get(getBlotterOrderById(state, orderId) as IFormData);\n}\n\nexport function getBlotterOrderAlgoMetadata(prop: T) {\n return (state: AppState, orderId: string) =>\n (getBlotterOrderById(state, orderId) as BlotterOrderAlgoPropertiesWithMetaData)[prop];\n}\nexport function getBlotterOrderIsModified(state: AppState, orderId: string) {\n const inputs = getBlotterOrderById(state, orderId).inputs;\n return Object.keys(inputs).length !== 0;\n}\nexport function getBlotterOrderIsValid(state: AppState, orderId: string) {\n const errors = getBlotterOrderById(state, orderId).errors;\n return Object.keys(errors).length === 0;\n}\n\nexport const getBlotterOrderProduct = getBlotterOrderInput('product');\nexport const getBlotterOrderStatus = getBlotterOrderValue('status');\nexport const getBlotterOrderCurrencyPair = getBlotterOrderValue('currencyPair');\nexport const getBlotterOrderNotionalCurrency = getBlotterOrderValue('notionalCurrency');\nexport const getBlotterOrderIsGtc = getBlotterOrderInput('isGtc');\nexport const getBlotterOrderExpiryDay = getBlotterOrderValue('expiryDay');\nexport const getBlotterOrderExpiryTime = getBlotterOrderValue('expiryTime');\nexport const getBlotterOrderWay = getBlotterOrderValue('way');\nexport const getBlotterOrderAccount = getBlotterOrderValue('account');\nexport const getBlotterOrderNotionalInput = getBlotterOrderInput('notional');\nexport const getBlotterOrderExecutedNotional = getBlotterOrderValue('executedNotional');\nexport const getBlotterOrderLimitPriceInput = getBlotterOrderLimitInput('limitPrice');\nexport const getBlotterOrderCustomerPriceInput = getBlotterOrderLimitInput('customerPrice');\nexport const getBlotterOrderTakeProfitMarginInput = getBlotterOrderLimitInput('margin');\nexport const getBlotterOrderNoWorseThan = getBlotterOrderAlgoInput('noWorseThan');\nexport const getBlotterOrderStartDate = getBlotterOrderAlgoInput('startDate');\nexport const getBlotterOrderStartTime = getBlotterOrderAlgoInput('startTime');\nexport const getBlotterOrderEndDate = getBlotterOrderAlgoInput('endDate');\nexport const getBlotterOrderEndTime = getBlotterOrderAlgoInput('endTime');\nexport const getBlotterOrderClippingMode = getBlotterOrderAlgoInput('clippingMode');\nexport const getBlotterOrderClipSize = getBlotterOrderAlgoInput('clipSize');\nexport const getBlotterOrderRandomize = getBlotterOrderAlgoInput('randomize');\nexport const getBlotterOrderSpreadCapture = getBlotterOrderAlgoInput('spreadCapture');\nexport const getBlotterOrderAlphaSeeker = getBlotterOrderAlgoInput('alphaSeeker');\nexport const getBlotterOrderSpeed = getBlotterOrderAlgoInput('speed');\nexport const getBlotterOrderLiquidityPool = getBlotterOrderAlgoInput('liquidityPool');\nexport const getBlotterOrderMarginInBpsInput = getBlotterOrderLimitInput('marginInBps');\nexport const getBlotterOrderTakeProfitMarginEditableInput = getBlotterOrderLimitInput('margin');\nexport const getBlotterOrderFixingMarginTypeInput = getBlotterOrderLimitInput('fixingMarginType');\nexport const getBlotterOrderFixingBenchmark = getBlotterOrderLimitInput('fixingBenchmark');\nexport const getBlotterOrderFixingDateUtc = getBlotterOrderLimitValue('fixingDateUtc');\nexport const getBlotterOrderFixingPriceTypeInput = getBlotterOrderLimitInput('fixingPriceType');\nexport const getBlotterOrderFixingPlace = getBlotterOrderLimitInput('fixingPlace');\nexport const getBlotterOrderFixingTime = getBlotterOrderLimitInput('fixingTime');\nexport const getBlotterOrderTogglePausePending = getBlotterOrderAlgoMetadata('togglePausePending');\nexport const getBlotterOrderFillNowPending = getBlotterOrderAlgoMetadata('fillNowPending');\nexport const getBlotterOrderStreamId = getBlotterOrderAlgoMetadata('currentEspStreamId');\nexport const getBlotterOrderIsReadyToSubmit = getBlotterOrderValue('isReadyToSubmit');\nexport const getBlotterOrderMode = (state: AppState, orderId: string) => getBlotterOrderById(state, orderId).mode;\n\n// EDITED ORDERS SELECTORS //\nexport function getBlotterEditedOrderInput>(\n prop: T,\n) {\n const get = getSharedProperty(prop);\n return (state: AppState, orderId: string) => get(getBlotterEditedOrderById(state, orderId));\n}\nexport function getBlotterEditedOrderValue>(\n prop: T,\n) {\n const get = getValueProperty(prop);\n return (state: AppState, orderId: string) => get(getBlotterEditedOrderById(state, orderId));\n}\nexport function getBlotterEditedOrderLimitInput>(\n prop: T,\n) {\n const get = getSharedProperty(prop);\n return (state: AppState, orderId: string) =>\n get(getBlotterEditedOrderById(state, orderId) as IFormData);\n}\n\nexport const getBlotterEditedOrderProduct = getBlotterEditedOrderInput('product');\nexport const getBlotterEditedOrderNotionalInput = getBlotterEditedOrderInput('notional');\nexport const getBlotterEditedOrderNotionalCurrency = getBlotterEditedOrderValue('notionalCurrency');\nexport const getBlotterEditedOrderCurrencyPair = getBlotterEditedOrderValue('currencyPair');\nexport const getBlotterEditedOrderWay = getBlotterEditedOrderValue('way');\nexport const getBlotterEditedOrderExpiryDay = getBlotterEditedOrderValue('expiryDay');\nexport const getBlotterEditedOrderExpiryTime = getBlotterEditedOrderValue('expiryTime');\nexport const getBlotterEditedOrderFixingDateUtc = getBlotterEditedOrderLimitValue('fixingDateUtc');\nexport const getBlotterEditedOrderFixingBenchmark = getBlotterEditedOrderLimitInput('fixingBenchmark');\nexport const getBlotterEditedOrderFixingTime = getBlotterEditedOrderLimitInput('fixingTime');\nexport const getBlotterEditedOrderFixingPlace = getBlotterEditedOrderLimitInput('fixingPlace');\nexport const getBlotterEditedOrderLimitPriceInput = getBlotterEditedOrderLimitInput('limitPrice');\nexport const getBlotterEditedOrderCustomerPriceInput = getBlotterEditedOrderLimitInput('customerPrice');\nexport const getBlotterEditedOrderTakeProfitMarginInput = getBlotterEditedOrderLimitInput('margin');\nexport const getBlotterEditedOrderFixingMarginTypeInput = getBlotterEditedOrderLimitInput('fixingMarginType');\nexport const getBlotterEditedOrderFixingPriceTypeInput = getBlotterEditedOrderLimitInput('fixingPriceType');\nexport const getBlotterEditedOrderMarginInBpsInput = getBlotterEditedOrderLimitInput('marginInBps');\nexport const getBlotterEditedOrderStartDate = getBlotterEditedOrderAlgoInput('startDate');\nexport const getBlotterEditedOrderStartTime = getBlotterEditedOrderAlgoInput('startTime');\nexport const getBlotterEditedOrderEndDate = getBlotterEditedOrderAlgoInput('endDate');\nexport const getBlotterEditedOrderEndTime = getBlotterEditedOrderAlgoInput('endTime');\nexport const getBlotterEditedOrderIsGtc = getBlotterEditedOrderInput('isGtc');\nexport const getBlotterEditedOrderNoWorseThan = getBlotterEditedOrderAlgoInput('noWorseThan');\nexport const getBlotterEditedOrderSpeed = getBlotterEditedOrderAlgoInput('speed');\nexport const getBlotterEditedOrderAlphaSeeker = getBlotterEditedOrderAlgoInput('alphaSeeker');\nexport const getBlotterEditedOrderClippingModeInput = getBlotterEditedOrderAlgoInput('clippingMode');\nexport const getBlotterEditedOrderClipSizeInput = getBlotterEditedOrderAlgoInput('clipSize');\nexport const getBlotterEditedOrderRandomize = getBlotterEditedOrderAlgoInput('randomize');\nexport const getBlotterEditedOrderSpreadCapture = getBlotterEditedOrderAlgoInput('spreadCapture');\n\nexport function getBlotterEditedOrderIsModified(state: AppState, orderId: string) {\n const inputs = getBlotterEditedOrderById(state, orderId).inputs;\n return Object.keys(inputs).length !== 0;\n}\nexport function getBlotterEditedOrderIsValid(state: AppState, orderId: string) {\n const errors = getBlotterEditedOrderById(state, orderId).errors;\n return Object.keys(errors).length === 0;\n}\n\nexport const getBlotteEditedrOrderIsReadyToSubmit = (state: AppState, orderId: string) =>\n getBlotterEditedOrderById(state, orderId).isReadyToSubmit;\n\nexport const getBlotterEditedOrderNotional = (quoteId: string) =>\n createSelector([(state: AppState) => getBlotterEditedOrderNotionalInput(state, quoteId)], notionalInput =>\n fieldData(notionalInput).data?.toString(),\n );\n\nexport const getBlotterEditedOrderClippingMode = (quoteId: string) =>\n createSelector(\n [(state: AppState) => getBlotterEditedOrderClippingModeInput(state, quoteId)],\n clippingMode => fieldData(clippingMode).data,\n );\n\nexport const getBlotterEditedOrderClipSize = (quoteId: string) =>\n createSelector(\n [(state: AppState) => getBlotterEditedOrderClipSizeInput(state, quoteId)],\n clipSize => fieldData(clipSize).data,\n );\n\nfunction getUserInfo(state: AppState) {\n return state.referenceData.userInfo;\n}\nfunction isUserInternalSales(state: AppState) {\n return getUserInfo(state).userType === 'Internal Sales';\n}\nexport const getBlotterEditedOrderLimitPrice = (quoteId: string) =>\n createSelector(\n [\n (state: AppState) => isUserInternalSales(state),\n (state: AppState) => getBlotterEditedOrderProduct(state, quoteId),\n (state: AppState) => getBlotterEditedOrderLimitPriceInput(state, quoteId),\n (state: AppState) => getBlotterEditedOrderCustomerPriceInput(state, quoteId),\n ],\n (isInternalSales, orderProduct, limitPriceInput, customerPriceInput) => {\n const isTakeProfit = fieldData(orderProduct).data === 'TakeProfit';\n const limitPriceInputValue = fieldData(limitPriceInput).data;\n const customerPriceInputValue = fieldData(customerPriceInput).data;\n\n return isTakeProfit && !isInternalSales\n ? customerPriceInputValue?.toString() ?? ''\n : limitPriceInputValue?.toString() ?? '';\n },\n );\n\nexport const getBlotterEditedOrderCustomerPrice = (quoteId: string) =>\n createSelector([(state: AppState) => getBlotterEditedOrderCustomerPriceInput(state, quoteId)], customerPriceInput =>\n fieldData(customerPriceInput).data?.toString(),\n );\n\nexport const getBlotterEditedOrderTakeProfitMargin = (quoteId: string) =>\n createSelector(\n [(state: AppState) => getBlotterEditedOrderTakeProfitMarginInput(state, quoteId)],\n takeProfitMarginInput => fieldData(takeProfitMarginInput).data?.toString(),\n );\n","import type { AppState } from 'state/model';\nimport type { Instrument } from 'state/referenceData/referenceDataModel';\nimport { getTileState } from 'state/clientWorkspace/selectors';\nimport { getOptionMetadata } from 'state/fxOptions/selectors/factories';\nimport { getCashMetadata } from 'state/fxCashs/selectors/factories';\nimport { getSwapMetadata } from 'state/fxSwaps/selectors/factories';\nimport { getBulkMetadata } from 'state/fxBulks/selectors/factories';\nimport { getOrderMetadata } from 'state/fxOrders/selectors/factories';\nimport { getAccumulatorMetadata } from 'state/fxAccumulators/selectors/factories';\nimport type { IFxTileMetadata } from '../fxTileModel';\nimport { getBlotterOrderAlgoMetadata } from 'state/blotter/selectors/blotterOrderSelectors';\n\ntype TileSelector = (state: AppState, tileId: string) => T;\n\ntype InstrumentSelectors = Record>;\n\nexport function tileSelector(instrumentSelectors: InstrumentSelectors): TileSelector {\n return (state, tileId) =>\n instrumentSelectors[getTileState(state, tileId).instrument](state, tileId);\n}\n\ntype SharedMetadata = keyof IFxTileMetadata;\n\nexport function getTileMetadata(property: T) {\n return tileSelector({\n Option: getOptionMetadata(property),\n Cash: getCashMetadata(property),\n Swap: getSwapMetadata(property),\n Bulk: getBulkMetadata(property),\n Accumulator: getAccumulatorMetadata(property),\n Order: getOrderMetadata(property as any),\n BlotterOrder: getBlotterOrderAlgoMetadata(property as any),\n });\n}\n","import { getOptionInput } from './factories';\nexport type { OptionSharedPropertyStatus } from './factories';\n\nexport const getOptionCurrencyPair = getOptionInput('currencyPair');\nexport const getOptionMarkupCurrency = getOptionInput('markupCurrency');\nexport const getOptionPremiumDate = getOptionInput('premiumDate');\nexport const getOptionPremiumDateTenor = getOptionInput('premiumDateTenor');\nexport const getOptionHedgeType = getOptionInput('hedgeType');\nexport const getOptionAmountReference = getOptionInput('amountReference');\n","import { getCashInput } from './factories';\n\nexport const getCashCurrencyPair = getCashInput('currencyPair');\nexport const getCashIsNonDeliverable = getCashInput('isNonDeliverable');\nexport const getCashAmountCurrency = getCashInput('amountCurrency');\nexport const getCashMaturityDate = getCashInput('maturityDate');\nexport const getCashFixingSource = getCashInput('fixingSource');\nexport const getCashFixingCurrency = getCashInput('fixingCurrency');\nexport const getCashXCurrency = getCashInput('xCurrency');\nexport const getCashSndFixingSource = getCashInput('sndFixingSource');\nexport const getCashMaturityDateTenor = getCashInput('maturityDateTenor');\nexport const getCashAmount = getCashInput('amount');\n","import { getSwapInput } from './factories';\n\nexport const getSwapCurrencyPair = getSwapInput('currencyPair');\nexport const getSwapIsNonDeliverable = getSwapInput('isNonDeliverable');\nexport const getSwapIsUneven = getSwapInput('isUneven');\nexport const getSwapIsOffMarket = getSwapInput('isOffMarket');\nexport const getSwapNearAmount = getSwapInput('nearAmount');\nexport const getSwapFarAmount = getSwapInput('farAmount');\nexport const getSwapAmountCurrency = getSwapInput('amountCurrency');\nexport const getSwapNearPaymentDate = getSwapInput('nearPaymentDate');\nexport const getSwapNearPaymentDateTenor = getSwapInput('nearPaymentDateTenor');\nexport const getSwapFarPaymentDate = getSwapInput('farPaymentDate');\nexport const getSwapFarPaymentDateTenor = getSwapInput('farPaymentDateTenor');\nexport const getSwapNearPrice = getSwapInput('nearPriceReference');\nexport const getSwapFarPrice = getSwapInput('farPriceReference');\nexport const getSwapFixingSource = getSwapInput('fixingSource');\nexport const getSwapSndFixingSource = getSwapInput('sndFixingSource');\n","import { getAccumulatorValue, getForwardAccumulatorValue, getTargetAccumulatorValue } from './factories';\n\nexport const getAccumulatorProductName = getAccumulatorValue('productName');\n\nexport const getAccumulatorPossibleHedgeTypes = getAccumulatorValue('possibleHedgeTypes');\n\nexport const getAccumulatorHedgePaymentDate = getAccumulatorValue('hedgePaymentDate');\n\n// export const getAccumulatorHedgeNotional = getAccumulatorValue('hedgeNotional');\nexport const getAccumulatorPossiblePriceTypes = getAccumulatorValue('possiblePriceTypes');\n\nexport const getAccumulatorTargetProfitTypeList = getAccumulatorValue('targetProfitTypeList');\n\nexport const getAccumulatorFixingFrequenciesList = getAccumulatorValue('fixingFrequenciesList');\n\nexport const getAccumulatorSettlementModeList = getAccumulatorValue('settlementModeList');\n\nexport const getAccumulatorCashSettlementCurrencyList = getAccumulatorValue('cashSettlementCurrencyList');\n\nexport const getAccumulatorSettlementFrequenciesList = getAccumulatorValue('settlementFrequenciesList');\n\nexport const getAccumulatorFixingReferencesList1 = getAccumulatorValue('fixingReferencesList1');\n\nexport const getAccumulatorFixingReferencesList2 = getAccumulatorValue('fixingReferencesList2');\n\nexport const getAccumulatorCalendar = getAccumulatorValue('calendar');\n\nexport const getAccumulatorDeliveryDate = getAccumulatorValue('deliveryDate');\n\nexport const getAccumulatorCutOffMarketPlace = getAccumulatorValue('cutOffMarketPlace');\n\nexport const getAccumulatorLastFixingDate = getAccumulatorValue('lastFixingDate');\n\nexport const getAccumulatorTotalLeverageAmount = getAccumulatorValue('totalLeverage');\n\nexport const getAccumulatorTotalNotionalAmount = getAccumulatorValue('totalNotional');\n\nexport const getAccumulatorCustomFields = getAccumulatorValue('customFields');\n\nexport const getAccumulatorPossibleCrossCurrencies = getAccumulatorValue('possibleCrossCurrencies');\n\nexport const getAccumulatorDefaultFixingReference1 = getAccumulatorValue('defaultFixingReference1');\n\nexport const getAccumulatorDefaultFixingReference2 = getAccumulatorValue('defaultFixingReference2');\n\nexport const getAccumulatorStrikeComparator = getAccumulatorValue('strikeComparator');\n\nexport const getForwardAccumulatorAccuType = getForwardAccumulatorValue('accuType');\n\nexport const getTargetAccumulatorAccuType = getTargetAccumulatorValue('accuType');\n\nexport const getTargetAccuTypeList = getTargetAccumulatorValue('possibleAccuTypeList');\n\nexport const getAccumulatorBarrier = getAccumulatorValue('barrier');\n\nexport const getAccumulatorStepDown = getAccumulatorValue('stepDown');\n\nexport const getAccumulatorStepUp = getAccumulatorValue('stepUp');\n","export const calendarProperties = [\n 'fixingDate',\n 'paymentDate',\n 'EKI',\n 'strike',\n 'ekiUp',\n 'strikeUp',\n 'PIVOT',\n 'strikeDown',\n 'ekiDown',\n 'step',\n 'amount',\n 'leverageAmount',\n 'deleteIcon',\n] as const;\n\nexport type SchedulerCalendarProperty = (typeof calendarProperties)[number];\n","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\n\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n\n date.setDate(date.getDate() + amount);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\n\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n\n var dayOfMonth = date.getDate(); // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\n\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 60000;\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\n\nexport default function addMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\n\nexport default function addYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n/**\n * Days in 1 year\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * @name daysInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var daysInYear = 365.2425;\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\n\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInMinute = 60000;\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInHour = 3600000;\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInSecond = 1000;\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\n\nexport var minTime = -maxTime;\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var minutesInHour = 60;\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\n\nexport var monthsInQuarter = 3;\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var monthsInYear = 12;\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var quartersInYear = 4;\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInHour = 3600;\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInMinute = 60;\n/**\n * Seconds in 1 day\n *\n * @name secondsInDay\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInDay = secondsInHour * 24;\n/**\n * Seconds in 1 week\n *\n * @name secondsInWeek\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInWeek = secondsInDay * 7;\n/**\n * Seconds in 1 year\n *\n * @name secondsInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInYear = secondsInDay * daysInYear;\n/**\n * Seconds in 1 month\n *\n * @name secondsInMonth\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInMonth = secondsInYear / 12;\n/**\n * Seconds in 1 quarter\n *\n * @name secondsInQuarter\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInQuarter = secondsInMonth * 3;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\n\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\n\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\n\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setDate(date.getDate() + diff);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n\n case 'aaa':\n return dayPeriodEnumValue;\n\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n } // Ordinal number\n\n\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n } // Padding\n\n\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z';\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n\n return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n\nexport default formatters;","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\n\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\n\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\n\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\n\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n\n return valuesArray[index];\n };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n}; // Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\n\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n};\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\n\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n\n return undefined;\n}","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","export default function assign(target, object) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n\n for (var property in object) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n ;\n target[property] = object[property];\n }\n }\n\n return target;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\n\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\n\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isFuture\n * @category Common Helpers\n * @summary Is the given date in the future?\n * @pure false\n *\n * @description\n * Is the given date in the future?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in the future\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 31 December 2014 in the future?\n * const result = isFuture(new Date(2014, 11, 31))\n * //=> true\n */\n\nexport default function isFuture(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getTime() > Date.now();\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar TIMEZONE_UNIT_PRIORITY = 10;\nexport var Setter = /*#__PURE__*/function () {\n function Setter() {\n _classCallCheck(this, Setter);\n\n _defineProperty(this, \"subPriority\", 0);\n }\n\n _createClass(Setter, [{\n key: \"validate\",\n value: function validate(_utcDate, _options) {\n return true;\n }\n }]);\n\n return Setter;\n}();\nexport var ValueSetter = /*#__PURE__*/function (_Setter) {\n _inherits(ValueSetter, _Setter);\n\n var _super = _createSuper(ValueSetter);\n\n function ValueSetter(value, validateValue, setValue, priority, subPriority) {\n var _this;\n\n _classCallCheck(this, ValueSetter);\n\n _this = _super.call(this);\n _this.value = value;\n _this.validateValue = validateValue;\n _this.setValue = setValue;\n _this.priority = priority;\n\n if (subPriority) {\n _this.subPriority = subPriority;\n }\n\n return _this;\n }\n\n _createClass(ValueSetter, [{\n key: \"validate\",\n value: function validate(utcDate, options) {\n return this.validateValue(utcDate, this.value, options);\n }\n }, {\n key: \"set\",\n value: function set(utcDate, flags, options) {\n return this.setValue(utcDate, flags, this.value, options);\n }\n }]);\n\n return ValueSetter;\n}(Setter);\nexport var DateToSystemTimezoneSetter = /*#__PURE__*/function (_Setter2) {\n _inherits(DateToSystemTimezoneSetter, _Setter2);\n\n var _super2 = _createSuper(DateToSystemTimezoneSetter);\n\n function DateToSystemTimezoneSetter() {\n var _this2;\n\n _classCallCheck(this, DateToSystemTimezoneSetter);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this2 = _super2.call.apply(_super2, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this2), \"priority\", TIMEZONE_UNIT_PRIORITY);\n\n _defineProperty(_assertThisInitialized(_this2), \"subPriority\", -1);\n\n return _this2;\n }\n\n _createClass(DateToSystemTimezoneSetter, [{\n key: \"set\",\n value: function set(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n }\n }]);\n\n return DateToSystemTimezoneSetter;\n}(Setter);","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { ValueSetter } from \"./Setter.js\";\nexport var Parser = /*#__PURE__*/function () {\n function Parser() {\n _classCallCheck(this, Parser);\n }\n\n _createClass(Parser, [{\n key: \"run\",\n value: function run(dateString, token, match, options) {\n var result = this.parse(dateString, token, match, options);\n\n if (!result) {\n return null;\n }\n\n return {\n setter: new ValueSetter(result.value, this.validate, this.set, this.priority, this.subPriority),\n rest: result.rest\n };\n }\n }, {\n key: \"validate\",\n value: function validate(_utcDate, _value, _options) {\n return true;\n }\n }]);\n\n return Parser;\n}();","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nexport var EraParser = /*#__PURE__*/function (_Parser) {\n _inherits(EraParser, _Parser);\n\n var _super = _createSuper(EraParser);\n\n function EraParser() {\n var _this;\n\n _classCallCheck(this, EraParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 140);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['R', 'u', 't', 'T']);\n\n return _this;\n }\n\n _createClass(EraParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n // A, B\n\n case 'GGGGG':\n return match.era(dateString, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return match.era(dateString, {\n width: 'wide'\n }) || match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return EraParser;\n}(Parser);","export var numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n\n};\nexport var timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};","import { millisecondsInHour, millisecondsInMinute, millisecondsInSecond } from \"../../constants/index.js\";\nimport { numericPatterns } from \"./constants.js\";\nexport function mapValue(parseFnResult, mapFn) {\n if (!parseFnResult) {\n return parseFnResult;\n }\n\n return {\n value: mapFn(parseFnResult.value),\n rest: parseFnResult.rest\n };\n}\nexport function parseNumericPattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n return {\n value: parseInt(matchResult[0], 10),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseTimezonePattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n\n if (!matchResult) {\n return null;\n } // Input is 'Z'\n\n\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: dateString.slice(1)\n };\n }\n\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * millisecondsInSecond),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseAnyDigitsSigned(dateString) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\nexport function parseNDigits(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, dateString);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, dateString);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, dateString);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, dateString);\n\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function parseNDigitsSigned(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function dayPeriodEnumToHours(dayPeriod) {\n switch (dayPeriod) {\n case 'morning':\n return 4;\n\n case 'evening':\n return 17;\n\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0; // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result;\n}\nexport function isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year | y | yy | yyy | yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n// | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n// | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n// | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nexport var YearParser = /*#__PURE__*/function (_Parser) {\n _inherits(YearParser, _Parser);\n\n var _super = _createSuper(YearParser);\n\n function YearParser() {\n var _this;\n\n _classCallCheck(this, YearParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(YearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n\n switch (token) {\n case 'y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n\n case 'yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n var currentYear = date.getUTCFullYear();\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return YearParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits, normalizeTwoDigitYear, mapValue } from \"../utils.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\";\n// Local week-numbering year\nexport var LocalWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekYearParser, _Parser);\n\n var _super = _createSuper(LocalWeekYearParser);\n\n function LocalWeekYearParser() {\n var _this;\n\n _classCallCheck(this, LocalWeekYearParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n\n return _this;\n }\n\n _createClass(LocalWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n\n switch (token) {\n case 'Y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n\n case 'Yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n }]);\n\n return LocalWeekYearParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week-numbering year\n\nexport var ISOWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekYearParser, _Parser);\n\n var _super = _createSuper(ISOWeekYearParser);\n\n function ISOWeekYearParser() {\n var _this;\n\n _classCallCheck(this, ISOWeekYearParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(ISOWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'R') {\n return parseNDigitsSigned(4, dateString);\n }\n\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n }\n }]);\n\n return ISOWeekYearParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nexport var ExtendedYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ExtendedYearParser, _Parser);\n\n var _super = _createSuper(ExtendedYearParser);\n\n function ExtendedYearParser() {\n var _this;\n\n _classCallCheck(this, ExtendedYearParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(ExtendedYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'u') {\n return parseNDigitsSigned(4, dateString);\n }\n\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return ExtendedYearParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var QuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(QuarterParser, _Parser);\n\n var _super = _createSuper(QuarterParser);\n\n function QuarterParser() {\n var _this;\n\n _classCallCheck(this, QuarterParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(QuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return QuarterParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var StandAloneQuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneQuarterParser, _Parser);\n\n var _super = _createSuper(StandAloneQuarterParser);\n\n function StandAloneQuarterParser() {\n var _this;\n\n _classCallCheck(this, StandAloneQuarterParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(StandAloneQuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return StandAloneQuarterParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nexport var MonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(MonthParser, _Parser);\n\n var _super = _createSuper(MonthParser);\n\n function MonthParser() {\n var _this;\n\n _classCallCheck(this, MonthParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n\n return _this;\n }\n\n _createClass(MonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n\n case 'MM':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return MonthParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, mapValue } from \"../utils.js\";\nexport var StandAloneMonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneMonthParser, _Parser);\n\n var _super = _createSuper(StandAloneMonthParser);\n\n function StandAloneMonthParser() {\n var _this;\n\n _classCallCheck(this, StandAloneMonthParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(StandAloneMonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n\n case 'LL':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return StandAloneMonthParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCWeek from \"../getUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCWeek from \"../../../_lib/setUTCWeek/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\"; // Local week of year\n\nexport var LocalWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekParser, _Parser);\n\n var _super = _createSuper(LocalWeekParser);\n\n function LocalWeekParser() {\n var _this;\n\n _classCallCheck(this, LocalWeekParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n\n return _this;\n }\n\n _createClass(LocalWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, dateString);\n\n case 'wo':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n }\n }]);\n\n return LocalWeekParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCISOWeek from \"../getUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCISOWeek from \"../../../_lib/setUTCISOWeek/index.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week of year\n\nexport var ISOWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekParser, _Parser);\n\n var _super = _createSuper(ISOWeekParser);\n\n function ISOWeekParser() {\n var _this;\n\n _classCallCheck(this, ISOWeekParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(ISOWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, dateString);\n\n case 'Io':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value));\n }\n }]);\n\n return ISOWeekParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { isLeapYearIndex, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // Day of the month\n\nexport var DateParser = /*#__PURE__*/function (_Parser) {\n _inherits(DateParser, _Parser);\n\n var _super = _createSuper(DateParser);\n\n function DateParser() {\n var _this;\n\n _classCallCheck(this, DateParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n\n _defineProperty(_assertThisInitialized(_this), \"subPriority\", 1);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(DateParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, dateString);\n\n case 'do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return DateParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, isLeapYearIndex } from \"../utils.js\";\nexport var DayOfYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayOfYearParser, _Parser);\n\n var _super = _createSuper(DayOfYearParser);\n\n function DayOfYearParser() {\n var _this;\n\n _classCallCheck(this, DayOfYearParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n\n _defineProperty(_assertThisInitialized(_this), \"subpriority\", 1);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(DayOfYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n\n case 'Do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return DayOfYearParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function setUTCDay(dirtyDate, dirtyDay, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Day of week\n\nexport var DayParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayParser, _Parser);\n\n var _super = _createSuper(DayParser);\n\n function DayParser() {\n var _this;\n\n _classCallCheck(this, DayParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['D', 'i', 'e', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(DayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return DayParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Local day of week\n\nexport var LocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalDayParser, _Parser);\n\n var _super = _createSuper(LocalDayParser);\n\n function LocalDayParser() {\n var _this;\n\n _classCallCheck(this, LocalDayParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(LocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n\n case 'eo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n\n case 'eee':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return LocalDayParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Stand-alone local day of week\n\nexport var StandAloneLocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneLocalDayParser, _Parser);\n\n var _super = _createSuper(StandAloneLocalDayParser);\n\n function StandAloneLocalDayParser() {\n var _this;\n\n _classCallCheck(this, StandAloneLocalDayParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']);\n\n return _this;\n }\n\n _createClass(StandAloneLocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n\n case 'co':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n\n case 'ccc':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return StandAloneLocalDayParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var day = toInteger(dirtyDay);\n\n if (day % 7 === 0) {\n day = day - 7;\n }\n\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCISODay from \"../../../_lib/setUTCISODay/index.js\"; // ISO day of week\n\nexport var ISODayParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISODayParser, _Parser);\n\n var _super = _createSuper(ISODayParser);\n\n function ISODayParser() {\n var _this;\n\n _classCallCheck(this, ISODayParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']);\n\n return _this;\n }\n\n _createClass(ISODayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n if (value === 0) {\n return 7;\n }\n\n return value;\n };\n\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, dateString);\n // 2nd\n\n case 'io':\n return match.ordinalNumber(dateString, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return mapValue(match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // T\n\n case 'iiiii':\n return mapValue(match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tu\n\n case 'iiiiii':\n return mapValue(match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tuesday\n\n case 'iiii':\n default:\n return mapValue(match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 7;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date = setUTCISODay(date, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return ISODayParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMParser, _Parser);\n\n var _super = _createSuper(AMPMParser);\n\n function AMPMParser() {\n var _this;\n\n _classCallCheck(this, AMPMParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['b', 'B', 'H', 'k', 't', 'T']);\n\n return _this;\n }\n\n _createClass(AMPMParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n\n return AMPMParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMMidnightParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMMidnightParser, _Parser);\n\n var _super = _createSuper(AMPMMidnightParser);\n\n function AMPMMidnightParser() {\n var _this;\n\n _classCallCheck(this, AMPMMidnightParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'B', 'H', 'k', 't', 'T']);\n\n return _this;\n }\n\n _createClass(AMPMMidnightParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n\n return AMPMMidnightParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\"; // in the morning, in the afternoon, in the evening, at night\n\nexport var DayPeriodParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayPeriodParser, _Parser);\n\n var _super = _createSuper(DayPeriodParser);\n\n function DayPeriodParser() {\n var _this;\n\n _classCallCheck(this, DayPeriodParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 't', 'T']);\n\n return _this;\n }\n\n _createClass(DayPeriodParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n\n return DayPeriodParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1to12Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1to12Parser, _Parser);\n\n var _super = _createSuper(Hour1to12Parser);\n\n function Hour1to12Parser() {\n var _this;\n\n _classCallCheck(this, Hour1to12Parser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['H', 'K', 'k', 't', 'T']);\n\n return _this;\n }\n\n _createClass(Hour1to12Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, dateString);\n\n case 'ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 12;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n }\n }]);\n\n return Hour1to12Parser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0to23Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0to23Parser, _Parser);\n\n var _super = _createSuper(Hour0to23Parser);\n\n function Hour0to23Parser() {\n var _this;\n\n _classCallCheck(this, Hour0to23Parser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'K', 'k', 't', 'T']);\n\n return _this;\n }\n\n _createClass(Hour0to23Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, dateString);\n\n case 'Ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 23;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n }\n }]);\n\n return Hour0to23Parser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0To11Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0To11Parser, _Parser);\n\n var _super = _createSuper(Hour0To11Parser);\n\n function Hour0To11Parser() {\n var _this;\n\n _classCallCheck(this, Hour0To11Parser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['h', 'H', 'k', 't', 'T']);\n\n return _this;\n }\n\n _createClass(Hour0To11Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, dateString);\n\n case 'Ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n }\n }]);\n\n return Hour0To11Parser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1To24Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1To24Parser, _Parser);\n\n var _super = _createSuper(Hour1To24Parser);\n\n function Hour1To24Parser() {\n var _this;\n\n _classCallCheck(this, Hour1To24Parser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'H', 'K', 't', 'T']);\n\n return _this;\n }\n\n _createClass(Hour1To24Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, dateString);\n\n case 'ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 24;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n }\n }]);\n\n return Hour1To24Parser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var MinuteParser = /*#__PURE__*/function (_Parser) {\n _inherits(MinuteParser, _Parser);\n\n var _super = _createSuper(MinuteParser);\n\n function MinuteParser() {\n var _this;\n\n _classCallCheck(this, MinuteParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 60);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n\n return _this;\n }\n\n _createClass(MinuteParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, dateString);\n\n case 'mo':\n return match.ordinalNumber(dateString, {\n unit: 'minute'\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n }\n }]);\n\n return MinuteParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var SecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(SecondParser, _Parser);\n\n var _super = _createSuper(SecondParser);\n\n function SecondParser() {\n var _this;\n\n _classCallCheck(this, SecondParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 50);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n\n return _this;\n }\n\n _createClass(SecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, dateString);\n\n case 'so':\n return match.ordinalNumber(dateString, {\n unit: 'second'\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCSeconds(value, 0);\n return date;\n }\n }]);\n\n return SecondParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nexport var FractionOfSecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(FractionOfSecondParser, _Parser);\n\n var _super = _createSuper(FractionOfSecondParser);\n\n function FractionOfSecondParser() {\n var _this;\n\n _classCallCheck(this, FractionOfSecondParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 30);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n\n return _this;\n }\n\n _createClass(FractionOfSecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n var valueCallback = function valueCallback(value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMilliseconds(value);\n return date;\n }\n }]);\n\n return FractionOfSecondParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601. +00:00 is `'Z'`)\n\nexport var ISOTimezoneWithZParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneWithZParser, _Parser);\n\n var _super = _createSuper(ISOTimezoneWithZParser);\n\n function ISOTimezoneWithZParser() {\n var _this;\n\n _classCallCheck(this, ISOTimezoneWithZParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'x']);\n\n return _this;\n }\n\n _createClass(ISOTimezoneWithZParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n }\n }]);\n\n return ISOTimezoneWithZParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601)\n\nexport var ISOTimezoneParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneParser, _Parser);\n\n var _super = _createSuper(ISOTimezoneParser);\n\n function ISOTimezoneParser() {\n var _this;\n\n _classCallCheck(this, ISOTimezoneParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'X']);\n\n return _this;\n }\n\n _createClass(ISOTimezoneParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n }\n }]);\n\n return ISOTimezoneParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampSecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampSecondsParser, _Parser);\n\n var _super = _createSuper(TimestampSecondsParser);\n\n function TimestampSecondsParser() {\n var _this;\n\n _classCallCheck(this, TimestampSecondsParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 40);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n\n return _this;\n }\n\n _createClass(TimestampSecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n }\n }]);\n\n return TimestampSecondsParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampMillisecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampMillisecondsParser, _Parser);\n\n var _super = _createSuper(TimestampMillisecondsParser);\n\n function TimestampMillisecondsParser() {\n var _this;\n\n _classCallCheck(this, TimestampMillisecondsParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"priority\", 20);\n\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n\n return _this;\n }\n\n _createClass(TimestampMillisecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n }\n }]);\n\n return TimestampMillisecondsParser;\n}(Parser);","import { EraParser } from \"./EraParser.js\";\nimport { YearParser } from \"./YearParser.js\";\nimport { LocalWeekYearParser } from \"./LocalWeekYearParser.js\";\nimport { ISOWeekYearParser } from \"./ISOWeekYearParser.js\";\nimport { ExtendedYearParser } from \"./ExtendedYearParser.js\";\nimport { QuarterParser } from \"./QuarterParser.js\";\nimport { StandAloneQuarterParser } from \"./StandAloneQuarterParser.js\";\nimport { MonthParser } from \"./MonthParser.js\";\nimport { StandAloneMonthParser } from \"./StandAloneMonthParser.js\";\nimport { LocalWeekParser } from \"./LocalWeekParser.js\";\nimport { ISOWeekParser } from \"./ISOWeekParser.js\";\nimport { DateParser } from \"./DateParser.js\";\nimport { DayOfYearParser } from \"./DayOfYearParser.js\";\nimport { DayParser } from \"./DayParser.js\";\nimport { LocalDayParser } from \"./LocalDayParser.js\";\nimport { StandAloneLocalDayParser } from \"./StandAloneLocalDayParser.js\";\nimport { ISODayParser } from \"./ISODayParser.js\";\nimport { AMPMParser } from \"./AMPMParser.js\";\nimport { AMPMMidnightParser } from \"./AMPMMidnightParser.js\";\nimport { DayPeriodParser } from \"./DayPeriodParser.js\";\nimport { Hour1to12Parser } from \"./Hour1to12Parser.js\";\nimport { Hour0to23Parser } from \"./Hour0to23Parser.js\";\nimport { Hour0To11Parser } from \"./Hour0To11Parser.js\";\nimport { Hour1To24Parser } from \"./Hour1To24Parser.js\";\nimport { MinuteParser } from \"./MinuteParser.js\";\nimport { SecondParser } from \"./SecondParser.js\";\nimport { FractionOfSecondParser } from \"./FractionOfSecondParser.js\";\nimport { ISOTimezoneWithZParser } from \"./ISOTimezoneWithZParser.js\";\nimport { ISOTimezoneParser } from \"./ISOTimezoneParser.js\";\nimport { TimestampSecondsParser } from \"./TimestampSecondsParser.js\";\nimport { TimestampMillisecondsParser } from \"./TimestampMillisecondsParser.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\n\nexport var parsers = {\n G: new EraParser(),\n y: new YearParser(),\n Y: new LocalWeekYearParser(),\n R: new ISOWeekYearParser(),\n u: new ExtendedYearParser(),\n Q: new QuarterParser(),\n q: new StandAloneQuarterParser(),\n M: new MonthParser(),\n L: new StandAloneMonthParser(),\n w: new LocalWeekParser(),\n I: new ISOWeekParser(),\n d: new DateParser(),\n D: new DayOfYearParser(),\n E: new DayParser(),\n e: new LocalDayParser(),\n c: new StandAloneLocalDayParser(),\n i: new ISODayParser(),\n a: new AMPMParser(),\n b: new AMPMMidnightParser(),\n B: new DayPeriodParser(),\n h: new Hour1to12Parser(),\n H: new Hour0to23Parser(),\n K: new Hour0To11Parser(),\n k: new Hour1To24Parser(),\n m: new MinuteParser(),\n s: new SecondParser(),\n S: new FractionOfSecondParser(),\n X: new ISOTimezoneWithZParser(),\n x: new ISOTimezoneParser(),\n t: new TimestampSecondsParser(),\n T: new TimestampMillisecondsParser()\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { DateToSystemTimezoneSetter } from \"./_lib/Setter.js\";\nimport { parsers } from \"./_lib/parsers/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\n\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n\n requiredArgs(3, arguments);\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyReferenceDate);\n } else {\n return new Date(NaN);\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n }; // If timezone isn't specified, it will be set to the system timezone\n\n var setters = [new DateToSystemTimezoneSetter()];\n var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter in longFormatters) {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n\n var _iterator = _createForOfIteratorHelper(tokens),\n _step;\n\n try {\n var _loop = function _loop() {\n var token = _step.value;\n\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = usedTokens.find(function (usedToken) {\n return incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter;\n });\n\n if (incompatibleToken) {\n throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n }\n } else if (parser.incompatibleTokens === '*' && usedTokens.length > 0) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.run(dateString, token, locale.match, subFnOptions);\n\n if (!parseResult) {\n return {\n v: new Date(NaN)\n };\n }\n\n setters.push(parseResult.setter);\n dateString = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n } // Replace two single quote characters with one single quote character\n\n\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n } // Cut token from string, or, if string doesn't match the token, return Invalid Date\n\n\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return {\n v: new Date(NaN)\n };\n }\n }\n };\n\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _ret = _loop();\n\n if (_typeof(_ret) === \"object\") return _ret.v;\n } // Check if the remaining input contains something other than whitespace\n\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).sort(function (a, b) {\n return b.subPriority - a.subPriority;\n });\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyReferenceDate);\n\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n\n\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n\n var _iterator2 = _createForOfIteratorHelper(uniquePrioritySetters),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var setter = _step2.value;\n\n if (!setter.validate(utcDate, subFnOptions)) {\n return new Date(NaN);\n }\n\n var result = setter.set(utcDate, flags, subFnOptions); // Result is tuple (date, flags)\n\n if (Array.isArray(result)) {\n utcDate = result[0];\n assign(flags, result[1]); // Result is date\n } else {\n utcDate = result;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return utcDate;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name isSameWeek\n * @category Week Helpers\n * @summary Are the given dates in the same week (and month and year)?\n *\n * @description\n * Are the given dates in the same week (and month and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Boolean} the dates are in the same week (and month and year)\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Are 31 August 2014 and 4 September 2014 in the same week?\n * const result = isSameWeek(new Date(2014, 7, 31), new Date(2014, 8, 4))\n * //=> true\n *\n * @example\n * // If week starts with Monday,\n * // are 31 August 2014 and 4 September 2014 in the same week?\n * const result = isSameWeek(new Date(2014, 7, 31), new Date(2014, 8, 4), {\n * weekStartsOn: 1\n * })\n * //=> false\n *\n * @example\n * // Are 1 January 2014 and 1 January 2015 in the same week?\n * const result = isSameWeek(new Date(2014, 0, 1), new Date(2015, 0, 1))\n * //=> false\n */\nexport default function isSameWeek(dirtyDateLeft, dirtyDateRight, options) {\n requiredArgs(2, arguments);\n var dateLeftStartOfWeek = startOfWeek(dirtyDateLeft, options);\n var dateRightStartOfWeek = startOfWeek(dirtyDateRight, options);\n return dateLeftStartOfWeek.getTime() === dateRightStartOfWeek.getTime();\n}","import { millisecondsInHour, millisecondsInMinute } from \"../constants/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\n\nexport default function parseISO(argument, options) {\n var _options$additionalDi;\n\n requiredArgs(1, arguments);\n var additionalDigits = toInteger((_options$additionalDi = options === null || options === void 0 ? void 0 : options.additionalDigits) !== null && _options$additionalDi !== void 0 ? _options$additionalDi : 2);\n\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n\n var dateStrings = splitDateString(argument);\n var date;\n\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time); // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n\n var result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n\n return new Date(timestamp + time + offset);\n}\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString; // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n\n if (array.length > 2) {\n return dateStrings;\n }\n\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex); // Invalid ISO-formatted year\n\n if (!captures) return {\n year: NaN,\n restDateString: ''\n };\n var year = captures[1] ? parseInt(captures[1]) : null;\n var century = captures[2] ? parseInt(captures[2]) : null; // either year or century is null, not both\n\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n var captures = dateString.match(dateRegex); // Invalid ISO-formatted string\n\n if (!captures) return new Date(NaN);\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n\n return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\n\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n} // Validation functions\n// February is null to handle the leap year (using ||)\n\n\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\n\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n standalone: {\n one: 'weniger als 1 Sekunde',\n other: 'weniger als {{count}} Sekunden'\n },\n withPreposition: {\n one: 'weniger als 1 Sekunde',\n other: 'weniger als {{count}} Sekunden'\n }\n },\n xSeconds: {\n standalone: {\n one: '1 Sekunde',\n other: '{{count}} Sekunden'\n },\n withPreposition: {\n one: '1 Sekunde',\n other: '{{count}} Sekunden'\n }\n },\n halfAMinute: {\n standalone: 'halbe Minute',\n withPreposition: 'halben Minute'\n },\n lessThanXMinutes: {\n standalone: {\n one: 'weniger als 1 Minute',\n other: 'weniger als {{count}} Minuten'\n },\n withPreposition: {\n one: 'weniger als 1 Minute',\n other: 'weniger als {{count}} Minuten'\n }\n },\n xMinutes: {\n standalone: {\n one: '1 Minute',\n other: '{{count}} Minuten'\n },\n withPreposition: {\n one: '1 Minute',\n other: '{{count}} Minuten'\n }\n },\n aboutXHours: {\n standalone: {\n one: 'etwa 1 Stunde',\n other: 'etwa {{count}} Stunden'\n },\n withPreposition: {\n one: 'etwa 1 Stunde',\n other: 'etwa {{count}} Stunden'\n }\n },\n xHours: {\n standalone: {\n one: '1 Stunde',\n other: '{{count}} Stunden'\n },\n withPreposition: {\n one: '1 Stunde',\n other: '{{count}} Stunden'\n }\n },\n xDays: {\n standalone: {\n one: '1 Tag',\n other: '{{count}} Tage'\n },\n withPreposition: {\n one: '1 Tag',\n other: '{{count}} Tagen'\n }\n },\n aboutXWeeks: {\n standalone: {\n one: 'etwa 1 Woche',\n other: 'etwa {{count}} Wochen'\n },\n withPreposition: {\n one: 'etwa 1 Woche',\n other: 'etwa {{count}} Wochen'\n }\n },\n xWeeks: {\n standalone: {\n one: '1 Woche',\n other: '{{count}} Wochen'\n },\n withPreposition: {\n one: '1 Woche',\n other: '{{count}} Wochen'\n }\n },\n aboutXMonths: {\n standalone: {\n one: 'etwa 1 Monat',\n other: 'etwa {{count}} Monate'\n },\n withPreposition: {\n one: 'etwa 1 Monat',\n other: 'etwa {{count}} Monaten'\n }\n },\n xMonths: {\n standalone: {\n one: '1 Monat',\n other: '{{count}} Monate'\n },\n withPreposition: {\n one: '1 Monat',\n other: '{{count}} Monaten'\n }\n },\n aboutXYears: {\n standalone: {\n one: 'etwa 1 Jahr',\n other: 'etwa {{count}} Jahre'\n },\n withPreposition: {\n one: 'etwa 1 Jahr',\n other: 'etwa {{count}} Jahren'\n }\n },\n xYears: {\n standalone: {\n one: '1 Jahr',\n other: '{{count}} Jahre'\n },\n withPreposition: {\n one: '1 Jahr',\n other: '{{count}} Jahren'\n }\n },\n overXYears: {\n standalone: {\n one: 'mehr als 1 Jahr',\n other: 'mehr als {{count}} Jahre'\n },\n withPreposition: {\n one: 'mehr als 1 Jahr',\n other: 'mehr als {{count}} Jahren'\n }\n },\n almostXYears: {\n standalone: {\n one: 'fast 1 Jahr',\n other: 'fast {{count}} Jahre'\n },\n withPreposition: {\n one: 'fast 1 Jahr',\n other: 'fast {{count}} Jahren'\n }\n }\n};\n\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = options !== null && options !== void 0 && options.addSuffix ? formatDistanceLocale[token].withPreposition : formatDistanceLocale[token].standalone;\n\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', String(count));\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return 'vor ' + result;\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\n// DIN 5008: https://de.wikipedia.org/wiki/Datumsformat#DIN_5008\nvar dateFormats = {\n full: 'EEEE, do MMMM y',\n // Montag, 7. Januar 2018\n long: 'do MMMM y',\n // 7. Januar 2018\n medium: 'do MMM y',\n // 7. Jan. 2018\n short: 'dd.MM.y' // 07.01.2018\n\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'um' {{time}}\",\n long: \"{{date}} 'um' {{time}}\",\n medium: '{{date}} {{time}}',\n short: '{{date}} {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'letzten' eeee 'um' p\",\n yesterday: \"'gestern um' p\",\n today: \"'heute um' p\",\n tomorrow: \"'morgen um' p\",\n nextWeek: \"eeee 'um' p\",\n other: 'P'\n};\n\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['v.Chr.', 'n.Chr.'],\n abbreviated: ['v.Chr.', 'n.Chr.'],\n wide: ['vor Christus', 'nach Christus']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1. Quartal', '2. Quartal', '3. Quartal', '4. Quartal']\n}; // Note: in German, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\n\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],\n wide: ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember']\n}; // https://st.unicode.org/cldr-apps/v#/de/Gregorian/\n\nvar formattingMonthValues = {\n narrow: monthValues.narrow,\n abbreviated: ['Jan.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sep.', 'Okt.', 'Nov.', 'Dez.'],\n wide: monthValues.wide\n};\nvar dayValues = {\n narrow: ['S', 'M', 'D', 'M', 'D', 'F', 'S'],\n short: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],\n abbreviated: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'],\n wide: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag']\n}; // https://www.unicode.org/cldr/charts/32/summary/de.html#1881\n\nvar dayPeriodValues = {\n narrow: {\n am: 'vm.',\n pm: 'nm.',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'Morgen',\n afternoon: 'Nachm.',\n evening: 'Abend',\n night: 'Nacht'\n },\n abbreviated: {\n am: 'vorm.',\n pm: 'nachm.',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'Morgen',\n afternoon: 'Nachmittag',\n evening: 'Abend',\n night: 'Nacht'\n },\n wide: {\n am: 'vormittags',\n pm: 'nachmittags',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'Morgen',\n afternoon: 'Nachmittag',\n evening: 'Abend',\n night: 'Nacht'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'vm.',\n pm: 'nm.',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'morgens',\n afternoon: 'nachm.',\n evening: 'abends',\n night: 'nachts'\n },\n abbreviated: {\n am: 'vorm.',\n pm: 'nachm.',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'morgens',\n afternoon: 'nachmittags',\n evening: 'abends',\n night: 'nachts'\n },\n wide: {\n am: 'vormittags',\n pm: 'nachmittags',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'morgens',\n afternoon: 'nachmittags',\n evening: 'abends',\n night: 'nachts'\n }\n};\n\nvar ordinalNumber = function ordinalNumber(dirtyNumber) {\n var number = Number(dirtyNumber);\n return number + '.';\n};\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n formattingValues: formattingMonthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(\\.)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(v\\.? ?Chr\\.?|n\\.? ?Chr\\.?)/i,\n abbreviated: /^(v\\.? ?Chr\\.?|n\\.? ?Chr\\.?)/i,\n wide: /^(vor Christus|vor unserer Zeitrechnung|nach Christus|unserer Zeitrechnung)/i\n};\nvar parseEraPatterns = {\n any: [/^v/i, /^n/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](\\.)? Quartal/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(j[aä]n|feb|mär[z]?|apr|mai|jun[i]?|jul[i]?|aug|sep|okt|nov|dez)\\.?/i,\n wide: /^(januar|februar|märz|april|mai|juni|juli|august|september|oktober|november|dezember)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^j[aä]/i, /^f/i, /^mär/i, /^ap/i, /^mai/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smdmf]/i,\n short: /^(so|mo|di|mi|do|fr|sa)/i,\n abbreviated: /^(son?|mon?|die?|mit?|don?|fre?|sam?)\\.?/i,\n wide: /^(sonntag|montag|dienstag|mittwoch|donnerstag|freitag|samstag)/i\n};\nvar parseDayPatterns = {\n any: [/^so/i, /^mo/i, /^di/i, /^mi/i, /^do/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(vm\\.?|nm\\.?|Mitternacht|Mittag|morgens|nachm\\.?|abends|nachts)/i,\n abbreviated: /^(vorm\\.?|nachm\\.?|Mitternacht|Mittag|morgens|nachm\\.?|abends|nachts)/i,\n wide: /^(vormittags|nachmittags|Mitternacht|Mittag|morgens|nachmittags|abends|nachts)/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^v/i,\n pm: /^n/i,\n midnight: /^Mitte/i,\n noon: /^Mitta/i,\n morning: /morgens/i,\n afternoon: /nachmittags/i,\n // will never be matched. Afternoon is matched by `pm`\n evening: /abends/i,\n night: /nachts/i // will never be matched. Night is matched by `pm`\n\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary German locale.\n * @language German\n * @iso-639-2 deu\n * @author Thomas Eilmsteiner [@DeMuu]{@link https://github.com/DeMuu}\n * @author Asia [@asia-t]{@link https://github.com/asia-t}\n * @author Van Vuong Ngo [@vanvuongngo]{@link https://github.com/vanvuongngo}\n * @author RomanErnst [@pex]{@link https://github.com/pex}\n * @author Philipp Keck [@Philipp91]{@link https://github.com/Philipp91}\n */\nvar locale = {\n code: 'de',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */\n ,\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'moins d’une seconde',\n other: 'moins de {{count}} secondes'\n },\n xSeconds: {\n one: '1 seconde',\n other: '{{count}} secondes'\n },\n halfAMinute: '30 secondes',\n lessThanXMinutes: {\n one: 'moins d’une minute',\n other: 'moins de {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'environ 1 heure',\n other: 'environ {{count}} heures'\n },\n xHours: {\n one: '1 heure',\n other: '{{count}} heures'\n },\n xDays: {\n one: '1 jour',\n other: '{{count}} jours'\n },\n aboutXWeeks: {\n one: 'environ 1 semaine',\n other: 'environ {{count}} semaines'\n },\n xWeeks: {\n one: '1 semaine',\n other: '{{count}} semaines'\n },\n aboutXMonths: {\n one: 'environ 1 mois',\n other: 'environ {{count}} mois'\n },\n xMonths: {\n one: '1 mois',\n other: '{{count}} mois'\n },\n aboutXYears: {\n one: 'environ 1 an',\n other: 'environ {{count}} ans'\n },\n xYears: {\n one: '1 an',\n other: '{{count}} ans'\n },\n overXYears: {\n one: 'plus d’un an',\n other: 'plus de {{count}} ans'\n },\n almostXYears: {\n one: 'presqu’un an',\n other: 'presque {{count}} ans'\n }\n};\n\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var form = formatDistanceLocale[token];\n\n if (typeof form === 'string') {\n result = form;\n } else if (count === 1) {\n result = form.one;\n } else {\n result = form.other.replace('{{count}}', String(count));\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'dans ' + result;\n } else {\n return 'il y a ' + result;\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE d MMMM y',\n long: 'd MMMM y',\n medium: 'd MMM y',\n short: 'dd/MM/y'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'à' {{time}}\",\n long: \"{{date}} 'à' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"eeee 'dernier à' p\",\n yesterday: \"'hier à' p\",\n today: \"'aujourd’hui à' p\",\n tomorrow: \"'demain à' p'\",\n nextWeek: \"eeee 'prochain à' p\",\n other: 'P'\n};\n\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['av. J.-C', 'ap. J.-C'],\n abbreviated: ['av. J.-C', 'ap. J.-C'],\n wide: ['avant Jésus-Christ', 'après Jésus-Christ']\n};\nvar quarterValues = {\n narrow: ['T1', 'T2', 'T3', 'T4'],\n abbreviated: ['1er trim.', '2ème trim.', '3ème trim.', '4ème trim.'],\n wide: ['1er trimestre', '2ème trimestre', '3ème trimestre', '4ème trimestre']\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],\n wide: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre']\n};\nvar dayValues = {\n narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],\n short: ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'],\n abbreviated: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],\n wide: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'AM',\n pm: 'PM',\n midnight: 'minuit',\n noon: 'midi',\n morning: 'mat.',\n afternoon: 'ap.m.',\n evening: 'soir',\n night: 'mat.'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'minuit',\n noon: 'midi',\n morning: 'matin',\n afternoon: 'après-midi',\n evening: 'soir',\n night: 'matin'\n },\n wide: {\n am: 'AM',\n pm: 'PM',\n midnight: 'minuit',\n noon: 'midi',\n morning: 'du matin',\n afternoon: 'de l’après-midi',\n evening: 'du soir',\n night: 'du matin'\n }\n};\n\nvar ordinalNumber = function ordinalNumber(dirtyNumber, options) {\n var number = Number(dirtyNumber);\n var unit = options === null || options === void 0 ? void 0 : options.unit;\n if (number === 0) return '0';\n var feminineUnits = ['year', 'week', 'hour', 'minute', 'second'];\n var suffix;\n\n if (number === 1) {\n suffix = unit && feminineUnits.includes(unit) ? 'ère' : 'er';\n } else {\n suffix = 'ème';\n }\n\n return number + suffix;\n};\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(ième|ère|ème|er|e)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(av\\.J\\.C|ap\\.J\\.C|ap\\.J\\.-C)/i,\n abbreviated: /^(av\\.J\\.-C|av\\.J-C|apr\\.J\\.-C|apr\\.J-C|ap\\.J-C)/i,\n wide: /^(avant Jésus-Christ|après Jésus-Christ)/i\n};\nvar parseEraPatterns = {\n any: [/^av/i, /^ap/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^T?[1234]/i,\n abbreviated: /^[1234](er|ème|e)? trim\\.?/i,\n wide: /^[1234](er|ème|e)? trimestre/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\\.?/i,\n wide: /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^av/i, /^ma/i, /^juin/i, /^juil/i, /^ao/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[lmjvsd]/i,\n short: /^(di|lu|ma|me|je|ve|sa)/i,\n abbreviated: /^(dim|lun|mar|mer|jeu|ven|sam)\\.?/i,\n wide: /^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i\n};\nvar parseDayPatterns = {\n narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^j/i, /^v/i, /^s/i],\n any: [/^di/i, /^lu/i, /^ma/i, /^me/i, /^je/i, /^ve/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|minuit|midi|mat\\.?|ap\\.?m\\.?|soir|nuit)/i,\n any: /^([ap]\\.?\\s?m\\.?|du matin|de l'après[-\\s]midi|du soir|de la nuit)/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^min/i,\n noon: /^mid/i,\n morning: /mat/i,\n afternoon: /ap/i,\n evening: /soir/i,\n night: /nuit/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary French locale.\n * @language French\n * @iso-639-2 fra\n * @author Jean Dupouy [@izeau]{@link https://github.com/izeau}\n * @author François B [@fbonzon]{@link https://github.com/fbonzon}\n */\n\nvar locale = {\n code: 'fr',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */\n ,\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","import { isDefined } from '@sgme/fp';\nimport { format, isValid, type Locale, parseISO, addMinutes } from 'date-fns';\nimport { enUS as en, fr, de } from 'date-fns/locale';\n\nconst locales: { [key: string]: Locale } = {\n en,\n fr,\n de,\n};\n\nconst isTenor = (dateOrTenor: string) => /^([0-9]+[mdyw]{1}|[a-z]+)$/gi.test(dateOrTenor.trim());\n\nexport const DATE_FORMAT_ISO = 'yyyy-MM-dd';\nexport const DATE_FORMAT_TEXT = 'dd MMM yyyy';\nexport const FULL_DATE_FORMAT_TEXT = 'dd MMM yyyy h:mm a';\nexport const FULL_DATE_FORMAT_EXPIRY = 'dd MMM yyyy h:mm:ss a';\nexport const FULL_DATE_MULTIPASS = \"yyyy-MM-dd'T'HH:mm:ss\";\nexport const FULL_DATE_OMS = \"yyyy-MM-dd'T'HH:mm:ss'Z'\";\n\nexport function formatUserInputtedDate(date: Date | string | null, locale: string): string {\n if (date === null) {\n return '';\n }\n if (typeof date === 'string' && isTenor(date)) {\n return date;\n }\n const parsedDate = typeof date === 'string' ? parseISO(date) : date;\n if (isValid(parsedDate)) {\n return format(parsedDate, DATE_FORMAT_TEXT, { locale: locales[locale] });\n }\n return date as string;\n}\n\nfunction formatWithLocaleWith(formatString: string) {\n return (date: Date | null | undefined, locale: string): string =>\n !isDefined(date) || !isValid(date)\n ? ''\n : format(date, formatString, { locale: locales[locale] });\n}\n\nexport const formatDateTimeWithLocale = formatWithLocaleWith(FULL_DATE_FORMAT_TEXT);\nexport const formatDateTimeWithLocaleForExpiry = formatWithLocaleWith(FULL_DATE_FORMAT_EXPIRY);\n\nexport function toUtc(date: Date) {\n return addMinutes(date, date.getTimezoneOffset());\n}\n\nexport const formatDateWithLocale = formatWithLocaleWith(DATE_FORMAT_TEXT);\n\nexport function formatDateWithLocaleAndFormat(locale: string) {\n const chosenLocale = locales[locale];\n return (formatString: string) => (date: Date) =>\n format(date, formatString, { locale: chosenLocale });\n}\n\nexport function getDateForMultipass(date: Date): string {\n return date === null || !isValid(date) ? '' : format(date, FULL_DATE_MULTIPASS);\n}\n\nexport function getFullDateForOMS(date: Date): string {\n return date === null || !isValid(date) ? '' : format(date, FULL_DATE_OMS);\n}\n\nexport const userTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\nexport function extractDayAndTime(date: Date): DayAndTime {\n const day = format(date, 'yyyy-MM-dd');\n const time = format(date, 'HH:mm:ss');\n return { day, time };\n}\n\nexport interface DayAndTime {\n day: string;\n time: string;\n}\n","import type {\n AccumulatorProductName,\n AccumulatorScheduleValues,\n TargetAccuType,\n} from 'state/fxAccumulators/fxAccumulatorsModel';\nimport { calendarProperties, type SchedulerCalendarProperty } from './calendarProperties';\nimport { formatDateTimeWithLocale } from 'utils/dateFormats';\nimport { isDefined } from '@sgme/fp';\n\nexport function getForwardAccumulatorCalendarProperties(isMaturitySettlementFrequency: boolean) {\n const propertiesToRemove = ['PIVOT', 'strikeUp', 'strikeDown', 'ekiUp', 'ekiDown'];\n\n if (isMaturitySettlementFrequency) {\n propertiesToRemove.push('paymentDate');\n }\n\n return calendarProperties.filter(property => !propertiesToRemove.includes(property));\n}\n\nexport function getTargetAccumulatorCalendarProperties(\n accumulatorType: TargetAccuType | 'ForwardAccu',\n): Array> {\n switch (accumulatorType) {\n case 'EKI':\n return ['fixingDate', 'paymentDate', 'EKI', 'strike', 'amount', 'leverageAmount', 'deleteIcon'];\n case 'PIVOT':\n return ['fixingDate', 'paymentDate', 'strikeUp', 'PIVOT', 'strikeDown', 'amount', 'leverageAmount', 'deleteIcon'];\n case 'PIVOTEKI':\n return [\n 'fixingDate',\n 'paymentDate',\n 'ekiUp',\n 'strikeUp',\n 'PIVOT',\n 'strikeDown',\n 'ekiDown',\n 'amount',\n 'leverageAmount',\n 'deleteIcon',\n ];\n\n default:\n return ['fixingDate', 'paymentDate', 'strike', 'amount', 'leverageAmount', 'deleteIcon'];\n }\n}\n\nexport function downloadCSV(content: string) {\n const uri = `data:text/csv;charset=utf-8,${escape(content)}`;\n const link = document.createElement('a');\n link.href = uri;\n link.className = 'd-none';\n link.download = `FX ${formatDateTimeWithLocale(new Date(), 'en')}.csv`;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n}\n\nexport function headerExport(property: SchedulerCalendarProperty) {\n switch (property) {\n case 'PIVOT':\n return 'accu.scheduler.calendar.pivot';\n case 'amount':\n return 'accu.scheduler.calendar.notionalToExport';\n case 'fixingDate':\n return 'accu.scheduler.calendar.fixingDate';\n case 'leverageAmount':\n return 'accu.scheduler.calendar.leverageAmountToExport';\n case 'paymentDate':\n return 'accu.scheduler.calendar.paymentDate';\n case 'strike':\n return 'accu.scheduler.calendar.strike';\n case 'strikeUp':\n return 'accu.scheduler.calendar.strikeUp';\n case 'strikeDown':\n return 'accu.scheduler.calendar.strikeDown';\n case 'ekiDown':\n return 'accu.scheduler.calendar.ekiDown';\n case 'ekiUp':\n return 'accu.scheduler.calendar.ekiUp';\n case 'EKI':\n return 'accu.scheduler.calendar.eki';\n case 'step':\n return 'accu.scheduler.calendar.step';\n default:\n break;\n }\n}\n\nexport const mapScheduleValues = (\n scheduleValues: Array>,\n calendarProps: SchedulerCalendarProperty[],\n productName: AccumulatorProductName,\n) =>\n scheduleValues.map(value => {\n if (isDefined(value)) {\n return Object.entries(value).reduce((acc, [key, usedValue]) => {\n if (calendarProps.includes(key as Partial)) {\n acc[key] = usedValue;\n }\n\n const isTargetAccumulator = productName === 'FxTargetAccumulator';\n\n if (calendarProps.includes('EKI')) {\n if ((key === 'step' && isTargetAccumulator) || (key === 'ekiTrigger' && !isTargetAccumulator)) {\n acc.EKI = usedValue;\n }\n }\n\n if (calendarProps.includes('PIVOT') && key === 'step') {\n acc.PIVOT = usedValue;\n }\n\n if (calendarProps.includes('ekiDown') && key === 'stepDown') {\n acc.ekiDown = usedValue;\n }\n\n if (calendarProps.includes('ekiUp') && key === 'stepUp') {\n acc.ekiUp = usedValue;\n }\n\n return acc;\n }, {} as Record);\n }\n });\n","import type { AppState } from 'state/model';\nimport { getAccumulatorState } from './accumulator';\nimport type { AccumulatorScheduleInputs, AccumulatorScheduleValues } from '../fxAccumulatorsModel';\nimport { getSharedProperty, type SharedKey } from 'state/share/form';\nimport { throwIfUndefined } from 'utils/maps';\nimport { getLegKey } from 'state/share/patchHelper';\nimport { getAccumulatorProductName, getTargetAccumulatorAccuType } from './accumulatorValue';\nimport {\n getForwardAccumulatorCalendarProperties,\n getTargetAccumulatorCalendarProperties,\n} from 'components/FxAccumulatorTile/Scheduler/utils';\n\nexport function getAccumulatorSchedule(state: AppState, quoteId: string, legId: string) {\n return throwIfUndefined(\n state.fxAccumulators.schedules[getLegKey(quoteId, legId)],\n `Accumulator schedule for tile ${legId} does not exist`,\n );\n}\n\nexport function getAccumulatorScheduleItemIds(state: AppState, quoteId: string) {\n const { legs } = getAccumulatorState(state, quoteId);\n if (legs === undefined) {\n return [];\n }\n return legs;\n}\n\nexport const getLegIdsOrderedForSchedule = (state: AppState, quoteId: string) => {\n const scheduleIds = getAccumulatorScheduleItemIds(state, quoteId);\n const schedule = state.fxAccumulators.schedules;\n const scheduleIdsWithDates = Object.fromEntries(\n scheduleIds.map(id => [id, schedule[getLegKey(quoteId, id)]?.values.fixingDate]),\n );\n return Object.keys(scheduleIdsWithDates).sort(\n (id1, id2) => scheduleIdsWithDates[id1]?.localeCompare(scheduleIdsWithDates[id2]!) ?? 1,\n );\n};\n\nexport const getDisplayedDataInSchedule = (\n state: AppState,\n quoteId: string,\n isMaturitySettlementFrequency: boolean,\n) => {\n const productName = getAccumulatorProductName(state, quoteId);\n const isForwardAccumulator = productName === 'FxForwardAccumulator';\n const accumulatorType = isForwardAccumulator ? 'ForwardAccu' : getTargetAccumulatorAccuType(state, quoteId);\n\n return isForwardAccumulator\n ? getForwardAccumulatorCalendarProperties(isMaturitySettlementFrequency)\n : getTargetAccumulatorCalendarProperties(accumulatorType);\n};\n\nexport const getscheduleValues = (state: AppState, quoteId: string) => {\n const scheduleIds = getLegIdsOrderedForSchedule(state, quoteId);\n const schedules = state.fxAccumulators.schedules;\n\n return scheduleIds.map(id => schedules[getLegKey(quoteId, id)]?.values);\n};\n\ntype AccumulatorScheduleSharedPropertyKey = SharedKey;\n\nexport function getAccumulatorScheduleData(prop: T) {\n const get = getSharedProperty(prop);\n return (state: AppState, quoteId: string, fixingId: string) => get(getAccumulatorSchedule(state, quoteId, fixingId));\n}\n\nexport function isScheduleFieldCustom(prop: T) {\n return (state: AppState, quoteId: string, fixingId: string) =>\n getAccumulatorScheduleCustomFields(state, quoteId, fixingId).includes(prop);\n}\n\nexport const getAccumulatorScheduleFixingDate = getAccumulatorScheduleData('fixingDate');\n\nexport const getAccumulatorScheduleSettlementDate = getAccumulatorScheduleData('paymentDate');\n\nexport const getAccumulatorScheduleStrike = getAccumulatorScheduleData('strike');\n\nexport const getAccumulatorScheduleEki = getAccumulatorScheduleData('ekiTrigger');\n\nexport const getTargetAccumulatorScheduleEkiDown = getAccumulatorScheduleData('stepDown');\nexport const getTargetAccumulatorScheduleEkiUp = getAccumulatorScheduleData('stepUp');\n\nexport const getAccumulatorScheduleStep = getAccumulatorScheduleData('step');\n\nexport const getAccumulatorScheduleNotional = getAccumulatorScheduleData('amount');\n\nexport const getAccumulatorScheduleLeverageAmount = getAccumulatorScheduleData('leverageAmount');\n\nexport const getAccumulatorScheduleCustomFields = (state: AppState, quoteId: string, fixingId: string) => {\n if (fixingId !== '@@_MISSING_LEGID_PROVIDER') {\n return getAccumulatorSchedule(state, quoteId, fixingId).custom;\n }\n return [];\n};\n\nexport const getTargetAccumulatorScheduleStrikeDown = getAccumulatorScheduleData('strikeDown');\nexport const getTargetAccumulatorScheduleStrikeUp = getAccumulatorScheduleData('strikeUp');\n","import { getAccumulatorInput, getTargetAccumulatorInput } from './factories';\nimport { createSelector } from 'reselect';\nimport type { AppState } from '../../model';\nimport { fieldData } from '../../../utils/fieldSelectors';\nimport {\n getTargetAccumulatorScheduleEkiDown,\n getTargetAccumulatorScheduleEkiUp,\n getTargetAccumulatorScheduleStrikeDown,\n getTargetAccumulatorScheduleStrikeUp,\n} from './accumulatorSchedule';\nimport type { SharedPropertyStatus } from 'state/share/form';\n\nexport const getAccumulatorCurrencyPairInput = getAccumulatorInput('currencyPair');\nexport const getAccumulatorCurrencyPair = (quoteId: string) =>\n createSelector([(state: AppState) => getAccumulatorCurrencyPairInput(state, quoteId)], currencyPair =>\n fieldData(currencyPair).data?.toString(),\n );\nexport const getAccumulatorPriceType = getAccumulatorInput('priceType');\nexport const getAccumulatorPriceCurrency = getAccumulatorInput('priceCurrency');\nexport const getAccumulatorPremiumDate = getAccumulatorInput('premiumDate');\nexport const getAccumulatorPremiumDateTenor = getAccumulatorInput('premiumDateTenor');\nexport const getAccumulatorHedgeCurrency = getAccumulatorInput('hedgeCurrency');\nexport const getAccumulatorHedgeAmount = getAccumulatorInput('hedgeAmount');\nexport const getAccumulatorHedgeType = getAccumulatorInput('hedgeType');\nexport const getAccumulatorHedgePrice = getAccumulatorInput('hedgePrice');\nexport const getAccumulatorWay = getAccumulatorInput('way');\n\nexport const getAccumulatorAmount = getAccumulatorInput('amount');\n\nexport const getAccumulatorAmountCurrency = getAccumulatorInput('amountCurrency');\n\nexport const getAccumulatorAmountSplitType = getAccumulatorInput('amountSplitType');\n\nexport const getAccumulatorTargetProfitType = getAccumulatorInput('targetProfitType');\n\nexport const getAccumulatorLeverage = getAccumulatorInput('leverage');\n\nexport const getAccumulatorLeverageAmount = getAccumulatorInput('leverageAmount');\n\nexport const getAccumulatorStrike = getAccumulatorInput('strike');\n\nexport const getAccumulatorStep = getAccumulatorInput('step');\n\nexport const getAccumulatorAkoTrigger = getAccumulatorInput('akoTrigger');\n\nexport const getAccumulatorEkiTrigger = getAccumulatorInput('ekiTrigger');\n\nexport const getAccumulatorTarget = getAccumulatorInput('target');\n\nexport const getAccumulatorFirstFixingDate = getAccumulatorInput('firstFixingDate');\n\nexport const getAccumulatorFirstFixingTenor = getAccumulatorInput('firstFixingDateTenor');\n\nexport const getAccumulatorExpiryDate = getAccumulatorInput('expiryDate');\n\nexport const getAccumulatorExpiryTenor = getAccumulatorInput('expiryTenor');\n\nexport const getAccumulatorFixingFrequency = getAccumulatorInput('fixingFrequency');\n\nexport const getAccumulatorNumberOfFixings = getAccumulatorInput('numberOfFixings');\n\nexport const getAccumulatorSettlementFrequency = getAccumulatorInput('settlementFrequency');\n\nexport const getAccumulatorFixingReference1 = getAccumulatorInput('fixingReference1');\n\nexport const getAccumulatorFixingReference2 = getAccumulatorInput('fixingReference2');\n\nexport const getAccumulatorMarkupCurrency = getAccumulatorInput('markupCurrency');\n\nexport const getAccumulatorIsCrossed = getAccumulatorInput('isCrossed');\n\nexport const getAccumulatorCrossCurrency = getAccumulatorInput('crossCurrency');\n\nexport const getAccumulatorSettlementMode = getAccumulatorInput('settlementMode');\n\nexport const getAccumulatorCashSettlementCurrency = getAccumulatorInput('cashSettlementCurrency');\n\nexport const getTargetAccumulatorEki = getTargetAccumulatorInput('eki');\nexport const getAccumulatorEkiDown = getAccumulatorInput('ekiDown');\nexport const getAccumulatorEkiUp = getAccumulatorInput('ekiUp');\n\nexport const getAccumulatorStrikeDown = getAccumulatorInput('strikeDown');\nexport const getAccumulatorPivot = getAccumulatorInput('pivot');\nexport const getAccumulatorStrikeUp = getAccumulatorInput('strikeUp');\n\nexport const getTargetAccumulatorStrikeUpValue = (quoteId: string, fixingId: string, isSchedule: boolean) =>\n createSelector(\n [\n (state: AppState) => {\n if (isSchedule) {\n return getTargetAccumulatorScheduleStrikeUp(state, quoteId, fixingId);\n }\n return getAccumulatorStrikeUp(state, quoteId);\n },\n ],\n strikeUp =>\n fieldData(\n strikeUp as SharedPropertyStatus,\n ).data?.toString(),\n );\n\nexport const getTargetAccumulatorStrikeDownValue = (quoteId: string, fixingId: string, isSchedule: boolean) =>\n createSelector(\n [\n (state: AppState) => {\n if (isSchedule) {\n return getTargetAccumulatorScheduleStrikeDown(state, quoteId, fixingId);\n }\n return getAccumulatorStrikeDown(state, quoteId);\n },\n ],\n strikeDown =>\n fieldData(\n strikeDown as SharedPropertyStatus,\n ).data?.toString(),\n );\nexport const getTargetAccumulatorEkiUpValue = (quoteId: string, fixingId: string, isSchedule: boolean) =>\n createSelector(\n [\n (state: AppState) => {\n if (isSchedule) {\n return getTargetAccumulatorScheduleEkiUp(state, quoteId, fixingId);\n }\n return getAccumulatorEkiUp(state, quoteId);\n },\n ],\n EkiUp =>\n fieldData(EkiUp as SharedPropertyStatus).data?.toString(),\n );\n\nexport const getTargetAccumulatorEkiDownValue = (quoteId: string, fixingId: string, isSchedule: boolean) =>\n createSelector(\n [\n (state: AppState) => {\n if (isSchedule) {\n return getTargetAccumulatorScheduleEkiDown(state, quoteId, fixingId);\n }\n return getAccumulatorEkiDown(state, quoteId);\n },\n ],\n EkiDown =>\n fieldData(EkiDown as SharedPropertyStatus).data?.toString(),\n );\n","import { getBulkInput } from './factories';\n\nexport const getBulkCurrencyPair = getBulkInput('currencyPair');\nexport const getBulkAmountCurrency = getBulkInput('amountCurrency');\n","import { getOrderInput } from './factories';\n\nexport const getOrderCurrencyPair = getOrderInput('currencyPair');\nexport const getOrderType = getOrderInput('type');\nexport const getOrderLimitPrice = getOrderInput('limitPrice');\nexport const getOrderCustomerPrice = getOrderInput('customerPrice');\nexport const getOrderWay = getOrderInput('way');\nexport const getOrderAmount = getOrderInput('amount');\nexport const getOrderAmountCurrency = getOrderInput('amountCurrency');\nexport const getOrderTrigger = getOrderInput('trigger');\nexport const getOrderExpiryDay = getOrderInput('expiryDay');\nexport const getOrderExpiryDayTenor = getOrderInput('expiryDayTenor');\nexport const getOrderExpiryTime = getOrderInput('expiryTime');\nexport const getOrderEmails = getOrderInput('emails');\nexport const getOrderEmailsWithSplit = getOrderInput('emailsOrders');\nexport const getOrderIsGtc = getOrderInput('isGtc');\nexport const getOrderMaturityDate = getOrderInput('maturityDate');\nexport const getOrderTenor = getOrderInput('tenor');\nexport const getOrderStartDate = getOrderInput('startDate');\nexport const getOrderStartTime = getOrderInput('startTime');\nexport const getOrderLiquidityPool = getOrderInput('liquidityPool');\nexport const getOrderSpeed = getOrderInput('speed');\nexport const getOrderClippingMode = getOrderInput('clippingMode');\nexport const getOrderClipSize = getOrderInput('clipSize');\nexport const getOrderRandomize = getOrderInput('randomize');\nexport const getOrderSpreadCapture = getOrderInput('spreadCapture');\nexport const getOrderAlphaSeeker = getOrderInput('alphaSeeker');\nexport const getOrderFixingBenchmark = getOrderInput('fixingBenchmark');\nexport const getOrderFixingPriceType = getOrderInput('fixingPriceType');\nexport const getOrderFixingDateUtc = getOrderInput('fixingDateUtc');\nexport const getOrderFixingTime = getOrderInput('fixingTime');\nexport const getOrderFixingPlace = getOrderInput('fixingPlace');\nexport const getOrderFixingMarginType = getOrderInput('fixingMarginType');\nexport const getOrderMarginInBps = getOrderInput('marginInBps');\nexport const getOrderMargin = getOrderInput('margin');\nexport const getOrderAlgoFixingReference = getOrderInput('ndfFixingSource');\nexport const getOrderAlgoFixingDate = getOrderInput('ndfFixingDate');\n","import { getTileMetadata, tileSelector } from './factories';\nimport type { AppState } from 'state/model';\nimport { isNotDefined } from '@sgme/fp';\nimport { getOptionCurrencyPair } from 'state/fxOptions/selectors/optionInput';\nimport { getCashCurrencyPair } from 'state/fxCashs/selectors/cashInput';\nimport { getSwapCurrencyPair } from 'state/fxSwaps/selectors/swapInput';\nimport { getAccumulatorCurrencyPairInput } from 'state/fxAccumulators/selectors/accumulatorInput';\nimport { getBulkCurrencyPair } from 'state/fxBulks/selectors/bulkInput';\nimport { getOrderCurrencyPair } from 'state/fxOrders/selectors/orderInput';\nimport { getBlotterOrderCurrencyPair } from 'state/blotter/selectors/blotterOrderSelectors';\n\nexport const getTileCurrentStreamId = getTileMetadata('currentStreamId');\nexport const getTileCurrentEspStreamId = getTileMetadata('currentEspStreamId');\nexport const getTileIsPriceable = getTileMetadata('isPriceable');\nexport const getTileLastExecutedQuoteId = getTileMetadata('lastExecutedQuoteId');\nexport const getTileLastStreamError = getTileMetadata('lastStreamError');\nexport const getTileCurrentExecutionId = getTileMetadata('currentExecutionId');\nexport const getTileRfsStartedAt = getTileMetadata('rfsStartedAt');\nexport const getTilePriceRecords = getTileMetadata('priceRecords');\nexport const getTilePropertiesRequestError = getTileMetadata('propertiesRequestError');\n\nexport const getTileCurrencyPair = tileSelector({\n Option: getOptionCurrencyPair,\n Cash: getCashCurrencyPair,\n Swap: getSwapCurrencyPair,\n Accumulator: getAccumulatorCurrencyPairInput,\n Bulk: getBulkCurrencyPair,\n Order: getOrderCurrencyPair,\n BlotterOrder: (state, quoteId) => ({\n value: getBlotterOrderCurrencyPair(state, quoteId),\n input: undefined,\n }),\n});\n\nexport const isTileFirstCurrencyPairSelection = (state: AppState, tileId: string): boolean => {\n const currencyPair = getTileCurrencyPair(state, tileId);\n return (\n isNotDefined(currencyPair) ||\n (currencyPair.input === undefined && currencyPair.value === null && currencyPair.error === undefined)\n );\n};\n","import type { AppState } from 'state/model';\nimport { GLOBAL_ERROR_AUTH_EXPIRED, type IStreamError } from 'state/globalError/globalErrorModel';\nimport { authExpiredAction, noClientsAction, noProductsAction } from './globalErrorActions';\nimport { notifyDisconnection } from 'state/session/sessionActions';\nimport { actionCreatorTypeExtractor } from 'redux-middlewares/actionNotificationMiddleware';\nimport { getExecutionById } from '../executions/executionsSelectors';\nimport { getTileLastStreamError } from 'state/tile/selectors';\n\nconst notCrashErrors = [\n authExpiredAction,\n notifyDisconnection,\n noClientsAction,\n noProductsAction,\n].map(actionCreatorTypeExtractor);\n\nexport function getGlobalError(state: AppState) {\n return state.globalError.error;\n}\n\nexport function isAuthExpired(state: AppState) {\n return state.globalError.error === GLOBAL_ERROR_AUTH_EXPIRED;\n}\n\nexport function isUserOffline(state: AppState) {\n return state.globalError.isOffline;\n}\n\nexport function isNoClients(state: AppState) {\n return state.globalError.error === 'NO_CLIENTS';\n}\n\nexport function isNoProducts(state: AppState) {\n return state.globalError.error === 'NO_PRODUCTS';\n}\n\nexport function isCrashError(state: AppState) {\n return !(notCrashErrors as ReadonlyArray).includes(state.globalError.error);\n}\n\nexport function getStreamError(state: AppState): IStreamError | null {\n const tileId = state.globalError.tileId;\n if (tileId !== null) {\n return getTileLastStreamError(state, tileId);\n }\n\n const executionId = state.globalError.executionId;\n if (executionId !== null) {\n const executionState = getExecutionById(state, executionId);\n return executionState.status === 'Error' ? executionState.streamError : null;\n }\n\n return null;\n}\n","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n // Standard Redux middleware definition pattern:\n // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n var middleware = function middleware(_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n // If this \"action\" is really a function, call it and return the result.\n if (typeof action === 'function') {\n // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n return action(dispatch, getState, extraArgument);\n } // Otherwise, pass the action down the middleware chain as usual\n\n\n return next(action);\n };\n };\n };\n\n return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","import { getOptionMetadata } from './factories';\n\nexport type { OptionMetadataStatus } from './factories';\n\nexport const getOptionEspStreamId = getOptionMetadata('currentEspStreamId');\nexport const getOptionRfsStreamId = getOptionMetadata('currentStreamId');\nexport const getOptionPropertiesRequested = getOptionMetadata('propertiesRequested');\nexport const getOptionDisplayPriceType = getOptionMetadata('displayPriceType');\nexport const getOptionIsStrategy = getOptionMetadata('isStrategy');\n// export const getOptionLegIds = getOptionMetadata('legIds');\nexport const getOptionLegsCurrencyLinked = getOptionMetadata('legsCurrencyLinked');\nexport const getOptionNextLegId = getOptionMetadata('nextLegId');\nexport const getOptionLastStreamId = getOptionMetadata('lastStreamId');\nexport const getOptionUserSetGroup = getOptionMetadata('group');\nexport const getOptionDisplaySolveStrike = getOptionMetadata('displaySolveStrikeModal');\n","import type { AppState } from 'state/model';\n\nexport const isUserPreferenceOpened = (state: AppState): boolean =>\n getUserPreference(state).showUserPreferences;\n\nexport const isResetTileOnSuccessfulExecution = (state: AppState): boolean =>\n getUserPreferenceData(state).resetTileOnSuccessfulExecution;\n\nexport const getSplitNotifications = (state: AppState): boolean =>\n getUserPreferenceData(state).splitNotifications;\n\nexport const getUserDateInputCultureInfo = (state: AppState) =>\n getUserPreferenceData(state).dateInputCultureInfo;\n\nexport const getUserSwapPointsVisibility = (state: AppState) =>\n getUserPreferenceData(state).showSwapPoints;\n\nexport const getUserDeltaStrikeVisibility = (state: AppState) =>\n getUserPreferenceData(state).showDeltaStrike;\n\nexport const getUserDefaultNotional = (state: AppState) =>\n getUserPreferenceData(state).defaultNotional;\n\nexport const getAccountNameLength = (state: AppState) =>\n getUserPreferenceData(state).accountNameLength;\n\nexport const getDefaultHedgeType = (state: AppState) =>\n getUserPreferenceData(state).defaultHedgeType;\n\nexport const getDefaultPriceType = (state: AppState) =>\n getUserPreferenceData(state).defaultPriceType;\n\nexport const getUserOptionAlignCurrencies = (state: AppState) =>\n getUserPreferenceData(state).optionAlignCurrencies;\n\nexport const getUserPreferenceData = (state: AppState) => getUserPreference(state).data;\n\nconst getUserPreference = (state: AppState) => state.userPreferences;\n","import type { AppState } from 'state/model';\nimport { getOptionVanillaLegInput } from './factories';\nimport { getOptionLeg } from './fxOptionsLegsSelectors';\n\nexport type { OptionLegSharedPropertyStatus } from './factories';\n\nexport function getOptionLegProductName(state: AppState, legId: string) {\n const leg = getOptionLeg(state, legId);\n\n return leg.productName;\n}\n\nexport const getOptionVanillaLegOptionType = getOptionVanillaLegInput('optionType');\nexport const getOptionVanillaLegSettlementType = getOptionVanillaLegInput('settlementType');\nexport const getOptionVanillaLegCashSettlementCurrency =\n getOptionVanillaLegInput('cashSettlementCurrency');\nexport const getOptionVanillaLegFixingReference1 = getOptionVanillaLegInput('fixingReference1');\nexport const getOptionVanillaLegExpiry = getOptionVanillaLegInput('expiryDate');\nexport const getOptionVanillaLegExpiryTenor = getOptionVanillaLegInput('expiryDateTenor');\nexport const getOptionVanillaLegDelivery = getOptionVanillaLegInput('deliveryDate');\nexport const getOptionVanillaLegMarketPlace = getOptionVanillaLegInput('marketPlace');\nexport const getOptionVanillaLegStrike = getOptionVanillaLegInput('strike');\nexport const getOptionVanillaLegNotional = getOptionVanillaLegInput('notionalAmount');\nexport const getOptionVanillaLegNotionalCurrency = getOptionVanillaLegInput('notionalCurrency');\nexport const getOptionVanillaLegMarkup = getOptionVanillaLegInput('markup');\nexport const getOptionVanillaLegVolatilityAsk = getOptionVanillaLegInput('volatilityAsk');\nexport const getOptionVanillaLegVolatilityBid = getOptionVanillaLegInput('volatilityBid');\nexport const getOptionVanillaLegSide = getOptionVanillaLegInput('side');\nexport const getOptionVanillaLegPremiumDate = getOptionVanillaLegInput('premiumDate');\nexport const getOptionVanillaLegPremiumDateTenor = getOptionVanillaLegInput('premiumDateTenor');\nexport const getOptionVanillaLegPremiumBid = getOptionVanillaLegInput('premiumBid');\nexport const getOptionVanillaLegPremiumAsk = getOptionVanillaLegInput('premiumAsk');\nexport const getOptionVanillaLegIsInFine = getOptionVanillaLegInput('isInFine');\nexport const getOptionVanillaLegPremiumTypeString = getOptionVanillaLegInput('premiumTypeString');\nexport const getOptionVanillaLegPremiumCurrency = getOptionVanillaLegInput('premiumCurrency');\n","import { getOptionVanillaLegMetadata } from './factories';\n\nexport const getOptionVanillaLegSolvingFor = getOptionVanillaLegMetadata('solvingFor');\n\nexport const getOptionVanillaLegSolved = getOptionVanillaLegMetadata('solved');\n","import type { AppState } from 'state/model';\nimport { getOptionState } from './fxOptionsProductSelectors';\nimport type { CurrencyChoice, StrategyTypeName } from 'state/share/productModel/litterals';\nimport { getOptionIsStrategy, getOptionUserSetGroup } from './optionMetadata';\nimport { getDefaultPriceType } from 'state/userPreferences/selectors/userPreferenceSelectors';\nimport { getOptionVanillaLegStrike } from './optionLegInput';\nimport { isAfter, parseISO } from 'date-fns';\nimport type { OptionSolvableValue } from '../fxOptionsModel';\nimport {\n getAllVanillaLegIdsOfOption,\n getAllVanillaLegsOfOption,\n getFxOptionMultilegOfOption,\n getOptionLeg,\n} from './fxOptionsLegsSelectors';\nimport { getOptionVanillaLegSolvingFor } from './optionLegMetadata';\nimport { isDefinedAndNonEmpty } from '@sgme/fp';\nimport { isVanillaLeg } from '../utilities';\nimport { getTileMaxDate } from 'state/referenceData/referenceDataSelectors';\nimport { getOptionHedgeType } from './optionInput';\nimport { fieldData } from 'utils/fieldSelectors';\n\nexport function getOptionTradeCaptureCurrentSessionId(\n currentState: AppState,\n optionId: string,\n): string | null {\n const { currentSessionId } = getOptionState(currentState, optionId);\n return currentSessionId;\n}\n\nexport function getOptionTradeCaptureIdVersion(\n currentState: AppState,\n optionId: string,\n): number | null {\n const { tradeCaptureIdVersion } = getOptionState(currentState, optionId);\n return tradeCaptureIdVersion;\n}\n\nexport function getMarkupCurrency(state: AppState, optionId: string): string | null {\n const {\n values: { markupCurrency },\n } = getOptionState(state, optionId);\n\n return markupCurrency;\n}\n\n/**\n * @todo NUKE IT\n */\nexport function getCurrencyPair(state: AppState, optionId: string) {\n const {\n values: { currencyPair },\n } = getOptionState(state, optionId);\n\n if (currencyPair !== null) {\n const [ccy1, ccy2] = (currencyPair || '/').split('/');\n return { ccy1, ccy2 };\n }\n\n return null;\n}\n\nexport function getMarkupCurrencyChoice(state: AppState, optionId: string): CurrencyChoice | null {\n const currencyPair = getCurrencyPair(state, optionId);\n\n if (currencyPair === null) {\n return null;\n }\n\n const markupCurrency = getMarkupCurrency(state, optionId);\n\n switch (markupCurrency) {\n case currencyPair.ccy1:\n return 1;\n case currencyPair.ccy2:\n return 2;\n case null:\n default:\n return null;\n }\n}\n\nexport function getDefaultPriceTypeForOption(state: AppState, optionId: string) {\n const defaultPriceType = getDefaultPriceType(state);\n const isStrategyView = getOptionIsStrategy(state, optionId);\n const multileg = getFxOptionMultilegOfOption(state, optionId);\n const isOneLegStrategy = multileg.legIds.length === 1;\n\n if (isStrategyView && !isOneLegStrategy && defaultPriceType === 'VOLATILITY') {\n return 'AMOUNT';\n }\n\n return defaultPriceType;\n}\n\nexport function isValidDateOptionInAllLegs(state: AppState, optionId: string) {\n const maxDate = getTileMaxDate(state, optionId);\n if (maxDate === undefined) {\n return true;\n }\n\n return getAllVanillaLegsOfOption(state, optionId).every(leg => {\n const expiry = leg.values.expiryDate;\n return expiry === null || !isAfter(parseISO(expiry), maxDate);\n });\n}\n\nexport function getStrategyType(state: AppState, optionId: string): StrategyTypeName {\n const legIds = getFxOptionMultilegOfOption(state, optionId).legIds;\n\n if (legIds.length > 1) {\n return 'Multileg';\n }\n\n const firstLeg = getOptionLeg(state, legIds[0]);\n return firstLeg.productName as StrategyTypeName;\n}\n\n// TODO: remove the old subLegsIds for a vanilla because now a vanilla has an empty array\n// const vanillaSubLegId = [undefined];\n\nexport function getSubLegIdsOfOptionLeg(\n state: AppState,\n legId: string,\n): Readonly> {\n const leg = getOptionLeg(state, legId);\n return isVanillaLeg(leg) ? [undefined] : leg.legIds;\n}\n\nexport function isOneLegSolvableInOption(state: AppState, optionId: string) {\n return getAllVanillaLegsOfOption(state, optionId).some(\n leg => leg.solvingFor === leg.values.solvable,\n );\n}\n\nexport function isAllLegsSolvingInOption(\n state: AppState,\n optionId: string,\n solvingFor: OptionSolvableValue,\n) {\n const allVanillaLegIds = getAllVanillaLegIdsOfOption(state, optionId);\n\n if (solvingFor === 'PremiumPaymentAmount' || solvingFor === 'Amount1') {\n return allVanillaLegIds.every(\n vanillaLegId => getOptionVanillaLegSolvingFor(state, vanillaLegId) === solvingFor,\n );\n }\n\n const solvingStrikeVanillaLegs = allVanillaLegIds.filter(\n vanillaLegId => getOptionVanillaLegSolvingFor(state, vanillaLegId) === 'Strike',\n );\n\n const strikeSetInValuesLegIds = allVanillaLegIds.filter(vanillaLegId => {\n const strike = getOptionVanillaLegStrike(state, vanillaLegId);\n return isDefinedAndNonEmpty(strike.value);\n });\n\n return (\n solvingStrikeVanillaLegs.length === 1 &&\n strikeSetInValuesLegIds.length === allVanillaLegIds.length - 1\n );\n}\n\nexport const getOptionExpandedLegIds = (state: AppState, optionId: string) => {\n const option = getOptionState(state, optionId);\n\n return option.expanded;\n};\n\nexport function getOptionGroup(state: AppState, optionId: string) {\n const userSetGroup = getOptionUserSetGroup(state, optionId);\n const hedgeType = fieldData(getOptionHedgeType(state, optionId)).data;\n\n return hedgeType === 'Forward' || userSetGroup;\n}\n","/** This function can be called in default switch cases on union type for cases which should not happen despite being representable */\nexport function assertUnhandled(message: string, value: any): never {\n throw { message, value };\n}\n","import { getOptionHedgeValue } from './factories';\n\nexport const getOptionHedgePaymentDate = getOptionHedgeValue('paymentDate');\n","import type { IHedge } from 'state/fxOptions/model/optionsStreams';\n\n// TODO delete file after migration SGEFX-4288\nexport function findHedge(\n hedges: readonly IHedge[] | undefined | null,\n paymentDate: string | null | undefined,\n) {\n return hedges?.length === 1\n ? hedges?.[0]\n : hedges?.find(({ maturityDate }) => maturityDate === paymentDate) ?? null;\n}\n","import type { AppState } from 'state/model';\nimport type { CurrencyChoice, BidAskPair, BidAsk } from 'state/share/productModel/litterals';\nimport { assertUnhandled } from 'utils/error';\nimport type { DisplayPriceType, IGreeks, IPremiumPairDataString } from '../fxOptionsModel';\nimport type { HedgeWay } from 'state/share/productModel/litterals';\nimport { getMarkupCurrencyChoice } from './fxOptionsSelectors';\nimport { throwIfUndefined } from 'utils/maps';\nimport { getOptionState, getOptionActiveRfsId } from './fxOptionsProductSelectors';\nimport type {\n FxOptionStreamState,\n IFxOptionStreamState,\n IFxOptionStreamStreamingState,\n IHedge,\n IMarginData,\n IPremiumData,\n IQuote,\n IQuoteCurrency,\n WayType,\n} from '../model/optionsStreams';\nimport { assertUnreachable, isNotDefined } from '@sgme/fp';\nimport { getOptionHedgePaymentDate } from './optionHedgeValue';\nimport { findHedge } from 'components/FxOptionTile/Hedge/findHedge';\n\nconst allowedStreamStatus: ReadonlyArray = ['PRICING', 'EXPIRED'];\n\nexport function isPrice(state: FxOptionStreamState): state is IFxOptionStreamStreamingState {\n return allowedStreamStatus.includes(state.status);\n}\n\nexport function getOptionStreamState(state: AppState, streamId: string) {\n return throwIfUndefined(\n state.fxOptions.streams[streamId],\n `Option stream state for ${streamId} does not exist`,\n );\n}\n\nexport function isOptionStreamPresent(state: AppState, streamId: string): boolean {\n return !!state.fxOptions.streams[streamId];\n}\n\nexport function getQuoteFromStream(\n state: AppState,\n streamId: string,\n): Readonly> | null {\n const stream = getOptionStreamState(state, streamId);\n return isPrice(stream) ? stream.quote : null;\n}\n\nexport function getOptionQuoteCcyData(state: AppState, tileId: string): IQuoteCurrency | null {\n const {\n displayPriceType: [priceCurrency],\n currentStreamId,\n lastStreamId,\n } = getOptionState(state, tileId);\n const activeStreamId = lastStreamId ?? currentStreamId;\n\n if (activeStreamId === null) {\n return null;\n }\n\n const streamState = getOptionStreamState(state, activeStreamId);\n if (!isPrice(streamState)) {\n return null;\n }\n\n return (priceCurrency === 1 ? streamState?.quote?.ccy1 : streamState?.quote?.ccy2) ?? null;\n}\n\nexport function getOptionQuote(state: AppState, quoteId: string): IQuote | null {\n const activeStreamId = getOptionActiveRfsId(state, quoteId);\n\n if (activeStreamId === null) {\n return null;\n }\n\n const streamState = getOptionStreamState(state, activeStreamId);\n\n if (!isPrice(streamState)) {\n return null;\n }\n\n return streamState?.quote ?? null;\n}\n\nexport function getStrikeFromStream(state: AppState, streamId: string, legId?: string) {\n const legData = getLegData(state, streamId, legId || '0');\n return legData !== null ? legData.strikeData : null;\n}\n\nexport function getQuoteHedgeFromStream(state: AppState, streamId: string | null) {\n if (streamId !== null) {\n const quote = getQuoteFromStream(state, streamId);\n if (quote !== null) {\n return quote.hedge;\n }\n }\n return null;\n}\n\nexport function getGreeksFromStream(\n state: AppState,\n streamId: string,\n notionalCurrency: CurrencyChoice,\n legId?: string,\n): Readonly | null {\n const quote = getQuoteFromStream(state, streamId);\n\n if (quote === null) {\n return null;\n }\n\n if (legId !== undefined) {\n const legData = getLegData(state, streamId, legId);\n if (legData === null) {\n return null;\n }\n const {\n greeks: {\n deltaCcy1,\n deltaCcy2,\n vegaCcy1,\n vegaCcy2,\n gammaCcy1,\n gammaCcy2,\n thetaCcy1,\n thetaCcy2,\n },\n } = legData;\n return {\n deltaCcy: Number.parseFloat(notionalCurrency === 1 ? deltaCcy1 : deltaCcy2),\n vegaCcy: Number.parseFloat(notionalCurrency === 1 ? vegaCcy1 : vegaCcy2),\n gammaCcy: Number.parseFloat(notionalCurrency === 1 ? gammaCcy1 : gammaCcy2),\n thetaCcy: Number.parseFloat(notionalCurrency === 1 ? thetaCcy1 : thetaCcy2),\n };\n }\n\n return {\n deltaCcy: Number.parseFloat(notionalCurrency === 1 ? quote.ccy1.deltaCcy : quote.ccy2.deltaCcy),\n vegaCcy: Number.parseFloat(notionalCurrency === 1 ? quote.ccy1.vegaCcy : quote.ccy2.vegaCcy),\n gammaCcy: Number.parseFloat(notionalCurrency === 1 ? quote.ccy1.gammaCcy : quote.ccy2.gammaCcy),\n thetaCcy: Number.parseFloat(notionalCurrency === 1 ? quote.ccy1.thetaCcy : quote.ccy2.thetaCcy),\n };\n}\n\nexport function getMarketDataFromStream(state: AppState, streamId: string, legId?: string) {\n const legData = getLegData(state, streamId, legId || '0');\n return legData !== null ? legData.marketData : null;\n}\n\nexport function getMarginDataFromStream(state: AppState, streamId: string, legId: string) {\n const legData = getLegData(state, streamId, legId);\n return legData !== null ? legData.marginData : null;\n}\n\nexport function getStrategyMarginFromQuoteCcy(quote: IQuoteCurrency, way: WayType): number {\n switch (way) {\n case 'Both':\n case 'Buy':\n return quote.askMarkup;\n case 'Sell':\n return quote.bidMarkup;\n default:\n assertUnreachable(way, 'Unhandled way');\n }\n}\n\nexport function getStrategyMarginFromQuote(quote: IQuote, markupCurrency: CurrencyChoice): number {\n switch (markupCurrency) {\n case 1:\n return getStrategyMarginFromQuoteCcy(quote.ccy1, quote.strategyWay);\n case 2:\n return getStrategyMarginFromQuoteCcy(quote.ccy2, quote.strategyWay);\n default:\n assertUnreachable(markupCurrency, 'Unhandled markup currency');\n }\n}\n\nexport function getLegMarginByCcy(\n marginData: IMarginData | null,\n markupCurrency: CurrencyChoice,\n): BidAskPair | null {\n if (marginData === null) {\n return null;\n }\n\n switch (markupCurrency) {\n case 1: {\n return {\n bid: marginData.bidMarkupCcy1 || 0,\n ask: marginData.askMarkupCcy1 || 0,\n };\n }\n case 2:\n return {\n bid: marginData.bidMarkupCcy2 || 0,\n ask: marginData.askMarkupCcy2 || 0,\n };\n default:\n assertUnreachable(markupCurrency, 'Unhandled markup currency');\n }\n}\n\nexport function getOptionLegPremiumFromStream(\n state: AppState,\n legId: string,\n streamId: string,\n displayPriceType: DisplayPriceType,\n): IPremiumPairDataString | null {\n const legData = getLegData(state, streamId, legId);\n const premiumData = legData?.premiumData ?? null;\n return getBidAskPairFromPremiumData(premiumData, displayPriceType);\n}\n\nfunction getBidAskPairFromPremiumData(\n premiumData: IPremiumData | null,\n displayPriceType: DisplayPriceType,\n): IPremiumPairDataString | null {\n if (premiumData === null) {\n return null;\n }\n\n const [currency, displayType] = displayPriceType;\n\n switch (displayType) {\n case 'AMOUNT':\n case 'VOLATILITY':\n return currency === 1\n ? {\n bid: premiumData.bidAmountCcy1.toString(),\n ask: premiumData.askAmountCcy1.toString(),\n }\n : {\n bid: premiumData.bidAmountCcy2.toString(),\n ask: premiumData.askAmountCcy2.toString(),\n };\n\n case 'PERCENT':\n return currency === 1\n ? {\n bid: premiumData.bidPercentCcy1.toString(),\n ask: premiumData.askPercentCcy1.toString(),\n }\n : {\n bid: premiumData.bidPercentCcy2.toString(),\n ask: premiumData.askPercentCcy2.toString(),\n };\n\n case 'PPS':\n return currency === 1\n ? {\n bid: premiumData.bidPpsCcy1.toString(),\n ask: premiumData.askPpsCcy1.toString(),\n }\n : {\n bid: premiumData.bidPpsCcy2.toString(),\n ask: premiumData.askPpsCcy2.toString(),\n };\n\n default:\n assertUnhandled('display type not handled', displayType);\n }\n}\n\nexport function getOptionLegMarkupFromStream(\n state: AppState,\n optionId: string,\n legId: string,\n streamId: string,\n): BidAskPair | null {\n const markupCurrency = getMarkupCurrencyChoice(state, optionId);\n\n return getLegMarginByCcy(getMarginDataFromStream(state, streamId, legId), markupCurrency!);\n}\n\nfunction getLegData(state: AppState, streamId: string, legId: string) {\n const quote = getQuoteFromStream(state, streamId);\n\n return quote?.legsData?.[legId] ?? null;\n}\n\nexport function getOptionQuoteId(state: AppState, streamId: string | null): string | null {\n if (streamId === null) {\n return null;\n }\n\n const streamState = getOptionStreamState(state, streamId);\n\n if (streamState.status !== 'PRICING') {\n return null;\n }\n\n return streamState.quote.quoteId;\n}\nexport function getOptionStreamStatus(\n state: AppState,\n streamId: string | null,\n): IFxOptionStreamState['status'] | null {\n if (streamId === null) {\n return null;\n }\n\n const { status } = getOptionStreamState(state, streamId);\n\n return status;\n}\n\nexport function getOptionStreamVersion(state: AppState, streamId: string | null): number | null {\n if (streamId === null) {\n return null;\n }\n\n const { version } = getOptionStreamState(state, streamId);\n\n return version;\n}\n\nexport function getOptionHedgeWay(\n state: AppState,\n streamId: string | null,\n hedgeId: string,\n): HedgeWay {\n if (streamId === null || !isOptionStreamPresent(state, streamId)) {\n return 'WayUnknown';\n }\n const quote = getQuoteFromStream(state, streamId);\n const hedgePaymentDate = getOptionHedgePaymentDate(state, hedgeId);\n if (quote === null || isNotDefined(quote.hedge)) {\n return 'WayUnknown';\n }\n\n return findHedge(quote.hedge, hedgePaymentDate)?.way || 'WayUnknown';\n}\n\nexport function getOptionMidVolatility(state: AppState, streamId: string) {\n const quote = getQuoteFromStream(state, streamId);\n return quote?.midVolatility ?? null;\n}\n\nexport function getOptionLegMidVolatility(state: AppState, streamId: string, mpLegId: string) {\n const leg = getLegData(state, streamId, mpLegId);\n return leg != null ? leg.midVolatility : null;\n}\n\nexport function hasOptionBypassedLimitCheck(state: AppState, quoteId: string) {\n const quoteState = getOptionState(state, quoteId);\n\n if (quoteState === null) {\n return false;\n }\n\n if (!isOptionStreamPresent(state, quoteState.currentStreamId!)) {\n return false;\n }\n\n const streamState = getOptionStreamState(state, quoteState.currentStreamId!);\n\n return streamState.status === 'PRICING' && streamState.skippedLimitCheck;\n}\n\nexport function getVolatilityFromStream(\n state: AppState,\n streamId: string,\n mpLegId: string,\n): BidAsk | undefined {\n const quote = getQuoteFromStream(state, streamId);\n return quote?.legsData?.[mpLegId]?.marketData?.volatility;\n}\n","import { getOptionValue } from './factories';\n\nexport const getOptionAmountReferenceCurrency = getOptionValue('amountReferenceCurrency');\nexport const getOptionAmountReferenceIsOverridden = getOptionValue('amountReferenceIsOverridden');\n","import { getOptionVanillaLegValue } from './factories';\n\nexport const getOptionLegReadyToPrice = getOptionVanillaLegValue('isReadyToPrice');\nexport const getOptionLegPossibleSettlementTypes =\n getOptionVanillaLegValue('possibleSettlementTypes');\nexport const getOptionLegPossibleCashSettlementCurrencies = getOptionVanillaLegValue(\n 'possibleCashSettlementCurrencies',\n);\nexport const getOptionLegPossibleFixingReferences1 = getOptionVanillaLegValue(\n 'possibleFixingReferences1',\n);\nexport const getOptionLegCurrency1 = getOptionVanillaLegValue('currency1');\nexport const getOptionLegCurrency2 = getOptionVanillaLegValue('currency2');\nexport const getOptionLegPossibleMarketPlaces = getOptionVanillaLegValue('possibleMarketPlaces');\nexport const getOptionLegIsStrikeInDelta = getOptionVanillaLegValue('isStrikeInDelta');\nexport const getOptionLegSolvable = getOptionVanillaLegValue('solvable');\n","import type { AppState } from 'state/model';\n\nconst getStrippingState = (state: AppState, quoteId: string) => state.fxOptions.strippings[quoteId];\n\nexport const isOptionStrippingOpen = (state: AppState, quoteId: string) =>\n getStrippingState(state, quoteId) !== undefined;\n\nexport const getOptionStrippingError = (state: AppState, quoteId: string) =>\n getStrippingState(state, quoteId)?.error;\n","import { getOptionHedgeInput } from './factories';\n\nexport const getOptionHedgeAmount = getOptionHedgeInput('amount');\nexport const getOptionHedgeCurrency = getOptionHedgeInput('currency');\nexport const getOptionHedgeRate = getOptionHedgeInput('rate');\n","import type { FxSwapStreamState } from '../fxSwapsModel';\n\nimport type { AppState } from 'state/model';\nimport { throwIfUndefined } from 'utils/maps';\nexport function getSwapRfsStream(state: AppState, streamId: string): FxSwapStreamState {\n return throwIfUndefined(\n state.fxSwaps.streams[streamId],\n `Swap stream state ${streamId} does not exist`,\n );\n}\n\nexport function getSwapRfsStreamQuote(state: AppState, streamId: string) {\n const stream = getSwapRfsStream(state, streamId);\n const quote = stream.status === 'PRICING' ? stream.quote : undefined;\n return throwIfUndefined(quote, `Swap stream state ${streamId} not in PRICING state`);\n}\n\nexport function isSwapStreamPresent(state: AppState, streamId: string): boolean {\n return !!state.fxSwaps.streams[streamId];\n}\n\nexport function getSwapRfsStreamQuoteType(state: AppState, streamId: string) {\n return getSwapRfsStreamQuote(state, streamId).quoteType;\n}\n","import { convertToPointsWithPrecision } from 'utils/margin';\nimport { throwIfUndefined } from 'utils/maps';\nimport { precisionAdderWithPrecision } from 'utils/number';\nimport type { AppState } from 'state/model';\nimport type { CurrencyChoice, BidAskPair } from 'state/share/productModel/litterals';\nimport { getCurrencyPrecision, getTileMaxDate } from 'state/referenceData/referenceDataSelectors';\nimport { getSwapRfsStream } from './fxSwapsStreamsSelectors';\nimport { getSwapCurrencyPair } from './swapInput';\nimport type { FxSwapState } from 'state/fxSwaps/fxSwapsModel';\n\nexport function getSwapState(state: AppState, tileId: string): FxSwapState {\n return throwIfUndefined(state.fxSwaps.swaps[tileId], `Swap state for ${tileId} does not exist`);\n}\n\nexport function getSwapTradeCaptureCurrentSessionId(\n currentState: AppState,\n titleId: string,\n): string | null {\n const { currentSessionId } = getSwapState(currentState, titleId);\n return currentSessionId;\n}\n\nexport function getSwapTradeCaptureIdVersion(\n currentState: AppState,\n titleId: string,\n): number | null {\n const { tradeCaptureIdVersion } = getSwapState(currentState, titleId);\n return tradeCaptureIdVersion;\n}\n\nexport function getCurrentSwapCurrencyPair(state: AppState, swapId: string) {\n const currencyPair = getSwapCurrencyPair(state, swapId);\n return currencyPair.value;\n}\n\nexport function getSwapMargin(state: AppState, tileId: string) {\n const currencyPair = getSwapCurrencyPair(state, tileId).value;\n if (currencyPair !== null) {\n const { bidMargin, askMargin } = getSwapState(state, tileId);\n const precision = getCurrencyPrecision(state, currencyPair);\n const toPoints = convertToPointsWithPrecision(precision);\n return {\n bidMargin: +toPoints(bidMargin ?? 0).toFixed(2) ?? 0,\n askMargin: +toPoints(askMargin ?? 0).toFixed(2) ?? 0,\n };\n }\n return {\n bidMargin: 0,\n askMargin: 0,\n };\n}\n\nexport function getSwapMarkup(state: AppState, swapId: string) {\n const defaultMarkup = { bidMarkup: 0, askMarkup: 0 };\n const {\n currentStreamId,\n markupCurrency,\n bidMargin: bidSwapMargin,\n askMargin: askSwapMargin,\n bidSpotMargin,\n askSpotMargin,\n values: { amountCurrency, nearAmount, farAmount, currencyPair, nearPriceReference },\n } = getSwapState(state, swapId);\n\n // data common to all string types\n if (farAmount === null || nearAmount === null || currencyPair === null) {\n return defaultMarkup;\n }\n\n const precision = getCurrencyPrecision(state, currencyPair);\n\n if (currentStreamId !== null) {\n const swapStreamState = getSwapRfsStream(state, currentStreamId);\n if (swapStreamState.status !== 'PRICING') {\n return defaultMarkup;\n }\n\n const {\n spot: salesSpot,\n nearPoints: nearClientPoints,\n nearSalesPoints,\n farPoints: farSalesPoints,\n nearDf2,\n farDf2,\n } = swapStreamState.quote;\n\n const { bid: bidMarkup, ask: askMarkup } = computeMarkup(\n nearAmount,\n farAmount,\n salesSpot,\n nearPriceReference,\n nearSalesPoints,\n nearClientPoints,\n farSalesPoints,\n { bid: bidSpotMargin || 0, ask: askSpotMargin || 0 },\n { bid: bidSwapMargin || 0, ask: askSwapMargin || 0 },\n nearDf2,\n farDf2,\n precision,\n amountCurrency,\n markupCurrency,\n );\n return { bidMarkup, askMarkup };\n }\n\n return defaultMarkup;\n}\n\nexport function computeMarkup(\n nearNotional: number,\n farNotional: number,\n salesSpot: BidAskPair,\n clientNearPrice: BidAskPair | null,\n nearSalesPoints: BidAskPair,\n nearClientPoints: BidAskPair,\n farSalesPoints: BidAskPair,\n spotMargin: BidAskPair,\n swapMargin: BidAskPair,\n nearDf2: number,\n farDf2: number,\n precision: number,\n amountCurrency: CurrencyChoice,\n markupCurrency: CurrencyChoice,\n): BidAskPair {\n const precisionAdder = precisionAdderWithPrecision(precision + 1);\n const sumPairs = sumPairsWithPrecision(precision + 1);\n const unevenFactor = Math.sign(farNotional - nearNotional);\n const clientSpotBid =\n clientNearPrice !== null\n ? clientNearPrice.bid - nearClientPoints.bid\n : precisionAdder(salesSpot.bid, -unevenFactor * spotMargin.bid);\n const clientSpotAsk =\n clientNearPrice !== null\n ? clientNearPrice.ask - nearClientPoints.ask\n : precisionAdder(salesSpot.ask, unevenFactor * spotMargin.ask);\n const nearEvenValues = computeNearEvenMarkups(\n nearNotional,\n salesSpot,\n { bid: clientSpotBid, ask: clientSpotAsk },\n nearSalesPoints,\n nearClientPoints,\n precision,\n nearDf2,\n amountCurrency,\n );\n\n const farEvenValues = computeFarEvenMarkups(\n farNotional,\n salesSpot,\n { bid: clientSpotBid, ask: clientSpotAsk },\n farSalesPoints,\n swapMargin,\n precision,\n farDf2,\n amountCurrency,\n );\n\n const swapMarkup = sumPairs(nearEvenValues.markup, farEvenValues.markup);\n\n const spotMarkup = {\n bid:\n (clientNearPrice === null ? spotMargin.bid : unevenFactor * (salesSpot.bid - clientSpotBid)) *\n Math.abs(\n amountCurrency === 1\n ? farNotional - nearNotional\n : farNotional / farEvenValues.clientPrice.bid -\n nearNotional / nearEvenValues.clientPrice.bid,\n ),\n ask:\n (clientNearPrice === null ? spotMargin.ask : unevenFactor * (clientSpotAsk - salesSpot.ask)) *\n Math.abs(\n amountCurrency === 1\n ? farNotional - nearNotional\n : farNotional / farEvenValues.clientPrice.ask -\n nearNotional / nearEvenValues.clientPrice.ask,\n ),\n };\n\n const totalMarkup = sumPairs(swapMarkup, spotMarkup);\n\n return markupCurrency === 2\n ? totalMarkup\n : {\n bid: totalMarkup.bid / salesSpot.ask,\n ask: totalMarkup.ask / salesSpot.bid,\n };\n}\n\nexport function computeNearEvenMarkups(\n nearNotional: number,\n salesSpot: BidAskPair,\n clientSpot: BidAskPair,\n nearSalesPoints: BidAskPair,\n nearClientPoints: BidAskPair,\n precision: number,\n nearDf2: number,\n amountCurrency: CurrencyChoice,\n) {\n const sumPairs = sumPairsWithPrecision(precision + 1);\n\n const nearClientPrice = sumPairs(clientSpot, nearClientPoints);\n const nearSalesPrice = sumPairs(salesSpot, nearSalesPoints);\n\n const nearEvenMarkupBid =\n (((nearClientPrice.bid - nearSalesPrice.bid) * nearDf2 - (clientSpot.bid - salesSpot.bid)) *\n nearNotional) /\n (amountCurrency === 1 ? 1 : nearClientPrice.bid);\n\n const nearEvenMarkupAsk =\n ((clientSpot.ask - salesSpot.ask - (nearClientPrice.ask - nearSalesPrice.ask) * nearDf2) *\n nearNotional) /\n (amountCurrency === 1 ? 1 : nearClientPrice.ask);\n\n return {\n markup: { bid: nearEvenMarkupBid, ask: nearEvenMarkupAsk },\n clientPrice: nearClientPrice,\n };\n}\n\nexport function computeFarEvenMarkups(\n farNotional: number,\n salesSpot: BidAskPair,\n clientSpot: BidAskPair,\n farSalesPoints: BidAskPair,\n swapMargin: BidAskPair,\n precision: number,\n farDf2: number,\n amountCurrency: CurrencyChoice,\n) {\n const sumPairs = sumPairsWithPrecision(precision + 1);\n\n const farClientPoints = {\n bid: farSalesPoints.bid - swapMargin.bid,\n ask: farSalesPoints.ask + swapMargin.ask,\n };\n\n const farClientPrice = sumPairs(clientSpot, farClientPoints);\n\n const farSalesPrice = sumPairs(salesSpot, farSalesPoints);\n\n const farEvenMarkupBid =\n ((clientSpot.bid - salesSpot.bid - (farClientPrice.bid - farSalesPrice.bid) * farDf2) *\n farNotional) /\n (amountCurrency === 1 ? 1 : farClientPrice.bid);\n const farEvenMarkupAsk =\n (((farClientPrice.ask - farSalesPrice.ask) * farDf2 - (clientSpot.ask - salesSpot.ask)) *\n farNotional) /\n (amountCurrency === 1 ? 1 : farClientPrice.ask);\n\n return {\n markup: { bid: farEvenMarkupBid, ask: farEvenMarkupAsk },\n clientPrice: farClientPrice,\n };\n}\n\nconst sumPairsWithPrecision = (precision: number) => {\n const adder = precisionAdderWithPrecision(precision);\n return (pair1: BidAskPair, pair2: BidAskPair): BidAskPair => ({\n bid: adder(pair1.bid, pair2.bid),\n ask: adder(pair1.ask, pair2.ask),\n });\n};\n\nexport const getNearAmount = ({ values: { nearAmount } }: Readonly) => nearAmount;\n\nexport const getFarAmount = ({ values: { farAmount } }: Readonly) => farAmount;\n\nexport function isValidDateSwap(currentState: AppState, quoteId: string) {\n const state = getSwapState(currentState, quoteId);\n const maxDate = getTileMaxDate(currentState, quoteId);\n return (\n !state.values.farFixingDate ||\n maxDate === undefined ||\n new Date(state.values.farFixingDate) <= maxDate\n );\n}\n","import { getSwapMetadata } from './factories';\nimport type { AppState } from 'state/model';\nimport type { SwapProductName } from '../fxSwapsModel';\nimport {\n getSwapFarPrice,\n getSwapIsNonDeliverable,\n getSwapIsOffMarket,\n getSwapNearPrice,\n} from './swapInput';\n\nexport const getSwapPropertiesRequested = getSwapMetadata('propertiesRequested');\nexport const getSwapIsPriceable = getSwapMetadata('isPriceable');\nexport const getSwapCurrentStreamId = getSwapMetadata('currentStreamId');\nexport const getSwapBidSpotMargin = getSwapMetadata('bidSpotMargin');\nexport const getSwapAskSpotMargin = getSwapMetadata('askSpotMargin');\nexport const getSwapBidMargin = getSwapMetadata('bidMargin');\nexport const getSwapAskMargin = getSwapMetadata('askMargin');\n\nexport function getSwapProductName(state: AppState, tileId: string): SwapProductName {\n const isOffMarket = getSwapIsOffMarket(state, tileId).value;\n if (isOffMarket) {\n const nearPrice = getSwapNearPrice(state, tileId).value;\n const farPrice = getSwapFarPrice(state, tileId).value;\n if (nearPrice !== null) {\n return 'FxRollover';\n } else if (farPrice !== null) {\n return 'FxPredeliver';\n }\n }\n\n const { value: isNonDeliverable } = getSwapIsNonDeliverable(state, tileId);\n return isNonDeliverable ? 'FxNdSwap' : 'FxSwap';\n}\n","import type { AppState } from 'state/model';\nimport { getSwapRfsStream, getSwapRfsStreamQuote } from './fxSwapsStreamsSelectors';\nimport { convertToPointsWithPrecision, convertToRawWithPrecision } from 'utils/margin';\nimport { getCurrencyPrecision } from '../../referenceData/referenceDataSelectors';\nimport { getSwapState } from './fxSwapsProductSelectors';\nimport { roundToPrecision } from 'utils/number';\nimport type { BidAskPair, BidAsk } from 'state/share/productModel/litterals';\nimport { fieldData } from 'utils/fieldSelectors';\nimport type { SwapOffMarketType } from '../fxSwapsModel';\nimport {\n getSwapIsOffMarket,\n getSwapCurrencyPair,\n getSwapNearPrice,\n getSwapNearAmount,\n getSwapFarAmount,\n getSwapFarPrice,\n} from './swapInput';\nimport {\n getSwapCurrentStreamId,\n getSwapBidMargin,\n getSwapAskMargin,\n getSwapBidSpotMargin,\n getSwapAskSpotMargin,\n} from './swapMetadata';\nimport { isDefined } from '@sgme/fp';\n\nexport type PointsAndRawRecord = Record<'raw' | 'points', BidAsk> & { digits: number };\n\nconst bidAskPairTransform =\n (transformer: (value: number) => number) =>\n (pair: BidAskPair): BidAskPair => ({\n bid: transformer(pair.bid),\n ask: transformer(pair.ask),\n });\n\nconst roundToSwapPrecision = (precision: number) => (value: number | null) =>\n roundToPrecision(value || 0, precision + 2);\n\nconst roundToSpotPrecision = (precision: number) => (value: number | null) =>\n roundToPrecision(value || 0, precision);\n\nconst roundToSwapPointsPrecision = () => {\n return (value: number | null) => roundToPrecision(value || 0, 3);\n};\n\nconst roundToSpotPointsPrecision = (value: number | null) => roundToPrecision(value || 0, 1);\n\nexport interface PinnableValue {\n value: T;\n isPinned: boolean;\n}\n\nexport function getDisplayNearPoints(state: AppState, swapId: string): PointsAndRawRecord {\n const streamId = getSwapCurrentStreamId(state, swapId);\n if (streamId !== null) {\n const streamState = getSwapRfsStream(state, streamId);\n if (streamState.status === 'PRICING') {\n const precision = getSwapStreamCurrencyPrecision(state, swapId);\n if (precision === null) {\n throw new Error('inconsistant state, pricing without swap precision');\n }\n const toPoints = convertToPointsWithPrecision(precision);\n const bidAskPairToPoints = bidAskPairTransform(toPoints);\n const { nearPoints: nearPointsRawValue } = streamState.quote;\n const bidAskWithSwapPrecision = bidAskPairTransform(roundToSwapPrecision(precision));\n const bidAskToSwapPointsPrecision = bidAskPairTransform(\n roundToSwapPointsPrecision(),\n );\n \n return {\n raw: bidAskWithSwapPrecision(nearPointsRawValue),\n points: bidAskToSwapPointsPrecision(bidAskPairToPoints(nearPointsRawValue)),\n digits: 3,\n };\n }\n }\n throw new Error('getDisplayNearPoints selector should not be call in this context');\n}\n\nexport function getDisplayFarPoints(state: AppState, swapId: string): PointsAndRawRecord {\n const streamId = getSwapCurrentStreamId(state, swapId);\n if (streamId !== null) {\n const streamState = getSwapRfsStream(state, streamId);\n if (streamState.status === 'PRICING') {\n const precision = getSwapStreamCurrencyPrecision(state, swapId);\n if (precision === null) {\n throw new Error('inconsistant state, pricing without swap precision');\n }\n const toPoints = convertToPointsWithPrecision(precision);\n const bidAskPairToPoints = bidAskPairTransform(toPoints);\n const toRaw = convertToRawWithPrecision(precision);\n const bidAskPairToRaw = bidAskPairTransform(toRaw);\n const farPointswithPrecision = bidAskPairToPoints(streamState.quote.farPoints);\n const bidAskWithSwapPrecision = bidAskPairTransform(roundToSwapPrecision(precision));\n const bidAskToSwapPointsPrecision = bidAskPairTransform(\n roundToSwapPointsPrecision(),\n );\n const bidMargin = getSwapBidMargin(state, swapId);\n const askMargin = getSwapAskMargin(state, swapId);\n\n if (bidMargin === null || askMargin === null) {\n throw new Error('inconsistant state, pricing stream without swap margin');\n }\n const farPoints = {\n bid: farPointswithPrecision.bid - toPoints(bidMargin),\n ask: farPointswithPrecision.ask + toPoints(askMargin),\n };\n\n return {\n points: bidAskToSwapPointsPrecision(farPoints),\n raw: bidAskWithSwapPrecision(bidAskPairToRaw(farPoints)),\n digits: 3,\n };\n }\n }\n throw new Error('getDisplayFarPoints selector should not be call in this context');\n}\n\nexport function getDisplaySpot(state: AppState, swapId: string): BidAsk {\n const streamId = getSwapCurrentStreamId(state, swapId);\n const currencyPair = getSwapCurrencyPair(state, swapId).value;\n if (currencyPair !== null && streamId !== null) {\n const streamState = getSwapRfsStream(state, streamId);\n if (streamState.status === 'PRICING') {\n const precision = getCurrencyPrecision(state, currencyPair);\n const { spot: traderSpot, nearPoints } = getSwapRfsStreamQuote(state, streamId);\n\n const isOffMarket = fieldData(getSwapIsOffMarket(state, swapId)).data;\n if (isOffMarket) {\n return traderSpot;\n }\n\n const { value: manualNearPrice } = getSwapNearPrice(state, swapId);\n const bidAskToSpotPrecision = bidAskPairTransform(roundToSwapPrecision(precision));\n if (manualNearPrice !== null) {\n return bidAskToSpotPrecision({\n bid: manualNearPrice.bid - nearPoints.bid,\n ask: manualNearPrice.ask - nearPoints.ask,\n });\n }\n const bidSpotMargin = getSwapBidSpotMargin(state, swapId);\n const askSpotMargin = getSwapAskSpotMargin(state, swapId);\n\n const { value: nearAmount } = getSwapNearAmount(state, swapId);\n const { value: farAmount } = getSwapFarAmount(state, swapId);\n\n if (nearAmount === null || farAmount === null) {\n throw new Error('inconsistent state, pricing stream without amount');\n }\n\n if (bidSpotMargin === null || askSpotMargin === null) {\n throw new Error('inconsistent state, pricing stream without spotMargin');\n }\n const unevenFactor = Math.sign(farAmount - nearAmount);\n return bidAskToSpotPrecision({\n bid: traderSpot.bid - unevenFactor * bidSpotMargin,\n ask: traderSpot.ask + unevenFactor * askSpotMargin,\n });\n }\n }\n throw new Error('getDisplaySpot selector should not be call in this context');\n}\n\nexport function getDisplayNearPrice(\n state: AppState,\n swapId: string,\n): PinnableValue | null> {\n const { value: manualNearPrice } = getSwapNearPrice(state, swapId);\n if (manualNearPrice !== null) {\n return { value: manualNearPrice, isPinned: true };\n }\n const streamId = getSwapCurrentStreamId(state, swapId);\n if (streamId !== null) {\n const streamState = getSwapRfsStream(state, streamId);\n if (streamState.status === 'PRICING') {\n const clientSpot = getDisplaySpot(state, swapId);\n if (clientSpot === null) {\n throw new Error('inconsistent state : stream pricing but client spot price is missing');\n }\n const precision = getSwapStreamCurrencyPrecision(state, swapId);\n if (precision === null) {\n throw new Error('inconsistent state : stream pricing but precision is missing');\n }\n const { raw: nearPoints } = getDisplayNearPoints(state, swapId);\n const bidAskWithSwapPrecision = bidAskPairTransform(roundToSwapPrecision(precision + 1));\n\n return {\n value: bidAskWithSwapPrecision({\n bid: clientSpot.bid + nearPoints.bid,\n ask: clientSpot.ask + nearPoints.ask,\n }),\n isPinned: false,\n };\n }\n }\n return { value: null, isPinned: false };\n}\n\nexport function getDisplayFarPrice(\n state: AppState,\n swapId: string,\n): PinnableValue | null> {\n const { value: manualFarPrice } = getSwapFarPrice(state, swapId);\n if (manualFarPrice !== null) {\n return { value: manualFarPrice, isPinned: true };\n }\n const streamId = getSwapCurrentStreamId(state, swapId);\n if (streamId !== null) {\n const streamState = getSwapRfsStream(state, streamId);\n const precision = getSwapStreamCurrencyPrecision(state, swapId);\n if (streamState.status === 'PRICING' && precision !== null) {\n const clientSpot = getDisplaySpot(state, swapId)!;\n const { raw: farPoints } = getDisplayFarPoints(state, swapId);\n const bidAskWithSwapPrecision = bidAskPairTransform(roundToSwapPrecision(precision + 1));\n const farPrice = {\n bid: clientSpot.bid + farPoints.bid,\n ask: clientSpot.ask + farPoints.ask,\n };\n\n return {\n value: bidAskWithSwapPrecision(farPrice),\n isPinned: false,\n };\n }\n }\n return { value: null, isPinned: false };\n}\n\nexport function getSwapStreamCurrencyPrecision(state: AppState, swapId: string): number | null {\n const currencyPair = getSwapCurrencyPair(state, swapId).value;\n if (currencyPair === null) {\n return null;\n }\n const ccyPrecision = getCurrencyPrecision(state, currencyPair);\n\n return ccyPrecision;\n}\n\nexport function getDisplaySwapPointsAllIn(state: AppState, swapId: string): PointsAndRawRecord {\n const nearPrice = getDisplayNearPrice(state, swapId);\n const farPrice = getDisplayFarPrice(state, swapId);\n const precision = getSwapStreamCurrencyPrecision(state, swapId);\n if (\n nearPrice === null ||\n farPrice === null ||\n precision === null\n ) {\n throw new Error('getDisplaySwapPointsAllIn selector should not be call in this context');\n }\n const toPoints = convertToPointsWithPrecision(precision);\n const bidAskToPoints = bidAskPairTransform(toPoints);\n const bidAskWithSwapPrecision = bidAskPairTransform(roundToSwapPrecision(precision));\n const bidAskWithSwapPointsPrecision = bidAskPairTransform(\n roundToSwapPointsPrecision(),\n );\n const rawSwapPoints = {\n bid: farPrice.value!.bid - nearPrice.value!.bid,\n ask: farPrice.value!.ask - nearPrice.value!.ask,\n };\n\n return {\n points: bidAskWithSwapPointsPrecision(bidAskToPoints(rawSwapPoints)),\n raw: bidAskWithSwapPrecision(rawSwapPoints),\n digits: 3,\n };\n}\n\nexport function getDisplaySpotMargin(\n state: AppState,\n swapId: string,\n): Record<'raw' | 'points', BidAsk> {\n const { data: currencyPair } = fieldData(getSwapCurrencyPair(state, swapId));\n if (currencyPair === null) {\n throw new Error(\n 'getDisplaySpotMargin selector should not be called without a currency pair defined',\n );\n }\n const precision = getCurrencyPrecision(state, currencyPair);\n const bidAskToSpotPrecision = bidAskPairTransform(roundToSpotPrecision(precision));\n const bidAskToSpotPointsPrecision = bidAskPairTransform(roundToSpotPointsPrecision);\n\n const bidAskToPoints = bidAskPairTransform(convertToPointsWithPrecision(precision));\n\n const { value } = getSwapNearPrice(state, swapId);\n if (value === null) {\n const bidSpotMargin = getSwapBidSpotMargin(state, swapId);\n const askSpotMargin = getSwapAskSpotMargin(state, swapId);\n if (bidSpotMargin !== null && askSpotMargin !== null) {\n const rawSpotMargin = {\n bid: bidSpotMargin,\n ask: askSpotMargin,\n };\n return {\n points: bidAskToSpotPointsPrecision(bidAskToPoints(rawSpotMargin)),\n raw: bidAskToSpotPrecision(rawSpotMargin),\n };\n }\n } else {\n const streamId = getSwapCurrentStreamId(state, swapId);\n if (streamId !== null) {\n const streamState = getSwapRfsStream(state, streamId);\n if (streamState.status === 'PRICING') {\n const farNotional = getSwapFarAmount(state, swapId).value || 0;\n const nearNotional = getSwapNearAmount(state, swapId).value || 0;\n const unevenFactor = Math.sign(farNotional - nearNotional);\n const traderSpot = streamState.quote.spot;\n const clientSpot = getDisplaySpot(state, swapId);\n if (clientSpot !== null) {\n const rawSpotMargin = {\n bid: unevenFactor * (traderSpot.bid - clientSpot.bid),\n ask: unevenFactor * (clientSpot.ask - traderSpot.ask),\n };\n return {\n points: bidAskToSpotPointsPrecision(bidAskToPoints(rawSpotMargin)),\n raw: bidAskToSpotPrecision(rawSpotMargin),\n };\n }\n }\n }\n }\n\n const defaultValue = {\n points: { bid: 0, ask: 0 },\n raw: { bid: 0, ask: 0 },\n };\n return defaultValue;\n}\n\nexport function getDisplayMidRateAndMidPts(state: AppState, swapId: string) {\n const { currentStreamId } = getSwapState(state, swapId);\n const currencyPair = getSwapCurrencyPair(state, swapId).value;\n if (currentStreamId !== null && currencyPair !== null) {\n const precision = getCurrencyPrecision(state, currencyPair);\n const stream = getSwapRfsStream(state, currentStreamId);\n if (stream.status === 'PRICING') {\n const toPoints = convertToPointsWithPrecision(precision);\n const { midAllInRate = null, delta = null } = stream.quote;\n\n return {\n midAllInRate,\n midPts: delta === null ? null : roundToPrecision(toPoints(delta), 2),\n };\n }\n }\n return null;\n}\n\nexport function getSwapStreamStatus(state: AppState, tileId: string) {\n const { currentStreamId } = getSwapState(state, tileId);\n if (isDefined(currentStreamId)) {\n return getSwapRfsStream(state, currentStreamId).status;\n } else {\n return 'NONE';\n }\n}\n\nexport function getSwapMarkupCurrency(state: AppState, tileId: string) {\n const { markupCurrency } = getSwapState(state, tileId);\n const {\n values: { currency1, currency2 },\n } = getSwapState(state, tileId);\n return (markupCurrency === 1 ? currency1 : currency2) as string;\n}\n\nexport function getSwapOffMarketType(state: AppState, tileId: string): SwapOffMarketType | null {\n return fieldData(getSwapIsOffMarket(state, tileId)).data === false\n ? null\n : fieldData(getSwapNearPrice(state, tileId)).data !== null\n ? 'rollover'\n : fieldData(getSwapFarPrice(state, tileId)).data !== null\n ? 'predeliver'\n : null;\n}\n\nexport function getDisplayFarMktPoints(state: AppState, swapId: string): PointsAndRawRecord {\n const streamId = getSwapCurrentStreamId(state, swapId);\n const currencyPair = getSwapCurrencyPair(state, swapId).value;\n if (currencyPair !== null && streamId !== null) {\n const streamState = getSwapRfsStream(state, streamId);\n if (streamState.status === 'PRICING') {\n const precision = getCurrencyPrecision(state, currencyPair);\n const toPoints = convertToPointsWithPrecision(precision);\n const bidAskPairToPoints = bidAskPairTransform(toPoints);\n const toRaw = convertToRawWithPrecision(precision);\n const bidAskPairToRaw = bidAskPairTransform(toRaw);\n const farPoints = bidAskPairToPoints(streamState.quote.farMktPoints);\n const bidAskWithSwapPrecision = bidAskPairTransform(roundToSwapPrecision(precision));\n const bidAskToSwapPointsPrecision = bidAskPairTransform(roundToSwapPointsPrecision());\n return {\n points: bidAskToSwapPointsPrecision(farPoints),\n raw: bidAskWithSwapPrecision(bidAskPairToRaw(farPoints)),\n digits: 3,\n };\n }\n }\n throw new Error('getDisplayFarMktPoints selector should not be call in this context');\n}\n","import { getSwapValue } from './factories';\n\nexport const getSwapCurrency1 = getSwapValue('currency1');\nexport const getSwapCurrency2 = getSwapValue('currency2');\n","import type { CurrencyChoice } from 'state/share/productModel/litterals';\nimport type {\n ESPPriceType,\n EspStreamStreamingState,\n IESPClientPriceUnderThreshold,\n IESPPriceThreshold,\n IESPTraderPriceUnderThreshold,\n} from './espStreamsModel';\nimport { logger } from 'logging/logger';\nimport { isEmptyOrNotDefined } from \"@sgme/fp\";\n\n// ███████╗███████╗██████╗ ██████╗ █████╗ ████████╗ █████╗\n// ██╔════╝██╔════╝██╔══██╗ ██╔══██╗██╔══██╗╚══██╔══╝██╔══██╗\n// █████╗ ███████╗██████╔╝ ██║ ██║███████║ ██║ ███████║\n// ██╔══╝ ╚════██║██╔═══╝ ██║ ██║██╔══██║ ██║ ██╔══██║\n// ███████╗███████║██║ ██████╔╝██║ ██║ ██║ ██║ ██║\n// ╚══════╝╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝\n//\nconst bidWith = (priceType: ESPPriceType) => (price: IESPPriceThreshold) =>\n priceType === 'ESP.TRADER.PRICE'\n ? (price as IESPTraderPriceUnderThreshold).traderBid\n : (price as IESPClientPriceUnderThreshold).clientBid;\nconst askWith = (priceType: ESPPriceType) => (price: IESPPriceThreshold) =>\n priceType === 'ESP.TRADER.PRICE'\n ? (price as IESPTraderPriceUnderThreshold).traderAsk\n : (price as IESPClientPriceUnderThreshold).clientAsk;\n\nexport function getEspPriceByNotional(\n { priceType, ladders }: Pick,\n notional: number | null,\n notionalCurrency: CurrencyChoice,\n): {\n price: IESPTraderPriceUnderThreshold | IESPClientPriceUnderThreshold | null;\n index: number | null;\n} {\n if (notional === null) {\n return { price: ladders[0] ?? null, index: null };\n }\n\n const bid = bidWith(priceType);\n const ask = askWith(priceType);\n\n let index = 0;\n for (const price of ladders) {\n const coeffBid = notionalCurrency === 1 ? 1 : bid(price);\n const coeffAsk = notionalCurrency === 1 ? 1 : ask(price);\n\n if (notional <= coeffBid * price.thresholdBid && notional <= coeffAsk * price.thresholdAsk) {\n return { price, index };\n }\n index++;\n }\n return { price: null, index: null };\n}\n\nexport function clientMidRate(threshold: IESPClientPriceUnderThreshold) {\n return (threshold.clientAsk + threshold.clientBid) / 2;\n}\n\nexport function traderMidRate(threshold: IESPTraderPriceUnderThreshold) {\n return (threshold.traderAsk + threshold.traderBid) / 2;\n}\n\nexport function getLadderIndexFrom(\n espStreamingState: EspStreamStreamingState,\n amount: number | null,\n amountCurrency: CurrencyChoice,\n): number | null {\n if (\n espStreamingState.ladders[0].thresholdAsk === 0 ||\n espStreamingState.ladders[0].thresholdBid === 0\n ) {\n return null;\n }\n const ladder = getEspPriceByNotional(espStreamingState, amount, amountCurrency);\n if (ladder.price != null) {\n if (ladder.price.valid) {\n return ladder.index;\n }\n logger.logInformation('PRICE IS INVALID : {price_s}', JSON.stringify(ladder.price));\n }\n\n return null;\n}\n\nexport function isAmountInsideValidLadders(\n amount: number | null,\n amountCurrency: CurrencyChoice,\n espStreamingState: EspStreamStreamingState,\n): boolean {\n if (\n amount === null ||\n isEmptyOrNotDefined(espStreamingState.ladders) ||\n espStreamingState.priceType === undefined\n ) {\n return true;\n } else {\n return getLadderIndexFrom(espStreamingState, amount, amountCurrency) !== null;\n }\n}\n","import type { CurrencyChoice } from 'state/share/productModel/litterals';\nimport type { FxCashState } from 'state/fxCashs/fxCashsModel';\nimport { assertUnreachable } from '@sgme/fp';\n\nexport function getMarkupCurrency({\n markupCurrency,\n values: { currency1, currency2 },\n}: Pick) {\n return markupCurrency === 1 ? currency1 : currency2;\n}\n\nexport interface MarkupComputationValues {\n amountCurrency: CurrencyChoice;\n markupCurrency: CurrencyChoice;\n notional: number;\n bidTotalMargin: number;\n askTotalMargin: number;\n allInBid: number;\n allInAsk: number;\n}\n\ninterface MarkupResult {\n bidMarkup: number;\n askMarkup: number;\n}\n\nexport function computeMarkup(values: MarkupComputationValues): MarkupResult {\n switch (values.amountCurrency) {\n case 1:\n return computeMarkupWithNotionalInCcy1(values);\n case 2:\n return computeMarkupWithNotionalInCcy2(values);\n default:\n assertUnreachable(values.amountCurrency, 'Amount currency is not handled');\n }\n}\n\nfunction computeMarkupWithNotionalInCcy1({\n markupCurrency,\n notional,\n bidTotalMargin,\n askTotalMargin,\n allInBid,\n allInAsk,\n}: MarkupComputationValues): MarkupResult {\n const bidMarkupCcy2 = notional * bidTotalMargin;\n const askMarkupCcy2 = notional * askTotalMargin;\n switch (markupCurrency) {\n case 1:\n return {\n bidMarkup: Math.round(bidMarkupCcy2 / allInAsk),\n askMarkup: Math.round(askMarkupCcy2 / allInBid),\n };\n case 2:\n return {\n bidMarkup: Math.round(bidMarkupCcy2),\n askMarkup: Math.round(askMarkupCcy2),\n };\n default:\n assertUnreachable(markupCurrency, 'Markup currency is not handled');\n }\n}\n\nfunction computeMarkupWithNotionalInCcy2({\n markupCurrency,\n notional,\n bidTotalMargin,\n askTotalMargin,\n allInBid,\n allInAsk,\n}: MarkupComputationValues): MarkupResult {\n const traderBid = allInBid - bidTotalMargin;\n const traderAsk = allInAsk + askTotalMargin;\n\n const conversionFactorBid = 1 / traderBid - 1 / allInBid;\n const conversionFactorAsk = 1 / allInAsk - 1 / traderAsk;\n\n const bidMarkupCcy1 = notional * conversionFactorBid;\n const askMarkupCcy1 = notional * conversionFactorAsk;\n\n switch (markupCurrency) {\n case 1:\n return {\n bidMarkup: Math.round(bidMarkupCcy1),\n askMarkup: Math.round(askMarkupCcy1),\n };\n case 2:\n return {\n bidMarkup: Math.round(bidMarkupCcy1 * allInAsk),\n askMarkup: Math.round(askMarkupCcy1 * allInBid),\n };\n default:\n assertUnreachable(markupCurrency, 'Markup currency is not handled');\n }\n}\n","import type { AppState } from 'state/model';\nimport type * as fxCashModel from 'state/fxCashs/fxCashsModel';\nimport { throwIfUndefined } from 'utils/maps';\nimport type { BidAskPair, CurrencyChoice } from 'state/share/productModel/litterals';\nimport type {\n EspStreamStreamingState,\n IESPTraderPriceUnderThreshold,\n IESPClientPriceUnderThreshold,\n} from 'state/esp/espStreamsModel';\nimport { getEspPriceByNotional, getLadderIndexFrom } from \"state/esp/utils\";\nimport * as utils from './utils';\nimport { getCashAmount } from './cashInput';\nimport { getEspLimit, getTileMaxDate } from 'state/referenceData/referenceDataSelectors';\nimport { isDefined, isEmpty } from '@sgme/fp';\nimport type { IEspStreamState } from \"state/esp/espStreamsModel\";\n\n// duplicate from state/esp/espStreamsSelectors to avoid dependency cycle\nexport function getEspStreamState(\n state: AppState,\n espStreamId: string,\n): IEspStreamState | undefined {\n return state.espStreams[espStreamId];\n}\n\nexport function getCashState(state: AppState, tileId: string): fxCashModel.FxCashState {\n return throwIfUndefined(\n state.fxCashs.cashs[tileId],\n `Cash state for tile ${tileId} does not exist`,\n );\n}\n\nexport function getCashTradeCaptureCurrentSessionId(\n currentState: AppState,\n cashId: string,\n): string | null {\n const { currentSessionId } = getCashState(currentState, cashId);\n return currentSessionId;\n}\n\nexport function getCashTradeCaptureIdVersion(\n currentState: AppState,\n cashId: string,\n): number | null {\n const { tradeCaptureIdVersion } = getCashState(currentState, cashId);\n return tradeCaptureIdVersion;\n}\n\nexport type StreamSource = 'ESP' | 'RFS' | 'None';\n\nexport function getCashStreamSource(state: AppState, tileId: string): StreamSource {\n const { currentStreamId, currentEspStreamId } = getCashState(state, tileId);\n if (currentStreamId) {\n return 'RFS';\n }\n if (currentEspStreamId) {\n return 'ESP';\n }\n return 'None';\n}\n\nexport function isCashTileDirty(state: AppState, cashId: string) {\n const { inputs, dirtyFields } = getCashState(state, cashId);\n return Object.keys(inputs).length > 0 || !isEmpty(dirtyFields);\n}\n\nexport function getAmountCurrency(state: AppState, cashId: string) {\n const {\n values: { currency1: ccy1, currency2: ccy2, amountCurrency: ccy },\n } = getCashState(state, cashId);\n return ccy === 1 ? ccy1 : ccy2;\n}\n\nexport function getCashMarkupCurrency(state: AppState, tileId: string) {\n return utils.getMarkupCurrency(getCashState(state, tileId));\n}\n\nexport function getCashEspSpotPriceWithMarginForExecution(\n espStreamingState: EspStreamStreamingState,\n notional: number | null,\n notionalCurrency: CurrencyChoice,\n margin: { bidMargin: number; askMargin: number },\n): BidAskPair {\n const { price } = getEspPriceByNotional(espStreamingState, notional, notionalCurrency);\n if (price === null) {\n return { bid: 0, ask: 0 };\n }\n\n if (espStreamingState.priceType === 'ESP.TRADER.PRICE') {\n const { traderBid, traderAsk } = price as IESPTraderPriceUnderThreshold;\n return {\n bid: traderBid - margin.bidMargin,\n ask: traderAsk + margin.askMargin,\n };\n } else {\n const { clientBid, clientAsk } = price as IESPClientPriceUnderThreshold;\n return { bid: clientBid, ask: clientAsk };\n }\n}\n\nexport function getLadderIndex(state: AppState, tileId: string, amount: number): number | null {\n const { currentEspStreamId } = getCashState(state, tileId);\n if (currentEspStreamId === null) {\n return null;\n }\n const espStreamState = getEspStreamState(state, currentEspStreamId)!;\n\n if (espStreamState.status !== 'PRICING' || espStreamState.ladders.length === 0) {\n return null;\n }\n\n const {\n values: { amountCurrency },\n } = getCashState(state, tileId);\n\n return getLadderIndexFrom(espStreamState, amount, amountCurrency);\n}\n\nexport function isCashAmountInsideEspLimits(\n state: AppState,\n tileId: string,\n amount: number | null,\n) {\n const amountCcy = getAmountCurrency(state, tileId);\n if (amount === null || amount === 0 || amountCcy === null) {\n return true;\n }\n const espLimit = getEspLimit(state, amountCcy);\n if (espLimit === undefined) {\n return false;\n }\n return amount <= espLimit;\n}\n\nexport function getCashPriceSourceToDisplay(state: AppState, quoteId: string) {\n const { currentStreamId, currentEspStreamId } = getCashState(state, quoteId);\n if (isDefined(currentStreamId)) {\n return 'RFS';\n }\n if (isDefined(currentEspStreamId)) {\n const notional = getCashAmount(state, quoteId).value;\n const { status } = getEspStreamState(state, currentEspStreamId)!;\n if (\n status === 'PRICING' &&\n (notional === null ||\n (getLadderIndex(state, quoteId, notional) !== null &&\n isCashAmountInsideEspLimits(state, quoteId, notional)))\n ) {\n return 'ESP';\n }\n }\n return 'None';\n}\n\nexport function isValidDateCash(currentState: AppState, cashId: string) {\n const state = getCashState(currentState, cashId);\n const maxDate = getTileMaxDate(currentState, cashId);\n return (\n !state.values.maturityDate ||\n maxDate === undefined ||\n new Date(state.values.maturityDate) <= maxDate\n );\n}\n","import type { AppState } from 'state/model';\nimport { getCashState } from 'state/fxCashs/selectors/fxCashsSelectors';\nimport type { BidAskPair } from 'state/share/productModel/litterals';\n\nexport function getCashForwardMargin(state: AppState, tileId: string): BidAskPair {\n const { bidForwardMargin, askForwardMargin } = getCashState(state, tileId);\n return {\n bid: bidForwardMargin ?? 0,\n ask: askForwardMargin ?? 0,\n };\n}\n\nexport function getCashMargin(state: AppState, tileId: string) {\n const { bidMargin, askMargin, bidForwardMargin, askForwardMargin } = getCashState(state, tileId);\n return {\n bidSpotMargin: bidMargin ?? 0,\n askSpotMargin: askMargin ?? 0,\n bidForwardMargin: bidForwardMargin ?? 0,\n askForwardMargin: askForwardMargin ?? 0,\n };\n}\n","import { getBulkValue } from './factories';\n\nexport const getBulkValueDate = getBulkValue('valueDate');\n","import { getBulkMetadata } from './factories';\n\nexport const getBulkLegs = getBulkMetadata('legs');\nexport const getBulkStep = getBulkMetadata('step');\nexport const getBulkSelectedLegs = getBulkMetadata('selectedLegs');\nexport const getBulkExcludedLegs = getBulkMetadata('excludedLegs');\nexport const getBulkLastLegIdRequested = getBulkMetadata('lastLegIdRequested');\nexport const getBulkTradeCaptureCurrentSessionId = getBulkMetadata('currentSessionId');\nexport const getBulkTradeCaptureIdVersion = getBulkMetadata('tradeCaptureIdVersion');\nexport const getBulkPropertiesRequested = getBulkMetadata('propertiesRequested');\nexport const getBulkPropertiesRequestedError = getBulkMetadata('propertiesRequestError');\nexport const getBulkIsPriceable = getBulkMetadata('isPriceable');\nexport const getBulkCurrentStreamId = getBulkMetadata('currentStreamId');\nexport const getBulkLastStreamError = getBulkMetadata('lastStreamError');\n","import { getBulkLegInput } from './factories';\n\nexport type { BulkLegSharedPropertyStatus } from './factories';\n\nexport const getBulkLegProduct = getBulkLegInput('product');\nexport const getBulkLegIsUneven = getBulkLegInput('isUneven');\nexport const getBulkLegWay = getBulkLegInput('way');\nexport const getBulkLegAmount = getBulkLegInput('amount');\nexport const getBulkLegFarAmount = getBulkLegInput('farAmount');\nexport const getBulkLegPaymentDate = getBulkLegInput('paymentDate');\nexport const getBulkLegPaymentDateTenor = getBulkLegInput('paymentDateTenor');\nexport const getBulkLegFarPaymentDate = getBulkLegInput('farPaymentDate');\nexport const getBulkLegFarPaymentDateTenor = getBulkLegInput('farPaymentDateTenor');\n","import { getBulkLegValue } from './factories';\nexport {\n getBulkLegState,\n getBulkSplitLegs,\n getBulkNettedLegs,\n getBulkNettedLegMargin,\n getBulkNettedLegWay,\n} from './bulkLeg';\n\nexport const getBulkLegCurrency1 = getBulkLegValue('currency1');\nexport const getBulkLegCurrency2 = getBulkLegValue('currency2');\n","import { throwIfUndefined } from 'utils/maps';\nimport type { AppState } from 'state/model';\n\nexport function getBulkStreamState(state: AppState, streamId: string) {\n return throwIfUndefined(\n state.fxBulks.streams[streamId],\n `Bulk stream state for ${streamId} does not exist`,\n );\n}\n\nexport function getBulkStreamStatus(state: AppState, streamId: string) {\n return getBulkStreamState(state, streamId).status;\n}\n\nexport function getBulkRfsStreamQuote(state: AppState, streamId: string) {\n const stream = getBulkStreamState(state, streamId);\n const quote = stream.status === 'PRICING' ? stream.quote : undefined;\n return throwIfUndefined(quote, `Bulk stream state ${streamId} not in PRICING state`);\n}\n\nexport function getBulkRfsStreamQuoteType(state: AppState, streamId: string) {\n return getBulkRfsStreamQuote(state, streamId).quoteType;\n}\n","import { parseISO } from 'date-fns';\nimport type { AppState } from 'state/model';\nimport type { FxBulkLegState } from 'state/fxBulks/fxBulksModel';\nimport { getTileMaxDate } from 'state/referenceData/referenceDataSelectors';\nimport { getBulkLegState } from './bulkLeg';\nimport { getBulkLegs } from './bulkMetadata';\n\nexport function hasBulkProduct(state: AppState, bulkId: string): boolean {\n return state.fxBulks.bulks[bulkId] !== undefined;\n}\n\nfunction isFarDateValid(maxDate: Date, n: FxBulkLegState): boolean {\n return !n.values.farPaymentDate || parseISO(n.values.farPaymentDate) <= maxDate;\n}\n\nfunction isDateValid(maxDate: Date, n: FxBulkLegState): boolean {\n return !n.values.paymentDate || parseISO(n.values.paymentDate) <= maxDate;\n}\n\nexport function isValidDateBulk(currentState: AppState, bulkId: string) {\n const maxDate = getTileMaxDate(currentState, bulkId);\n if (maxDate === undefined) {\n return true;\n }\n const legsIds = getBulkLegs(currentState, bulkId);\n const legs = legsIds.map(c => getBulkLegState(currentState, bulkId, c));\n const result = legs.reduce(\n (c, n) => c && isFarDateValid(maxDate, n) && isDateValid(maxDate, n),\n true,\n );\n return result;\n}\n","interface IInitialisingState {\n status: 'INITIALISING';\n}\n\ninterface IConnectedState {\n status: 'CONNECTED';\n connectionId: string;\n degraded: boolean;\n driver: string;\n}\n\ninterface IDisconnectedState {\n status: 'DISCONNECTED';\n reason: string;\n}\n\nexport type StreamingConnectionState =\n | Readonly\n | Readonly\n | Readonly;\n\nexport const isStreamingStatusInitialising = (\n state: StreamingConnectionState,\n): state is IConnectedState => state.status === 'INITIALISING';\n\nexport const isStreamingStatusConnected = (\n state: StreamingConnectionState,\n): state is IConnectedState => state.status === 'CONNECTED';\n\nexport const isStreamingStatusDisconnected = (\n state: StreamingConnectionState,\n): state is IDisconnectedState => state.status === 'DISCONNECTED';\n\nexport const patchConnected =\n (patch: Partial) => (state: StreamingConnectionState) =>\n isStreamingStatusConnected(state) ? { ...state, ...patch } : state;\n","import type { AppState } from 'state/model';\nimport {\n type StreamingConnectionState,\n isStreamingStatusConnected,\n isStreamingStatusDisconnected,\n isStreamingStatusInitialising,\n} from './streamingConnectionModel';\n\nfunction pickStreamingConnection(state: AppState): StreamingConnectionState {\n return state.streamingConnection;\n}\n\nexport function getConnectionId(state: AppState) {\n const streamingConnectionState = pickStreamingConnection(state);\n return isStreamingStatusConnected(streamingConnectionState)\n ? streamingConnectionState.connectionId\n : '';\n}\n\nexport function isStreamingInitialising(state: AppState) {\n return isStreamingStatusInitialising(pickStreamingConnection(state));\n}\n\nexport function isStreamingConnected(state: AppState) {\n return isStreamingStatusConnected(pickStreamingConnection(state));\n}\n\nexport function isStreamingDisconnected(state: AppState) {\n return isStreamingStatusDisconnected(pickStreamingConnection(state));\n}\n\nexport function isStreamingDegraded(state: AppState) {\n const streamingConnectionState = pickStreamingConnection(state);\n return isStreamingStatusConnected(streamingConnectionState)\n ? streamingConnectionState.degraded\n : true;\n}\n\nexport function isStreamingNotOptimal(state: AppState) {\n const streamingConnectionState = pickStreamingConnection(state);\n return isStreamingStatusConnected(streamingConnectionState)\n ? streamingConnectionState.driver !== 'WEBSOCKET'\n : true;\n}\n","import type { UserPreferencesData } from 'state/userPreferences/userPreferencesModel';\nimport { makeValuesPredicate } from '@sgme/fp';\n\nexport const featureTogglesKeys = [\n 'orderTakeProfitMargin',\n 'timeoutedDeal',\n 'optionTradeCaptureNewModel',\n 'optionTradeCaptureMultiHedges',\n 'allowSaveWorkspace',\n 'ndfEspExecutable',\n 'barrierTypeDropdownDisplayPIVOTEKI',\n 'barrierTypeDropdownDisplayPIVOT',\n 'barrierTypeDropdownDisplayEKI',\n 'accumulatorAllowOverrideHedge',\n 'smartRFS',\n] as const;\n\nexport type FeatureToggleKeys = (typeof featureTogglesKeys)[number];\n\nexport type FeatureToggles = Record;\n\nexport const defaultFeatureToggles: FeatureToggles = {\n orderTakeProfitMargin: false,\n timeoutedDeal: false,\n optionTradeCaptureNewModel: false,\n optionTradeCaptureMultiHedges: false,\n allowSaveWorkspace: false,\n ndfEspExecutable: false,\n barrierTypeDropdownDisplayPIVOTEKI: false,\n barrierTypeDropdownDisplayPIVOT: false,\n barrierTypeDropdownDisplayEKI: false,\n accumulatorAllowOverrideHedge: false,\n smartRFS: false,\n};\n\nexport const productsAccessKeys = [\n 'spot',\n 'forward',\n 'swap',\n 'option',\n 'nonDeliverable',\n 'targetAccu',\n 'forwardAccu',\n 'stopLoss',\n 'takeProfit',\n 'callOrder',\n 'twap',\n 'nightjar',\n 'falcon',\n 'fixing',\n] as const;\n\nexport type ProductAccessKeys = (typeof productsAccessKeys)[number];\nexport type ProductsAccess = Record;\nexport const defaultProductsAccess: ProductsAccess = {\n spot: false,\n forward: false,\n swap: false,\n option: false,\n nonDeliverable: false,\n targetAccu: false,\n forwardAccu: false,\n stopLoss: false,\n takeProfit: false,\n callOrder: false,\n twap: false,\n nightjar: false,\n falcon: false,\n fixing: false,\n};\n\nexport interface User {\n login: string;\n ulysseLogin: string;\n bdrInitials: string;\n piwikLogin: string;\n userType: 'Internal Sales' | 'Internal Trader' | null;\n hasFxTcaAccess: boolean;\n isOnBehalf: boolean;\n canTrade: boolean;\n isFastTrade: boolean;\n clients: readonly Client[];\n featureToggles: FeatureToggles;\n userPreferences: UserPreferencesData;\n productsAccess: ProductsAccess;\n productTypes: readonly InstrumentChoice[];\n localMarketsCcy: readonly string[];\n}\n\nexport interface ClosedDates {\n [currencyPair: string]: readonly string[];\n}\n\nexport const switchableInstruments = ['Cash', 'Swap', 'Option', 'Accumulator'] as const;\nexport type SwitchableInstrument = (typeof switchableInstruments)[number];\n\nexport const instrumentChoices = ['Cash', 'Swap', 'Option', 'TargetAccumulator', 'ForwardAccumulator'] as const;\nexport type InstrumentChoice = (typeof instrumentChoices)[number];\n\nexport const executableInstruments = [...switchableInstruments, 'Bulk'] as const;\nexport type ExecutableInstrument = (typeof executableInstruments)[number];\n\nexport const tileInstruments = [...switchableInstruments, 'Order', 'BlotterOrder'] as const;\nexport type TileInstrument = (typeof tileInstruments)[number];\n\nexport const instruments = [...tileInstruments, 'Bulk'] as const;\nexport type Instrument = (typeof instruments)[number];\n\nexport const formDomain = [...instruments, 'BlotterTrade'] as const;\nexport type FormDomain = (typeof formDomain)[number];\n\nexport const leggedInstruments = ['Option', 'Bulk', 'Accumulator'] as const;\nexport type LeggedInstrument = (typeof leggedInstruments)[number];\n\n// todo-5149 check if any side effect\nexport const hedgedInstruments = ['Option'] as const;\nexport type HedgedInstrument = (typeof hedgedInstruments)[number];\n\nexport const isInstrumentChoice = makeValuesPredicate(instrumentChoices);\n\nexport const isSwitchableInstrument = makeValuesPredicate(switchableInstruments);\n\nexport const isExecutableInstrument = makeValuesPredicate(executableInstruments);\n\nexport const isTileInstrument = makeValuesPredicate(tileInstruments);\n\nexport const isLeggedInstrument = makeValuesPredicate(leggedInstruments);\n\nexport interface Client {\n companyId: number;\n mnemonicCode: string;\n companyName: string;\n companyFullName: string;\n externalCompanyName: string | null;\n bookingEntityName: string | null;\n primeBroker: string | null;\n maxTenor: string | null;\n}\n\nexport interface CurrencyPairData {\n pair: string;\n ccy1: string;\n ccy2: string;\n precision: number;\n isInverted: boolean;\n canBeDelivered: boolean;\n notDeliverable: boolean;\n isCashDeliverable: boolean;\n isOptionCurrency: boolean;\n}\n\nexport interface CurrencyPair extends CurrencyPairData {\n closedDates: readonly string[];\n tenorDatesCache: Record;\n}\n\nexport type IndexedCurrencyPairs = Record;\n\nexport interface ClientMap {\n [clientId: string]: Readonly;\n}\n\nexport interface ReferenceDataState {\n readonly instruments: readonly InstrumentChoice[];\n readonly ccyPairs: Readonly;\n readonly userInfo: Readonly;\n readonly userClients: Readonly;\n readonly featureToggles: Readonly;\n readonly productsAccess: Readonly;\n readonly espLimits: Readonly;\n readonly localMarketsCcy: readonly string[];\n readonly pinnedCompanies: readonly number[];\n}\n\nexport type UserType = 'Internal Sales' | 'Internal Trader' | null;\n\nexport interface UserInfo {\n login: string | null;\n ulysseLogin: string | null;\n bdrId: string | null;\n userType: UserType;\n hasFxTcaAccess: boolean;\n isOnBehalf: boolean;\n canTrade: boolean;\n isFastTrade: boolean;\n}\nexport const defaultUserInfo: UserInfo = {\n login: null,\n ulysseLogin: null,\n bdrId: null,\n userType: null,\n hasFxTcaAccess: false,\n isOnBehalf: false,\n canTrade: false,\n isFastTrade: false,\n};\n\nexport interface EspLimits {\n readonly [currency: string]: number | undefined;\n}\n","import { getAccumulatorMetadata } from './factories';\n\nexport const getAccumulatorPropertiesRequested = getAccumulatorMetadata('propertiesRequested');\n\nexport const getAccumulatorTradeCaptureCurrentSessionId =\n getAccumulatorMetadata('currentSessionId');\n\nexport const getAccumulatorTradeCaptureIdVersion = getAccumulatorMetadata('tradeCaptureIdVersion');\n\nexport const getAccumulatorIsPriceable = getAccumulatorMetadata('isPriceable');\n\nexport const getAccumulatorRfsStreamId = getAccumulatorMetadata('currentStreamId');\n\nexport const getAccumulatorLastStreamId = getAccumulatorMetadata('lastStreamId');\n\nexport const getAccumulatorSummary = getAccumulatorMetadata('summary');\n\nexport const getAccumulatorDisplayMode = getAccumulatorMetadata('displayMode');\n\nexport const getAccumulatorNumberOfSettlements = getAccumulatorMetadata('numberOfSettlements');\n\ntype SelectorArgs = Parameters>;\ntype Selector = (...args: SelectorArgs) => T | null;\n\nconst prioritySelect =\n (normal: Selector, priority: Selector) =>\n (...args: SelectorArgs) =>\n priority(...args) ?? normal(...args);\n\nexport const getAccumulatorActiveStreamId = prioritySelect(\n getAccumulatorRfsStreamId,\n getAccumulatorLastStreamId,\n);\n","import { getAccumulatorState } from 'state/fxAccumulators/selectors/accumulator';\nimport type { AppState } from 'state/model';\nimport { throwIfUndefined } from 'utils/maps';\n\nexport function getAccumulatorRfsState(state: AppState, streamId: string) {\n return throwIfUndefined(\n state.fxAccumulators.rfsStreams[streamId],\n `Target Accumulator stream state for ${streamId} does not exist`,\n );\n}\n\nexport function getAccumulatorRfsStatus(state: AppState, streamId: string | null) {\n if (streamId === null) {\n return null;\n }\n const streamState = getAccumulatorRfsState(state, streamId);\n return streamState.status;\n}\n\nexport function getAccumulatorRfsQuote(state: AppState, streamId: string | null) {\n if (streamId === null) {\n return null;\n }\n const streamState = getAccumulatorRfsState(state, streamId);\n if (streamState.status === 'PRICING') {\n return streamState.quote;\n }\n}\n\nexport function getAccumulatorRfsQuoteId(state: AppState, streamId: string | null) {\n const quote = getAccumulatorRfsQuote(state, streamId);\n return quote?.quoteId;\n}\n\nexport function getAccumulatorStreamError(state: AppState, quoteId: string) {\n const targetAccu = getAccumulatorState(state, quoteId);\n return targetAccu.lastStreamError;\n}\n\nexport function getAccumulatorTraderId(state: AppState, streamId: string) {\n if (streamId === null) {\n return null;\n }\n const streamState = getAccumulatorRfsState(state, streamId);\n if (\n streamState.status === 'AWAITING' ||\n streamState.status === 'PRICING' ||\n streamState.status === 'EXPIRED'\n ) {\n return streamState.traderId;\n }\n return null;\n}\n\nexport function getAccumulatorQuoteContribution(state: AppState, streamId: string) {\n if (streamId === null) {\n return null;\n }\n const streamState = getAccumulatorRfsState(state, streamId);\n if (streamState.status === 'PRICING' || streamState.status === 'EXPIRED') {\n return streamState.quoteContribution;\n }\n return null;\n}\n\nexport function getAccumulatorRfsQuoteIsExecutable(state: AppState, streamId: string | null) {\n if (streamId === null) {\n return null;\n }\n const streamState = getAccumulatorRfsState(state, streamId);\n if (streamState.status === 'PRICING') {\n return streamState.quote.quoteType === 'Tradeable';\n }\n return true;\n}\n","function getType(obj: unknown) {\n return Object.prototype.toString.call(obj).slice(8, -1);\n}\n\nexport function isArray(arg: T | any): arg is T {\n return getType(arg) === 'Array';\n}\n\nfunction isObject(arg: unknown): arg is object {\n return getType(arg) === 'Object';\n}\n\nfunction compareArray(oldState: readonly U[], newState: readonly U[]): readonly U[] {\n const ret = newState.map((data, index) => immutableReferenceUpdate(oldState[index], data));\n return newState.length === oldState.length && ret.every((data, index) => data === oldState[index]) ? oldState : ret;\n}\n\nfunction compareObject(oldState: T, newState: T) {\n const ret = {} as T;\n let changed = false;\n for (const key in newState) {\n if (newState.hasOwnProperty(key)) {\n ret[key] = immutableReferenceUpdate(oldState[key], newState[key]);\n if (ret[key] !== oldState[key]) {\n changed = true;\n }\n }\n }\n return Object.keys(newState).length === Object.keys(oldState).length && changed === false ? oldState : ret;\n}\n/**\n * @summary\n * recursively compares two objects and creates a new ref with no false negative equality at data level\n */\nexport function immutableReferenceUpdate(oldState: unknown, newState: T): T {\n if (isArray(newState) && isArray(oldState)) {\n return compareArray(oldState, newState) as typeof newState;\n }\n if (isObject(newState) && isObject(oldState)) {\n return compareObject(oldState, newState) as typeof newState;\n }\n return newState;\n}\n","import type { FxAccumulatorRfsStream, FxAccuStreamStreamingWithPrice, IHedge } from '../fxAccumulatorsModel';\nimport type { HedgeWay } from 'state/share/productModel/litterals';\nimport type { AppState } from 'state/model';\nimport { getAccumulatorActiveStreamId } from './accumulatorMetadata';\nimport { getAccumulatorRfsState } from './accumulatorRfs';\nimport { isNotDefined } from '@sgme/fp';\nimport { isArray } from '../../../utils/immutableReferenceUpdate';\n\nexport function getAccumulatorRfsByQuoteId(state: AppState, quoteId: string) {\n const rfsStreamId = getAccumulatorActiveStreamId(state, quoteId);\n if (rfsStreamId === null) {\n return null;\n }\n return getAccumulatorRfsState(state, rfsStreamId);\n}\n\nconst allowedStreamStatus: Array = ['PRICING', 'EXPIRED'];\n\nfunction isPricing(stream: FxAccumulatorRfsStream): stream is FxAccuStreamStreamingWithPrice {\n return allowedStreamStatus.includes(stream.status);\n}\n\nexport function getAccumulatorRfsQuoteByQuoteId(state: AppState, quoteId: string) {\n const rfs = getAccumulatorRfsByQuoteId(state, quoteId);\n if (rfs === null) {\n return null;\n }\n return isPricing(rfs) ? rfs.quote : null;\n}\n\nexport function getAccumulatorRfsPremiumByQuoteId(state: AppState, quoteId: string) {\n const quote = getAccumulatorRfsQuoteByQuoteId(state, quoteId);\n if (quote === null) {\n throw `Accumulator ${quoteId} has no valid RFS or RFS pricing quote : premium cannot be issued.`;\n }\n return [quote.premiumCcy1, quote.premiumCcy2] as const;\n}\n\nexport function getAccumulatorRfsPremiumPercentByQuoteId(state: AppState, quoteId: string) {\n const quote = getAccumulatorRfsQuoteByQuoteId(state, quoteId);\n if (quote === null) {\n throw `Accumulator ${quoteId} has no valid RFS or RFS pricing quote : premium cannot be issued.`;\n }\n return [quote.premiumPctCcy1, quote.premiumPctCcy2] as const;\n}\n\nexport function getAccumulatorRfsDateAndWindowsByQuoteId(\n state: AppState,\n quoteId: string,\n): {\n lastQuoteReceivedDate: Date;\n remainingDuration: number;\n totalDuration: number;\n} {\n const rfs = getAccumulatorRfsByQuoteId(state, quoteId);\n if (rfs === null || rfs.status !== 'PRICING') {\n throw `Accumulator ${quoteId} has no valid RFS or RFS pricing quote : rfs window cannot be issued.`;\n }\n return {\n lastQuoteReceivedDate: rfs.lastQuoteReceivedDate,\n totalDuration: rfs.initialRfsWindow,\n remainingDuration: rfs.quote.rfsWindow,\n };\n}\n\nexport function getQuoteHedgeByQuoteId(state: AppState, quoteId: string): IHedge | null {\n const rfs = getAccumulatorRfsByQuoteId(state, quoteId);\n\n if (rfs === null || rfs.status !== 'PRICING') {\n return null;\n }\n\n const hedge = isArray(rfs.quote.hedge) ? rfs.quote?.hedge[0] : rfs.quote?.hedge;\n\n return hedge ?? null;\n}\n\nexport function getAccumulatorHedgeWayByQuoteId(state: AppState, quoteId: string): HedgeWay {\n const rfs = getAccumulatorRfsByQuoteId(state, quoteId);\n if (rfs === null || rfs.status !== 'PRICING') {\n return 'WayUnknown';\n }\n const quote = rfs.quote;\n\n if (quote === null || isNotDefined(quote.hedge)) {\n return 'WayUnknown';\n }\n\n const hedgeWay = isArray(quote.hedge) ? quote.hedge[0].way : quote.hedge.way;\n\n return hedgeWay || 'WayUnknown';\n}\n\nexport function hasAccumulatorBypassedLimitCheck(state: AppState, quoteId: string): boolean {\n const streamState = getAccumulatorRfsByQuoteId(state, quoteId);\n return streamState?.status === 'PRICING' && streamState.skippedLimitCheck;\n}\n","import type { AppState } from 'state/model';\nimport { getTileMaxDate } from 'state/referenceData/referenceDataSelectors';\nimport { getAccumulatorState } from './accumulator';\nimport { getAccumulatorPriceCurrency } from './accumulatorInput';\nimport { getAccumulatorRfsPremiumByQuoteId } from './accumulatorRfsByQuoteId';\n\nexport function isValidDateAccumulator(currentState: AppState, accuId: string) {\n const state = getAccumulatorState(currentState, accuId);\n const maxDate = getTileMaxDate(currentState, accuId);\n return (\n !state.values.expiryDate ||\n maxDate === undefined ||\n new Date(state.values.expiryDate) <= maxDate\n );\n}\nexport const getPremiumSign = (state: AppState, quoteId: string) => {\n const premium = getAccumulatorRfsPremiumByQuoteId(state, quoteId);\n const priceCurrency = getAccumulatorPriceCurrency(state, quoteId);\n\n const priceCurrencyPremium = premium[priceCurrency.value - 1];\n return priceCurrencyPremium.ask > 0;\n};\n","import type { AppState } from 'state/model';\nimport type { PredealCheck, PredealCheckStatusHealth } from 'state/share/predealChecksModel';\nimport { assertUnreachable, isDefined } from '@sgme/fp';\nimport type { HedgeValueKeys, LegValueKeys, ProductName, ValueKeys } from './share/productModel';\nimport {\n getTileCurrencyPair,\n getTileCurrentEspStreamId,\n getTileCurrentStreamId,\n getTileLastStreamError,\n} from './tile/selectors';\nimport { getQuoteInstrument, getTileState, isTilePresent, userCanTrade } from './clientWorkspace/selectors';\n\nimport { getCashProductName, getCashRfsStreamState, getCashState } from './fxCashs/selectors';\nimport { getOptionHedge, getOptionLeg, getOptionState, getOptionStreamState } from './fxOptions/selectors';\nimport { getSwapRfsStream, getSwapState } from './fxSwaps/selectors';\nimport { getBulkLegState, getBulkStreamState } from './fxBulks/selectors';\nimport { isStreamingConnected } from './streamingConnection/streamingConnectionSelectors';\nimport {\n type FormDomain,\n type HedgedInstrument,\n isLeggedInstrument,\n type LeggedInstrument,\n} from './referenceData/referenceDataModel';\nimport { getBulkState } from './fxBulks/selectors/bulk';\nimport { getAccumulatorState } from './fxAccumulators/selectors/accumulator';\nimport { getBlotterEditedOrderById, getBlotterTradeById } from './blotter/selectors/blotterSelectors';\nimport type { IFormData } from './share/form/formModel';\nimport { getAccumulatorProductName, getAccumulatorRfsState, getAccumulatorSchedule } from './fxAccumulators/selectors';\nimport { fieldData } from 'utils/fieldSelectors';\nimport { getEspSpotMidRate } from './esp/espStreamsSelectors';\nimport { getCurrencyPrecision } from './referenceData/referenceDataSelectors';\nimport { roundToPrecision } from 'utils/number';\nimport { getOrderState } from './fxOrders/selectors/fxOrdersProductSelectors';\nimport { getBlotterOrderStreamId } from './blotter/selectors/blotterOrderSelectors';\nimport { getLegKey } from './share/patchHelper';\n\ninterface ValidationValidState {\n alertLevel: undefined;\n}\n\ninterface ValidationNotValidState {\n alertLevel: 'valid' | 'warning' | 'invalid';\n messageId: string;\n seen: boolean;\n}\n\nexport function getFieldValidationState(\n state: AppState,\n instrument: I,\n field: ValueKeys,\n quoteId: string,\n): ValidationNotValidState | ValidationValidState {\n const fieldsState = stateAccessors[instrument](state, quoteId);\n const fieldErrorState = fieldsState.errors[field];\n const fieldWarningState = fieldsState.warnings[field];\n return fieldErrorState !== undefined\n ? {\n alertLevel: 'invalid',\n messageId: fieldErrorState.code,\n seen: fieldErrorState.userNotified,\n }\n : fieldWarningState !== undefined\n ? {\n alertLevel: 'warning',\n messageId: fieldWarningState.code,\n seen: fieldWarningState.userNotified,\n }\n : { alertLevel: undefined };\n}\n\n// encapsulate field recommendedHedgeAmountInPercent from sgmeConfiguration behind a selector so it can be mocked\nexport function getRecommendedHedgeAmount() {\n return Number(window.sgmeConfiguration.recommendedHedgeAmountInPercent);\n}\n\nfunction isLegExist(state: AppState, instrument: LeggedInstrument, quoteId: string, legId: string): boolean {\n if (instrument === 'Option') {\n return isDefined(state.fxOptions.legs[legId]);\n }\n\n const legKey = getLegKey(quoteId, legId);\n\n switch (instrument) {\n case 'Bulk':\n return isDefined(state.fxBulks.legs[legKey]);\n case 'Accumulator':\n return isDefined(state.fxAccumulators.schedules[legKey]);\n }\n}\n\nfunction isHedgeExist(state: AppState, hedgeId: string): boolean {\n return isDefined(state.fxOptions.hedges[hedgeId]);\n}\n\nexport function getLegFieldValidationState(\n state: AppState,\n instrument: I,\n field: LegValueKeys,\n quoteId: string,\n legId: string,\n): ValidationNotValidState | ValidationValidState {\n if (!isLegExist(state, instrument, quoteId, legId)) {\n return { alertLevel: undefined };\n }\n\n const legFieldsState = legStateAccessors[instrument](state, quoteId, legId);\n\n const legFieldErrorState = legFieldsState.errors[field];\n const legFieldWarningState = legFieldsState.warnings[field];\n\n return legFieldErrorState !== undefined\n ? {\n alertLevel: 'invalid',\n messageId: legFieldErrorState.code,\n seen: legFieldErrorState.userNotified,\n }\n : legFieldWarningState !== undefined\n ? {\n alertLevel: 'warning',\n messageId: legFieldWarningState.code,\n seen: legFieldWarningState.userNotified,\n }\n : { alertLevel: undefined };\n}\n\nexport function getHedgeFieldValidationState(\n state: AppState,\n instrument: I,\n field: HedgeValueKeys,\n quoteId: string,\n hedgeId: string,\n): ValidationNotValidState | ValidationValidState {\n if (!isHedgeExist(state, hedgeId)) {\n return { alertLevel: undefined };\n }\n\n const hedgeFieldsState = hedgeStateAccessors[instrument](state, quoteId, hedgeId);\n\n const hedgeFieldErrorState = hedgeFieldsState?.errors[field];\n const hedgeFieldWarningState = hedgeFieldsState?.warnings[field];\n\n return hedgeFieldErrorState !== undefined\n ? {\n alertLevel: 'invalid',\n messageId: hedgeFieldErrorState.code,\n seen: hedgeFieldErrorState.userNotified,\n }\n : hedgeFieldWarningState !== undefined\n ? {\n alertLevel: 'warning',\n messageId: hedgeFieldWarningState.code,\n seen: hedgeFieldWarningState.userNotified,\n }\n : { alertLevel: undefined };\n}\n\nexport function isTileDirty(state: AppState, quoteId: string) {\n const instrument = getQuoteInstrument(state, quoteId);\n const productState = stateAccessors[instrument](state, quoteId);\n const { inputs: productInputs } = productState;\n const productDirty = Object.keys(productInputs).length > 0;\n if (isLeggedInstrument(instrument)) {\n return ((productState as unknown as { legs: readonly string[] }).legs ?? []).reduce((acc, curr) => {\n const legAccessor = legStateAccessors[instrument];\n const { inputs } = legAccessor(state, quoteId, curr);\n return acc || Object.keys(inputs).length > 0;\n }, productDirty);\n }\n return productDirty;\n}\n\nconst stateAccessors: Record IFormData> = {\n Cash: getCashState,\n Swap: getSwapState,\n Option: getOptionState,\n Bulk: getBulkState,\n Accumulator: getAccumulatorState,\n Order: getOrderState,\n BlotterTrade: getBlotterTradeById,\n BlotterOrder: getBlotterEditedOrderById,\n};\n\nconst legStateAccessors: Record<\n LeggedInstrument,\n (state: AppState, quoteId: string, legId: string) => IFormData\n> = {\n Option: (state: AppState, _quoteId: string, legId: string) => getOptionLeg(state, legId),\n Bulk: getBulkLegState,\n Accumulator: getAccumulatorSchedule,\n};\n\nconst hedgeStateAccessors: Record<\n HedgedInstrument,\n (state: AppState, quoteId: string, hedgeId: string) => IFormData | undefined\n> = {\n Option: (state: AppState, _quoteId: string, hedgeId: string) => getOptionHedge(state, hedgeId),\n};\n\n/* Selector which are shared between Cash, Swap and Option */\nexport function getProductName(state: AppState, tileId: string): ProductName {\n const { instrument } = getTileState(state, tileId);\n switch (instrument) {\n case 'Cash':\n return getCashProductName(state, tileId);\n case 'Option':\n return 'FxOption';\n case 'Swap':\n return 'FxSwap';\n case 'Accumulator':\n return getAccumulatorProductName(state, tileId);\n case 'Order':\n case 'BlotterOrder':\n return 'FxOrder';\n case 'Bulk':\n return 'FxBulk';\n }\n}\n\n/**\n * @todo\n * rename to Quote or Product\n */\nexport function getTileEspStreamId(state: AppState, tileId: string): string | null {\n if (!isTilePresent(state, tileId)) {\n return null;\n }\n const { instrument } = getTileState(state, tileId);\n switch (instrument) {\n case 'Cash':\n return getCashState(state, tileId).currentEspStreamId;\n case 'Option':\n return getOptionState(state, tileId).currentEspStreamId;\n case 'Swap':\n return getSwapState(state, tileId).currentEspStreamId;\n case 'Accumulator':\n return getAccumulatorState(state, tileId).currentEspStreamId;\n case 'Order':\n return getOrderState(state, tileId).currentEspStreamId;\n case 'Bulk':\n return getBulkState(state, tileId).currentEspStreamId;\n case 'BlotterOrder':\n return getBlotterOrderStreamId(state, tileId);\n default:\n assertUnreachable(instrument, 'Unhandled instrument in getTileEspStreamId');\n }\n}\n\nexport function getTileRfsStream(state: AppState, tileId: string) {\n const { instrument } = getTileState(state, tileId);\n const currentStreamId = getTileCurrentStreamId(state, tileId);\n const lastStreamError = getTileLastStreamError(state, tileId);\n if (currentStreamId === null) {\n return lastStreamError ? { status: 'ERROR' as 'ERROR', lastStreamError } : null;\n }\n switch (instrument) {\n case 'Cash':\n return getCashRfsStreamState(state, currentStreamId);\n case 'Option':\n return getOptionStreamState(state, currentStreamId);\n case 'Swap':\n return getSwapRfsStream(state, currentStreamId);\n case 'Bulk':\n return getBulkStreamState(state, currentStreamId);\n case 'Order':\n case 'BlotterOrder':\n return {};\n case 'Accumulator':\n return getAccumulatorRfsState(state, currentStreamId);\n default:\n assertUnreachable(instrument, 'Unhandled instrument');\n }\n}\n\nexport function getRfsIsSalesTier(state: AppState, tileId: string): boolean {\n const rfsState = getTileRfsStream(state, tileId);\n return rfsState !== null && rfsState.status === 'PRICING' && rfsState.tiering === 'STREAMDEFAULT';\n}\n\nfunction getGlobalStatus(predealChecks: readonly PredealCheck[]): PredealCheckStatusHealth {\n return !predealChecks.length\n ? 'Unknown'\n : predealChecks.filter(s => s.type === 'Icon' && s.statusHealth === 'Nok').length\n ? 'Nok'\n : 'Ok';\n}\n\nconst emptyPreDealChecks: readonly PredealCheck[] = [];\n\nexport function getTilePredealChecks(\n state: AppState,\n tileId: string,\n): {\n predealChecks: readonly PredealCheck[];\n globalStatus: PredealCheckStatusHealth;\n} {\n const stream = getTileRfsStream(state, tileId);\n if (stream !== null) {\n if (stream.status === 'PRICING') {\n const predealChecks = stream.quote.predealChecks;\n return { predealChecks, globalStatus: getGlobalStatus(predealChecks) };\n } else if (stream.status === 'ERROR' && stream.lastStreamError) {\n const predealChecks = stream.lastStreamError.predealChecks || emptyPreDealChecks;\n return { predealChecks, globalStatus: getGlobalStatus(predealChecks) };\n }\n }\n return {\n predealChecks: emptyPreDealChecks,\n globalStatus: 'Unknown',\n };\n}\n\nexport interface TradeCaptureSessionInfos {\n currentSessionId: string | null;\n tradeCaptureIdVersion: number | null;\n}\n\nexport function getTradeCaptureSessionInfos(state: AppState, tileId: string): TradeCaptureSessionInfos {\n const { instrument } = getTileState(state, tileId);\n /**\n * @todo tile selector\n */\n switch (instrument) {\n case 'Option': {\n const { currentSessionId, tradeCaptureIdVersion } = getOptionState(state, tileId);\n return { currentSessionId, tradeCaptureIdVersion };\n }\n case 'Cash': {\n const { currentSessionId, tradeCaptureIdVersion } = getCashState(state, tileId);\n return { currentSessionId, tradeCaptureIdVersion };\n }\n case 'Swap': {\n const { currentSessionId, tradeCaptureIdVersion } = getSwapState(state, tileId);\n return { currentSessionId, tradeCaptureIdVersion };\n }\n case 'Accumulator': {\n const { currentSessionId, tradeCaptureIdVersion } = getAccumulatorState(state, tileId);\n return { currentSessionId, tradeCaptureIdVersion };\n }\n case 'Bulk':\n throw new Error('No Bulk instrument implementation yet');\n case 'Order':\n case 'BlotterOrder':\n throw new Error('No Order instrument implementation yet');\n }\n}\n\nexport function isCanTradeState(state: AppState) {\n return userCanTrade(state) && isStreamingConnected(state);\n}\n\nexport function getMidSpot(state: AppState, quoteId: string) {\n const espStreamId = getTileCurrentEspStreamId(state, quoteId);\n const currencyPair = fieldData(getTileCurrencyPair(state, quoteId)).data;\n if (espStreamId && currencyPair) {\n const midSpot = getEspSpotMidRate(state, espStreamId);\n if (midSpot !== null) {\n const precision = getCurrencyPrecision(state, currencyPair);\n return roundToPrecision(midSpot, precision - 1);\n }\n }\n return null;\n}\n","import type { AppState } from 'state/model';\nimport type { IESPTraderPriceUnderThreshold, IEspStreamState } from './espStreamsModel';\nimport type { CurrencyChoice } from 'state/share/productModel/litterals';\nimport type { Collection } from 'typings/utils';\nimport {\n getEspPriceByNotional,\n clientMidRate,\n traderMidRate,\n} from './utils';\nimport { getProductName } from \"../sharedSelectors\";\nimport type { ProductName } from \"../share/productModel\";\nimport type { CashProductName } from \"../fxCashs/fxCashsModel\";\nimport { isDefined } from \"@sgme/fp\";\nimport {\n getCashFixingSource,\n getCashMaturityDateTenor,\n getCashPossibleFixingSources,\n getCashFixingCurrency,\n getCashPossibleFixingCurrencies,\n getCashSndFixingSource,\n getCashPossibleSndFixingSources,\n getCashAmount,\n getCashState,\n getLadderIndex,\n isCashAmountInsideEspLimits\n} from \"../fxCashs/selectors\";\n\n// ███████╗████████╗██████╗ ███████╗ █████╗ ███╗ ███╗\n// ██╔════╝╚══██╔══╝██╔══██╗██╔════╝██╔══██╗████╗ ████║\n// ███████╗ ██║ ██████╔╝█████╗ ███████║██╔████╔██║\n// ╚════██║ ██║ ██╔══██╗██╔══╝ ██╔══██║██║╚██╔╝██║\n// ███████║ ██║ ██║ ██║███████╗██║ ██║██║ ╚═╝ ██║\n// ╚══════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝\n\nfunction getEspStreams(state: AppState) {\n return state.espStreams;\n}\n\nfunction getStreamKeys(espStreamCollection: Collection) {\n return Object.keys(espStreamCollection);\n}\n\nexport function getEspStreamKeys(state: AppState) {\n return getStreamKeys(getEspStreams(state));\n}\n\nexport function getEspStreamState(\n state: AppState,\n espStreamId: string,\n): IEspStreamState | undefined {\n return state.espStreams[espStreamId];\n}\n\nexport function getEspStreamRefCount(state: AppState, espStreamId: string | null): number | null {\n if (espStreamId !== null) {\n const streamState = getEspStreamState(state, espStreamId);\n if (streamState) {\n return streamState.refCount;\n }\n }\n return null;\n}\n\nexport function getEspQuoteId(state: AppState, currentEspStreamId: string | null): string | null {\n if (currentEspStreamId === null) {\n return null;\n }\n const streamState = getEspStreamState(state, currentEspStreamId);\n if (streamState === undefined || streamState.status !== 'PRICING') {\n return null;\n }\n return streamState.quoteId;\n}\n\nexport function getEspSpotMidRate(state: AppState, espStreamId: string): number | null {\n const espStreamState = getEspStreamState(state, espStreamId);\n if (espStreamState && espStreamState.status === 'PRICING') {\n if (espStreamState.priceType === 'ESP.CLIENT.PRICE') {\n return clientMidRate(espStreamState.ladders[0]);\n } else if (espStreamState.priceType === 'ESP.TRADER.PRICE') {\n return traderMidRate(espStreamState.ladders[0]);\n }\n }\n return null;\n}\n\nexport function getCashEspStreamMargin(\n state: AppState,\n espStreamId: string,\n amount: number | null,\n amountCurrency: CurrencyChoice,\n) {\n const espStream = getEspStreamState(state, espStreamId)!;\n if (espStream.status === 'PRICING' && espStream.priceType === 'ESP.TRADER.PRICE') {\n const price = getEspPriceByNotional(espStream, amount, amountCurrency)\n .price as IESPTraderPriceUnderThreshold;\n if (price !== null) {\n return {\n bidMargin: price.marginBid,\n askMargin: price.marginAsk,\n };\n }\n }\n return {\n bidMargin: null,\n askMargin: null,\n };\n}\n\nexport function getHeartbeatMissedEspStreams(state: AppState) {\n return Object.entries(getEspStreams(state))\n .filter(\n ([_, stream]) =>\n stream !== undefined && stream.status === 'PRICING' && stream.missedHeartbeat === true,\n )\n .map(([streamKey]) => streamKey);\n}\n\n\n// █████╗ ██╗ ██╗ ██████╗ ██████╗ ██████╗ ██████╗ ██╗ ██╗ ██████╗████████╗\n// ██╔══██╗██║ ██║ ██╔══██╗██╔══██╗██╔═══██╗██╔══██╗██║ ██║██╔════╝╚══██╔══╝\n// ███████║██║ ██║ ██████╔╝██████╔╝██║ ██║██║ ██║██║ ██║██║ ██║\n// ██╔══██║██║ ██║ ██╔═══╝ ██╔══██╗██║ ██║██║ ██║██║ ██║██║ ██║\n// ██║ ██║███████╗███████╗ ██║ ██║ ██║╚██████╔╝██████╔╝╚██████╔╝╚██████╗ ██║\n// ╚═╝ ╚═╝╚══════╝╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝\n\nexport function isProductEspCompatible(state: AppState, tileId: string) {\n const productName = getProductName(state, tileId);\n\n return isCashProduct(productName)\n ? isCashProductEspCompatible({\n productName,\n tenor: getCashMaturityDateTenor(state, tileId).value as string,\n\n fixingSource: getCashFixingSource(state, tileId).value as string,\n defaultFixingSource: getCashPossibleFixingSources(state, tileId)?.default,\n\n secondFixingSource: getCashSndFixingSource(state, tileId).value as string,\n defaultSecondFixingSource: getCashPossibleSndFixingSources(state, tileId)?.default,\n\n fixingCurrency: getCashFixingCurrency(state, tileId).value as string,\n defaultFixingCurrency: getCashPossibleFixingCurrencies(state, tileId)?.default\n })\n : isNotCashProductEspCompatible(productName)\n}\n\nconst NOT_CACH_PRODUCT_ESP_COMPATIBLE: Array> = [\n \"FxOption\",\n \"FxTargetAccumulator\",\n \"FxForwardAccumulator\",\n \"FxOrder\",\n \"FxBulk\"\n]\n\n// ██████╗ █████╗ ███████╗██╗ ██╗\n// ██╔════╝██╔══██╗██╔════╝██║ ██║\n// ██║ ███████║███████╗███████║\n// ██║ ██╔══██║╚════██║██╔══██║\n// ╚██████╗██║ ██║███████║██║ ██║\n// ╚═════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝\n\nconst CASH_PRODUCT_NAME: CashProductName[] = [\n \"FxSpot\",\n \"FxFwd\",\n \"FxNdf\"\n];\n\nconst isCashProduct = (productName: ProductName): productName is CashProductName => (CASH_PRODUCT_NAME as ProductName[]).includes(productName);\n\n\nconst isNotCashProductEspCompatible = (productName: Exclude) => NOT_CACH_PRODUCT_ESP_COMPATIBLE.includes(productName);\n\ninterface IsCashProductEspCompatibleParams {\n productName: CashProductName,\n\n tenor: string,\n\n fixingSource?: string | null,\n defaultFixingSource?: string,\n\n secondFixingSource?: string | null,\n defaultSecondFixingSource?: string,\n\n fixingCurrency?: string | null,\n defaultFixingCurrency?: string\n};\n\nconst isCashProductEspCompatible = (cashData: IsCashProductEspCompatibleParams) => {\n if (cashData.productName === 'FxFwd') {\n return false;\n }\n\n if (cashData.productName === 'FxSpot') {\n return cashData.tenor === 'SP'\n }\n\n return (\n cashData.tenor === '1M'\n && (isDefined(cashData.defaultFixingSource)\n ? cashData.fixingSource === cashData.defaultFixingSource\n : true)\n && (isDefined(cashData.defaultSecondFixingSource)\n ? cashData.secondFixingSource === cashData.defaultSecondFixingSource\n : true)\n && (isDefined(cashData.defaultFixingCurrency)\n ? cashData.fixingCurrency === cashData.defaultFixingCurrency\n : true)\n )\n};\n\nexport function getCashPriceSourceToDisplay(state: AppState, quoteId: string) {\n const { currentStreamId, currentEspStreamId } = getCashState(state, quoteId);\n if (isDefined(currentStreamId)) {\n return 'RFS';\n }\n if (isDefined(currentEspStreamId)) {\n const notional = getCashAmount(state, quoteId).value;\n const { status } = getEspStreamState(state, currentEspStreamId)!;\n if (\n status === 'PRICING' &&\n (notional === null ||\n (getLadderIndex(state, quoteId, notional) !== null &&\n isCashAmountInsideEspLimits(state, quoteId, notional)))\n ) {\n return 'ESP';\n }\n }\n return 'None';\n}\n","import type { AppState } from 'state/model';\nimport { precisionAdderWithPrecision } from 'utils/number';\nimport type { FxCashStreamState } from '../fxCashsModel';\nimport { convertToRawWithPrecision } from 'utils/margin';\nimport type { BidAskPair } from 'state/share/productModel/litterals';\nimport { throwIfUndefined } from 'utils/maps';\nimport { getCashCurrencyPair } from './cashInput';\nimport { getCashState } from './cash';\nimport {\n getCurrencyPrecision,\n isUserInternalSales,\n} from 'state/referenceData/referenceDataSelectors';\nimport { getCashForwardMargin } from './fxCashsMarginSelectors';\nimport { getEspStreamState } from 'state/esp/espStreamsSelectors';\nimport { getEspPriceByNotional } from 'state/esp/utils';\nimport type { IESPTraderPriceUnderThreshold } from 'Workers/streamingTypes';\nimport { getCashEspSpotPriceWithMarginForExecution } from './fxCashsSelectors';\nimport { computeMarkup } from './utils';\nimport { isDefined } from '@sgme/fp';\n\nexport function getCashRfsStreamState(state: AppState, streamId: string): FxCashStreamState {\n return throwIfUndefined(\n state.fxCashs.streams[streamId],\n `Cash stream state ${streamId} does not exist`,\n );\n}\n\nexport function isCashRfsStreamPresent(state: AppState, streamId: string): boolean {\n return !!state.fxCashs.streams[streamId];\n}\n\nexport function getCashRfsAllInPrice(state: AppState, tileId: string): BidAskPair {\n const currencyPair = getCashCurrencyPair(state, tileId).value;\n if (currencyPair === null) {\n return { bid: 0, ask: 0 };\n }\n\n const { bid, ask } = getCashRfsSpotPriceWithMargin(state, tileId);\n\n const { bid: fwdBidPts, ask: fwdAskPts } = getCashRfsForwardPointsWithMargin(state, tileId);\n\n const precision = getCurrencyPrecision(state, currencyPair);\n const toRaw = convertToRawWithPrecision(precision);\n\n const precisionAdder = precisionAdderWithPrecision(precision + 1);\n\n return {\n bid: precisionAdder(bid, toRaw(fwdBidPts)),\n ask: precisionAdder(ask, toRaw(fwdAskPts)),\n };\n}\n\nconst emptyBidAskProps: BidAskPair = { bid: 0, ask: 0 };\n\nexport function getCashRfsTotalMargin(state: AppState, tileId: string): BidAskPair {\n const {\n bidMargin: bidSpotMargin,\n askMargin: askSpotMargin,\n askForwardMargin,\n bidForwardMargin,\n } = getCashState(state, tileId);\n\n return {\n bid: (bidSpotMargin || 0) + (bidForwardMargin || 0),\n ask: (askSpotMargin || 0) + (askForwardMargin || 0),\n };\n}\n\nexport function getCashSpotMarginValue(state: AppState, tileId: string) {\n const { bidMargin, askMargin } = getCashState(state, tileId);\n const currencyPair = getCashCurrencyPair(state, tileId).value;\n\n if (currencyPair === null) {\n return { askMargin: 0, bidMargin: 0 };\n }\n const toRaw = convertToRawWithPrecision(getCurrencyPrecision(state, currencyPair));\n return {\n bidMargin: toRaw(bidMargin),\n askMargin: toRaw(askMargin),\n };\n}\n\nexport function getCashRfsSpotPriceWithMargin(state: AppState, tileId: string): BidAskPair {\n const isInternalSales = isUserInternalSales(state);\n const { currentStreamId } = getCashState(state, tileId);\n const currencyPair = getCashCurrencyPair(state, tileId).value;\n\n if (currentStreamId === null || currencyPair === null) {\n return emptyBidAskProps;\n }\n\n const cashStreamState = getCashRfsStreamState(state, currentStreamId);\n if (cashStreamState.status !== 'PRICING') {\n return emptyBidAskProps;\n }\n const {\n quote: {\n spotWithoutMargin: { bid, ask },\n spotWithMargin,\n },\n } = cashStreamState;\n const { bidMargin, askMargin } = getCashSpotMarginValue(state, tileId);\n\n const precisionAdder = precisionAdderWithPrecision(getCurrencyPrecision(state, currencyPair) + 1);\n\n return {\n bid: isInternalSales ? precisionAdder(bid, -bidMargin) : spotWithMargin.bid,\n ask: isInternalSales ? precisionAdder(ask, askMargin) : spotWithMargin.ask,\n };\n}\n\nexport function getCashRfsForwardPointsWithMargin(state: AppState, tileId: string): BidAskPair {\n const isInternalSales = isUserInternalSales(state);\n const { currentStreamId } = getCashState(state, tileId);\n const currencyPair = getCashCurrencyPair(state, tileId).value;\n\n if (currentStreamId === null || currencyPair === null) {\n return emptyBidAskProps;\n }\n\n const cashStreamState = getCashRfsStreamState(state, currentStreamId);\n if (cashStreamState.status !== 'PRICING') {\n return emptyBidAskProps;\n }\n\n const { bid: bidMargin, ask: askMargin } = getCashForwardMargin(state, tileId);\n\n if (isInternalSales) {\n const {\n quote: {\n forwardPointsWithoutMargin: { bid, ask },\n },\n } = cashStreamState;\n\n const precisionAdder = precisionAdderWithPrecision(\n getCurrencyPrecision(state, currencyPair) + 1,\n );\n\n return {\n bid: precisionAdder(bid, -bidMargin),\n ask: precisionAdder(ask, askMargin),\n };\n } else {\n const {\n quote: { forwardPointsWithMargin },\n } = cashStreamState;\n\n return {\n bid: forwardPointsWithMargin.bid,\n ask: forwardPointsWithMargin.ask,\n };\n }\n}\n\nexport function getRfsDefaultForwardMarginPoints(state: AppState, tileId: string): BidAskPair {\n const { currentStreamId } = getCashState(state, tileId);\n if (currentStreamId === null) {\n return emptyBidAskProps;\n }\n const currentStream = getCashRfsStreamState(state, currentStreamId);\n if (currentStream.status !== 'PRICING') {\n return emptyBidAskProps;\n }\n return currentStream.quote.defaultForwardMarginPoints;\n}\n\nexport function getCashRfsMidAllInRate(state: AppState, quoteId: string) {\n const { currentStreamId } = getCashState(state, quoteId);\n if (currentStreamId === null) {\n return null;\n }\n const streamState = getCashRfsStreamState(state, currentStreamId);\n if (streamState.status !== 'PRICING') {\n return null;\n }\n return streamState.quote.midAllInRate;\n}\n\nexport function getCashStreamStatus(state: AppState, tileId: string) {\n const { currentStreamId, currentEspStreamId } = getCashState(state, tileId);\n if (isDefined(currentStreamId)) {\n return getCashRfsStreamState(state, currentStreamId).status;\n } else if (isDefined(currentEspStreamId)) {\n return getEspStreamState(state, currentEspStreamId)!.status;\n } else {\n return 'NONE';\n }\n}\n\nexport function getCashMarkup(state: AppState, tileId: string) {\n const defaultMarkup = { bidMarkup: 0, askMarkup: 0 };\n\n const {\n currentStreamId,\n currentEspStreamId,\n markupCurrency,\n values: { amountCurrency, amount: notional },\n } = getCashState(state, tileId);\n const currencyPair = getCashCurrencyPair(state, tileId).value;\n if (notional === null || currencyPair === null) {\n return defaultMarkup;\n }\n\n const userInputtedValues = {\n notional,\n amountCurrency,\n markupCurrency,\n };\n\n if (currentStreamId !== null) {\n const allIn = getCashRfsAllInPrice(state, tileId);\n if (allIn.bid === 0 || allIn.ask === 0) {\n return defaultMarkup;\n }\n const totalMargin = getCashRfsTotalMargin(state, tileId);\n\n const toRaw = convertToRawWithPrecision(getCurrencyPrecision(state, currencyPair));\n\n const result = computeMarkup({\n allInBid: allIn.bid,\n allInAsk: allIn.ask,\n bidTotalMargin: toRaw(totalMargin.bid),\n askTotalMargin: toRaw(totalMargin.ask),\n ...userInputtedValues,\n });\n return result;\n } else if (currentEspStreamId !== null) {\n const espStreamState = getEspStreamState(state, currentEspStreamId)!;\n if (espStreamState.status !== 'PRICING') {\n return defaultMarkup;\n }\n\n const { bidMargin: spotBidMargin, askMargin: spotAskMargin } = getCashSpotMarginValue(\n state,\n tileId,\n );\n\n const { price } = getEspPriceByNotional(espStreamState, notional, amountCurrency);\n\n if (price === null) {\n return defaultMarkup;\n }\n const { traderBid: bid, traderAsk: ask } = price as IESPTraderPriceUnderThreshold;\n return computeMarkup({\n allInBid: bid,\n allInAsk: ask,\n bidTotalMargin: spotBidMargin,\n askTotalMargin: spotAskMargin,\n ...userInputtedValues,\n });\n }\n\n return defaultMarkup;\n}\n\nexport function getCashEspSpotPriceForExecution(state: AppState, tileId: string): BidAskPair {\n const { currentEspStreamId } = getCashState(state, tileId);\n if (currentEspStreamId === null) {\n return { bid: 0, ask: 0 };\n }\n const espStreamState = getEspStreamState(state, currentEspStreamId)!;\n if (espStreamState.status !== 'PRICING') {\n return { bid: 0, ask: 0 };\n }\n /**\n * @todo change selector\n */\n const {\n values: { amount, amountCurrency },\n } = getCashState(state, tileId);\n\n const userDefinedMargin = getCashSpotMarginValue(state, tileId);\n return getCashEspSpotPriceWithMarginForExecution(\n espStreamState,\n amount,\n amountCurrency,\n userDefinedMargin,\n );\n}\n","import { getCashMetadata } from './factories';\n\nexport const getCashPropertiesRequested = getCashMetadata('propertiesRequested');\nexport const getCashIsEspTieringDefault = getCashMetadata('isEspDefaultTiering');\nexport const getCashRfsStreamId = getCashMetadata('currentStreamId');\n","import { getCashValue } from './factories';\n\nexport const getCashProductName = getCashValue('productName');\nexport const getCashCurrency1 = getCashValue('currency1');\nexport const getCashCurrency2 = getCashValue('currency2');\nexport const getCashFixingDate = getCashValue('fixingDate');\nexport const getCashPossibleFixingCurrencies = getCashValue('possibleFixingCurrencies');\nexport const getCashPossibleFixingSources = getCashValue('possibleFixingSources');\nexport const getCashIsCrossed = getCashValue('isCrossed');\nexport const getCashPossibleXCurrencies = getCashValue('possibleXCurrencies');\nexport const getCashPossibleSndFixingSources = getCashValue('possibleSndFixingSources');\n","import { getOrderValue } from './factories';\n\nexport const getOrderCurrency1 = getOrderValue('currency1');\nexport const getOrderCurrency2 = getOrderValue('currency2');\nexport const getOrderFixingTypes = getOrderValue('fixingTypes');\nexport const getOrderIsCcyForcedBidAsk = getOrderValue('isCcyForcedBidAsk');\nexport const getOrderIsStandardGroup = getOrderValue('isStandardGroup');\nexport const getOrderFixingTimesOfSelectedType = getOrderValue('fixingTimesOfSelectedType');\nexport const getOrderSourceNameOfSelectedType = getOrderValue('sourceNameOfSelectedType');\nexport const getOrderCanModifyMarginInBps = getOrderValue('canModifyMarginInBps');\n","import { getOrderMetadata } from './factories';\nimport type { AppState } from 'state/model';\n\nexport const getOrderIsReadyToSubmit = getOrderMetadata('isReadyToSubmit');\nexport const getOrderPropertiesRequestError = getOrderMetadata('propertiesRequestError');\n\nexport const getOrderStatus = getOrderMetadata('orderStatus');\nexport const getOrderEditingEmails = getOrderMetadata('editingEmails');\nexport const getOrderClockOffset = getOrderMetadata('clockOffset');\nexport const getOrderPropertiesRequested = (state: AppState, orderId: string) =>\n getOrderStatus(state, orderId) === 'PropertiesRequested';\nexport const getOrderIsStartDateNow = getOrderMetadata('isStartDateNow');\nexport const getOrderTemplateId = getOrderMetadata('currentTemplateId');\n","export type Entries = { [K in keyof T]: [K, T[K]] }[keyof T];\n\nexport const objectEntries: (obj: T) => ReadonlyArray> =\n Object.entries;\n\nexport const strictEntries: (obj: Partial) => ReadonlyArray> =\n Object.entries;\n","import type { Collection } from 'typings/utils';\nimport type { IFormData } from '../share/form';\nimport type { CurrencyChoice, Side } from '../share/productModel/litterals';\nimport { makeValuesPredicate } from '@sgme/fp';\nimport { strictEntries } from 'utils/object/entries';\n\nexport const limitOrderTypes = ['TakeProfit', 'StopLoss', 'Call', 'Fixing'] as const;\nexport type LimitOrderType = (typeof limitOrderTypes)[number];\nexport const isLimitOrder = makeValuesPredicate(limitOrderTypes);\nexport const isFixingOrder = makeValuesPredicate(['Fixing']);\n\nexport const algoOrderTypes = ['Twap', 'Nightjar', 'Falcon'] as const;\nexport type AlgoOrderType = (typeof algoOrderTypes)[number];\nexport const isAlgoOrder = makeValuesPredicate(algoOrderTypes);\n\nexport const orderTypes = [...limitOrderTypes, ...algoOrderTypes] as const;\nexport type OrderType = (typeof orderTypes)[number];\n\nexport const fixingPriceTypes = ['MID', 'BIDASK'] as const;\nexport type FixingPriceType = (typeof fixingPriceTypes)[number];\n\nexport const fixingMarginTypes = ['BidAskMidSpread', 'MarginInBps'] as const;\nexport type FixingMarginType = (typeof fixingMarginTypes)[number];\n\nexport type OrderGroup = 'Limit' | 'Algo';\n\nconst orderTypeByGroupMap: Record = {\n Limit: limitOrderTypes,\n Algo: algoOrderTypes,\n};\n\nexport const orderTypeByGroup = strictEntries(orderTypeByGroupMap);\n\nexport const triggers = ['Spot', 'BidOffer', 'RateOneTouch'] as const;\nexport type Trigger = (typeof triggers)[number];\nexport const clippingModes = ['Automatic', 'Manual', 'Incremental', 'Decremental', 'Splayed'] as const;\nexport type ClippingMode = (typeof clippingModes)[number];\n\nconst liquidityPools = ['Internal', 'Markets', 'Curex', 'FXSpotStream'] as const;\nconst liquidityPoolsFalcon = ['Internal', 'Markets', 'Curex', 'FXSpotStream'] as const;\nexport type LiquidityPool = (typeof liquidityPools)[number];\nexport type LiquidityPoolsFalcon = (typeof liquidityPoolsFalcon)[number];\n\nexport function getOrderLiquidityPoolOptions(orderType: OrderType): readonly LiquidityPool[] {\n switch (orderType) {\n case 'Falcon':\n return liquidityPoolsFalcon;\n default:\n return liquidityPools;\n }\n}\n\nexport const speeds = ['VerySlow', 'Slow', 'Normal', 'Fast', 'VeryFast'] as const;\nexport const speedsFalcon = ['Slow', 'Normal', 'Fast'] as const;\nexport type Speed = (typeof speeds)[number];\nexport type SpeedFalcon = (typeof speedsFalcon)[number];\n\n// OMS currently manage only these currencies in algo order\nexport const allowedNdfCurrencies = ['USD/KRW', 'USD/TWD', 'USD/INR', 'USD/PHP'] as const;\n\nexport interface IFxOrderValues {\n alphaSeeker: boolean;\n currencyPair: string | null;\n currency1: string | null;\n currency2: string | null;\n type: OrderType;\n amount: number | null;\n amountCurrency: CurrencyChoice;\n expiryDay: string | null;\n expiryDayTenor: string | null;\n expiryTime: string | null;\n limitPrice: string | null;\n customerPrice: string | null;\n way: Side;\n trigger: Trigger;\n emailsOrders: string | null;\n emails: string | null;\n isGtc: boolean;\n maturityDate: string | null;\n tenor: string | null;\n startDate: string | null;\n startTime: string | null;\n liquidityPool: readonly LiquidityPool[];\n speed: Speed;\n clippingMode: ClippingMode;\n clipSize: string | null;\n randomize: boolean;\n spreadCapture: boolean;\n fixingTypes: string[] | null;\n fixingBenchmark: string | null;\n isCcyForcedBidAsk: boolean | null;\n fixingPriceType: FixingPriceType | null;\n fixingDateUtc: string | null;\n isStandardGroup: boolean | null;\n fixingTimesOfSelectedType: string[] | null;\n fixingTime: string | null;\n sourceNameOfSelectedType: string[] | null;\n fixingPlace: string | null;\n fixingMarginType: FixingMarginType | null;\n marginInBps: number | null;\n margin: number | null;\n canModifyMarginInBps: boolean;\n ndfFixingDate: string | null;\n ndfFixingSource: string | null;\n}\n\nexport interface IFxOrderInputs {\n alphaSeeker: boolean;\n currencyPair: string | null;\n amount: string | null;\n amountCurrency: CurrencyChoice;\n expiryDay: string | null;\n expiryDayTenor: string | null;\n expiryTime: string | null;\n type: OrderType;\n limitPrice: string | null;\n customerPrice: string | null;\n way: Side;\n trigger: Trigger;\n emails: string | null;\n emailsOrders: string | null;\n isGtc: boolean;\n maturityDate: string | null;\n tenor: string | null;\n startDate: string | null;\n startTime: string | null;\n liquidityPool: readonly LiquidityPool[];\n speed: Speed;\n clippingMode: ClippingMode;\n clipSize: string | null;\n randomize: boolean;\n spreadCapture: boolean;\n fixingBenchmark: string;\n fixingPriceType: FixingPriceType | null;\n fixingDateUtc: string | null;\n fixingTime: string | null;\n fixingPlace: string | null;\n fixingMarginType: FixingMarginType | null;\n marginInBps: number | null;\n margin: number | null;\n ndfFixingDate: string | null;\n ndfFixingSource: string | null;\n}\n\nexport type IFxOrderProperties = IFormData;\n\nexport type OrderStatus =\n | null\n | 'PropertiesRequested'\n | 'PropertiesError'\n | 'Pending'\n | 'Success'\n | 'StillPending'\n | 'Timeouted'\n | 'Failed';\n\nexport const finalStatuses = ['Done', 'Finished', 'Cancelled', 'Expired', 'Partially done', 'InError', 'Rejected'];\n\nexport interface IFxOrderMetadata {\n currentExecutionId: string | null;\n currentEspStreamId: string | null;\n isReadyToSubmit: boolean;\n editingEmails: boolean;\n isStartDateNow: boolean;\n orderStatus: OrderStatus;\n propertiesRequestError: string | null;\n currentTemplateId?: string;\n clockOffset?: number;\n}\n\nexport type FxOrderState = Readonly;\n\nexport const emptyFxOrderState: FxOrderState = {\n values: {\n alphaSeeker: false,\n currencyPair: null,\n amount: null,\n amountCurrency: 1,\n currency1: null,\n currency2: null,\n expiryDay: null,\n expiryDayTenor: null,\n expiryTime: null,\n type: 'StopLoss',\n way: 'Sell',\n limitPrice: null,\n trigger: 'Spot',\n emails: null,\n emailsOrders: null,\n isGtc: true,\n customerPrice: null,\n maturityDate: null,\n tenor: null,\n clippingMode: 'Automatic',\n clipSize: null,\n startDate: null,\n startTime: null,\n liquidityPool: [],\n speed: 'Normal',\n randomize: true,\n spreadCapture: true,\n fixingBenchmark: null,\n fixingTypes: null,\n isCcyForcedBidAsk: null,\n fixingPriceType: null,\n fixingDateUtc: null,\n fixingPlace: null,\n fixingTime: null,\n fixingTimesOfSelectedType: null,\n isStandardGroup: null,\n sourceNameOfSelectedType: null,\n canModifyMarginInBps: false,\n fixingMarginType: null,\n marginInBps: null,\n margin: null,\n ndfFixingDate: null,\n ndfFixingSource: null,\n },\n inputs: {},\n errors: {},\n warnings: {},\n isReadyToSubmit: false,\n editingEmails: false,\n orderStatus: null,\n isStartDateNow: true,\n propertiesRequestError: null,\n currentExecutionId: null,\n currentEspStreamId: null,\n clockOffset: undefined,\n};\n\ntype IFxOrderStateMap = Collection;\nexport type FxOrderStateMap = Readonly;\n\nexport interface OrderTemplate {\n id: string;\n name: string;\n fields: Partial;\n}\n\ninterface IFxOrdersState {\n orders: FxOrderStateMap;\n defaultEmailsByBdrId: Collection;\n templates: Collection;\n}\n\nexport type FxOrdersState = Readonly;\n","import type { AppState } from 'state/model';\nimport { getOrderStatus, getOrderTemplateId } from './orderMetadata';\nimport {\n type OrderType,\n orderTypes,\n algoOrderTypes,\n type AlgoOrderType,\n type LimitOrderType,\n} from '../fxOrdersModel';\nimport type { ProductAccessKeys } from 'state/referenceData/referenceDataModel';\nimport { getProductsAccess } from 'state/referenceData/referenceDataSelectors';\nimport { createSelector } from 'reselect';\nimport { isEmpty } from '@sgme/fp';\n\nexport function isOrderFrozen(state: AppState, orderId: string): boolean {\n // When order was submitted, it can no longer be changed\n switch (getOrderStatus(state, orderId)) {\n case 'Failed':\n case 'Pending':\n return true;\n default:\n return false;\n }\n}\n\nconst emptyEmails: readonly string[] = [];\nexport function getOrderDefaultEmails(state: AppState, bdrId: string): readonly string[] {\n return state.fxOrders.defaultEmailsByBdrId[bdrId] || emptyEmails;\n}\n\nconst orderTypeToProductAccess: Record = {\n StopLoss: 'stopLoss',\n TakeProfit: 'takeProfit',\n Call: 'callOrder',\n Twap: 'twap',\n Nightjar: 'nightjar',\n Falcon: 'falcon',\n Fixing: 'fixing',\n};\n\nexport const getAvailableOrderTypes: (state: AppState) => readonly OrderType[] =\n makeGetAvailableOrderTypes(orderTypes);\n\nexport function hasOrderProductAccess(state: AppState) {\n return !isEmpty(getAvailableOrderTypes(state));\n}\n\nexport const getAvailableAlgoOrderTypes: (state: AppState) => readonly AlgoOrderType[] =\n makeGetAvailableOrderTypes(algoOrderTypes);\n\nfunction makeGetAvailableOrderTypes(\n orders: readonly T[],\n): (state: AppState) => readonly T[] {\n return createSelector([getProductsAccess], productAccess =>\n orders.filter(ot => productAccess[orderTypeToProductAccess[ot]]),\n );\n}\n\nexport const getOrderTemplatesIds = createSelector(\n (state: AppState) => state.fxOrders.templates,\n Object.keys,\n);\n\nexport const getOrderTemplateById = (state: AppState, templateId: string) =>\n state.fxOrders.templates[templateId];\n\nexport const getOrderTemplateByOrderId = (state: AppState, orderId: string) => {\n const templateId = getOrderTemplateId(state, orderId);\n const template = templateId ? getOrderTemplateById(state, templateId) : undefined;\n\n return template;\n};\n","import type { AppState } from 'state/model';\nimport type { SharedPropertyStatus } from 'state/share/form';\nimport { assertUnhandled } from 'utils/error';\nimport { type AlgoOrderType, type IFxOrderInputs, isAlgoOrder } from '../fxOrdersModel';\nimport {\n getOrderAlphaSeeker,\n getOrderClippingMode,\n getOrderClipSize,\n getOrderEmails,\n getOrderLiquidityPool,\n getOrderRandomize,\n getOrderSpeed,\n getOrderSpreadCapture,\n getOrderType,\n} from './orderInput';\nimport { getOrderTemplateByOrderId } from './selectors';\n\nexport const isOrderFromTemplateEdited = (state: AppState, orderId: string) => {\n const template = getOrderTemplateByOrderId(state, orderId);\n const orderType = getOrderType(state, orderId).value;\n\n if (template && isAlgoOrder(orderType)) {\n const orderFields = getFieldsForTemplates(state, orderId);\n return JSON.stringify(template.fields) !== JSON.stringify(orderFields);\n }\n};\n\nexport const getFieldsForTemplates = (state: AppState, orderId: string) => {\n const orderType = getOrderType(state, orderId).value;\n if (!isAlgoOrder(orderType)) {\n assertUnhandled('Unexpected order type', orderType);\n }\n\n return getFieldGettersByOrderType[orderType].reduce(\n (agg, [key, getter]) => ({\n ...agg,\n [key]: getter(state, orderId).value,\n }),\n {} as Record,\n );\n};\nconst getFieldGettersByOrderType: Record<\n AlgoOrderType,\n Array<\n [\n key: keyof IFxOrderInputs,\n getter: (state: AppState, orderId: string) => SharedPropertyStatus,\n ]\n >\n> = {\n Twap: [\n ['type', getOrderType],\n ['liquidityPool', getOrderLiquidityPool],\n ['clippingMode', getOrderClippingMode],\n ['clipSize', getOrderClipSize],\n ['randomize', getOrderRandomize],\n ['spreadCapture', getOrderSpreadCapture],\n ['emails', getOrderEmails],\n ],\n Nightjar: [\n ['type', getOrderType],\n ['liquidityPool', getOrderLiquidityPool],\n ['speed', getOrderSpeed],\n ['alphaSeeker', getOrderAlphaSeeker],\n ['emails', getOrderEmails],\n ],\n Falcon: [\n ['type', getOrderType],\n ['liquidityPool', getOrderLiquidityPool],\n ['speed', getOrderSpeed],\n ['emails', getOrderEmails],\n ],\n};\n","import type { AppState } from 'state/model';\nimport { throwIfUndefined } from 'utils/maps';\n\nexport function getGridLayoutState(state: AppState) {\n return state.gridLayout;\n}\n\nexport function getGridById(state: AppState, gridId: string) {\n return throwIfUndefined(\n getGridLayoutState(state)[gridId],\n `Grid layout state for ${gridId} should exist at this stage`,\n );\n}\n","import type { AppState } from 'state/model';\nimport { getGridById } from './getGrid';\nimport { throwIfUndefined } from 'utils/maps';\n\nexport function getGridItemPositionsByGridId(state: AppState, gridId: string) {\n const gridLayout = getGridLayout(state, gridId);\n return gridLayout.gridItemPositions;\n}\n\nexport function getGridItemSize(state: AppState, gridId: string, gridItemId: string) {\n const gridLayout = getGridLayout(state, gridId);\n\n return throwIfUndefined(\n gridLayout.gridItemSizes[gridItemId],\n `Grid size for ${gridId}/${gridItemId} does not exist in state`,\n );\n}\n\nexport function getGridItemPosition(state: AppState, gridId: string, gridItemId: string) {\n const gridLayout = getGridLayout(state, gridId);\n\n return throwIfUndefined(\n gridLayout.gridItemPositions[gridItemId],\n `Grid position for ${gridId}/${gridItemId} does not exist in state`,\n );\n}\n\nexport function getAddTilePositionByGridID(state: AppState, gridId: string) {\n const grid = getGridById(state, gridId);\n if (grid.draggingStatus === 'DRAGGING') {\n return null;\n }\n return grid.addTilePositions;\n}\n\nconst getGridLayout = (state: AppState, gridId: string) => {\n const grid = getGridById(state, gridId);\n if (grid.draggingStatus === 'DRAGGING') {\n return grid.draggingGridLayout;\n } else {\n return grid.gridLayout;\n }\n};\n","import type { InstrumentChoice } from 'state/referenceData/referenceDataModel';\nimport type { Theme } from 'utils/theme';\n\nexport const colWidth = 305;\nexport const growlWidth = 350;\nexport const orderTileWidth = 350;\nexport const normalDetailsPanelWidth = 300;\nexport const xlDetailsPanelWidth = 520;\nexport const tileContainerPadding = 5;\nexport const ratesHeight = 100;\nexport const defaultCashHeight = 256;\nexport const defaultSwapHeight = 256;\nexport const defaultAccumulatorHeight = 448;\nexport const defaultOptionHeight = 512;\nexport const defaultOrderHeight = 448;\n\nexport const xlBreakpoint = '1200px';\n\nexport const tableBorderColorByTheme: Record = {\n DARK: 'var(--dark)',\n LIGHT: 'var(--light)',\n};\n\nexport const defaultHeights: Record = {\n Cash: defaultCashHeight,\n Swap: defaultSwapHeight,\n Option: defaultOptionHeight,\n TargetAccumulator: defaultAccumulatorHeight,\n ForwardAccumulator: defaultAccumulatorHeight,\n Order: defaultOrderHeight,\n BlotterOrder: defaultOrderHeight,\n};\n","import type { GridLayout } from '../../gridLayoutModels';\nimport { throwIfUndefined } from 'utils/maps';\n\nexport function getPositionById(\n gridState: Pick,\n gridItemId: string,\n) {\n return throwIfUndefined(\n gridState.gridItemPositions[gridItemId],\n `Grid position for ${gridItemId} does not exist`,\n );\n}\n","import type { GridLayout } from '../../gridLayoutModels';\nimport { throwIfUndefined } from 'utils/maps';\n\nexport function getSizeById(gridLayout: Pick, gridItemId: string) {\n return throwIfUndefined(\n gridLayout.gridItemSizes[gridItemId],\n `Grid size for ${gridItemId} does not exist`,\n );\n}\n","import type { GridLayout, Column, Columns } from '../../gridLayoutModels';\nimport { colWidth } from 'styles/constants';\nimport { getPositionById } from './gridLayoutPosition';\nimport { getSizeById } from './gridLayoutSize';\n\nexport function getOccupiedColumnsIndicesByCoordinates(\n left: number,\n width: number,\n): readonly number[] {\n const start = Math.floor(left / colWidth);\n const length = Math.ceil(width / colWidth);\n return Array.from(Array(length), (_item, index) => index + start);\n}\n\nexport function getOccupiedColumnsById(\n gridLayout: Pick,\n gridItemId: string,\n): readonly number[] {\n const { left } = getPositionById(gridLayout, gridItemId);\n const { width } = getSizeById(gridLayout, gridItemId);\n return getOccupiedColumnsIndicesByCoordinates(left, width);\n}\n\nexport const findLocusInsertionIndexInColumn =\n (top: number, bottom: number) =>\n (column: Column): number => {\n let index = 0;\n for (const locus of column) {\n if (top < locus.top) {\n // top is above locus.top\n // if bottom is below it, it collides -> -1\n // if bottom is above top, it fits -> index\n return bottom > locus.top ? -1 : index;\n } else if (top < locus.bottom) {\n // top is between locus.top and locus.bottom\n return -1;\n }\n index++;\n // else try below\n }\n // there is always infinite room at the bottom of the collumn\n return index;\n };\n\nexport const findForceInsertionIndexInColumn =\n (top: number) =>\n (column: Column): number => {\n let index = 0;\n for (const { bottom } of column) {\n if (top < bottom) {\n return index;\n }\n index++;\n }\n // there is always infinite room at the bottom of the collumn\n return index;\n };\n\nexport function getOccupiedColumnsByCoordinates(\n left: number,\n width: number,\n columns: Columns,\n): Columns {\n const startColumn = Math.floor(left / colWidth);\n const length = Math.ceil(width / colWidth);\n return columns.slice(startColumn, startColumn + length);\n}\n","import type { Column, GridLayout, LocusCoordinates } from '../../gridLayoutModels';\nimport { getOccupiedColumnsById } from './gridLayoutColumns';\nimport { logger } from '../../../../logging/logger';\n\nexport function getLociById(\n gridLayout: GridLayout,\n gridItemIdQuery: string,\n): readonly LocusCoordinates[] {\n return getOccupiedColumnsById(gridLayout, gridItemIdQuery).map(colIndex => {\n const locusIndex = gridLayout.columns[colIndex].findIndex(\n ({ gridItemId }) => gridItemId === gridItemIdQuery,\n );\n const locus = gridLayout.columns[colIndex][locusIndex];\n if (locusIndex === undefined || locus === undefined) {\n throw new Error('getLociById applied to invalid state');\n }\n return { locusIndex, locus, colIndex };\n });\n}\n\nexport function getNextLocusInColumn(column: Column, gridItemIdQuery: string) {\n if (column === undefined) {\n logger.logWarning(\n `getNextLocusInColumn was called on undefined column for grid item id : {gridItemIdQuery_s}`,\n gridItemIdQuery,\n );\n return undefined;\n }\n const index = column.findIndex(({ gridItemId }) => gridItemIdQuery === gridItemId);\n return column[index + 1];\n}\n\nexport function getPreviousLocusInColumn(column: Column, gridItemIdQuery: string) {\n const index = column.findIndex(({ gridItemId }) => gridItemIdQuery === gridItemId);\n return column[index - 1];\n}\n","import { isDefined } from '@sgme/fp';\nimport type { LocusCoordinates, Locus, GridLayout } from '../../gridLayoutModels';\nimport { getOccupiedColumnsById } from './gridLayoutColumns';\nimport { getNextLocusInColumn, getPreviousLocusInColumn } from './gridLayoutLocus';\n\ninterface IRightNeighbourCoordinates {\n colIndex: number;\n neighbours: readonly LocusCoordinates[] | undefined;\n}\n\ntype RightNeighbourCoordinates = Readonly;\n\nexport function getDownwardNeighbourGridItem(\n gridLayout: GridLayout,\n gridItemId: string,\n): readonly Locus[] {\n return getOccupiedColumnsById(gridLayout, gridItemId)\n .map(colIndex => getNextLocusInColumn(gridLayout.columns[colIndex], gridItemId))\n .filter(isDefined);\n}\n\nexport function getUpwardNeighbourGridItem(\n gridLayout: GridLayout,\n gridItemId: string,\n): ReadonlyArray> {\n return getOccupiedColumnsById(gridLayout, gridItemId).map(\n colIndex =>\n getPreviousLocusInColumn(gridLayout.columns[colIndex], gridItemId) || {\n bottom: 0,\n },\n );\n}\n\nexport function getRightNeighbourGridItemCoordinates(\n gridLayout: GridLayout,\n gridItemId: string,\n): RightNeighbourCoordinates {\n // get top and bottom boundaries of the current item\n const occupiedColumns = getOccupiedColumnsById(gridLayout, gridItemId);\n const rightHandSizeColumn = occupiedColumns[occupiedColumns.length - 1];\n const currentLocus = gridLayout.columns[occupiedColumns[0]].find(\n locus => locus.gridItemId === gridItemId,\n );\n\n const colIndex = rightHandSizeColumn + 1;\n const nextColumn = gridLayout.columns[colIndex];\n if (nextColumn === undefined || currentLocus === undefined) {\n return {\n colIndex,\n neighbours: undefined,\n };\n }\n\n const neighbours = nextColumn\n .map((locus, locusIndex) => ({ locus, locusIndex, colIndex }))\n .filter(({ locus: { top, bottom } }) => bottom > currentLocus.top && top < currentLocus.bottom);\n\n return {\n colIndex,\n neighbours,\n };\n}\n","import type { AppState } from 'state/model';\nimport type { GridItemPosition, Column } from '../gridLayoutModels';\nimport { colWidth } from 'styles/constants';\nimport { findLocusInsertionIndexInColumn, getOccupiedColumnsByCoordinates } from '../reducer/utils';\nimport { getGridById } from './getGrid';\nimport { getGridItemSize, getGridItemPosition } from './getGridItems';\n\nconst filterGridItemInColumn = (gridItemId: string) => (column: Column) =>\n column.filter(locus => locus.gridItemId !== gridItemId);\n\nconst positiveOrZero = (n: number) => (n > 0 ? n : 0);\n\n/**\n * @todo\n * this selector is currently leaking some noop drag position\n */\n\nexport function newDragPositionWouldChangePosition(\n state: AppState,\n gridId: string,\n gridItemId: string,\n dragPosition: GridItemPosition,\n) {\n // is current status idle\n const grid = getGridById(state, gridId);\n if (grid.draggingStatus === 'IDLE') {\n return true;\n }\n\n // negative values are artefacts of dnd api\n const left = positiveOrZero(dragPosition.left);\n const top = positiveOrZero(dragPosition.top);\n const { width, height } = getGridItemSize(state, gridId, gridItemId);\n\n // is drag position in different colum ? reduce\n const currentPosition = getGridItemPosition(state, gridId, gridItemId);\n if (left < currentPosition.left || left > currentPosition.left + colWidth) {\n return true;\n }\n\n // is drag position directly hovering placeholder position ? noop\n if (top >= currentPosition.top && top < currentPosition.top + height) {\n return false;\n }\n\n const columns = grid.draggingGridLayout.columns.map(filterGridItemInColumn(gridItemId));\n const occupiedColumns = getOccupiedColumnsByCoordinates(left, width, columns);\n const slots = occupiedColumns.map(findLocusInsertionIndexInColumn(top, top + height));\n // is drag position directly above any other tile ? reduce\n if (slots.includes(-1)) {\n /**\n * @todo\n * if currently dragged tile plaholder is immediately above the hovered tile\n * and the tile would be hovered in the stored state too, noop\n */\n // return false\n return true;\n }\n // is drag position, with top gravity applied, resulting in an equal position ? noop\n if (\n Math.max(\n ...occupiedColumns.map((column, index) => {\n const slot = slots[index];\n if (slot === 0) {\n return 0;\n }\n const upperLocus = column[slot - 1];\n return upperLocus.bottom;\n }),\n ) === currentPosition.top\n ) {\n return false;\n }\n return true;\n}\n","import type { AppState } from 'state/model';\nimport { throwIfUndefined } from 'utils/maps';\n\nexport function getFreeLayoutState(state: AppState) {\n return state.freeLayout;\n}\n\nexport function getFreeLayoutById(state: AppState, layoutId: string) {\n return throwIfUndefined(\n getFreeLayoutState(state)[layoutId],\n `Free layout state for ${layoutId} should exist at this stage`,\n );\n}\n","import { getFreeLayoutById } from './getLayout';\nimport type { AppState } from 'state/model';\n\nexport function getItemPositionsByLayoutId(state: AppState, layoutId: string) {\n const layout = getFreeLayoutById(state, layoutId);\n return layout.itemPositions;\n}\n","import type { AppState } from '../model';\nimport type { SessionState } from './sessionModel';\n\nexport function getSessionState(state: AppState): SessionState {\n return state.session;\n}\n","export type ObjectPick = Pick>;\n\nexport function pick(...properties: readonly K[]) {\n return >(obj: T): ObjectPick =>\n properties.reduce((handle, property) => {\n if (obj.hasOwnProperty(property)) {\n const key = property as Extract;\n handle[key] = obj[key];\n }\n return handle;\n }, {} as ObjectPick);\n}\n","export const strictKeys: (obj: {\n [k in K]?: T;\n}) => readonly K[] = Object.keys;\n\n/**\n * Gets the keys of T that extend E\n */\nexport type GetKeysExtending = {\n [K in keyof T]: T[K] extends E ? K : never;\n}[keyof T];\n","import type { Collection } from 'typings/utils';\n\nexport const strictValues: (obj: Collection) => readonly T[] = Object.values;\n","export function nullify(...properties: readonly K[]) {\n return >(obj: T): T =>\n properties.reduce((handle, property) => {\n (handle as any)[property] = null;\n return handle;\n }, Object.assign({}, obj));\n}\n","type KeyType = string | number | symbol;\n\ntype ExtractValue = T extends {\n [key in K]: infer V;\n}\n ? V\n : never;\n\nexport type StrictExtract = Extract;\n\nexport const extract =\n (key: K) =>\n (value: T): ExtractValue =>\n value[key];\n","import { getClientIdByQuoteId, getQuoteInstrument } from 'state/clientWorkspace/selectors';\nimport {\n getUserClientById,\n getCompanyIdFromClientId,\n getCompanyNameFromClientId,\n} from 'state/referenceData/referenceDataSelectors';\nimport type { AppState } from 'state/model';\nimport { getOptionStreamState } from 'state/fxOptions/selectors';\nimport { getTileCurrentStreamId } from './selectors';\nimport type { IFxTileMetadata } from './fxTileModel';\nimport type { HelpRequestIdParam, TileError } from 'api/help/sendHelpRequest';\nimport { getTileRfsStream } from 'state/sharedSelectors';\nimport type { IStreamError } from 'state/globalError/globalErrorModel';\nimport type { IFxExecutionErrorState } from 'state/executions/executionsStateModel';\nimport { createSelector } from 'reselect';\nimport { getAccumulatorTraderId, getAccumulatorQuoteContribution } from 'state/fxAccumulators/selectors';\nimport { isDefined } from '@sgme/fp';\nimport { strictValues } from 'utils/object';\nimport { getCashRfsStreamState } from 'state/fxCashs/selectors';\nimport { getSwapRfsStream } from 'state/fxSwaps/selectors';\n\nexport function getClientForTile(state: AppState, tileId: string) {\n const clientId = getClientIdByQuoteId(state, tileId);\n if (clientId === undefined) {\n throw new Error(`Cannot find clientId with tile id ${tileId}`);\n }\n const client = getUserClientById(state, clientId!);\n if (client === undefined) {\n throw new Error(`Cannot find client with id ${clientId}`);\n }\n return client;\n}\n\nexport function getCompanyIdFromQuoteId(state: AppState, quoteId: string): number | null {\n const clientId = getClientIdByQuoteId(state, quoteId);\n if (clientId !== null) {\n return getCompanyIdFromClientId(state, clientId);\n }\n return null;\n}\nexport function getCompanyNameFromQuoteId(state: AppState, quoteId: string): string | null {\n const clientId = getClientIdByQuoteId(state, quoteId);\n if (clientId !== null) {\n return getCompanyNameFromClientId(state, clientId);\n }\n return null;\n}\n\nexport const getTileTraderId = (state: AppState, quoteId: string) => {\n const streamId = getTileCurrentStreamId(state, quoteId);\n if (streamId === null) {\n return null;\n }\n\n const instrument = getQuoteInstrument(state, quoteId);\n switch (instrument) {\n case 'Option':\n const optionStream = getOptionStreamState(state, streamId);\n\n if (\n optionStream?.status === 'AWAITING' ||\n optionStream?.status === 'PRICING' ||\n optionStream?.status === 'EXPIRED'\n ) {\n return optionStream.traderId;\n }\n return null;\n case 'Cash':\n const cashStream = getCashRfsStreamState(state, streamId);\n if (cashStream.status !== 'PRICING') {\n return null;\n }\n return cashStream.quote.traderId;\n\n case 'Accumulator':\n return getAccumulatorTraderId(state, streamId);\n case 'Swap':\n const swapStream = getSwapRfsStream(state, streamId);\n\n if (swapStream.status !== 'PRICING') {\n return null;\n }\n\n return swapStream?.quote?.traderId;\n default:\n return null;\n }\n};\n\nexport const getTileContribution = (state: AppState, quoteId: string) => {\n const streamId = getTileCurrentStreamId(state, quoteId);\n if (streamId === null) {\n return null;\n }\n\n const instrument = getQuoteInstrument(state, quoteId);\n switch (instrument) {\n case 'Option':\n const stream = getOptionStreamState(state, streamId);\n\n if (stream?.status === 'PRICING' || stream?.status === 'EXPIRED') {\n return stream.quoteContribution;\n }\n return null;\n case 'Accumulator':\n return getAccumulatorQuoteContribution(state, streamId);\n default:\n return null;\n }\n};\n\nconst emptyFaultyIds: HelpRequestIdParam = {\n rfsIdsErrors: [],\n executionIdsErrors: [],\n rfsIdsNoPrice: [],\n espIdsNoPrice: [],\n};\n\nexport const getFaultyStreamIds = (state: AppState): HelpRequestIdParam => {\n const options = Object.entries(state.fxOptions.options);\n const cashs = Object.entries(state.fxCashs.cashs);\n const swaps = Object.entries(state.fxSwaps.swaps);\n const accu = Object.entries(state.fxAccumulators.accumulators);\n const bulks = Object.entries(state.fxBulks.bulks);\n const executions = strictValues(state.executions);\n\n const all = [...options, ...cashs, ...swaps, ...accu, ...bulks];\n const allValues = all.map(a => a[1]).filter(isDefined);\n const espIdsNoPrice = allValues\n .filter(({ currentEspStreamId }) => state.espStreams[currentEspStreamId!]?.status === 'AWAITING')\n .map(c => c.currentExecutionId)\n .filter(isDefined);\n const rfsIdsErrors = getRfsErrorMessages(allValues);\n const rfsIdsNoPrice = all\n .filter(([tileId]) => getTileRfsStream(state, tileId)?.status === 'AWAITING')\n .map(([, streamState]) => streamState?.currentExecutionId!);\n\n const executionIdsErrors = executions\n .filter(({ status }) => status === 'Error')\n .map(execution => toTileError((execution as IFxExecutionErrorState).streamError));\n\n if (!rfsIdsErrors.length && !executionIdsErrors.length && !rfsIdsNoPrice.length && !espIdsNoPrice.length) {\n return emptyFaultyIds;\n } else {\n return faultyIdsSelector({\n rfsIdsErrors,\n executionIdsErrors,\n rfsIdsNoPrice,\n espIdsNoPrice,\n });\n }\n};\n\n// keep the same object to avoid rerenders\nconst faultyIdsSelector = createSelector([JSON.stringify], JSON.parse);\n\nconst getRfsErrorMessages = (values: readonly IFxTileMetadata[]) =>\n values.filter(v => isDefined(v?.lastStreamError?.multipassSessionId)).map(v => toTileError(v?.lastStreamError!));\n\nconst toTileError = (v: IStreamError): TileError => ({\n id: v!.multipassSessionId!,\n message: v!.message!,\n});\n","import type { AppState } from 'state/model';\nimport type { BlotterTab } from 'state/blotter/blotterModel';\nimport type { BlotterMetadata, BlotterTabMetadata, IBlotterErrorType } from '../blotterModel';\nimport { assertUnreachable } from '@sgme/fp';\n\nconst getBlotterMetadata = (state: AppState): BlotterMetadata => state.blotter.metadata;\n\nexport const getBlotterErrors = (state: AppState): readonly IBlotterErrorType[] =>\n getBlotterMetadata(state).errors;\n\nexport const getBlotterActiveTab = (state: AppState): BlotterTab =>\n getBlotterMetadata(state).activeTab;\n\nexport const getBlotterPanelHeight = (state: AppState): number =>\n getBlotterMetadata(state).panelHeight;\n\nexport const getBlotterEnableShowMyMainDeals = (state: AppState): boolean =>\n getBlotterMetadata(state).enableShowMyMainDeals;\n\nexport const getBlotterOrderRejectedId = (state: AppState): string | null =>\n getBlotterMetadata(state).orderRejectedId;\n\nexport const getBlotterOrderShowSaveErrorDialogBox = (state: AppState): boolean =>\n getBlotterMetadata(state).showSaveErrorDialogBox;\n\nexport const getBlotterOrderDisplayedErrorId = (state: AppState): string | undefined =>\n getBlotterMetadata(state).displayedErrorId;\n\nexport const getBlotterTabMetadata = (state: AppState, tab: BlotterTab): BlotterTabMetadata => {\n switch (tab) {\n case 'cash':\n return getBlotterMetadata(state).cashTab;\n case 'option':\n return getBlotterMetadata(state).optionTab;\n case 'order':\n return getBlotterMetadata(state).orderTab;\n case 'accumulator':\n return getBlotterMetadata(state).accumulatorTab;\n default:\n assertUnreachable(tab, 'Unknown tab type');\n }\n};\n\nexport const getBlotterDetailsPanel = (state: AppState) => getBlotterMetadata(state).detailsPanel;\n\nexport const getBlotterCantReopenReason = (state: AppState) =>\n getBlotterMetadata(state).cantReopenReason;\n\nexport const getBlotterDetailsPanelSelectedId = (state: AppState) =>\n getBlotterDetailsPanel(state).selectedId;\n\nexport const getBlotterDetailsPanelChildrenIds = (state: AppState) =>\n getBlotterDetailsPanel(state).childrenIds;\n\nexport const getBlotterDetailsPanelMode = (state: AppState) => getBlotterDetailsPanel(state).mode;\n\nexport const getBlotterDetailsPanelSaveError = (state: AppState) =>\n getBlotterDetailsPanel(state).saveError;\n\nexport const getBlotterDetailsPanelHasUnexpectedError = (state: AppState) =>\n getBlotterDetailsPanel(state).hasUnexpectedError;\n\nexport function getBlotterDetailsValidationResponse(state: AppState) {\n return getBlotterDetailsPanel(state).validationResponse;\n}\n","import type { AppState } from 'state/model';\nimport { getSharedProperty, getValueProperty } from 'state/share/form';\nimport type {\n BlotterTradeValues,\n BlotterTradeInputs,\n BlotterTradeValuePropertyKey,\n BlotterTradeSharedPropertyKey,\n} from '../blotterEntryModel';\nimport { getBlotterTradeById } from './blotterSelectors';\n\nexport function getBlotterTradeInput(prop: T) {\n const get = getSharedProperty(prop);\n return (state: AppState, tradeId: string) => get(getBlotterTradeById(state, tradeId));\n}\n\nexport function getBlotterTradeValue(prop: T) {\n const get = getValueProperty(prop);\n return (state: AppState, tradeId: string) => get(getBlotterTradeById(state, tradeId));\n}\n\nexport const getBlotterTradeProduct = getBlotterTradeValue('product');\nexport const getBlotterTradeStatus = getBlotterTradeValue('status');\nexport const getBlotterTradeCurrencyPair = getBlotterTradeValue('currencyPair');\nexport const getBlotterTradeDealtCurrency = getBlotterTradeValue('dealtCurrency');\nexport const getBlotterTradeContraCurrency = getBlotterTradeValue('contraCurrency');\nexport const getBlotterTradeContraAmount = getBlotterTradeValue('contraAmount');\nexport const getBlotterTradeFarContraAmount = getBlotterTradeValue('farContraAmount');\nexport const getBlotterTradeWay = getBlotterTradeValue('way');\nexport const getBlotterTradeAccount = getBlotterTradeValue('account');\nexport const getBlotterTradeSpotRate = getBlotterTradeValue('spot');\nexport const getBlotterTradeFarRate = getBlotterTradeValue('farRate');\nexport const getBlotterTradeNearRate = getBlotterTradeValue('nearRate');\nexport const getBlotterTradeSwapPoints = getBlotterTradeValue('points');\nexport const getBlotterTradeSpotDate = getBlotterTradeValue('spotDate');\nexport const getBlotterTradeTradeDate = getBlotterTradeValue('date');\nexport const getBlotterTradeFarDate = getBlotterTradeValue('farDate');\nexport const getBlotterTradeNearDate = getBlotterTradeValue('nearDate');\nexport const getBlotterTradeFarDealtAmount = getBlotterTradeValue('farDealtAmount');\nexport const getBlotterTradeDealtAmount = getBlotterTradeValue('dealtAmount');\nexport const getBlotterTradeStrike = getBlotterTradeValue('strike');\nexport const getBlotterTradeExpiry = getBlotterTradeValue('expiry');\nexport const getBlotterTradePremium = getBlotterTradeValue('premium');\nexport const getBlotterTradePremiumSide = getBlotterTradeValue('premiumSide');\nexport const getBlotterTradeOptionType = getBlotterTradeValue('optionType');\n","import type { AppState } from 'state/model';\n\nexport function isMifid2PanelVisible(state: AppState) {\n return state.mifid2Panel.showMifid2Panel;\n}\n\nexport function isStartingMifid2Negotiation(state: AppState) {\n return state.mifid2Panel.isStartingNegotiation;\n}\n\nexport function getMifid2PanelNegotiations(state: AppState) {\n return state.mifid2Panel.negotiations;\n}\n\nexport function getMifid2PanelNegotiation(state: AppState, negotiationId: string) {\n return getMifid2PanelNegotiations(state)[negotiationId];\n}\n\nexport function getMifid2NegotiationQuotes(state: AppState, negotiationId: string) {\n return getMifid2PanelNegotiation(state, negotiationId)?.quotes;\n}\n\nexport function getMifid2Quote(state: AppState, negotiationId: string, quoteId: string) {\n return state.mifid2Panel.quotes[`${negotiationId}/${quoteId}`];\n}\n","import type { AppState } from 'state/model';\nimport { getAccountNameLength } from 'state/userPreferences/selectors';\nimport type { Client } from 'state/referenceData/referenceDataModel';\n\nexport function getClientName(state: AppState, client: Client) {\n return getAccountNameLength(state) === 'Short' && client.externalCompanyName\n ? client.externalCompanyName\n : client.companyName;\n}\n","import * as executionSelectors from './executions/executionsSelectors';\nimport * as optionSelectors from './fxOptions/selectors';\nimport * as swapSelectors from './fxSwaps/selectors';\nimport * as cashSelectors from './fxCashs/selectors';\nimport * as bulkSelectors from './fxBulks/selectors';\nimport * as accumulatorSelectors from './fxAccumulators/selectors';\nimport * as orderSelectors from './fxOrders/selectors';\nimport * as espSelectors from './esp/espStreamsSelectors';\nimport * as clientWorkspaceSelectors from './clientWorkspace/selectors';\nimport * as referenceDataSelectors from './referenceData/referenceDataSelectors';\nimport * as streamingConnectionSelectors from './streamingConnection/streamingConnectionSelectors';\nimport * as globalErrorSelectors from './globalError/globalErrorSelectors';\nimport * as gridLayoutSelectors from './gridLayout/selectors';\nimport * as freeLayoutSelectors from './freeLayout/selectors';\nimport * as sessionSelectors from './session/sessionSelectors';\nimport * as tileLegacySelectors from './tile/tileSelectors';\nimport * as tileSelectors from './tile/selectors';\nimport * as sharedSelectors from './sharedSelectors';\nimport * as userPreferencesSelectors from './userPreferences/selectors';\nimport * as blotterSelectors from './blotter/selectors';\nimport * as mifid2PanelSelectors from './mifidPanel/mifidPanelSelectors';\nimport * as clientSelectors from './share/clientSelectors';\n\nexport const selectors = {\n ...executionSelectors,\n ...optionSelectors,\n ...swapSelectors,\n ...cashSelectors,\n ...bulkSelectors,\n ...accumulatorSelectors,\n ...orderSelectors,\n ...espSelectors,\n ...clientWorkspaceSelectors,\n ...referenceDataSelectors,\n ...streamingConnectionSelectors,\n ...globalErrorSelectors,\n ...gridLayoutSelectors,\n ...freeLayoutSelectors,\n ...sessionSelectors,\n ...tileSelectors,\n ...tileLegacySelectors,\n ...sharedSelectors,\n ...userPreferencesSelectors,\n ...blotterSelectors,\n ...mifid2PanelSelectors,\n ...clientSelectors,\n} as const;\n\nexport type Selectors = typeof selectors;\n","import type { IFxHedgeInputs } from '../model/optionHedges';\n\nexport interface OptionHedgePropertyChanged {\n type: 'OPTION_HEDGE_PROPERTY_CHANGED';\n hedgeId: string;\n patch: Partial;\n}\n\nexport function optionHedgePropertyChanged(\n hedgeId: string,\n patch: Partial,\n): OptionHedgePropertyChanged {\n return {\n type: 'OPTION_HEDGE_PROPERTY_CHANGED',\n hedgeId,\n patch,\n };\n}\n\nexport interface OptionHedgePropertyRemoveError {\n type: 'OPTION_HEDGE_PROPERTY_REMOVE_ERROR';\n hedgeId: string;\n keys: ReadonlyArray;\n}\n\nexport function optionHedgePropertyRemoveError(\n hedgeId: string,\n keys: ReadonlyArray,\n): OptionHedgePropertyRemoveError {\n return {\n type: 'OPTION_HEDGE_PROPERTY_REMOVE_ERROR',\n hedgeId,\n keys,\n };\n}\n","import type { IFxOptionInputs } from '../model/optionProduct';\nimport type {\n FxOptionLegInputs,\n IFxOptionTypedStrategyLegInputs,\n IFxOptionTypedStrategyLegValues,\n IFxVanillaLegValues,\n} from '../model/optionsLegs';\nimport { isEmpty } from '@sgme/fp';\n\nexport interface OptionLegAdded {\n type: 'OPTION_LEG_ADDED';\n optionId: string;\n}\n\nexport function optionLegAdded(optionId: string): OptionLegAdded {\n return {\n type: 'OPTION_LEG_ADDED',\n optionId,\n };\n}\n\nexport interface OptionLegDuplicated {\n type: 'OPTION_LEG_DUPLICATED';\n optionId: string;\n legId: string;\n}\n\nexport function optionLegDuplicated(optionId: string, legId: string): OptionLegDuplicated {\n return {\n type: 'OPTION_LEG_DUPLICATED',\n optionId,\n legId,\n };\n}\n\nexport interface OptionLegsImported {\n type: 'OPTION_LEGS_IMPORTED';\n optionId: string;\n patch: Partial & {\n legs?: Record>;\n };\n}\n\nexport function optionLegsImported(\n optionId: string,\n patch: Partial & {\n legs?: Record>;\n },\n): OptionLegsImported {\n return {\n type: 'OPTION_LEGS_IMPORTED',\n optionId,\n patch,\n };\n}\n\nexport interface OptionLegRemoved {\n type: 'OPTION_LEG_REMOVED';\n optionId: string;\n legId: string;\n}\n\nexport function optionLegRemoved(optionId: string, legId: string): OptionLegRemoved {\n return {\n type: 'OPTION_LEG_REMOVED',\n optionId,\n legId,\n };\n}\n\nexport interface OptionLegPropertyChanged {\n type: 'OPTION_LEG_PROPERTY_CHANGED';\n optionId: string;\n legId: string;\n patch: Partial;\n}\n\nexport function optionLegPropertyChanged(\n optionId: string,\n legId: string,\n patch: Partial,\n): OptionLegPropertyChanged {\n const patchKeys = Object.keys(patch);\n if (isEmpty(patchKeys) || (patch as any)[patchKeys[0]] === undefined) {\n throw 'you must change at least one property';\n }\n\n return {\n type: 'OPTION_LEG_PROPERTY_CHANGED',\n optionId,\n legId,\n patch,\n };\n}\n\nexport interface OptionLegPropertyRemoveError {\n type: 'OPTION_LEG_PROPERTY_REMOVE_ERROR';\n optionId: string;\n legId: string;\n keys: ReadonlyArray;\n}\n\nexport function optionLegPropertyRemoveError(\n optionId: string,\n legId: string,\n keys: ReadonlyArray,\n): OptionLegPropertyRemoveError {\n return {\n type: 'OPTION_LEG_PROPERTY_REMOVE_ERROR',\n optionId,\n legId,\n keys,\n };\n}\n\nexport interface OptionLegsPropertyChanged {\n type: 'OPTION_LEGS_PROPERTY_CHANGED';\n optionId: string;\n patch: Record | IFxOptionTypedStrategyLegInputs>;\n}\n\nexport function optionLegsPropertyChanged(\n optionId: string,\n patch: Record | IFxOptionTypedStrategyLegInputs>,\n): OptionLegsPropertyChanged {\n const patchKeys = Object.keys(patch);\n if (isEmpty(patchKeys) || (patch as any)[patchKeys[0]] === undefined) {\n throw 'you must change at least one leg';\n }\n\n return {\n type: 'OPTION_LEGS_PROPERTY_CHANGED',\n optionId,\n patch,\n };\n}\n\nexport interface OptionLegsCurrencyLinkedToggled {\n type: 'OPTION_LEG_CURRENCY_LINKED_TOGGLED';\n optionId: string;\n}\n\nexport function optionLegsCurrencyLinkedToggled(optionId: string): OptionLegsCurrencyLinkedToggled {\n return {\n type: 'OPTION_LEG_CURRENCY_LINKED_TOGGLED',\n optionId,\n };\n}\n\nexport interface OptionLegsPremiumPinToggled {\n type: 'OPTION_LEGS_PREMIUM_PIN_TOGGLED';\n quoteId: string;\n}\n\nexport function optionLegsPremiumPinToggled(quoteId: string): OptionLegsPremiumPinToggled {\n return {\n type: 'OPTION_LEGS_PREMIUM_PIN_TOGGLED',\n quoteId,\n };\n}\n","import type { DisplayPriceType, IFxOptionInputs, IFxOptionValues } from '../model/optionProduct';\nimport type { CurrencyChoice, HedgeType, Side, Way } from 'state/share/productModel/litterals';\nimport type { IStreamError } from 'state/globalError/globalErrorModel';\nimport type { OptionSavedTile } from 'api/workspaceService/model';\nimport type { TradeCaptureError } from 'state/tile/fxTileModel';\nimport type { RestoredTiles } from 'state/clientWorkspace';\nimport type { IPatch } from 'state/share/patchModels';\nimport type { ITradeCaptureMetaData } from 'api/tradeCapture/tradeCaptureModel';\nimport type { IFxExecutionData } from 'state/executions/executionsStateModel';\nimport type {\n FxOptionLegInputs,\n FxOptionLegsPatchedValuesRecords,\n IFxOptionTypedStrategyLegInputs,\n IFxVanillaLegInputs,\n IFxVanillaLegValues,\n LegType,\n OptionType,\n SettlementType,\n} from '../model/optionsLegs';\nimport type { IQuote } from '../model/optionsStreams';\nimport type { TileInstrument } from 'state/referenceData';\nimport type { TradeType } from 'state/blotter/blotterEntryModel';\nimport type { PriceType } from '../model/common';\nimport type { StrictExclude } from 'utils/object';\nimport type { FxOptionHedgesPatchedValuesRecords, IFxHedgeInputs } from '../model/optionHedges';\n\nexport type FxOptionPatchedValues = IPatch &\n ITradeCaptureMetaData & {\n displayPriceType?: DisplayPriceType;\n isProductObsolete: boolean;\n legIds: string[];\n };\n\nexport type FxOptionPatchedValuesRecords = Record;\n\nexport interface FxOptionPatchWithTradeCaptureMetaData {\n option: FxOptionPatchedValuesRecords;\n legs: FxOptionLegsPatchedValuesRecords;\n hedges: FxOptionHedgesPatchedValuesRecords;\n}\n\nexport interface IFxOptionExecutionData extends IFxExecutionData {\n instrument: 'Option';\n strategyType: StrictExclude;\n way: Way;\n quote: Readonly;\n displayPriceType: DisplayPriceType;\n legs: Record;\n}\n\nexport type IFxOptionTypedStrategyLegInputsWithSubLegs = IFxOptionTypedStrategyLegInputs & {\n subLegs: Record>; // TODO: remove sublegs ?\n};\n\nexport type SubLegId = string;\n\nexport interface OptionTileOpenFromBlotter {\n instrument: Extract;\n productName: 'FxOption';\n strategyType: TradeType;\n hedgeType: HedgeType;\n optionType: OptionType | undefined;\n currencyPair: string | null;\n priceType: PriceType;\n premiumCurrency: CurrencyChoice | undefined;\n side: Side;\n expiryDate: string | null | undefined;\n strike: string | null | undefined;\n notionalAmount: string | null | undefined;\n notionalCurrency: CurrencyChoice | undefined;\n deliveryDate: string | null | undefined;\n settlementType: SettlementType | null | undefined;\n settlementPlace: string | null | undefined;\n premiumDate: string | null | undefined;\n legs: LegOpenFromBlotter[];\n}\n\nexport interface LegOpenFromBlotter {\n side: Side;\n optionType: OptionType | undefined;\n expiryDate: string | null | undefined;\n strike: string | null | undefined;\n notionalAmount: string | null | undefined;\n notionalCurrency: CurrencyChoice | undefined;\n deliveryDate: string | null | undefined;\n settlementType: SettlementType | null | undefined;\n settlementPlace: string | null | undefined;\n premiumDate: string | null | undefined;\n}\n\nexport interface OptionTileReset {\n type: 'OPTION_TILE_RESET';\n quoteId: string;\n currencyPair?: string;\n}\n\nexport function optionTileReset(quoteId: string, currencyPair?: string): OptionTileReset {\n return {\n type: 'OPTION_TILE_RESET',\n quoteId,\n currencyPair,\n };\n}\n\nexport interface OptionTileRestoreEpic {\n type: 'OPTION_TILE_RESTORE_EPIC';\n tiles: RestoredTiles;\n}\n\nexport function optionTileRestoreEpic(tiles: RestoredTiles): OptionTileRestoreEpic {\n return {\n type: 'OPTION_TILE_RESTORE_EPIC',\n tiles,\n };\n}\n\nexport interface OptionTileOpenFromBlotterEpic {\n type: 'OPTION_TILE_OPEN_FROM_BLOTTER_EPIC';\n tileId: string;\n tile: OptionTileOpenFromBlotter;\n}\n\nexport function optionTileOpenFromBlotterEpic(\n tileId: string,\n tile: OptionTileOpenFromBlotter,\n): OptionTileOpenFromBlotterEpic {\n return {\n type: 'OPTION_TILE_OPEN_FROM_BLOTTER_EPIC',\n tileId,\n tile,\n };\n}\n\nexport interface OptionExecutionRequested {\n type: 'OPTION_EXECUTION_REQUESTED';\n optionId: string;\n streamId: string;\n way: Way;\n}\n\nexport function optionExecutionRequested(optionId: string, streamId: string, way: Way): OptionExecutionRequested {\n return {\n type: 'OPTION_EXECUTION_REQUESTED',\n optionId,\n streamId,\n way,\n };\n}\n\nexport interface OptionExecutionFailed {\n type: 'OPTION_EXECUTION_FAILED';\n streamError: IStreamError;\n executionId: string;\n}\n\nexport function optionExecutionFailed(executionId: string, streamError: IStreamError): OptionExecutionFailed {\n return {\n type: 'OPTION_EXECUTION_FAILED',\n streamError,\n executionId,\n };\n}\n\nexport function optionExecutionSentSucceeded(executionId: string): OptionExecutionSentSucceeded {\n return {\n type: 'OPTION_EXECUTION_SENT_SUCCEEDED',\n executionId,\n };\n}\n\nexport interface OptionExecutionSentSucceeded {\n type: 'OPTION_EXECUTION_SENT_SUCCEEDED';\n executionId: string;\n}\n\nexport interface OptionExecutionSent {\n type: 'OPTION_EXECUTION_SENT';\n optionId: string;\n quoteId: string;\n executionId: string;\n execution: IFxOptionExecutionData;\n instrument: 'Option';\n}\n\nexport function optionExecutionSent(\n optionId: string,\n quoteId: string,\n executionId: string,\n execution: IFxOptionExecutionData,\n): OptionExecutionSent {\n return {\n type: 'OPTION_EXECUTION_SENT',\n optionId,\n quoteId,\n executionId,\n execution,\n instrument: 'Option',\n };\n}\n\nexport interface OptionStrategyTypeChanged {\n type: 'OPTION_STRATEGY_TYPE_CHANGED';\n optionId: string;\n strategyType: Exclude;\n optionType?: OptionType;\n}\n\nexport function optionStrategyTypeChanged(\n optionId: string,\n strategyType: Exclude,\n optionType?: OptionType,\n): OptionStrategyTypeChanged {\n return { type: 'OPTION_STRATEGY_TYPE_CHANGED', optionId, strategyType, optionType };\n}\n\nexport interface OptionPropertyChanged {\n type: 'OPTION_PROPERTY_CHANGED';\n optionId: string;\n patch: Partial & {\n legs?: Record | IFxOptionTypedStrategyLegInputsWithSubLegs>; // TODO: remove sublegs ?\n hedges?: Record>;\n };\n}\n\nexport function optionPropertyChanged(\n optionId: string,\n patch: Partial & {\n legs?: Record | IFxOptionTypedStrategyLegInputsWithSubLegs>; // TODO: remove sublegs ?\n hedges?: Record>;\n },\n): OptionPropertyChanged {\n return {\n type: 'OPTION_PROPERTY_CHANGED',\n optionId,\n patch,\n };\n}\n\nexport interface OptionPropertyRemoveError {\n type: 'OPTION_PROPERTY_REMOVE_ERROR';\n optionId: string;\n keys: ReadonlyArray;\n}\n\nexport function optionPropertyRemoveError(\n optionId: string,\n keys: ReadonlyArray,\n): OptionPropertyRemoveError {\n return {\n type: 'OPTION_PROPERTY_REMOVE_ERROR',\n optionId,\n keys,\n };\n}\n\nexport interface OptionNotionalCurrencyChanged {\n type: 'OPTION_NOTIONAL_CURRENCY_CHANGED';\n optionId: string;\n legsId: readonly string[];\n notionalCurrency: CurrencyChoice;\n}\n\nexport function optionNotionalCurrencyChanged(\n optionId: string,\n legsId: readonly string[],\n notionalCurrency: CurrencyChoice,\n): OptionNotionalCurrencyChanged {\n return {\n type: 'OPTION_NOTIONAL_CURRENCY_CHANGED',\n optionId,\n legsId,\n notionalCurrency,\n };\n}\n\nexport interface OptionCopyPasted {\n type: 'OPTION_COPY_PASTED';\n}\n\nexport function optionCopyPasted(): OptionCopyPasted {\n return {\n type: 'OPTION_COPY_PASTED',\n };\n}\n\nexport interface OptionPropertiesRequested {\n type: 'OPTION_PROPERTIES_REQUESTED';\n optionId: string;\n sessionId: string;\n}\n\nexport function optionPropertiesRequested(optionId: string, sessionId: string): OptionPropertiesRequested {\n return {\n type: 'OPTION_PROPERTIES_REQUESTED',\n optionId,\n sessionId,\n };\n}\n\nexport interface OptionPropertiesReceived {\n type: 'OPTION_PROPERTIES_RECEIVED';\n quoteId: string;\n legsPatch: FxOptionLegsPatchedValuesRecords;\n hedgesPatch: FxOptionHedgesPatchedValuesRecords;\n isReadyToPrice: boolean | null;\n isPriceObsolete: boolean;\n isProductObsolete: boolean;\n optionPatch: FxOptionPatchedValues;\n displayPriceType?: DisplayPriceType;\n idVersion: number;\n}\n\nexport function optionPropertiesReceived(\n quoteId: string,\n legsPatch: FxOptionLegsPatchedValuesRecords,\n hedgesPatch: FxOptionHedgesPatchedValuesRecords,\n optionPatch: FxOptionPatchedValues,\n idVersion: number,\n isReadyToPrice: boolean | null,\n isPriceObsolete = false,\n isProductObsolete = false,\n displayPriceType?: DisplayPriceType,\n): OptionPropertiesReceived {\n return {\n type: 'OPTION_PROPERTIES_RECEIVED',\n quoteId,\n legsPatch,\n hedgesPatch,\n optionPatch,\n isReadyToPrice,\n isPriceObsolete,\n isProductObsolete,\n displayPriceType,\n idVersion,\n };\n}\n\nexport interface OptionPropertiesRequestFailed {\n type: 'OPTION_PROPERTIES_REQUEST_FAILED';\n quoteId: string;\n error: TradeCaptureError;\n}\n\nexport function optionPropertiesRequestFailed(\n quoteId: string,\n error: TradeCaptureError,\n): OptionPropertiesRequestFailed {\n return {\n type: 'OPTION_PROPERTIES_REQUEST_FAILED',\n quoteId,\n error,\n };\n}\n\nexport interface OptionDisplayPriceTypeChanged {\n type: 'OPTION_DISPLAY_PRICE_TYPE_CHANGED';\n optionId: string;\n displayPriceType: DisplayPriceType;\n}\n\nexport function optionDisplayPriceTypeChanged(\n optionId: string,\n displayPriceType: DisplayPriceType,\n): OptionDisplayPriceTypeChanged {\n return {\n type: 'OPTION_DISPLAY_PRICE_TYPE_CHANGED',\n optionId,\n displayPriceType,\n };\n}\n\nexport interface OptionExecutionReceived {\n type: 'OPTION_EXECUTION_RECEIVED';\n executionId: string;\n}\n\nexport function optionExecutionReceived(executionId: string): OptionExecutionReceived {\n return {\n type: 'OPTION_EXECUTION_RECEIVED',\n executionId,\n };\n}\n\nexport interface OptionFillReportReceived {\n type: 'OPTION_FILL_REPORT_RECEIVED';\n executionId: string;\n tradeIds: readonly string[];\n}\n\nexport function optionFillReportReceived(executionId: string, tradeIds: readonly string[]): OptionFillReportReceived {\n return {\n type: 'OPTION_FILL_REPORT_RECEIVED',\n executionId,\n tradeIds,\n };\n}\n\nexport interface OptionToggleStrategy {\n type: 'OPTION_TOGGLE_STRATEGY';\n optionId: string;\n isStrategy: boolean;\n}\n\nexport function optionToggleStrategy(optionId: string, isStrategy: boolean): OptionToggleStrategy {\n return {\n type: 'OPTION_TOGGLE_STRATEGY',\n optionId,\n isStrategy,\n };\n}\n\nexport interface OptionToggleGroup {\n type: 'OPTION_TOGGLE_GROUP';\n quoteId: string;\n isGroup: boolean;\n}\n\nexport function optionToggleGroup(quoteId: string, isGroup: boolean): OptionToggleGroup {\n return {\n type: 'OPTION_TOGGLE_GROUP',\n quoteId,\n isGroup,\n };\n}\n\nexport interface OptionToggleExpand {\n type: 'OPTION_TOGGLE_EXPAND';\n quoteId: string;\n expiry: string;\n}\n\nexport function optionToggleExpand(quoteId: string, expiry: string): OptionToggleExpand {\n return {\n type: 'OPTION_TOGGLE_EXPAND',\n quoteId,\n expiry,\n };\n}\n\nexport interface OptionRemoveGroup {\n type: 'OPTION_REMOVE_GROUP';\n quoteId: string;\n expiry: string;\n}\n\nexport function optionRemoveGroup(quoteId: string, expiry: string): OptionRemoveGroup {\n return {\n type: 'OPTION_REMOVE_GROUP',\n quoteId,\n expiry,\n };\n}\n\nexport interface OptionMassExpand {\n type: 'OPTION_MASS_EXPAND';\n quoteId: string;\n expiries: readonly string[];\n}\n\nexport function optionMassExpand(quoteId: string, expiries: readonly string[]): OptionMassExpand {\n return {\n type: 'OPTION_MASS_EXPAND',\n quoteId,\n expiries,\n };\n}\n\ntype Orientation = 'horizontal' | 'vertical';\n\nexport interface OptionOrientationToggled {\n type: 'OPTION_ORIENTATION_TOGGLED';\n tileId: string;\n orientation: Orientation;\n}\n\nexport function optionOrientationToggled(tileId: string, orientation: Orientation): OptionOrientationToggled {\n return { type: 'OPTION_ORIENTATION_TOGGLED', tileId, orientation };\n}\n","import type { Way } from '../../share/productModel/litterals';\nimport type { LegType } from '../model/optionsLegs';\n\nexport interface OptionSolvingRequested {\n type: 'OPTION_SOLVING_REQUESTED';\n quoteId: string;\n}\n\nexport function optionSolvingRequested(quoteId: string): OptionSolvingRequested {\n return {\n type: 'OPTION_SOLVING_REQUESTED',\n quoteId,\n };\n}\n\nexport interface ToggleSolveStrikeModal {\n type: 'TOGGLE_SOLVE_STRIKE_MODAL';\n display: boolean;\n quoteId: string;\n}\n\nexport function toggleSolveStrikeModal(quoteId: string, display: boolean): ToggleSolveStrikeModal {\n return {\n type: 'TOGGLE_SOLVE_STRIKE_MODAL',\n display,\n quoteId,\n };\n}\n\nexport interface OptionSolvingWanted {\n type: 'OPTION_SOLVING_WANTED';\n quoteId: string;\n legId: string;\n field: 'strike';\n}\n\nexport function optionSolvingWanted(\n quoteId: string,\n legId: string,\n field: 'strike',\n): OptionSolvingWanted {\n return {\n type: 'OPTION_SOLVING_WANTED',\n quoteId,\n legId,\n field,\n };\n}\n\nexport interface OptionSolvingStarted {\n type: 'OPTION_SOLVING_STARTED';\n quoteId: string;\n productName: LegType;\n premiumWay: Way;\n premiumAmount: string;\n isCompactView: boolean;\n hasMultilegDifferentLegSide: boolean;\n callSide?: 'Buy' | 'Sell';\n}\n\nexport function optionSolvingStarted(\n quoteId: string,\n productName: LegType,\n premiumWay: Way,\n premiumAmount: string,\n isCompactView: boolean,\n hasMultilegDifferentLegSide: boolean,\n callSide?: 'Buy' | 'Sell',\n): OptionSolvingStarted {\n return {\n type: 'OPTION_SOLVING_STARTED',\n quoteId,\n productName,\n premiumWay,\n premiumAmount,\n isCompactView,\n hasMultilegDifferentLegSide,\n callSide,\n };\n}\n\nexport interface OptionStrikeSolved {\n type: 'OPTION_STRIKE_SOLVED';\n optionId: string;\n strikes: ReadonlyArray<[legId: string, strike: string | null]>;\n}\n\nexport function optionStrikeSolved(\n optionId: string,\n strikes: ReadonlyArray<[string, string | null]>,\n): OptionStrikeSolved {\n return {\n type: 'OPTION_STRIKE_SOLVED',\n optionId,\n strikes,\n };\n}\n","import type { IStreamError } from '../../globalError/globalErrorModel';\nimport type { QuoteContributionType } from '../../share/productModel/litterals';\nimport type { IHedge, IQuote } from '../model/optionsStreams';\n\nexport interface OptionStreamRequested {\n type: 'OPTION_STREAM_REQUESTED';\n optionId: string;\n forceTradable: boolean;\n bypassCheck: boolean;\n}\n\nexport function optionStreamRequested(\n optionId: string,\n forceTradable: boolean,\n bypassCheck: boolean,\n): OptionStreamRequested {\n return {\n type: 'OPTION_STREAM_REQUESTED',\n optionId,\n forceTradable,\n bypassCheck,\n };\n}\n\nexport interface OptionStreamStarted {\n type: 'OPTION_STREAM_STARTED';\n optionId: string;\n streamId: string;\n rfsStartedAt: Date;\n forceTradeable: boolean;\n}\n\nexport function optionStreamStarted(\n optionId: string,\n streamId: string,\n rfsStartedAt: Date,\n forceTradeable: boolean,\n): OptionStreamStarted {\n return {\n type: 'OPTION_STREAM_STARTED',\n optionId,\n streamId,\n rfsStartedAt,\n forceTradeable,\n };\n}\n\nexport interface OptionStreamCanceled {\n type: 'OPTION_STREAM_CANCELED';\n optionId: string;\n streamId: string;\n shouldKeepAsExpired: boolean;\n}\n\nexport function optionStreamCanceled(\n optionId: string,\n streamId: string,\n shouldKeepAsExpired: boolean,\n): OptionStreamCanceled {\n return {\n type: 'OPTION_STREAM_CANCELED',\n optionId,\n streamId,\n shouldKeepAsExpired,\n };\n}\n\nexport interface OptionStreamUpdated {\n type: 'OPTION_STREAM_UPDATED';\n optionId: string;\n streamId: string;\n}\n\nexport function optionStreamUpdated(optionId: string, streamId: string): OptionStreamUpdated {\n return {\n type: 'OPTION_STREAM_UPDATED',\n optionId,\n streamId,\n };\n}\n\nexport interface OptionStreamInvalidated {\n type: 'OPTION_STREAM_INVALIDATED';\n optionId: string;\n streamId: string;\n}\n\nexport function optionStreamInvalidated(\n optionId: string,\n streamId: string,\n): OptionStreamInvalidated {\n return {\n type: 'OPTION_STREAM_INVALIDATED',\n optionId,\n streamId,\n };\n}\n\nexport interface OptionStreamLastRemoved {\n type: 'OPTION_STREAM_LAST_REMOVED';\n optionId: string;\n streamId: string;\n}\n\nexport function optionStreamLastRemoved(\n optionId: string,\n streamId: string,\n): OptionStreamLastRemoved {\n return {\n type: 'OPTION_STREAM_LAST_REMOVED',\n optionId,\n streamId,\n };\n}\n\nexport interface OptionStreamCanceledSent {\n type: 'OPTION_STREAM_CANCELED_SENT';\n quoteId: string;\n streamId: string;\n}\n\nexport function optionStreamCanceledSent(\n quoteId: string,\n streamId: string,\n): OptionStreamCanceledSent {\n return {\n type: 'OPTION_STREAM_CANCELED_SENT',\n quoteId,\n streamId,\n };\n}\n\nexport interface OptionStreamCancelFailed {\n type: 'OPTION_STREAM_CANCEL_FAILED';\n optionId: string;\n streamId: string;\n}\n\nexport function optionStreamCancelFailed(\n optionId: string,\n streamId: string,\n): OptionStreamCancelFailed {\n return {\n type: 'OPTION_STREAM_CANCEL_FAILED',\n optionId,\n streamId,\n };\n}\n\nexport interface OptionStreamUpdateFailed {\n type: 'OPTION_STREAM_UPDATE_FAILED';\n optionId: string;\n streamId: string;\n}\n\nexport function optionStreamUpdateFailed(\n optionId: string,\n streamId: string,\n): OptionStreamUpdateFailed {\n return {\n type: 'OPTION_STREAM_UPDATE_FAILED',\n optionId,\n streamId,\n };\n}\n\nexport interface OptionStreamFailed {\n type: 'OPTION_STREAM_FAILED';\n optionId: string;\n streamId: string;\n error: IStreamError;\n}\n\nexport function optionStreamFailed(\n optionId: string,\n streamId: string,\n error: IStreamError,\n): OptionStreamFailed {\n return {\n type: 'OPTION_STREAM_FAILED',\n optionId,\n streamId,\n error,\n };\n}\n\nexport interface OptionStreamTerminated {\n type: 'OPTION_STREAM_TERMINATED';\n optionId: string;\n streamId: string;\n shouldKeepAsExpired: boolean;\n}\n\nexport function optionStreamTerminated(\n optionId: string,\n streamId: string,\n shouldKeepAsExpired: boolean,\n): OptionStreamTerminated {\n return {\n type: 'OPTION_STREAM_TERMINATED',\n optionId,\n streamId,\n shouldKeepAsExpired,\n };\n}\n\nexport interface OptionRfsClearError {\n type: 'OPTION_RFS_CLEAR_ERROR';\n quoteId: string;\n}\n\nexport function optionRfsClearError(quoteId: string): OptionRfsClearError {\n return { type: 'OPTION_RFS_CLEAR_ERROR', quoteId };\n}\n\nexport interface OptionTraderNotificationReceived {\n type: 'OPTION_TRADER_NOTIFICATION_RECEIVED';\n optionId: string;\n streamId: string;\n traderId: string | null;\n quoteContribution: QuoteContributionType | null;\n}\n\nexport function optionTraderNotificationReceived(\n optionId: string,\n streamId: string,\n traderId: string | null,\n quoteContribution: QuoteContributionType | null,\n): OptionTraderNotificationReceived {\n return {\n type: 'OPTION_TRADER_NOTIFICATION_RECEIVED',\n optionId,\n streamId,\n traderId,\n quoteContribution,\n };\n}\n\nexport interface OptionQuoteReceived {\n type: 'OPTION_QUOTE_RECEIVED';\n optionId: string;\n streamId: string;\n quote: IQuote;\n tiering: string | null;\n skippedLimitCheck: boolean;\n quoteContribution: QuoteContributionType | null;\n}\n\nexport function optionQuoteReceived(\n optionId: string,\n streamId: string,\n quote: IQuote,\n tiering: string | null,\n skippedLimitCheck: boolean,\n quoteContribution: QuoteContributionType | null,\n): OptionQuoteReceived {\n return {\n type: 'OPTION_QUOTE_RECEIVED',\n optionId,\n streamId,\n quote,\n tiering,\n skippedLimitCheck,\n quoteContribution,\n };\n}\n","export interface OptionStrippingOpened {\n type: 'OPTION_STRIPPING_OPENED';\n quoteId: string;\n}\n\nexport function optionStrippingOpened(quoteId: string): OptionStrippingOpened {\n return {\n type: 'OPTION_STRIPPING_OPENED',\n quoteId,\n };\n}\n\nexport interface OptionStrippingClosed {\n type: 'OPTION_STRIPPING_CLOSED';\n quoteId: string;\n}\n\nexport function optionStrippingClosed(quoteId: string): OptionStrippingClosed {\n return {\n type: 'OPTION_STRIPPING_CLOSED',\n quoteId,\n };\n}\n\nexport interface OptionStrippingRequested {\n type: 'OPTION_STRIPPING_REQUESTED';\n quoteId: string;\n frequency: 'Daily' | 'Weekly' | 'Monthly';\n startDate: string;\n iterations: number | undefined;\n endDate: string | undefined;\n}\n\nexport function optionStrippingRequested(\n quoteId: string,\n frequency: 'Daily' | 'Weekly' | 'Monthly',\n startDate: string,\n iterations: number | undefined,\n endDate: string | undefined,\n): OptionStrippingRequested {\n return {\n type: 'OPTION_STRIPPING_REQUESTED',\n quoteId,\n frequency,\n startDate,\n iterations,\n endDate,\n };\n}\n\nexport interface OptionStrippingReceived {\n type: 'OPTION_STRIPPING_RECEIVED';\n quoteId: string;\n}\n\nexport function optionStrippingReceived(quoteId: string): OptionStrippingReceived {\n return {\n type: 'OPTION_STRIPPING_RECEIVED',\n quoteId,\n };\n}\n\nexport interface OptionStrippingFailed {\n type: 'OPTION_STRIPPING_FAILED';\n quoteId: string;\n error: string;\n}\n\nexport function optionStrippingFailed(quoteId: string, error: string): OptionStrippingFailed {\n return {\n type: 'OPTION_STRIPPING_FAILED',\n quoteId,\n error,\n };\n}\n","import type { Thunk } from 'state';\nimport type { QuoteContributionType } from 'state/share/productModel/litterals';\nimport type { IHedge, IQuote } from '../model/optionsStreams';\n\nexport function optionStreamRequestedThunk(\n optionId: string,\n forceTradable: boolean,\n bypassCheck: boolean,\n): Thunk {\n return (dispatch, _getState, { actionCreators: ac }) => {\n dispatch(ac.optionRfsCancelThunk(optionId));\n dispatch(ac.optionStreamRequested(optionId, forceTradable, bypassCheck));\n };\n}\n\nexport function optionStreamRefreshThunk(\n optionId: string,\n isReadyToPrice: boolean | null,\n isPriceObsolete: boolean,\n isProductObsolete: boolean,\n): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const state = getState();\n const currentStreamId = sl.getTileCurrentStreamId(state, optionId);\n\n if (currentStreamId !== null) {\n if (isReadyToPrice && !isPriceObsolete && !isProductObsolete) {\n // When TC replies ready to price but price/product aren't obsolete, we do nothing\n return;\n }\n if (isProductObsolete) {\n dispatch(ac.optionRfsCancelThunk(optionId, false));\n } else if (isPriceObsolete && isReadyToPrice) {\n dispatch(ac.optionStreamUpdated(optionId, currentStreamId));\n }\n }\n\n const isSolvable = sl.isOneLegSolvableInOption(state, optionId);\n const isSolvingPremium = sl.isAllLegsSolvingInOption(state, optionId, 'PremiumPaymentAmount');\n const isSolvingStrike = sl.isAllLegsSolvingInOption(state, optionId, 'Strike');\n\n const isObsolete = !isPriceObsolete || isProductObsolete;\n const isValidDate = sl.isValidDateOptionInAllLegs(state, optionId);\n\n if (isReadyToPrice && isSolvable && isSolvingPremium && isObsolete && isValidDate) {\n dispatch(ac.optionStreamRequested(optionId, false, false));\n }\n if (isReadyToPrice && isSolvable && isSolvingStrike) {\n dispatch(ac.optionSolvingRequested(optionId));\n }\n };\n}\n\nexport function optionRfsCancelThunk(optionId: string, forceKeepExpired?: false): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const currentStreamId = sl.getTileCurrentStreamId(state, optionId);\n if (currentStreamId !== null) {\n const shouldKeepPrice =\n forceKeepExpired !== undefined\n ? forceKeepExpired\n : sl.getOptionStreamStatus(state, currentStreamId) === 'PRICING';\n\n dispatch(ac.optionStreamCanceled(optionId, currentStreamId, shouldKeepPrice));\n }\n dispatch(ac.optionRfsClearError(optionId));\n };\n}\n\nexport function optionQuoteReceivedThunk(\n optionId: string,\n streamId: string,\n quote: IQuote,\n tiering: string | null,\n bypassCheck: boolean,\n quoteContribution: QuoteContributionType | null,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n if (!sl.isQuotePresentWithInstrument(state, optionId, 'Option')) {\n return;\n }\n const lastStreamId = sl.getOptionLastStreamId(state, optionId);\n if (lastStreamId !== null) {\n dispatch(ac.optionStreamLastRemoved(optionId, lastStreamId));\n }\n dispatch(\n ac.optionQuoteReceived(optionId, streamId, quote, tiering, bypassCheck, quoteContribution),\n );\n };\n}\n\nexport function optionTraderNotificationReceivedThunk(\n optionId: string,\n streamId: string,\n traderId: string | null,\n quoteContribution: QuoteContributionType | null,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n if (!sl.isQuotePresentWithInstrument(state, optionId, 'Option')) {\n return;\n }\n const lastStreamId = sl.getOptionLastStreamId(state, optionId);\n if (lastStreamId !== null) {\n dispatch(ac.optionStreamLastRemoved(optionId, lastStreamId));\n }\n dispatch(ac.optionTraderNotificationReceived(optionId, streamId, traderId, quoteContribution));\n };\n}\n","import type { Thunk } from 'state';\n\nexport function optionTileClosed(optionId: string, automatically = false): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const state = getState();\n\n if (!sl.isTilePresent(state, optionId)) {\n return;\n }\n\n const tabId = sl.getClientWorkspaceIdByQuoteId(state, optionId);\n\n dispatch(ac.optionRfsCancelThunk(optionId));\n\n const lastStreamId = sl.getOptionLastStreamId(state, optionId);\n\n if (lastStreamId !== null) {\n dispatch(ac.optionStreamLastRemoved(optionId, lastStreamId));\n }\n\n dispatch(ac.espTileStreamUnsubscribeThunk(optionId));\n dispatch(ac.clientWorkspaceTileDeleted(optionId, tabId, automatically));\n };\n}\n\nexport function optionTileStateCleaned(optionId: string): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n dispatch(ac.optionRfsCancelThunk(optionId));\n\n const lastStreamId = sl.getOptionLastStreamId(getState(), optionId);\n\n if (lastStreamId !== null) {\n dispatch(ac.optionStreamLastRemoved(optionId, lastStreamId));\n }\n\n dispatch(ac.espTileStreamUnsubscribeThunk(optionId));\n };\n}\n\nexport function optionClientChangedThunk(optionId: string, clientId: string): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const companyId = sl.getCompanyIdFromClientId(getState(), clientId);\n\n dispatch(ac.espStreamRestartThunk(optionId, undefined, undefined, companyId));\n dispatch(ac.optionRfsCancelThunk(optionId));\n\n const lastStreamId = sl.getOptionLastStreamId(getState(), optionId);\n\n if (lastStreamId !== null) {\n dispatch(ac.optionStreamLastRemoved(optionId, lastStreamId));\n }\n };\n}\n\nexport function optionToggleStrategyThunk(quoteId: string, isStrategy: boolean): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const state = getState();\n\n const [firstLegId] = sl.getFxOptionMultilegOfOption(state, quoteId).legIds;\n const firstLeg = sl.getOptionLeg(state, firstLegId);\n\n const legId = firstLeg.productName === 'Vanilla' ? firstLegId : firstLeg.legIds[0];\n\n const isBuy = sl.getOptionVanillaLegSide(state, legId).value === 'Buy';\n\n if (!isStrategy && !isBuy) {\n dispatch(\n ac.optionLegPropertyChanged(quoteId, legId, {\n side: 'Buy',\n }),\n );\n }\n\n dispatch(ac.optionToggleStrategy(quoteId, isStrategy));\n };\n}\n\nexport function optionUseDefaultThunk(quoteId: string, currencyPair: string): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const defaultPriceType = sl.getDefaultPriceType(getState());\n const defaultHedgeType = sl.getDefaultHedgeType(getState());\n\n dispatch(\n ac.optionPropertyChanged(quoteId, {\n hedgeType: defaultHedgeType,\n currencyPair,\n legs: {\n [`${quoteId}/0/0`]: {\n premiumCurrency: 1,\n premiumTypeString: defaultPriceType,\n },\n },\n }),\n );\n };\n}\n","import type { Thunk } from 'state';\nimport type { Way } from 'state/share/productModel/litterals';\n\nexport function optionExecutionRequestedThunk(optionId: string, way: Way): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const canTrade = sl.userCanTrade(state) && sl.isStreamingConnected(state);\n\n if (canTrade !== true) {\n return;\n }\n\n const currentStreamId = sl.getOptionRfsStreamId(state, optionId);\n\n if (currentStreamId === null) {\n return;\n }\n\n const streamState = sl.getOptionStreamState(state, currentStreamId);\n\n if (streamState.status !== 'PRICING' || streamState.quote.quoteType !== 'Tradeable') {\n return;\n }\n\n dispatch(ac.optionExecutionRequested(optionId, currentStreamId, way));\n };\n}\n","import type { Thunk } from 'state';\nimport type { PriceType } from 'state/fxOptions/fxOptionsModel';\nimport type { CurrencyChoice } from 'state/share/productModel/litterals';\n\nfunction shouldResetPremium(currentPriceType: PriceType, newPriceType: PriceType) {\n return (\n newPriceType === 'PERCENT' ||\n newPriceType === 'PPS' ||\n currentPriceType === 'PERCENT' ||\n currentPriceType === 'PPS'\n );\n}\n\nexport function optionPriceTypeChangedThunk(\n optionId: string,\n newPriceType: PriceType,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const [ccy, currentPriceType] = sl.getOptionDisplayPriceType(state, optionId);\n\n dispatch(\n ac.optionLegsGlobalPropertyChangeThunk(optionId, {\n premiumTypeString: newPriceType,\n premiumCurrency: ccy,\n ...(shouldResetPremium(currentPriceType, newPriceType)\n ? { premiumBid: null, premiumAsk: null }\n : {}),\n }),\n );\n dispatch(ac.optionDisplayPriceTypeChanged(optionId, [ccy, newPriceType]));\n };\n}\n\nexport function optionPriceTypeCurrencyChangedThunk(optionId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const [ccy, priceType] = sl.getOptionDisplayPriceType(state, optionId);\n const newCcy: CurrencyChoice = ccy === 1 ? 2 : 1;\n\n dispatch(\n ac.optionLegsGlobalPropertyChangeThunk(optionId, {\n premiumTypeString: priceType,\n premiumCurrency: newCcy,\n // Reset override\n premiumBid: null,\n premiumAsk: null,\n }),\n );\n dispatch(ac.optionDisplayPriceTypeChanged(optionId, [newCcy, priceType]));\n };\n}\n","import type { PriceType } from '../fxOptionsModel';\nimport { tenPower, roundToPrecision } from 'utils/number';\nimport { identity } from '@sgme/fp';\n\n// main computations\nexport const decimalToPercent = (decimal: number) =>\n Number((decimal * 100).toFixed(priceTypePrecision.PERCENT));\nexport const decimalToPps = (precision: number) => (decimal: number) =>\n Number((decimal * tenPower(precision)).toFixed(priceTypePrecision.PPS));\n\n// reverse (from user input)\nexport const percentToDecimal = (percent: number) => Number(divider(percent, 100).toFixed(10));\nexport const ppsToDecimal = (precision: number) => (pps: number) =>\n Number(divider(pps, tenPower(precision)).toFixed(10));\n\nconst premiumDisplayMappers: Record (decimal: number) => number> =\n {\n AMOUNT: () => identity,\n VOLATILITY: () => identity,\n PERCENT: () => decimalToPercent,\n PPS: decimalToPps,\n };\n\nexport const makeTransformPremiumForDisplay = (premiumType: PriceType, precision: number) =>\n premiumDisplayMappers[premiumType](precision);\n\nconst premiumInputMappers: Record (decimal: number) => number> = {\n AMOUNT: () => identity,\n VOLATILITY: () => identity,\n PERCENT: () => percentToDecimal,\n PPS: ppsToDecimal,\n};\n\nexport const makeTransformPremiumInput = (premiumType: PriceType, precision: number) =>\n premiumInputMappers[premiumType](precision);\n\nconst dividerWithPrecision = (precision: number) => {\n const factor = tenPower(precision);\n return (dividend: number, divisor: number) =>\n (roundToPrecision(dividend, precision) * factor) / divisor / factor;\n};\n\nconst divider = dividerWithPrecision(4);\n\nexport const priceTypePrecision: Record = {\n AMOUNT: 2,\n VOLATILITY: 2,\n PERCENT: 4,\n PPS: 4,\n};\n","import type { Thunk } from 'state';\n\nimport { fieldData } from 'utils/fieldSelectors';\nimport { makeTransformPremiumInput } from '../selectors/optionPremium';\nimport { assertIsDefined, isDefined, isEmpty } from '@sgme/fp';\nimport { transformStringNum } from 'utils/number';\nimport type { FxOptionPatchWithTradeCaptureMetaData } from '../actions/optionProduct';\nimport type { FxOptionLegInputs, IFxOptionTypedStrategyLegInputs } from '../model/optionsLegs';\n\nexport function optionPropertiesReceivedThunk(\n optionId: string,\n optionPatch: FxOptionPatchWithTradeCaptureMetaData,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n\n if (!sl.isQuotePresentWithInstrument(state, optionId, 'Option')) {\n return;\n }\n\n const optionPatchValues = optionPatch.option[optionId];\n\n const { idVersion, isReadyToPrice, isPriceObsolete, isProductObsolete, displayPriceType } =\n optionPatchValues;\n\n // If we have an expired stream and the price is obsolete, we clear it because the price needs to be updated after the properties change\n const lastStreamId = sl.getOptionLastStreamId(state, optionId);\n if (lastStreamId !== null && isPriceObsolete) {\n dispatch(ac.optionStreamLastRemoved(optionId, lastStreamId));\n }\n\n dispatch(\n ac.optionPropertiesReceived(\n optionId,\n optionPatch.legs,\n optionPatch.hedges,\n optionPatchValues,\n idVersion,\n isReadyToPrice,\n isPriceObsolete,\n isProductObsolete,\n displayPriceType,\n ),\n );\n\n const newState = getState();\n\n const firstLeg = sl.getFirstLegOfMultilegOfOption(newState, optionId);\n const vanillaLegIds = sl.getAllVanillaLegIdsOfOption(newState, optionId);\n\n const hasSolvableLeg = vanillaLegIds.some(\n vanillaLegId =>\n isDefined(sl.getOptionVanillaLegNotional(newState, vanillaLegId).value) &&\n isDefined(sl.getOptionVanillaLegExpiry(newState, vanillaLegId).value) &&\n sl.getOptionVanillaLegSolvingFor(newState, vanillaLegId) === 'Strike',\n );\n\n const optionIsSolvable =\n hasSolvableLeg &&\n vanillaLegIds.every(\n vanillaLegId =>\n (isDefined(sl.getOptionVanillaLegNotional(newState, vanillaLegId).value) &&\n isDefined(sl.getOptionVanillaLegExpiry(newState, vanillaLegId).value) &&\n isDefined(sl.getOptionVanillaLegStrike(newState, vanillaLegId).value)) ||\n sl.getOptionVanillaLegSolvingFor(newState, vanillaLegId) === 'Strike',\n );\n\n // Use for solving on Strangle SGEFX-4238\n const productName = firstLeg.productName;\n\n const allLegsHaveStrike = sl.isAllLegsSolvingInOption(newState, optionId, 'Strike');\n\n const canSolveStrangle =\n productName === 'Strangle' && allLegsHaveStrike;\n\n const canSolveRiskReversal =\n productName === 'RiskReversal' && allLegsHaveStrike;\n\n const isSolvingStrikeModalOpened =\n (canSolveStrangle || productName === 'Vanilla' || canSolveRiskReversal) &&\n optionIsSolvable &&\n sl.getOptionDisplaySolveStrike(newState, optionId) === false;\n\n if (isSolvingStrikeModalOpened) {\n dispatch(ac.toggleSolveStrikeModal(optionId, true));\n }\n\n const currencyPair = optionPatchValues.values.currencyPair;\n\n if (\n currencyPair !== undefined &&\n currencyPair !== sl.getOptionCurrencyPair(state, optionId).value\n ) {\n dispatch(ac.espStreamRestartThunk(optionId, currencyPair, undefined, undefined));\n }\n };\n}\n\n/**\n * to avoid accessing state in patch to trade capture conversion\n * this thunk implement a hack that lived in the component\n * @todo delete this thunk and allow patch mapper to access both\n * inputs (patch) and values (last TC state)\n * ie : execute selectors and aggregate data in TC request epic\n */\nexport function optionLegNotionalAmountChangedThunk(\n optionId: string,\n legId: string,\n notionalAmount: string,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n\n const notionalCurrency = sl.getOptionVanillaLegNotionalCurrency(state, legId).value;\n dispatch(\n ac.optionLegPropertyChanged(optionId, legId, {\n notionalCurrency,\n notionalAmount,\n }),\n );\n };\n}\n\n/** @todo check this thunk when enabling typed strategies in table view */\nexport function optionLegCurrencyChangedThunk(optionId: string, legId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n\n const legsCurrencyLinked = sl.getOptionLegsCurrencyLinked(state, optionId);\n const allVanillaLegIds = legsCurrencyLinked\n ? sl.getAllVanillaLegIdsOfOption(state, optionId)\n : [legId];\n\n const { data: oldCurrency } = fieldData(sl.getOptionVanillaLegNotionalCurrency(state, legId));\n const notionalCurrency = oldCurrency === 1 ? 2 : 1;\n\n const { localCurrencyChangeLegIds, legsPatch } = allVanillaLegIds.reduce(\n (acc, vanillaLegId) => {\n const { data: notionalAmount } = fieldData(\n sl.getOptionVanillaLegNotional(state, vanillaLegId),\n );\n\n if (isDefined(notionalAmount)) {\n acc.legsPatch[vanillaLegId] = {\n notionalAmount: notionalAmount.toString(),\n notionalCurrency,\n };\n } else {\n acc.localCurrencyChangeLegIds.push(vanillaLegId);\n }\n\n return acc;\n },\n {\n localCurrencyChangeLegIds: [] as string[],\n legsPatch: {} as Record>,\n },\n );\n\n if (!isEmpty(localCurrencyChangeLegIds)) {\n dispatch(\n ac.optionNotionalCurrencyChanged(optionId, localCurrencyChangeLegIds, notionalCurrency),\n );\n }\n\n if (Object.keys(legsPatch).length > 0) {\n dispatch(ac.optionLegsPropertyChanged(optionId, legsPatch));\n }\n\n // @TODO demander à Sylvain pourquoi c'est sur la premiere\n if (sl.getUserOptionAlignCurrencies(state) && allVanillaLegIds.length === 1) {\n const firstLegId = allVanillaLegIds[0];\n const premiumTypeString = sl.getOptionVanillaLegPremiumTypeString(state, firstLegId).value;\n dispatch(\n ac.optionLegsPropertyChanged(optionId, {\n [firstLegId]: { premiumCurrency: notionalCurrency, premiumTypeString },\n }),\n );\n }\n };\n}\n\nexport function optionLegsWayToggledThunk(optionId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const allVanillaLegsWithId = sl.getAllVanillaLegsOfOptionWithId(state, optionId);\n\n const patchLegs = allVanillaLegsWithId.reduce((acc, [legId, vanillaLeg]) => {\n acc[legId] = {\n side: vanillaLeg.values.side === 'Buy' ? 'Sell' : 'Buy',\n };\n return acc;\n }, {} as Record>);\n\n if (Object.keys(patchLegs).length > 0) {\n dispatch(ac.optionLegsPropertyChanged(optionId, patchLegs));\n }\n };\n}\n\nexport function optionLegsGlobalPropertyChangeThunk(\n optionId: string,\n patch: Partial,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const vanillaLegIds = sl.getAllVanillaLegIdsOfOption(state, optionId);\n\n const patchLegs: Record> = {};\n\n vanillaLegIds.forEach(legId => {\n patchLegs[legId] = patch;\n });\n\n if (Object.keys(patchLegs).length > 0) {\n dispatch(ac.optionLegsPropertyChanged(optionId, patchLegs));\n }\n };\n}\n\nexport function optionLegPremiumChangedThunk(\n optionId: string,\n legId: string,\n premiumInputBid: string | null,\n premiumInputAsk: string | null,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const [, priceType] = sl.getOptionDisplayPriceType(state, optionId);\n\n const ccyPair = sl.getOptionCurrencyPair(state, optionId).value;\n assertIsDefined(ccyPair, 'Ccy pair not found to get precision');\n\n const precision = sl.getCurrencyPrecisionForPps(state, ccyPair);\n const mapPremium = makeTransformPremiumInput(priceType, precision);\n\n dispatch(\n ac.optionLegPropertyChanged(optionId, legId, {\n premiumBid: transformStringNum(mapPremium)(premiumInputBid),\n premiumAsk: transformStringNum(mapPremium)(premiumInputAsk),\n }),\n );\n };\n}\n\nexport function optionDuplicateLegThunk(quoteId: string, legId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const [ccyChoice, priceType] = sl.getOptionDisplayPriceType(state, quoteId);\n\n if (priceType === 'VOLATILITY') {\n dispatch(ac.optionDisplayPriceTypeChanged(quoteId, [ccyChoice, 'AMOUNT']));\n }\n dispatch(ac.optionLegDuplicated(quoteId, legId));\n };\n}\n\nexport function optionLegAddedThunk(quoteId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const [ccyChoice, priceType] = sl.getOptionDisplayPriceType(state, quoteId);\n if (priceType === 'VOLATILITY' && sl.getLegIdsOfMultilegOfOption(state, quoteId).length === 1) {\n dispatch(ac.optionDisplayPriceTypeChanged(quoteId, [ccyChoice, 'AMOUNT']));\n }\n dispatch(ac.optionLegAdded(quoteId));\n };\n}\n\nexport function optionRemoveLegOrSwitchToSimpleThunk(optionId: string, legId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const allVanillaLegs = sl.getAllVanillaLegsOfOption(state, optionId);\n if (allVanillaLegs.length > 1) {\n dispatch(ac.optionLegRemoved(optionId, legId));\n } else {\n dispatch(ac.optionToggleStrategyThunk(optionId, false));\n }\n };\n}\n","export type CurrencyChoice = typeof FIRST_CURRENCY | typeof SECOND_CURRENCY;\nexport const FIRST_CURRENCY = 1;\nexport const SECOND_CURRENCY = 2;\n\nexport type BidAskKeys = 'bid' | 'ask';\nexport type Way = 'Bid' | 'Ask';\nexport type LegSide = 'Buy' | 'Sell';\nexport type Side = LegSide | 'Both';\nexport type StrategyTypeName = 'Vanilla' | 'Multileg' | 'Straddle' | 'Strangle' | 'RiskReversal';\n\nexport const hedgeTypes = ['Live', 'Spot', 'Forward'] as const;\nexport type HedgeType = (typeof hedgeTypes)[number];\nexport type HedgeWay = 'WayUnknown' | 'Sell' | 'Buy';\nexport const settlementModes = ['Cash', 'Physical_Spot', 'Physical_Forward'] as const;\nexport type SettlementMode = (typeof settlementModes)[number];\nexport const quoteContributionTypes = ['Automatic', 'Manual'] as const;\nexport type QuoteContributionType = (typeof quoteContributionTypes)[number];\n\nexport interface Possible {\n default: T;\n possible: readonly T[];\n}\n\nexport type BidAsk = Record;\n\nexport interface ICcyPair {\n ccy1: T;\n ccy2: T;\n}\n\nexport type BidAskPair = BidAsk;\n\ninterface IStreamingBidAskPair {\n Bid: T;\n Ask: T;\n}\n\nexport type StreamingBidAskPair = IStreamingBidAskPair;\n\nexport interface PropertyError {\n code: string;\n description?: string;\n faultyValue?: T | string;\n userNotified: boolean;\n}\n\nexport type PropertyErrors = {\n readonly [P in keyof T]?: Readonly>;\n};\n\nexport interface PropertyWarning {\n code: string;\n description?: string;\n faultyValue?: T | string;\n userNotified: boolean;\n}\n\nexport type PropertyWarnings = {\n readonly [P in keyof T]?: Readonly>;\n};\n","import type { Thunk } from 'state';\nimport { validInputsInFine } from 'state/fxOptions/fxOptionsModel';\nimport { isDefined, isDefinedAndNonEmpty } from '@sgme/fp';\nimport { FIRST_CURRENCY, SECOND_CURRENCY } from '../../share/productModel/litterals';\nimport { getFieldContent } from 'utils/fieldSelectors';\n\nexport function optionTilePremiumDateChangedThunk(\n optionId: string,\n premiumDate: string,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const isStrategy = sl.getOptionIsStrategy(getState(), optionId);\n const patch =\n !isStrategy && validInputsInFine.includes(premiumDate.trim().toLocaleLowerCase())\n ? { isInFine: true }\n : { premiumDate };\n dispatch(ac.optionPropertyChanged(optionId, patch));\n };\n}\n\nexport function optionTilePremiumDateTenorChangedThunk(\n optionId: string,\n premiumDateTenor: string,\n): Thunk {\n return (dispatch, _getState, { actionCreators: ac }) => {\n dispatch(\n ac.optionPropertyChanged(\n optionId,\n premiumDateTenor === 'in fine' ? { isInFine: true } : { premiumDateTenor },\n ),\n );\n };\n}\n\nexport function optionHedgeNotionalChangedThunk(hedgeId: string, hedgeAmount: string): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const state = getState();\n\n const hedgeCurrency =\n getFieldContent(sl.getOptionHedgeCurrency(state, hedgeId)) ?? FIRST_CURRENCY;\n\n dispatch(\n ac.optionHedgePropertyChanged(hedgeId, {\n amount: hedgeAmount,\n currency: hedgeCurrency,\n }),\n );\n };\n}\n\nexport function optionHedgeNotionalCurrencyChangedThunk(\n optionId: string,\n hedgeId: string,\n hedgeAmount: string,\n): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const state = getState();\n\n const amount = isDefinedAndNonEmpty(hedgeAmount)\n ? hedgeAmount\n : getFieldContent(sl.getOptionHedgeAmount(state, hedgeId));\n\n const oldCcy = getFieldContent(sl.getOptionHedgeCurrency(state, hedgeId));\n const newCcy = oldCcy === FIRST_CURRENCY ? SECOND_CURRENCY : FIRST_CURRENCY;\n\n if (amount === null) {\n dispatch(\n ac.optionHedgePropertyChanged(hedgeId, {\n currency: newCcy,\n }),\n );\n\n // If there is an active RFS, restart it or it will send hedge in wrong currency\n if (sl.getTileCurrentStreamId(state, optionId) !== null) {\n dispatch(ac.optionStreamRefreshThunk(optionId, true, true, true));\n }\n } else {\n dispatch(\n ac.optionHedgePropertyChanged(hedgeId, {\n amount: isDefined(amount) ? amount.toString() : null,\n currency: newCcy,\n }),\n );\n }\n };\n}\n","import type { Thunk } from 'state';\n\nexport function optionStreamCancelThunk(optionId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const { currentStreamId } = sl.getOptionState(state, optionId);\n const isPricing = sl.getOptionStreamStatus(state, currentStreamId) === 'PRICING';\n\n if (currentStreamId !== null) {\n dispatch(ac.optionStreamCanceled(optionId, currentStreamId, isPricing));\n }\n };\n}\n","import type { Thunk } from 'state';\nimport type { ImportedStrategyRow } from 'utils/csvParsing/strategy';\nimport { fieldData } from 'utils/fieldSelectors';\nimport type { IFxOptionInputs } from '../model/optionProduct';\nimport type { FxOptionLegInputs } from '../model/optionsLegs';\n\nexport function optionStrategyImportThunk(\n strategyId: string,\n importedStrategyRows: readonly ImportedStrategyRow[],\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const ccyPair = fieldData(sl.getOptionCurrencyPair(state, strategyId)).data!;\n const patch = mapStrategyImportToTradeCapturePatch(importedStrategyRows, ccyPair);\n const [n, priceType] = sl.getOptionDisplayPriceType(state, strategyId);\n\n if (priceType === 'VOLATILITY' && Object.keys(patch.legs ?? {}).length > 1) {\n dispatch(ac.optionDisplayPriceTypeChanged(strategyId, [n, 'AMOUNT']));\n }\n\n dispatch(ac.optionLegsImported(strategyId, patch));\n };\n}\n\nconst wayMap = {\n buy: 'Buy',\n sell: 'Sell',\n} as const;\n\nconst typeMap = {\n call: 'Call',\n put: 'Put',\n} as const;\n\nfunction mapStrategyImportToTradeCapturePatch(\n importedStrategyRow: readonly ImportedStrategyRow[],\n ccyPair: string,\n): Partial & {\n legs?: Record>;\n} {\n const legs = importedStrategyRow.reduce((acc, curr, index) => {\n acc[index] = {\n side: wayMap[curr.way],\n optionType: typeMap[curr.type],\n expiryDate: curr.expiryDate,\n strike: curr.strike,\n notionalAmount: curr.notional,\n notionalCurrency: ccyPair.indexOf(curr.notionalCcy) === 0 ? 1 : 2,\n deliveryDate:\n curr.deliveryDate === '' || curr.deliveryDate === null ? undefined : curr.deliveryDate,\n };\n return acc;\n }, {} as Record>);\n\n return { currencyPair: ccyPair, legs };\n}\n","import type { Thunk } from 'state';\nimport { assertUnreachable, isEmpty } from '@sgme/fp';\nimport { parse, format, isFuture } from 'date-fns';\nimport type { FxOptionLegInputs } from '../model/optionsLegs';\n\ninterface CellPosition {\n legIndex: number;\n propertyIndex: number;\n}\n\ninterface LegValue {\n position: CellPosition;\n value: string;\n}\n\nexport function optionPastedValuesThunk(\n quoteId: string,\n legValues: readonly LegValue[],\n): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n if (isEmpty(legValues)) {\n return;\n }\n\n dispatch(ac.optionCopyPasted()); // used only for matomo\n\n const toProperty = (line: number) =>\n line === 0 ? 'expiryDate' : line === 1 ? 'strike' : 'notionalAmount';\n const state = getState();\n const legIds = sl.getLegIdsOfMultilegOfOption(state, quoteId);\n\n const patch = legValues.reduce((prev, { value, position: { legIndex, propertyIndex } }) => {\n const legId = legIds[legIndex];\n /** @todo paste needs to be fixed for typed strategies in table view */\n const propertyName = toProperty(propertyIndex);\n switch (propertyName) {\n case 'expiryDate':\n return {\n ...prev,\n [legId]: {\n ...prev[legId],\n expiryDate: pastedValueToDate(value),\n },\n };\n case 'strike':\n pastedValueToNumber(value);\n return {\n ...prev,\n [legId]: {\n ...prev[legId],\n strike: pastedValueToNumber(value),\n },\n };\n case 'notionalAmount':\n return {\n ...prev,\n [legId]: {\n ...prev[legId],\n notionalAmount: pastedValueToNumber(value),\n notionalCurrency: sl.getOptionVanillaLegNotionalCurrency(state, legId).value,\n },\n };\n default:\n assertUnreachable(propertyName, 'Unexpected column');\n }\n }, {} as Record>);\n\n dispatch(ac.optionLegsPropertyChanged(quoteId, patch));\n };\n}\n\n// Saparator is consider to be a decimal separator when it appears only once, one or two digits before the end,\nconst manageSeparator = (separator: string) => {\n const searchRegExp = new RegExp(separator === '.' ? '\\\\.' : separator, 'g');\n return (value: string) => {\n if (value.split(searchRegExp).length > 2) {\n return value.replace(searchRegExp, '');\n }\n const index = value.indexOf(separator);\n if (index === -1) {\n return value;\n } else if (index + 1 === value.length - 2) {\n return value.replace(searchRegExp, '.');\n } else if (index + 1 === value.length - 1) {\n return value.replace(searchRegExp, '.') + '0';\n } else {\n return value.replace(searchRegExp, '');\n }\n };\n};\n\nconst manageCommaSeparator = manageSeparator(',');\nconst managePointSeparator = manageSeparator('.');\n\nconst pastedValueToNumber = (pastedValue: string) =>\n [manageCommaSeparator, managePointSeparator].reduce(\n (acc, fct) => fct(acc),\n pastedValue.replace(/ /g, ''),\n );\n\nconst possibleFormats = [\n 'yyyy-MM-dd',\n 'yy-MM-dd',\n 'dd-MM-yyyy',\n 'dd-MM-yy',\n 'MM-dd-yyyy',\n 'MM-dd-yy',\n 'yyyy-dd-MM',\n 'yy-dd-MM',\n];\nconst pastedValueToDate = (pastedValue: string) => {\n const valueRef = pastedValue.replace(/\\//g, '-');\n const now = new Date();\n for (const possibleFormat of possibleFormats) {\n const parsedDate = parse(valueRef, possibleFormat, now);\n if (isFuture(parsedDate)) {\n return format(parsedDate, 'yyyy-MM-dd');\n }\n }\n return pastedValue;\n};\n","const collator = new Intl.Collator();\nexport const compareKey =\n (key: string) =>\n (a: T, b: T) =>\n collator.compare(a[key], b[key]);\n\nexport const isNotUnionLitteral =\n (enumType: readonly U[]) =>\n (value: T): value is Exclude =>\n !(enumType as readonly T[]).includes(value);\n\n/**\n * Gets the nearest neighbour from the array, next element if possible or previous if value is the last element.\n * Returns null if the array only has one element.\n */\nexport const getNearestNeighbour = (array: readonly T[], value: T): T | null => {\n if (array.length <= 1) {\n return null;\n }\n const positionOfValue = array.indexOf(value);\n if (positionOfValue === -1) {\n return null;\n }\n const lastPosition = array.length - 1;\n if (positionOfValue >= lastPosition) {\n return array[lastPosition - 1];\n } else {\n return array[positionOfValue + 1];\n }\n};\n\n/**\n * Predicate to filter out duplicate values from an array\n */\nexport const distinct = (value: T, index: number, array: readonly T[]): boolean =>\n array.indexOf(value) === index;\n\n/**\n * Check if _value_ is present in _array_ without having to resort to typecast _array_\n */\nexport const contains = (array: readonly T[], value: T) => array.includes(value);\n","import type { Thunk } from 'state';\nimport { distinct } from 'utils/array';\nimport { isDefined } from '@sgme/fp';\n\nexport function optionExpandAllThunk(quoteId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n\n // const expiries = sl\n // .getLegIdsOfMultilegOfOption(state, quoteId)\n // .map(legId => {\n // /** @todo expand all needs to be fixed for typed strategies in table view */\n // return sl.getOptionVanillaLegExpiry(state, legId).value;\n // })\n // .filter(isDefined)\n // .filter(distinct);\n\n // TODO: validate if it is OK for Vanilla of typed strategy\n const expiries = sl\n .getAllVanillaLegsOfOption(state, quoteId)\n .map(leg => leg.values.expiryDate)\n .filter(isDefined)\n .filter(distinct);\n\n dispatch(ac.optionMassExpand(quoteId, expiries));\n };\n}\n","import { assertUnreachable } from '@sgme/fp';\nimport type { Thunk } from 'state';\n\nexport function optionSubmitStrikeThunk(\n quoteId: string,\n legId: string,\n strike: string,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const productName = sl.getOptionLegProductName(state, legId);\n\n switch (productName) {\n case 'Vanilla':\n if (strike === '?') {\n dispatch(ac.optionSolvingWanted(quoteId, legId, 'strike'));\n } else {\n dispatch(ac.optionLegPropertyChanged(quoteId, legId, { strike }));\n }\n break;\n\n case 'Strangle':\n if (strike === '?') {\n dispatch(ac.optionSolvingWanted(quoteId, legId, 'strike'));\n } else {\n dispatch(ac.optionLegPropertyChanged(quoteId, legId, { strike }));\n }\n break;\n\n case 'Straddle':\n dispatch(ac.optionLegPropertyChanged(quoteId, legId, { strike }));\n break;\n\n case 'RiskReversal':\n if (strike === '?') {\n dispatch(ac.optionSolvingWanted(quoteId, legId, 'strike'));\n } else {\n dispatch(ac.optionLegPropertyChanged(quoteId, legId, { strike }));\n }\n break;\n\n case 'FxOptionMultileg':\n break;\n\n default:\n assertUnreachable(productName, 'New product name to handle');\n }\n };\n}\n","import type {\n FxCashPatch,\n IQuote,\n IFxCashInputs,\n IFxCashMetadata,\n IFxCashExecutionData,\n IFxCashValues,\n CashTileOpenFromBlotter,\n} from './fxCashsModel';\nimport type { Way, CurrencyChoice } from 'state/share/productModel/litterals';\nimport type { IStreamError } from 'state/globalError/globalErrorModel';\nimport type { IFxExecutionPendingState } from 'state/executions/executionsStateModel';\nimport type { CashSavedTile } from 'api/workspaceService/model';\nimport type { TradeCaptureError } from 'state/tile/fxTileModel';\nimport type { RestoredTiles } from 'state/clientWorkspace';\n\nexport type FxCashAction =\n | CashTileReset\n | CashTileRestoreEpic\n | CashTileOpenFromBlotterEpic\n | CashAmountCurrencyMaskChanged\n | CashPropertiesChanged\n | CashPropertiesRemoveError\n | CashPropertiesPristine\n | CashPropertiesDirty\n | CashPropertiesRequested\n | CashPropertiesReceived\n | CashPropertiesRequestFailed\n | CashRfsRequestedEpic\n | CashRfsStarted\n | CashRfsFailed\n | CashRfsTerminated\n | CashRfsCancelEpic\n | CashRfsCancel\n | CashRfsCancelSent\n | CashRfsCancelFailed\n | CashRfsClearError\n | CashQuoteReceived\n | CashRfsExecutionRequested\n | CashExecutionFailed\n | CashExecutionReceived\n | CashFillReportReceived\n | CashRfsExecutionSent\n | CashLocalPropertyChanged\n | CashEspExecutionSent\n | CashEspExecutionRequested\n | CashExecutionSentSucceeded;\n\nexport interface CashTileReset {\n type: 'CASH_TILE_RESET';\n quoteId: string;\n}\n\nexport function cashTileReset(quoteId: string): CashTileReset {\n return {\n type: 'CASH_TILE_RESET',\n quoteId,\n };\n}\n\nexport interface CashTileRestoreEpic {\n type: 'CASH_TILE_RESTORE_EPIC';\n tiles: RestoredTiles;\n}\n\nexport function cashTileRestoreEpic(tiles: RestoredTiles): CashTileRestoreEpic {\n return {\n type: 'CASH_TILE_RESTORE_EPIC',\n tiles,\n };\n}\n\nexport interface CashTileOpenFromBlotterEpic {\n type: 'CASH_TILE_OPEN_FROM_BLOTTER_EPIC';\n tileId: string;\n tile: CashTileOpenFromBlotter;\n}\n\nexport function cashTileOpenFromBlotterEpic(\n tileId: string,\n tile: CashTileOpenFromBlotter,\n): CashTileOpenFromBlotterEpic {\n return {\n type: 'CASH_TILE_OPEN_FROM_BLOTTER_EPIC',\n tileId,\n tile,\n };\n}\n\nexport interface CashPropertiesRequestFailed {\n type: 'CASH_PROPERTIES_REQUEST_FAILED';\n quoteId: string;\n error: TradeCaptureError;\n}\n\nexport function cashPropertiesRequestFailed(\n quoteId: string,\n error: TradeCaptureError,\n): CashPropertiesRequestFailed {\n return {\n type: 'CASH_PROPERTIES_REQUEST_FAILED',\n quoteId,\n error,\n };\n}\n\nexport interface CashLocalPropertyChanged {\n type: 'CASH_LOCAL_PROPERTY_CHANGED';\n tileId: string;\n patch: Partial;\n}\n\nexport function cashLocalPropertyChanged(\n tileId: string,\n patch: Partial,\n): CashLocalPropertyChanged {\n return {\n type: 'CASH_LOCAL_PROPERTY_CHANGED',\n tileId,\n patch,\n };\n}\n\nexport interface CashRfsExecutionRequested {\n type: 'CASH_RFS_EXECUTION_REQUESTED';\n cashId: string;\n streamId: string;\n way: Way;\n}\n\nexport function cashRfsExecutionRequested(\n cashId: string,\n streamId: string,\n way: Way,\n): CashRfsExecutionRequested {\n return {\n type: 'CASH_RFS_EXECUTION_REQUESTED',\n cashId,\n streamId,\n way,\n };\n}\n\nexport interface CashEspExecutionRequested {\n type: 'CASH_ESP_EXECUTION_REQUESTED';\n cashId: string;\n streamId: string;\n way: Way;\n precision: number;\n}\n\nexport function cashEspExecutionRequested(\n cashId: string,\n streamId: string,\n way: Way,\n precision: number,\n): CashEspExecutionRequested {\n return {\n type: 'CASH_ESP_EXECUTION_REQUESTED',\n cashId,\n streamId,\n way,\n precision,\n };\n}\n\nexport interface CashExecutionReceived {\n type: 'CASH_EXECUTION_RECEIVED';\n executionId: string;\n}\n\nexport function cashExecutionReceived(executionId: string): CashExecutionReceived {\n return {\n type: 'CASH_EXECUTION_RECEIVED',\n executionId,\n };\n}\n\nexport interface CashFillReportReceived {\n type: 'CASH_FILL_REPORT_RECEIVED';\n executionId: string;\n tradeIds: readonly string[];\n}\n\nexport function cashFillReportReceived(\n executionId: string,\n tradeIds: readonly string[],\n): CashFillReportReceived {\n return {\n type: 'CASH_FILL_REPORT_RECEIVED',\n executionId,\n tradeIds,\n };\n}\n\nexport interface CashExecutionFailed {\n type: 'CASH_EXECUTION_FAILED';\n streamError: IStreamError;\n executionId: string;\n}\n\nexport function cashExecutionFailed(\n executionId: string,\n streamError: IStreamError,\n): CashExecutionFailed {\n return {\n type: 'CASH_EXECUTION_FAILED',\n streamError,\n executionId,\n };\n}\n\nexport interface CashExecutionSentSucceeded {\n type: 'CASH_EXECUTION_SENT_SUCCEEDED';\n executionId: string;\n}\n\nexport function cashExecutionSentSucceeded(executionId: string): CashExecutionSentSucceeded {\n return {\n type: 'CASH_EXECUTION_SENT_SUCCEEDED',\n executionId,\n };\n}\n\nexport interface CashRfsExecutionSent {\n type: 'CASH_RFS_EXECUTION_SENT';\n cashId: string;\n quoteId: string;\n executionId: string;\n execution: IFxCashExecutionData & IFxExecutionPendingState;\n instrument: 'Cash';\n}\n\nexport function cashRfsExecutionSent(\n cashId: string,\n quoteId: string,\n executionId: string,\n execution: IFxCashExecutionData & IFxExecutionPendingState,\n): CashRfsExecutionSent {\n return {\n type: 'CASH_RFS_EXECUTION_SENT',\n cashId,\n quoteId,\n executionId,\n execution,\n instrument: 'Cash',\n };\n}\n\nexport interface CashEspExecutionSent {\n type: 'CASH_ESP_EXECUTION_SENT';\n cashId: string;\n /** This is the Multipass ESP quote identifier */\n quoteId: string;\n executionId: string;\n execution: IFxCashExecutionData & IFxExecutionPendingState;\n instrument: 'Cash';\n}\n\nexport function cashEspExecutionSent(\n cashId: string,\n quoteId: string,\n executionId: string,\n execution: IFxCashExecutionData & IFxExecutionPendingState,\n): CashEspExecutionSent {\n return {\n type: 'CASH_ESP_EXECUTION_SENT',\n cashId,\n quoteId,\n executionId,\n execution,\n instrument: 'Cash',\n };\n}\n\nexport interface CashPropertiesChanged {\n type: 'CASH_PROPERTIES_CHANGED';\n cashId: string;\n patch: Partial;\n}\n\nexport function cashPropertiesChanged(\n cashId: string,\n patch: Partial,\n): CashPropertiesChanged {\n return {\n type: 'CASH_PROPERTIES_CHANGED',\n cashId,\n patch,\n };\n}\nexport interface CashPropertiesRemoveError {\n type: 'CASH_PROPERTIES_REMOVE_ERROR';\n cashId: string;\n keys: ReadonlyArray;\n}\n\nexport function cashPropertiesRemoveError(\n cashId: string,\n keys: ReadonlyArray,\n): CashPropertiesRemoveError {\n return {\n type: 'CASH_PROPERTIES_REMOVE_ERROR',\n cashId,\n keys,\n };\n}\n\nexport interface CashPropertiesPristine {\n type: 'CASH_PROPERTIES_PRISTINE';\n cashId: string;\n fieldName: keyof IFxCashValues;\n}\n\nexport function cashPropertiesPristine(\n cashId: string,\n fieldName: keyof IFxCashValues,\n): CashPropertiesPristine {\n return {\n type: 'CASH_PROPERTIES_PRISTINE',\n cashId,\n fieldName,\n };\n}\n\nexport interface CashPropertiesDirty {\n type: 'CASH_PROPERTIES_DIRTY';\n cashId: string;\n fieldName: keyof IFxCashValues;\n}\n\nexport function cashPropertiesDirty(\n cashId: string,\n fieldName: keyof IFxCashValues,\n): CashPropertiesDirty {\n return {\n type: 'CASH_PROPERTIES_DIRTY',\n cashId,\n fieldName,\n };\n}\n\nexport interface CashAmountCurrencyMaskChanged {\n type: 'CASH_AMOUNT_CURRENCY_MASK_CHANGED';\n cashId: string;\n amountCurrency: CurrencyChoice;\n}\n\nexport function cashAmountCurrencyMaskChanged(\n cashId: string,\n amountCurrency: CurrencyChoice,\n): CashAmountCurrencyMaskChanged {\n return {\n type: 'CASH_AMOUNT_CURRENCY_MASK_CHANGED',\n cashId,\n amountCurrency,\n };\n}\n\nexport interface CashPropertiesReceived {\n type: 'CASH_PROPERTIES_RECEIVED';\n quoteId: string;\n patch: FxCashPatch;\n isReadyToPrice: boolean | null;\n isPriceObsolete: boolean;\n idVersion: number;\n}\n\nexport function cashPropertiesReceived(\n quoteId: string,\n patch: FxCashPatch,\n idVersion: number,\n isReadyToPrice: boolean | null,\n isPriceObsolete: boolean,\n): CashPropertiesReceived {\n return {\n type: 'CASH_PROPERTIES_RECEIVED',\n quoteId,\n patch,\n isReadyToPrice,\n isPriceObsolete,\n idVersion,\n };\n}\n\nexport interface CashPropertiesRequested {\n type: 'CASH_PROPERTIES_REQUESTED';\n cashId: string;\n sessionId: string;\n}\n\nexport function cashPropertiesRequested(\n cashId: string,\n sessionId: string,\n): CashPropertiesRequested {\n return {\n type: 'CASH_PROPERTIES_REQUESTED',\n cashId,\n sessionId,\n };\n}\n\nexport interface CashRfsRequestedEpic {\n type: 'CASH_RFS_REQUESTED_EPIC';\n cashId: string;\n previousStreamId?: string | null;\n}\n\nexport function cashRfsRequestedEpic(\n cashId: string,\n previousStreamId?: string | null,\n): CashRfsRequestedEpic {\n return {\n type: 'CASH_RFS_REQUESTED_EPIC',\n cashId,\n previousStreamId,\n };\n}\n\nexport interface CashRfsStarted {\n type: 'CASH_RFS_STARTED';\n cashId: string;\n streamId: string;\n rfsStartedAt: Date;\n}\n\nexport function cashRfsStarted(\n cashId: string,\n streamId: string,\n rfsStartedAt: Date,\n): CashRfsStarted {\n return {\n type: 'CASH_RFS_STARTED',\n cashId,\n streamId,\n rfsStartedAt,\n };\n}\n\nexport interface CashRfsFailed {\n type: 'CASH_RFS_FAILED';\n cashId: string;\n streamId: string;\n error: IStreamError;\n}\n\nexport function cashRfsFailed(\n cashId: string,\n streamId: string,\n error: IStreamError,\n): CashRfsFailed {\n return {\n type: 'CASH_RFS_FAILED',\n cashId,\n streamId,\n error,\n };\n}\n\nexport interface CashRfsCancelEpic {\n type: 'CASH_RFS_CANCEL_EPIC';\n cashId: string;\n streamId: string;\n}\n\nexport function cashRfsCancelEpic(cashId: string, streamId: string): CashRfsCancelEpic {\n return {\n type: 'CASH_RFS_CANCEL_EPIC',\n cashId,\n streamId,\n };\n}\n\nexport interface CashRfsCancel {\n type: 'CASH_RFS_CANCEL';\n cashId: string;\n streamId: string;\n}\n\nexport function cashRfsCancel(cashId: string, streamId: string): CashRfsCancel {\n return {\n type: 'CASH_RFS_CANCEL',\n cashId,\n streamId,\n };\n}\n\nexport interface CashRfsCancelSent {\n type: 'CASH_RFS_CANCEL_SENT';\n quoteId: string;\n streamId: string;\n}\n\nexport function cashRfsCancelSent(quoteId: string, streamId: string): CashRfsCancelSent {\n return {\n type: 'CASH_RFS_CANCEL_SENT',\n quoteId,\n streamId,\n };\n}\n\nexport interface CashRfsCancelFailed {\n type: 'CASH_RFS_CANCEL_FAILED';\n cashId: string;\n streamId: string;\n}\n\nexport function cashRfsCancelFailed(cashId: string, streamId: string): CashRfsCancelFailed {\n return {\n type: 'CASH_RFS_CANCEL_FAILED',\n cashId,\n streamId,\n };\n}\n\nexport interface CashQuoteReceived {\n type: 'CASH_QUOTE_RECEIVED';\n cashId: string;\n streamId: string;\n quote: IQuote;\n tiering: string | null;\n}\n\nexport function cashQuoteReceived(\n cashId: string,\n streamId: string,\n quote: IQuote,\n tiering: string | null,\n): CashQuoteReceived {\n return {\n type: 'CASH_QUOTE_RECEIVED',\n cashId,\n streamId,\n quote,\n tiering,\n };\n}\n\nexport interface CashRfsTerminated {\n type: 'CASH_RFS_TERMINATED';\n cashId: string;\n streamId: string;\n}\n\nexport function cashRfsTerminated(cashId: string, streamId: string): CashRfsTerminated {\n return {\n type: 'CASH_RFS_TERMINATED',\n cashId,\n streamId,\n };\n}\nexport interface CashRfsClearError {\n type: 'CASH_RFS_CLEAR_ERROR';\n quoteId: string;\n}\n\nexport function cashRfsClearError(quoteId: string): CashRfsClearError {\n return { type: 'CASH_RFS_CLEAR_ERROR', quoteId };\n}\n","import type { Thunk } from 'state';\n\nexport function cashRfsRequestedThunk(cashId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const { currentStreamId } = sl.getCashState(getState(), cashId);\n dispatch(ac.cashRfsRequestedEpic(cashId, currentStreamId));\n };\n}\n\nexport function cashRfsCancelThunk(cashId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const { currentStreamId } = sl.getCashState(getState(), cashId);\n if (currentStreamId !== null) {\n dispatch(ac.cashRfsCancel(cashId, currentStreamId));\n dispatch(ac.cashRfsCancelEpic(cashId, currentStreamId));\n }\n dispatch(ac.cashRfsClearError(cashId));\n };\n}\n","import type { Thunk } from 'state';\nimport { fieldData } from 'utils/fieldSelectors';\nimport type { IFxCashValues } from 'state/fxCashs/fxCashsModel';\nimport type { CurrencyChoice } from 'state/share/productModel/litterals';\nimport { isDefinedAndNonEmpty } from '@sgme/fp';\n\n/**\n * @deprecated delegate to meta selector\n */\nexport function cashAmountChanged(cashId: string, amount: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const { data: amountCurrency } = fieldData(sl.getCashAmountCurrency(getState(), cashId));\n dispatch(ac.cashPropertiesChanged(cashId, { amount, amountCurrency }));\n };\n}\n\nexport function cashCurrencyChanged(cashId: string, amount: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const { data: oldCurrency } = fieldData(sl.getCashAmountCurrency(state, cashId));\n const { data: oldAmount } = fieldData(sl.getCashAmount(state, cashId));\n const amountCurrency = ((oldCurrency % 2) + 1) as CurrencyChoice;\n if (isDefinedAndNonEmpty(oldAmount)) {\n dispatch(ac.cashPropertiesChanged(cashId, { amount, amountCurrency }));\n } else {\n dispatch(ac.cashAmountCurrencyMaskChanged(cashId, amountCurrency));\n }\n };\n}\n\nexport function cashCurrencyPairChangeThunk(cashId: string, currencyPair: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n dispatch(ac.espTileStreamUnsubscribeThunk(cashId));\n const state = getState();\n const amountAndCurrency = sl.isTileFirstCurrencyPairSelection(state, cashId)\n ? { amount: sl.getUserDefaultNotional(state), amountCurrency: 1 as CurrencyChoice }\n : {\n amount: null,\n amountCurrency: fieldData(sl.getCashAmountCurrency(state, cashId)).data,\n };\n dispatch(ac.cashPropertiesChanged(cashId, { currencyPair, ...amountAndCurrency }));\n };\n}\n\nexport function cashPropertiesDirtyStateChangedThunk(\n cashId: string,\n fieldName: keyof IFxCashValues,\n isDirty: boolean,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n /**\n * @todo change selector\n */\n const { dirtyFields } = sl.getCashState(getState(), cashId);\n\n if (isDirty && !dirtyFields.includes(fieldName)) {\n dispatch(ac.cashPropertiesDirty(cashId, fieldName));\n } else if (!isDirty && dirtyFields.includes(fieldName)) {\n dispatch(ac.cashPropertiesPristine(cashId, fieldName));\n }\n };\n}\n","import type { Thunk } from 'state';\n\nexport function cashTileClosed(cashId: string, automatically = false): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const state = getState();\n if (!sl.isTilePresent(state, cashId)) {\n return;\n }\n const tabId = sl.getClientWorkspaceIdByQuoteId(state, cashId);\n dispatch(ac.espTileStreamUnsubscribeThunk(cashId));\n dispatch(ac.cashRfsCancelThunk(cashId));\n dispatch(ac.clientWorkspaceTileDeleted(cashId, tabId, automatically));\n };\n}\n\nexport function cashTileStateCleaned(cashId: string): Thunk {\n return (dispatch, _getState, { actionCreators: ac }) => {\n dispatch(ac.espTileStreamUnsubscribeThunk(cashId));\n dispatch(ac.cashRfsCancelThunk(cashId));\n };\n}\n\nexport function cashClientChangedThunk(cashId: string, clientId: string): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const state = getState();\n // always cancel pending rfs if it exists\n dispatch(ac.cashRfsCancelThunk(cashId));\n // restart esp or try to start it\n const companyId = sl.getCompanyIdFromClientId(state, clientId);\n dispatch(ac.espStreamRestartThunk(cashId, undefined, undefined, companyId));\n dispatch(\n ac.cashLocalPropertyChanged(cashId, {\n bidMargin: null,\n askMargin: null,\n bidForwardMargin: null,\n askForwardMargin: null,\n }),\n );\n };\n}\n","import type { Thunk } from 'state';\nimport type { IESPTraderPriceUnderThreshold } from 'state/esp/espStreamsModel';\nimport type { IFxCashMetadata } from '../fxCashsModel';\nimport { updateMargin } from 'utils/margin';\nimport { getEspPriceByNotional } from 'state/esp/utils';\n\ntype AskMarginName = 'askMargin' | 'askForwardMargin';\ntype BidMarginName = 'bidMargin' | 'bidForwardMargin';\n\nfunction getCashMarginPlus(askMarginName: AskMarginName, bidMarginName: BidMarginName) {\n const getMargin = getCashMarginFromState(askMarginName, bidMarginName);\n return (cashId: string): Thunk =>\n (dispatch, getState, { selectors: { getCashState }, actionCreators: ac }) => {\n const cashState = getCashState(getState(), cashId);\n const { askMargin, bidMargin } = getMargin(cashState);\n\n const data: Partial = {};\n data[askMarginName] = updateMargin(askMargin, 0.1);\n data[bidMarginName] = updateMargin(bidMargin, 0.1);\n\n dispatch(ac.cashLocalPropertyChanged(cashId, data));\n };\n}\n\nexport const cashMarginPlus = getCashMarginPlus('askMargin', 'bidMargin');\nexport const cashSwapMarginPlus = getCashMarginPlus('askForwardMargin', 'bidForwardMargin');\n\nfunction getCashMarginMinus(askMarginName: AskMarginName, bidMarginName: BidMarginName) {\n const getMargin = getCashMarginFromState(askMarginName, bidMarginName);\n return (cashId: string): Thunk =>\n (dispatch, getState, { selectors: { getCashState }, actionCreators: ac }) => {\n const cashState = getCashState(getState(), cashId);\n const { askMargin, bidMargin } = getMargin(cashState);\n\n const data: Partial = {};\n data[askMarginName] = updateMargin(askMargin, -0.1);\n data[bidMarginName] = updateMargin(bidMargin, -0.1);\n\n dispatch(ac.cashLocalPropertyChanged(cashId, data));\n };\n}\n\nexport const cashMarginMinus = getCashMarginMinus('askMargin', 'bidMargin');\nexport const cashSwapMarginMinus = getCashMarginMinus('askForwardMargin', 'bidForwardMargin');\n\nfunction getCashMarginLeftSkew(askMarginName: AskMarginName, bidMarginName: BidMarginName) {\n const getMargin = getCashMarginFromState(askMarginName, bidMarginName);\n return (cashId: string): Thunk =>\n (dispatch, getState, { selectors: { getCashState }, actionCreators: ac }) => {\n const cashState = getCashState(getState(), cashId);\n const { askMargin, bidMargin } = getMargin(cashState);\n\n const data: Partial = {};\n data[askMarginName] = updateMargin(askMargin, -0.1);\n data[bidMarginName] = updateMargin(bidMargin, 0.1);\n\n dispatch(ac.cashLocalPropertyChanged(cashId, data));\n };\n}\nexport const cashMarginLeftSkew = getCashMarginLeftSkew('askMargin', 'bidMargin');\nexport const cashSwapMarginLeftSkew = getCashMarginLeftSkew('askForwardMargin', 'bidForwardMargin');\n\nfunction getCashMarginRightSkew(askMarginName: AskMarginName, bidMarginName: BidMarginName) {\n const getMargin = getCashMarginFromState(askMarginName, bidMarginName);\n return (cashId: string): Thunk =>\n (dispatch, getState, { selectors: { getCashState }, actionCreators: ac }) => {\n const cashState = getCashState(getState(), cashId);\n const { askMargin, bidMargin } = getMargin(cashState);\n\n const data: Partial = {};\n data[askMarginName] = updateMargin(askMargin, 0.1);\n data[bidMarginName] = updateMargin(bidMargin, -0.1);\n\n dispatch(ac.cashLocalPropertyChanged(cashId, data));\n };\n}\nexport const cashMarginRightSkew = getCashMarginRightSkew('askMargin', 'bidMargin');\nexport const cashSwapMarginRightSkew = getCashMarginRightSkew(\n 'askForwardMargin',\n 'bidForwardMargin',\n);\n\nexport function cashSpotMarginReset(cashId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n let bidMargin = null;\n let askMargin = null;\n\n const state = getState();\n const { currentStreamId, currentEspStreamId } = sl.getCashState(state, cashId);\n const amount = sl.getCashAmount(state, cashId).value;\n const amountCurrency = sl.getCashAmountCurrency(state, cashId).value;\n\n if (currentStreamId !== null) {\n const currentStream = sl.getCashRfsStreamState(state, currentStreamId);\n if (currentStream.status === 'PRICING') {\n const { bid, ask } = currentStream.quote.defaultSpotMargin;\n bidMargin = bid;\n askMargin = ask;\n }\n } else if (currentEspStreamId !== null) {\n const currentStream = sl.getEspStreamState(state, currentEspStreamId)!;\n if (currentStream.status === 'PRICING' && currentStream.priceType === 'ESP.TRADER.PRICE') {\n const price = getEspPriceByNotional(currentStream, amount, amountCurrency)\n .price as IESPTraderPriceUnderThreshold;\n if (price?.valid) {\n bidMargin = price.marginBid;\n askMargin = price.marginAsk;\n }\n }\n }\n\n dispatch(\n ac.cashLocalPropertyChanged(cashId, {\n bidMargin,\n askMargin,\n }),\n );\n };\n}\n\nexport function cashForwardMarginReset(cashId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n\n const { bid: bidForwardMargin, ask: askForwardMargin } = sl.getRfsDefaultForwardMarginPoints(\n state,\n cashId,\n );\n\n dispatch(\n ac.cashLocalPropertyChanged(cashId, {\n bidForwardMargin,\n askForwardMargin,\n }),\n );\n };\n}\n\nexport function cashSwitchMarkupCurrency(cashId: string): Thunk {\n return (dispatch, getState, { selectors: { getCashState }, actionCreators: ac }) => {\n const { markupCurrency } = getCashState(getState(), cashId);\n\n dispatch(\n ac.cashLocalPropertyChanged(cashId, {\n markupCurrency: markupCurrency === 1 ? 2 : 1,\n }),\n );\n };\n}\n\nfunction getCashMarginFromState(\n askMarginName: keyof IFxCashMetadata,\n bidMarginName: keyof IFxCashMetadata,\n) {\n return (cashState: IFxCashMetadata) => ({\n askMargin: cashState[askMarginName]! as number,\n bidMargin: cashState[bidMarginName]! as number,\n });\n}\n","import type { Thunk } from 'state';\nimport type { CashTradeCapturePatch } from 'api/tradeCapture/cash/tradeCaptureModel';\nimport type { TradeCaptureError } from 'state/tile/fxTileModel';\nimport { isDefined } from '@sgme/fp';\n// import { isProductEspEnabledToDelete } from 'state/esp/utils';\n// import { isProductEspCompatible } from \"../../esp/espStreamsSelectors\";\n\nexport function cashPropertiesReceivedThunk(\n cashId: string,\n cashPatch: CashTradeCapturePatch,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const oldState = getState();\n\n if (!sl.isTilePresent(oldState, cashId) || sl.getQuoteInstrument(oldState, cashId) !== 'Cash') {\n return;\n }\n\n const oldProductName = sl.getCashProductName(oldState, cashId);\n const oldTenor = sl.getCashMaturityDateTenor(oldState, cashId);\n const oldCurrencyPair = sl.getCashCurrencyPair(oldState, cashId).value;\n const isPreviouslyESPEnabled = sl.isProductEspCompatible(oldState, cashId);\n\n const {\n idVersion,\n isReadyToPrice,\n isPriceObsolete: isPreviousRFSObsolete,\n productName,\n ...receivedPatch\n } = cashPatch;\n\n const tenor = receivedPatch.values.maturityDateTenor ?? oldTenor.value;\n const currencyPair = receivedPatch.values.currencyPair ?? oldCurrencyPair;\n\n const hasChangedProductName = productName !== oldProductName;\n const hasChangedCurrencyPair = isDefined(currencyPair) && currencyPair !== oldCurrencyPair;\n const hasChangedTenor = isDefined(tenor) && tenor !== oldTenor.value;\n\n const hasChangedNdfProperties = productName === 'FxNdf' && (\n (isDefined(cashPatch.values.fixingSource) && cashPatch.values.fixingSource !== sl.getCashFixingSource(oldState, cashId).value)\n || (isDefined(cashPatch.values.sndFixingSource) && cashPatch.values.sndFixingSource !== sl.getCashSndFixingSource(oldState, cashId).value)\n || (isDefined(cashPatch.values.fixingCurrency) && cashPatch.values.fixingCurrency !== sl.getCashFixingCurrency(oldState, cashId).value)\n )\n\n // isPriceObsolete RFS obsolete\n // isReadyToPrice RFS possible\n dispatch(\n ac.cashPropertiesReceived(\n cashId,\n { productName, ...receivedPatch },\n idVersion,\n isReadyToPrice ?? null,\n isPreviousRFSObsolete,\n ),\n );\n\n const state = getState();\n\n const isESPEnabled = sl.isProductEspCompatible(state, cashId);\n\n /** SHOULD WE CANCEL RFS? */\n if (isPreviousRFSObsolete || hasChangedProductName) {\n dispatch(ac.cashRfsCancelThunk(cashId));\n }\n\n /** SHOULD WE RESTART ESP? */\n if (\n (isPreviouslyESPEnabled || isESPEnabled) &&\n (hasChangedCurrencyPair || hasChangedTenor || hasChangedProductName || hasChangedNdfProperties)\n ) {\n dispatch(ac.espStreamRestartThunk(cashId, currencyPair, productName, undefined, tenor));\n }\n\n if (hasChangedCurrencyPair || hasChangedProductName || hasChangedTenor) {\n /** SHOULD WE RESET MARGIN? */\n dispatch(\n ac.cashLocalPropertyChanged(cashId, {\n bidMargin: null,\n askMargin: null,\n bidForwardMargin: null,\n askForwardMargin: null,\n }),\n );\n }\n };\n}\n\n// ---------------------------------------\n\nexport function cashPropertiesRequestFailedThunk(\n cashId: string,\n error: TradeCaptureError,\n): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const state = getState();\n if (!sl.isTilePresent(state, cashId) || sl.getQuoteInstrument(state, cashId) !== 'Cash') {\n return;\n }\n\n dispatch(ac.cashPropertiesRequestFailed(cashId, error));\n\n const { currentStreamId, currentEspStreamId } = sl.getCashState(state, cashId);\n if (currentStreamId !== null) {\n dispatch(ac.cashRfsCancelEpic(cashId, currentStreamId));\n }\n if (currentEspStreamId !== null) {\n dispatch(ac.espTileStreamUnsubscribeThunk(cashId));\n }\n };\n}\n","import type { Thunk } from 'state';\nimport type { Way } from 'state/share/productModel/litterals';\nimport { logger } from 'logging/logger';\n\n/**\n * @todo remove ac imports\n */\nimport { cashRfsExecutionRequested, cashEspExecutionRequested } from '../fxCashsActions';\n\nexport function cashExecutionRequestedThunk(cashId: string, way: Way): Thunk {\n return (dispatch, getState, { selectors: sl }) => {\n const state = getState();\n const canTrade = sl.userCanTrade(state) && sl.isStreamingConnected(state);\n if (canTrade !== true) {\n return;\n }\n\n const currencyPair = sl.getCashCurrencyPair(state, cashId).value;\n if (currencyPair === null) {\n return;\n }\n const { currentStreamId, currentEspStreamId } = sl.getCashState(state, cashId);\n\n const precision = sl.getCurrencyPrecision(state, currencyPair);\n if (currentStreamId !== null) {\n dispatch(cashRfsExecutionRequested(cashId, currentStreamId, way));\n } else if (currentEspStreamId !== null) {\n const stream = sl.getEspStreamState(state, currentEspStreamId);\n if (stream !== undefined && stream.status === 'PRICING' && stream.missedHeartbeat === false) {\n const priceAge = Date.now() - stream.priceDecodedTime;\n logger.logInformation('User executed an ESP whose price was aged {priceAge_n}', priceAge);\n dispatch(cashEspExecutionRequested(cashId, currentEspStreamId, way, precision));\n }\n }\n };\n}\n","import type {\n IFxSwapInputs,\n FxSwapPatch,\n IQuote,\n IFxSwapMetadata,\n IFxSwapExecutionData,\n IFxSwapValues,\n SwapTileOpenFromBlotter,\n} from './fxSwapsModel';\nimport type { CurrencyChoice, Way } from 'state/share/productModel/litterals';\nimport type { IStreamError } from 'state/globalError/globalErrorModel';\nimport type { SwapSavedTile } from 'api/workspaceService/model';\nimport type { TradeCaptureError } from 'state/tile/fxTileModel';\nimport type { RestoredTiles } from 'state/clientWorkspace';\n\nexport type FxSwapAction =\n | SwapTileReset\n | SwapTileRestoreEpic\n | SwapTileOpenFromBlotterEpic\n | SwapPropertyChanged\n | SwapLocalPropertyChanged\n | SwapPropertiesRemoveError\n | SwapPropertiesRequested\n | SwapPropertiesRequestFailed\n | SwapPropertiesReceived\n | SwapAmountCurrencyMaskChanged\n | SwapRfsStarted\n | SwapRfsExecutionRequestedEpic\n | SwapRfsTerminated\n | SwapRfsFailed\n | SwapQuoteReceived\n | SwapRfsRequestedEpic\n | SwapRfsCancelEpic\n | SwapRfsClearError\n | SwapRfsCancel\n | SwapRfsCancelFailed\n | SwapRfsCancelSent\n | SwapExecutionSent\n | SwapExecutionFailed\n | SwapExecutionReceived\n | SwapFillReportReceived\n | SwapExecutionSentSucceeded;\n\nexport interface SwapTileReset {\n type: 'SWAP_TILE_RESET';\n quoteId: string;\n}\n\nexport function swapTileReset(quoteId: string): SwapTileReset {\n return {\n type: 'SWAP_TILE_RESET',\n quoteId,\n };\n}\n\nexport interface SwapTileRestoreEpic {\n type: 'SWAP_TILE_RESTORE_EPIC';\n tiles: RestoredTiles;\n}\n\nexport function swapTileRestoreEpic(tiles: RestoredTiles): SwapTileRestoreEpic {\n return {\n type: 'SWAP_TILE_RESTORE_EPIC',\n tiles,\n };\n}\n\nexport interface SwapTileOpenFromBlotterEpic {\n type: 'SWAP_TILE_OPEN_FROM_BLOTTER_EPIC';\n tileId: string;\n tile: SwapTileOpenFromBlotter;\n}\n\nexport function swapTileOpenFromBlotterEpic(\n tileId: string,\n tile: SwapTileOpenFromBlotter,\n): SwapTileOpenFromBlotterEpic {\n return {\n type: 'SWAP_TILE_OPEN_FROM_BLOTTER_EPIC',\n tileId,\n tile,\n };\n}\n\nexport interface SwapPropertyChanged {\n type: 'SWAP_PROPERTIES_CHANGED';\n swapId: string;\n patch: Partial;\n}\n\nexport function swapPropertyChanged(\n swapId: string,\n patch: Partial,\n): SwapPropertyChanged {\n return {\n type: 'SWAP_PROPERTIES_CHANGED',\n swapId,\n patch,\n };\n}\n\nexport interface SwapLocalPropertyChanged {\n type: 'SWAP_LOCAL_PROPERTY_CHANGED';\n swapId: string;\n patch: Partial;\n}\n\nexport function swapLocalPropertyChanged(\n swapId: string,\n patch: Partial,\n): SwapLocalPropertyChanged {\n return {\n type: 'SWAP_LOCAL_PROPERTY_CHANGED',\n swapId,\n patch,\n };\n}\n\nexport interface SwapPropertiesRequested {\n type: 'SWAP_PROPERTIES_REQUESTED';\n swapId: string;\n sessionId: string;\n}\n\nexport function swapPropertiesRequested(\n swapId: string,\n sessionId: string,\n): SwapPropertiesRequested {\n return {\n type: 'SWAP_PROPERTIES_REQUESTED',\n swapId,\n sessionId,\n };\n}\n\nexport interface SwapPropertiesReceived {\n type: 'SWAP_PROPERTIES_RECEIVED';\n quoteId: string;\n patch: FxSwapPatch;\n isReadyToPrice: boolean | null;\n isPriceObsolete: boolean;\n idVersion: number;\n}\n\nexport function swapPropertiesReceived(\n quoteId: string,\n patch: FxSwapPatch,\n idVersion: number,\n isReadyToPrice: boolean | null,\n isPriceObsolete: boolean,\n): SwapPropertiesReceived {\n return {\n type: 'SWAP_PROPERTIES_RECEIVED',\n quoteId,\n patch,\n isReadyToPrice,\n isPriceObsolete,\n idVersion,\n };\n}\n\nexport interface SwapPropertiesRequestFailed {\n type: 'SWAP_PROPERTIES_REQUEST_FAILED';\n quoteId: string;\n error: TradeCaptureError;\n}\n\nexport function swapPropertiesRequestFailed(\n quoteId: string,\n error: TradeCaptureError,\n): SwapPropertiesRequestFailed {\n return {\n type: 'SWAP_PROPERTIES_REQUEST_FAILED',\n quoteId,\n error,\n };\n}\n\nexport interface SwapPropertiesRemoveError {\n type: 'SWAP_PROPERTIES_REMOVE_ERROR';\n swapId: string;\n keys: ReadonlyArray;\n}\n\nexport function swapPropertiesRemoveError(\n swapId: string,\n keys: ReadonlyArray,\n): SwapPropertiesRemoveError {\n return {\n type: 'SWAP_PROPERTIES_REMOVE_ERROR',\n swapId,\n keys,\n };\n}\n\nexport interface SwapAmountCurrencyMaskChanged {\n type: 'SWAP_AMOUNT_CURRENCY_MASK_CHANGED';\n swapId: string;\n amountCurrency: CurrencyChoice;\n}\n\nexport function swapAmountCurrencyMaskChanged(\n swapId: string,\n amountCurrency: CurrencyChoice,\n): SwapAmountCurrencyMaskChanged {\n return {\n type: 'SWAP_AMOUNT_CURRENCY_MASK_CHANGED',\n swapId,\n amountCurrency,\n };\n}\n\nexport interface SwapRfsCancelEpic {\n type: 'SWAP_RFS_CANCEL_EPIC';\n swapId: string;\n streamId: string;\n}\n\nexport function swapRfsCancelEpic(swapId: string, streamId: string): SwapRfsCancelEpic {\n return {\n type: 'SWAP_RFS_CANCEL_EPIC',\n swapId,\n streamId,\n };\n}\nexport interface SwapRfsRequestedEpic {\n type: 'SWAP_RFS_REQUESTED_EPIC';\n swapId: string;\n previousStreamId?: string | null;\n}\n\nexport function swapRfsRequestedEpic(\n swapId: string,\n previousStreamId?: string | null,\n): SwapRfsRequestedEpic {\n return {\n type: 'SWAP_RFS_REQUESTED_EPIC',\n swapId,\n previousStreamId,\n };\n}\n\nexport interface SwapQuoteReceived {\n type: 'SWAP_QUOTE_RECEIVED';\n swapId: string;\n streamId: string;\n quote: IQuote;\n tiering: string | null;\n}\n\nexport function swapQuoteReceived(\n swapId: string,\n streamId: string,\n quote: IQuote,\n tiering: string | null,\n): SwapQuoteReceived {\n return {\n type: 'SWAP_QUOTE_RECEIVED',\n swapId,\n streamId,\n quote,\n tiering,\n };\n}\n\nexport interface SwapRfsFailed {\n type: 'SWAP_RFS_FAILED';\n swapId: string;\n streamId: string;\n error: IStreamError;\n}\n\nexport function swapRfsFailed(\n swapId: string,\n streamId: string,\n error: IStreamError,\n): SwapRfsFailed {\n return {\n type: 'SWAP_RFS_FAILED',\n swapId,\n streamId,\n error,\n };\n}\n\nexport interface SwapRfsTerminated {\n type: 'SWAP_RFS_TERMINATED';\n swapId: string;\n streamId: string;\n}\n\nexport function swapRfsTerminated(swapId: string, streamId: string): SwapRfsTerminated {\n return {\n type: 'SWAP_RFS_TERMINATED',\n swapId,\n streamId,\n };\n}\n\nexport interface SwapRfsExecutionRequestedEpic {\n type: 'SWAP_RFS_EXECUTION_REQUESTED_EPIC';\n swapId: string;\n streamId: string;\n way: Way;\n}\n\nexport function swapRfsExecutionRequestedEpic(\n swapId: string,\n streamId: string,\n way: Way,\n): SwapRfsExecutionRequestedEpic {\n return {\n type: 'SWAP_RFS_EXECUTION_REQUESTED_EPIC',\n swapId,\n streamId,\n way,\n };\n}\n\nexport interface SwapRfsStarted {\n type: 'SWAP_RFS_STARTED';\n swapId: string;\n streamId: string;\n rfsStartedAt: Date;\n}\n\nexport function swapRfsStarted(\n swapId: string,\n streamId: string,\n rfsStartedAt: Date,\n): SwapRfsStarted {\n return {\n type: 'SWAP_RFS_STARTED',\n swapId,\n streamId,\n rfsStartedAt,\n };\n}\n\nexport interface SwapRfsCancel {\n type: 'SWAP_RFS_CANCEL';\n swapId: string;\n streamId: string;\n}\n\nexport function swapRfsCancel(swapId: string, streamId: string): SwapRfsCancel {\n return {\n type: 'SWAP_RFS_CANCEL',\n swapId,\n streamId,\n };\n}\n\nexport interface SwapRfsCancelFailed {\n type: 'SWAP_RFS_CANCEL_FAILED';\n swapId: string;\n streamId: string;\n}\n\nexport function swapRfsCancelFailed(swapId: string, streamId: string): SwapRfsCancelFailed {\n return {\n type: 'SWAP_RFS_CANCEL_FAILED',\n swapId,\n streamId,\n };\n}\n\nexport interface SwapRfsCancelSent {\n type: 'SWAP_RFS_CANCEL_SENT';\n quoteId: string;\n streamId: string;\n}\n\nexport function swapRfsCancelSent(quoteId: string, streamId: string): SwapRfsCancelSent {\n return {\n type: 'SWAP_RFS_CANCEL_SENT',\n quoteId,\n streamId,\n };\n}\n\nexport interface SwapRfsClearError {\n type: 'SWAP_RFS_CLEAR_ERROR';\n quoteId: string;\n}\n\nexport function swapRfsClearError(quoteId: string): SwapRfsClearError {\n return { type: 'SWAP_RFS_CLEAR_ERROR', quoteId };\n}\n\nexport interface SwapExecutionReceived {\n type: 'SWAP_EXECUTION_RECEIVED';\n executionId: string;\n}\n\nexport function swapExecutionReceived(executionId: string): SwapExecutionReceived {\n return {\n type: 'SWAP_EXECUTION_RECEIVED',\n executionId,\n };\n}\n\nexport interface SwapFillReportReceived {\n type: 'SWAP_FILL_REPORT_RECEIVED';\n executionId: string;\n tradeIds: readonly string[];\n}\n\nexport function swapFillReportReceived(\n executionId: string,\n tradeIds: readonly string[],\n): SwapFillReportReceived {\n return {\n type: 'SWAP_FILL_REPORT_RECEIVED',\n executionId,\n tradeIds,\n };\n}\n\nexport interface SwapExecutionSent {\n type: 'SWAP_EXECUTION_SENT';\n swapId: string;\n quoteId: string;\n executionId: string;\n execution: IFxSwapExecutionData;\n instrument: 'Swap';\n}\n\nexport function swapExecutionSent(\n swapId: string,\n quoteId: string,\n executionId: string,\n execution: IFxSwapExecutionData,\n): SwapExecutionSent {\n return {\n type: 'SWAP_EXECUTION_SENT',\n swapId,\n quoteId,\n executionId,\n execution,\n instrument: 'Swap',\n };\n}\n\nexport interface SwapExecutionSentSucceeded {\n type: 'SWAP_EXECUTION_SENT_SUCCEEDED';\n executionId: string;\n}\n\nexport function swapExecutionSentSucceeded(executionId: string): SwapExecutionSentSucceeded {\n return {\n type: 'SWAP_EXECUTION_SENT_SUCCEEDED',\n executionId,\n };\n}\n\nexport interface SwapExecutionFailed {\n type: 'SWAP_EXECUTION_FAILED';\n executionId: string;\n streamError: IStreamError;\n}\n\nexport function swapExecutionFailed(\n executionId: string,\n streamError: IStreamError,\n): SwapExecutionFailed {\n return {\n type: 'SWAP_EXECUTION_FAILED',\n streamError,\n executionId,\n };\n}\n","import { isDefined } from '@sgme/fp';\nimport type { Thunk } from 'state';\nimport { fieldData } from 'utils/fieldSelectors';\n\nexport function swapTileClosed(swapId: string, automatically = false): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const state = getState();\n if (!sl.isTilePresent(state, swapId)) {\n return;\n }\n const tabId = sl.getClientWorkspaceIdByQuoteId(state, swapId);\n dispatch(ac.swapRfsCancelThunk(swapId));\n dispatch(ac.clientWorkspaceTileDeleted(swapId, tabId, automatically));\n };\n}\n\nexport function swapClientChangedThunk(swapId: string): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n // always cancel pending rfs if it exists\n dispatch(ac.swapRfsCancelThunk(swapId));\n const nearPrice = fieldData(sl.getSwapNearPrice(getState(), swapId)).data;\n if (isDefined(nearPrice)) {\n dispatch(ac.swapPropertyChanged(swapId, { nearPriceReference: null }));\n }\n dispatch(\n ac.swapLocalPropertyChanged(swapId, {\n bidMargin: null,\n askMargin: null,\n bidSpotMargin: null,\n askSpotMargin: null,\n }),\n );\n };\n}\n\nexport function swapTileStateCleaned(swapId: string): Thunk {\n return (dispatch, _getState, { actionCreators: ac }) => {\n dispatch(ac.swapRfsCancelThunk(swapId, true));\n };\n}\n","export function clearUndefined(obj: T): Partial {\n return Object.entries(obj).reduce>(\n (cleaned, [key, value]) =>\n value !== undefined ? Object.assign(cleaned, { [key]: value }) : cleaned,\n {},\n );\n}\n","import type { Thunk } from 'state';\nimport { clearUndefined } from 'utils/clearUndefined';\nimport type { IFxSwapInputs } from '../fxSwapsModel';\nimport type { CurrencyChoice } from 'state/share/productModel/litterals';\nimport { fieldData } from 'utils/fieldSelectors';\n\nexport function swapNearAmountChangedThunk(swapId: string, nearAmount: string): Thunk {\n return (dispatch, getState, { selectors: { getSwapState }, actionCreators: ac }) => {\n const {\n values: { amountCurrency },\n } = getSwapState(getState(), swapId);\n dispatch(ac.swapPropertyChanged(swapId, { nearAmount, amountCurrency }));\n };\n}\nexport function swapFarAmountChangedThunk(swapId: string, farAmount: string): Thunk {\n return (dispatch, getState, { selectors: { getSwapState }, actionCreators: ac }) => {\n const {\n values: { amountCurrency },\n } = getSwapState(getState(), swapId);\n dispatch(ac.swapPropertyChanged(swapId, { farAmount, amountCurrency }));\n };\n}\n\nexport function swapFarAmountCurrencyChangedThunk(swapId: string, farAmount: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const { data: oldAmountCurrency } = fieldData(sl.getSwapAmountCurrency(state, swapId));\n const { data: nearAmount } = fieldData(sl.getSwapNearAmount(state, swapId));\n const { data: oldFarAmount } = fieldData(sl.getSwapFarAmount(state, swapId));\n const { data: isUneven } = fieldData(sl.getSwapIsUneven(state, swapId));\n const amountCurrency: CurrencyChoice = oldAmountCurrency === 1 ? 2 : 1;\n if (nearAmount === null && oldFarAmount === null && farAmount === '') {\n dispatch(ac.swapAmountCurrencyMaskChanged(swapId, amountCurrency));\n } else {\n const patch: Partial = {\n amountCurrency,\n ...clearUndefined({\n nearAmount:\n isUneven === false\n ? undefined\n : nearAmount === null\n ? undefined\n : nearAmount.toString(),\n farAmount: farAmount === '' ? (oldFarAmount === null ? undefined : null) : farAmount,\n }),\n };\n dispatch(ac.swapPropertyChanged(swapId, patch));\n }\n };\n}\nexport function swapNearAmountCurrencyChangedThunk(\n swapId: string,\n nearAmount: string,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const { data: oldAmountCurrency } = fieldData(sl.getSwapAmountCurrency(state, swapId));\n const { data: oldNearAmount } = fieldData(sl.getSwapNearAmount(state, swapId));\n const { data: isUneven } = fieldData(sl.getSwapIsUneven(state, swapId));\n const { data: farAmount } = fieldData(sl.getSwapFarAmount(state, swapId));\n const amountCurrency: CurrencyChoice = oldAmountCurrency === 1 ? 2 : 1;\n if (oldNearAmount === null && farAmount === null && nearAmount === '') {\n dispatch(ac.swapAmountCurrencyMaskChanged(swapId, amountCurrency));\n } else {\n const patch: Partial = {\n amountCurrency,\n ...clearUndefined({\n nearAmount: nearAmount === '' ? (oldNearAmount === null ? undefined : null) : nearAmount,\n farAmount:\n isUneven === false ? undefined : farAmount === null ? undefined : farAmount.toString(),\n }),\n };\n dispatch(ac.swapPropertyChanged(swapId, patch));\n }\n };\n}\n\nexport function swapCurrencyPairChangeThunk(swapId: string, currencyPair: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const defaultNotional = sl.getUserDefaultNotional(state);\n const values: Partial = sl.isTileFirstCurrencyPairSelection(state, swapId)\n ? {\n currencyPair,\n nearAmount: defaultNotional,\n farAmount: defaultNotional,\n amountCurrency: 1,\n nearPriceReference: null,\n farPriceReference: null,\n isOffMarket: false,\n }\n : {\n currencyPair,\n nearPriceReference: null,\n farPriceReference: null,\n isOffMarket: false,\n };\n dispatch(ac.swapPropertyChanged(swapId, values));\n };\n}\n","import type { IMarginPatch } from 'components/share/margin/MarginInputs';\nimport type { Thunk } from 'state';\nimport {\n convertToRawWithPrecision,\n updateMargin,\n convertToPointsWithPrecision,\n} from 'utils/margin';\n\ninterface Margin {\n bidMargin: number | null;\n askMargin: number | null;\n}\n\ntype BidAskMarginIncrement = [0.1 | -0.1, 0.1 | -0.1];\n\nfunction computeUpdatedMargin(\n { bidMargin, askMargin }: Margin,\n [bidMarginIncrement, askMarginIncrement]: BidAskMarginIncrement,\n precision: number,\n): Margin {\n const toRaw = convertToRawWithPrecision(precision);\n const toPoints = convertToPointsWithPrecision(precision);\n return {\n bidMargin: +toRaw(\n updateMargin(+toPoints(bidMargin ?? 0).toFixed(2), bidMarginIncrement),\n ).toFixed(precision),\n askMargin: +toRaw(\n updateMargin(+toPoints(askMargin ?? 0).toFixed(2), askMarginIncrement),\n ).toFixed(precision),\n };\n}\n\nexport function swapMarginPlusThunk(swapId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const { askMargin, bidMargin } = sl.getSwapState(state, swapId);\n const currencyPair = sl.getSwapCurrencyPair(state, swapId).value;\n const precision = currencyPair ? sl.getCurrencyPrecision(getState(), currencyPair) : 0;\n\n dispatch(\n ac.swapLocalPropertyChanged(\n swapId,\n computeUpdatedMargin({ bidMargin, askMargin }, [0.1, 0.1], precision),\n ),\n );\n };\n}\nexport function swapSpotMarginPlusThunk(swapId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const spotMargin = sl.getDisplaySpotMargin(state, swapId);\n const currencyPair = sl.getSwapCurrencyPair(state, swapId).value;\n const precision = currencyPair ? sl.getCurrencyPrecision(getState(), currencyPair) : 0;\n const margin = computeUpdatedMargin(\n {\n bidMargin: spotMargin === null ? 0 : spotMargin.raw.bid,\n askMargin: spotMargin === null ? 0 : spotMargin.raw.ask,\n },\n [0.1, 0.1],\n precision,\n );\n dispatch(\n ac.swapLocalPropertyChanged(swapId, {\n bidSpotMargin: margin.bidMargin,\n askSpotMargin: margin.askMargin,\n }),\n );\n dispatch(ac.swapResetNearPriceThunk(swapId));\n };\n}\n\nexport function swapMarginMinusThunk(swapId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const { askMargin, bidMargin } = sl.getSwapState(state, swapId);\n const currencyPair = sl.getSwapCurrencyPair(state, swapId).value;\n const precision = currencyPair ? sl.getCurrencyPrecision(getState(), currencyPair) : 0;\n dispatch(\n ac.swapLocalPropertyChanged(\n swapId,\n computeUpdatedMargin({ bidMargin, askMargin }, [-0.1, -0.1], precision),\n ),\n );\n };\n}\n\nexport function swapSpotMarginMinusThunk(swapId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const spotMargin = sl.getDisplaySpotMargin(state, swapId);\n const currencyPair = sl.getSwapCurrencyPair(state, swapId).value;\n const precision = currencyPair ? sl.getCurrencyPrecision(getState(), currencyPair) : 0;\n const margin = computeUpdatedMargin(\n {\n bidMargin: spotMargin === null ? 0 : spotMargin.raw.bid,\n askMargin: spotMargin === null ? 0 : spotMargin.raw.ask,\n },\n [-0.1, -0.1],\n precision,\n );\n dispatch(\n ac.swapLocalPropertyChanged(swapId, {\n bidSpotMargin: margin.bidMargin,\n askSpotMargin: margin.askMargin,\n }),\n );\n dispatch(ac.swapResetNearPriceThunk(swapId));\n };\n}\n\nexport function swapMarginLeftSkewThunk(swapId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const { askMargin, bidMargin } = sl.getSwapState(state, swapId);\n const currencyPair = sl.getSwapCurrencyPair(state, swapId).value;\n const precision = currencyPair ? sl.getCurrencyPrecision(getState(), currencyPair) : 0;\n dispatch(\n ac.swapLocalPropertyChanged(\n swapId,\n computeUpdatedMargin({ bidMargin, askMargin }, [0.1, -0.1], precision),\n ),\n );\n };\n}\nexport function swapSpotMarginLeftSkewThunk(swapId: string): Thunk {\n return (\n dispatch,\n getState,\n {\n selectors: { getDisplaySpotMargin, getCurrencyPrecision, getSwapCurrencyPair },\n actionCreators: ac,\n },\n ) => {\n const state = getState();\n const spotMargin = getDisplaySpotMargin(state, swapId);\n const currencyPair = getSwapCurrencyPair(state, swapId).value;\n const precision = currencyPair ? getCurrencyPrecision(getState(), currencyPair) : 0;\n\n const margin = computeUpdatedMargin(\n {\n bidMargin: spotMargin === null ? 0 : spotMargin.raw.bid,\n askMargin: spotMargin === null ? 0 : spotMargin.raw.ask,\n },\n [0.1, -0.1],\n precision,\n );\n dispatch(\n ac.swapLocalPropertyChanged(swapId, {\n bidSpotMargin: margin.bidMargin,\n askSpotMargin: margin.askMargin,\n }),\n );\n dispatch(ac.swapResetNearPriceThunk(swapId));\n };\n}\n\nexport function swapMarginRightSkewThunk(swapId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const { askMargin, bidMargin } = sl.getSwapState(state, swapId);\n const currencyPair = sl.getSwapCurrencyPair(state, swapId).value;\n const precision = currencyPair ? sl.getCurrencyPrecision(getState(), currencyPair) : 0;\n dispatch(\n ac.swapLocalPropertyChanged(\n swapId,\n computeUpdatedMargin({ bidMargin, askMargin }, [-0.1, 0.1], precision),\n ),\n );\n };\n}\n\nexport function swapSpotMarginRightSkewThunk(swapId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const spotMargin = sl.getDisplaySpotMargin(state, swapId);\n const currencyPair = sl.getSwapCurrencyPair(state, swapId).value;\n const precision = currencyPair ? sl.getCurrencyPrecision(getState(), currencyPair) : 0;\n\n const margin = computeUpdatedMargin(\n {\n bidMargin: spotMargin.raw.bid,\n askMargin: spotMargin.raw.ask,\n },\n [-0.1, 0.1],\n precision,\n );\n dispatch(\n ac.swapLocalPropertyChanged(swapId, {\n bidSpotMargin: margin.bidMargin,\n askSpotMargin: margin.askMargin,\n }),\n );\n dispatch(ac.swapResetNearPriceThunk(swapId));\n };\n}\n\nexport function swapMarginResetThunk(swapId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n let bidMargin = null;\n let askMargin = null;\n\n const state = getState();\n const { currentStreamId } = sl.getSwapState(state, swapId);\n\n if (currentStreamId !== null) {\n const currentStream = sl.getSwapRfsStream(state, currentStreamId);\n if (currentStream.status === 'PRICING') {\n const { bid, ask } = currentStream.quote.defaultMargin;\n bidMargin = bid;\n askMargin = ask;\n }\n }\n\n dispatch(\n ac.swapLocalPropertyChanged(swapId, {\n bidMargin,\n askMargin,\n }),\n );\n };\n}\nexport function swapSpotMarginResetThunk(swapId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n let bidSpotMargin = null;\n let askSpotMargin = null;\n\n const state = getState();\n const { currentStreamId } = sl.getSwapState(state, swapId);\n\n if (currentStreamId !== null) {\n const currentStream = sl.getSwapRfsStream(state, currentStreamId);\n if (currentStream.status === 'PRICING') {\n const { bid, ask } = currentStream.quote.defaultSpotMargin;\n bidSpotMargin = bid;\n askSpotMargin = ask;\n }\n }\n\n dispatch(\n ac.swapLocalPropertyChanged(swapId, {\n bidSpotMargin,\n askSpotMargin,\n }),\n );\n dispatch(ac.swapResetNearPriceThunk(swapId));\n };\n}\n\nexport function swapMarginChangedThunk(\n swapId: string,\n { askMargin, bidMargin }: IMarginPatch,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const currencyPair = sl.getSwapCurrencyPair(getState(), swapId).value;\n const precision = currencyPair ? sl.getCurrencyPrecision(getState(), currencyPair) : 0;\n const toRaw = convertToRawWithPrecision(precision);\n dispatch(\n ac.swapLocalPropertyChanged(swapId, {\n askMargin: askMargin !== null ? toRaw(askMargin) : null,\n bidMargin: bidMargin !== null ? toRaw(bidMargin) : null,\n }),\n );\n };\n}\nexport function swapSpotMarginChangedThunk(\n swapId: string,\n { askMargin, bidMargin }: IMarginPatch,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const currencyPair = sl.getSwapCurrencyPair(state, swapId).value;\n const precision = currencyPair ? sl.getCurrencyPrecision(getState(), currencyPair) : 0;\n const toRaw = convertToRawWithPrecision(precision);\n dispatch(\n ac.swapLocalPropertyChanged(swapId, {\n askSpotMargin: askMargin !== null ? toRaw(askMargin) : null,\n bidSpotMargin: bidMargin !== null ? toRaw(bidMargin) : null,\n }),\n );\n dispatch(ac.swapResetNearPriceThunk(swapId));\n };\n}\n\nexport function swapSwitchMarkupCurrencyThunk(swapId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const { markupCurrency } = sl.getSwapState(getState(), swapId);\n\n dispatch(\n ac.swapLocalPropertyChanged(swapId, {\n markupCurrency: markupCurrency === 1 ? 2 : 1,\n }),\n );\n };\n}\n\nexport function swapResetNearPriceThunk(swapId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const { value } = sl.getSwapNearPrice(getState(), swapId);\n if (value !== null) {\n dispatch(\n ac.swapPropertyChanged(swapId, {\n nearPriceReference: null,\n }),\n );\n }\n };\n}\n","import type { Thunk } from 'state';\nimport { fieldData } from 'utils/fieldSelectors';\nimport { logger } from 'logging/logger';\n\nexport function swapRfsRequestedThunk(swapId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n if (sl.isTilePresent(state, swapId) && sl.getQuoteInstrument(state, swapId) !== 'Swap') {\n // https://itbox-jira.fr.world.socgen/jira/browse/SGEFX-2119: APP_CRASHED due to a getSwapCurrentStreamId\n logger.logWarning(\n `swapRfsRequestedThunk: tile does not exist or is no more a swap: {swapId_s}`,\n swapId,\n );\n return;\n }\n const currentStreamId = sl.getSwapCurrentStreamId(state, swapId);\n dispatch(ac.swapRfsRequestedEpic(swapId, currentStreamId));\n };\n}\n\nexport function swapRfsCancelThunk(swapId: string, switchingInstrument = false): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n if (sl.isTilePresent(state, swapId) && sl.getQuoteInstrument(state, swapId) !== 'Swap') {\n // https://itbox-jira.fr.world.socgen/jira/browse/SGEFX-2119: APP_CRASHED due to a getSwapCurrentStreamId\n logger.logWarning(\n `swapRfsCancelThunk: tile does not exist or is no more a swap: {swapId_s}`,\n swapId,\n );\n return;\n }\n const currentStreamId = sl.getSwapCurrentStreamId(state, swapId);\n if (currentStreamId !== null) {\n const { data: isOffMarket } = fieldData(sl.getSwapIsOffMarket(state, swapId));\n dispatch(ac.swapRfsCancel(swapId, currentStreamId));\n dispatch(ac.swapRfsCancelEpic(swapId, currentStreamId));\n if (!switchingInstrument && isOffMarket === false) {\n dispatch(ac.swapPropertyChanged(swapId, { nearPriceReference: null }));\n }\n }\n dispatch(ac.swapRfsClearError(swapId));\n };\n}\n","import type { SwapTradeCapturePatch } from 'api/tradeCapture/swap/tradeCaptureModel';\nimport type { Thunk } from 'state';\n\nexport function swapPropertiesReceivedThunk(\n swapId: string,\n swapPatch: SwapTradeCapturePatch,\n): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const state = getState();\n if (!sl.isTilePresent(state, swapId) || sl.getQuoteInstrument(state, swapId) !== 'Swap') {\n return;\n }\n\n const { idVersion, isReadyToPrice, isPriceObsolete, ...receivedPatch } = swapPatch;\n dispatch(\n ac.swapPropertiesReceived(swapId, receivedPatch, idVersion, isReadyToPrice, isPriceObsolete),\n );\n\n if (isPriceObsolete === true) {\n dispatch(ac.swapRfsCancelThunk(swapId));\n }\n\n if (swapPatch === undefined) {\n return;\n }\n const { currencyPair, nearPaymentDateTenor, farPaymentDateTenor } = swapPatch.values;\n if (\n (currencyPair !== undefined &&\n currencyPair !== sl.getSwapCurrencyPair(state, swapId).value) ||\n nearPaymentDateTenor !== undefined ||\n farPaymentDateTenor !== undefined\n ) {\n dispatch(\n ac.swapLocalPropertyChanged(swapId, {\n bidMargin: null,\n askMargin: null,\n bidSpotMargin: null,\n askSpotMargin: null,\n }),\n );\n }\n };\n}\n","import type { Thunk } from 'state';\nimport type { Way } from 'state/share/productModel/litterals';\nimport { fieldData } from 'utils/fieldSelectors';\n\nexport function swapExecutionRequestedThunk(swapId: string, way: Way): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const canTrade = sl.userCanTrade(state) && sl.isStreamingConnected(state);\n if (canTrade !== true) {\n return;\n }\n\n const currencyPair = sl.getSwapCurrencyPair(state, swapId).value;\n if (currencyPair === null) {\n return;\n }\n const { currentStreamId } = sl.getSwapState(state, swapId);\n if (currentStreamId !== null) {\n dispatch(ac.swapRfsExecutionRequestedEpic(swapId, currentStreamId, way));\n if (fieldData(sl.getSwapIsOffMarket(state, swapId)).data === false) {\n dispatch(ac.swapPropertyChanged(swapId, { nearPriceReference: null }));\n }\n }\n };\n}\n","import type {\n IFxBulkInputs,\n FxBulkLegInputs,\n IFxBulkLegValues,\n BulkLineProduct,\n IQuote,\n IFxBulkExecutionData,\n} from './fxBulksModel';\nimport type { BulkTradeCapturePatch } from 'api/tradeCapture/bulk/tradeCaptureModel';\nimport type { TradeCaptureError } from 'state/tile/fxTileModel';\nimport type { IStreamError } from 'state/globalError/globalErrorModel';\n\nexport type FxBulkAction =\n | BulkCreated\n | BulkClosed\n | BulkPropertyChanged\n | BulkPropertiesRequested\n | BulkPropertiesReceived\n | BulkPropertiesRequestFailed\n | BulkSelectionChanged\n | BulkLegAdded\n | BulkLegReset\n | BulkLegsRemoved\n | BulkLegsExcluded\n | BulkLegPropertyChanged\n | BulkLegsPropertyChanged\n | BulkRfsRequestedEpic\n | BulkRfsStarted\n | BulkQuoteReceived\n | BulkRfsFailed\n | BulkRfsClearError\n | BulkRfsCancel\n | BulkRfsCancelEpic\n | BulkRfsCancelSent\n | BulkRfsCancelFailed\n | BulkRfsTerminated\n | BulkLegPropertiesRemoveError\n | BulkExecutionRequestedEpic\n | BulkExecutionSent\n | BulkExecutionFailed\n | BulkExecutionReceived\n | BulkFillReportReceived\n | BulkRestart\n | BulkReset\n | BulkResetAll\n | BulkMarginAction\n | BulkImported\n | BulkExecutionSentSucceeded;\n\nexport type BulkMarginAction = BulkIncrementMargin | BulkDecrementMargin | BulkSetMargin;\n\nexport interface BulkCreated {\n type: 'BULK_CREATED';\n bulkId: string;\n}\n\nexport function bulkCreated(bulkId: string): BulkCreated {\n return {\n type: 'BULK_CREATED',\n bulkId,\n };\n}\n\nexport interface BulkClosed {\n type: 'BULK_CLOSED';\n bulkId: string;\n}\n\nexport function bulkClosed(bulkId: string): BulkClosed {\n return {\n type: 'BULK_CLOSED',\n bulkId,\n };\n}\n\nexport interface BulkPropertyChanged {\n type: 'BULK_PROPERTY_CHANGED';\n bulkId: string;\n patch: Partial;\n patchLegs?: { [legId: string]: Partial };\n}\n\nexport function bulkPropertyChanged(\n bulkId: string,\n patch: Partial,\n patchLegs?: { [legId: string]: Partial },\n): BulkPropertyChanged {\n return {\n type: 'BULK_PROPERTY_CHANGED',\n bulkId,\n patch,\n patchLegs,\n };\n}\n\nexport interface BulkImported {\n type: 'BULK_IMPORTED';\n bulkId: string;\n patch: Partial;\n patchLegs: Record>;\n}\n\nexport function bulkImported(\n bulkId: string,\n patch: Partial,\n patchLegs: Record>,\n): BulkImported {\n return {\n type: 'BULK_IMPORTED',\n bulkId,\n patch,\n patchLegs,\n };\n}\n\nexport interface BulkPropertiesRequested {\n type: 'BULK_PROPERTIES_REQUESTED';\n bulkId: string;\n sessionId: string;\n}\n\nexport function bulkPropertiesRequested(\n bulkId: string,\n sessionId: string,\n): BulkPropertiesRequested {\n return {\n type: 'BULK_PROPERTIES_REQUESTED',\n bulkId,\n sessionId,\n };\n}\n\nexport interface BulkPropertiesReceived {\n type: 'BULK_PROPERTIES_RECEIVED';\n bulkId: string;\n patch: BulkTradeCapturePatch;\n excludedLegsIds: readonly string[];\n}\n\nexport function bulkPropertiesReceived(\n bulkId: string,\n patch: BulkTradeCapturePatch,\n excludedLegsIds: readonly string[],\n): BulkPropertiesReceived {\n return {\n type: 'BULK_PROPERTIES_RECEIVED',\n bulkId,\n patch,\n excludedLegsIds,\n };\n}\n\nexport interface BulkPropertiesRequestFailed {\n type: 'BULK_PROPERTIES_REQUEST_FAILED';\n bulkId: string;\n error: TradeCaptureError;\n}\n\nexport function bulkPropertiesRequestFailed(\n bulkId: string,\n error: TradeCaptureError,\n): BulkPropertiesRequestFailed {\n return {\n type: 'BULK_PROPERTIES_REQUEST_FAILED',\n bulkId,\n error,\n };\n}\n\nexport interface BulkSelectionChanged {\n type: 'BULK_SELECTION_CHANGED';\n bulkId: string;\n legIds: readonly string[];\n}\n\nexport function bulkSelectionChanged(\n bulkId: string,\n legIds: readonly string[],\n): BulkSelectionChanged {\n return {\n type: 'BULK_SELECTION_CHANGED',\n bulkId,\n legIds,\n };\n}\n\nexport interface BulkLegsExcluded {\n type: 'BULK_LEGS_EXCLUDED';\n bulkId: string;\n legIds: readonly string[];\n activatedLegsIds: readonly string[];\n}\n\nexport function bulkLegsExcluded(\n bulkId: string,\n legIds: readonly string[],\n activatedLegsIds: readonly string[],\n): BulkLegsExcluded {\n return {\n type: 'BULK_LEGS_EXCLUDED',\n bulkId,\n legIds,\n activatedLegsIds,\n };\n}\n\nexport interface BulkLegAdded {\n type: 'BULK_LEG_ADDED';\n bulkId: string;\n product: BulkLineProduct;\n}\n\nexport function bulkLegAdded(bulkId: string, product: BulkLineProduct): BulkLegAdded {\n return {\n type: 'BULK_LEG_ADDED',\n bulkId,\n product,\n };\n}\n\nexport interface BulkLegReset {\n type: 'BULK_LEG_RESET';\n bulkId: string;\n legId: string;\n}\n\nexport function bulkLegReset(bulkId: string, legId: string): BulkLegReset {\n return {\n type: 'BULK_LEG_RESET',\n bulkId,\n legId,\n };\n}\n\nexport interface BulkLegsRemoved {\n type: 'BULK_LEGS_REMOVED';\n bulkId: string;\n legIds: readonly string[];\n}\n\nexport function bulkLegsRemoved(bulkId: string, legIds: readonly string[]): BulkLegsRemoved {\n return {\n type: 'BULK_LEGS_REMOVED',\n bulkId,\n legIds,\n };\n}\n\nexport interface BulkReset {\n type: 'BULK_RESET';\n bulkId: string;\n}\n\nexport function bulkReset(bulkId: string): BulkReset {\n return {\n type: 'BULK_RESET',\n bulkId,\n };\n}\nexport interface BulkResetAll {\n type: 'BULK_RESET_ALL';\n bulkId: string;\n}\n\nexport function bulkResetAll(bulkId: string): BulkResetAll {\n return {\n type: 'BULK_RESET_ALL',\n bulkId,\n };\n}\n\nexport interface BulkLegPropertyChanged {\n type: 'BULK_LEG_PROPERTY_CHANGED';\n bulkId: string;\n legId: string;\n patch: Partial;\n}\n\nexport function bulkLegPropertyChanged(\n bulkId: string,\n legId: string,\n patch: Partial,\n): BulkLegPropertyChanged {\n return {\n type: 'BULK_LEG_PROPERTY_CHANGED',\n bulkId,\n legId,\n patch,\n };\n}\n\n/* Change of a property stored at the leg level that impacts every leg, eg. ND */\nexport interface BulkLegsPropertyChanged {\n type: 'BULK_LEGS_PROPERTY_CHANGED';\n bulkId: string;\n patch: Partial;\n}\n\nexport function bulkLegsPropertyChanged(\n bulkId: string,\n patch: Partial,\n): BulkLegsPropertyChanged {\n return {\n type: 'BULK_LEGS_PROPERTY_CHANGED',\n bulkId,\n patch,\n };\n}\n\nexport interface BulkLegPropertiesRemoveError {\n type: 'BULK_LEG_PROPERTIES_REMOVE_ERROR';\n bulkId: string;\n legId: string;\n keys: ReadonlyArray;\n}\n\nexport function bulkLegPropertiesRemoveError(\n bulkId: string,\n legId: string,\n keys: ReadonlyArray,\n): BulkLegPropertiesRemoveError {\n return {\n type: 'BULK_LEG_PROPERTIES_REMOVE_ERROR',\n bulkId,\n legId,\n keys,\n };\n}\n\nexport interface BulkRfsRequestedEpic {\n type: 'BULK_RFS_REQUESTED_EPIC';\n bulkId: string;\n}\nexport function bulkRfsRequestedEpic(bulkId: string): BulkRfsRequestedEpic {\n return {\n type: 'BULK_RFS_REQUESTED_EPIC',\n bulkId,\n };\n}\n\nexport interface BulkQuoteReceived {\n type: 'BULK_QUOTE_RECEIVED';\n bulkId: string;\n streamId: string;\n quote: IQuote;\n tiering: string | null;\n}\n\nexport function bulkQuoteReceived(\n bulkId: string,\n streamId: string,\n quote: IQuote,\n tiering: string | null,\n): BulkQuoteReceived {\n return {\n type: 'BULK_QUOTE_RECEIVED',\n bulkId,\n streamId,\n quote,\n tiering,\n };\n}\n\nexport interface BulkRfsStarted {\n type: 'BULK_RFS_STARTED';\n bulkId: string;\n streamId: string;\n rfsStartedAt: Date;\n}\n\nexport function bulkRfsStarted(\n bulkId: string,\n streamId: string,\n rfsStartedAt: Date,\n): BulkRfsStarted {\n return {\n type: 'BULK_RFS_STARTED',\n bulkId,\n streamId,\n rfsStartedAt,\n };\n}\n\nexport interface BulkRfsCancelEpic {\n type: 'BULK_RFS_CANCEL_EPIC';\n bulkId: string;\n streamId: string;\n}\n\nexport function bulkRfsCancelEpic(bulkId: string, streamId: string): BulkRfsCancelEpic {\n return {\n type: 'BULK_RFS_CANCEL_EPIC',\n bulkId,\n streamId,\n };\n}\n\nexport interface BulkRfsCancel {\n type: 'BULK_RFS_CANCEL';\n bulkId: string;\n streamId: string;\n}\n\nexport function bulkRfsCancel(bulkId: string, streamId: string): BulkRfsCancel {\n return {\n type: 'BULK_RFS_CANCEL',\n bulkId,\n streamId,\n };\n}\n\nexport interface BulkRfsClearError {\n type: 'BULK_RFS_CLEAR_ERROR';\n bulkId: string;\n}\n\nexport function bulkRfsClearError(bulkId: string): BulkRfsClearError {\n return {\n type: 'BULK_RFS_CLEAR_ERROR',\n bulkId,\n };\n}\n\nexport interface BulkRfsTerminated {\n type: 'BULK_RFS_TERMINATED';\n bulkId: string;\n streamId: string;\n}\n\nexport function bulkRfsTerminated(bulkId: string, streamId: string): BulkRfsTerminated {\n return {\n type: 'BULK_RFS_TERMINATED',\n bulkId,\n streamId,\n };\n}\n\nexport interface BulkRfsFailed {\n type: 'BULK_RFS_FAILED';\n bulkId: string;\n streamId: string;\n error: IStreamError;\n}\n\nexport function bulkRfsFailed(\n bulkId: string,\n streamId: string,\n error: IStreamError,\n): BulkRfsFailed {\n return {\n type: 'BULK_RFS_FAILED',\n bulkId,\n streamId,\n error,\n };\n}\n\nexport interface BulkRfsCancelSent {\n type: 'BULK_RFS_CANCEL_SENT';\n bulkId: string;\n streamId: string;\n}\n\nexport function bulkRfsCancelSent(bulkId: string, streamId: string): BulkRfsCancelSent {\n return {\n type: 'BULK_RFS_CANCEL_SENT',\n bulkId,\n streamId,\n };\n}\n\nexport interface BulkRfsCancelFailed {\n type: 'BULK_RFS_CANCEL_FAILED';\n bulkId: string;\n streamId: string;\n}\n\nexport function bulkRfsCancelFailed(bulkId: string, streamId: string): BulkRfsCancelFailed {\n return {\n type: 'BULK_RFS_CANCEL_FAILED',\n bulkId,\n streamId,\n };\n}\n\nexport interface BulkExecutionRequestedEpic {\n type: 'BULK_EXECUTION_REQUESTED_EPIC';\n bulkId: string;\n streamId: string;\n}\nexport function bulkExecutionRequestedEpic(\n bulkId: string,\n streamId: string,\n): BulkExecutionRequestedEpic {\n return {\n type: 'BULK_EXECUTION_REQUESTED_EPIC',\n bulkId,\n streamId,\n };\n}\n\nexport interface BulkExecutionSent {\n type: 'BULK_EXECUTION_SENT';\n bulkId: string;\n streamId: string;\n executionId: string;\n execution: IFxBulkExecutionData;\n}\nexport function bulkExecutionSent(\n bulkId: string,\n streamId: string,\n executionId: string,\n execution: IFxBulkExecutionData,\n): BulkExecutionSent {\n return {\n type: 'BULK_EXECUTION_SENT',\n bulkId,\n streamId,\n executionId,\n execution,\n };\n}\n\nexport interface BulkExecutionSentSucceeded {\n type: 'BULK_EXECUTION_SENT_SUCCEEDED';\n streamId: string;\n}\nexport function bulkExecutionSentSucceeded(streamId: string): BulkExecutionSentSucceeded {\n return {\n type: 'BULK_EXECUTION_SENT_SUCCEEDED',\n streamId,\n };\n}\n\nexport interface BulkExecutionFailed {\n type: 'BULK_EXECUTION_FAILED';\n executionId: string;\n streamError: IStreamError;\n}\nexport function bulkExecutionFailed(\n executionId: string,\n streamError: IStreamError,\n): BulkExecutionFailed {\n return {\n type: 'BULK_EXECUTION_FAILED',\n executionId,\n streamError,\n };\n}\n\nexport interface BulkExecutionReceived {\n type: 'BULK_EXECUTION_RECEIVED';\n executionId: string;\n}\nexport function bulkExecutionReceived(executionId: string): BulkExecutionReceived {\n return {\n type: 'BULK_EXECUTION_RECEIVED',\n executionId,\n };\n}\n\nexport interface BulkFillReportReceived {\n type: 'BULK_FILL_REPORT_RECEIVED';\n executionId: string;\n tradeIds: readonly string[];\n}\n\nexport function bulkFillReportReceived(\n executionId: string,\n tradeIds: readonly string[],\n): BulkFillReportReceived {\n return {\n type: 'BULK_FILL_REPORT_RECEIVED',\n executionId,\n tradeIds,\n };\n}\n\nexport interface BulkIncrementMargin {\n type: 'BULK_INCREMENT_MARGIN';\n bulkId: string;\n date: string;\n}\n\nexport function bulkIncrementMargin(bulkId: string, date: string): BulkIncrementMargin {\n return {\n type: 'BULK_INCREMENT_MARGIN',\n bulkId,\n date,\n };\n}\n\nexport interface BulkDecrementMargin {\n type: 'BULK_DECREMENT_MARGIN';\n bulkId: string;\n date: string;\n}\n\nexport function bulkDecrementMargin(bulkId: string, date: string): BulkDecrementMargin {\n return {\n type: 'BULK_DECREMENT_MARGIN',\n bulkId,\n date,\n };\n}\n\nexport interface BulkSetMargin {\n type: 'BULK_SET_MARGIN';\n bulkId: string;\n date: string;\n value: number;\n}\n\nexport function bulkSetMargin(bulkId: string, date: string, value: number): BulkSetMargin {\n return {\n type: 'BULK_SET_MARGIN',\n bulkId,\n date,\n value,\n };\n}\n\nexport interface BulkRestart {\n type: 'BULK_RESTART';\n bulkId: string;\n}\n\nexport function bulkRestart(bulkId: string): BulkRestart {\n return {\n type: 'BULK_RESTART',\n bulkId,\n };\n}\n","import type { Thunk } from 'state';\nimport { fieldData } from 'utils/fieldSelectors';\nimport type { CurrencyChoice } from 'state/share/productModel/litterals';\n\nexport function bulkCurrencyChanged(quoteId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const { data: prevCcy } = fieldData(sl.getBulkAmountCurrency(state, quoteId));\n const amountCurrency: CurrencyChoice = prevCcy === 2 ? 1 : 2;\n\n dispatch(ac.bulkPropertyChanged(quoteId, { amountCurrency }));\n };\n}\n\nexport function bulkCurrencyPairChangedThunk(quoteId: string, currencyPair: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n dispatch(ac.bulkPropertyChanged(quoteId, { currencyPair }));\n if (\n currencyPair !== undefined &&\n currencyPair !== sl.getBulkCurrencyPair(state, quoteId).value\n ) {\n dispatch(ac.espStreamRestartThunk(quoteId, currencyPair, undefined, undefined));\n }\n };\n}\n","import type { Thunk } from 'state';\nimport { fieldData } from 'utils/fieldSelectors';\nimport type { BulkLineProduct } from '../fxBulksModel';\n\nexport function bulkLegWayChanged(quoteId: string, legId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const { data: prevWay } = fieldData(sl.getBulkLegWay(state, quoteId, legId));\n if (prevWay === 'Buy') {\n dispatch(ac.bulkLegPropertyChanged(quoteId, legId, { way: 'Sell' }));\n } else if (prevWay === 'Sell') {\n dispatch(ac.bulkLegPropertyChanged(quoteId, legId, { way: 'Buy' }));\n }\n };\n}\n\nexport function bulkLegIsUnevenChanged(quoteId: string, legId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const { data: prevIsUneven } = fieldData(sl.getBulkLegIsUneven(state, quoteId, legId));\n dispatch(ac.bulkLegPropertyChanged(quoteId, legId, { isUneven: !prevIsUneven }));\n };\n}\n\nexport function bulkLegProductChanged(\n quoteId: string,\n legId: string,\n product: BulkLineProduct,\n): Thunk {\n return (dispatch, _getState, { actionCreators: ac }) => {\n dispatch(ac.bulkLegReset(quoteId, legId));\n dispatch(ac.bulkLegPropertyChanged(quoteId, legId, { product }));\n };\n}\n","import { isEmpty } from '@sgme/fp';\nimport type { Thunk } from 'state';\n\nexport function bulkLegSelected(quoteId: string, legId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const legIds = sl.getBulkLegs(state, quoteId);\n\n const previouslySelectedLegs = sl\n .getBulkSelectedLegs(state, quoteId)\n .filter(leg => legIds.includes(leg));\n\n let selectedLegs: readonly string[];\n if (previouslySelectedLegs.includes(legId)) {\n selectedLegs = previouslySelectedLegs.filter(leg => leg !== legId);\n } else {\n selectedLegs = [...previouslySelectedLegs, legId];\n }\n\n dispatch(ac.bulkSelectionChanged(quoteId, selectedLegs));\n };\n}\n\nexport function bulkAllSelected(quoteId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const legIds = sl.getBulkLegs(state, quoteId);\n\n const previouslySelectedLegs = sl\n .getBulkSelectedLegs(state, quoteId)\n .filter(leg => legIds.includes(leg));\n\n let selectedLegs: readonly string[];\n if (previouslySelectedLegs.length < legIds.length) {\n selectedLegs = legIds;\n } else {\n selectedLegs = [];\n }\n\n dispatch(ac.bulkSelectionChanged(quoteId, selectedLegs));\n };\n}\n\nexport function bulkAllUnselected(quoteId: string): Thunk {\n return (dispatch, _, { actionCreators: ac }) => {\n dispatch(ac.bulkSelectionChanged(quoteId, []));\n };\n}\n\nexport function bulkRemoveSelectedLegs(quoteId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const selectedLegs = sl.getBulkSelectedLegs(getState(), quoteId);\n const legs = sl.getBulkLegs(getState(), quoteId);\n if (!isEmpty(selectedLegs)) {\n // eslint-disable-next-line no-unused-expressions\n legs.length === selectedLegs.length\n ? dispatch(ac.bulkReset(quoteId))\n : dispatch(ac.bulkLegsRemoved(quoteId, selectedLegs));\n }\n };\n}\n\nexport function bulkActivateSelectedLegs(quoteId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const previouslyExcludedLegs = sl.getBulkExcludedLegs(getState(), quoteId);\n const selectedLegs = sl.getBulkSelectedLegs(getState(), quoteId);\n\n const excludedLegs = previouslyExcludedLegs.filter(legId => !selectedLegs.includes(legId));\n if (!isEmpty(selectedLegs)) {\n dispatch(\n ac.bulkLegsExcluded(\n quoteId,\n excludedLegs,\n previouslyExcludedLegs.filter(legId => !excludedLegs.includes(legId)),\n ),\n );\n dispatch(ac.bulkAllUnselected(quoteId));\n }\n };\n}\n\nexport function bulkExcludeSelectedLegs(quoteId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const previouslyExcludedLegs = sl.getBulkExcludedLegs(getState(), quoteId);\n const selectedLegs = sl\n .getBulkSelectedLegs(getState(), quoteId)\n .filter(legId => !previouslyExcludedLegs.includes(legId));\n\n const excludedLegs = [...previouslyExcludedLegs, ...selectedLegs];\n if (!isEmpty(selectedLegs)) {\n dispatch(ac.bulkLegsExcluded(quoteId, excludedLegs, []));\n dispatch(ac.bulkAllUnselected(quoteId));\n }\n };\n}\n","import type { Thunk } from 'state';\n\nexport function bulkRfsCancelThunk(bulkId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const currentStreamId = sl.getBulkCurrentStreamId(getState(), bulkId);\n if (currentStreamId !== null) {\n dispatch(ac.bulkRfsCancel(bulkId, currentStreamId));\n dispatch(ac.bulkRfsCancelEpic(bulkId, currentStreamId));\n }\n dispatch(ac.bulkRfsClearError(bulkId));\n };\n}\n\nexport function bulkClientChangedThunk(bulkId: string, clientId: string): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const companyId = sl.getCompanyIdFromClientId(getState(), clientId);\n dispatch(ac.espStreamRestartThunk(bulkId, undefined, undefined, companyId));\n dispatch(ac.bulkRfsCancelThunk(bulkId));\n };\n}\n","import type { Thunk } from 'state';\n\nexport function bulkExecutionRequestedThunk(bulkId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const canTrade = sl.isCanTradeState(state);\n if (canTrade !== true) {\n return;\n }\n\n const streamId = sl.getBulkCurrentStreamId(state, bulkId);\n if (streamId == null) {\n return;\n }\n\n dispatch(ac.bulkExecutionRequestedEpic(bulkId, streamId));\n };\n}\n\nexport function bulkRestartThunk(bulkId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const executionId = sl.getTileCurrentExecutionId(getState(), bulkId);\n dispatch(ac.bulkRestart(bulkId));\n if (executionId !== null) {\n dispatch(ac.executionCleanup(executionId));\n }\n };\n}\n","/**\n * @todo This is dirty as hell, but at the time there is no better option.\n * If you, reader from future, have one, feel free to nuke that.\n */\nexport function saveFile(fileName: string, file: Blob) {\n const url = URL.createObjectURL(file).toString();\n const a = document.createElement('a');\n a.href = url;\n a.download = fileName;\n a.rel = 'noopener';\n a.style.display = 'none';\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n}\n","import { format } from 'date-fns';\nimport type { Thunk } from 'state';\nimport type { CurrencyChoice } from 'state/share/productModel/litterals';\nimport { fieldData } from 'utils/fieldSelectors';\nimport { saveFile } from 'utils/saveFile';\nimport type { IQuoteLeg } from '../fxBulksModel';\nimport {\n getBidAskValueWith,\n makeForwardPointWithMargin,\n sideToWay,\n makeAllIn,\n} from '../selectors/utils';\n\nexport function bulkExportCsv(bulkId: string): Thunk {\n return (_dispatch, getState, { selectors: sl }) => {\n const state = getState();\n const ccyPair = fieldData(sl.getBulkCurrencyPair(state, bulkId)).data!;\n const precision = sl.getCurrencyPrecision(state, ccyPair);\n const amountCcy = fieldData(sl.getBulkAmountCurrency(state, bulkId)).data!;\n const streamId = sl.getBulkCurrentStreamId(state, bulkId);\n if (streamId === null) {\n return;\n }\n const streamState = sl.getBulkStreamState(state, streamId);\n if (streamState.status !== 'PRICING') {\n return null;\n }\n\n const csvContent = formatCsv(\n streamState.quote.nettedLegs,\n streamState.quote.legs,\n mapLegWith(ccyPair, amountCcy, precision),\n );\n\n const fileName = `Export-SGMarketsFX-BulkTrade-${format(\n streamState.quote.frontTimestamp,\n 'yyyy-MM-dd',\n )}-${format(streamState.quote.frontTimestamp, 'HH:mm:ss')}.csv`;\n saveFile(fileName, new Blob([csvContent], { type: 'text/csv' }));\n };\n}\n\nconst formatCsv = (\n nettedLegs: readonly IQuoteLeg[],\n splitLegs: readonly IQuoteLeg[],\n legMapper: (leg: IQuoteLeg) => readonly string[],\n) => {\n const separator = ';';\n const csvHeaders = [\n 'Type',\n 'CCY Pair',\n 'Dealt CCY',\n 'Way',\n 'Amount',\n 'Date',\n 'Tenor',\n 'Spot',\n 'Points',\n 'All in',\n ];\n\n return [\n ['Pricing'],\n csvHeaders,\n ...nettedLegs.map(legMapper),\n [],\n ['Booking'],\n csvHeaders,\n ...splitLegs.map(legMapper),\n ]\n .map(row => row.join(separator))\n .join('\\n');\n};\n\nconst mapLegWith = (ccyPair: string, amountCcy: CurrencyChoice, precision: number) => {\n const [ccy1, ccy2] = ccyPair.split('/');\n const dealtCcy = amountCcy === 1 ? ccy1 : ccy2;\n return (leg: IQuoteLeg) => {\n const getBidAskValue = getBidAskValueWith(leg.customerWay);\n const spotWithMargin = getBidAskValue(leg.spotWithMargin);\n const forwardPointsWithMargin = makeForwardPointWithMargin(\n sideToWay(leg.customerWay),\n getBidAskValue(leg.forwardPoints),\n getBidAskValue(leg.forwardMarginPoints),\n );\n const allInWithMargin = makeAllIn(spotWithMargin, forwardPointsWithMargin, precision);\n\n return [\n leg.isForward ? 'FORWARD' : 'SPOT',\n ccyPair,\n dealtCcy,\n leg.customerWay,\n leg.amount.toString(),\n leg.date,\n leg.dateTenor,\n spotWithMargin.toString(),\n forwardPointsWithMargin.toString(),\n allInWithMargin.toString(),\n ];\n };\n};\n","import type { FxAccumulatorQuoteWithPrice } from '../fxAccumulatorsModel';\nimport type { IStreamError } from 'state/globalError/globalErrorModel';\nimport type { QuoteContributionType } from 'state/share/productModel/litterals';\n\nexport interface AccumulatorRfsStarted {\n type: 'ACCUMULATOR_RFS_STARTED';\n quoteId: string;\n rfsId: string;\n rfsStartedAt: Date;\n forceTradeable: boolean;\n}\n\nexport function accumulatorRfsStarted(\n quoteId: string,\n rfsId: string,\n rfsStartedAt: Date,\n forceTradeable: boolean,\n): AccumulatorRfsStarted {\n return {\n type: 'ACCUMULATOR_RFS_STARTED',\n quoteId,\n rfsId,\n rfsStartedAt,\n forceTradeable,\n };\n}\n\nexport interface AccumulatorRfsRequestEpic {\n type: 'ACCUMULATOR_RFS_REQUEST_EPIC';\n quoteId: string;\n forceTradeable: boolean;\n bypassCheck: boolean;\n}\n\nexport function accumulatorRfsRequestEpic(\n quoteId: string,\n forceTradeable: boolean,\n bypassCheck: boolean,\n): AccumulatorRfsRequestEpic {\n return {\n type: 'ACCUMULATOR_RFS_REQUEST_EPIC',\n quoteId,\n forceTradeable,\n bypassCheck,\n };\n}\n\nexport interface AccumulatorRfsQuoteReceived {\n type: 'ACCUMULATOR_RFS_QUOTE_RECEIVED';\n quoteId: string;\n rfsId: string;\n quote: FxAccumulatorQuoteWithPrice;\n quoteDate: Date;\n tiering: string | null;\n skippedLimitCheck: boolean;\n quoteContribution: QuoteContributionType | null;\n}\n\nexport function accumulatorRfsQuoteReceived(\n quoteId: string,\n rfsId: string,\n quote: FxAccumulatorQuoteWithPrice,\n quoteDate: Date,\n tiering: string | null,\n skippedLimitCheck: boolean,\n quoteContribution: QuoteContributionType | null,\n): AccumulatorRfsQuoteReceived {\n return {\n type: 'ACCUMULATOR_RFS_QUOTE_RECEIVED',\n quoteId,\n quote,\n rfsId,\n quoteDate,\n tiering,\n skippedLimitCheck,\n quoteContribution,\n };\n}\n\nexport interface AccumulatorTraderNotificationReceived {\n type: 'ACCUMULATOR_TRADER_NOTIFICATION_RECEIVED';\n quoteId: string;\n rfsId: string;\n traderId: string | null;\n quoteContribution: QuoteContributionType | null;\n}\n\nexport function accumulatorTraderNotificationReceived(\n quoteId: string,\n rfsId: string,\n traderId: string | null,\n quoteContribution: QuoteContributionType | null,\n): AccumulatorTraderNotificationReceived {\n return {\n type: 'ACCUMULATOR_TRADER_NOTIFICATION_RECEIVED',\n quoteId,\n rfsId,\n traderId,\n quoteContribution,\n };\n}\n\nexport interface AccumulatorRfsFailed {\n type: 'ACCUMULATOR_RFS_FAILED';\n quoteId: string;\n rfsId: string;\n error: IStreamError;\n}\n\nexport function accumulatorRfsFailed(\n quoteId: string,\n rfsId: string,\n error: IStreamError,\n): AccumulatorRfsFailed {\n return {\n type: 'ACCUMULATOR_RFS_FAILED',\n quoteId,\n rfsId,\n error,\n };\n}\n\nexport interface AccumulatorRfsCanceled {\n type: 'ACCUMULATOR_RFS_CANCELED';\n quoteId: string;\n rfsId: string;\n shouldKeepAsExpired: boolean;\n}\n\nexport function accumulatorRfsCanceled(\n quoteId: string,\n rfsId: string,\n shouldKeepAsExpired: boolean,\n): AccumulatorRfsCanceled {\n return {\n type: 'ACCUMULATOR_RFS_CANCELED',\n quoteId,\n rfsId,\n shouldKeepAsExpired,\n };\n}\nexport interface AccumulatorRfsCanceledSent {\n type: 'ACCUMULATOR_RFS_CANCELED_SENT';\n quoteId: string;\n rfsId: string;\n}\n\nexport function accumulatorRfsCanceledSent(\n quoteId: string,\n rfsId: string,\n): AccumulatorRfsCanceledSent {\n return {\n type: 'ACCUMULATOR_RFS_CANCELED_SENT',\n quoteId,\n rfsId,\n };\n}\n\nexport interface AccumulatorRfsCancelFailed {\n type: 'ACCUMULATOR_RFS_CANCEL_FAILED';\n quoteId: string;\n rfsId: string;\n}\n\nexport function accumulatorRfsCancelFailed(\n quoteId: string,\n rfsId: string,\n): AccumulatorRfsCancelFailed {\n return {\n type: 'ACCUMULATOR_RFS_CANCEL_FAILED',\n quoteId,\n rfsId,\n };\n}\n\nexport interface AccumulatorRfsTerminated {\n type: 'ACCUMULATOR_RFS_TERMINATED';\n quoteId: string;\n rfsId: string;\n shouldKeepAsExpired: boolean;\n}\n\nexport function accumulatorRfsTerminated(\n quoteId: string,\n rfsId: string,\n shouldKeepAsExpired: boolean,\n): AccumulatorRfsTerminated {\n return {\n type: 'ACCUMULATOR_RFS_TERMINATED',\n quoteId,\n rfsId,\n shouldKeepAsExpired,\n };\n}\n\nexport interface AccumulatorRfsLastRemoved {\n type: 'ACCUMULATOR_RFS_LAST_REMOVED';\n quoteId: string;\n rfsId: string;\n}\n\nexport function accumulatorRfsLastRemoved(\n quoteId: string,\n rfsId: string,\n): AccumulatorRfsLastRemoved {\n return {\n type: 'ACCUMULATOR_RFS_LAST_REMOVED',\n quoteId,\n rfsId,\n };\n}\n\nexport interface AccumulatorRfsClearError {\n type: 'ACCUMULATOR_RFS_CLEAR_ERROR';\n quoteId: string;\n}\n\nexport function accumulatorRfsClearError(quoteId: string): AccumulatorRfsClearError {\n return {\n type: 'ACCUMULATOR_RFS_CLEAR_ERROR',\n quoteId,\n };\n}\n","import type { TradeCaptureError } from '../../tile/fxTileModel';\nimport type { FxAccumulatorPatch, AccumulatorSchedule } from '../fxAccumulatorsModel';\n\nexport interface AccumulatorPropertiesRequested {\n type: 'ACCUMULATOR_PROPERTIES_REQUESTED';\n quoteId: string;\n sessionId: string;\n}\n\nexport function accumulatorPropertiesRequested(\n quoteId: string,\n sessionId: string,\n): AccumulatorPropertiesRequested {\n return {\n type: 'ACCUMULATOR_PROPERTIES_REQUESTED',\n quoteId,\n sessionId,\n };\n}\n\nexport interface AccumulatorPropertiesRequestFailed {\n type: 'ACCUMULATOR_PROPERTIES_REQUEST_FAILED';\n quoteId: string;\n error: TradeCaptureError;\n}\n\nexport function accumulatorPropertiesRequestFailed(\n quoteId: string,\n error: TradeCaptureError,\n): AccumulatorPropertiesRequestFailed {\n return {\n type: 'ACCUMULATOR_PROPERTIES_REQUEST_FAILED',\n quoteId,\n error,\n };\n}\n\nexport interface AccumulatorPropertiesReceived {\n type: 'ACCUMULATOR_PROPERTIES_RECEIVED';\n quoteId: string;\n patch: FxAccumulatorPatch;\n isReadyToPrice: boolean | null;\n isPriceObsolete: boolean;\n isProductObsolete: boolean;\n idVersion: number;\n summary: string;\n numberOfSettlements?: number | null;\n schedule?: AccumulatorSchedule;\n}\n\nexport function accumulatorPropertiesReceived(\n quoteId: string,\n patch: FxAccumulatorPatch,\n idVersion: number,\n isReadyToPrice: boolean | null,\n isPriceObsolete = false,\n isProductObsolete = false,\n summary = '',\n numberOfSettlements?: number | null,\n schedule?: AccumulatorSchedule,\n): AccumulatorPropertiesReceived {\n return {\n type: 'ACCUMULATOR_PROPERTIES_RECEIVED',\n quoteId,\n patch,\n isReadyToPrice,\n isPriceObsolete,\n isProductObsolete,\n idVersion,\n summary,\n numberOfSettlements,\n schedule,\n };\n}\n","import type { IFxAccumulatorExecutionData } from '../fxAccumulatorsModel';\nimport type { IStreamError } from 'state/globalError/globalErrorModel';\n\nexport interface AccumulatorExecutionRequested {\n type: 'ACCUMULATOR_EXECUTION_REQUESTED';\n quoteId: string;\n rfsId: string;\n}\n\nexport function accumulatorExecutionRequested(\n quoteId: string,\n rfsId: string,\n): AccumulatorExecutionRequested {\n return {\n type: 'ACCUMULATOR_EXECUTION_REQUESTED',\n quoteId,\n rfsId,\n };\n}\n\nexport interface AccumulatorExecutionSentSucceeded {\n type: 'ACCUMULATOR_EXECUTION_SENT_SUCCEEDED';\n executionId: string;\n}\n\nexport function accumulatorExecutionSentSucceeded(\n executionId: string,\n): AccumulatorExecutionSentSucceeded {\n return {\n type: 'ACCUMULATOR_EXECUTION_SENT_SUCCEEDED',\n executionId,\n };\n}\n\nexport interface AccumulatorExecutionSent {\n type: 'ACCUMULATOR_EXECUTION_SENT';\n instrument: 'Accumulator';\n quoteId: string;\n rfsId: string;\n executionId: string;\n executedQuoteId: string;\n execution: IFxAccumulatorExecutionData;\n}\n\nexport function accumulatorExecutionSent(\n quoteId: string,\n rfsId: string,\n executionId: string,\n executedQuoteId: string,\n execution: IFxAccumulatorExecutionData,\n): AccumulatorExecutionSent {\n return {\n type: 'ACCUMULATOR_EXECUTION_SENT',\n instrument: 'Accumulator',\n quoteId,\n rfsId,\n executionId,\n executedQuoteId,\n execution,\n };\n}\n\nexport interface AccumulatorExecutionFailed {\n type: 'ACCUMULATOR_EXECUTION_FAILED';\n streamError: IStreamError;\n executionId: string;\n}\n\nexport function accumulatorExecutionFailed(\n executionId: string,\n streamError: IStreamError,\n): AccumulatorExecutionFailed {\n return {\n type: 'ACCUMULATOR_EXECUTION_FAILED',\n streamError,\n executionId,\n };\n}\n\nexport interface AccumulatorExecutionReceived {\n type: 'ACCUMULATOR_EXECUTION_RECEIVED';\n executionId: string;\n}\n\nexport function accumulatorExecutionReceived(executionId: string): AccumulatorExecutionReceived {\n return {\n type: 'ACCUMULATOR_EXECUTION_RECEIVED',\n executionId,\n };\n}\n\nexport interface AccumulatorFillReportReceived {\n type: 'ACCUMULATOR_FILL_REPORT_RECEIVED';\n executionId: string;\n tradeIds: readonly string[];\n}\n\nexport function accumulatorFillReportReceived(\n executionId: string,\n tradeIds: readonly string[],\n): AccumulatorFillReportReceived {\n return {\n type: 'ACCUMULATOR_FILL_REPORT_RECEIVED',\n executionId,\n tradeIds,\n };\n}\n","import type { AccumulatorSavedTile } from 'api/workspaceService/model';\nimport type {\n AccumulatorScheduleInputs,\n FxForwardAccumulatorInputs,\n FxTargetAccumulatorInputs,\n IFxAccumulatorValues,\n} from '../fxAccumulatorsModel';\nimport type {\n AccumulatorPropertiesReceived,\n AccumulatorPropertiesRequested,\n AccumulatorPropertiesRequestFailed,\n} from './tradeCapture';\nimport type {\n AccumulatorRfsCanceled,\n AccumulatorRfsCanceledSent,\n AccumulatorRfsCancelFailed,\n AccumulatorRfsClearError,\n AccumulatorRfsFailed,\n AccumulatorRfsLastRemoved,\n AccumulatorRfsQuoteReceived,\n AccumulatorRfsRequestEpic,\n AccumulatorRfsStarted,\n AccumulatorRfsTerminated,\n AccumulatorTraderNotificationReceived,\n} from './rfs';\nimport type {\n AccumulatorExecutionFailed,\n AccumulatorExecutionReceived,\n AccumulatorExecutionRequested,\n AccumulatorExecutionSent,\n AccumulatorExecutionSentSucceeded,\n AccumulatorFillReportReceived,\n} from './execution';\nimport type { RestoredTiles } from 'state/clientWorkspace';\nimport type { PatchAccuType } from 'epics/metaSelectors/accumulator/tradeCaptureToBackend';\n\nexport * from './rfs';\nexport * from './tradeCapture';\nexport * from './execution';\n\nexport type FxAccumulatorAction =\n | AccumulatorTileRestoreEpic\n | AccumulatorPropertiesChanged\n | AccumulatorScheduleLegPropertiesChanged\n | AccumulatorScheduleReset\n | AccumulatorScheduleLegAdded\n | AccumulatorScheduleLegRemoved\n | AccumulatorScheduleImported\n | AccumulatorPropertiesPristine\n | AccumulatorPropertiesRemoveError\n | AccumulatorPropertiesRequested\n | AccumulatorPropertiesRequestFailed\n | AccumulatorPropertiesReceived\n | AccumulatorRfsRequestEpic\n | AccumulatorTileReset\n | AccumulatorRfsStarted\n | AccumulatorRfsQuoteReceived\n | AccumulatorTraderNotificationReceived\n | AccumulatorRfsFailed\n | AccumulatorRfsTerminated\n | AccumulatorRfsCanceled\n | AccumulatorRfsCanceledSent\n | AccumulatorRfsCancelFailed\n | AccumulatorRfsClearError\n | AccumulatorRfsLastRemoved\n | AccumulatorExecutionRequested\n | AccumulatorExecutionSent\n | AccumulatorExecutionSentSucceeded\n | AccumulatorExecutionFailed\n | AccumulatorExecutionReceived\n | AccumulatorFillReportReceived\n | AccumulatorToggleDisplayMode;\n\nexport interface AccumulatorTileRestoreEpic {\n type: 'ACCUMULATOR_TILE_RESTORE_EPIC';\n tiles: RestoredTiles;\n}\n\nexport function accumulatorTileRestoreEpic(\n tiles: RestoredTiles,\n): AccumulatorTileRestoreEpic {\n return {\n type: 'ACCUMULATOR_TILE_RESTORE_EPIC',\n tiles,\n };\n}\n\nexport interface AccumulatorPropertiesChanged {\n type: 'ACCUMULATOR_PROPERTIES_CHANGED';\n quoteId: string;\n patch: Partial & PatchAccuType;\n}\n\nexport function accumulatorPropertiesChanged(\n quoteId: string,\n patch: Partial & PatchAccuType,\n): AccumulatorPropertiesChanged {\n return {\n type: 'ACCUMULATOR_PROPERTIES_CHANGED',\n quoteId,\n patch,\n };\n}\n\nexport interface AccumulatorScheduleLegPropertiesChanged {\n type: 'ACCUMULATOR_SCHEDULE_LEG_PROPERTIES_CHANGED';\n quoteId: string;\n legId: string;\n patch: Partial>;\n}\n\nexport function accumulatorScheduleLegPropertiesChanged(\n quoteId: string,\n legId: string,\n patch: Partial,\n): AccumulatorScheduleLegPropertiesChanged {\n return {\n type: 'ACCUMULATOR_SCHEDULE_LEG_PROPERTIES_CHANGED',\n quoteId,\n legId,\n patch,\n };\n}\n\nexport interface AccumulatorScheduleReset {\n type: 'ACCUMULATOR_SCHEDULE_RESET';\n quoteId: string;\n}\n\nexport function accumulatorScheduleReset(quoteId: string): AccumulatorScheduleReset {\n return {\n type: 'ACCUMULATOR_SCHEDULE_RESET',\n quoteId,\n };\n}\n\nexport interface AccumulatorScheduleLegAdded {\n type: 'ACCUMULATOR_SCHEDULE_LEG_ADDED';\n quoteId: string;\n legId: string;\n}\n\nexport function accumulatorScheduleLegAdded(\n quoteId: string,\n legId: string,\n): AccumulatorScheduleLegAdded {\n return {\n type: 'ACCUMULATOR_SCHEDULE_LEG_ADDED',\n quoteId,\n legId,\n };\n}\n\nexport interface AccumulatorScheduleLegRemoved {\n type: 'ACCUMULATOR_SCHEDULE_LEG_REMOVED';\n quoteId: string;\n legId: string;\n}\n\nexport function accumulatorScheduleLegRemoved(\n quoteId: string,\n legId: string,\n): AccumulatorScheduleLegRemoved {\n return {\n type: 'ACCUMULATOR_SCHEDULE_LEG_REMOVED',\n quoteId,\n legId,\n };\n}\n\nexport interface AccumulatorScheduleImported {\n type: 'ACCUMULATOR_SCHEDULE_IMPORTED';\n quoteId: string;\n patch: Record>;\n}\n\nexport function accumulatorScheduleImported(\n quoteId: string,\n patch: Record>,\n): AccumulatorScheduleImported {\n return {\n type: 'ACCUMULATOR_SCHEDULE_IMPORTED',\n quoteId,\n patch,\n };\n}\n\nexport interface AccumulatorPropertiesPristine {\n type: 'ACCUMULATOR_PROPERTIES_PRISTINE';\n quoteId: string;\n fieldName: keyof IFxAccumulatorValues;\n}\n\nexport function accumulatorPropertiesPristine(\n quoteId: string,\n fieldName: keyof IFxAccumulatorValues,\n): AccumulatorPropertiesPristine {\n return {\n type: 'ACCUMULATOR_PROPERTIES_PRISTINE',\n quoteId,\n fieldName,\n };\n}\n\nexport interface AccumulatorPropertiesRemoveError {\n type: 'ACCUMULATOR_PROPERTIES_REMOVE_ERROR';\n quoteId: string;\n keys: ReadonlyArray;\n}\n\nexport function accumulatorPropertiesRemoveError(\n quoteId: string,\n keys: ReadonlyArray,\n): AccumulatorPropertiesRemoveError {\n return {\n type: 'ACCUMULATOR_PROPERTIES_REMOVE_ERROR',\n quoteId,\n keys,\n };\n}\n\nexport interface AccumulatorTileReset {\n type: 'ACCUMULATOR_TILE_RESET';\n quoteId: string;\n}\n\nexport function accumulatorTileReset(quoteId: string): AccumulatorTileReset {\n return {\n type: 'ACCUMULATOR_TILE_RESET',\n quoteId,\n };\n}\n\nexport function accumulatorToggleDisplayMode(quoteId: string) {\n return {\n type: 'ACCUMULATOR_DISPLAYMODE_TOGGLE',\n quoteId,\n } as const;\n}\n\nexport type AccumulatorToggleDisplayMode = ReturnType;\n","import type { Thunk } from 'state';\nimport type { CurrencyChoice } from 'state/share/productModel/litterals';\nimport { fieldData } from 'utils/fieldSelectors';\n\nexport function accumulatorTileClosedThunk(quoteId: string, automatically = false): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const state = getState();\n if (!sl.isTilePresent(state, quoteId)) {\n return;\n }\n const tabId = sl.getClientWorkspaceIdByQuoteId(state, quoteId);\n dispatch(ac.accumulatorRfsCancelThunk(quoteId));\n const lastStreamId = sl.getAccumulatorLastStreamId(state, quoteId);\n if (lastStreamId !== null) {\n dispatch(ac.accumulatorRfsLastRemoved(quoteId, lastStreamId));\n }\n dispatch(ac.espTileStreamUnsubscribeThunk(quoteId));\n dispatch(ac.clientWorkspaceTileDeleted(quoteId, tabId, automatically));\n };\n}\n\nexport function accumulatorAmountCurrencyMaskChangedThunk(quoteId: string): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const state = getState();\n const oldAmountCurrency = fieldData(sl.getAccumulatorAmountCurrency(state, quoteId)).data;\n const amountCurrency = ((oldAmountCurrency % 2) + 1) as CurrencyChoice;\n dispatch(ac.accumulatorPropertiesChanged(quoteId, { amountCurrency }));\n };\n}\n\nexport function accumulatorClientChangedThunk(quoteId: string, clientId: string): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const companyId = sl.getCompanyIdFromClientId(getState(), clientId);\n dispatch(ac.accumulatorRfsCancelThunk(quoteId));\n dispatch(ac.espStreamRestartThunk(quoteId, undefined, undefined, companyId));\n };\n}\n\nexport function accumulatorTileStateCleaned(tileId: string): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n dispatch(ac.accumulatorRfsCancelThunk(tileId));\n\n const lastStreamId = sl.getAccumulatorLastStreamId(getState(), tileId);\n if (lastStreamId !== null) {\n dispatch(ac.accumulatorRfsLastRemoved(tileId, lastStreamId));\n }\n\n dispatch(ac.espTileStreamUnsubscribeThunk(tileId));\n };\n}\n","import type { AccumulatorTradeCapturePatch } from 'epics/metaSelectors/accumulator/tradeCaptureFromBackend';\nimport type { Thunk } from 'state';\n\nexport function accumulatorPropertiesReceivedThunk(quoteId: string, patch: AccumulatorTradeCapturePatch): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n if (\n !sl.isTilePresent(state, quoteId) ||\n sl.getQuoteInstrument(state, quoteId) !== 'Accumulator' // todo refacto\n ) {\n return;\n }\n\n const {\n idVersion,\n isReadyToPrice,\n isPriceObsolete,\n isProductObsolete,\n summary,\n schedule,\n numberOfSettlements,\n ...receivedPatch\n } = patch;\n\n // If we have a stream and product is obsolete, we clear it so that the user doesn't see the expired price while waiting for new price\n const currentStreamId = sl.getAccumulatorRfsStreamId(state, quoteId);\n if (currentStreamId !== null && isProductObsolete) {\n dispatch(ac.accumulatorRfsCanceled(quoteId, currentStreamId, false));\n }\n\n // If we have an expired stream and the price is obsolete, we clear it because the price needs to be updated after the properties change\n const lastStreamId = sl.getAccumulatorLastStreamId(state, quoteId);\n if (lastStreamId !== null && isPriceObsolete) {\n dispatch(ac.accumulatorRfsLastRemoved(quoteId, lastStreamId));\n }\n\n dispatch(\n ac.accumulatorPropertiesReceived(\n quoteId,\n receivedPatch,\n idVersion,\n isReadyToPrice,\n isPriceObsolete,\n isProductObsolete,\n summary,\n numberOfSettlements,\n schedule,\n ),\n );\n\n const currencyPair = receivedPatch.values.currencyPair;\n if (currencyPair !== undefined && currencyPair !== sl.getAccumulatorCurrencyPairInput(state, quoteId).value) {\n dispatch(ac.espStreamRestartThunk(quoteId, currencyPair, undefined, undefined));\n }\n };\n}\n\nexport function accumulatorScheduleAddFixingThunk(quoteId: string): Thunk {\n return (dispatch, _getState, { actionCreators: ac, getNewGuid }) => {\n dispatch(ac.accumulatorScheduleLegAdded(quoteId, getNewGuid()));\n };\n}\n","import type { Thunk } from 'state';\nimport type { QuoteContributionType } from 'state/share/productModel/litterals';\nimport type { FxAccumulatorQuoteWithPrice } from '../fxAccumulatorsModel';\n\nexport function accumulatorRfsCancelThunk(quoteId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const currentStreamId = sl.getAccumulatorRfsStreamId(state, quoteId);\n\n if (currentStreamId !== null) {\n const isPricing = sl.getAccumulatorRfsStatus(state, currentStreamId) === 'PRICING';\n\n dispatch(ac.accumulatorRfsCanceled(quoteId, currentStreamId, isPricing));\n }\n /**\n * @todo cancel pending request\n */\n dispatch(ac.accumulatorRfsClearError(quoteId));\n };\n}\n\nexport function accumulatorExecutionRequestedThunk(quoteId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n\n if (sl.isCanTradeState(state) !== true) {\n return;\n }\n\n const rfsStreamId = sl.getAccumulatorRfsStreamId(state, quoteId);\n if (rfsStreamId === null) {\n return;\n }\n\n dispatch(ac.accumulatorExecutionRequested(quoteId, rfsStreamId));\n };\n}\n\nexport function accumulatorQuoteReceivedThunk(\n quoteId: string,\n rfsId: string,\n quote: FxAccumulatorQuoteWithPrice,\n quoteDate: Date,\n tiering: string | null,\n skippedLimitCheck: boolean,\n quoteContribution: QuoteContributionType | null,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n if (!sl.isQuotePresentWithInstrument(state, quoteId, 'Accumulator')) {\n return;\n }\n const lastStreamId = sl.getAccumulatorLastStreamId(state, quoteId);\n if (lastStreamId !== null) {\n dispatch(ac.accumulatorRfsLastRemoved(quoteId, lastStreamId));\n }\n dispatch(\n ac.accumulatorRfsQuoteReceived(\n quoteId,\n rfsId,\n quote,\n quoteDate,\n tiering,\n skippedLimitCheck,\n quoteContribution,\n ),\n );\n };\n}\n\nexport function accumulatorTraderNotificationReceivedThunk(\n quoteId: string,\n rfsId: string,\n traderId: string | null,\n quoteContribution: QuoteContributionType | null,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n if (!sl.isTilePresent(state, quoteId)) {\n return;\n }\n const lastStreamId = sl.getAccumulatorLastStreamId(state, quoteId);\n if (lastStreamId !== null) {\n dispatch(ac.accumulatorRfsLastRemoved(quoteId, lastStreamId));\n }\n dispatch(ac.accumulatorTraderNotificationReceived(quoteId, rfsId, traderId, quoteContribution));\n };\n}\n","import type { Thunk } from 'state';\nimport type { ImportedScheduleRow } from 'utils/csvParsing/accuSchedule';\nimport type { AccumulatorScheduleInputs } from '../fxAccumulatorsModel';\n\nexport function scheduleImportedThunk(\n quoteId: string,\n importedScheduleRows: readonly ImportedScheduleRow[],\n): Thunk {\n return (dispatch, _getState, { actionCreators: ac, getNewGuid }) => {\n const legsPatch = Object.fromEntries(\n importedScheduleRows.map(row => [getNewGuid(), mapScheduleRowToFixing(row)]),\n );\n\n dispatch(ac.accumulatorScheduleImported(quoteId, legsPatch));\n };\n}\n\nconst mapScheduleRowToFixing = (row: ImportedScheduleRow): Partial => ({\n fixingDate: row.fixingDate,\n paymentDate: row.settlementDate,\n strike: row.strike,\n amount: row.notional,\n leverageAmount: row.leverageAmount,\n});\n","import type { Thunk } from '../../index';\nimport { getFieldContent } from '../../../utils/fieldSelectors';\nimport { FIRST_CURRENCY, SECOND_CURRENCY } from '../../share/productModel/litterals';\nimport { isDefined, isDefinedAndNonEmpty } from '@sgme/fp';\n\nexport function accumulatorHedgeNotionalChangedThunk(quoteId: string, hedgeAmount: string): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const state = getState();\n\n const hedgeCurrency = getFieldContent(sl.getAccumulatorHedgeCurrency(state, quoteId)) ?? FIRST_CURRENCY;\n\n dispatch(\n ac.accumulatorPropertiesChanged(quoteId, {\n hedgeAmount,\n hedgeCurrency,\n }),\n );\n };\n}\n\nexport function accumulatorHedgeNotionalCurrencyChangedThunk(accumulatorId: string, hedgeAmount: string): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const state = getState();\n\n const amount = isDefinedAndNonEmpty(hedgeAmount)\n ? hedgeAmount\n : getFieldContent(sl.getAccumulatorHedgeAmount(state, accumulatorId));\n\n const oldCcy = getFieldContent(sl.getAccumulatorHedgeCurrency(state, accumulatorId));\n const newCcy = oldCcy === FIRST_CURRENCY ? SECOND_CURRENCY : FIRST_CURRENCY;\n\n if (amount === null) {\n dispatch(\n ac.accumulatorPropertiesChanged(accumulatorId, {\n hedgeCurrency: newCcy,\n }),\n );\n\n // If there is an active RFS, restart it or it will send hedge in wrong currency\n // TODO ABO - Should we implement this in accumulator case ?\n // if (sl.getTileCurrentStreamId(state, accumulatorId) !== null) {\n // dispatch(ac.optionStreamRefreshThunk(optionId, true, true, true));\n // }\n } else {\n dispatch(\n ac.accumulatorPropertiesChanged(accumulatorId, {\n hedgeAmount: isDefined(amount) ? amount.toString() : null,\n hedgeCurrency: newCcy,\n }),\n );\n }\n };\n}\n","import type {\n ESPPriceLadder,\n ESPPriceType,\n ESPClientPriceLadder,\n ESPTraderPriceLadder,\n} from './espStreamsModel';\nimport type { TieringInfo } from 'state/share/tieringModel';\n\nexport type FxEspStreamAction =\n | EspSubscriptionRequestedEpic\n | EspRefcountReset\n | EspStartPricesReceptionEpic\n | EspTileStreamIdAndRefcountUpdated\n | EspPriceReceived\n | EspInvalidPriceReceived\n | EspHearbeatMissed\n | EspStreamUnsubscribe\n | EspStreamUnsubscriptionRequestSent\n | EspStreamTileUnsubscribe\n | EspSubscriptionRequestFailed\n | EspTieringRequestEpic\n | EspStreamKeyRequestPending\n | EspStreamReconnected\n | EspStreamsRefreshEpic;\n\nexport interface EspSubscriptionRequestedEpic {\n type: 'ESP_SUBSCRIPTION_REQUESTED_EPIC';\n tileId: string;\n tieringInfo: TieringInfo;\n streamKey: string;\n currencyPair: string;\n companyId: number;\n connectionId: string;\n}\n\nexport function espSubscriptionRequestedEpic(\n tileId: string,\n tieringInfo: TieringInfo,\n streamKey: string,\n currencyPair: string,\n companyId: number,\n connectionId: string,\n): EspSubscriptionRequestedEpic {\n return {\n type: 'ESP_SUBSCRIPTION_REQUESTED_EPIC',\n tileId,\n tieringInfo,\n streamKey,\n currencyPair,\n companyId,\n connectionId,\n };\n}\n\nexport interface EspTieringRequestEpic {\n type: 'ESP_TIERING_REQUEST_EPIC';\n quoteId: string;\n currencyPair: string;\n companyId: number;\n tenor: string;\n}\n\nexport function espTieringRequestEpic(\n quoteId: string,\n currencyPair: string,\n companyId: number,\n tenor: string,\n): EspTieringRequestEpic {\n return {\n type: 'ESP_TIERING_REQUEST_EPIC',\n quoteId,\n currencyPair,\n companyId,\n tenor,\n };\n}\n\nexport interface EspStreamKeyRequestPending {\n type: 'ESP_STREAM_KEY_REQUEST_PENDING';\n tileId: string;\n}\n\nexport function espStreamKeyRequestPending(tileId: string): EspStreamKeyRequestPending {\n return {\n tileId,\n type: 'ESP_STREAM_KEY_REQUEST_PENDING',\n };\n}\n\nexport interface EspStreamReconnected {\n type: 'ESP_STREAM_RECONNECTED';\n tileId: string;\n streamKey: string;\n isDefaultTIering: boolean;\n}\n\nexport function espStreamReconnected(\n tileId: string,\n streamKey: string,\n isDefaultTIering: boolean,\n): EspStreamReconnected {\n return {\n tileId,\n streamKey,\n type: 'ESP_STREAM_RECONNECTED',\n isDefaultTIering,\n };\n}\n\nexport interface EspStreamsRefreshEpic {\n type: 'ESP_STREAMS_REFRESH_EPIC';\n connectionId: string;\n streamKeys: readonly string[];\n}\n\nexport function espStreamsRefreshEpic(\n connectionId: string,\n streamKeys: readonly string[],\n): EspStreamsRefreshEpic {\n return {\n type: 'ESP_STREAMS_REFRESH_EPIC',\n connectionId,\n streamKeys,\n };\n}\n\nexport interface EspSubscriptionRequestFailed {\n type: 'ESP_SUBSCRIPTION_REQUEST_FAILED';\n tileId: string;\n error: string;\n}\n\nexport function espSubscriptionRequestFailed(\n tileId: string,\n error: string,\n): EspSubscriptionRequestFailed {\n return {\n type: 'ESP_SUBSCRIPTION_REQUEST_FAILED',\n tileId,\n error,\n };\n}\n\nexport interface EspRefcountReset {\n type: 'ESP_REFCOUNT_RESET';\n streamId: string;\n tiering: string | null;\n}\n\nexport function espRefcountReset(streamId: string, tiering: string | null): EspRefcountReset {\n return {\n type: 'ESP_REFCOUNT_RESET',\n streamId,\n tiering,\n };\n}\n\nexport interface EspStartPricesReceptionEpic {\n type: 'ESP_START_PRICES_RECEPTION_EPIC';\n streamId: string;\n}\n\nexport function espStartPricesReceptionEpic(streamId: string): EspStartPricesReceptionEpic {\n return {\n type: 'ESP_START_PRICES_RECEPTION_EPIC',\n streamId,\n };\n}\n\nexport interface EspTileStreamIdAndRefcountUpdated {\n type: 'ESP_TILE_STREAM_ID_AND_REFCOUNT_UPDATED';\n tileId: string;\n streamId: string;\n isDefaultTiering: boolean;\n}\n\nexport function espTileStreamIdAndRefcountUpdated(\n tileId: string,\n streamId: string,\n isDefaultTiering: boolean,\n): EspTileStreamIdAndRefcountUpdated {\n return {\n type: 'ESP_TILE_STREAM_ID_AND_REFCOUNT_UPDATED',\n tileId,\n streamId,\n isDefaultTiering,\n };\n}\n\ninterface ICashESPPriceReceived {\n type: 'ESP_PRICE_RECEIVED';\n streamId: string;\n quoteId: string;\n multipassInstanceId: string;\n priceDecodedTime: number;\n frontTimestamp: number;\n backtimestamp: number;\n}\n\ninterface ICashESPTraderPriceReceived extends ICashESPPriceReceived {\n priceType: 'ESP.TRADER.PRICE';\n ladders: ESPTraderPriceLadder;\n}\n\ninterface ICashESPClientPriceReceived extends ICashESPPriceReceived {\n priceType: 'ESP.CLIENT.PRICE';\n ladders: ESPClientPriceLadder;\n}\n\nexport type EspPriceReceived = ICashESPClientPriceReceived | ICashESPTraderPriceReceived;\n\nexport function espPriceReceived(\n streamId: string,\n quoteId: string,\n multipassInstanceId: string,\n ladders: ESPPriceLadder,\n priceDecodedTime: number,\n frontTimestamp: number,\n backtimestamp: number,\n priceType: ESPPriceType = 'ESP.TRADER.PRICE',\n) {\n return {\n type: 'ESP_PRICE_RECEIVED',\n quoteId,\n multipassInstanceId,\n streamId,\n ladders,\n priceType,\n priceDecodedTime,\n frontTimestamp,\n backtimestamp,\n } as EspPriceReceived;\n}\n\ninterface EspInvalidPriceReceived {\n type: 'ESP_INVALID_PRICE_RECEIVED';\n streamId: string;\n}\n\nexport function espInvalidPriceReceived(streamId: string) {\n return {\n type: 'ESP_INVALID_PRICE_RECEIVED',\n streamId,\n };\n}\n\ninterface EspHearbeatMissed {\n type: 'ESP_HEARTBEAT_MISSED';\n streamId: string;\n}\n\nexport function espHeartbeatMissed(streamId: string): EspHearbeatMissed {\n return {\n type: 'ESP_HEARTBEAT_MISSED',\n streamId,\n };\n}\n\nexport interface EspStreamUnsubscribe {\n type: 'ESP_STREAM_UNSUBSCRIBE_EPIC';\n cashId: string;\n streamKey: string;\n connectionId: string;\n}\n\nexport function espStreamUnsubscribe(\n cashId: string,\n connectionId: string,\n streamKey: string,\n): EspStreamUnsubscribe {\n return {\n type: 'ESP_STREAM_UNSUBSCRIBE_EPIC',\n cashId,\n streamKey,\n connectionId,\n };\n}\n\nexport interface EspStreamUnsubscriptionRequestSent {\n type: 'ESP_STREAM_UNSUBSCRIPTION_REQUEST_SENT';\n tileId: string;\n espStreamId: string;\n}\n\nexport function espStreamUnsubscriptionRequestSent(\n tileId: string,\n espStreamId: string,\n): EspStreamUnsubscriptionRequestSent {\n return {\n type: 'ESP_STREAM_UNSUBSCRIPTION_REQUEST_SENT',\n tileId,\n espStreamId,\n };\n}\n\nexport interface EspStreamTileUnsubscribe {\n type: 'ESP_STREAM_TILE_UNSUBSCRIBE';\n tileId: string;\n streamKey: string;\n}\n\nexport function espStreamTileUnsubscribe(\n tileId: string,\n streamKey: string,\n): EspStreamTileUnsubscribe {\n return {\n type: 'ESP_STREAM_TILE_UNSUBSCRIBE',\n tileId,\n streamKey,\n };\n}\n","export const SPOT_TENOR = 'SP';\n\nexport const DEFAULT_TENORS = [\n 'TOD',\n 'TOM',\n 'ON',\n SPOT_TENOR,\n 'TN',\n 'SN',\n '1W',\n '2W',\n '3W',\n '1M',\n '2M',\n '3M',\n '6M',\n '9M',\n '12M',\n '18M',\n '2Y',\n '3Y',\n '4Y',\n '5Y',\n '10Y', // not in PREMIUM_DATE_WITH_IN_FINE_TENORS\n 'IMM1',\n 'IMM2',\n 'BMF',\n];\n\nexport const PREMIUM_DATE_WITH_IN_FINE_TENORS = [\n 'in fine', // not in DEFAULT_TENORS\n 'TOD',\n 'TOM',\n 'ON',\n SPOT_TENOR,\n 'TN',\n 'SN',\n '1W',\n '2W',\n '3W',\n '1M',\n '2M',\n '3M',\n '6M',\n '9M',\n '12M',\n '18M',\n '2Y',\n '3Y',\n '4Y',\n '5Y',\n 'IMM1',\n 'IMM2',\n 'BMF',\n];\n","import type { Thunk } from 'state';\nimport { SPOT_TENOR } from 'components/share/tenors';\nimport { fieldData } from 'utils/fieldSelectors';\nimport type { TieringInfo } from 'state/share/tieringModel';\nimport type { ProductName } from 'state/share/productModel';\nimport { isEmpty } from '@sgme/fp';\n\n/* When we are ready to switch to a new ESP stream because some critical stream related data\n * changed (client, currency pair, product name/instrument).\n *\n * Check whether the tile support ESP and either request a new streamKey (mostly tiering)\n * or immediately cancel the existing ESP stream\n */\nexport function espStreamRestartThunk(\n tileId: string,\n newCurrencyPair?: string | null,\n newProductName?: ProductName,\n newCompanyId?: number,\n newTenor?: string | null,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n\n if (!sl.isTilePresent(state, tileId)) {\n return;\n }\n const currencyPair = newCurrencyPair ?? sl.getTileCurrencyPair(state, tileId).value;\n\n if (currencyPair === null) {\n return;\n }\n\n const productName = newProductName ?? sl.getProductName(state, tileId);\n\n const companyId = newCompanyId ?? sl.getCompanyIdFromQuoteId(state, tileId);\n\n const tenor =\n newTenor ??\n (productName === 'FxSpot' || productName === 'FxFwd'\n ? sl.getCashMaturityDateTenor(state, tileId).value\n : SPOT_TENOR);\n\n const isTileEspCompatible = sl.isProductEspCompatible(state, tileId);\n\n if (isTileEspCompatible) {\n dispatch(\n ac.espTieringRequestEpic(tileId, currencyPair!, companyId!, tenor!),\n );\n } else {\n dispatch(ac.espTileStreamUnsubscribeThunk(tileId));\n }\n };\n}\n\nexport function buildStreamKey(currencyPair: string, tiering: string, tenor: string) {\n const streamKey = `${currencyPair}&&${tiering}`;\n if (tenor === SPOT_TENOR) {\n return streamKey;\n }\n return `${streamKey}&&${tenor}`;\n}\n\n/* When we have retrieved tiering (streamKey) from backend\n *\n * May cancel the current ESP (if streamKey changed), and subscribe to a new one using an epic\n */\nexport function espTieringRequestSuccessThunk(\n tileId: string,\n tieringInfo: TieringInfo,\n currencyPair: string,\n companyId: number,\n previousStreamKey: string | null,\n tenor: string,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n\n if (!sl.isTilePresent(state, tileId) || !sl.isProductEspCompatible(state, tileId)) {\n return;\n }\n\n const streamKey = buildStreamKey(currencyPair, tieringInfo.tiering, tenor);\n if (previousStreamKey !== null) {\n if (previousStreamKey === streamKey) {\n dispatch(ac.espStreamReconnected(tileId, streamKey, tieringInfo.defaultTiering));\n return;\n } else {\n dispatch(ac.espTileStreamUnsubscribeThunk(tileId, previousStreamKey));\n }\n }\n\n const refCount = sl.getEspStreamRefCount(state, streamKey);\n\n if (refCount !== null && refCount > 0) {\n dispatch(ac.espTileUpdatedThunk(tileId, streamKey, tieringInfo.defaultTiering));\n } else {\n const connectionId = sl.getConnectionId(state);\n dispatch(\n ac.espSubscriptionRequestedEpic(\n tileId,\n tieringInfo,\n streamKey,\n currencyPair,\n companyId,\n connectionId,\n ),\n );\n }\n };\n}\n\nexport function espTileUpdatedThunk(\n tileId: string,\n streamKey: string,\n isDefaultTiering: boolean,\n): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const state = getState();\n if (!sl.isTilePresent(state, tileId) || !sl.isProductEspCompatible(state, tileId)) {\n return;\n }\n\n dispatch(ac.espTileStreamIdAndRefcountUpdated(tileId, streamKey, isDefaultTiering));\n };\n}\n\n/* When backend subscribed us successfully to an ESP stream\n *\n * We try to detect here race-conditions where the tile state has changed while the\n * subscription was in progress and the ESP is no longer valid.\n */\nexport function espTileSubscriptionRequestSuccessThunk(\n tileId: string,\n espStreamId: string,\n espTieringInfo: TieringInfo,\n currencyPair: string,\n companyId: number,\n): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const state = getState();\n\n const productName = sl.getProductName(state, tileId);\n const actualCurrencyPair = sl.getTileCurrencyPair(state, tileId).value;\n const { companyId: actualCompanyId } = sl.getClientForTile(state, tileId);\n\n const isEspRequestContextChanged = (\n !sl.isTilePresent(state, tileId)\n || !sl.isProductEspCompatible(state, tileId)\n || actualCompanyId !== companyId\n || actualCurrencyPair !== currencyPair\n )\n\n if (isEspRequestContextChanged) {\n dispatch(espCancelInvalidSubscriptionThunk(tileId, espStreamId, espTieringInfo));\n return;\n }\n\n // get espStream\n const espStream = sl.getEspStreamState(state, espStreamId);\n\n // if esp stream does not exist\n if (espStream === undefined) {\n // then create esp stream in stream collection and add its id to the tile\n dispatch(ac.espRefcountReset(espStreamId, espTieringInfo.tiering));\n dispatch(ac.espStartPricesReceptionEpic(espStreamId));\n } else if (productName === 'FxSpot') {\n const amount = sl.getCashAmount(state, tileId).value;\n const { data: amountCurrency } = fieldData(sl.getCashAmountCurrency(state, tileId));\n\n // get margin from esp stream\n const marginPatch = sl.getCashEspStreamMargin(state, espStreamId, amount, amountCurrency);\n\n dispatch(ac.cashLocalPropertyChanged(tileId, marginPatch));\n }\n\n dispatch(ac.espTileUpdatedThunk(tileId, espStreamId, espTieringInfo.defaultTiering));\n };\n}\n\n/* When we just subcribed to an ESP stream, and we want to cancel immediately\n * that subscription because the tile has changed in the meantime.\n */\nfunction espCancelInvalidSubscriptionThunk(\n tileId: string,\n espStreamId: string,\n espTieringInfo: TieringInfo,\n): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const state = getState();\n\n const connectionId = sl.getConnectionId(state);\n const espStream = sl.getEspStreamState(state, espStreamId);\n\n if (espStream === undefined) {\n // if esp stream does not exist yet, create it so that we can\n // unsubscribe from it in dedicated epic\n dispatch(ac.espRefcountReset(espStreamId, espTieringInfo.tiering));\n }\n\n dispatch(ac.espStreamUnsubscribe(tileId, connectionId, espStreamId));\n };\n}\n\n/* Send un-subscribe to backend */\nexport function espTileStreamUnsubscribeThunk(\n tileId: string,\n previousEspStreamId: string | null = null,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n\n const streamKey = previousEspStreamId || sl.getTileEspStreamId(state, tileId);\n\n if (streamKey !== null) {\n const refCount = sl.getEspStreamRefCount(state, streamKey);\n const connectionId = sl.getConnectionId(state);\n\n dispatch(ac.espStreamTileUnsubscribe(tileId, streamKey));\n if (refCount && refCount === 1) {\n dispatch(ac.espStreamUnsubscribe(tileId, connectionId, streamKey));\n }\n }\n };\n}\n\nexport function cashHeartbeatMissedESPStreamsRefreshThunk(): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n if (sl.isStreamingDisconnected(state)) {\n return;\n }\n const connectionId = sl.getConnectionId(state);\n const streamKeys = sl.getHeartbeatMissedEspStreams(state);\n if (!isEmpty(streamKeys)) {\n dispatch(ac.espStreamsRefreshEpic(connectionId, streamKeys));\n }\n };\n}\n","export type TileAction = TileExecutionOverlayHidden;\n\nexport interface TileExecutionOverlayHidden {\n type: 'TILE_EXECUTION_OVERLAY_HIDDEN';\n quoteId: string;\n}\n\nexport function tileExecutionOverlayHidden(quoteId: string): TileExecutionOverlayHidden {\n return {\n type: 'TILE_EXECUTION_OVERLAY_HIDDEN',\n quoteId,\n };\n}\n","import type { Selector } from './typings';\nimport { fieldData } from 'utils/fieldSelectors';\n\nexport const liftToString =\n (selector: Selector): Selector =>\n (...args) => {\n const value = fieldData(selector(...args)).data;\n return {\n value: null,\n input: value ? value.toString() : value,\n };\n };\n\nexport const bindSelector =\n (transform: (arg: T) => R) =>\n (selector: (...args: A) => T) =>\n (...args: A) =>\n transform(selector(...args));\n\nexport const boxInValue = (value: T): { value: T } => ({\n value,\n});\n\nexport const boxResult = bindSelector(boxInValue);\n","import type { Selectors } from 'state/selectors';\nimport type { Mappers } from './typings';\nimport { liftToString } from './utils';\n\nexport const cashMappers = (sl: Selectors): Mappers<'Cash', 'maturityDateTenor'> => ({\n currencyPair: sl.getCashCurrencyPair,\n amount: liftToString(sl.getCashAmount),\n amountCurrency: sl.getCashAmountCurrency,\n maturityDate: sl.getCashMaturityDate,\n isNonDeliverable: sl.getCashIsNonDeliverable,\n fixingCurrency: sl.getCashFixingCurrency,\n fixingSource: sl.getCashFixingSource,\n sndFixingSource: sl.getCashSndFixingSource,\n xCurrency: sl.getCashXCurrency,\n});\n","import type { Selectors } from 'state/selectors';\nimport type { Mappers } from './typings';\nimport { liftToString } from './utils';\n\nexport const swapMappers = (\n sl: Selectors,\n): Mappers<'Swap', 'xCurrency' | 'nearPaymentDateTenor' | 'farPaymentDateTenor'> => ({\n currencyPair: sl.getSwapCurrencyPair,\n isNonDeliverable: sl.getSwapIsNonDeliverable,\n isUneven: sl.getSwapIsUneven,\n isOffMarket: sl.getSwapIsOffMarket,\n amountCurrency: sl.getSwapAmountCurrency,\n nearAmount: liftToString(sl.getSwapNearAmount),\n nearPaymentDate: sl.getSwapNearPaymentDate,\n nearPriceReference: sl.getSwapNearPrice,\n farAmount: liftToString(sl.getSwapFarAmount),\n farPaymentDate: sl.getSwapFarPaymentDate,\n farPriceReference: sl.getSwapFarPrice,\n fixingSource: sl.getSwapFixingSource,\n sndFixingSource: sl.getSwapSndFixingSource,\n});\n","import type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport { fieldData } from 'utils/fieldSelectors';\nimport type { LegMappers, Mappers } from './typings';\nimport { liftToString } from './utils';\nimport { strictEntries } from 'utils/object/entries';\nimport type { IFxVanillaLegInputs } from 'state/fxOptions/model/optionsLegs';\nimport type { LegInputs } from '../productModel';\nimport { isVanillaLeg } from '../../fxOptions/utilities';\nimport { isDefined } from '@sgme/fp';\nimport type { IFxHedgeInputs } from '../../fxOptions/model/optionHedges';\nimport { FIRST_CURRENCY } from '../productModel/litterals';\n\nexport const optionMappers = (\n sl: Selectors,\n): Mappers<'Option', 'premiumDateTenor' | 'isInFine'> => ({\n currencyPair: sl.getOptionCurrencyPair,\n premiumDate: sl.getOptionPremiumDate,\n hedgeType: sl.getOptionHedgeType,\n markupCurrency: sl.getOptionMarkupCurrency,\n amountReference: sl.getOptionAmountReference,\n});\n\nexport const vanillaLegsMappers = (\n sl: Selectors,\n): LegMappers<'Option', 'premiumDateTenor' | 'isInFine'> => ({\n productName: () => ({ value: 'Vanilla' as const }),\n legIds: () => ({ value: [undefined] as [undefined] | null, input: null as [undefined] | null }),\n optionType: sl.getOptionVanillaLegOptionType,\n side: sl.getOptionVanillaLegSide,\n expiryDate: sl.getOptionVanillaLegExpiry,\n expiryDateTenor: sl.getOptionVanillaLegExpiryTenor,\n strike: liftToString(sl.getOptionVanillaLegStrike),\n notionalAmount: liftToString(sl.getOptionVanillaLegNotional),\n notionalCurrency: sl.getOptionVanillaLegNotionalCurrency,\n deliveryDate: sl.getOptionVanillaLegDelivery,\n premiumBid: sl.getOptionVanillaLegPremiumBid,\n premiumAsk: sl.getOptionVanillaLegPremiumAsk,\n premiumDate: sl.getOptionVanillaLegPremiumDate,\n premiumCurrency: sl.getOptionVanillaLegPremiumCurrency,\n premiumTypeString: sl.getOptionVanillaLegPremiumTypeString,\n markup: liftToString(sl.getOptionVanillaLegMarkup),\n settlementType: sl.getOptionVanillaLegSettlementType,\n marketPlace: sl.getOptionVanillaLegMarketPlace,\n cashSettlementCurrency: sl.getOptionVanillaLegCashSettlementCurrency,\n fixingReference1: sl.getOptionVanillaLegFixingReference1,\n volatilityBid: sl.getOptionVanillaLegVolatilityBid,\n volatilityAsk: sl.getOptionVanillaLegVolatilityAsk,\n});\n\nexport const getAllLegsInputs = (\n sl: Selectors,\n state: AppState,\n optionId: string,\n): Record>> => {\n const allLegs = sl.getAllLegsOfOptionWithId(state, optionId);\n\n return allLegs.reduce((acc, [legId, leg]) => {\n if (isVanillaLeg(leg)) {\n const vanillaSelectors = strictEntries(vanillaLegsMappers(sl));\n\n acc[legId] = vanillaSelectors.reduce((vanillaLeg, [field, getter]) => {\n const legFieldValue = fieldData(getter!(state, legId)).data;\n\n // we do not need legIds on Vanilla for TC update\n if (isDefined(legFieldValue) && field !== 'legIds') {\n vanillaLeg[field] = legFieldValue;\n }\n return vanillaLeg;\n }, {} as Partial);\n } else {\n acc[legId] = {\n productName: leg.productName,\n legIds: leg.legIds,\n };\n }\n\n return acc;\n }, {} as Record>>);\n};\n\nexport function getOptionLegInputs(\n sl: Selectors,\n state: AppState,\n legId: string,\n): Partial {\n const legInputs = strictEntries(vanillaLegsMappers(sl)).reduce((vanillaLeg, [field, getter]) => {\n const legFieldValue = isDefined(legId) ? fieldData(getter!(state, legId)).data : undefined;\n\n // we do not need legIds on Vanilla for TC update\n if (isDefined(legFieldValue) && field !== 'legIds') {\n vanillaLeg[field] = legFieldValue;\n }\n\n return vanillaLeg;\n }, {} as Partial);\n\n return { productName: 'Vanilla', ...legInputs };\n}\n\nexport const getAllHedgesInputs = (\n sl: Selectors,\n state: AppState,\n optionId: string,\n): Record> => {\n const allHedges = sl.getAllHedgesOfOptionWithId(state, optionId);\n\n return allHedges.reduce((acc, [hedgeId, hedge]) => {\n acc[hedgeId] = {\n amount: hedge.inputs.amount ?? isDefined(hedge.values.amount) ? String(hedge.values.amount) : undefined,\n currency: hedge.inputs.currency ?? hedge.values.currency ?? FIRST_CURRENCY,\n rate: hedge.inputs.rate ?? isDefined(hedge.values.rate) ? String(hedge.values.rate) : undefined,\n }\n\n return acc;\n }, {} as Record>);\n};\n","import type { Selectors } from 'state/selectors';\nimport type { Mappers } from './typings';\nimport { liftToString } from './utils';\n\nexport const accuMappers = (\n sl: Selectors,\n): Mappers<\n 'Accumulator',\n | 'premiumDateTenor'\n | 'firstFixingDateTenor'\n | 'settlementMode'\n | 'cashSettlementCurrency'\n | 'markupCurrency'\n | 'schedule'\n> => ({\n currencyPair: sl.getAccumulatorCurrencyPairInput,\n priceType: sl.getAccumulatorPriceType,\n priceCurrency: sl.getAccumulatorPriceCurrency,\n premiumDate: sl.getAccumulatorPremiumDate,\n hedgeType: sl.getAccumulatorHedgeType,\n hedgePrice: sl.getAccumulatorHedgePrice,\n hedgeAmount: sl.getAccumulatorHedgeAmount,\n hedgeCurrency: sl.getAccumulatorHedgeCurrency,\n way: sl.getAccumulatorWay,\n ekiDown: sl.getAccumulatorEkiDown,\n ekiUp: sl.getAccumulatorEkiUp,\n amount: liftToString(sl.getAccumulatorAmount),\n amountCurrency: sl.getAccumulatorAmountCurrency,\n // TODO : NDR - Manage Target / Forward\n amountSplitType: sl.getAccumulatorAmountSplitType,\n leverage: sl.getAccumulatorLeverage,\n leverageAmount: sl.getAccumulatorLeverageAmount,\n strike: sl.getAccumulatorStrike,\n strikeDown: sl.getAccumulatorStrikeDown,\n pivot: sl.getAccumulatorPivot,\n strikeUp: sl.getAccumulatorStrikeUp,\n step: sl.getAccumulatorStep,\n akoTrigger: sl.getAccumulatorAkoTrigger,\n ekiTrigger: sl.getAccumulatorEkiTrigger,\n targetProfitType: sl.getAccumulatorTargetProfitType,\n target: sl.getAccumulatorTarget,\n expiryDate: sl.getAccumulatorExpiryDate,\n expiryTenor: sl.getAccumulatorExpiryTenor,\n fixingFrequency: sl.getAccumulatorFixingFrequency,\n numberOfFixings: sl.getAccumulatorNumberOfFixings,\n settlementFrequency: sl.getAccumulatorSettlementFrequency,\n firstFixingDate: sl.getAccumulatorFirstFixingDate,\n fixingReference1: sl.getAccumulatorFixingReference1,\n fixingReference2: sl.getAccumulatorFixingReference2,\n isCrossed: sl.getAccumulatorIsCrossed,\n crossCurrency: sl.getAccumulatorCrossCurrency,\n});\n","import type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type { Inputs } from '../productModel';\nimport { fieldData } from 'utils/fieldSelectors';\nimport type { DuplicatableInstruments } from './typings';\nimport { cashMappers } from './cashMappers';\nimport { swapMappers } from './swapMappers';\nimport { optionMappers } from './optionMappers';\nimport { accuMappers } from './accumulatorMappers';\n\nconst mappers = {\n Cash: cashMappers,\n Swap: swapMappers,\n Option: optionMappers,\n Accumulator: accuMappers,\n};\n\nexport function getInputs(instrument: I) {\n return (sl: Selectors, state: AppState, quoteId: string): Partial> =>\n Object.entries(mappers[instrument](sl)).reduce((acc, [key, mapper]) => {\n const fieldValue = fieldData(mapper!(state, quoteId)).data;\n return fieldValue ? { ...acc, [key]: fieldValue } : acc;\n }, {} as Partial>);\n}\n","import type { IStreamError } from 'state/globalError/globalErrorModel';\nimport type { Client, Instrument } from 'state/referenceData/referenceDataModel';\n\nexport interface IFxExecutionData {\n instrument: Instrument;\n currencyPair: string;\n client: Client;\n tradeDate: Date;\n}\n\nexport interface IFxExecutionPendingState {\n status: 'Pending';\n}\n\nexport interface IFxExecutionStillPendingState {\n status: 'StillPending';\n}\n\ninterface IFxExecutionTimeoutedDealState {\n status: 'TimeoutedDeal';\n}\n\ninterface IFxExecutionSuccessState {\n status: 'Success';\n}\n\nexport interface IFxExecutionFillReportState {\n status: 'BackOfficeValidated';\n tradeIds: readonly string[];\n}\n\ninterface IFxExecutionNotIntegratedState {\n status: 'NotIntegrated';\n}\n\nexport interface IFxExecutionErrorState {\n status: 'Error';\n streamError: IStreamError;\n}\n\nexport type IFxExecutionState =\n | IFxExecutionPendingState\n | IFxExecutionStillPendingState\n | IFxExecutionTimeoutedDealState\n | IFxExecutionSuccessState\n | IFxExecutionNotIntegratedState\n | IFxExecutionFillReportState\n | IFxExecutionErrorState;\n\nexport type ExecutionStatus = IFxExecutionState['status'];\n\nexport const enum TileExecutionStatus {\n 'pending',\n 'done',\n 'failed',\n}\n","import type { Thunk } from 'state';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport { fieldData } from 'utils/fieldSelectors';\nimport { SPOT_TENOR } from 'components/share/tenors';\nimport { assertUnhandled } from 'utils/error';\nimport {\n type Instrument,\n type InstrumentChoice,\n isSwitchableInstrument,\n type SwitchableInstrument,\n} from 'state/referenceData/referenceDataModel';\nimport { getInputs } from 'state/share/productMappers';\nimport { getAllHedgesInputs, getAllLegsInputs } from 'state/share/productMappers/optionMappers';\nimport { logger } from 'logging/logger';\nimport { TileExecutionStatus } from 'state/executions/executionsStateModel';\nimport { assertIsDefined, assertUnreachable, isEmpty, isNotDefined } from '@sgme/fp';\n\nexport function checkCurrencyPairInversion(\n quoteId: string,\n currencyPair: string | null,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const allCcyPairs = sl.getAllCcyPairs(state);\n\n if (currencyPair === null) {\n return;\n }\n\n const currencyPairExtended = allCcyPairs[currencyPair];\n\n if (currencyPairExtended?.isInverted) {\n const instrument = sl.getQuoteInstrument(state, quoteId);\n\n dispatch(\n ac.localFieldValidationSet(\n instrument,\n quoteId,\n 'currencyPair',\n 'warning',\n 'currency.invertedCurrencyPair',\n ),\n );\n }\n };\n}\n\nexport function currencyPairChangeThunk(quoteId: string, currencyPair: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const instrument = sl.getQuoteInstrument(state, quoteId);\n\n dispatch(ac.localFieldValidationClear(instrument, quoteId, 'currencyPair'));\n dispatch(ac.checkCurrencyPairInversion(quoteId, currencyPair));\n\n const missingCurrencies = currencyPair\n .split('/')\n .filter(ccy => sl.getEspLimit(state, ccy) === undefined);\n\n if (!isEmpty(missingCurrencies)) {\n dispatch(ac.retrieveEspLimits(missingCurrencies));\n }\n\n const closedDates = sl.getCurrencyClosedDates(state, currencyPair);\n\n if (isEmpty(closedDates)) {\n dispatch(ac.retrieveClosedDates([currencyPair]));\n }\n\n switch (instrument) {\n case 'Cash':\n dispatch(ac.cashCurrencyPairChangeThunk(quoteId, currencyPair));\n break;\n\n case 'Option':\n dispatch(ac.optionRfsCancelThunk(quoteId));\n dispatch(ac.espTileStreamUnsubscribeThunk(quoteId));\n\n const isTileFirstTCRequest = sl.getOptionTradeCaptureIdVersion(state, quoteId) === null;\n const { defaultHedgeType, optionStrategyGroupLegs } = sl.getUserPreferenceData(state);\n const defaultPriceType = sl.getDefaultPriceTypeForOption(state, quoteId);\n\n if (!isTileFirstTCRequest || defaultPriceType !== 'AMOUNT') {\n dispatch(ac.optionDisplayPriceTypeChanged(quoteId, [1, defaultPriceType]));\n }\n\n if (isTileFirstTCRequest) {\n if (optionStrategyGroupLegs) {\n dispatch(ac.optionToggleGroup(quoteId, true));\n }\n\n dispatch(\n ac.optionPropertyChanged(quoteId, {\n currencyPair,\n ...(defaultHedgeType !== 'Live' ? { hedgeType: defaultHedgeType } : {}),\n ...(defaultPriceType !== 'AMOUNT'\n ? { legs: { 0: { premiumCurrency: 1, premiumTypeString: defaultPriceType } } }\n : {}),\n }),\n );\n } else {\n dispatch(ac.optionTileReset(quoteId, currencyPair));\n }\n break;\n\n case 'Swap':\n dispatch(ac.swapCurrencyPairChangeThunk(quoteId, currencyPair));\n break;\n\n case 'Accumulator':\n dispatch(ac.accumulatorRfsCancelThunk(quoteId));\n dispatch(ac.espTileStreamUnsubscribeThunk(quoteId));\n\n if ((sl.getAccumulatorTradeCaptureIdVersion(state, quoteId) ?? 0) > 0) {\n dispatch(ac.accumulatorTileReset(quoteId));\n }\n\n dispatch(ac.accumulatorPropertiesChanged(quoteId, { currencyPair }));\n break;\n\n case 'Order':\n dispatch(ac.orderCurrencyPairChangeThunk(quoteId, currencyPair));\n break;\n\n case 'Bulk':\n dispatch(ac.bulkCurrencyPairChangedThunk(quoteId, currencyPair));\n break;\n\n case 'BlotterOrder':\n return assertUnhandled('Submitted order currency pair cannot be changed', instrument);\n\n default:\n assertUnreachable(instrument, 'Currency pair change not handled');\n }\n };\n}\n\nexport function resetTileAfterExecutionThunk(\n quoteId: string,\n status: TileExecutionStatus,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n\n if (!sl.isTilePresent(state, quoteId)) {\n return;\n }\n\n dispatch(ac.tileExecutionOverlayHidden(quoteId));\n\n if (sl.isResetTileOnSuccessfulExecution(state) && status === TileExecutionStatus.done) {\n const productName = sl.getProductName(state, quoteId);\n\n switch (productName) {\n case 'FxSpot': {\n const resetedValues = getCashResetedValues(state, quoteId, sl);\n return dispatch(ac.cashPropertiesChanged(quoteId, resetedValues));\n }\n case 'FxSwap':\n case 'FxNdSwap': {\n dispatch(ac.tileInstrumentChangedThunk(quoteId, 'Cash'));\n const resetedValues = getSwapResetedToCashValues(state, quoteId, sl);\n return dispatch(ac.cashPropertiesChanged(quoteId, resetedValues));\n }\n case 'FxFwd': {\n const resetedValues = getCashResetedDeliverableForwardValues(state, quoteId, sl);\n return dispatch(ac.cashPropertiesChanged(quoteId, resetedValues));\n }\n case 'FxNdf': {\n const resetedValues = getCashResetedNonDeliverableForwardValues(state, quoteId, sl);\n return dispatch(ac.cashPropertiesChanged(quoteId, resetedValues));\n }\n }\n }\n };\n}\n\nfunction getCashResetedValues(state: AppState, quoteId: string, sl: Selectors) {\n const amount = sl.getUserDefaultNotional(state);\n const amountCurrency = fieldData(sl.getCashAmountCurrency(state, quoteId)).data;\n\n return { amount, amountCurrency };\n}\n\nfunction getCashResetedDeliverableForwardValues(state: AppState, quoteId: string, sl: Selectors) {\n const resetedValues = getCashResetedValues(state, quoteId, sl);\n\n return {\n maturityDateTenor: SPOT_TENOR,\n ...resetedValues,\n };\n}\n\nfunction getCashResetedNonDeliverableForwardValues(\n state: AppState,\n quoteId: string,\n sl: Selectors,\n) {\n const resetedValues = getCashResetedValues(state, quoteId, sl);\n const canBeDelivered = isCanBeDelivered(state, quoteId, sl);\n\n return canBeDelivered\n ? {\n maturityDateTenor: SPOT_TENOR,\n isNonDeliverable: false,\n ...resetedValues,\n }\n : resetedValues;\n}\n\nfunction isCanBeDelivered(state: AppState, quoteId: string, sl: Selectors) {\n const currencyPair = sl.getCashCurrencyPair(state, quoteId).value;\n const extCcyPair = currencyPair ? sl.getCurrencyPairDetails(state, currencyPair) : null;\n\n return extCcyPair !== null && extCcyPair.canBeDelivered;\n}\n\nexport function nonDeliverableFlagChangeThunk(\n quoteId: string,\n isNonDeliverable: boolean,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const instrument = sl.getQuoteInstrument(state, quoteId);\n\n switch (instrument) {\n case 'Cash':\n if (!isNonDeliverable && sl.isResetTileOnSuccessfulExecution(state)) {\n dispatch(\n ac.cashPropertiesChanged(quoteId, {\n isNonDeliverable: false,\n maturityDateTenor: SPOT_TENOR,\n }),\n );\n } else {\n dispatch(ac.cashPropertiesChanged(quoteId, { isNonDeliverable }));\n }\n break;\n\n case 'Swap':\n dispatch(\n ac.swapPropertyChanged(quoteId, {\n isNonDeliverable,\n isOffMarket: false,\n nearPriceReference: null,\n farPriceReference: null,\n }),\n );\n break;\n\n default:\n logger.logWarning(\n `instrument {instrument_s} has no support for ND currency pair`,\n instrument,\n );\n }\n };\n}\n\nexport function tileClosedThunk(quoteId: string, automatically = false): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n\n if (!sl.isTilePresent(state, quoteId)) {\n return;\n }\n\n const instrument = sl.getQuoteInstrument(state, quoteId);\n\n switch (instrument) {\n case 'Cash':\n return dispatch(ac.cashTileClosed(quoteId, automatically));\n case 'Option':\n return dispatch(ac.optionTileClosed(quoteId, automatically));\n case 'Swap':\n return dispatch(ac.swapTileClosed(quoteId, automatically));\n case 'Accumulator':\n return dispatch(ac.accumulatorTileClosedThunk(quoteId, automatically));\n case 'Bulk':\n return;\n case 'Order':\n case 'BlotterOrder':\n return dispatch(ac.orderClosedThunk(quoteId, automatically));\n default:\n assertUnreachable(instrument, 'Instrument not handled in tile closed thunk');\n }\n };\n}\n\nfunction getSwapResetedToCashValues(state: AppState, quoteId: string, sl: Selectors) {\n const amount = sl.getUserDefaultNotional(state);\n const amountCurrency = fieldData(sl.getSwapAmountCurrency(state, quoteId)).data;\n\n return { amount, amountCurrency };\n}\n\n/**\n * @todo get all rfs request actions\n */\n\nexport function rfsRequestThunk(\n quoteId: string,\n forceTradable = false,\n bypassCheck = false,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n\n if (!sl.isTilePresent(state, quoteId)) {\n return;\n }\n\n const instrument = sl.getQuoteInstrument(state, quoteId);\n\n switch (instrument) {\n case 'Cash':\n return dispatch(ac.cashRfsRequestedThunk(quoteId));\n case 'Accumulator':\n dispatch(ac.accumulatorRfsCancelThunk(quoteId));\n return dispatch(ac.accumulatorRfsRequestEpic(quoteId, forceTradable, bypassCheck));\n case 'Option':\n return dispatch(ac.optionStreamRequestedThunk(quoteId, forceTradable, bypassCheck));\n case 'Swap':\n case 'Bulk':\n case 'Order':\n case 'BlotterOrder':\n return;\n default:\n assertUnreachable(instrument, 'Instrument not handled in rfs request thunk');\n }\n };\n}\n\nexport function resetTileThunk(quoteId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n\n if (!sl.isTilePresent(state, quoteId)) {\n return;\n }\n\n const instrument = sl.getQuoteInstrument(state, quoteId);\n\n switch (instrument) {\n case 'Cash':\n dispatch(ac.cashRfsCancelThunk(quoteId));\n return dispatch(ac.cashTileReset(quoteId));\n case 'Accumulator':\n dispatch(ac.accumulatorRfsCancelThunk(quoteId));\n return dispatch(ac.accumulatorTileReset(quoteId));\n case 'Option':\n dispatch(ac.clientWorkspaceTileMinimizedThunk());\n dispatch(ac.optionStreamCancelThunk(quoteId));\n return dispatch(ac.optionTileReset(quoteId));\n case 'Swap':\n dispatch(ac.swapRfsCancelThunk(quoteId));\n return dispatch(ac.swapTileReset(quoteId));\n case 'Bulk':\n dispatch(ac.bulkRfsCancelThunk(quoteId));\n return dispatch(ac.bulkResetAll(quoteId));\n case 'Order':\n case 'BlotterOrder':\n return;\n default:\n assertUnreachable(instrument, 'Instrument not handled in reset tile thunk');\n }\n };\n}\n\n/**\n * Wrapper for resetTileThunk and keep currencyPair if it's filled\n * @param quoteId string\n * @returns Thunk\n */\nexport function partialResetTileThunk(quoteId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const currencyPair = sl.getTileCurrencyPair(getState(), quoteId).value;\n\n dispatch(ac.resetTileThunk(quoteId));\n\n if (currencyPair !== null) {\n dispatch(ac.currencyPairChangeThunk(quoteId, currencyPair));\n }\n };\n}\n\nexport function tileDuplicateThunk(quoteId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac, getNewGuid }) => {\n const state = getState();\n const instrument = sl.getQuoteInstrument(state, quoteId);\n\n if (!isSwitchableInstrument(instrument)) {\n // duplicate not handled on Bulk and Order instruments\n return;\n }\n\n const productName = sl.getProductName(state, quoteId)!;\n\n const instrumentChoice: InstrumentChoice =\n instrument !== 'Accumulator'\n ? instrument\n : productName === 'FxForwardAccumulator'\n ? 'ForwardAccumulator'\n : 'TargetAccumulator';\n\n const activeTab = sl.getClientWorkspaceActiveTab(state)!;\n const { top, left } = sl.getGridItemPosition(state, activeTab, quoteId);\n const { width } = sl.getGridItemSize(state, activeTab, quoteId);\n const newTileId = getNewGuid();\n\n const newPosition = {\n left: left + width,\n top,\n };\n\n const isOptionGrouped =\n instrument === 'Option' ? sl.getUserPreferenceData(state).optionStrategyGroupLegs : null;\n\n const isOptionGreekAndMktExpanded =\n instrument === 'Option' ? sl.getUserPreferenceData(state).optionExpandGreekAndMkt : null;\n\n dispatch(\n ac.clientWorkspaceTileDuplicated(\n activeTab,\n quoteId,\n newTileId,\n instrumentChoice,\n productName,\n newPosition,\n isOptionGrouped,\n isOptionGreekAndMktExpanded,\n ),\n );\n\n dispatch(ac.gridItemDrag(activeTab, newTileId, newPosition));\n dispatch(ac.gridItemDragEnd(activeTab));\n\n const ccyPair = sl.getTileCurrencyPair(state, quoteId).value;\n\n if (isNotDefined(ccyPair)) {\n return;\n }\n\n dispatch(getTCUpdateActions(quoteId, newTileId, instrument));\n };\n}\n\nfunction getTCUpdateActions(\n existingTileId: string,\n newTileId: string,\n instrument: I,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const inputs = getInputs(instrument)(sl, state, existingTileId);\n\n switch (instrument) {\n case 'Cash':\n const { bidMargin, askMargin, bidForwardMargin, askForwardMargin } = sl.getCashState(\n state,\n existingTileId,\n );\n\n dispatch(ac.cashPropertiesChanged(newTileId, inputs));\n dispatch(\n ac.cashLocalPropertyChanged(newTileId, {\n bidMargin,\n askMargin,\n bidForwardMargin,\n askForwardMargin,\n }),\n );\n return;\n\n case 'Swap':\n const swapMargins = sl.getSwapMargin(state, existingTileId);\n\n dispatch(ac.swapPropertyChanged(newTileId, inputs));\n dispatch(ac.swapLocalPropertyChanged(newTileId, swapMargins));\n return;\n\n case 'Option':\n const allLegsInput = getAllLegsInputs(sl, state, existingTileId);\n const allHedgesInput = getAllHedgesInputs(sl, state, existingTileId);\n\n if (sl.getOptionIsStrategy(state, existingTileId)) {\n dispatch(ac.optionToggleStrategyThunk(newTileId, true));\n }\n\n dispatch(\n ac.optionPropertyChanged(newTileId, {\n ...inputs,\n legs: allLegsInput,\n hedges: allHedgesInput,\n }),\n );\n return;\n\n case 'Accumulator':\n dispatch(ac.accumulatorPropertiesChanged(newTileId, inputs));\n return;\n\n default:\n assertUnhandled(`Unknown TC updates actions for instrument ${instrument}`, instrument);\n }\n };\n}\n\nexport function tileClientOverridenThunk(quoteId: string, clientId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n\n if (!sl.isTilePresent(state, quoteId)) {\n return;\n }\n\n const currentClientId = sl.getClientIdByQuoteId(state, quoteId);\n\n if (currentClientId === clientId) {\n return;\n }\n\n const tabId = sl.getClientWorkspaceIdByQuoteId(state, quoteId);\n const { clientId: defaultClientId } = sl.getClientWorkspaceTab(state, tabId);\n\n if (clientId === defaultClientId) {\n return dispatch(tileClientResetThunk(quoteId));\n }\n\n dispatch(ac.tileClientOverridden(quoteId, clientId));\n dispatch(ac.orderRequestEmailsEpic(clientId, tabId));\n\n const instrument = sl.getQuoteInstrument(state, quoteId);\n\n dispatch(clientChangedThunk(quoteId, instrument, clientId));\n };\n}\n\nexport function tileClientResetThunk(quoteId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n\n if (!sl.isTilePresent(state, quoteId)) {\n return;\n }\n\n dispatch(ac.tileClientReset(quoteId));\n\n const instrument = sl.getQuoteInstrument(state, quoteId);\n const tabId = sl.getClientWorkspaceIdByQuoteId(state, quoteId);\n const { clientId } = sl.getClientWorkspaceTab(state, tabId);\n\n assertIsDefined(clientId, 'Unexpected null clientId in tileClientResetThunk');\n\n dispatch(ac.orderRequestEmailsEpic(clientId, tabId));\n\n dispatch(clientChangedThunk(quoteId, instrument, clientId));\n };\n}\n\nfunction clientChangedThunk(\n quoteId: string,\n instrument: Instrument,\n clientId: string,\n): Thunk {\n return (dispatch, _getState, { actionCreators: ac }) => {\n switch (instrument) {\n case 'Cash':\n dispatch(ac.cashClientChangedThunk(quoteId, clientId));\n return;\n case 'Option':\n dispatch(ac.optionClientChangedThunk(quoteId, clientId));\n return;\n case 'Swap':\n dispatch(ac.swapClientChangedThunk(quoteId));\n return;\n case 'Accumulator':\n dispatch(ac.accumulatorClientChangedThunk(quoteId, clientId));\n return;\n case 'Order':\n dispatch(ac.orderClientChangedThunk(quoteId, clientId));\n return;\n case 'BlotterOrder':\n case 'Bulk':\n return;\n default:\n assertUnreachable(instrument, 'Unhandled instrument');\n }\n };\n}\n","import type {\n InstrumentChoice,\n Client,\n UserInfo,\n EspLimits,\n FeatureToggles,\n ProductsAccess,\n ClosedDates,\n} from './referenceDataModel';\n\nexport type ReferenceDataAction =\n | ReferenceDataReceived\n | RetrieveClosedDates\n | ClosedDatesRetrieved\n | EspLimitsAddCurrencies\n | RetrieveEspLimitsEpic\n | EspLimitsRetrieved\n | RetrieveEspLimitsFailedEpic\n | PinClientAction\n | UnpinClientAction\n | MoveUpPinnedClientAction\n | MoveDownPinnedClientAction\n | RetrievePinnedClientsAction;\n\nexport interface ReferenceDataReceived {\n type: 'REFERENCE_DATA_RECEIVED';\n productTypes: readonly InstrumentChoice[];\n userInfo: UserInfo;\n matomoLogin: string;\n userClients: readonly Client[];\n featureToggles: FeatureToggles;\n productsAccess: ProductsAccess;\n localMarketsCcy: readonly string[];\n}\n\nexport function referenceDataReceived(\n productTypes: readonly InstrumentChoice[],\n userInfo: UserInfo,\n matomoLogin: string,\n userClients: readonly Client[],\n featureToggles: FeatureToggles,\n productsAccess: ProductsAccess,\n localMarketsCcy: readonly string[],\n): ReferenceDataReceived {\n return {\n type: 'REFERENCE_DATA_RECEIVED',\n productTypes,\n userInfo,\n matomoLogin,\n userClients,\n featureToggles,\n productsAccess,\n localMarketsCcy,\n };\n}\n\nexport interface RetrieveClosedDates {\n type: 'RETRIEVE_CLOSED_DATES';\n currencyPairs: readonly string[];\n}\nexport function retrieveClosedDates(currencyPairs: readonly string[]): RetrieveClosedDates {\n return {\n type: 'RETRIEVE_CLOSED_DATES',\n currencyPairs,\n };\n}\n\nexport interface ClosedDatesRetrieved {\n type: 'CLOSED_DATES_RETRIEVED';\n closedDates: ClosedDates;\n}\nexport function closedDatesRetrieved(closedDates: ClosedDates): ClosedDatesRetrieved {\n return {\n type: 'CLOSED_DATES_RETRIEVED',\n closedDates,\n };\n}\n\nexport interface EspLimitsAddCurrencies {\n type: 'ESP_LIMITS_ADD_CURRENCIES';\n currencies: readonly string[];\n}\n\nexport function espLimitsAddCurrencies(currencies: readonly string[]): EspLimitsAddCurrencies {\n return {\n type: 'ESP_LIMITS_ADD_CURRENCIES',\n currencies,\n };\n}\n\nexport interface RetrieveEspLimitsEpic {\n type: 'RETRIEVE_ESP_LIMITS_EPIC';\n currencies: readonly string[];\n}\n\nexport function retrieveEspLimitsEpic(currencies: readonly string[]): RetrieveEspLimitsEpic {\n return {\n type: 'RETRIEVE_ESP_LIMITS_EPIC',\n currencies,\n };\n}\n\nexport interface EspLimitsRetrieved {\n type: 'ESP_LIMITS_RETRIEVED';\n limits: EspLimits;\n}\n\nexport function espLimitsRetrieved(limits: EspLimits): EspLimitsRetrieved {\n return {\n type: 'ESP_LIMITS_RETRIEVED',\n limits,\n };\n}\n\nexport interface RetrieveEspLimitsFailedEpic {\n type: 'RETRIEVE_ESP_LIMITS_FAILED_EPIC';\n currencies: readonly string[];\n retryAfterMs: number | null;\n}\n\nexport function retrieveEspLimitsFailedEpic(\n currencies: readonly string[],\n retryAfterMs: number | null,\n): RetrieveEspLimitsFailedEpic {\n return {\n type: 'RETRIEVE_ESP_LIMITS_FAILED_EPIC',\n currencies,\n retryAfterMs,\n };\n}\n\nexport interface PinClientAction {\n type: 'PIN_CLIENT';\n companyId: number;\n}\n\nexport function pinClientAction(companyId: number): PinClientAction {\n return {\n type: 'PIN_CLIENT',\n companyId,\n };\n}\n\nexport interface UnpinClientAction {\n type: 'UNPIN_CLIENT';\n companyId: number;\n}\n\nexport function unpinClientAction(companyId: number): UnpinClientAction {\n return {\n type: 'UNPIN_CLIENT',\n companyId,\n };\n}\n\nexport interface MoveUpPinnedClientAction {\n type: 'MOVE_UP_PINNED_CLIENT';\n companyId: number;\n}\n\nexport function moveUpPinnedClientAction(companyId: number): MoveUpPinnedClientAction {\n return {\n type: 'MOVE_UP_PINNED_CLIENT',\n companyId,\n };\n}\n\nexport interface MoveDownPinnedClientAction {\n type: 'MOVE_DOWN_PINNED_CLIENT';\n companyId: number;\n}\n\nexport function moveDownPinnedClientAction(companyId: number): MoveDownPinnedClientAction {\n return {\n type: 'MOVE_DOWN_PINNED_CLIENT',\n companyId,\n };\n}\n\nexport interface RetrievePinnedClientsAction {\n type: 'RETRIEVE_PINNED_CLIENT';\n clients: readonly number[];\n}\n\nexport function retrievePinnedClientsAction(\n clients: readonly number[],\n): RetrievePinnedClientsAction {\n return {\n type: 'RETRIEVE_PINNED_CLIENT',\n clients,\n };\n}\n","import type { Thunk } from 'state';\n\nexport function retrieveMissingEspLimits(): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const state = getState();\n const missingEspLimits = sl.getMissingEspLimits(state);\n dispatch(ac.retrieveEspLimitsEpic(missingEspLimits));\n };\n}\n\nexport function retrieveEspLimits(currencies: readonly string[]): Thunk {\n return (dispatch, _getState, { actionCreators: ac }) => {\n dispatch(ac.espLimitsAddCurrencies(currencies));\n dispatch(retrieveMissingEspLimits());\n };\n}\n\nexport function retrieveEspLimitsFailed(delayInSeconds: number): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const state = getState();\n const missingEspLimits = sl.getMissingEspLimits(state);\n dispatch(ac.retrieveEspLimitsFailedEpic(missingEspLimits, delayInSeconds));\n };\n}\n","import { logger } from 'logging/logger';\n\nexport function redirectToRequestAccessPage() {\n logger.logInformation('Redirecting to request access page');\n window.location.replace(window.sgmeConfiguration.accessRequestUrl + location.href);\n}\n\nfunction getQueryParam(queryParam: string): boolean {\n const params = new URLSearchParams(self.location.search);\n if (!params.has(queryParam)) {\n return false;\n }\n\n const param = params.get(queryParam)?.toLocaleLowerCase();\n\n return param === 'true';\n}\n\nexport const isTraceLogEnabledQueryParameter = () => getQueryParam('isTraceLogEnabled');\n","import type { Thunk } from 'state';\nimport { isTraceLogEnabledQueryParameter } from 'utils/url';\nimport { getFakeUser } from 'api/connect';\n\nexport function initStreamThunk(): Thunk {\n return async (_dispatch, _getState, _extraArg) => {\n // a static import lead to unit test failure (we try to start the worker while we cannot load it)\n const { startSignalR, startRemoteLogging, startStreamingPing } = await import(\n 'bootstrap/streams/streamingWorker'\n );\n\n const isTraceLogEnabled = isTraceLogEnabledQueryParameter();\n\n const fakeUser = window.sgmeConfiguration.useFakeSgConnect ? getFakeUser() : undefined;\n\n const logIntervalMs = Number(window.sgmeConfiguration.logIntervalMs);\n const pingInterval = Number(window.sgmeConfiguration.pingIntervalMs);\n const maxEspPingDelayMs = Number(window.sgmeConfiguration.maxEspPingDelayMs);\n\n startSignalR({\n ...window.sgmeConfiguration.signalR,\n fakeUser,\n isTraceLogEnabled,\n });\n\n startRemoteLogging(logIntervalMs);\n startStreamingPing(pingInterval, maxEspPingDelayMs);\n };\n}\n","import type { SavedTile, SavedWorkspace } from 'api/workspaceService/model';\nimport type { OrderTemplate } from 'state/fxOrders/fxOrdersModel';\nimport type { GridItemPosition } from 'state/gridLayout/gridLayoutModels';\nimport type { InstrumentChoice } from 'state/referenceData/referenceDataModel';\nimport type { ProductName } from 'state/share/productModel';\nimport type { TradeCaptureSessionInfos } from 'state/sharedSelectors';\nimport type { Collection } from 'typings/utils';\nimport type { CollapsableKey, TabType } from './clientWorkspaceModel';\n\nexport type ClientWorkspaceAction =\n | ClientWorkspaceTabAdded\n | ClientWorkspaceTabRemoved\n | ClientWorkspaceTabSwitched\n | ClientWorkspaceTabRenamed\n | ClientWorkspaceClientChanged\n | ClientWorkspaceTabTypeChanged\n | ClientWorkspaceNewTileAdded\n | ClientWorkspaceTileRestored\n | ClientWorkspaceTileDuplicated\n | ClientWorkspaceTileReopened\n | ClientWorkspaceTileDeleted\n | ClientworkspaceTileClientErrorChanged\n | ClientWorkspaceTileZoomed\n | ClientWorkspaceTileMinimized\n | TileInstrumentChanged\n | TileClientOverridden\n | TileClientReset\n | GrowlClosed\n | ExecutionCleanup\n | ExecutionStillPending\n | ExecutionTimeoutedDeal\n | ToggleTradingDisabled\n | DisplayStreamErrorDetail\n | DisplayExecutionErrorDetail\n | DisplayPropertiesErrorDetail\n | CloseErrorDetail\n | SaveWorkspaceRequested\n | SaveWorkspaceRequestedEpic\n | SaveWorkspaceReady\n | SaveWorkspaceDone\n | SavedWorkspaceReceived\n | SaveOrderTemplatesRequestedEpic\n | SaveOrderTemplatesReady\n | SaveOrderTemplatesDone\n | SavedOrderTemplatesRequested\n | SavedOrderTemplatesReceived\n | ClientworkspaceTileToggleCollapsed\n | ToggleTradingReceived;\n\nexport interface ClientWorkspaceTabAdded {\n type: 'CLIENTWORKSPACE_TAB_ADDED';\n tabId: string;\n tabType: TabType;\n tabName: string;\n clientId: string | null;\n}\n\nexport function clientWorkspaceTabAdded(\n tabId: string,\n tabType: TabType,\n tabName: string,\n clientId: string | null,\n): ClientWorkspaceTabAdded {\n return {\n type: 'CLIENTWORKSPACE_TAB_ADDED',\n tabId,\n tabType,\n tabName,\n clientId,\n };\n}\n\nexport interface ClientWorkspaceTabRemoved {\n type: 'CLIENTWORKSPACE_TAB_REMOVED';\n tabId: string;\n}\n\nexport function clientWorkspaceTabRemoved(tabId: string): ClientWorkspaceTabRemoved {\n return {\n type: 'CLIENTWORKSPACE_TAB_REMOVED',\n tabId,\n };\n}\n\nexport interface ClientWorkspaceTabSwitched {\n type: 'CLIENTWORKSPACE_TAB_SWITCHED';\n tabId: string | null;\n}\n\nexport function clientWorkspaceTabSwitched(tabId: string | null): ClientWorkspaceTabSwitched {\n return {\n type: 'CLIENTWORKSPACE_TAB_SWITCHED',\n tabId,\n };\n}\n\nexport interface ClientWorkspaceTabRenamed {\n type: 'CLIENTWORKSPACE_TAB_RENAMED';\n clientWorkspaceId: string;\n newName: string;\n}\n\nexport function clientWorkspaceTabRenamed(\n clientWorkspaceId: string,\n newName: string,\n): ClientWorkspaceTabRenamed {\n return {\n type: 'CLIENTWORKSPACE_TAB_RENAMED',\n clientWorkspaceId,\n newName,\n };\n}\n\nexport interface ClientWorkspaceClientChanged {\n type: 'CLIENTWORKSPACE_CLIENT_CHANGED';\n clientWorkspaceId: string;\n clientId: string;\n previousClientId: string;\n}\n\nexport function clientWorkspaceClientChanged(\n clientWorkspaceId: string,\n clientId: string,\n previousClientId: string,\n): ClientWorkspaceClientChanged {\n return {\n type: 'CLIENTWORKSPACE_CLIENT_CHANGED',\n clientWorkspaceId,\n clientId,\n previousClientId,\n };\n}\n\nexport interface ClientWorkspaceTabTypeChanged {\n type: 'CLIENTWORKSPACE_TAB_TYPE_CHANGED';\n clientWorkspaceId: string;\n tabType: TabType;\n}\n\nexport function clientWorkspaceTabTypeChanged(\n clientWorkspaceId: string,\n tabType: TabType,\n): ClientWorkspaceTabTypeChanged {\n return {\n type: 'CLIENTWORKSPACE_TAB_TYPE_CHANGED',\n clientWorkspaceId,\n tabType,\n };\n}\n\nexport interface TileInstrumentChanged {\n type: 'CLIENTWORKSPACE_TILE_INSTRUMENT_CHANGED';\n tileId: string;\n instrument: InstrumentChoice;\n tradeCaptureSessionInfos?: TradeCaptureSessionInfos;\n currencyPair?: string | null;\n isOptionGrouped: boolean | null;\n isOptionGreekAndMktExpanded: boolean | null;\n}\n\nexport function tileInstrumentChanged(\n tileId: string,\n instrument: InstrumentChoice,\n isOptionGrouped: boolean | null,\n isOptionGreekAndMktExpanded: boolean | null,\n tradeCaptureSessionInfos?: TradeCaptureSessionInfos,\n currencyPair?: string | null,\n): TileInstrumentChanged {\n return {\n type: 'CLIENTWORKSPACE_TILE_INSTRUMENT_CHANGED',\n tileId,\n instrument,\n tradeCaptureSessionInfos,\n currencyPair,\n isOptionGrouped,\n isOptionGreekAndMktExpanded,\n };\n}\n\nexport interface TileClientOverridden {\n type: 'CLIENTWORKSPACE_TILE_CLIENT_OVERRIDDEN';\n quoteId: string;\n clientId: string;\n}\n\nexport function tileClientOverridden(quoteId: string, clientId: string): TileClientOverridden {\n return {\n type: 'CLIENTWORKSPACE_TILE_CLIENT_OVERRIDDEN',\n quoteId,\n clientId,\n };\n}\n\nexport interface TileClientReset {\n type: 'CLIENTWORKSPACE_TILE_CLIENT_RESET';\n quoteId: string;\n}\n\nexport function tileClientReset(quoteId: string): TileClientReset {\n return {\n type: 'CLIENTWORKSPACE_TILE_CLIENT_RESET',\n quoteId,\n };\n}\n\nexport interface ClientWorkspaceTileDeleted {\n type: 'CLIENTWORKSPACE_TILE_DELETED';\n clientWorkspaceId: string;\n tileId: string;\n automatically: boolean;\n}\n\nexport function clientWorkspaceTileDeleted(\n tileId: string,\n clientWorkspaceId: string,\n automatically = false,\n): ClientWorkspaceTileDeleted {\n return {\n type: 'CLIENTWORKSPACE_TILE_DELETED',\n clientWorkspaceId,\n tileId,\n automatically,\n };\n}\n\nexport interface ClientWorkspaceNewTileAdded {\n type: 'CLIENTWORKSPACE_NEW_TILE_ADDED';\n clientWorkspaceId: string;\n tileId: string;\n instrument: InstrumentChoice | 'Order';\n position?: GridItemPosition;\n isOptionGrouped: boolean | null;\n isOptionGreekAndMktExpanded: boolean | null;\n}\n\nexport function clientWorkspaceNewTileAdded(\n clientWorkspaceId: string,\n tileId: string,\n instrument: InstrumentChoice | 'Order',\n isOptionGrouped: boolean | null,\n isOptionGreekAndMktExpanded: boolean | null,\n position?: GridItemPosition,\n): ClientWorkspaceNewTileAdded {\n return {\n type: 'CLIENTWORKSPACE_NEW_TILE_ADDED',\n clientWorkspaceId,\n tileId,\n instrument,\n position,\n isOptionGrouped,\n isOptionGreekAndMktExpanded,\n };\n}\n\nexport interface ClientWorkspaceTileRestored {\n type: 'CLIENTWORKSPACE_TILE_RESTORED';\n clientWorkspaceId: string;\n tileId: string;\n savedTile: SavedTile;\n isOptionGrouped: boolean | null;\n isOptionGreekAndMktExpanded: boolean | null;\n}\n\nexport function clientWorkspaceTileRestored(\n clientWorkspaceId: string,\n tileId: string,\n savedTile: SavedTile,\n isOptionGrouped: boolean | null,\n isOptionGreekAndMktExpanded: boolean | null,\n): ClientWorkspaceTileRestored {\n return {\n type: 'CLIENTWORKSPACE_TILE_RESTORED',\n clientWorkspaceId,\n tileId,\n savedTile,\n isOptionGrouped,\n isOptionGreekAndMktExpanded,\n };\n}\n\nexport interface ClientWorkspaceTileDuplicated {\n type: 'CLIENTWORKSPACE_TILE_DUPLICATED';\n clientWorkspaceId: string;\n originalTileId: string;\n tileId: string;\n instrument: InstrumentChoice;\n productName: ProductName;\n position: GridItemPosition;\n isOptionGrouped: boolean | null;\n isOptionGreekAndMktExpanded: boolean | null;\n}\n\nexport function clientWorkspaceTileDuplicated(\n clientWorkspaceId: string,\n originalTileId: string,\n newTileId: string,\n instrument: InstrumentChoice,\n productName: ProductName,\n position: GridItemPosition,\n isOptionGrouped: boolean | null,\n isOptionGreekAndMktExpanded: boolean | null,\n): ClientWorkspaceTileDuplicated {\n return {\n type: 'CLIENTWORKSPACE_TILE_DUPLICATED',\n clientWorkspaceId,\n originalTileId,\n tileId: newTileId,\n instrument,\n productName,\n position,\n isOptionGrouped,\n isOptionGreekAndMktExpanded,\n };\n}\n\nexport interface ClientWorkspaceTileReopened {\n type: 'CLIENTWORKSPACE_TILE_REOPENED';\n clientWorkspaceId: string;\n tileId: string;\n instrument: InstrumentChoice;\n productName: ProductName;\n isOptionGrouped: boolean | null;\n isOptionGreekAndMktExpanded: boolean | null;\n}\n\nexport function clientWorkspaceTileReopened(\n clientWorkspaceId: string,\n newTileId: string,\n instrument: InstrumentChoice,\n productName: ProductName,\n isOptionGrouped: boolean | null,\n isOptionGreekAndMktExpanded: boolean | null,\n): ClientWorkspaceTileReopened {\n return {\n type: 'CLIENTWORKSPACE_TILE_REOPENED',\n clientWorkspaceId,\n tileId: newTileId,\n instrument,\n productName,\n isOptionGrouped,\n isOptionGreekAndMktExpanded,\n };\n}\n\nexport interface ClientWorkspaceTileZoomed {\n type: 'CLIENTWORKSPACE_TILE_ZOOMED';\n tabId: string;\n tileId: string;\n}\n\nexport function clientWorkspaceTileZoomed(\n tabId: string,\n tileId: string,\n): ClientWorkspaceTileZoomed {\n return {\n type: 'CLIENTWORKSPACE_TILE_ZOOMED',\n tabId,\n tileId,\n };\n}\n\nexport interface ClientWorkspaceTileMinimized {\n type: 'CLIENTWORKSPACE_TILE_MINIMIZED';\n tabId: string;\n}\n\nexport function clientWorkspaceTileMinimized(tabId: string): ClientWorkspaceTileMinimized {\n return {\n type: 'CLIENTWORKSPACE_TILE_MINIMIZED',\n tabId,\n };\n}\n\nexport interface GrowlClosed {\n type: 'GROWL_CLOSED';\n growlId: string;\n}\n\nexport function growlClosed(growlId: string): GrowlClosed {\n return {\n type: 'GROWL_CLOSED',\n growlId,\n };\n}\n\nexport interface ExecutionStillPending {\n type: 'EXECUTION_STILL_PENDING';\n executionId: string;\n}\n\nexport function executionStillPending(executionId: string): ExecutionStillPending {\n return {\n type: 'EXECUTION_STILL_PENDING',\n executionId,\n };\n}\n\nexport interface ExecutionCleanup {\n type: 'EXECUTION_CLEANUP';\n executionId: string;\n}\n\nexport function executionCleanup(executionId: string): ExecutionCleanup {\n return {\n type: 'EXECUTION_CLEANUP',\n executionId,\n };\n}\n\nexport interface ExecutionTimeoutedDeal {\n type: 'EXECUTION_TIMEOUTED_DEAL';\n executionId: string;\n}\n\nexport function executionTimeoutedDeal(executionId: string): ExecutionTimeoutedDeal {\n return {\n type: 'EXECUTION_TIMEOUTED_DEAL',\n executionId,\n };\n}\n\n// ////////////////////////////////////////////////////////\n\nexport interface ToggleTradingDisabled {\n type: 'TOGGLE_TRADING_DISABLED';\n}\n\nexport function toggleTradingDisabled(): ToggleTradingDisabled {\n return { type: 'TOGGLE_TRADING_DISABLED' };\n}\n\nexport interface ToggleTradingReceived {\n type: 'TOGGLE_TRADING_RECEIVED';\n canTrade: boolean;\n}\n\nexport function toggleTradingReceived(canTrade: boolean): ToggleTradingReceived {\n return { type: 'TOGGLE_TRADING_RECEIVED', canTrade };\n}\n\n// ////////////////////////////////////////////////////////\n\nexport interface SaveWorkspaceRequested {\n type: 'SAVE_WORKSPACE_REQUESTED';\n}\n\nexport function saveWorkspaceRequested(): SaveWorkspaceRequested {\n return { type: 'SAVE_WORKSPACE_REQUESTED' };\n}\n\nexport interface SaveWorkspaceRequestedEpic {\n type: 'SAVE_WORKSPACE_REQUESTED_EPIC';\n workspace: SavedWorkspace;\n}\n\nexport function saveWorkspaceRequestedEpic(workspace: SavedWorkspace): SaveWorkspaceRequestedEpic {\n return { type: 'SAVE_WORKSPACE_REQUESTED_EPIC', workspace };\n}\n\nexport interface SaveWorkspaceReady {\n type: 'SAVE_WORKSPACE_READY';\n}\n\nexport function saveWorkspaceReady(): SaveWorkspaceReady {\n return { type: 'SAVE_WORKSPACE_READY' };\n}\n\nexport interface SaveWorkspaceDone {\n type: 'SAVE_WORKSPACE_DONE';\n success: boolean;\n}\n\nexport function saveWorkspaceDone(success: boolean): SaveWorkspaceDone {\n return { type: 'SAVE_WORKSPACE_DONE', success };\n}\n\nexport interface SavedWorkspaceReceived {\n type: 'SAVED_WORKSPACE_RECEIVED';\n savedWorkspace: SavedWorkspace;\n}\n\nexport function savedWorkspaceReceived(savedWorkspace: SavedWorkspace): SavedWorkspaceReceived {\n return {\n type: 'SAVED_WORKSPACE_RECEIVED',\n savedWorkspace,\n };\n}\n\n// ////////////////////////////////////////////////////////\nexport interface SaveOrderTemplatesRequestedEpic {\n type: 'SAVE_ORDER_TEMPLATES_REQUESTED_EPIC';\n templates: Collection;\n}\n\nexport function saveOrderTemplatesRequestedEpic(\n templates: Collection,\n): SaveOrderTemplatesRequestedEpic {\n return { type: 'SAVE_ORDER_TEMPLATES_REQUESTED_EPIC', templates };\n}\n\nexport interface SaveOrderTemplatesReady {\n type: 'SAVE_ORDER_TEMPLATES_READY';\n}\n\nexport function saveOrderTemplatesReady(): SaveOrderTemplatesReady {\n return { type: 'SAVE_ORDER_TEMPLATES_READY' };\n}\n\nexport interface SaveOrderTemplatesDone {\n type: 'SAVE_ORDER_TEMPLATES_DONE';\n success: boolean;\n}\n\nexport function saveOrderTemplatesDone(success: boolean): SaveOrderTemplatesDone {\n return { type: 'SAVE_ORDER_TEMPLATES_DONE', success };\n}\n\nexport interface SavedOrderTemplatesReceived {\n type: 'SAVED_ORDER_TEMPLATES_RECEIVED';\n templates: Collection;\n}\n\nexport interface SavedOrderTemplatesRequested {\n type: 'SAVED_ORDER_TEMPLATES_REQUESTED';\n}\n\nexport function savedOrderTemplatesRequested(): SavedOrderTemplatesRequested {\n return { type: 'SAVED_ORDER_TEMPLATES_REQUESTED' };\n}\nexport function savedOrderTemplatesReceived(\n templates: Collection,\n): SavedOrderTemplatesReceived {\n return {\n type: 'SAVED_ORDER_TEMPLATES_RECEIVED',\n templates,\n };\n}\n\n// ////////////////////////////////////////////////////////\nexport interface DisplayStreamErrorDetail {\n type: 'DISPLAY_STREAM_ERROR_DETAIL';\n tileId: string;\n}\n\nexport function displayStreamErrorDetail(tileId: string): DisplayStreamErrorDetail {\n return {\n type: 'DISPLAY_STREAM_ERROR_DETAIL',\n tileId,\n };\n}\n\nexport interface DisplayExecutionErrorDetail {\n type: 'DISPLAY_EXECUTION_ERROR_DETAIL';\n executionId: string;\n}\n\nexport function displayExecutionErrorDetail(executionId: string): DisplayExecutionErrorDetail {\n return {\n type: 'DISPLAY_EXECUTION_ERROR_DETAIL',\n executionId,\n };\n}\n\nexport function displayPropertiesErrorDetail(quoteId: string) {\n return {\n type: 'DISPLAY_PROPERTIES_ERROR_DETAIL',\n quoteId,\n } as const;\n}\n\nexport type DisplayPropertiesErrorDetail = ReturnType;\n\nexport interface CloseErrorDetail {\n type: 'CLOSE_ERROR_DETAIL';\n}\n\nexport function closeErrorDetail(): CloseErrorDetail {\n return {\n type: 'CLOSE_ERROR_DETAIL',\n };\n}\n\nexport interface ClientworkspaceTileClientErrorChanged {\n type: 'CLIENTWORKSPACE_TILE_CLIENT_ERROR_CHANGED';\n tileId: string;\n clientError: boolean;\n}\n\nexport function changeTileClientError(\n tileId: string,\n clientError: boolean,\n): ClientworkspaceTileClientErrorChanged {\n return {\n type: 'CLIENTWORKSPACE_TILE_CLIENT_ERROR_CHANGED',\n tileId,\n clientError,\n };\n}\nexport interface ClientworkspaceTileToggleCollapsed {\n type: 'CLIENTWORKSPACE_TILE_TOGGLE_COLLAPSED';\n tileId: string;\n keyName: CollapsableKey;\n}\n\nexport function toggleCollapsed(\n tileId: string,\n keyName: CollapsableKey,\n): ClientworkspaceTileToggleCollapsed {\n return {\n type: 'CLIENTWORKSPACE_TILE_TOGGLE_COLLAPSED',\n tileId,\n keyName,\n };\n}\n\nexport interface RestoredTiles {\n [tileId: string]: T;\n}\n","import type { BlotterEntry, OrderBlotterEntry } from './blotterEntryModel';\nimport type { ImmutableCollection } from 'typings/utils';\nimport {\n addDays,\n addMonths,\n endOfDay,\n endOfMonth,\n endOfWeek,\n isSameWeek,\n startOfDay,\n startOfMonth,\n startOfWeek,\n} from 'date-fns';\nimport type { OrderValidationReceivedDetails } from 'state/fxOrders/fxOrdersActions';\nimport type { BlotterOrderValidationDetail } from 'epics/blotter/utils';\n\nexport const blotterTabs = ['cash', 'option', 'order', 'accumulator'] as const;\nexport type BlotterTab = (typeof blotterTabs)[number];\n\nexport type BlotterCountByTab = { [key in BlotterTab]: number };\n\ninterface BlotterColSort {\n colId: string;\n sort?: 'asc' | 'desc' | null;\n}\nexport type BlotterSortModel = readonly BlotterColSort[];\n\nexport const detailsPanelConfirmationModes = [\n 'SaveConfirm',\n 'CancelConfirm',\n 'PauseConfirm',\n 'ResumeConfirm',\n 'FillConfirm',\n] as const;\n\nexport const detailsPanelSuccessModes = [\n 'SaveSuccess',\n 'CancelSuccess',\n 'PauseSuccess',\n 'ResumeSuccess',\n 'FillSuccess',\n] as const;\n\nexport const detailsPanelModes = [\n 'Display',\n 'Edit',\n 'SavePending',\n 'SaveError',\n 'SaveTimeout',\n 'CancelPending',\n 'CancelError',\n 'CancelTimeout',\n 'RejectedOrder',\n 'InErrorOrder',\n 'PausePending',\n 'PauseError',\n 'PauseTimeout',\n 'ResumePending',\n 'ResumeError',\n 'ResumeTimeout',\n 'FillPending',\n 'FillError',\n 'FillTimeout',\n ...detailsPanelConfirmationModes,\n ...detailsPanelSuccessModes,\n] as const;\n\nexport type DetailsPanelMode = (typeof detailsPanelModes)[number];\nexport const openTileAction = 'openTile';\n\nexport const isSameBlotterSortModel = (columnsState: BlotterSortModel, rightModel: BlotterSortModel): boolean => {\n if (columnsState.length !== rightModel.length) {\n return false;\n }\n for (let index = 0; index < columnsState.length; index++) {\n if (\n !Object.is(columnsState[index].colId, rightModel[index].colId) ||\n !Object.is(columnsState[index].sort, rightModel[index].sort)\n ) {\n return false;\n }\n }\n return true;\n};\n\nexport interface BlotterRowMetadata {\n isExpanded: boolean;\n}\nexport interface BlotterTabMetadata {\n autoColumState: { width: number };\n columnsState: FxColumnState[];\n sortModel: BlotterSortModel;\n filterModel?: any;\n rowModel: { [rowId: string]: BlotterRowMetadata };\n}\n\nexport interface BlotterDetailsPanel {\n selectedId: string | null;\n childrenIds: readonly string[] | null;\n mode: DetailsPanelMode | null;\n saveError?: string;\n hasUnexpectedError: boolean;\n validationResponse?: OrderValidationReceivedDetails | null;\n}\n\nexport type IBlotterErrorType = 'tableCrash' | 'live' | 'historical' | 'network' | 'historicalOrder';\n\nexport const blotterModes = ['historical', 'intraday'] as const;\nexport type BlotterMode = (typeof blotterModes)[number];\n\nexport const dateRanges = ['yesterday', 'week', 'lastWeek', 'month', 'lastMonth', 'customRange'] as const;\nexport type DateRange = (typeof dateRanges)[number];\ntype PredefinedDateRange = Exclude;\n\nconst opts = { weekStartsOn: 1 } as const;\nconst now = new Date();\nconst yesterday = addDays(now, -1);\nconst lastWeekDay = isSameWeek(now, yesterday, opts) ? yesterday : addDays(yesterday, -2); // since yesterday is Sunday, get the previous Friday\nconst sameDayPrevWeek = addDays(now, -7);\nconst sameDayPrevMonth = addMonths(now, -1);\nconst mondayOfWeek = (date: Date) => startOfWeek(date, opts);\nconst sundayOfWeek = (date: Date) => endOfWeek(date, opts);\n\nexport const datesByDateRange: Record = {\n yesterday: [startOfDay(lastWeekDay), endOfDay(lastWeekDay)],\n week: [mondayOfWeek(now), endOfDay(now)],\n lastWeek: [mondayOfWeek(sameDayPrevWeek), sundayOfWeek(sameDayPrevWeek)],\n month: [startOfMonth(now), endOfDay(now)],\n lastMonth: [startOfMonth(sameDayPrevMonth), endOfMonth(sameDayPrevMonth)],\n};\n\ninterface BlotterIntraday {}\n\nexport type BlotterHistoricalError = 'tooManyResults' | 'serverError' | 'timeout' | null;\n\ninterface BlotterHistoricalErrorData {\n error: BlotterHistoricalError;\n errorDetails?: string;\n}\n\ninterface BlotterHistorical extends BlotterHistoricalErrorData {\n dateRange: PredefinedDateRange;\n startDate: Date;\n endDate: Date;\n}\n\ninterface BlotterHistoricalCustom extends BlotterHistoricalErrorData {\n dateRange: 'customRange';\n startDate: Date | null;\n endDate: Date | null;\n}\n\nexport interface BlotterModeMetadata {\n mode: 'intraday' | 'historical';\n intraday?: BlotterIntraday;\n historical?: BlotterHistorical | BlotterHistoricalCustom;\n}\n\nexport type CantReopenReason =\n | 'not_a_trade'\n | 'client_missing'\n | 'unexpected_product'\n | 'unauthorized_product'\n | 'invalid_option_type'\n | 'invalid_leg'\n | 'unknown_hedge_type'\n | 'unhandled_product'\n | 'invalid_option_leg_type';\n\nexport interface IBlotterMetadata {\n isOpen: boolean;\n fetching: BlotterMode | null;\n canRefetch: boolean;\n errors: readonly IBlotterErrorType[];\n activeTab: BlotterTab;\n panelHeight: number;\n enableShowMyMainDeals: boolean;\n orderRejectedId: string | null;\n showSaveErrorDialogBox: boolean;\n displayedErrorId?: string;\n cashTab: BlotterTabMetadata;\n optionTab: BlotterTabMetadata;\n orderTab: BlotterTabMetadata;\n accumulatorTab: BlotterTabMetadata;\n detailsPanel: BlotterDetailsPanel;\n cantReopenReason: CantReopenReason | null;\n}\n\nexport type BlotterMetadata = IBlotterMetadata & BlotterModeMetadata;\n\nexport type BlotterDataIds = readonly string[];\nexport type BlotterData = ImmutableCollection;\nexport type BlotterEditOrderData = ImmutableCollection;\n\nexport interface IBlotterState {\n intraday: BlotterData;\n historical: BlotterData;\n metadata: BlotterMetadata;\n editedOrders: BlotterEditOrderData;\n}\n\nexport type BlotterState = Readonly;\n\nconst columnIdArray = [\n 'id',\n 'account',\n 'defaultAction',\n 'orderAction',\n 'amountDone',\n 'currencyPair',\n 'date',\n 'expiry',\n 'farDate',\n 'farRate',\n 'gtc',\n 'inputDate',\n 'nearDate',\n 'nearRate',\n 'notional',\n 'notionalCurrency',\n 'dealtAmount',\n 'dealtCurrency',\n 'farDealtAmount',\n 'contraAmount',\n 'contraCurrency',\n 'farContraAmount',\n 'limitPrice',\n 'customerPrice',\n 'points',\n 'portfolio',\n 'premium',\n 'strategyReference',\n 'electronicReference',\n 'electronicAccount',\n 'product',\n 'salesFullName',\n 'spot',\n 'spotDate',\n 'status',\n 'strike',\n 'time',\n 'updateTime',\n 'venue',\n 'way',\n 'executionPrice',\n 'premiumCurrency',\n 'premiumSide',\n 'blotterType',\n 'optionType',\n 'fixingFrequency',\n 'settlementFrequency',\n 'koConventionType',\n 'koTime',\n 'startTime',\n 'endTime',\n 'maturityDate',\n 'liquidityPool',\n 'clippingMode',\n 'clipSize',\n 'randomize',\n 'swapPoints',\n 'forwardPrice',\n 'remainingAmount',\n 'averagePrice',\n 'noWorseThan',\n 'spreadCapture',\n 'alphaSeeker',\n 'speed',\n 'fixingBenchmark',\n 'fixingPlace',\n 'fixingTime',\n 'fixingDateUtc',\n 'fixingPriceType',\n 'fixingMarginType',\n 'marginInBps',\n 'price',\n 'deliveryDate',\n 'deliveryType',\n 'premiumPaymentDate',\n 'cutOffPlace',\n] as const;\n\nexport const fixingColumns = [\n 'fixingBenchmark',\n 'fixingPlace',\n 'fixingTime',\n 'fixingDateUtc',\n 'fixingPriceType',\n 'fixingMarginType',\n 'marginInBps',\n 'price',\n];\n\nexport type ColumnId = (typeof columnIdArray)[number];\n\nexport interface FxColumnState {\n colId: ColumnId;\n width?: number;\n hide?: boolean;\n}\n\nexport const columnsDefinition: Record = {\n id: { colId: 'id' },\n defaultAction: { colId: 'defaultAction', hide: false },\n account: { colId: 'account', width: 200 },\n orderAction: { colId: 'orderAction' },\n amountDone: { colId: 'amountDone' },\n currencyPair: { colId: 'currencyPair', width: 90 },\n date: { colId: 'date' },\n expiry: { colId: 'expiry', width: 100 },\n farDate: { colId: 'farDate', width: 100 },\n farRate: { colId: 'farRate', width: 100 },\n gtc: { colId: 'gtc' },\n inputDate: { colId: 'inputDate' },\n nearDate: { colId: 'nearDate', width: 100 },\n nearRate: { colId: 'nearRate', width: 100 },\n notional: { colId: 'notional', width: 150 },\n notionalCurrency: {\n colId: 'notionalCurrency',\n width: 120,\n },\n dealtAmount: { colId: 'dealtAmount', width: 150 },\n farDealtAmount: { colId: 'farDealtAmount', width: 150 },\n dealtCurrency: {\n colId: 'dealtCurrency',\n width: 120,\n },\n contraAmount: { colId: 'contraAmount', width: 150 },\n farContraAmount: { colId: 'farContraAmount', width: 150 },\n contraCurrency: {\n colId: 'contraCurrency',\n width: 120,\n },\n limitPrice: { colId: 'limitPrice' },\n customerPrice: { colId: 'customerPrice' },\n points: { colId: 'points', width: 80 },\n portfolio: { colId: 'portfolio' },\n premium: { colId: 'premium' },\n product: { colId: 'product', width: 80 },\n salesFullName: {\n colId: 'salesFullName',\n width: 140,\n },\n spot: { colId: 'spot', width: 80 },\n spotDate: { colId: 'spotDate', width: 100 },\n status: { colId: 'status', width: 120 },\n strike: { colId: 'strike', width: 120 },\n time: { colId: 'time', width: 100 },\n updateTime: { colId: 'updateTime', hide: true },\n venue: { colId: 'venue', width: 120 },\n way: { colId: 'way', width: 100 },\n executionPrice: { colId: 'executionPrice', width: 100 },\n premiumCurrency: { colId: 'premiumCurrency', width: 120 },\n premiumSide: { colId: 'premiumSide', width: 120 },\n optionType: { colId: 'optionType', width: 120 },\n fixingFrequency: { colId: 'fixingFrequency', width: 100 },\n settlementFrequency: { colId: 'settlementFrequency', width: 100 },\n koConventionType: { colId: 'koConventionType', width: 100 },\n koTime: { colId: 'koTime', width: 100 },\n electronicReference: { colId: 'electronicReference' },\n electronicAccount: { colId: 'electronicAccount' },\n strategyReference: { colId: 'strategyReference' },\n blotterType: { colId: 'blotterType' },\n startTime: { colId: 'startTime' },\n endTime: { colId: 'endTime' },\n maturityDate: { colId: 'maturityDate' },\n liquidityPool: { colId: 'liquidityPool' },\n clippingMode: { colId: 'clippingMode' },\n clipSize: { colId: 'clipSize' },\n randomize: { colId: 'randomize' },\n swapPoints: { colId: 'swapPoints' },\n forwardPrice: { colId: 'forwardPrice' },\n remainingAmount: { colId: 'remainingAmount' },\n averagePrice: { colId: 'averagePrice' },\n noWorseThan: { colId: 'noWorseThan' },\n spreadCapture: { colId: 'spreadCapture' },\n alphaSeeker: { colId: 'alphaSeeker' },\n speed: { colId: 'speed' },\n fixingBenchmark: { colId: 'fixingBenchmark' },\n fixingPlace: { colId: 'fixingPlace' },\n fixingTime: { colId: 'fixingTime' },\n fixingDateUtc: { colId: 'fixingDateUtc' },\n fixingPriceType: { colId: 'fixingPriceType' },\n fixingMarginType: { colId: 'fixingMarginType' },\n marginInBps: { colId: 'marginInBps' },\n price: { colId: 'price' },\n deliveryDate: { colId: 'deliveryDate' },\n deliveryType: { colId: 'deliveryType' },\n premiumPaymentDate: { colId: 'premiumPaymentDate' },\n cutOffPlace: { colId: 'cutOffPlace' },\n};\nexport const defaultBlotterSortModel: BlotterSortModel = [{ colId: 'updateTime', sort: 'desc' }];\n\nconst defaultAutoColumnState = {\n width: 100,\n};\n\nconst pickColumns = (colIds: readonly ColumnId[]): FxColumnState[] => colIds.map(id => columnsDefinition[id]);\n\nexport const defaultCashTab: BlotterTabMetadata = {\n autoColumState: defaultAutoColumnState,\n columnsState: pickColumns([\n 'defaultAction',\n 'status',\n 'date',\n 'time',\n 'currencyPair',\n 'product',\n 'dealtAmount',\n 'farDealtAmount',\n 'dealtCurrency',\n 'contraAmount',\n 'farContraAmount',\n 'contraCurrency',\n 'way',\n 'spot',\n 'spotDate',\n 'nearRate',\n 'nearDate',\n 'farRate',\n 'farDate',\n 'points',\n 'venue',\n 'account',\n 'portfolio',\n 'salesFullName',\n 'updateTime',\n 'electronicAccount',\n ]),\n sortModel: defaultBlotterSortModel,\n rowModel: {},\n};\n\nexport const defaultOptionTab: BlotterTabMetadata = {\n autoColumState: defaultAutoColumnState,\n columnsState: pickColumns([\n 'defaultAction',\n 'status',\n 'product',\n 'optionType',\n 'currencyPair',\n 'way',\n 'dealtAmount',\n 'dealtCurrency',\n 'contraAmount',\n 'contraCurrency',\n 'strike',\n 'spot',\n 'expiry',\n 'premium',\n 'date',\n 'time',\n 'venue',\n 'account',\n 'portfolio',\n 'salesFullName',\n 'updateTime',\n 'premiumCurrency',\n 'premiumSide',\n 'electronicAccount',\n 'deliveryDate',\n 'deliveryType',\n 'premiumPaymentDate',\n 'cutOffPlace',\n ]),\n sortModel: defaultBlotterSortModel,\n rowModel: {},\n};\n\nexport const defaultOrderTab: BlotterTabMetadata = {\n autoColumState: defaultAutoColumnState,\n columnsState: pickColumns([\n 'status',\n 'orderAction',\n 'gtc',\n 'product',\n 'currencyPair',\n 'way',\n 'notional',\n 'notionalCurrency',\n 'amountDone',\n 'limitPrice',\n 'customerPrice',\n 'account',\n 'updateTime',\n 'executionPrice',\n 'startTime',\n 'endTime',\n 'maturityDate',\n 'liquidityPool',\n 'clippingMode',\n 'clipSize',\n 'randomize',\n 'swapPoints',\n 'forwardPrice',\n 'remainingAmount',\n 'averagePrice',\n 'noWorseThan',\n 'spreadCapture',\n 'alphaSeeker',\n 'speed',\n 'fixingBenchmark',\n 'fixingPlace',\n 'fixingTime',\n 'fixingDateUtc',\n 'fixingPriceType',\n 'fixingMarginType',\n 'marginInBps',\n 'price',\n ]),\n sortModel: defaultBlotterSortModel,\n rowModel: {},\n};\n\nexport const defaultAccumulatorTab: BlotterTabMetadata = {\n autoColumState: defaultAutoColumnState,\n columnsState: pickColumns([\n 'defaultAction',\n 'status',\n 'product',\n 'currencyPair',\n 'way',\n 'expiry',\n 'premium',\n 'premiumCurrency',\n 'premiumSide',\n 'date',\n 'time',\n 'venue',\n 'account',\n 'salesFullName',\n 'portfolio',\n 'fixingFrequency',\n 'settlementFrequency',\n // Accrued notional / Total un-leverage notional\n // Accrued target / Total target\n // Expired fixings / Number of fixing\n // Next leverage\n // Next fixing date\n // Next strike\n 'koConventionType',\n 'koTime',\n // EKI\n ]),\n sortModel: defaultBlotterSortModel,\n rowModel: {},\n};\n\nexport const blotterDetailsPanelHidden: BlotterDetailsPanel = {\n selectedId: null,\n childrenIds: null,\n mode: null,\n hasUnexpectedError: false,\n};\n\nexport const defaultBlotterMetadata: BlotterMetadata = {\n isOpen: false,\n mode: 'intraday',\n fetching: 'intraday',\n canRefetch: true,\n errors: [],\n activeTab: 'cash',\n panelHeight: 300,\n enableShowMyMainDeals: true,\n orderRejectedId: null,\n showSaveErrorDialogBox: false,\n cashTab: defaultCashTab,\n optionTab: defaultOptionTab,\n orderTab: defaultOrderTab,\n accumulatorTab: defaultAccumulatorTab,\n detailsPanel: blotterDetailsPanelHidden,\n cantReopenReason: null,\n};\n","import {\n type BlotterTabMetadata,\n defaultCashTab,\n defaultOptionTab,\n defaultOrderTab,\n defaultAccumulatorTab,\n type FxColumnState,\n type ColumnId,\n} from './blotterModel';\nimport type { SavedBlotterTab } from 'api/workspaceService/model';\nimport { extract } from 'utils/object';\n\nexport const updateBlotterColumns = (\n defaultColumns: readonly FxColumnState[],\n savedColumns: SavedBlotterTab['columnsState'],\n): FxColumnState[] => {\n const defaultColIds = defaultColumns.map(extract('colId'));\n\n const cleanSavedColumns = savedColumns.filter(\n column =>\n defaultColIds.includes(column.colId as ColumnId) || column.colId === 'ag-Grid-AutoColumn', // id column is stored like this\n ) as FxColumnState[];\n\n const userColIds = cleanSavedColumns.map(extract('colId'));\n\n const missingColumns = defaultColumns.filter(column => !userColIds.includes(column.colId));\n\n return missingColumns.reduce((acc, col) => {\n const previousColumnIndex = defaultColumns.findIndex(({ colId }) => colId === col.colId) - 1;\n\n if (previousColumnIndex === -1) {\n return [col, ...acc];\n }\n const previousColumnId = defaultColIds[previousColumnIndex];\n\n const positionToInsert = acc.findIndex(({ colId }) => colId === previousColumnId) + 1;\n\n return [...acc.slice(0, positionToInsert), col, ...acc.slice(positionToInsert)];\n }, cleanSavedColumns);\n};\n\nconst injectBlotterTab =\n (defaultTab: BlotterTabMetadata) =>\n (savedTab: SavedBlotterTab): BlotterTabMetadata => ({\n ...defaultTab,\n ...savedTab,\n columnsState: updateBlotterColumns(\n defaultTab.columnsState,\n savedTab.columnsState as readonly FxColumnState[],\n ),\n });\n\nexport const injectDefaultCashTab = injectBlotterTab(defaultCashTab);\nexport const injectDefaultOptionTab = injectBlotterTab(defaultOptionTab);\nexport const injectDefaultOrderTab = injectBlotterTab(defaultOrderTab);\nexport const injectDefaultAccumulatorTab = injectBlotterTab(defaultAccumulatorTab);\n","import {\n type ClientMap,\n type InstrumentChoice,\n type ProductsAccess,\n isTileInstrument,\n type Instrument,\n} from '../referenceData/referenceDataModel';\nimport type { Thunk } from 'state';\nimport type { TabType } from 'state/clientWorkspace';\nimport type { GridItemPosition } from 'state/gridLayout/gridLayoutModels';\nimport {\n assertUnreachable,\n isDefined,\n isDefinedAndNonEmpty,\n isEmpty,\n isNotDefined,\n} from '@sgme/fp';\nimport type {\n SavedWorkspace,\n SavedTile,\n SavedTab,\n CashSavedTile,\n OptionSavedTile,\n SwapSavedTile,\n AccumulatorSavedTile,\n} from 'api/workspaceService/model';\nimport type { ProductName } from 'state/share/productModel';\nimport { getNearestNeighbour, distinct } from 'utils/array';\nimport {\n injectDefaultCashTab,\n injectDefaultOrderTab,\n injectDefaultOptionTab,\n injectDefaultAccumulatorTab,\n} from 'state/blotter/utils';\nimport { extract } from 'utils/object';\nimport type { RestoredTiles } from './clientWorkspaceActions';\nimport { fieldData } from 'utils/fieldSelectors';\nimport type { TradeCaptureSessionInfos } from '../sharedSelectors';\n\nexport function clientWorkspaceTabAddedThunk(\n type: TabType,\n tabClientId?: string,\n selectTab?: boolean,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac, getNewGuid }) => {\n const state = getState();\n const clients = sl.getAllUserClients(state);\n const clientId = tabClientId ?? getDefaultClientId(clients);\n const newTabId = getNewGuid();\n const tabName = sl.getClientWorkspaceTabNextName(state, type);\n dispatch(ac.clientWorkspaceTabAdded(newTabId, type, tabName, clientId));\n\n if (clientId !== null && sl.isUserInternalSales(state)) {\n dispatch(ac.orderRequestEmailsEpic(clientId, newTabId));\n }\n\n if (selectTab) {\n dispatch(ac.clientWorkspaceTabSwitched(newTabId));\n }\n };\n}\n\nexport function clientWorkspaceTabClosedThunk(tabIdToClose: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const tabs = sl.getClientWorkspaceTabs(state);\n const activeTab = sl.getClientWorkspaceActiveTab(state);\n const tabToClose = tabs[tabIdToClose];\n\n if (tabToClose === undefined) {\n return;\n }\n\n if (activeTab === tabIdToClose) {\n const tabIds = Object.keys(tabs);\n const newTabToSelect = getNearestNeighbour(tabIds, tabIdToClose);\n if (newTabToSelect !== null) {\n dispatch(ac.clientWorkspaceTabSwitched(newTabToSelect));\n }\n }\n tabToClose.tiles.forEach(tileId => dispatch(ac.tileClosedThunk(tileId, true)));\n if (sl.hasBulkProduct(state, tabIdToClose)) {\n dispatch(ac.espTileStreamUnsubscribeThunk(tabIdToClose));\n dispatch(ac.bulkClosed(tabIdToClose));\n }\n dispatch(ac.clientWorkspaceTabRemoved(tabIdToClose));\n };\n}\n\nexport function clientWorkspaceTabTypeChangedThunk(tabId: string, tabType: TabType): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n switch (tabType) {\n case 'tiles':\n break;\n case 'bulkTrade':\n if (!sl.hasBulkProduct(state, tabId)) {\n dispatch(ac.bulkCreated(tabId));\n }\n dispatch(ac.espStreamRestartThunk(tabId));\n break;\n default:\n assertUnreachable(tabType, 'Tab type not handled');\n }\n dispatch(ac.clientWorkspaceTabTypeChanged(tabId, tabType));\n };\n}\n\nexport function clientWorkspaceTabTypeToggleThunk(tabId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const { type } = sl.getClientWorkspaceTab(getState(), tabId);\n dispatch(\n ac.clientWorkspaceTabTypeChangedThunk(tabId, type === 'bulkTrade' ? 'tiles' : 'bulkTrade'),\n );\n };\n}\n\nconst shouldKeepTradeCaptureSessionInfos = (\n instrument: Instrument,\n newInstrument: InstrumentChoice,\n): boolean => {\n // todo tighten type definition\n const instrumentTypeGroup1: Instrument[] = ['Cash', 'Swap'];\n const instrumentTypeGroup2: Instrument[] = ['Option', 'Accumulator'];\n\n if (\n instrumentTypeGroup1.includes(instrument) &&\n instrumentTypeGroup2.includes(newInstrument as Instrument)\n ) {\n return false;\n }\n if (\n instrumentTypeGroup2.includes(instrument) &&\n instrumentTypeGroup1.includes(newInstrument as Instrument)\n ) {\n return false;\n }\n return true;\n};\n\nexport function tileInstrumentChangedThunk(\n tileId: string,\n newInstrument: InstrumentChoice,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const { instrument } = sl.getTileState(state, tileId);\n if (instrument === newInstrument) {\n return;\n }\n\n // todo 1 those 2 booleans could also likely be ported to the optionAcumulatorTradeCapture epic\n const isOptionGrouped =\n newInstrument === 'Option'\n ? sl.getUserPreferenceData(getState()).optionStrategyGroupLegs\n : null;\n const isOptionGreekAndMktExpanded =\n newInstrument === 'Option'\n ? sl.getUserPreferenceData(getState()).optionExpandGreekAndMkt\n : null;\n const tradeCaptureSessionInfos = sl.getTradeCaptureSessionInfos(state, tileId);\n const currencyPair = fieldData(sl.getTileCurrencyPair(state, tileId)).data;\n\n dispatch(ac.gridItemResetHeightByInstrument(tileId, newInstrument));\n\n if (instrument === 'Cash' && newInstrument !== 'Cash') {\n dispatch(ac.cashTileStateCleaned(tileId));\n } else if (instrument === 'Option' && newInstrument !== 'Option') {\n dispatch(ac.optionTileStateCleaned(tileId));\n } else if (instrument === 'Swap' && newInstrument !== 'Swap') {\n dispatch(ac.swapTileStateCleaned(tileId));\n } else if (instrument === 'Accumulator') {\n dispatch(ac.accumulatorTileStateCleaned(tileId));\n }\n\n const defaultTradeCaptureSessionInfos: TradeCaptureSessionInfos = {\n currentSessionId: null,\n tradeCaptureIdVersion: null,\n };\n\n dispatch(\n ac.tileInstrumentChanged(\n tileId,\n newInstrument,\n isOptionGrouped,\n isOptionGreekAndMktExpanded,\n shouldKeepTradeCaptureSessionInfos(instrument, newInstrument)\n ? tradeCaptureSessionInfos\n : defaultTradeCaptureSessionInfos,\n currencyPair,\n ),\n );\n\n if (newInstrument === 'Option' && isDefined(currencyPair)) {\n dispatch(ac.optionUseDefaultThunk(tileId, currencyPair));\n }\n };\n}\n\nexport function clientWorkspaceClientChangedThunk(tabId: string, clientId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n /**\n * @todo Remove dependency on global action in epic 'links'\n */\n\n const state = getState();\n const { tiles, clientId: previousClientId } = sl.getClientWorkspaceTab(state, tabId);\n dispatch(ac.clientWorkspaceClientChanged(tabId, clientId, previousClientId!));\n\n if (sl.isUserInternalSales(state)) {\n dispatch(ac.orderRequestEmailsEpic(clientId, tabId));\n }\n\n if (sl.hasBulkProduct(state, tabId)) {\n dispatch(ac.bulkClientChangedThunk(tabId, clientId));\n }\n tiles\n .filter(tile => sl.getTileOverriddenClientId(state, tile) === null)\n .forEach(tileId => {\n const { instrument } = sl.getTileState(state, tileId);\n switch (instrument) {\n case 'Option':\n dispatch(ac.optionClientChangedThunk(tileId, clientId));\n break;\n case 'Cash':\n dispatch(ac.cashClientChangedThunk(tileId, clientId));\n break;\n case 'Swap':\n dispatch(ac.swapClientChangedThunk(tileId));\n break;\n case 'Bulk':\n throw new Error(\n 'Bulk instrument should not be in the tile list, it will crash on workspace save otherwise',\n );\n break;\n case 'Accumulator':\n dispatch(ac.accumulatorClientChangedThunk(tileId, clientId));\n break;\n case 'Order':\n dispatch(ac.orderClientChangedThunk(tileId, clientId));\n break;\n case 'BlotterOrder':\n break; // Don't try to change client on submitted order tiles\n default:\n assertUnreachable(instrument, 'Unhandled instrument when changing client');\n }\n });\n };\n}\n\nexport function growlClosedThunk(growlId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const growlData = sl.getGrowls(state).find(s => s.id === growlId);\n dispatch(ac.growlClosed(growlId));\n if (growlData === undefined) {\n return;\n }\n\n const executionData = sl.getExecutionById(state, growlId);\n const usedByOrderTile = sl.getOrderByExecutionId(state, growlId);\n\n if (executionData.status !== 'Pending' && usedByOrderTile === undefined) {\n // Cleanup execution only if it is not pending and ont used by an order tile\n // so that if it takes too long, we still have the data\n dispatch(ac.executionCleanup(growlId));\n }\n };\n}\n\nexport function orderErrorDismissedThunk(executionId: string, quoteId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const growlData = sl.getGrowls(state).find(s => s.id === executionId);\n\n // clean execution if not used by a growl\n if (growlData === undefined) {\n dispatch(ac.executionCleanup(executionId));\n } else {\n dispatch(ac.tileExecutionOverlayHidden(quoteId));\n }\n };\n}\n\nexport function clientWorkspaceNewDefaultTileAddedThunk(\n clientWorkspaceId: string,\n tileId: string,\n position?: GridItemPosition,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const instruments = sl.getAvailableInstruments(getState()).filter(isTileInstrument);\n if (isEmpty(instruments)) {\n alert('Sorry, you are not allowed to trade any instruments.');\n } else {\n const instrument = instruments.includes('Cash') ? 'Cash' : instruments[0];\n dispatch(\n ac.clientWorkspaceNewTileAdded(\n clientWorkspaceId,\n tileId,\n instrument,\n instrument === 'Option'\n ? sl.getUserPreferenceData(getState()).optionStrategyGroupLegs\n : null,\n instrument === 'Option'\n ? sl.getUserPreferenceData(getState()).optionExpandGreekAndMkt\n : null,\n position,\n ),\n );\n }\n };\n}\n\nexport function setupWorkspaceThunk(savedWorkspace: SavedWorkspace): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac, getNewGuid }) => {\n const state = getState();\n const productTypes = sl.getAvailableInstruments(state);\n const isInternalSales = sl.isUserInternalSales(state);\n\n dispatch(ac.setupWorkspaceCanTradeThunk(savedWorkspace.canTrade));\n dispatch(ac.blotterPanelHeightChanged(savedWorkspace.blotter.panelHeight));\n dispatch(ac.blotterTabChanged(savedWorkspace.blotter.activeTab));\n\n dispatch(\n ac.blotterTabMetadataChanged('cash', injectDefaultCashTab(savedWorkspace.blotter.cashTab)),\n );\n\n dispatch(\n ac.blotterTabMetadataChanged(\n 'option',\n injectDefaultOptionTab(savedWorkspace.blotter.optionTab),\n ),\n );\n\n const defaultOrderTab = injectDefaultOrderTab(savedWorkspace.blotter.orderTab);\n\n dispatch(ac.blotterTabMetadataChanged('order', defaultOrderTab));\n\n dispatch(\n ac.blotterTabMetadataChanged(\n 'accumulator',\n injectDefaultAccumulatorTab(savedWorkspace.blotter.accumulatorTab),\n ),\n );\n\n if (!isEmpty(productTypes)) {\n const restoredTabs = [...savedWorkspace.tabs]\n .sort(({ order: a }, { order: b }) => a - b) // sorts in ascending order\n .map(tab => {\n const tabId = getNewGuid();\n dispatch(ac.setupWorkspaceTabThunk(tabId, tab));\n return [tabId, tab] as const;\n })\n .sort(([, { isActive: a1 }], _snd) => (a1 ? 1 : 0)); // put active tab first so that we restore its tiles first\n\n const currencyPairs = getSavedCurrencyPairs(savedWorkspace.tabs);\n\n if (!isEmpty(currencyPairs)) {\n dispatch(ac.retrieveClosedDates(currencyPairs));\n }\n\n const currencies = currencyPairs.flatMap(ccyPair => ccyPair.split('/')).filter(distinct);\n\n if (!isEmpty(currencies)) {\n dispatch(ac.retrieveEspLimits(currencies));\n }\n\n dispatch(ac.restoreTabs(restoredTabs));\n } else if (isInternalSales) {\n dispatch(ac.toggleMifid2Panel(true));\n }\n };\n}\n\nfunction getSavedCurrencyPairs(tabs: readonly SavedTab[]): readonly string[] {\n return tabs\n .flatMap(tab => tab.tiles.map(extract('currencyPair')).filter(isDefinedAndNonEmpty))\n .filter(distinct);\n}\n\nexport function setupWorkspaceTabThunk(\n tabId: string,\n { clientId, tabType, tabName, isActive }: SavedTab,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const clients = sl.getAllUserClients(state);\n\n const isSaveClientExistFor = Object.values(clients).some(\n c => c.companyId.toString() === clientId,\n );\n const workspaceClientId = isSaveClientExistFor ? clientId : getDefaultClientId(clients);\n\n dispatch(ac.clientWorkspaceTabAdded(tabId, tabType, tabName, workspaceClientId));\n\n if (workspaceClientId !== null && sl.isUserInternalSales(state)) {\n dispatch(ac.orderRequestEmailsEpic(workspaceClientId, tabId));\n }\n\n if (isActive) {\n dispatch(ac.clientWorkspaceTabSwitched(tabId));\n }\n\n if (tabType === 'bulkTrade') {\n dispatch(ac.bulkCreated(tabId));\n }\n };\n}\n\nfunction mapToInstrumentChoice({\n instrument,\n productName,\n}: Pick): InstrumentChoice {\n if (instrument === 'Accumulator') {\n return productName === 'FxForwardAccumulator' ? 'ForwardAccumulator' : 'TargetAccumulator';\n } else {\n return instrument;\n }\n}\n\nexport function restoreTabs(restoredTabs: ReadonlyArray): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl, getNewGuid }) => {\n const allSavedTiles: Array = [];\n restoredTabs.forEach(([tabId, { tiles }]) => {\n if (isEmpty(tiles)) {\n return;\n }\n\n const state = getState();\n const ccyPairs = sl.getAllCcyPairs(state);\n const productTypes = sl.getAvailableInstruments(state);\n const productsAccess = sl.getProductsAccess(state);\n\n const tilesToRestore = [...tiles]\n .sort(({ position: a }, { position: b }) => a.top - b.top)\n .filter(\n savedTile =>\n productTypes.includes(mapToInstrumentChoice(savedTile)) &&\n isProductAuthorized(productsAccess, savedTile.productName),\n );\n\n const isOptionGrouped = sl.getUserPreferenceData(state).optionStrategyGroupLegs;\n const isOptionGreekAndMktExpanded = sl.getUserPreferenceData(state).optionExpandGreekAndMkt;\n\n const restoredTiles = tilesToRestore\n .filter(({ currencyPair }) => !currencyPair || ccyPairs[currencyPair] !== undefined)\n .map(savedTile => {\n const tileId = getNewGuid();\n\n dispatch(\n ac.clientWorkspaceTileRestored(\n tabId,\n tileId,\n savedTile,\n isOptionGrouped,\n isOptionGreekAndMktExpanded,\n ),\n );\n return [tileId, savedTile] as const;\n });\n\n allSavedTiles.push(...restoredTiles);\n });\n\n dispatch(ac.restoreTileThunk(allSavedTiles));\n };\n}\n\nexport function restoreTileThunk(restoredTiles: Array): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const isCurrencyPairUndefined = (currencyPair?: string | null) =>\n isNotDefined(currencyPair) || sl.getCurrencyPairDetails(getState(), currencyPair) === null;\n\n const cashRestoredTiles: RestoredTiles = {};\n const optionRestoredTiles: RestoredTiles = {};\n const swapRestoredTiles: RestoredTiles = {};\n const accuRestoredTiles: RestoredTiles = {};\n\n restoredTiles\n .filter(([, tile]) => !isCurrencyPairUndefined(tile.currencyPair))\n .forEach(([tileId, tile]) => {\n switch (tile.instrument) {\n case 'Cash':\n cashRestoredTiles[tileId] = tile;\n break;\n case 'Option':\n optionRestoredTiles[tileId] = tile;\n if (tile.isStrategy) {\n dispatch(ac.optionToggleStrategyThunk(tileId, true));\n }\n break;\n case 'Swap':\n swapRestoredTiles[tileId] = tile;\n break;\n case 'Accumulator':\n accuRestoredTiles[tileId] = tile;\n break;\n default:\n assertUnreachable(tile, 'Unhandled instrument');\n }\n });\n\n dispatch(ac.cashTileRestoreEpic(cashRestoredTiles));\n dispatch(ac.optionTileRestoreEpic(optionRestoredTiles));\n dispatch(ac.swapTileRestoreEpic(swapRestoredTiles));\n dispatch(ac.accumulatorTileRestoreEpic(accuRestoredTiles));\n };\n}\n\nexport function clientWorkspaceTileZoomedThunk(quoteId: string): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const tabId = sl.getClientWorkspaceActiveTab(getState());\n dispatch(ac.clientWorkspaceTileZoomed(tabId!, quoteId));\n };\n}\n\nexport function clientWorkspaceTileMinimizedThunk(): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const tabId = sl.getClientWorkspaceActiveTab(getState());\n dispatch(ac.clientWorkspaceTileMinimized(tabId!));\n };\n}\n\nexport function toggleLockTraddingThunk(): Thunk {\n return (dispatch, getState, { selectors: { getUserInfo }, actionCreators: ac }) => {\n const { canTrade } = getUserInfo(getState());\n if (canTrade) {\n dispatch(ac.toggleTradingDisabled());\n }\n };\n}\n\nexport function saveWorkspaceThunk(): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac, metaSelectors: msl }) => {\n const state = getState();\n /**\n * @todo test\n */\n if (sl.getSaveState(state) !== 'READY') {\n return;\n }\n dispatch(ac.saveWorkspaceRequested());\n const workspaceToSave = msl.getWorkspaceToSave(state);\n dispatch(ac.saveWorkspaceRequestedEpic(workspaceToSave));\n };\n}\n\nconst waitstateClientId = '20252';\n\nfunction getDefaultClientId(clients: ClientMap, clientId: string | null = null): string | null {\n const clientsList = Object.values(clients);\n const hasClients = !isEmpty(clientsList);\n return clientId === null && hasClients\n ? clients[waitstateClientId]\n ? waitstateClientId\n : clientsList[0].companyId.toString()\n : clientId;\n}\n\nfunction isProductAuthorized(productsAccess: ProductsAccess, productName: ProductName) {\n const authorization: Record = {\n FxSpot: productsAccess.spot,\n FxFwd: productsAccess.forward,\n FxNdf: productsAccess.forward && productsAccess.nonDeliverable,\n FxSwap: productsAccess.swap,\n FxNdSwap: productsAccess.swap && productsAccess.nonDeliverable,\n FxPredeliver: productsAccess.swap,\n FxRollover: productsAccess.swap,\n FxOption: productsAccess.option,\n FxOrder: productsAccess.takeProfit || productsAccess.stopLoss || productsAccess.callOrder,\n FxBulk: false,\n FxTargetAccumulator: productsAccess.targetAccu,\n FxForwardAccumulator: productsAccess.forwardAccu,\n };\n\n return authorization[productName];\n}\n\nexport function setupWorkspaceCanTradeThunk(canTrade: boolean | null): Thunk {\n return (dispatch, getState, { selectors: { getUserInfoCanTrade }, actionCreators: ac }) => {\n if (canTrade === null) {\n return;\n }\n const userCanTrade = getUserInfoCanTrade(getState());\n const actualcanTrade = userCanTrade ? canTrade : userCanTrade;\n dispatch(ac.toggleTradingReceived(actualcanTrade));\n };\n}\n","import type { GridItemSize, GridItemPosition } from './gridLayoutModels';\n\nexport type GridLayoutActions = GridItemSizeChange | GridItemDrag | GridItemDragEnd;\n\nexport interface GridItemSizeChange {\n type: 'GRID_ITEM_SIZE_CHANGED';\n gridId: string;\n gridItemId: string;\n size: GridItemSize;\n}\n\nexport function gridItemSizeChange(\n gridId: string,\n gridItemId: string,\n size: GridItemSize,\n): GridItemSizeChange {\n return {\n type: 'GRID_ITEM_SIZE_CHANGED',\n gridId,\n gridItemId,\n size,\n };\n}\n\nexport interface GridItemDrag {\n type: 'GRID_ITEM_DRAG';\n gridId: string;\n gridItemId: string;\n position: GridItemPosition;\n}\n\nexport function gridItemDrag(\n gridId: string,\n gridItemId: string,\n position: GridItemPosition,\n): GridItemDrag {\n return { type: 'GRID_ITEM_DRAG', gridId, gridItemId, position };\n}\n\nexport interface GridItemDragEnd {\n type: 'GRID_ITEM_DRAG_END';\n gridId: string;\n}\n\nexport function gridItemDragEnd(gridId: string): GridItemDragEnd {\n return { type: 'GRID_ITEM_DRAG_END', gridId };\n}\n","import type { Thunk } from 'state';\nimport type { InstrumentChoice } from 'state/referenceData/referenceDataModel';\nimport { defaultHeights, colWidth } from 'styles/constants';\nimport type { GridItemPosition } from './gridLayoutModels';\n\nexport interface Size {\n height: number;\n width: number;\n}\n\nexport function gridItemSizeChangeThunk(tileId: string, size: Size): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n if (!sl.isTilePresent(state, tileId)) {\n return;\n }\n const tabId = sl.getClientWorkspaceIdByQuoteId(state, tileId);\n const gridItemSize = sl.getGridItemSize(state, tabId, tileId);\n const roundedSize = {\n height: Math.round(size.height),\n width: Math.round(size.width),\n };\n if (\n (roundedSize.height !== gridItemSize.height || roundedSize.width !== gridItemSize.width) &&\n roundedSize.width >= colWidth &&\n roundedSize.height !== 0\n ) {\n dispatch(ac.gridItemSizeChange(tabId, tileId, roundedSize));\n }\n };\n}\n/**\n *\n * @todo avoid no-op reduction by checking if hover is over current tile\n */\nexport function gridItemDragThunk(\n gridId: string,\n gridItemId: string,\n position: GridItemPosition,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n if (sl.newDragPositionWouldChangePosition(state, gridId, gridItemId, position)) {\n dispatch(ac.gridItemDrag(gridId, gridItemId, position));\n }\n };\n}\n\nexport function gridItemResetHeightByInstrument(\n tileId: string,\n instrument: InstrumentChoice,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n if (!sl.isTilePresent(state, tileId)) {\n return;\n }\n const tabId = sl.getClientWorkspaceIdByQuoteId(state, tileId);\n const gridItemSize = sl.getGridItemSize(state, tabId, tileId);\n const height = defaultHeights[instrument];\n if (height !== gridItemSize.height) {\n dispatch(ac.gridItemSizeChange(tabId, tileId, { width: colWidth, height }));\n }\n };\n}\n","import type { UserPreferencesData } from './userPreferencesModel';\n\nexport type UserPreferencesAction =\n | UserPreferenceToggleModal\n | UserPreferenceDataReceived\n | UserPreferencesDataChanged\n | UserPreferencesDataNotSaved;\n\nexport interface UserPreferenceToggleModal {\n type: 'USER_PREFERENCES_TOGGLE_MODAL';\n open: boolean;\n}\n\nexport function userPreferenceToggleModal(open: boolean): UserPreferenceToggleModal {\n return {\n type: 'USER_PREFERENCES_TOGGLE_MODAL',\n open,\n };\n}\n\nexport interface UserPreferenceDataReceived {\n type: 'USER_PREFERENCES_DATA_RECEIVED';\n data: Partial;\n}\n\nexport function userPreferenceDataReceived(\n data: Partial,\n): UserPreferenceDataReceived {\n return {\n type: 'USER_PREFERENCES_DATA_RECEIVED',\n data,\n };\n}\n\nexport interface UserPreferencesDataChanged {\n type: 'USER_PREFERENCES_DATA_CHANGED';\n patch: Partial;\n}\n\nexport function userPreferenceDataChanged(\n patch: Partial,\n): UserPreferencesDataChanged {\n return {\n type: 'USER_PREFERENCES_DATA_CHANGED',\n patch,\n };\n}\n\n/**\n * This action is only emitted for logging purposes for the time being\n */\nexport interface UserPreferencesDataNotSaved {\n type: 'USER_PREFERENCES_DATA_NOT_SAVED';\n patch: Partial;\n}\n\nexport function userPreferencesDataNotSaved(\n patch: Partial,\n): UserPreferencesDataNotSaved {\n return {\n type: 'USER_PREFERENCES_DATA_NOT_SAVED',\n patch,\n };\n}\n","import type { Thunk } from 'state';\nimport type { UserPreferencesData } from '../userPreferencesModel';\n\nexport function userPreferencesDataReceivedThunk(data: Partial): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const optionOneWayQuotationDefault = !sl.isUserInternalSales(getState());\n dispatch(\n ac.userPreferenceDataReceived({\n optionOneWayQuotation: optionOneWayQuotationDefault,\n ...data,\n }),\n );\n };\n}\n","import type {\n BlotterTab,\n BlotterTabMetadata,\n BlotterModeMetadata,\n BlotterHistoricalError,\n CantReopenReason,\n} from '../blotterModel';\nimport type { BlotterEntry, OrderBlotterEntry, TradeBlotterEntry } from '../blotterEntryModel';\nexport type BlotterAction =\n | BlotterToggle\n | BlotterUpdateModeMetadata\n | BlotterCantReopenEntry\n | BlotterEntryReceived\n | BlotterTabChanged\n | BlotterTabMetadataChanged\n | BlotterPanelHeightChanged\n | BlotterLiveRegisterSuccess\n | BlotterLiveRegisterFailure\n | BlotterOrderListReceived\n | BlotterOrderListReceivedFailed\n | BlotterIntradayTradesReceived\n | BlotterIntradayTradesRequestFailed\n | BlotterLiveRegisterStart\n | BlotterTableCrashed\n | BlotterRetrieveHistoricalTrades\n | BlotterAllowRefetchTrades\n | BlotterHistoricalTradesReceived\n | BlotterHistoricalTradesRequestFailed\n | BlotterFetchTradesAndOrdersStarted\n | BlotterFetchTradesAndOrdersEpic\n | BlotterOpenTileFromTrade;\n\nexport interface BlotterToggle {\n type: 'BLOTTER_TOGGLE';\n isOpen?: boolean;\n}\n\nexport function blotterToggle(isOpen?: boolean): BlotterToggle {\n return {\n type: 'BLOTTER_TOGGLE',\n isOpen,\n };\n}\n\nexport interface BlotterUpdateModeMetadata {\n type: 'BLOTTER_UPDATE_MODE_METADATA';\n modeMetadata: BlotterModeMetadata;\n}\n\nexport function blotterUpdateModeMetadata(\n modeMetadata: BlotterModeMetadata,\n): BlotterUpdateModeMetadata {\n return { type: 'BLOTTER_UPDATE_MODE_METADATA', modeMetadata };\n}\n\nexport interface BlotterCantReopenEntry {\n type: 'BLOTTER_CANT_REOPEN_ENTRY';\n reason: CantReopenReason | null;\n}\n\nexport function blotterCantReopenEntry(reason: CantReopenReason | null): BlotterCantReopenEntry {\n return { type: 'BLOTTER_CANT_REOPEN_ENTRY', reason };\n}\n\nexport interface BlotterEntryReceived {\n type: 'BLOTTER_ENTRY_RECEIVED';\n entry: BlotterEntry;\n}\n\nexport function blotterEntryReceived(entry: BlotterEntry): BlotterEntryReceived {\n return {\n type: 'BLOTTER_ENTRY_RECEIVED',\n entry,\n };\n}\n\nexport interface BlotterOrderListReceived {\n type: 'BLOTTER_ORDER_LIST_RECEIVED';\n orders: readonly OrderBlotterEntry[];\n}\n\nexport function blotterOrderListReceived(\n orders: readonly OrderBlotterEntry[],\n): BlotterOrderListReceived {\n return {\n type: 'BLOTTER_ORDER_LIST_RECEIVED',\n orders,\n };\n}\n\nexport interface BlotterIntradayTradesReceived {\n type: 'BLOTTER_INTRADAY_TRADES_RECEIVED';\n trades: readonly TradeBlotterEntry[];\n}\n\nexport function blotterIntradayTradesReceived(\n trades: readonly TradeBlotterEntry[],\n): BlotterIntradayTradesReceived {\n return {\n type: 'BLOTTER_INTRADAY_TRADES_RECEIVED',\n trades,\n };\n}\n\nexport interface BlotterFetchTradesAndOrdersStarted {\n type: 'BLOTTER_FETCH_INTRADAY_TRADES_STARTED';\n ordersToKeep?: string[];\n}\n\nexport function blotterFetchIntradayTradesStarted(\n ordersToKeep?: string[],\n): BlotterFetchTradesAndOrdersStarted {\n return {\n type: 'BLOTTER_FETCH_INTRADAY_TRADES_STARTED',\n ordersToKeep,\n };\n}\n\nexport interface BlotterIntradayTradesRequestFailed {\n type: 'BLOTTER_INTRADAY_TRADES_REQUEST_FAILED';\n}\n\nexport function blotterIntradayTradesRequestFailed(): BlotterIntradayTradesRequestFailed {\n return {\n type: 'BLOTTER_INTRADAY_TRADES_REQUEST_FAILED',\n };\n}\n\nexport interface BlotterOrderListReceivedFailed {\n type: 'BLOTTER_ORDER_LIST_REQUEST_FAILED';\n}\n\nexport function blotterOrderListRequestFailed(): BlotterOrderListReceivedFailed {\n return {\n type: 'BLOTTER_ORDER_LIST_REQUEST_FAILED',\n };\n}\n\nexport interface BlotterTabChanged {\n type: 'BLOTTER_TAB_CHANGED';\n tab: BlotterTab;\n}\n\nexport function blotterTabChanged(tab: BlotterTab): BlotterTabChanged {\n return {\n type: 'BLOTTER_TAB_CHANGED',\n tab,\n };\n}\nexport interface BlotterPanelHeightChanged {\n type: 'BLOTTER_PANEL_HEIGHT_CHANGED';\n height: number;\n}\n\nexport function blotterPanelHeightChanged(height: number): BlotterPanelHeightChanged {\n return {\n type: 'BLOTTER_PANEL_HEIGHT_CHANGED',\n height,\n };\n}\n\nexport interface BlotterLiveRegisterSuccess {\n type: 'BLOTTER_LIVE_REGISTER_SUCCESS';\n}\n\nexport function blotterLiveRegisterSuccess(): BlotterLiveRegisterSuccess {\n return {\n type: 'BLOTTER_LIVE_REGISTER_SUCCESS',\n };\n}\n\nexport interface BlotterFetchTradesAndOrdersEpic {\n type: 'BLOTTER_FETCH_TRADES_AND_ORDERS_EPIC';\n}\n\nexport function blotterFetchTradesAndOrdersEpic(): BlotterFetchTradesAndOrdersEpic {\n return {\n type: 'BLOTTER_FETCH_TRADES_AND_ORDERS_EPIC',\n };\n}\n\nexport interface BlotterLiveRegisterStart {\n type: 'BLOTTER_LIVE_REGISTER_START';\n}\n\nexport function blotterLiveRegisterStart(): BlotterLiveRegisterStart {\n return {\n type: 'BLOTTER_LIVE_REGISTER_START',\n };\n}\n\nexport interface BlotterLiveRegisterFailure {\n type: 'BLOTTER_LIVE_REGISTER_FAILURE';\n}\n\nexport function blotterLiveRegisterFailure(): BlotterLiveRegisterFailure {\n return {\n type: 'BLOTTER_LIVE_REGISTER_FAILURE',\n };\n}\n\nexport interface BlotterTabMetadataChanged {\n type: 'BLOTTER_TAB_METADATA_CHANGED';\n tab: BlotterTab;\n tabMetatada: Partial;\n}\n\nexport function blotterTabMetadataChanged(\n tab: BlotterTab,\n tabMetatada: Partial,\n): BlotterTabMetadataChanged {\n return {\n type: 'BLOTTER_TAB_METADATA_CHANGED',\n tab,\n tabMetatada,\n };\n}\n\nexport interface BlotterTableCrashed {\n type: 'BLOTTER_TABLE_CRASHED';\n}\n\nexport function blotterTableCrashed(): BlotterTableCrashed {\n return {\n type: 'BLOTTER_TABLE_CRASHED',\n };\n}\n\nexport interface BlotterRetrieveHistoricalTrades {\n type: 'BLOTTER_RETRIEVE_HISTORICAL_TRADES';\n}\n\nexport function blotterRetrieveHistoricalTrades(): BlotterRetrieveHistoricalTrades {\n return {\n type: 'BLOTTER_RETRIEVE_HISTORICAL_TRADES',\n };\n}\n\nexport interface BlotterAllowRefetchTrades {\n type: 'BLOTTER_ALLOW_REFETCH_TRADES';\n}\n\nexport function blotterAllowRefetchTrades(): BlotterAllowRefetchTrades {\n return {\n type: 'BLOTTER_ALLOW_REFETCH_TRADES',\n };\n}\n\nexport interface BlotterHistoricalTradesReceived {\n type: 'BLOTTER_HISTORICAL_TRADES_RECEIVED';\n trades: readonly TradeBlotterEntry[];\n}\n\nexport function blotterHistoricalTradesReceived(\n trades: readonly TradeBlotterEntry[],\n): BlotterHistoricalTradesReceived {\n return {\n type: 'BLOTTER_HISTORICAL_TRADES_RECEIVED',\n trades,\n };\n}\n\nexport interface BlotterHistoricalTradesRequestFailed {\n type: 'BLOTTER_HISTORICAL_TRADES_REQUEST_FAILED';\n error: BlotterHistoricalError;\n errorDetails?: string;\n}\n\nexport function blotterHistoricalTradesRequestFailed(\n error: BlotterHistoricalError,\n errorDetails?: string,\n): BlotterHistoricalTradesRequestFailed {\n return {\n type: 'BLOTTER_HISTORICAL_TRADES_REQUEST_FAILED',\n error,\n errorDetails,\n };\n}\n\ninterface BlotterOpenTileFromTrade {\n type: 'BLOTTER_OPEN_TILE_FROM_TRADE';\n}\nexport function blotterOpenTileFromTrade(): BlotterOpenTileFromTrade {\n return {\n type: 'BLOTTER_OPEN_TILE_FROM_TRADE',\n };\n}\n","import type { DetailsPanelMode } from '../blotterModel';\n\nexport type BlotterPanelAction =\n | BlotterShowDetailsPanel\n | BlotterHideDetailsPanel\n | BlotterSetDetailsPanelMode\n | BlotterChangeDetailsPanelUnexpectedError;\n\nexport interface BlotterShowDetailsPanel {\n type: 'BLOTTER_SHOW_DETAILS_PANEL';\n selectedId: string;\n mode: DetailsPanelMode;\n childrenIds: readonly string[] | null;\n}\n\nexport function blotterShowDetailsPanel(\n selectedId: string,\n mode: DetailsPanelMode,\n childrenIds: readonly string[] | null = null,\n): BlotterShowDetailsPanel {\n return {\n type: 'BLOTTER_SHOW_DETAILS_PANEL',\n selectedId,\n mode,\n childrenIds,\n };\n}\n\nexport interface BlotterHideDetailsPanel {\n type: 'BLOTTER_HIDE_DETAILS_PANEL';\n}\n\nexport function blotterHideDetailsPanel(): BlotterHideDetailsPanel {\n return {\n type: 'BLOTTER_HIDE_DETAILS_PANEL',\n };\n}\n\nexport interface BlotterSetDetailsPanelMode {\n type: 'BLOTTER_SET_DETAILS_PANEL_MODE';\n mode: DetailsPanelMode;\n saveError?: string;\n}\n\nexport function blotterSetDetailsPanelMode(\n mode: DetailsPanelMode,\n saveError?: string,\n): BlotterSetDetailsPanelMode {\n return {\n type: 'BLOTTER_SET_DETAILS_PANEL_MODE',\n mode,\n saveError,\n };\n}\n\nexport interface BlotterChangeDetailsPanelUnexpectedError {\n type: 'BLOTTER_CHANGE_DETAILS_PANEL_UNEXPECTED_ERROR';\n hasError: boolean;\n}\n\nexport function blotterChangeDetailsPanelUnexpectedError(\n hasError: boolean,\n): BlotterChangeDetailsPanelUnexpectedError {\n return {\n type: 'BLOTTER_CHANGE_DETAILS_PANEL_UNEXPECTED_ERROR',\n hasError,\n };\n}\n","import type {\n BlotterOrderAllInputsKeys,\n BlotterOrderInputs,\n BlotterOrderValues,\n OrderBlotterEntry,\n OrderErrorCode,\n OrderResultMode,\n} from '../blotterEntryModel';\nimport type { PropertyErrors } from 'state/share/productModel/litterals';\nimport type { OrderValidationReceivedDetails } from 'state/fxOrders/fxOrdersActions';\nimport type { BlotterOrderValidationDetail } from 'epics/blotter/utils';\n\nexport type BlotterOrderAction =\n | BlotterOrderCancellationEpic\n | BlotterOrderToggleMode\n | BlotterOrderResetProperty\n | BlotterOrderUpdateSuccess\n | BlotterOrderUpdateStillPending\n | BlotterOrderUpdateFailed\n | BlotterOrderErrorsReveived\n | BlotterOrderModifyEpic\n | BlotterOrderRejectedShowDialog\n | BlotterOrderRejectedHideDialog\n | BlotterOrderSaveErrorShowDialog\n | BlotterOrderSaveErrorHideDialog\n | BlotterOrderPauseEpic\n | BlotterOrderPauseSuccess\n | BlotterOrderPauseFailure\n | BlotterOrderResumeEpic\n | BlotterOrderResumeSuccess\n | BlotterOrderResumeFailure\n | BlotterOrderFillEpic\n | BlotterOrderFillSuccess\n | BlotterOrderFillFailure\n | BlotterEditedOrderValidationRequested\n | BlotterEditedOrderValidationReceived\n | BlotterEditedOrderCreateEntry\n | BlotterEditedOrderRemoveEntry\n | BlotterOrderValidationError\n | BlotterOrderOpenTile\n | BlotterEditedOrderPropertiesChanged;\n\nexport interface BlotterOrderCancellationEpic {\n type: 'BLOTTER_ORDER_CANCELLATION_EPIC';\n orderId: string;\n tileId?: string;\n}\n\nexport function blotterOrderCancellationEpic(orderId: string, tileId?: string): BlotterOrderCancellationEpic {\n return {\n type: 'BLOTTER_ORDER_CANCELLATION_EPIC',\n orderId,\n tileId,\n };\n}\n\nexport interface BlotterOrderToggleMode {\n type: 'BLOTTER_ORDER_TOGGLE_MODE';\n orderId: string;\n mode: OrderResultMode;\n}\n\nexport function blotterOrderToggleMode(orderId: string, mode: OrderResultMode): BlotterOrderToggleMode {\n return {\n type: 'BLOTTER_ORDER_TOGGLE_MODE',\n orderId,\n mode,\n };\n}\n\nexport interface BlotterOrderResetProperty {\n type: 'BLOTTER_ORDER_RESET_PROPERTY';\n orderId: string;\n field: BlotterOrderAllInputsKeys;\n}\n\nexport function blotterOrderResetProperty(\n orderId: string,\n field: BlotterOrderAllInputsKeys,\n): BlotterOrderResetProperty {\n return {\n type: 'BLOTTER_ORDER_RESET_PROPERTY',\n orderId,\n field,\n };\n}\n\nexport interface BlotterOrderUpdateSuccess {\n type: 'BLOTTER_ORDER_UPDATE_SUCCESS';\n orderId: string;\n}\n\nexport function blotterOrderUpdateSuccess(orderId: string): BlotterOrderUpdateSuccess {\n return {\n type: 'BLOTTER_ORDER_UPDATE_SUCCESS',\n orderId,\n };\n}\n\nexport interface BlotterOrderUpdateStillPending {\n type: 'BLOTTER_ORDER_UPDATE_STILL_PENDING';\n orderId: string;\n}\n\nexport function blotterOrderUpdateStillPending(orderId: string): BlotterOrderUpdateStillPending {\n return {\n type: 'BLOTTER_ORDER_UPDATE_STILL_PENDING',\n orderId,\n };\n}\n\nexport interface BlotterOrderUpdateFailed {\n type: 'BLOTTER_ORDER_UPDATE_FAILED';\n orderId: string;\n errorCode: OrderErrorCode;\n isValidationError: boolean;\n}\n\nexport function blotterOrderUpdateFailed(\n orderId: string,\n errorCode: OrderErrorCode,\n isValidationError = false,\n): BlotterOrderUpdateFailed {\n return {\n type: 'BLOTTER_ORDER_UPDATE_FAILED',\n orderId,\n errorCode,\n isValidationError,\n };\n}\n\nexport interface BlotterOrderErrorsReveived {\n type: 'BLOTTER_ORDER_ERRORS_RECEIVED';\n orderId: string;\n errors: PropertyErrors;\n}\n\nexport function blotterOrderErrorsReveived(\n orderId: string,\n errors: PropertyErrors,\n): BlotterOrderErrorsReveived {\n return {\n type: 'BLOTTER_ORDER_ERRORS_RECEIVED',\n orderId,\n errors,\n };\n}\n\nexport interface BlotterOrderModifyEpic {\n type: 'BLOTTER_ORDER_MODIFY_EPIC';\n orderId: string;\n}\n\nexport function blotterOrderModifyEpic(orderId: string): BlotterOrderModifyEpic {\n return {\n type: 'BLOTTER_ORDER_MODIFY_EPIC',\n orderId,\n };\n}\n\nexport interface BlotterOrderRejectedShowDialog {\n type: 'BLOTTER_ORDER_REJECTED_SHOW_DIALOG';\n orderId: string;\n}\n\nexport function blotterOrderRejectedShowDialog(orderId: string): BlotterOrderRejectedShowDialog {\n return {\n type: 'BLOTTER_ORDER_REJECTED_SHOW_DIALOG',\n orderId,\n };\n}\n\nexport interface BlotterOrderRejectedHideDialog {\n type: 'BLOTTER_ORDER_REJECTED_HIDE_DIALOG';\n}\n\nexport function blotterOrderRejectedHideDialog(): BlotterOrderRejectedHideDialog {\n return {\n type: 'BLOTTER_ORDER_REJECTED_HIDE_DIALOG',\n };\n}\n\nexport interface BlotterOrderSaveErrorShowDialog {\n type: 'BLOTTER_ORDER_SAVE_ERROR_SHOW_DIALOG';\n quoteId?: string;\n}\n\nexport function blotterOrderSaveErrorShowDialog(quoteId?: string): BlotterOrderSaveErrorShowDialog {\n return {\n type: 'BLOTTER_ORDER_SAVE_ERROR_SHOW_DIALOG',\n quoteId,\n };\n}\n\nexport interface BlotterOrderSaveErrorHideDialog {\n type: 'BLOTTER_ORDER_SAVE_ERROR_HIDE_DIALOG';\n}\n\nexport function blotterOrderSaveErrorHideDialog(): BlotterOrderSaveErrorHideDialog {\n return {\n type: 'BLOTTER_ORDER_SAVE_ERROR_HIDE_DIALOG',\n };\n}\n\nexport interface BlotterOrderPauseEpic {\n type: 'BLOTTER_ORDER_PAUSE_EPIC';\n orderId: string;\n}\n\nexport function blotterOrderPauseEpic(orderId: string): BlotterOrderPauseEpic {\n return {\n type: 'BLOTTER_ORDER_PAUSE_EPIC',\n orderId,\n };\n}\n\nexport interface BlotterOrderPauseSuccess {\n type: 'BLOTTER_ORDER_PAUSE_SUCCESS';\n orderId: string;\n}\n\nexport function blotterOrderPauseSuccess(orderId: string): BlotterOrderPauseSuccess {\n return {\n type: 'BLOTTER_ORDER_PAUSE_SUCCESS',\n orderId,\n };\n}\n\nexport interface BlotterOrderPauseFailure {\n type: 'BLOTTER_ORDER_PAUSE_FAILURE';\n orderId: string;\n}\n\nexport function blotterOrderPauseFailure(orderId: string): BlotterOrderPauseFailure {\n return {\n type: 'BLOTTER_ORDER_PAUSE_FAILURE',\n orderId,\n };\n}\n\nexport interface BlotterOrderResumeEpic {\n type: 'BLOTTER_ORDER_RESUME_EPIC';\n orderId: string;\n}\n\nexport function blotterOrderResumeEpic(orderId: string): BlotterOrderResumeEpic {\n return {\n type: 'BLOTTER_ORDER_RESUME_EPIC',\n orderId,\n };\n}\n\nexport interface BlotterOrderResumeSuccess {\n type: 'BLOTTER_ORDER_RESUME_SUCCESS';\n orderId: string;\n}\n\nexport function blotterOrderResumeSuccess(orderId: string): BlotterOrderResumeSuccess {\n return {\n type: 'BLOTTER_ORDER_RESUME_SUCCESS',\n orderId,\n };\n}\n\nexport interface BlotterOrderResumeFailure {\n type: 'BLOTTER_ORDER_RESUME_FAILURE';\n orderId: string;\n}\n\nexport function blotterOrderResumeFailure(orderId: string): BlotterOrderResumeFailure {\n return {\n type: 'BLOTTER_ORDER_RESUME_FAILURE',\n orderId,\n };\n}\n\nexport interface BlotterOrderFillEpic {\n type: 'BLOTTER_ORDER_FILL_EPIC';\n orderId: string;\n}\n\nexport function blotterOrderFillEpic(orderId: string): BlotterOrderFillEpic {\n return {\n type: 'BLOTTER_ORDER_FILL_EPIC',\n orderId,\n };\n}\n\nexport interface BlotterOrderFillSuccess {\n type: 'BLOTTER_ORDER_FILL_SUCCESS';\n orderId: string;\n}\n\nexport function blotterOrderFillSuccess(orderId: string): BlotterOrderFillSuccess {\n return {\n type: 'BLOTTER_ORDER_FILL_SUCCESS',\n orderId,\n };\n}\n\nexport interface BlotterOrderFillFailure {\n type: 'BLOTTER_ORDER_FILL_FAILURE';\n orderId: string;\n}\n\nexport function blotterOrderFillFailure(orderId: string): BlotterOrderFillFailure {\n return {\n type: 'BLOTTER_ORDER_FILL_FAILURE',\n orderId,\n };\n}\n\n// ███████╗ ██████╗ ██╗ ████████╗ ██╗ ██████╗ ███╗ ██╗\n// ██╔════╝ ██╔══██╗ ██║ ╚══██╔══╝ ██║ ██╔═══██╗ ████╗ ██║\n// █████╗ ██║ ██║ ██║ ██║ ██║ ██║ ██║ ██╔██╗ ██║\n// ██╔══╝ ██║ ██║ ██║ ██║ ██║ ██║ ██║ ██║╚██╗██║\n// ███████╗ ██████╔╝ ██║ ██║ ██║ ╚██████╔╝ ██║ ╚████║\n// ╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝\n\nexport interface BlotterEditedOrderValidationRequested {\n type: 'BLOTTER_EDITED_ORDER_VALIDATION_REQUESTED';\n orderId: string;\n}\n\nexport function blotterEditedOrderValidationRequested(orderId: string): BlotterEditedOrderValidationRequested {\n return {\n type: 'BLOTTER_EDITED_ORDER_VALIDATION_REQUESTED',\n orderId,\n };\n}\n\nexport type BlotterEditedOrderValidationReceived = {\n type: 'BLOTTER_EDITED_ORDER_VALIDATION_RECEIVED';\n orderId: string;\n allowOrderTakeProfitMargin: boolean;\n} & OrderValidationReceivedDetails;\n\nexport function blotterEditedOrderValidationReceived(\n orderId: string,\n details: OrderValidationReceivedDetails,\n allowOrderTakeProfitMargin: boolean = false,\n): BlotterEditedOrderValidationReceived {\n return {\n type: 'BLOTTER_EDITED_ORDER_VALIDATION_RECEIVED',\n orderId,\n ...details,\n allowOrderTakeProfitMargin,\n };\n}\nexport interface BlotterEditedOrderPropertiesChanged {\n type: 'BLOTTER_EDITED_ORDER_PROPERTIES_CHANGED';\n orderId: string;\n patch: Partial;\n allowOrderTakeProfitMargin: boolean;\n}\n\nexport function blotterEditedOrderPropertiesChanged(\n orderId: string,\n patch: Partial,\n allowOrderTakeProfitMargin: boolean = false,\n): BlotterEditedOrderPropertiesChanged {\n return {\n type: 'BLOTTER_EDITED_ORDER_PROPERTIES_CHANGED',\n orderId,\n patch,\n allowOrderTakeProfitMargin,\n };\n}\n\nexport interface BlotterEditedOrderCreateEntry {\n type: 'BLOTTER_EDITED_ORDER_CREATE_ENTRY';\n orderId: string;\n order: OrderBlotterEntry;\n}\n\nexport function blotterEditedOrderCreateEntry(\n orderId: string,\n order: OrderBlotterEntry,\n): BlotterEditedOrderCreateEntry {\n return {\n type: 'BLOTTER_EDITED_ORDER_CREATE_ENTRY',\n orderId,\n order,\n };\n}\n\nexport interface BlotterEditedOrderRemoveEntry {\n type: 'BLOTTER_EDITED_ORDER_REMOVE_ENTRY';\n orderId: string;\n}\nexport function blotterEditedOrderRemoveEntry(orderId: string): BlotterEditedOrderRemoveEntry {\n return {\n type: 'BLOTTER_EDITED_ORDER_REMOVE_ENTRY',\n orderId,\n };\n}\n\nexport interface BlotterOrderValidationError {\n type: 'BLOTTER_ORDER_VALIDATION_ERROR';\n orderId: string;\n error: string;\n}\n\nexport function blotterOrderValidationError(orderId: string, error: string): BlotterOrderValidationError {\n return {\n type: 'BLOTTER_ORDER_VALIDATION_ERROR',\n orderId,\n error,\n };\n}\n\nexport interface BlotterOrderOpenTile {\n type: 'BLOTTER_ORDER_OPEN_TILE';\n orderId: string;\n mode: OrderResultMode;\n account: string | null;\n currentTabId: string;\n}\n\nexport function blotterOrderOpenTile(\n orderId: string,\n mode: OrderResultMode,\n account: string | null,\n currentTabId: string,\n): BlotterOrderOpenTile {\n return {\n type: 'BLOTTER_ORDER_OPEN_TILE',\n orderId,\n mode,\n account,\n currentTabId,\n };\n}\n","import type { Thunk } from 'state';\nimport { assertUnreachable } from '@sgme/fp';\nimport { isAlgoOrder } from '../../fxOrders/fxOrdersModel';\nimport type { BlotterClickAction, OrderResultMode } from '../blotterEntryModel';\n\nexport function blotterClickActionThunk(\n blotterId: string,\n clickAction: BlotterClickAction,\n childrenIds: readonly string[] | null = null,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n\n if (sl.getBlotterActiveTab(state) !== 'order') {\n dispatch(ac.blotterDisplayDetailPanelThunk(blotterId, 'Display', childrenIds));\n return;\n }\n\n const order = sl.getBlotterOrderById(state, blotterId).values;\n const isAlgo = isAlgoOrder(order.product);\n\n dispatch(\n ac.openOrderTileFromBlotterEntryThunk(blotterId, clickActionToOrderResultMode[clickAction]),\n );\n\n switch (clickAction) {\n case 'Cancel':\n if (isAlgo) {\n dispatch(ac.blotterOrderCancellationEpic(blotterId, blotterId));\n }\n return;\n case 'Pause':\n dispatch(ac.blotterOrderPauseEpic(blotterId));\n return;\n case 'Resume':\n dispatch(ac.blotterOrderResumeEpic(blotterId));\n return;\n case 'Fill':\n dispatch(ac.blotterOrderFillEpic(blotterId));\n return;\n case 'Edit':\n case 'Display':\n return;\n default:\n assertUnreachable(clickAction, 'Unhandled mode');\n }\n };\n}\n\nconst clickActionToOrderResultMode: Record<\n BlotterClickAction,\n Exclude\n> = {\n Cancel: 'Cancel',\n Pause: 'Display',\n Display: 'Display',\n Edit: 'Edit',\n Fill: 'Display',\n Resume: 'Display',\n};\n","import type { Thunk } from 'state';\nimport { type BlotterMode, datesByDateRange, type DateRange } from '../blotterModel';\nimport { isUserInternalSales } from 'state/referenceData/referenceDataSelectors';\nimport { isEmpty } from '@sgme/fp';\n\nexport function blotterChangeMode(mode: BlotterMode): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n if (mode === 'intraday') {\n dispatch(ac.blotterUpdateModeMetadata({ mode }));\n } else {\n const state = getState();\n if (isUserInternalSales(state)) {\n return;\n }\n\n const allHistorical = sl.getBlotterAllHistorical(state);\n if (!isEmpty(Object.keys(allHistorical)) || sl.getBlotterFetching(state) === 'historical') {\n const range = sl.getBlotterHistoricalDateRange(state);\n let patch;\n if (range === 'customRange') {\n patch = {\n mode,\n historical: {\n dateRange: range,\n startDate: sl.getBlotterHistoricalStartDate(state),\n endDate: sl.getBlotterHistoricalEndDate(state),\n error: sl.getBlotterHistoricalError(state),\n },\n };\n } else {\n patch = {\n mode,\n historical: {\n dateRange: range,\n startDate: datesByDateRange[range][0],\n endDate: datesByDateRange[range][1],\n error: sl.getBlotterHistoricalError(state),\n },\n };\n }\n\n dispatch(ac.blotterUpdateModeMetadata(patch));\n } else {\n const defaultDateRange = 'yesterday' as const;\n dispatch(ac.blotterChangeDateRange(defaultDateRange));\n }\n }\n };\n}\n\nexport function blotterChangeDateRange(dateRange: DateRange): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n if (dateRange === 'customRange') {\n const state = getState();\n const wasCustom = sl.getBlotterHistoricalDateRange(state) === 'customRange';\n const startDate = wasCustom ? sl.getBlotterHistoricalStartDate(state) : null;\n const endDate = wasCustom ? sl.getBlotterHistoricalEndDate(state) : null;\n dispatch(\n ac.blotterUpdateModeMetadata({\n mode: 'historical',\n historical: {\n dateRange,\n startDate,\n endDate,\n error: null,\n },\n }),\n );\n return;\n } else {\n const [startDate, endDate] = datesByDateRange[dateRange];\n dispatch(\n ac.blotterUpdateModeMetadata({\n mode: 'historical',\n historical: {\n dateRange,\n startDate,\n endDate,\n error: null,\n },\n }),\n );\n dispatch(ac.blotterRetrieveHistoricalTradesIfChanged(startDate, endDate));\n }\n };\n}\n\nexport function blotterChangeCustomDateRange(\n startDate: Date | null,\n endDate: Date | null,\n): Thunk {\n return (dispatch, _getState, { actionCreators: ac }) => {\n dispatch(\n ac.blotterUpdateModeMetadata({\n mode: 'historical',\n historical: {\n dateRange: 'customRange',\n startDate,\n endDate,\n error: null,\n },\n }),\n );\n dispatch(ac.blotterRetrieveHistoricalTradesIfChanged(startDate, endDate));\n };\n}\n\nexport function blotterRetrieveHistoricalTradesIfChanged(\n startDate: Date | null,\n endDate: Date | null,\n): Thunk {\n return (dispatch, _getState, { actionCreators: ac }) => {\n if (startDate === null || endDate === null) {\n dispatch(ac.blotterHistoricalTradesReceived([]));\n return;\n }\n dispatch(ac.blotterRetrieveHistoricalTrades());\n };\n}\n","import type {\n BlotterEntry,\n BlotterOrderAlgoInputs,\n BlotterOrderCommonInputs,\n BlotterOrderInputs,\n BlotterOrderValues,\n} from '../blotterEntryModel';\nimport type { Thunk } from 'state';\nimport { type BlotterTab, detailsPanelConfirmationModes, type DetailsPanelMode } from '../blotterModel';\nimport type { PropertyErrors } from 'state/share/productModel/litterals';\nimport { assertUnhandled } from 'utils/error';\nimport { strictKeys } from 'utils/object';\nimport { type AlgoOrderType, getOrderLiquidityPoolOptions, isAlgoOrder } from 'state/fxOrders/fxOrdersModel';\nimport { assertUnreachable, isDefinedAndNonEmpty, makeValuesPredicate } from '@sgme/fp';\n\nconst isConfirmation = makeValuesPredicate(detailsPanelConfirmationModes);\n\nconst mapToTab = (entry: BlotterEntry): BlotterTab => {\n switch (entry.instrument) {\n case 'Order':\n return 'order';\n case 'Option':\n return 'option';\n case 'Accumulator':\n return 'accumulator';\n case 'Cash':\n return isDefinedAndNonEmpty(entry.strategyReference) ? 'option' : 'cash';\n default:\n assertUnreachable(entry, 'Unable to map blotter entry instrument to a blotter tab');\n }\n};\n\nexport function blotterDisplayDetailPanelThunk(\n selectedId: string | null,\n mode: DetailsPanelMode = 'Display',\n childrenIds: readonly string[] | null = null,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n if (selectedId === null) {\n return;\n }\n\n const state = getState();\n const entry = sl.getBlotterDataById(state, selectedId);\n\n if (entry.instrument === 'Order') {\n return;\n }\n\n if (!sl.getBlotterIsOpen(state)) {\n dispatch(ac.blotterToggle(true));\n }\n\n const entryTab = mapToTab(entry);\n if (sl.getBlotterActiveTab(state) !== entryTab) {\n dispatch(ac.blotterTabChanged(entryTab));\n }\n\n const currentOpenedPanel = sl.getBlotterDetailsPanelSelectedId(state);\n\n if (currentOpenedPanel !== null) {\n const currentMode = sl.getBlotterDetailsPanelMode(state);\n if (currentMode === 'Edit' && entryTab === 'order') {\n dispatch(ac.blotterResetOrderInputThunk(currentOpenedPanel));\n }\n }\n\n dispatch(ac.blotterShowDetailsPanel(selectedId, mode, childrenIds));\n\n // bypass confirmation for algo orders\n if (entryTab === 'order') {\n const order = sl.getBlotterOrderById(state, selectedId).values;\n const isAlgo = isAlgoOrder(order.product);\n if (isAlgo && isConfirmation(mode)) {\n dispatch(blotterDetailsPanelConfirmMessageThunk(selectedId));\n }\n }\n };\n}\n\nexport function blotterResetOrderInputThunk(orderId: string | null): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n if (orderId == null) {\n return;\n }\n\n const state = getState();\n const order = sl.getBlotterOrderById(state, orderId);\n\n // todo-5010 check type\n // @ts-ignore\n strictKeys(order.inputs).forEach(field => dispatch(ac.blotterOrderResetProperty(order.id, field)));\n };\n}\n\nexport function detailsPanelReceivedErrorsThunk(\n orderId: string | null,\n errors: PropertyErrors,\n): Thunk {\n return (dispatch, _getState, { actionCreators: ac }) => {\n if (orderId == null) {\n return;\n }\n\n dispatch(ac.blotterSetDetailsPanelMode('SaveError'));\n dispatch(ac.blotterOrderErrorsReveived(orderId, errors));\n };\n}\n\nexport function blotterSetDetailsPanelModeThunk(mode: DetailsPanelMode): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n\n dispatch(ac.blotterSetDetailsPanelMode(mode));\n\n // bypass confirmation for algo orders\n const selectedId = sl.getBlotterDetailsPanelSelectedId(state);\n if (selectedId && sl.getBlotterActiveTab(state) === 'order') {\n const order = sl.getBlotterOrderById(state, selectedId).values;\n const isAlgo = isAlgoOrder(order.product);\n\n if (isAlgo && isConfirmation(mode)) {\n dispatch(blotterDetailsPanelConfirmMessageThunk(selectedId));\n }\n }\n };\n}\n\nexport function blotterDetailsPanelConfirmMessageThunk(orderId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const currentMode = sl.getBlotterDetailsPanelMode(state);\n switch (currentMode) {\n case 'SaveConfirm':\n dispatch(ac.blotterOrderModifyEpic(orderId));\n return;\n case 'CancelConfirm':\n dispatch(ac.blotterOrderCancellationEpic(orderId));\n return;\n case 'PauseConfirm':\n dispatch(ac.blotterOrderPauseEpic(orderId));\n return;\n case 'ResumeConfirm':\n dispatch(ac.blotterOrderResumeEpic(orderId));\n return;\n case 'FillConfirm':\n dispatch(ac.blotterOrderFillEpic(orderId));\n return;\n default:\n assertUnhandled('Unhandled mode', currentMode);\n }\n };\n}\n\nexport function blotterChangeOrderTypeThunk(orderId: string, newOrderType: AlgoOrderType): Thunk {\n return (dispatch, _getState, { actionCreators: ac }) => {\n const updatePropertied = getUpdatedProperties(newOrderType);\n dispatch(ac.blotterEditedOrderPropertiesChanged(orderId, updatePropertied));\n };\n}\n\ntype ResetProperties = Pick<\n BlotterOrderCommonInputs & BlotterOrderAlgoInputs,\n 'product' | 'alphaSeeker' | 'clippingMode' | 'clipSize' | 'liquidityPool' | 'randomize' | 'speed' | 'spreadCapture'\n>;\n\nconst getUpdatedProperties = (newOrderType: AlgoOrderType): ResetProperties => {\n const resetProperties: ResetProperties = {\n product: newOrderType,\n alphaSeeker: false,\n clippingMode: 'Automatic',\n clipSize: null,\n liquidityPool: getOrderLiquidityPoolOptions(newOrderType),\n randomize: true,\n speed: 'Normal',\n spreadCapture: true,\n };\n switch (newOrderType) {\n case 'Falcon':\n return {\n ...resetProperties,\n speed: 'Normal',\n liquidityPool: ['Markets'],\n };\n case 'Nightjar':\n return {\n ...resetProperties,\n alphaSeeker: false,\n speed: 'Normal',\n };\n case 'Twap':\n return {\n ...resetProperties,\n clippingMode: 'Automatic',\n spreadCapture: true,\n randomize: true,\n };\n default:\n assertUnreachable(newOrderType, 'Changing an order to this type is not allowed');\n }\n};\n\n/**\n * Override orderPropertyChanged actions, add isInternalSales and feature flag allowOrderTakeProfitMargin\n * @TODO remove when featureToggle is enabled SGME-FX4466\n * @param quoteId {string}\n * @param patch {Partial}\n * @returns {Thunk}\n */\nexport function blotterOrderPropertyChangedTakeProfitMarginThunk(\n quoteId: string,\n patch: Partial,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const { orderTakeProfitMargin } = sl.getFeatureToggles(state);\n dispatch(ac.blotterEditedOrderPropertiesChanged(quoteId, { ...patch }, orderTakeProfitMargin));\n };\n}\n\nexport function blotterEditedOrderPropertyChangedTakeProfitMarginThunk(\n quoteId: string,\n patch: Partial,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const { orderTakeProfitMargin } = sl.getFeatureToggles(state);\n dispatch(ac.blotterEditedOrderPropertiesChanged(quoteId, { ...patch }, orderTakeProfitMargin));\n };\n}\n","import type { IFormData, SharedKey, ValueKey } from 'state/share/form';\nimport type {\n AlgoOrderType,\n ClippingMode,\n FixingMarginType,\n FixingPriceType,\n LimitOrderType,\n LiquidityPool,\n OrderType,\n Speed,\n} from 'state/fxOrders/fxOrdersModel';\nimport { isAlgoOrder } from 'state/fxOrders/fxOrdersModel';\nimport { makeValuesPredicate } from '@sgme/fp';\nimport type { Side } from 'state/share/productModel/litterals';\n\nexport type OrderErrorCode =\n | 'order.validationFailed'\n | 'order.serverError'\n | 'order.timeout'\n | 'order.unexpected'\n | 'order.internal_error';\n\nexport type BlotterEntry = TradeBlotterEntry | OrderBlotterEntry;\n\nexport interface TradeBlotterEntry extends BlotterEntryCommon, BlotterTradeProperties {\n instrument: BlotterTradeInstrument;\n strategyReference: string | null;\n childrenIds?: readonly string[];\n electronicReference: string | null;\n values: BlotterTradeValues;\n}\n\nexport type OrderResultMode = 'Display' | 'Edit' | 'Save' | 'Cancel';\nexport type BlotterClickAction = 'Cancel' | 'Pause' | 'Resume' | 'Fill' | 'Edit' | 'Display';\nexport type ModeStatus = 'Idle' | 'Pending' | 'Success' | 'StillPending' | 'Timeouted' | 'Error';\nexport interface OrderCommonBlotterEntry extends BlotterEntryCommon {\n instrument: BlotterOrderInstrument;\n mode: OrderResultMode;\n modeStatus: ModeStatus;\n errorCode?: OrderErrorCode;\n isReadyToSubmit?: boolean;\n}\n\nexport type OrderBlotterEntry = OrderBlotterLimitEntry | OrderBlotterAlgoEntry;\n\nexport type OrderBlotterLimitEntry = OrderCommonBlotterEntry & BlotterOrderLimitProperties;\nexport type OrderBlotterAlgoEntry = OrderCommonBlotterEntry & BlotterOrderAlgoPropertiesWithMetaData;\n\ninterface BlotterEntryCommon {\n id: string;\n receivedDate: number;\n}\n\nexport type BlotterTradeInstrument = 'Cash' | 'Option' | 'Accumulator';\nexport type BlotterOrderInstrument = 'Order';\nexport type BlotterInstrument = BlotterTradeInstrument | BlotterOrderInstrument;\n\nexport const cashTradeTypes = ['Spot', 'Outright', 'Ndf'] as const;\nexport const isCashTrade = makeValuesPredicate(cashTradeTypes);\nexport const swapTradeTypes = ['Swap', 'Nds'] as const;\nexport const isSwapTrade = makeValuesPredicate(swapTradeTypes);\nexport const optionTradeTypes = ['Vanilla', 'Strategy', 'Straddle', 'Strangle', 'RiskReversal'] as const;\n\nexport const accumulatorTypes = ['TargetAccumulator', 'ForwardAccumulator'] as const;\n\nexport const isOptionTrade = makeValuesPredicate(optionTradeTypes);\nexport const tradeTypes = [...cashTradeTypes, ...swapTradeTypes, ...optionTradeTypes, ...accumulatorTypes] as const;\nexport type TradeType = (typeof tradeTypes)[number];\n\nexport interface BlotterTradeValues {\n status: BlotterTradeStatus | null;\n product: TradeType;\n currencyPair: string | null;\n way: Side | null;\n dealtAmount: number | null;\n dealtCurrency: string | null;\n farDealtAmount: number | null;\n contraAmount: number | null;\n contraCurrency: string | null;\n farContraAmount: number | null;\n date: string | null;\n spot: number | null;\n points: number | null;\n venue: string | null;\n account: string | null;\n accountLongName: string | null;\n salesFullName: string | null;\n premiumCurrency: string | null;\n premiumSide: 'Pay' | 'Receive' | null;\n strike: number | null;\n expiry: string | null;\n premium: number | null;\n farDate: string | null;\n nearDate: string | null;\n farRate: number | null;\n nearRate: number | null;\n spotDate: string | null;\n portfolio: string | null;\n updateTime: string;\n electronicAccount: string | null;\n optionType: BlotterTradeOptionType | null;\n deliveryDate: string | null;\n premiumPaymentDate: string | null;\n deliveryType: string | null;\n cutOffPlace: string | null;\n counterpartyBdrId: number | null;\n}\n\nexport interface BlotterTradeInputs {}\n\nexport type BlotterTradeProperties = IFormData;\n\nexport type BlotterTradeValuePropertyKey = ValueKey;\n\nexport type BlotterTradeSharedPropertyKey = SharedKey;\n\n// values and inputs below which are not nullable below have been changed to match IFxOrderValues type properties\n// as they both represent the same state of an order for which oms validation business logic has been mutualized\n// forcing us to harmonize the models. Ideally it should be identical, this is just the first step.\nexport interface BlotterOrderLimitValues {\n product: LimitOrderType;\n limitPrice: number | null;\n customerPrice: number | null;\n fixingDateUtc?: string | null;\n fixingPriceType?: FixingPriceType | null;\n fixingMarginType?: FixingMarginType | null;\n fixingBenchmark?: string | null;\n fixingPlace?: string | null;\n fixingTime?: string | null;\n marginInBps?: number | null;\n margin?: number | null;\n price?: number | null;\n // TODO ABO, SGEFX-5010: check if we want to put that in notificationData when we get activeOrderList\n // and how to hydrate this values in blotter order model\n fixingTypes?: string[] | null;\n isCcyForcedBidAsk?: boolean | null;\n isStandardGroup?: boolean | null;\n fixingTimesOfSelectedType?: string[] | null;\n sourceNameOfSelectedType?: string[] | null;\n canModifyMarginInBps?: boolean;\n}\n\nexport interface BlotterOrderLimitInputs {\n product: LimitOrderType;\n limitPrice: string | null;\n customerPrice: string | null;\n fixingPriceType: FixingPriceType | null;\n fixingMarginType?: FixingMarginType | null;\n marginInBps: number | null;\n margin: number | null;\n // TODO ABO, SGEFX-5010: how to hydrate this values in blotter order model\n fixingBenchmark?: string | null;\n fixingTime?: string | null;\n fixingPlace?: string | null;\n}\n\nexport interface BlotterOrderAlgoValues {\n product: AlgoOrderType;\n limitPrice?: string | number | null;\n startDate?: string | null;\n startTime?: string | null;\n endDate?: string | null;\n endTime?: string | null;\n maturityDate?: string | null;\n liquidityPool?: readonly LiquidityPool[];\n clippingMode?: ClippingMode;\n clipSize?: number | null;\n randomize?: boolean;\n swapPoints?: number | null;\n forwardPrice?: number | null;\n averagePrice?: number | null;\n noWorseThan?: number | null;\n spreadCapture?: boolean;\n alphaSeeker?: boolean;\n speed: Speed;\n}\n\nexport interface BlotterOrderAlgoInputs {\n product: AlgoOrderType;\n startDate: string | null;\n startTime: string | null;\n endDate: string | null;\n endTime: string | null;\n liquidityPool: readonly LiquidityPool[] | null;\n clippingMode: ClippingMode;\n clipSize: string | null;\n randomize: boolean;\n noWorseThan?: string | null;\n spreadCapture: boolean;\n alphaSeeker: boolean;\n speed: Speed;\n}\n\nexport interface BlotterOrderCommonValues {\n product: OrderType;\n status: BlotterOrderStatus | null;\n account: string;\n currencyPair: string;\n way: Side | null;\n notional: number | null;\n notionalCurrency: string | null;\n executionPrice: number | null;\n executedNotional: number | null;\n remainingAmount: number | null;\n rejectReason: string | null;\n updateTime: string;\n isGtc: boolean | null;\n expiryDay: string | null;\n expiryTime: string | null;\n isReadyToSubmit?: boolean;\n}\n\nexport interface BlotterOrderCommonInputs {\n product: OrderType;\n notional: string | null;\n isGtc: boolean | null;\n}\n\nexport type BlotterAllOrderLimitValues = BlotterOrderCommonValues & BlotterOrderLimitValues;\nexport type BlotterAllOrderAlgoValues = BlotterOrderCommonValues & BlotterOrderAlgoValues;\n\nexport type BlotterOrderValues = BlotterOrderCommonValues & (BlotterOrderLimitValues | BlotterOrderAlgoValues);\n\nexport type BlotterOrderInputs = BlotterOrderCommonInputs & (BlotterOrderLimitInputs | BlotterOrderAlgoInputs);\nexport type BlotterAllOrderLimitInputs = BlotterOrderCommonInputs & BlotterOrderLimitInputs;\nexport type BlotterAllOrderAlgoInputs = BlotterOrderCommonInputs & BlotterOrderAlgoInputs;\n\nexport type BlotterOrderAllValuesKeys =\n | keyof BlotterOrderCommonValues\n | keyof BlotterOrderLimitValues\n | keyof BlotterOrderAlgoValues;\n\nexport type BlotterOrderAllInputsKeys =\n | keyof BlotterOrderCommonInputs\n | keyof BlotterOrderLimitInputs\n | keyof BlotterOrderAlgoInputs;\n\nexport type BlotterOrderLimitProperties = IFormData<\n BlotterOrderCommonValues & BlotterOrderLimitValues,\n BlotterOrderCommonInputs & BlotterOrderLimitInputs\n>;\n\nexport interface BlotterOrderAlgoMetadata {\n togglePausePending: boolean;\n fillNowPending: boolean;\n currentEspStreamId: string;\n}\n\nexport type BlotterOrderAlgoProperties = IFormData<\n BlotterOrderCommonValues & BlotterOrderAlgoValues,\n BlotterOrderCommonInputs & BlotterOrderAlgoInputs\n>;\n\nexport type BlotterOrderAlgoPropertiesWithMetaData = BlotterOrderAlgoProperties & BlotterOrderAlgoMetadata;\n\nexport type BlotterTradeStatus =\n | 'Block Processed'\n | 'Booking Pre Validated'\n | 'BookingToBeChecked'\n | 'BookingValidated'\n | 'Cancelled'\n | 'Cleared'\n | 'ClearingPending'\n | 'Destroyed'\n | 'Electronic CTP unmapped'\n | 'Expired'\n | 'FO Destroyed'\n | 'FO Pre-Validated'\n | 'FO Validated'\n | 'Fxo MO Pending'\n | 'Fxo Trader Pending'\n | 'Hedge Pending'\n | 'Initial'\n | 'Missed Deal'\n | 'MO Validation Pending'\n | 'Pending Full Termination'\n | 'Pending Liquidity'\n | 'Pending Migration'\n | 'Pending RFQ'\n | 'RFQ Pending'\n | 'RFQ Sales Cancelled'\n | 'RFQ Validated'\n | 'Sales Cancelled'\n | 'Sales Pending'\n | 'Sales RFQ'\n | 'Simulation'\n | 'SimulDestroyed'\n | 'Trader Cancelled'\n | 'Trader Pending'\n | 'Trader RFQ'\n | 'Waiting Sales'\n | 'Liquidity Allocated'\n | 'Netted'\n | 'Conversion Executed';\n\nexport type BlotterTradeOptionType =\n | 'CE'\n | 'Call'\n | 'PE'\n | 'Put'\n | 'CECSD1'\n | 'PECSD1'\n | 'PEFWD'\n | 'CEFWD'\n | 'PECSD2'\n | 'CECSD2'\n | 'STRAT'\n | 'STRATNET'\n | 'FXOTargetAccumulator';\n\nexport const blotterOrderStatuses = [\n 'Submitted',\n 'Watched',\n 'Executing',\n 'Done',\n 'Finished',\n 'Rejected',\n 'InError',\n 'Cancelled',\n 'Partially done',\n 'Expired',\n 'Paused',\n 'Updating',\n 'Cancelling',\n 'Running',\n 'New',\n] as const;\n\nexport type BlotterOrderStatus = (typeof blotterOrderStatuses)[number];\n\nexport const blotterOrderQuickActions = ['View', 'Edit', 'Cancel', 'Pause', 'Resume', 'Fill'] as const;\nexport type BlotterOrderQuickAction = (typeof blotterOrderQuickActions)[number];\n\nexport function isOrderEditable(status: BlotterOrderStatus | null, orderId: string): boolean {\n if (isSgmeOrder(orderId) === false) {\n return false;\n }\n switch (status) {\n case 'Watched':\n case 'Executing':\n case 'Paused':\n case 'Running':\n case 'New':\n return true;\n default:\n return false;\n }\n}\n\nexport function isSgmeOrder(orderId: string): boolean {\n // for a lack of a better check for now\n return orderId.toUpperCase().startsWith('SGME');\n}\n\nconst quickActionsRules: Record<\n BlotterOrderQuickAction,\n (status: BlotterOrderStatus, product: OrderType, orderId: string) => boolean\n> = {\n View: () => true,\n Pause: (status, product) => status !== 'Paused' && isAlgoOrder(product),\n Resume: (status, product) => status === 'Paused' && isAlgoOrder(product),\n Fill: (status, product, orderId) => isOrderEditable(status, orderId) && isAlgoOrder(product),\n Edit: () => true,\n Cancel: () => true,\n};\n\nexport function getBlotterOrderQuickActions(\n status: BlotterOrderStatus,\n product: OrderType,\n orderId: string,\n): BlotterOrderQuickAction[] {\n if (!isOrderEditable(status, orderId)) {\n return ['View'];\n }\n return blotterOrderQuickActions.filter(quickAction => quickActionsRules[quickAction](status, product, orderId));\n}\n\nexport function isOrderBlotterEntry(entry: BlotterEntry): entry is OrderBlotterEntry {\n return entry.instrument === 'Order';\n}\n\nexport function isTradeBlotterEntry(entry: BlotterEntry): entry is TradeBlotterEntry {\n return entry.instrument === 'Cash' || entry.instrument === 'Option' || entry.instrument === 'Accumulator';\n}\n","import type { BlotterEntry, BlotterTradeValues } from 'state/blotter/blotterEntryModel';\n\nexport type EnhancedBlotterEntry = BlotterEntry & { values: { accountDisplayName: string | null } };\n\nexport const getCounterPartyBdrId = (data: any): number | null => {\n const ref = data as EnhancedBlotterEntry;\n const values =\n ref.instrument === 'Cash' || ref.instrument === 'Option'\n ? (ref.values as BlotterTradeValues)\n : null;\n return values?.counterpartyBdrId || null;\n};\n","export type Predicate = (value: T) => boolean;\nexport type TypeGuard = (input: Input) => input is Output;\n\nexport function isNotPureArray(\n predicate: (value: A | B) => value is B,\n array: ReadonlyArray,\n): array is readonly A[] {\n return array.some(predicate);\n}\n","import type { Thunk } from 'state';\nimport {\n type BlotterEntry,\n isTradeBlotterEntry,\n type OrderBlotterEntry,\n type OrderResultMode,\n type TradeBlotterEntry,\n type TradeType,\n} from '../blotterEntryModel';\nimport type { Client } from 'state/referenceData';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type { ProductName } from 'state/share/productModel';\nimport type { CashTileOpenFromBlotter } from 'state/fxCashs/fxCashsModel';\nimport type { CurrencyChoice, HedgeType, Side } from 'state/share/productModel/litterals';\nimport { assertUnreachable, isString } from '@sgme/fp';\nimport type { SwapTileOpenFromBlotter } from 'state/fxSwaps/fxSwapsModel';\nimport type { OptionType, SettlementType } from 'state/fxOptions/fxOptionsModel';\nimport { getCounterPartyBdrId } from 'components/Blotter/LiveBlotter/liveBlotterType';\nimport { mapOptional } from 'utils/optional';\nimport { isNotPureArray } from 'utils/predicates';\nimport type { CantReopenReason } from '../blotterModel';\nimport type { LegOpenFromBlotter, OptionTileOpenFromBlotter } from 'state/fxOptions/actions/optionProduct';\n\ntype TileToReopen = CashTileOpenFromBlotter | SwapTileOpenFromBlotter | OptionTileOpenFromBlotter;\n\nexport function tileOpenFromTradeBlotterEntryThunk(blotterEntryId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n dispatch(ac.blotterOpenTileFromTrade()); // Only used for matomo tracking\n\n const state = getState();\n const blotterEntry = sl.getBlotterDataById(state, blotterEntryId);\n\n if (!isTradeBlotterEntry(blotterEntry)) {\n dispatch(ac.blotterCantReopenEntry('not_a_trade'));\n return;\n }\n\n const client = getClient(sl, state, blotterEntry);\n\n if (client === null) {\n dispatch(ac.blotterCantReopenEntry('client_missing'));\n return;\n }\n\n const tile = getTileToOpen(sl, state, blotterEntry);\n\n if (typeof tile === 'string') {\n dispatch(ac.blotterCantReopenEntry(tile));\n return;\n }\n\n dispatch(ac.clientWorkspaceTabAddedThunk('tiles', client.companyId.toString(), true));\n dispatch(ac.tileOpenedFromBlotterThunk(tile));\n };\n}\n\nfunction getTileToOpen(\n sl: Selectors,\n state: AppState,\n blotterEntry: TradeBlotterEntry,\n): TileToReopen | CantReopenReason {\n const productName = productMapper[blotterEntry.values.product];\n\n if (productName === undefined) {\n return 'unexpected_product';\n }\n\n if (!sl.isProductAuthorized(state, productName)) {\n return 'unauthorized_product';\n }\n\n const { currencyPair } = blotterEntry.values;\n const amountCurrency = getCurrencyChoice(blotterEntry.values.dealtCurrency, currencyPair);\n\n switch (productName) {\n case 'FxSpot':\n case 'FxFwd':\n case 'FxNdf': {\n const tile: CashTileOpenFromBlotter = {\n instrument: 'Cash',\n productName,\n currencyPair,\n isNonDeliverable: blotterEntry.values.product === 'Ndf',\n amount: blotterEntry.values.dealtAmount ?? undefined,\n amountCurrency,\n maturityDateTenor:\n extractDay(\n blotterEntry.values.product === 'Spot' ? blotterEntry.values.spotDate : blotterEntry.values.farDate,\n ) ?? undefined,\n };\n return tile;\n }\n\n case 'FxSwap': {\n const tile: SwapTileOpenFromBlotter = {\n instrument: 'Swap',\n productName,\n isNonDeliverable: sl.isCurrencyPairNeverDeliverable(state, currencyPair),\n currencyPair,\n amountCurrency,\n nearAmount: blotterEntry.values.dealtAmount ?? undefined,\n farAmount: blotterEntry.values.farDealtAmount ?? undefined,\n nearPaymentDateTenor: extractDay(blotterEntry.values.nearDate) ?? undefined,\n farPaymentDateTenor: extractDay(blotterEntry.values.farDate) ?? undefined,\n };\n return tile;\n }\n\n case 'FxOption': {\n const optionType = getOptionType(blotterEntry);\n\n if (optionType === null) {\n return 'invalid_option_type';\n }\n\n const childrenBlotterEntries =\n blotterEntry.childrenIds === undefined\n ? []\n : (sl.getBlotterChildrenTrades(state, blotterEntry.childrenIds) as TradeBlotterEntry[]);\n\n const legs = childrenBlotterEntries.filter(({ values: { product } }) => product === 'Vanilla').map(getLegToOpen);\n\n if (isNotPureArray(isString, legs)) {\n return 'invalid_leg';\n }\n\n const hedgeEntry = getStrategyHedgeEntry(childrenBlotterEntries);\n const hedgeType = getOptionHedgeType(hedgeEntry);\n\n if (hedgeType === null) {\n return 'unknown_hedge_type';\n }\n\n const tile: OptionTileOpenFromBlotter = {\n instrument: 'Option',\n productName: 'FxOption',\n optionType,\n strategyType: blotterEntry.values.product as TradeType,\n hedgeType,\n currencyPair,\n premiumCurrency: getCurrencyChoice(blotterEntry.values.premiumCurrency, blotterEntry.values.currencyPair),\n priceType: sl.getUserPreferenceData(state).defaultPriceType,\n side: getTileSide(blotterEntry),\n expiryDate: extractDay(blotterEntry.values.expiry),\n strike: blotterEntry.values.strike?.toString(),\n notionalAmount: blotterEntry.values.dealtAmount?.toString(),\n notionalCurrency: amountCurrency,\n deliveryDate: extractDay(blotterEntry.values.deliveryDate),\n settlementType: getSettlementType(blotterEntry.values.deliveryType),\n settlementPlace: blotterEntry.values.cutOffPlace,\n premiumDate: extractDay(blotterEntry.values.premiumPaymentDate),\n legs,\n };\n\n return tile;\n }\n\n default:\n return 'unhandled_product';\n }\n}\n\nconst getLegToOpen = (blotterEntry: TradeBlotterEntry): LegOpenFromBlotter | CantReopenReason => {\n const optionType = getOptionType(blotterEntry);\n\n if (optionType === null) {\n return 'invalid_option_leg_type';\n }\n\n return {\n optionType,\n side: getTileSide(blotterEntry),\n expiryDate: extractDay(blotterEntry.values.expiry),\n strike: blotterEntry.values.strike?.toString(),\n notionalAmount: blotterEntry.values.dealtAmount?.toString(),\n notionalCurrency: getCurrencyChoice(blotterEntry.values.dealtCurrency, blotterEntry.values.currencyPair),\n deliveryDate: extractDay(blotterEntry.values.deliveryDate),\n settlementType: getSettlementType(blotterEntry.values.deliveryType),\n settlementPlace: blotterEntry.values.cutOffPlace,\n premiumDate: extractDay(blotterEntry.values.premiumPaymentDate),\n };\n};\n\nconst productMapper: Record = {\n Ndf: 'FxNdf',\n Nds: 'FxSwap',\n Outright: 'FxFwd',\n Spot: 'FxSpot',\n Strategy: 'FxOption',\n Swap: 'FxSwap',\n TargetAccumulator: 'FxTargetAccumulator',\n ForwardAccumulator: 'FxForwardAccumulator',\n Vanilla: 'FxOption',\n Straddle: 'FxOption',\n Strangle: 'FxOption',\n RiskReversal: 'FxOption',\n};\n\nfunction getTileSide(blotterEntry: TradeBlotterEntry): Side {\n const value = blotterEntry.values.way?.trim()?.toLowerCase();\n switch (value) {\n case 'buy':\n return 'Buy';\n case 'sell':\n return 'Sell';\n default:\n return 'Buy';\n }\n}\n\nexport function tileOpenedFromBlotterThunk(\n tile: CashTileOpenFromBlotter | SwapTileOpenFromBlotter | OptionTileOpenFromBlotter,\n): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl, getNewGuid }) => {\n const state = getState();\n const tabId = sl.getClientWorkspaceActiveTab(state);\n const tileId = getNewGuid();\n\n const isOptionGrouped =\n tile.instrument === 'Option' ? sl.getUserPreferenceData(getState()).optionStrategyGroupLegs : null;\n\n const isOptionGreekAndMktExpanded =\n tile.instrument === 'Option' ? sl.getUserPreferenceData(getState()).optionExpandGreekAndMkt : null;\n\n dispatch(\n ac.clientWorkspaceTileReopened(\n tabId!,\n tileId,\n tile.instrument,\n tile.productName,\n isOptionGrouped,\n isOptionGreekAndMktExpanded,\n ),\n );\n\n switch (tile.instrument) {\n case 'Cash':\n dispatch(ac.cashTileOpenFromBlotterEpic(tileId, tile));\n break;\n\n case 'Swap':\n dispatch(ac.swapTileOpenFromBlotterEpic(tileId, tile));\n break;\n\n case 'Option':\n if (tile.legs.length > 1) {\n dispatch(ac.optionToggleStrategyThunk(tileId, true));\n\n const firstNotionalCurrency = tile.legs[0].notionalCurrency;\n\n if (tile.legs.some(({ notionalCurrency }) => notionalCurrency !== firstNotionalCurrency)) {\n dispatch(ac.optionLegsCurrencyLinkedToggled(tileId));\n }\n }\n\n dispatch(ac.optionTileOpenFromBlotterEpic(tileId, tile));\n break;\n\n default:\n assertUnreachable(tile, 'Reopen not implemented for new instrument');\n }\n\n dispatch(ac.checkCurrencyPairInversion(tileId, tile.currencyPair ?? null));\n };\n}\n\nfunction getCurrencyChoice(\n currency: string | null | undefined,\n currencyPair: string | null | undefined,\n): CurrencyChoice | undefined {\n if (!currencyPair || !currency) {\n return undefined;\n }\n return currencyPair.startsWith(`${currency}/`) ? 1 : 2;\n}\n\nfunction getSettlementType(deliveryType: string | null): SettlementType | undefined {\n const value = deliveryType?.trim()?.toLowerCase();\n switch (value) {\n case 'cash':\n return 'Cash';\n case 'physical_spot':\n return 'Physical';\n default:\n return undefined;\n }\n}\n\nconst extractDay = mapOptional((date: string) => date.replace(/T.*$/, ''));\n\nfunction getOptionHedgeType(hedgeEntry: TradeBlotterEntry | undefined): HedgeType | null {\n switch (hedgeEntry?.values.product) {\n case undefined:\n return 'Live';\n case 'Spot':\n return 'Spot';\n case 'Outright':\n return 'Forward';\n default:\n return null;\n }\n}\n\n/**\n * Get the type of option (Call or Put)\n *\n * returns undefined for strategies amd null when the type is unknown\n * @param blotterEntry\n */\nfunction getOptionType(blotterEntry: TradeBlotterEntry): OptionType | null | undefined {\n if (blotterEntry.values.product === 'Strategy' || blotterEntry.values.product !== 'Vanilla') {\n return undefined;\n }\n switch (blotterEntry.values.optionType) {\n case 'CE':\n case 'CECSD1':\n case 'CECSD2':\n case 'CEFWD':\n case 'Call':\n return 'Call';\n case 'PE':\n case 'PECSD1':\n case 'PECSD2':\n case 'PEFWD':\n case 'Put':\n return 'Put';\n default:\n return null;\n }\n}\n\nconst getStrategyHedgeEntry = (childrenBlotterEntries: TradeBlotterEntry[]) =>\n childrenBlotterEntries.find(entry => entry.values.product !== 'Vanilla');\n\nfunction getClient(sl: Selectors, state: AppState, blotterEntry: BlotterEntry): Readonly | null {\n const clientId = getCounterPartyBdrId(blotterEntry);\n return clientId !== null ? sl.getUserClientById(state, clientId.toString()) ?? null : null;\n}\n\nexport function openOrderTileFromBlotterEntryThunk(orderId: string, mode: OrderResultMode): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n\n const blotterEntry = sl.getBlotterDataById(state, orderId);\n\n if (blotterEntry.instrument !== 'Order') {\n return;\n }\n\n const orderAccount = blotterEntry.values.account;\n if (!orderAccount) {\n dispatch(ac.blotterCantReopenEntry('client_missing'));\n return;\n }\n\n const tabId = sl.getClientWorkspaceActiveTab(state)!;\n\n const tabAccount = sl.getClientWorkspaceTab(state, tabId).clientId;\n\n const tileAccount = orderAccount === tabAccount ? null : orderAccount;\n\n if (mode === 'Edit') {\n dispatch(ac.blotterEditedOrderCreateEntry(orderId, blotterEntry));\n }\n dispatch(ac.blotterOrderOpenTile(orderId, mode, tileAccount, tabId));\n };\n}\n\nexport function blotterOrderToggleModeThunk(orderId: string, mode: OrderResultMode): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n\n dispatch(ac.blotterOrderToggleMode(orderId, mode));\n\n if (mode === 'Edit') {\n const order = sl.getBlotterOrderById(state, orderId);\n const editedOrder = { ...order, mode: 'Edit' } as OrderBlotterEntry;\n dispatch(ac.blotterEditedOrderCreateEntry(orderId, editedOrder));\n } else {\n dispatch(ac.blotterEditedOrderRemoveEntry(orderId));\n }\n };\n}\n","import type { ItemPosition } from './freeLayoutModel';\n\nexport type FreeLayoutAction = FreeLayoutItemPositionChanged;\n\nexport interface FreeLayoutItemPositionChanged {\n type: 'FREELAYOUT_ITEM_POSITION_CHANGED';\n clientWorkspaceId: string;\n itemId: string;\n position: ItemPosition;\n}\n\nexport function freeLayoutItemPositionChanged(\n clientWorkspaceId: string,\n itemId: string,\n position: ItemPosition,\n): FreeLayoutItemPositionChanged {\n return {\n type: 'FREELAYOUT_ITEM_POSITION_CHANGED',\n clientWorkspaceId,\n itemId,\n position,\n };\n}\n","import type { FixingMarginType, IFxOrderInputs, OrderTemplate } from './fxOrdersModel';\nimport type { OrderValidationDetail } from 'api/order/oms';\nimport type { CurrencyChoice } from 'state/share/productModel/litterals';\nimport type { BlotterOrderValues, OrderErrorCode } from 'state/blotter/blotterEntryModel';\nimport type { BlotterOrderValidationDetail } from '../../epics/blotter/utils';\n\nexport type OrderAction =\n | OrderRequestEmailsEpic\n | OrderDefaultEmails\n | OrderEditingEmails\n | OrderStartDateNowChanged\n | OrderPropertyChanged\n | OrderPropertyChangedFromTemplate\n | OrderTemplateChanged\n | OrderValidationRequested\n | OrderValidationReceived\n | OrderValidationFailed\n | OrderAmountCurrencyChanged\n | OrderSubmission\n | OrderSubmissionSent\n | OrderSubmissionSuccess\n | OrderSubmissionStillPending\n | OrderSubmissionFailed\n | OrderErrorDismissed\n | OrderTemplateSaved\n | OrderTemplateUpdated\n | OrderTemplateApplied\n | OrderTemplateDeleted\n | OrderCancellationStarted\n | OrderCancellationSuccess\n | OrderCancellationStillPending\n | OrderCancellationFailed;\n\nexport interface OrderRequestEmailsEpic {\n type: 'ORDER_REQUEST_EMAILS_EPIC';\n bdrId: string;\n tabId: string;\n}\n\nexport function orderRequestEmailsEpic(bdrId: string, tabId: string): OrderRequestEmailsEpic {\n return {\n type: 'ORDER_REQUEST_EMAILS_EPIC',\n bdrId,\n tabId,\n };\n}\n\nexport interface OrderDefaultEmails {\n type: 'ORDER_DEFAULT_EMAILS';\n bdrId: string;\n emails: readonly string[];\n}\n\nexport function orderDefaultEmails(bdrId: string, emails: readonly string[]): OrderDefaultEmails {\n return {\n type: 'ORDER_DEFAULT_EMAILS',\n bdrId,\n emails,\n };\n}\n\nexport interface OrderEditingEmails {\n type: 'ORDER_EDITING_EMAILS';\n quoteId: string;\n editingEmails: boolean;\n}\n\nexport function orderEditingEmails(quoteId: string, editingEmails: boolean): OrderEditingEmails {\n return {\n type: 'ORDER_EDITING_EMAILS',\n quoteId,\n editingEmails,\n };\n}\n\nexport interface OrderStartDateNowChanged {\n type: 'ORDER_START_DATE_NOW_CHANGED';\n quoteId: string;\n isStartDateNow: boolean;\n}\n\nexport function orderStartDateNowChanged(quoteId: string, isStartDateNow: boolean): OrderStartDateNowChanged {\n return {\n type: 'ORDER_START_DATE_NOW_CHANGED',\n quoteId,\n isStartDateNow,\n };\n}\n\nexport interface OrderPropertyChanged {\n type: 'ORDER_PROPERTY_CHANGED';\n quoteId: string;\n patch: Partial;\n isInternalSales?: boolean;\n allowOrderTakeProfitMargin?: boolean;\n}\n\nexport function orderPropertyChanged(\n quoteId: string,\n patch: Partial,\n isInternalSales: boolean | undefined = undefined,\n allowOrderTakeProfitMargin = false,\n): OrderPropertyChanged {\n return {\n type: 'ORDER_PROPERTY_CHANGED',\n quoteId,\n patch,\n isInternalSales,\n allowOrderTakeProfitMargin,\n };\n}\n\nexport interface OrderPropertyChangedFromTemplate {\n type: 'ORDER_PROPERTY_CHANGED_FROM_TEMPLATE';\n quoteId: string;\n patch: Partial;\n}\n\nexport function orderPropertyChangedFromTemplate(\n quoteId: string,\n patch: Partial,\n): OrderPropertyChangedFromTemplate {\n return {\n type: 'ORDER_PROPERTY_CHANGED_FROM_TEMPLATE',\n quoteId,\n patch,\n };\n}\n\nexport interface OrderTemplateChanged {\n type: 'ORDER_TEMPLATE_CHANGED';\n quoteId: string;\n templateId: string;\n}\n\nexport function orderTemplateChanged(quoteId: string, templateId: string): OrderTemplateChanged {\n return {\n type: 'ORDER_TEMPLATE_CHANGED',\n quoteId,\n templateId,\n };\n}\n\nexport interface OrderValidationRequested {\n type: 'ORDER_VALIDATION_REQUESTED';\n quoteId: string;\n}\n\nexport function orderValidationRequested(quoteId: string): OrderValidationRequested {\n return {\n type: 'ORDER_VALIDATION_REQUESTED',\n quoteId,\n };\n}\n\nexport type OrderValidationReceived = {\n type: 'ORDER_VALIDATION_RECEIVED';\n quoteId: string;\n allowOrderTakeProfitMargin: boolean; // it's use in fxOrdersProductReducer\n clockOffset?: number;\n} & OrderValidationReceivedDetails;\n\nexport interface OrderValidationReceivedDetails {\n validationDetails: readonly T[];\n isReadyToSubmit: boolean;\n expiryDay?: string | null | undefined;\n expiryTime?: string | null | undefined;\n maturityDay?: string | null | undefined;\n limitPrice?: number | null | undefined;\n // @TODO remove optional when allowOrderTakeProfitMargin featureToggle is enable for everyone\n customerPrice?: number | null | undefined;\n fixingMarginType?: FixingMarginType;\n fixingTypes: string[] | null;\n isCcyForcedBidAsk: boolean | null;\n isStandardGroup: boolean | null;\n fixingTimesOfSelectedType: string[] | null | undefined;\n sourceNameOfSelectedType: string[] | null | undefined;\n marginInBps: number | null;\n margin?: number | null;\n canModifyMarginInBps: boolean;\n ndfFixingDate: string | null | undefined;\n ndfFixingSource: string | null | undefined;\n}\n\nexport const defaultOrderValidationReceivedDetails: OrderValidationReceivedDetails = {\n validationDetails: [],\n isReadyToSubmit: false,\n expiryDay: undefined,\n expiryTime: undefined,\n maturityDay: undefined,\n limitPrice: undefined,\n fixingTypes: null,\n isCcyForcedBidAsk: null,\n isStandardGroup: null,\n fixingTimesOfSelectedType: null,\n sourceNameOfSelectedType: null,\n marginInBps: null,\n margin: null,\n canModifyMarginInBps: false,\n ndfFixingDate: null,\n ndfFixingSource: null,\n fixingMarginType: 'MarginInBps',\n};\n\nexport function orderValidationReceived(\n quoteId: string,\n details: OrderValidationReceivedDetails,\n allowOrderTakeProfitMargin: boolean = false,\n clockOffset?: number,\n): OrderValidationReceived {\n return {\n type: 'ORDER_VALIDATION_RECEIVED',\n quoteId,\n ...details,\n allowOrderTakeProfitMargin,\n clockOffset,\n };\n}\n\nexport interface OrderValidationFailed {\n type: 'ORDER_VALIDATION_FAILED';\n quoteId: string;\n error: string;\n}\n\nexport function orderValidationFailed(quoteId: string, error: string): OrderValidationFailed {\n return {\n type: 'ORDER_VALIDATION_FAILED',\n error,\n quoteId,\n };\n}\n\nexport interface OrderAmountCurrencyChanged {\n type: 'ORDER_AMOUNT_CURRENCY_CHANGED';\n quoteId: string;\n currencyChoice: CurrencyChoice;\n}\n\nexport function orderAmountCurrencyChanged(\n quoteId: string,\n currencyChoice: CurrencyChoice,\n): OrderAmountCurrencyChanged {\n return {\n type: 'ORDER_AMOUNT_CURRENCY_CHANGED',\n quoteId,\n currencyChoice,\n };\n}\n\nexport interface OrderSubmission {\n type: 'ORDER_SUBMISSION_EPIC';\n quoteId: string;\n}\n\nexport function orderSubmissionEpic(quoteId: string): OrderSubmission {\n return {\n type: 'ORDER_SUBMISSION_EPIC',\n quoteId,\n };\n}\n\nexport interface OrderSubmissionSent {\n type: 'ORDER_SUBMISSION_SENT';\n quoteId: string;\n}\n\nexport function orderSubmissionSent(quoteId: string): OrderSubmissionSent {\n return {\n type: 'ORDER_SUBMISSION_SENT',\n quoteId,\n };\n}\n\nexport interface OrderSubmissionSuccess {\n type: 'ORDER_SUBMISSION_SUCCESS';\n quoteId: string;\n orderId: string | null;\n receivedDate: number;\n order: Omit;\n}\n\nexport function orderSubmissionSuccess(\n quoteId: string,\n orderId: string | null,\n receivedDate: number,\n order: Omit,\n): OrderSubmissionSuccess {\n return {\n type: 'ORDER_SUBMISSION_SUCCESS',\n quoteId,\n orderId,\n receivedDate,\n order,\n };\n}\n\nexport interface OrderSubmissionStillPending {\n type: 'ORDER_SUBMISSION_STILL_PENDING';\n quoteId: string;\n}\n\nexport function orderSubmissionStillPending(quoteId: string): OrderSubmissionStillPending {\n return {\n type: 'ORDER_SUBMISSION_STILL_PENDING',\n quoteId,\n };\n}\n\nexport interface OrderSubmissionFailed {\n type: 'ORDER_SUBMISSION_FAILED';\n quoteId: string;\n errorCode: OrderErrorCode;\n reason?: string;\n}\n\nexport function orderSubmissionFailed(\n quoteId: string,\n errorCode: OrderErrorCode,\n reason?: string,\n): OrderSubmissionFailed {\n return {\n type: 'ORDER_SUBMISSION_FAILED',\n quoteId,\n errorCode,\n reason,\n };\n}\n\nexport interface OrderErrorDismissed {\n type: 'ORDER_ERROR_DISMISSED';\n quoteId: string;\n}\n\nexport function orderErrorDismissed(quoteId: string): OrderErrorDismissed {\n return {\n type: 'ORDER_ERROR_DISMISSED',\n quoteId,\n };\n}\n\nexport interface OrderTemplateSaved {\n type: 'ORDER_TEMPLATE_SAVED';\n template: OrderTemplate;\n}\n\nexport function orderTemplateSaved(template: OrderTemplate): OrderTemplateSaved {\n return {\n type: 'ORDER_TEMPLATE_SAVED',\n template,\n };\n}\n\nexport interface OrderTemplateApplied {\n type: 'ORDER_TEMPLATE_APPLIED';\n templateId: string;\n}\n\nexport function orderTemplateApplied(templateId: string): OrderTemplateApplied {\n return {\n type: 'ORDER_TEMPLATE_APPLIED',\n templateId,\n };\n}\n\nexport interface OrderTemplateUpdated {\n type: 'ORDER_TEMPLATE_UPDATED';\n id: OrderTemplate['id'];\n fields: OrderTemplate['fields'];\n}\n\nexport function orderTemplateUpdated(id: OrderTemplate['id'], fields: OrderTemplate['fields']): OrderTemplateUpdated {\n return {\n type: 'ORDER_TEMPLATE_UPDATED',\n id,\n fields,\n };\n}\n\nexport interface OrderTemplateDeleted {\n type: 'ORDER_TEMPLATE_DELETED';\n templateId: string;\n}\n\nexport function orderTemplateDeleted(templateId: string): OrderTemplateDeleted {\n return {\n type: 'ORDER_TEMPLATE_DELETED',\n templateId,\n };\n}\n\nexport interface OrderCancellationStarted {\n type: 'ORDER_CANCELLATION_STARTED';\n quoteId: string;\n}\n\nexport function orderCancellationStarted(quoteId: string): OrderCancellationStarted {\n return {\n type: 'ORDER_CANCELLATION_STARTED',\n quoteId,\n };\n}\n\nexport interface OrderCancellationSuccess {\n type: 'ORDER_CANCELLATION_SUCCESS';\n quoteId: string;\n}\n\nexport function orderCancellationSuccess(quoteId: string): OrderCancellationSuccess {\n return {\n type: 'ORDER_CANCELLATION_SUCCESS',\n quoteId,\n };\n}\n\nexport interface OrderCancellationStillPending {\n type: 'ORDER_CANCELLATION_STILL_PENDING';\n quoteId: string;\n}\n\nexport function orderCancellationStillPending(quoteId: string): OrderCancellationStillPending {\n return {\n type: 'ORDER_CANCELLATION_STILL_PENDING',\n quoteId,\n };\n}\n\nexport interface OrderCancellationFailed {\n type: 'ORDER_CANCELLATION_FAILED';\n quoteId: string;\n errorCode: OrderErrorCode;\n}\n\nexport function orderCancellationFailed(quoteId: string, errorCode: OrderErrorCode): OrderCancellationFailed {\n return {\n type: 'ORDER_CANCELLATION_FAILED',\n quoteId,\n errorCode,\n };\n}\n","import type { Thunk } from 'state';\nimport type { OrderType } from '../fxOrdersModel';\nimport type { Way } from 'state/share/productModel/litterals';\nimport { clearUndefined } from 'utils/clearUndefined';\nimport { getTileOverriddenClientId } from 'state/clientWorkspace/selectors';\nimport { assertIsDefined } from '@sgme/fp';\nimport { fieldData } from '../../../utils/fieldSelectors';\n\nexport function orderClientChangedThunk(orderId: string, clientId: string): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const state = getState();\n const isFrozen = sl.isOrderFrozen(state, orderId);\n if (!isFrozen) {\n const companyId = sl.getCompanyIdFromClientId(state, clientId);\n dispatch(ac.espStreamRestartThunk(orderId, undefined, undefined, companyId));\n\n const orderType = fieldData(sl.getOrderType(state, orderId)).data;\n\n //todo once feature toggle is enabled for all remove this\n if (sl.getFeatureToggles(state).orderTakeProfitMargin && orderType === 'TakeProfit')\n dispatch(ac.orderPropertyChanged(orderId, { customerPrice: null, margin: null }));\n }\n };\n}\n\nexport function orderCreatedFromTemplateThunk(\n workspaceId: string,\n quoteId: string,\n templateId: string,\n way?: Way,\n): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl, getNewGuid }) => {\n const state = getState();\n const template = sl.getOrderTemplateById(state, templateId);\n assertIsDefined(template, 'Unexpected undefined template');\n\n const orderId = getNewGuid();\n\n dispatch(orderCreatedThunk(workspaceId, quoteId, template.fields.type!, undefined, undefined, way, orderId));\n\n dispatch(ac.orderApplyTemplate(orderId, templateId));\n };\n}\n\nexport function orderCreatedThunk(\n clientWorkspaceId: string,\n quoteId: string,\n orderType: OrderType,\n limitPrice?: string,\n customerPrice?: string,\n way?: Way,\n newId?: string,\n): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl, getNewGuid }) => {\n const state = getState();\n const tilePosition = sl.getGridItemPosition(state, clientWorkspaceId, quoteId);\n const tileSize = sl.getGridItemSize(state, clientWorkspaceId, quoteId);\n // Position order\n // close to top right corner of tile if not out of the screen, else flip\n const left = tilePosition.left + tileSize.width;\n const position = {\n top: tilePosition.top + 20,\n left: left + tileSize.width < window.innerWidth ? left : tilePosition.left - Math.floor(tileSize.width / 4),\n };\n const orderId = newId || getNewGuid();\n dispatch(ac.clientWorkspaceNewTileAdded(clientWorkspaceId, orderId, 'Order', null, null, position));\n const overrideClientId = getTileOverriddenClientId(state, quoteId);\n if (overrideClientId !== null) {\n dispatch(ac.tileClientOverridden(orderId, overrideClientId));\n }\n\n const availableTypes = sl.getAvailableOrderTypes(state);\n if (!availableTypes.includes(orderType)) {\n return;\n }\n\n const currencyPair = sl.getCashCurrencyPair(state, quoteId).value;\n const amount = sl.getCashAmount(state, quoteId).value?.toString();\n const amountCurrency = sl.getCashAmountCurrency(state, quoteId).value;\n const bdrId = sl.getClientIdByQuoteId(state, quoteId);\n\n const userEmails = sl.getUserPreferenceData(state).emails;\n const userEmailsOrder = sl.getUserPreferenceData(state).splitNotificationsEmailsOrders.join(';');\n const orderDefaultEmails = sl.getOrderDefaultEmails(state, bdrId!);\n\n const emails = [...orderDefaultEmails.filter(mail => !userEmails.includes(mail)), ...userEmails].join(';');\n dispatch(\n ac.orderPropertyChangedTakeProfitMarginThunk(\n orderId,\n clearUndefined({\n type: orderType,\n emailsOrders: userEmailsOrder,\n currencyPair,\n amount,\n amountCurrency,\n emails,\n limitPrice,\n customerPrice,\n way: way && (way === 'Ask' ? 'Sell' : 'Buy'),\n }),\n ),\n );\n\n if (currencyPair) {\n dispatch(ac.espStreamRestartThunk(orderId, currencyPair, undefined, undefined));\n }\n };\n}\n\nexport function orderClosedThunk(quoteId: string, automatically = false): Thunk {\n return (dispatch, getState, { actionCreators: ac, selectors: sl }) => {\n const state = getState();\n if (!sl.isTilePresent(state, quoteId)) {\n return;\n }\n dispatch(ac.espTileStreamUnsubscribeThunk(quoteId));\n const tabId = sl.getClientWorkspaceIdByQuoteId(state, quoteId);\n return dispatch(ac.clientWorkspaceTileDeleted(quoteId, tabId, automatically));\n };\n}\n","import type { Thunk } from 'state';\n\nexport function orderDefaultEmailsReceived(\n tabId: string,\n bdrId: string,\n emails: readonly string[],\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n dispatch(ac.orderDefaultEmails(bdrId, emails));\n\n const state = getState();\n if (!sl.isTabPresent(state, tabId)) {\n return;\n }\n const orderIds = sl\n .getClientWorkspaceTab(state, tabId)\n .tiles.filter(tileId => sl.getQuoteInstrument(state, tileId) === 'Order')\n .filter(tileId => sl.getClientIdByQuoteId(state, tileId) === bdrId);\n const userEmails = sl.getUserPreferenceData(state).emails;\n const finalEmails = [...emails, ...userEmails.filter(mail => !emails.includes(mail))].join(';');\n orderIds.forEach(orderId =>\n dispatch(ac.orderPropertyChanged(orderId, { emails: finalEmails })),\n );\n };\n}\n","import { isBefore, addYears, addMonths, isValid, parse, format, startOfDay } from 'date-fns';\nimport { enUS as en, fr } from 'date-fns/locale';\nimport type { DateInputCultureInfo } from 'state/userPreferences';\n\nconst locales: Record = { en, fr };\n\nconst acceptedUsFormats = [\n 'dd MMM yyyy',\n 'MMM dd',\n 'MMdd',\n 'MM/dd',\n 'MM/dd/yy',\n 'MM/dd/yyyy',\n 'MM-dd',\n 'MM-dd-yy',\n 'MM-dd-yyyy',\n 'yyyy-MM-dd',\n];\nconst acceptedFrFormats = [\n 'dd MMM yyyy',\n 'dd MMM yy',\n 'd MMM yyyy',\n 'd MMM yy',\n 'ddMM',\n 'dd MMM',\n 'd MMM',\n 'ddMMyy',\n 'ddMMyyyy',\n 'dd/MM',\n 'dd-MM',\n 'dd/MM/yy',\n 'dd-MM-yy',\n 'dd/MM/yyyy',\n 'dd-MM-yyyy',\n 'yyyy-MM-dd',\n];\nconst standardFormat = 'yyyy-MM-dd';\n\nfunction addOneYearIfPastDate(date: Date, now: Date): Date {\n if (isBefore(date, now)) {\n return addYears(date, 1);\n }\n return date;\n}\n\nfunction addOneMonthIfPastDate(date: Date, now: Date): Date {\n if (isBefore(date, now)) {\n return addMonths(date, 1);\n }\n return date;\n}\n\nexport function tryParseDate(\n cultureInfo: DateInputCultureInfo,\n selectedDate: string,\n now: Date = new Date(),\n): Date {\n const dateStringTrimmed = selectedDate.trim();\n\n const acceptedFormats = cultureInfo === 'fr' ? acceptedFrFormats : acceptedUsFormats;\n\n for (const formatString of acceptedFormats) {\n const parsedDate = parse(dateStringTrimmed, formatString, now, {\n locale: locales[cultureInfo],\n });\n if (isValid(parsedDate)) {\n return addOneYearIfPastDate(parsedDate, now);\n }\n }\n\n const parsedDayDate = parse(dateStringTrimmed, 'dd', now, {\n locale: locales[cultureInfo],\n });\n if (isValid(parsedDayDate)) {\n return addOneMonthIfPastDate(parsedDayDate, now);\n }\n\n return parsedDayDate;\n}\n\nconst tenorRegex = /^([0-9]+[dwmy]{1}|[a-z]{1,3}[0-9]*)$/gi;\nconst isTenor = (dateOrTenor: string) => tenorRegex.test(dateOrTenor.trim());\n\nconst isValidStandardDate = (date: string) => isValid(parse(date, standardFormat, new Date()));\n\nexport const parseWithCultureInfoWith =\n (now: Date) =>\n (cultureInfo: DateInputCultureInfo, selectedDateOrTenor: string): string => {\n if (isTenor(selectedDateOrTenor) || isValidStandardDate(selectedDateOrTenor)) {\n return selectedDateOrTenor;\n }\n\n const maybeParsedDate = tryParseDate(cultureInfo, selectedDateOrTenor, now);\n\n if (isValid(maybeParsedDate)) {\n return format(maybeParsedDate, standardFormat);\n }\n\n return selectedDateOrTenor;\n };\n\nexport const parseWithCultureInfo = parseWithCultureInfoWith(startOfDay(new Date()));\n","import type { Thunk } from 'state';\nimport { fieldData } from 'utils/fieldSelectors';\nimport type { CurrencyChoice } from 'state/share/productModel/litterals';\nimport { parseWithCultureInfo } from 'utils/parseDateWithCultureInfo';\nimport { type IFxOrderInputs, isAlgoOrder } from '../fxOrdersModel';\n\nexport function orderNotionalCurrencyChangedThunk(orderId: string, amount: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const { data: oldCurrency } = fieldData(sl.getOrderAmountCurrency(state, orderId));\n const { data: oldAmount } = fieldData(sl.getOrderAmount(state, orderId));\n\n const amountCurrency = ((oldCurrency % 2) + 1) as CurrencyChoice;\n\n if (oldAmount === null && amount === '') {\n dispatch(ac.orderAmountCurrencyChanged(orderId, amountCurrency));\n } else {\n dispatch(\n ac.orderPropertyChanged(orderId, {\n amount,\n amountCurrency,\n }),\n );\n }\n };\n}\n\nexport function orderWayToggled(orderId: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const way = sl.getOrderWay(state, orderId).value;\n\n dispatch(ac.orderPropertyChanged(orderId, { way: way === 'Buy' ? 'Sell' : 'Buy' }));\n };\n}\n\nexport function orderCurrencyPairChangeThunk(quoteId: string, currencyPair: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n dispatch(ac.orderPropertyChanged(quoteId, { currencyPair }));\n const state = getState();\n\n if (currencyPair !== undefined && currencyPair !== sl.getOrderCurrencyPair(state, quoteId).value) {\n dispatch(ac.espStreamRestartThunk(quoteId, currencyPair, undefined, undefined));\n }\n };\n}\n\nexport function orderExpiryChangeThunk(quoteId: string, expiryDay: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const { dateInputCultureInfo: cultureInfo } = sl.getUserPreferenceData(state);\n\n const date = parseWithCultureInfo(cultureInfo, expiryDay);\n dispatch(ac.orderPropertyChanged(quoteId, { expiryDay: date }));\n };\n}\n\nexport function orderFixingDateChangeThunk(quoteId: string, fixingDateUtc: string): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const { dateInputCultureInfo: cultureInfo } = sl.getUserPreferenceData(state);\n\n const date = parseWithCultureInfo(cultureInfo, fixingDateUtc);\n dispatch(ac.orderPropertyChanged(quoteId, { fixingDateUtc: date }));\n };\n}\n\nconst defaultExpiryTime = '17:00:00';\n\nexport function orderGtcChangedThunk(quoteId: string, isGtc?: boolean): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const orderType = fieldData(sl.getOrderType(state, quoteId)).data;\n\n dispatch(\n ac.orderPropertyChanged(quoteId, {\n isGtc,\n expiryTime: isGtc || isAlgoOrder(orderType) ? null : defaultExpiryTime,\n }),\n );\n };\n}\n\n/**\n * Override orderPropertyChanged actions, add isInternalSales and feature flag allowOrderTakeProfitMargin\n * @TODO remove when featureToggle is enabled SGME-FX4466\n * @param quoteId {string}\n * @param patch {Partial}\n * @returns {Thunk}\n */\nexport function orderPropertyChangedTakeProfitMarginThunk(\n quoteId: string,\n patch: Partial,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const isInternalSales = sl.getUserInfoUserType(state) === 'Internal Sales';\n const { orderTakeProfitMargin } = sl.getFeatureToggles(state);\n\n dispatch(ac.orderPropertyChanged(quoteId, { ...patch }, isInternalSales, orderTakeProfitMargin));\n };\n}\n","import type { Thunk } from 'state';\nimport { assertIsDefined } from '@sgme/fp';\nimport type { OrderTemplate } from '../fxOrdersModel';\n\nexport const orderSaveAsNewTemplate =\n (orderId: string, templateName: string): Thunk =>\n (dispatch, getState, { selectors: sl, actionCreators: ac, getNewGuid }) => {\n const state = getState();\n const fields = sl.getFieldsForTemplates(state, orderId);\n const template: OrderTemplate = {\n id: getNewGuid(),\n name: templateName,\n fields,\n };\n\n dispatch(ac.orderTemplateSaved(template));\n dispatch(ac.orderTemplateChanged(orderId, template.id));\n dispatch(ac.saveOrderTemplatesRequestedEpic(getState().fxOrders.templates));\n };\n\nexport const orderUpdateTemplate =\n (orderId: string): Thunk =>\n (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const state = getState();\n const templateId = sl.getOrderTemplateId(state, orderId);\n assertIsDefined(templateId, 'templateId needed to update');\n const newFields = sl.getFieldsForTemplates(state, orderId);\n\n dispatch(ac.orderTemplateUpdated(templateId, newFields));\n dispatch(ac.saveOrderTemplatesRequestedEpic(getState().fxOrders.templates));\n };\n\nexport const orderApplyTemplate =\n (orderId: string, templateId: string): Thunk =>\n (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const template = sl.getOrderTemplateById(getState(), templateId);\n assertIsDefined(template, `Unexpected undefined template for id ${templateId}`);\n dispatch(ac.orderTemplateApplied(templateId));\n dispatch(ac.orderTemplateChanged(orderId, templateId));\n dispatch(ac.orderPropertyChangedFromTemplate(orderId, template.fields));\n };\n\nexport const orderDeleteTemplate =\n (templateId: string): Thunk =>\n (dispatch, getState, { actionCreators: ac }) => {\n dispatch(ac.orderTemplateDeleted(templateId));\n dispatch(ac.saveOrderTemplatesRequestedEpic(getState().fxOrders.templates));\n };\n","import type { OrderValidationDetail } from 'api/order/oms';\nimport type { Thunk } from 'state';\nimport type { OrderValidationReceivedDetails } from '../fxOrdersActions';\n\nexport function orderValidationReceivedThunk(\n orderId: string,\n details: OrderValidationReceivedDetails,\n clockOffset?: number,\n): Thunk {\n return (dispatch, getState, { selectors: sl, actionCreators: ac }) => {\n const oldState = getState();\n const { orderTakeProfitMargin: allowOrderTakeProfitMargin } = sl.getFeatureToggles(oldState);\n\n dispatch(ac.orderValidationReceived(orderId, details, allowOrderTakeProfitMargin, clockOffset));\n\n const state = getState();\n\n //todo 5010 check if this logic needs to be repplicated in edition mode\n if (\n sl.getOrderType(state, orderId).value === 'Fixing' &&\n ((sl.getOrderFixingBenchmark(oldState, orderId).value == null &&\n sl.getOrderFixingBenchmark(state, orderId).value != null) ||\n (sl.getOrderFixingPriceType(oldState, orderId).value == null &&\n sl.getOrderFixingPriceType(state, orderId).value != null))\n ) {\n dispatch(ac.orderPropertyChanged(orderId, {}));\n }\n };\n}\n","export type Mifid2PanelActions =\n | ToggleMifid2Panel\n | Mifid2StartNewNegotiationEpic\n | Mifid2StartNewNegotiation\n | Mifid2StartNewNegotiationFailed\n | Mifid2RecordTimestampEpic\n | Mifid2RecordTimestampSent\n | Mifid2RecordTimestampReceived\n | Mifid2FinishNegotiation\n | Mifid2FinishNegotiationFailed\n | Mifid2RemoveNegotiation;\n\nexport interface ToggleMifid2Panel {\n type: 'TOGGLE_MIFID2_PANEL';\n open: boolean | undefined;\n}\nexport function toggleMifid2Panel(open?: boolean | undefined): ToggleMifid2Panel {\n return {\n type: 'TOGGLE_MIFID2_PANEL',\n open,\n };\n}\n\nexport interface Mifid2StartNewNegotiationEpic {\n type: 'MIFID2_START_NEW_NEGOTIATION_EPIC';\n}\nexport function mifid2StartNewNegotiationEpic(): Mifid2StartNewNegotiationEpic {\n return {\n type: 'MIFID2_START_NEW_NEGOTIATION_EPIC',\n };\n}\n\nexport interface Mifid2StartNewNegotiation {\n type: 'MIFID2_START_NEW_NEGOTIATION';\n negotiationId: string;\n timestamp: string;\n}\nexport function mifid2StartNewNegotiation(\n negotiationId: string,\n timestamp: string,\n): Mifid2StartNewNegotiation {\n return {\n type: 'MIFID2_START_NEW_NEGOTIATION',\n negotiationId,\n timestamp,\n };\n}\n\nexport interface Mifid2StartNewNegotiationFailed {\n type: 'MIFID2_START_NEW_NEGOTIATION_FAILED';\n}\nexport function mifid2StartNewNegotiationFailed(): Mifid2StartNewNegotiationFailed {\n return {\n type: 'MIFID2_START_NEW_NEGOTIATION_FAILED',\n };\n}\n\nexport interface Mifid2RecordTimestampEpic {\n type: 'MIFID2_RECORD_TIMESTAMP_EPIC';\n negotiationId: string;\n}\nexport function mifid2RecordTimestampEpic(negotiationId: string): Mifid2RecordTimestampEpic {\n return {\n type: 'MIFID2_RECORD_TIMESTAMP_EPIC',\n negotiationId,\n };\n}\n\nexport interface Mifid2RecordTimestampSent {\n type: 'MIFID2_RECORD_TIMESTAMP_SENT';\n negotiationId: string;\n quoteId: string;\n timestamp: string;\n}\nexport function mifid2RecordTimestampSent(\n negotiationId: string,\n quoteId: string,\n timestamp: string,\n): Mifid2RecordTimestampSent {\n return {\n type: 'MIFID2_RECORD_TIMESTAMP_SENT',\n negotiationId,\n quoteId,\n timestamp,\n };\n}\n\nexport interface Mifid2RecordTimestampReceived {\n type: 'MIFID2_RECORD_TIMESTAMP_RECEIVED';\n negotiationId: string;\n quoteId: string;\n success: boolean;\n}\nexport function mifid2RecordTimestampReceived(\n negotiationId: string,\n quoteId: string,\n success: boolean,\n): Mifid2RecordTimestampReceived {\n return {\n type: 'MIFID2_RECORD_TIMESTAMP_RECEIVED',\n negotiationId,\n quoteId,\n success,\n };\n}\n\nexport interface Mifid2FinishNegotiation {\n type: 'MIFID2_FINISH_NEGOTIATION';\n negotiationId: string;\n dealDone: boolean;\n}\nexport function mifid2FinishNegotiation(\n negotiationId: string,\n dealDone: boolean,\n): Mifid2FinishNegotiation {\n return {\n type: 'MIFID2_FINISH_NEGOTIATION',\n negotiationId,\n dealDone,\n };\n}\n\nexport interface Mifid2FinishNegotiationFailed {\n type: 'MIFID2_FINISH_NEGOTIATION_FAILED';\n negotiationId: string;\n}\nexport function mifid2FinishNegotiationFailed(\n negotiationId: string,\n): Mifid2FinishNegotiationFailed {\n return {\n type: 'MIFID2_FINISH_NEGOTIATION_FAILED',\n negotiationId,\n };\n}\n\nexport interface Mifid2RemoveNegotiation {\n type: 'MIFID2_REMOVE_NEGOTIATION';\n negotiationId: string;\n}\nexport function mifid2RemoveNegotiation(negotiationId: string): Mifid2RemoveNegotiation {\n return {\n type: 'MIFID2_REMOVE_NEGOTIATION',\n negotiationId,\n };\n}\n","import type {\n ExecutableInstrument,\n FormDomain,\n HedgedInstrument,\n LeggedInstrument,\n} from './referenceData/referenceDataModel';\nimport type { ReferenceDataAction } from './referenceData/referenceDataActions';\nimport type { ClientWorkspaceAction } from './clientWorkspace/clientWorkspaceActions';\nimport type { GlobalErrorAction } from './globalError/globalErrorActions';\nimport type { FxCashAction } from './fxCashs/fxCashsActions';\nimport type { FxOptionAction } from './fxOptions/actions';\nimport type { FxSwapAction } from './fxSwaps/fxSwapsActions';\nimport type { FxBulkAction } from './fxBulks/fxBulksActions';\nimport type { FxAccumulatorAction } from './fxAccumulators/actions';\nimport type { FxEspStreamAction } from './esp/espStreamsActions';\nimport type { StreamingConnectionAction } from './streamingConnection/streamingConnectionActions';\nimport type { GridLayoutActions } from './gridLayout/gridLayoutActions';\nimport type { SessionActions } from './session/sessionActions';\nimport type { UserPreferencesAction } from './userPreferences/userPreferencesActions';\nimport type { BlotterAction, BlotterOrderAction, BlotterPanelAction } from './blotter/action';\nimport type { TileAction } from './tile/tileActions';\nimport type { FreeLayoutAction } from './freeLayout/freeLayoutActions';\nimport type { OrderAction } from './fxOrders/fxOrdersActions';\nimport type { HedgeValueKeys, LegValueKeys, ValueKeys } from './share/productModel';\nimport type { Mifid2PanelActions } from './mifidPanel/mifidPanelActions';\nimport type { ToastsActions } from './toasts/toastsActions';\nimport type { ValidationStatus } from 'components/Form/Inputs/typings';\nimport type { BidAsk } from './share/productModel/litterals';\nimport type { SmartRfsAction } from './smartRfs/smartRfsActions';\n\n// ██████╗ ██████╗ ██████╗ ████████╗███████╗████████╗██████╗ █████╗ ██████╗\n// ██╔══██╗██╔═══██╗██╔═══██╗╚══██╔══╝██╔════╝╚══██╔══╝██╔══██╗██╔══██╗██╔══██╗\n// ██████╔╝██║ ██║██║ ██║ ██║ ███████╗ ██║ ██████╔╝███████║██████╔╝\n// ██╔══██╗██║ ██║██║ ██║ ██║ ╚════██║ ██║ ██╔══██╗██╔══██║██╔═══╝\n// ██████╔╝╚██████╔╝╚██████╔╝ ██║ ███████║ ██║ ██║ ██║██║ ██║██║\n// ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚══════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝\n\nexport interface AppBootstrappedAction {\n type: 'APP_BOOTSTRAPPED';\n}\n\nexport function appBootstrapped(): AppBootstrappedAction {\n return { type: 'APP_BOOTSTRAPPED' };\n}\n\n// ██╗ ██████╗ ██████╗\n// ██║ ██╔═══██╗██╔════╝\n// ██║ ██║ ██║██║ ███╗\n// ██║ ██║ ██║██║ ██║\n// ███████╗╚██████╔╝╚██████╔╝\n// ╚══════╝ ╚═════╝ ╚═════╝\n\nexport interface LogAction {\n type: 'LOG_ACTION';\n message: string;\n data?: T;\n}\n\nexport function logAction(message: string, data?: T): LogAction {\n return {\n type: 'LOG_ACTION',\n message,\n data,\n };\n}\n\n// ██╗███╗ ██╗███████╗████████╗██████╗ ██╗ ██╗███╗ ███╗███████╗███╗ ██╗████████╗ ███████╗██╗███████╗██╗ ██████╗\n// ██║████╗ ██║██╔════╝╚══██╔══╝██╔══██╗██║ ██║████╗ ████║██╔════╝████╗ ██║╚══██╔══╝ ██╔════╝██║██╔════╝██║ ██╔══██╗\n// ██║██╔██╗ ██║███████╗ ██║ ██████╔╝██║ ██║██╔████╔██║█████╗ ██╔██╗ ██║ ██║ █████╗ ██║█████╗ ██║ ██║ ██║\n// ██║██║╚██╗██║╚════██║ ██║ ██╔══██╗██║ ██║██║╚██╔╝██║██╔══╝ ██║╚██╗██║ ██║ ██╔══╝ ██║██╔══╝ ██║ ██║ ██║\n// ██║██║ ╚████║███████║ ██║ ██║ ██║╚██████╔╝██║ ╚═╝ ██║███████╗██║ ╚████║ ██║ ██║ ██║███████╗███████╗██████╔╝\n// ╚═╝╚═╝ ╚═══╝╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚═════╝\n\nexport interface FieldTooltipSeen {\n type: 'FIELD_TOOLTIP_SEEN';\n instrument: I;\n field: ValueKeys;\n quoteId: string;\n}\n\nexport function fieldTooltipSeen(\n instrument: I,\n field: ValueKeys,\n quoteId: string,\n): FieldTooltipSeen {\n return {\n type: 'FIELD_TOOLTIP_SEEN',\n instrument,\n field,\n quoteId,\n };\n}\n\nexport interface LocalFieldValidationClear {\n type: 'LOCAL_FIELD_VALIDATION_CLEAR';\n instrument: I;\n quoteId: string;\n field: ValueKeys;\n}\n\nexport function localFieldValidationClear(\n instrument: I,\n quoteId: string,\n field: ValueKeys,\n): LocalFieldValidationClear {\n return {\n type: 'LOCAL_FIELD_VALIDATION_CLEAR',\n instrument,\n quoteId,\n field,\n };\n}\n\nexport interface LocalFieldValidationSet {\n type: 'LOCAL_FIELD_VALIDATION_SET';\n instrument: I;\n quoteId: string;\n field: ValueKeys;\n validationStatus: ValidationStatus;\n messageId: string;\n}\n\nexport function localFieldValidationSet(\n instrument: I,\n quoteId: string,\n field: ValueKeys,\n validationStatus: ValidationStatus,\n messageId: string,\n): LocalFieldValidationSet {\n return {\n type: 'LOCAL_FIELD_VALIDATION_SET',\n instrument,\n quoteId,\n field,\n validationStatus,\n messageId,\n };\n}\n\n// ██╗ ███████╗ ██████╗ ███████╗██╗███████╗██╗ ██████╗\n// ██║ ██╔════╝██╔════╝ ██╔════╝██║██╔════╝██║ ██╔══██╗\n// ██║ █████╗ ██║ ███╗ █████╗ ██║█████╗ ██║ ██║ ██║\n// ██║ ██╔══╝ ██║ ██║ ██╔══╝ ██║██╔══╝ ██║ ██║ ██║\n// ███████╗███████╗╚██████╔╝ ██║ ██║███████╗███████╗██████╔╝\n// ╚══════╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚═════╝\n\nexport interface LegFieldTooltipSeen {\n type: 'LEG_FIELD_TOOLTIP_SEEN';\n instrument: I;\n field: LegValueKeys;\n quoteId: string;\n legId: string;\n}\n\nexport function legFieldTooltipSeen(\n instrument: I,\n field: LegValueKeys,\n quoteId: string,\n legId: string,\n): LegFieldTooltipSeen {\n return {\n type: 'LEG_FIELD_TOOLTIP_SEEN',\n instrument,\n field,\n quoteId,\n legId,\n };\n}\n\nexport interface LocalLegFieldValidationClear {\n type: 'LOCAL_LEG_FIELD_VALIDATION_CLEAR';\n instrument: I;\n quoteId: string;\n legId: string;\n field: LegValueKeys;\n}\n\nexport function localLegFieldValidationClear(\n instrument: I,\n quoteId: string,\n legId: string,\n field: LegValueKeys,\n): LocalLegFieldValidationClear {\n return {\n type: 'LOCAL_LEG_FIELD_VALIDATION_CLEAR',\n instrument,\n quoteId,\n legId,\n field,\n };\n}\n\nexport interface LocalLegFieldValidationSet {\n type: 'LOCAL_LEG_FIELD_VALIDATION_SET';\n instrument: I;\n quoteId: string;\n legId: string;\n field: LegValueKeys;\n validationStatus: ValidationStatus;\n messageId: string;\n}\n\nexport function localLegFieldValidationSet(\n instrument: I,\n quoteId: string,\n legId: string,\n field: LegValueKeys,\n validationStatus: ValidationStatus,\n messageId: string,\n): LocalLegFieldValidationSet {\n return {\n type: 'LOCAL_LEG_FIELD_VALIDATION_SET',\n instrument,\n quoteId,\n legId,\n field,\n validationStatus,\n messageId,\n };\n}\n\n// ██╗ ██╗███████╗██████╗ ██████╗ ███████╗ ███████╗██╗███████╗██╗ ██████╗\n// ██║ ██║██╔════╝██╔══██╗██╔════╝ ██╔════╝ ██╔════╝██║██╔════╝██║ ██╔══██╗\n// ███████║█████╗ ██║ ██║██║ ███╗█████╗ █████╗ ██║█████╗ ██║ ██║ ██║\n// ██╔══██║██╔══╝ ██║ ██║██║ ██║██╔══╝ ██╔══╝ ██║██╔══╝ ██║ ██║ ██║\n// ██║ ██║███████╗██████╔╝╚██████╔╝███████╗ ██║ ██║███████╗███████╗██████╔╝\n// ╚═╝ ╚═╝╚══════╝╚═════╝ ╚═════╝ ╚══════╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚═════╝\n\nexport interface HedgeFieldTooltipSeen {\n type: 'HEDGE_FIELD_TOOLTIP_SEEN';\n instrument: I;\n field: HedgeValueKeys;\n quoteId: string;\n hedgeId: string;\n}\n\nexport function hedgeFieldTooltipSeen(\n instrument: I,\n field: HedgeValueKeys,\n quoteId: string,\n hedgeId: string,\n): HedgeFieldTooltipSeen {\n return {\n type: 'HEDGE_FIELD_TOOLTIP_SEEN',\n instrument,\n field,\n quoteId,\n hedgeId,\n };\n}\n\nexport interface HedgeReset {\n type: 'HEDGE_RESET';\n quoteId: string;\n}\nexport function hedgeReset(quoteId: string): HedgeReset {\n return {\n type: 'HEDGE_RESET',\n quoteId,\n };\n}\n\nexport interface LocalHedgeFieldValidationClear {\n type: 'LOCAL_HEDGE_FIELD_VALIDATION_CLEAR';\n instrument: I;\n quoteId: string;\n hedgeId: string;\n field: HedgeValueKeys;\n}\n\nexport function localHedgeFieldValidationClear(\n instrument: I,\n quoteId: string,\n hedgeId: string,\n field: HedgeValueKeys,\n): LocalHedgeFieldValidationClear {\n return {\n type: 'LOCAL_HEDGE_FIELD_VALIDATION_CLEAR',\n instrument,\n quoteId,\n hedgeId,\n field,\n };\n}\n\nexport interface LocalHedgeFieldValidationSet {\n type: 'LOCAL_HEDGE_FIELD_VALIDATION_SET';\n instrument: I;\n quoteId: string;\n hedgeId: string;\n field: HedgeValueKeys;\n validationStatus: ValidationStatus;\n messageId: string;\n}\n\nexport function localHedgeFieldValidationSet(\n instrument: I,\n quoteId: string,\n hedgeId: string,\n field: HedgeValueKeys,\n validationStatus: ValidationStatus,\n messageId: string,\n): LocalHedgeFieldValidationSet {\n return {\n type: 'LOCAL_HEDGE_FIELD_VALIDATION_SET',\n instrument,\n quoteId,\n hedgeId,\n field,\n validationStatus,\n messageId,\n };\n}\n\n// ██████╗ █████╗ ████████╗███████╗\n// ██╔══██╗██╔══██╗╚══██╔══╝██╔════╝\n// ██║ ██║███████║ ██║ █████╗\n// ██║ ██║██╔══██║ ██║ ██╔══╝\n// ██████╔╝██║ ██║ ██║ ███████╗\n// ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝\n\nexport interface MaxDateSet {\n type: 'MAX_DATE_SET';\n currencyPair: string;\n maxTenor: string;\n maxDate: Date;\n}\n\nexport function maxDateSet(currencyPair: string, maxTenor: string, maxDate: Date): MaxDateSet {\n return {\n type: 'MAX_DATE_SET',\n currencyPair,\n maxTenor,\n maxDate,\n };\n}\n\n// ██████╗ ██████╗ ██╗ ██████╗███████╗\n// ██╔══██╗██╔══██╗██║██╔════╝██╔════╝\n// ██████╔╝██████╔╝██║██║ █████╗\n// ██╔═══╝ ██╔══██╗██║██║ ██╔══╝\n// ██║ ██║ ██║██║╚██████╗███████╗\n// ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═════╝╚══════╝\n\nexport type RecordPriceSucceeded = ReturnType;\n\nexport function recordPriceSucceeded(\n instrument: ExecutableInstrument,\n tileId: string,\n prices: ReadonlyArray>,\n timestamp: Date,\n) {\n return {\n type: 'RECORD_PRICE_SUCCEEDED',\n instrument,\n tileId,\n prices,\n timestamp,\n error: false,\n } as const;\n}\n\nexport type RecordPriceFailed = ReturnType;\n\nexport function recordPriceFailed(instrument: ExecutableInstrument, tileId: string, timestamp: Date) {\n return {\n type: 'RECORD_PRICE_FAILED',\n instrument,\n tileId,\n timestamp,\n error: true,\n } as const;\n}\n\nexport interface RecordPriceEpic {\n type: 'RECORD_PRICE_EPIC';\n tileId: string;\n}\n\nexport function recordPriceEpic(tileId: string): RecordPriceEpic {\n return {\n type: 'RECORD_PRICE_EPIC',\n tileId,\n };\n}\n\n// █████╗ ██╗ ██╗ █████╗ ██████╗████████╗██╗ ██████╗ ███╗ ██╗███████╗\n// ██╔══██╗██║ ██║ ██╔══██╗██╔════╝╚══██╔══╝██║██╔═══██╗████╗ ██║██╔════╝\n// ███████║██║ ██║ ███████║██║ ██║ ██║██║ ██║██╔██╗ ██║███████╗\n// ██╔══██║██║ ██║ ██╔══██║██║ ██║ ██║██║ ██║██║╚██╗██║╚════██║\n// ██║ ██║███████╗███████╗ ██║ ██║╚██████╗ ██║ ██║╚██████╔╝██║ ╚████║███████║\n// ╚═╝ ╚═╝╚══════╝╚══════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝\nexport type Action =\n | AppBootstrappedAction\n | ClientWorkspaceAction\n | ReferenceDataAction\n | GlobalErrorAction\n | FxOptionAction\n | FxCashAction\n | FxSwapAction\n | FxBulkAction\n | FxAccumulatorAction\n | FxEspStreamAction\n | TileAction\n | StreamingConnectionAction\n | GridLayoutActions\n | LogAction\n | FieldTooltipSeen\n | LocalFieldValidationSet\n | LocalFieldValidationClear\n | LegFieldTooltipSeen\n | LocalLegFieldValidationSet\n | LocalLegFieldValidationClear\n | HedgeFieldTooltipSeen\n | HedgeReset\n | LocalHedgeFieldValidationClear\n | LocalHedgeFieldValidationSet\n | MaxDateSet\n | SessionActions\n | UserPreferencesAction\n | BlotterAction\n | BlotterOrderAction\n | BlotterPanelAction\n | FreeLayoutAction\n | OrderAction\n | Mifid2PanelActions\n | ToastsActions\n | RecordPriceEpic\n | RecordPriceFailed\n | RecordPriceSucceeded\n | SmartRfsAction;\n","import { v4 } from 'uuid';\nimport type { Toast } from './toastsModel';\n\nexport const autoHideToastDelay = 5_000;\n\nexport type ToastsActions = AddToastAction | RemoveToastAction;\n\nexport interface AddToastAction {\n type: 'ADD_TOAST';\n toast: Toast;\n id: string;\n}\n\nexport const addToastAction = (toast: Toast, id: string = v4()): AddToastAction => ({\n type: 'ADD_TOAST',\n toast,\n id,\n});\n\nexport interface RemoveToastAction {\n type: 'REMOVE_TOAST';\n id: string;\n}\n\nexport const removeToastAction = (id: string): RemoveToastAction => ({\n type: 'REMOVE_TOAST',\n id,\n});\n","export type SmartRfsAction = CreateSmartRfsRequestedEpic | CreateSmartRfsDone;\n\nexport interface CreateSmartRfsRequestedEpic {\n type: 'CREATE_SMART_RFS_REQUESTED_EPIC';\n productStringRepresentation: string;\n sessionId: string;\n}\n\nexport function createSmartRfsRequestedEpic(\n productStringRepresentation: string,\n sessionId: string,\n): CreateSmartRfsRequestedEpic {\n return { type: 'CREATE_SMART_RFS_REQUESTED_EPIC', productStringRepresentation, sessionId };\n}\n\nexport interface CreateSmartRfsDone {\n type: 'CREATE_SMART_RFS_DONE';\n success: boolean;\n}\n\nexport function createSmartRfsDone(success: boolean): CreateSmartRfsDone {\n return { type: 'CREATE_SMART_RFS_DONE', success };\n}\n","import * as optionActions from './fxOptions/actions';\nimport * as optionThunks from './fxOptions/fxOptionsThunks';\nimport * as cashActions from './fxCashs/fxCashsActions';\nimport * as cashThunks from './fxCashs/fxCashsThunks';\nimport * as swapActions from './fxSwaps/fxSwapsActions';\nimport * as swapThunks from './fxSwaps/thunks';\nimport * as bulkActions from './fxBulks/fxBulksActions';\nimport * as bulkThunks from './fxBulks/fxBulksThunks';\nimport * as accumulatorActions from './fxAccumulators/actions';\nimport * as accumulatorThunks from './fxAccumulators/thunks';\nimport * as espActions from './esp/espStreamsActions';\nimport * as espThunks from './esp/espStreamsThunks';\nimport * as tileActions from './tile/tileActions';\nimport * as tileThunks from './tile/tileThunks';\nimport * as referenceDataActions from './referenceData/referenceDataActions';\nimport * as referenceDataThunks from './referenceData/referenceDataThunks';\nimport * as streamingConnectionActions from './streamingConnection/streamingConnectionActions';\nimport * as initStreamThunks from './streamingConnection/initStreamThunk';\nimport * as clientWorkspaceActions from './clientWorkspace/clientWorkspaceActions';\nimport * as clientWorkspaceThunks from './clientWorkspace/clientWorkspaceThunks';\nimport * as gridLayoutActions from './gridLayout/gridLayoutActions';\nimport * as gridLayoutThunks from './gridLayout/gridLayoutThunks';\nimport * as sessionActions from './session/sessionActions';\nimport * as userPreferencesActions from './userPreferences/userPreferencesActions';\nimport * as userPreferencesThunks from './userPreferences/thunks';\nimport * as blotterActions from './blotter/action/blotterActions';\nimport * as blotterDetailsPanelActions from './blotter/action/blotterDetailsPanelActions';\nimport * as blotterOrderActions from './blotter/action/blotterOrderActions';\nimport * as blotterClickActionThunks from './blotter/thunks/blotterActionsThunks';\nimport * as blotterModeThunks from './blotter/thunks/blotterModeThunks';\nimport * as blotterPanelThunks from './blotter/thunks/blotterPanelThunks';\nimport * as blotterTileThunks from './blotter/thunks/blotterTileThunks';\nimport * as freeLayoutActions from './freeLayout/freeLayoutActions';\nimport * as orderActions from './fxOrders/fxOrdersActions';\nimport * as orderThunks from './fxOrders/thunks';\nimport * as mifid2PanelActions from './mifidPanel/mifidPanelActions';\nimport * as globalErrorActions from './globalError/globalErrorActions';\nimport * as globalActions from './globalActions';\nimport * as toastsActions from './toasts/toastsActions';\nimport * as smartRfsActions from './smartRfs/smartRfsActions';\n\nexport const actionCreators = {\n ...optionActions,\n ...optionThunks,\n ...cashActions,\n ...cashThunks,\n ...swapActions,\n ...swapThunks,\n ...bulkActions,\n ...bulkThunks,\n ...accumulatorActions,\n ...accumulatorThunks,\n ...espActions,\n ...espThunks,\n ...tileActions,\n ...tileThunks,\n ...referenceDataActions,\n ...referenceDataThunks,\n ...streamingConnectionActions,\n ...initStreamThunks,\n ...clientWorkspaceActions,\n ...clientWorkspaceThunks,\n ...gridLayoutActions,\n ...gridLayoutThunks,\n ...sessionActions,\n ...userPreferencesActions,\n ...userPreferencesThunks,\n ...blotterActions,\n ...blotterDetailsPanelActions,\n ...blotterOrderActions,\n ...blotterClickActionThunks,\n ...blotterModeThunks,\n ...blotterPanelThunks,\n ...blotterTileThunks,\n ...freeLayoutActions,\n ...orderActions,\n ...orderThunks,\n ...mifid2PanelActions,\n ...globalErrorActions,\n ...globalActions,\n ...toastsActions,\n ...smartRfsActions,\n};\n\nexport type ActionCreators = typeof actionCreators;\nexport type { Action } from './globalActions';\n","/** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nvar QueueAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(QueueAction, _super);\n function QueueAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n QueueAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (delay > 0) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n };\n QueueAction.prototype.execute = function (state, delay) {\n return (delay > 0 || this.closed) ?\n _super.prototype.execute.call(this, state, delay) :\n this._execute(state, delay);\n };\n QueueAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n return scheduler.flush(this);\n };\n return QueueAction;\n}(AsyncAction));\nexport { QueueAction };\n//# sourceMappingURL=QueueAction.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar QueueScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(QueueScheduler, _super);\n function QueueScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return QueueScheduler;\n}(AsyncScheduler));\nexport { QueueScheduler };\n//# sourceMappingURL=QueueScheduler.js.map\n","/** PURE_IMPORTS_START _QueueAction,_QueueScheduler PURE_IMPORTS_END */\nimport { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\nexport var queueScheduler = /*@__PURE__*/ new QueueScheduler(QueueAction);\nexport var queue = queueScheduler;\n//# sourceMappingURL=queue.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nexport function observeOn(scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return function observeOnOperatorFunction(source) {\n return source.lift(new ObserveOnOperator(scheduler, delay));\n };\n}\nvar ObserveOnOperator = /*@__PURE__*/ (function () {\n function ObserveOnOperator(scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n this.scheduler = scheduler;\n this.delay = delay;\n }\n ObserveOnOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n };\n return ObserveOnOperator;\n}());\nexport { ObserveOnOperator };\nvar ObserveOnSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ObserveOnSubscriber, _super);\n function ObserveOnSubscriber(destination, scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n var _this = _super.call(this, destination) || this;\n _this.scheduler = scheduler;\n _this.delay = delay;\n return _this;\n }\n ObserveOnSubscriber.dispatch = function (arg) {\n var notification = arg.notification, destination = arg.destination;\n notification.observe(destination);\n this.unsubscribe();\n };\n ObserveOnSubscriber.prototype.scheduleMessage = function (notification) {\n var destination = this.destination;\n destination.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination)));\n };\n ObserveOnSubscriber.prototype._next = function (value) {\n this.scheduleMessage(Notification.createNext(value));\n };\n ObserveOnSubscriber.prototype._error = function (err) {\n this.scheduleMessage(Notification.createError(err));\n this.unsubscribe();\n };\n ObserveOnSubscriber.prototype._complete = function () {\n this.scheduleMessage(Notification.createComplete());\n this.unsubscribe();\n };\n return ObserveOnSubscriber;\n}(Subscriber));\nexport { ObserveOnSubscriber };\nvar ObserveOnMessage = /*@__PURE__*/ (function () {\n function ObserveOnMessage(notification, destination) {\n this.notification = notification;\n this.destination = destination;\n }\n return ObserveOnMessage;\n}());\nexport { ObserveOnMessage };\n//# sourceMappingURL=observeOn.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar nextHandle = 1;\nvar RESOLVED = /*@__PURE__*/ (function () { return /*@__PURE__*/ Promise.resolve(); })();\nvar activeHandles = {};\nfunction findAndClearHandle(handle) {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\nexport var Immediate = {\n setImmediate: function (cb) {\n var handle = nextHandle++;\n activeHandles[handle] = true;\n RESOLVED.then(function () { return findAndClearHandle(handle) && cb(); });\n return handle;\n },\n clearImmediate: function (handle) {\n findAndClearHandle(handle);\n },\n};\nexport var TestTools = {\n pending: function () {\n return Object.keys(activeHandles).length;\n }\n};\n//# sourceMappingURL=Immediate.js.map\n","/** PURE_IMPORTS_START tslib,_util_Immediate,_AsyncAction PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Immediate } from '../util/Immediate';\nimport { AsyncAction } from './AsyncAction';\nvar AsapAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsapAction, _super);\n function AsapAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler.scheduled || (scheduler.scheduled = Immediate.setImmediate(scheduler.flush.bind(scheduler, null)));\n };\n AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n if (scheduler.actions.length === 0) {\n Immediate.clearImmediate(id);\n scheduler.scheduled = undefined;\n }\n return undefined;\n };\n return AsapAction;\n}(AsyncAction));\nexport { AsapAction };\n//# sourceMappingURL=AsapAction.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar AsapScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsapScheduler, _super);\n function AsapScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AsapScheduler.prototype.flush = function (action) {\n this.active = true;\n this.scheduled = undefined;\n var actions = this.actions;\n var error;\n var index = -1;\n var count = actions.length;\n action = action || actions.shift();\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n this.active = false;\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsapScheduler;\n}(AsyncScheduler));\nexport { AsapScheduler };\n//# sourceMappingURL=AsapScheduler.js.map\n","/** PURE_IMPORTS_START _AsapAction,_AsapScheduler PURE_IMPORTS_END */\nimport { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\nexport var asapScheduler = /*@__PURE__*/ new AsapScheduler(AsapAction);\nexport var asap = asapScheduler;\n//# sourceMappingURL=asap.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function noop() { }\n//# sourceMappingURL=noop.js.map\n","/** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { map } from '../operators/map';\nvar toString = /*@__PURE__*/ (function () { return Object.prototype.toString; })();\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(map(function (args) { return isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n }\n return new Observable(function (subscriber) {\n function handler(e) {\n if (arguments.length > 1) {\n subscriber.next(Array.prototype.slice.call(arguments));\n }\n else {\n subscriber.next(e);\n }\n }\n setupSubscription(target, eventName, handler, subscriber, options);\n });\n}\nfunction setupSubscription(sourceObj, eventName, handler, subscriber, options) {\n var unsubscribe;\n if (isEventTarget(sourceObj)) {\n var source_1 = sourceObj;\n sourceObj.addEventListener(eventName, handler, options);\n unsubscribe = function () { return source_1.removeEventListener(eventName, handler, options); };\n }\n else if (isJQueryStyleEventEmitter(sourceObj)) {\n var source_2 = sourceObj;\n sourceObj.on(eventName, handler);\n unsubscribe = function () { return source_2.off(eventName, handler); };\n }\n else if (isNodeStyleEventEmitter(sourceObj)) {\n var source_3 = sourceObj;\n sourceObj.addListener(eventName, handler);\n unsubscribe = function () { return source_3.removeListener(eventName, handler); };\n }\n else if (sourceObj && sourceObj.length) {\n for (var i = 0, len = sourceObj.length; i < len; i++) {\n setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n }\n }\n else {\n throw new TypeError('Invalid event target');\n }\n subscriber.add(unsubscribe);\n}\nfunction isNodeStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\nfunction isJQueryStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\nfunction isEventTarget(sourceObj) {\n return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n//# sourceMappingURL=fromEvent.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function ignoreElements() {\n return function ignoreElementsOperatorFunction(source) {\n return source.lift(new IgnoreElementsOperator());\n };\n}\nvar IgnoreElementsOperator = /*@__PURE__*/ (function () {\n function IgnoreElementsOperator() {\n }\n IgnoreElementsOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new IgnoreElementsSubscriber(subscriber));\n };\n return IgnoreElementsOperator;\n}());\nvar IgnoreElementsSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(IgnoreElementsSubscriber, _super);\n function IgnoreElementsSubscriber() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n IgnoreElementsSubscriber.prototype._next = function (unused) {\n };\n return IgnoreElementsSubscriber;\n}(Subscriber));\n//# sourceMappingURL=ignoreElements.js.map\n","/** PURE_IMPORTS_START _Subject,_multicast PURE_IMPORTS_END */\nimport { Subject } from '../Subject';\nimport { multicast } from './multicast';\nexport function publish(selector) {\n return selector ?\n multicast(function () { return new Subject(); }, selector) :\n multicast(new Subject());\n}\n//# sourceMappingURL=publish.js.map\n","/** PURE_IMPORTS_START tslib,_Observable,_scheduler_asap,_util_isNumeric PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Observable } from '../Observable';\nimport { asap } from '../scheduler/asap';\nimport { isNumeric } from '../util/isNumeric';\nvar SubscribeOnObservable = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SubscribeOnObservable, _super);\n function SubscribeOnObservable(source, delayTime, scheduler) {\n if (delayTime === void 0) {\n delayTime = 0;\n }\n if (scheduler === void 0) {\n scheduler = asap;\n }\n var _this = _super.call(this) || this;\n _this.source = source;\n _this.delayTime = delayTime;\n _this.scheduler = scheduler;\n if (!isNumeric(delayTime) || delayTime < 0) {\n _this.delayTime = 0;\n }\n if (!scheduler || typeof scheduler.schedule !== 'function') {\n _this.scheduler = asap;\n }\n return _this;\n }\n SubscribeOnObservable.create = function (source, delay, scheduler) {\n if (delay === void 0) {\n delay = 0;\n }\n if (scheduler === void 0) {\n scheduler = asap;\n }\n return new SubscribeOnObservable(source, delay, scheduler);\n };\n SubscribeOnObservable.dispatch = function (arg) {\n var source = arg.source, subscriber = arg.subscriber;\n return this.add(source.subscribe(subscriber));\n };\n SubscribeOnObservable.prototype._subscribe = function (subscriber) {\n var delay = this.delayTime;\n var source = this.source;\n var scheduler = this.scheduler;\n return scheduler.schedule(SubscribeOnObservable.dispatch, delay, {\n source: source, subscriber: subscriber\n });\n };\n return SubscribeOnObservable;\n}(Observable));\nexport { SubscribeOnObservable };\n//# sourceMappingURL=SubscribeOnObservable.js.map\n","/** PURE_IMPORTS_START _observable_SubscribeOnObservable PURE_IMPORTS_END */\nimport { SubscribeOnObservable } from '../observable/SubscribeOnObservable';\nexport function subscribeOn(scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return function subscribeOnOperatorFunction(source) {\n return source.lift(new SubscribeOnOperator(scheduler, delay));\n };\n}\nvar SubscribeOnOperator = /*@__PURE__*/ (function () {\n function SubscribeOnOperator(scheduler, delay) {\n this.scheduler = scheduler;\n this.delay = delay;\n }\n SubscribeOnOperator.prototype.call = function (subscriber, source) {\n return new SubscribeOnObservable(source, this.delay, this.scheduler).subscribe(subscriber);\n };\n return SubscribeOnOperator;\n}());\n//# sourceMappingURL=subscribeOn.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_util_noop,_util_isFunction PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { noop } from '../util/noop';\nimport { isFunction } from '../util/isFunction';\nexport function tap(nextOrObserver, error, complete) {\n return function tapOperatorFunction(source) {\n return source.lift(new DoOperator(nextOrObserver, error, complete));\n };\n}\nvar DoOperator = /*@__PURE__*/ (function () {\n function DoOperator(nextOrObserver, error, complete) {\n this.nextOrObserver = nextOrObserver;\n this.error = error;\n this.complete = complete;\n }\n DoOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TapSubscriber(subscriber, this.nextOrObserver, this.error, this.complete));\n };\n return DoOperator;\n}());\nvar TapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TapSubscriber, _super);\n function TapSubscriber(destination, observerOrNext, error, complete) {\n var _this = _super.call(this, destination) || this;\n _this._tapNext = noop;\n _this._tapError = noop;\n _this._tapComplete = noop;\n _this._tapError = error || noop;\n _this._tapComplete = complete || noop;\n if (isFunction(observerOrNext)) {\n _this._context = _this;\n _this._tapNext = observerOrNext;\n }\n else if (observerOrNext) {\n _this._context = observerOrNext;\n _this._tapNext = observerOrNext.next || noop;\n _this._tapError = observerOrNext.error || noop;\n _this._tapComplete = observerOrNext.complete || noop;\n }\n return _this;\n }\n TapSubscriber.prototype._next = function (value) {\n try {\n this._tapNext.call(this._context, value);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(value);\n };\n TapSubscriber.prototype._error = function (err) {\n try {\n this._tapError.call(this._context, err);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.error(err);\n };\n TapSubscriber.prototype._complete = function () {\n try {\n this._tapComplete.call(this._context);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n return this.destination.complete();\n };\n return TapSubscriber;\n}(Subscriber));\n//# sourceMappingURL=tap.js.map\n","import { filter } from 'rxjs/operators';\n\nvar keyHasType = function keyHasType(type, key) {\n return type === key || typeof key === 'function' && type === key.toString();\n};\n\nexport var ofType = function ofType() {\n for (var _len = arguments.length, keys = Array(_len), _key = 0; _key < _len; _key++) {\n keys[_key] = arguments[_key];\n }\n\n return function (source) {\n return source.pipe(filter(function (_ref) {\n var type = _ref.type;\n\n var len = keys.length;\n if (len === 1) {\n return keyHasType(type, keys[0]);\n } else {\n for (var i = 0; i < len; i++) {\n if (keyHasType(type, keys[i])) {\n return true;\n }\n }\n }\n return false;\n }));\n };\n};","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport { Observable, of as _of, from as _from } from 'rxjs';\nimport { ofType as _ofType } from './operators';\n\nexport var ActionsObservable = function (_Observable) {\n _inherits(ActionsObservable, _Observable);\n\n _createClass(ActionsObservable, null, [{\n key: 'of',\n value: function of() {\n return new this(_of.apply(undefined, arguments));\n }\n }, {\n key: 'from',\n value: function from(actions, scheduler) {\n return new this(_from(actions, scheduler));\n }\n }]);\n\n function ActionsObservable(actionsSubject) {\n _classCallCheck(this, ActionsObservable);\n\n var _this = _possibleConstructorReturn(this, (ActionsObservable.__proto__ || Object.getPrototypeOf(ActionsObservable)).call(this));\n\n _this.source = actionsSubject;\n return _this;\n }\n\n _createClass(ActionsObservable, [{\n key: 'lift',\n value: function lift(operator) {\n var observable = new ActionsObservable(this);\n observable.operator = operator;\n return observable;\n }\n }, {\n key: 'ofType',\n value: function ofType() {\n return _ofType.apply(undefined, arguments)(this);\n }\n }]);\n\n return ActionsObservable;\n}(Observable);","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport { Observable, Subject } from 'rxjs';\n\nexport var StateObservable = function (_Observable) {\n _inherits(StateObservable, _Observable);\n\n function StateObservable(stateSubject, initialState) {\n _classCallCheck(this, StateObservable);\n\n var _this = _possibleConstructorReturn(this, (StateObservable.__proto__ || Object.getPrototypeOf(StateObservable)).call(this, function (subscriber) {\n var subscription = _this.__notifier.subscribe(subscriber);\n if (subscription && !subscription.closed) {\n subscriber.next(_this.value);\n }\n return subscription;\n }));\n\n _this.value = initialState;\n _this.__notifier = new Subject();\n _this.__subscription = stateSubject.subscribe(function (value) {\n // We only want to update state$ if it has actually changed since\n // redux requires reducers use immutability patterns.\n // This is basically what distinctUntilChanged() does but it's so simple\n // we don't need to pull that code in\n if (value !== _this.value) {\n _this.value = value;\n _this.__notifier.next(value);\n }\n });\n return _this;\n }\n\n return StateObservable;\n}(Observable);","import { Subject, from, queueScheduler } from 'rxjs';\nimport { map, mergeMap, observeOn, subscribeOn } from 'rxjs/operators';\nimport { ActionsObservable } from './ActionsObservable';\nimport { StateObservable } from './StateObservable';\nimport { warn } from './utils/console';\n\nexport function createEpicMiddleware() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n // This isn't great. RxJS doesn't publicly export the constructor for\n // QueueScheduler nor QueueAction, so we reach in. We need to do this because\n // we don't want our internal queuing mechanism to be on the same queue as any\n // other RxJS code outside of redux-observable internals.\n var QueueScheduler = queueScheduler.constructor;\n var uniqueQueueScheduler = new QueueScheduler(queueScheduler.SchedulerAction);\n\n if (process.env.NODE_ENV !== 'production' && typeof options === 'function') {\n throw new TypeError('Providing your root Epic to `createEpicMiddleware(rootEpic)` is no longer supported, instead use `epicMiddleware.run(rootEpic)`\\n\\nLearn more: https://redux-observable.js.org/MIGRATION.html#setting-up-the-middleware');\n }\n\n var epic$ = new Subject();\n var store = void 0;\n\n var epicMiddleware = function epicMiddleware(_store) {\n if (process.env.NODE_ENV !== 'production' && store) {\n // https://github.com/redux-observable/redux-observable/issues/389\n warn('this middleware is already associated with a store. createEpicMiddleware should be called for every store.\\n\\nLearn more: https://goo.gl/2GQ7Da');\n }\n store = _store;\n var actionSubject$ = new Subject().pipe(observeOn(uniqueQueueScheduler));\n var stateSubject$ = new Subject().pipe(observeOn(uniqueQueueScheduler));\n var action$ = new ActionsObservable(actionSubject$);\n var state$ = new StateObservable(stateSubject$, store.getState());\n\n var result$ = epic$.pipe(map(function (epic) {\n var output$ = 'dependencies' in options ? epic(action$, state$, options.dependencies) : epic(action$, state$);\n\n if (!output$) {\n throw new TypeError('Your root Epic \"' + (epic.name || '') + '\" does not return a stream. Double check you\\'re not missing a return statement!');\n }\n\n return output$;\n }), mergeMap(function (output$) {\n return from(output$).pipe(subscribeOn(uniqueQueueScheduler), observeOn(uniqueQueueScheduler));\n }));\n\n result$.subscribe(store.dispatch);\n\n return function (next) {\n return function (action) {\n // Downstream middleware gets the action first,\n // which includes their reducers, so state is\n // updated before epics receive the action\n var result = next(action);\n\n // It's important to update the state$ before we emit\n // the action because otherwise it would be stale\n stateSubject$.next(store.getState());\n actionSubject$.next(action);\n\n return result;\n };\n };\n };\n\n epicMiddleware.run = function (rootEpic) {\n if (process.env.NODE_ENV !== 'production' && !store) {\n warn('epicMiddleware.run(rootEpic) called before the middleware has been setup by redux. Provide the epicMiddleware instance to createStore() first.');\n }\n epic$.next(rootEpic);\n };\n\n return epicMiddleware;\n}","const encoding = Array.from('0123456789abcdefghijklmnopqrstuvwxyz');\nconst encodingLength = BigInt(encoding.length);\n\nexport function uuidToBase36(uuid: string) {\n const cleanUuid = uuid.replace(/-/g, '');\n\n let iUuid = BigInt(`0x${cleanUuid}`);\n let str = '';\n\n do {\n str = encoding[Number(iUuid % encodingLength)] + str;\n iUuid /= encodingLength;\n } while (iUuid > 0n);\n\n return str;\n}\n","import { uuidToBase36 } from 'utils/base36';\nimport { v4 } from 'uuid';\n\nexport function getNewRfsId() {\n const uuid = v4();\n return `SGM_${uuidToBase36(uuid)}`;\n}\n","import type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport type {\n TradeCaptureBulkRequestWrapper,\n TradeCaptureBulk,\n BulkTradeCaptureRequestLegProperties,\n} from 'api/tradeCapture/bulk/tradeCaptureModel';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type { IFxBulkInputs, FxBulkLegInputs, BulkLineProduct } from 'state/fxBulks/fxBulksModel';\nimport type { Legs } from 'api/tradeCapture/tradeCaptureModel';\nimport type { DateInputCultureInfo } from 'state/userPreferences';\nimport { parseWithCultureInfo } from 'utils/parseDateWithCultureInfo';\nimport { clearUndefined } from 'utils/clearUndefined';\nimport { isDefinedAndNonEmpty, isEmpty } from '@sgme/fp';\n\ninterface WithBulkId {\n bulkId: string;\n}\n\nexport type BulkStoreModelChanges = Partial & Legs;\nexport type TradeCaptureToBackendMetaSelectorsKeys =\n | 'getBulkTradeCaptureIdVersion'\n | 'getUserPreferenceData'\n | 'getBulkLastLegIdRequested'\n | 'getBulkExcludedLegs';\n\nexport type TradeCaptureToBackendMetaSelectorSelectors = Pick<\n Selectors,\n TradeCaptureToBackendMetaSelectorsKeys\n>;\n\nexport type TradeCaptureToBackendMetadata = {\n patch: BulkStoreModelChanges;\n} & WithBulkId;\n\nexport const metaSelectorTradeCaptureToBackendWith: MapStateToMetadataHOF<\n TradeCaptureBulkRequestWrapper,\n TradeCaptureToBackendMetadata,\n AppState,\n TradeCaptureToBackendMetaSelectorSelectors\n> =\n sl =>\n (state, { bulkId, patch }) => {\n const idVersion = getNextIdVersion(sl.getBulkTradeCaptureIdVersion(state, bulkId));\n const changedBulkFields = metaSelectorBulkToTradeCapturePatchWith(sl)(state, patch);\n\n const legIdToAdd = sl.getBulkLastLegIdRequested(state, bulkId);\n const defaultLeg = {\n [legIdToAdd]: {\n productName: 'FxSpot' as BulkLineProduct,\n },\n };\n\n const excludedLegs = sl.getBulkExcludedLegs(state, bulkId);\n\n const legs =\n patch.legs === undefined || isEmpty(Object.keys(patch.legs))\n ? defaultLeg\n : Object.entries(patch.legs).reduce(\n (acc, [legId, leg]) => {\n if (!excludedLegs.includes(legId)) {\n acc[legId] = metaSelectorBulkLegToTradeCapturePatchWith(sl)(state, leg || {});\n }\n return acc;\n },\n {} as {\n [legId: string]: Partial;\n },\n );\n return {\n idVersion,\n changedFields: {\n ...changedBulkFields,\n legs,\n },\n };\n };\n\n// ---------------------------------------------------------------------------------\n// Private metaSelector\n// ---------------------------------------------------------------------------------\nfunction getNextIdVersion(lastIdVersion: number | null): number {\n return lastIdVersion == null ? 0 : lastIdVersion + 1;\n}\n\nconst metaSelectorBulkToTradeCapturePatchWith: MapStateToMetadataHOF<\n Partial,\n Partial,\n AppState,\n TradeCaptureToBackendMetaSelectorSelectors\n> = _sl => (_state, patch) =>\n clearUndefined({\n currencyPair: patch.currencyPair,\n negotiatedCurrency: patch.amountCurrency,\n });\n\nconst metaSelectorBulkLegToTradeCapturePatchWith: MapStateToMetadataHOF<\n Partial,\n Partial,\n AppState,\n TradeCaptureToBackendMetaSelectorSelectors\n> = sl => (state, patch) => {\n const { dateInputCultureInfo: cultureInfo } = sl.getUserPreferenceData(state);\n\n const isLegSwap = patch.product === 'FxSwap' || patch.product === 'FxNdSwap';\n\n const paymentDateString = dateToPatch(patch.paymentDate, patch.paymentDateTenor, cultureInfo);\n\n const farPaymentDateString = dateToPatch(\n patch.farPaymentDate,\n patch.farPaymentDateTenor,\n cultureInfo,\n );\n\n const { amountCurrency } = patch;\n\n const amount1String = amountCurrency === 1 ? patch.amount : undefined;\n const amount2String = amountCurrency === 2 ? patch.amount : undefined;\n\n const farAmount1String = amountCurrency === 1 ? patch.farAmount : undefined;\n const farAmount2String = amountCurrency === 2 ? patch.farAmount : undefined;\n\n return clearUndefined({\n productName: patch.product,\n isUneven: isLegSwap ? patch.isUneven : undefined,\n way: patch.way,\n maturityDateString: isLegSwap ? undefined : paymentDateString,\n nearPaymentDateString: isLegSwap ? paymentDateString : undefined,\n farPaymentDateString: isLegSwap ? farPaymentDateString : undefined,\n\n amount1String: isLegSwap ? undefined : amount1String,\n nearAmount1String: isLegSwap ? amount1String : undefined,\n farAmount1String: isLegSwap ? farAmount1String : undefined,\n\n amount2String: isLegSwap ? undefined : amount2String,\n nearAmount2String: isLegSwap ? amount2String : undefined,\n farAmount2String: isLegSwap ? farAmount2String : undefined,\n });\n};\n\nfunction dateToPatch(\n date: string | undefined | null,\n tenor: string | undefined | null,\n cultureInfo: DateInputCultureInfo,\n) {\n if (date === null) {\n return null;\n }\n if (isDefinedAndNonEmpty(date)) {\n return parseWithCultureInfo(cultureInfo, date);\n }\n if (isDefinedAndNonEmpty(tenor)) {\n return tenor;\n }\n return undefined;\n}\n","import type {\n BulkImported,\n BulkLegAdded,\n BulkLegsExcluded,\n BulkLegsRemoved,\n BulkPropertyChanged,\n BulkReset,\n} from 'state/fxBulks/fxBulksActions';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport { buildLegsMap } from 'state/share/patchHelper';\nimport type { BulkStoreModelChanges } from './tradeCaptureToBackend';\nimport type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport { fieldData } from 'utils/fieldSelectors';\nimport type { BulkLineProduct, FxBulkLegInputs, FxBulkLegState } from 'state/fxBulks/fxBulksModel';\nimport type { CurrencyChoice } from 'state/share/productModel/litterals';\n\ntype TradeCapturePatchBuilderFromActionSelectorsKeys =\n | 'getBulkLegs'\n | 'getBulkLegProduct'\n | 'getBulkAmountCurrency'\n | 'getBulkCurrencyPair'\n | 'getBulkExcludedLegs'\n | 'getBulkLastLegIdRequested'\n | 'getBulkLegState';\nexport type TradeCapturePatchBuilderFromActionSelectors = Pick<\n Selectors,\n TradeCapturePatchBuilderFromActionSelectorsKeys\n>;\n\ntype MapStateToActionChanges = MapStateToMetadataHOF<\n [string, BulkStoreModelChanges],\n TAction,\n AppState,\n TradeCapturePatchBuilderFromActionSelectors\n>;\n\nexport const bulkPropertyChangedToPatchWith: MapStateToActionChanges =\n sl =>\n (state, { bulkId, patch, patchLegs }) => {\n const legIds = sl.getBulkLegs(state, bulkId);\n const legs = buildLegs(\n legIds,\n id => fieldData(sl.getBulkLegProduct(state, bulkId, id)).data,\n patchLegs,\n );\n return [\n bulkId,\n {\n ...patch,\n legs: {\n ...legs,\n },\n },\n ];\n };\n\nexport const bulkImportedToPatchWith: MapStateToActionChanges =\n _sl =>\n (_state, { bulkId, patch, patchLegs }) =>\n [\n bulkId,\n {\n ...patch,\n legs: patchLegs,\n },\n ];\n\nexport const legChangedToPatchWith: MapStateToActionChanges<{\n bulkId: string;\n legId: string;\n patch: Partial;\n}> =\n sl =>\n (state, { bulkId, legId, patch }) => {\n const legIds = sl.getBulkLegs(state, bulkId);\n const legs = {\n ...buildLegs(legIds, id => fieldData(sl.getBulkLegProduct(state, bulkId, id)).data),\n [legId]: {\n product: sl.getBulkLegProduct(state, bulkId, legId).value ?? undefined,\n amountCurrency: sl.getBulkAmountCurrency(state, bulkId).value ?? 1,\n ...patch,\n },\n };\n\n const currencyPair = sl.getBulkCurrencyPair(state, bulkId).input ?? undefined;\n\n return [\n bulkId,\n {\n currencyPair,\n amountCurrency: sl.getBulkAmountCurrency(state, bulkId).value ?? 1,\n legs,\n },\n ];\n };\n\nexport const legAddToPatchWith: MapStateToActionChanges =\n sl =>\n (state, { bulkId, product }) => {\n const legIds = sl.getBulkLegs(state, bulkId);\n const legIdToAdd = sl.getBulkLastLegIdRequested(state, bulkId);\n const { data: currencyPair } = fieldData(sl.getBulkCurrencyPair(state, bulkId));\n return [\n bulkId,\n {\n currencyPair,\n legs: {\n ...buildLegs(legIds, id => fieldData(sl.getBulkLegProduct(state, bulkId, id)).data),\n [`${legIdToAdd}`]: { product },\n },\n },\n ];\n };\n\nexport const legRemovedToPatchWith: MapStateToActionChanges =\n sl =>\n (state, { bulkId, legIds }) => {\n const excludedLegs = sl.getBulkExcludedLegs(state, bulkId);\n const currentlegIds = sl\n .getBulkLegs(state, bulkId)\n .filter(id => !(legIds.includes(id) || excludedLegs.includes(id)));\n return [\n bulkId,\n {\n legs: buildLegs(\n currentlegIds,\n id => fieldData(sl.getBulkLegProduct(state, bulkId, id)).data,\n ),\n },\n ];\n };\n\nexport const legExcludedToPatchWith: MapStateToActionChanges =\n sl =>\n (state, { bulkId, legIds, activatedLegsIds }) => {\n const excludedLegs = sl.getBulkExcludedLegs(state, bulkId);\n const currentlegIds = sl\n .getBulkLegs(state, bulkId)\n .filter(id => !(legIds.includes(id) || excludedLegs.includes(id)));\n\n const activatedLegsPatchs = buildLegsPatch(\n activatedLegsIds,\n sl.getBulkAmountCurrency(state, bulkId).value || 1,\n sl.getBulkLegState.bind(undefined, state, bulkId),\n id => fieldData(sl.getBulkLegProduct(state, bulkId, id)).data,\n );\n\n return [\n bulkId,\n {\n currencyPair: sl.getBulkCurrencyPair(state, bulkId).value || null,\n amountCurrency: sl.getBulkAmountCurrency(state, bulkId).value || 1,\n legs: {\n ...buildLegs(\n currentlegIds,\n id => fieldData(sl.getBulkLegProduct(state, bulkId, id)).data,\n ),\n ...activatedLegsPatchs,\n },\n },\n ];\n };\n\nexport const bulkResetToPatchWith: MapStateToActionChanges =\n sl =>\n (state, { bulkId }) => {\n const { data: currencyPair } = fieldData(sl.getBulkCurrencyPair(state, bulkId));\n return [\n bulkId,\n {\n currencyPair,\n legs: {},\n },\n ];\n };\n\nconst buildLegsPatch = (\n legIds: readonly string[],\n amountCurrency: CurrencyChoice,\n getBulkLegState: (legId: string) => FxBulkLegState,\n getBulkLegProduct: (legId: string) => BulkLineProduct | null,\n) =>\n legIds.reduce((acc, legId) => {\n const legState = getBulkLegState(legId);\n const legData = {\n ...legState.values,\n ...legState.inputs,\n product: getBulkLegProduct(legId) ?? undefined,\n amountCurrency,\n };\n acc[legId] = Object.entries(legData).reduce((innerAcc, [legKey, legValue]) => {\n const key = legKey as keyof FxBulkLegInputs;\n innerAcc[key] = (legValue as any) ?? undefined;\n return innerAcc;\n }, {} as Partial);\n return acc;\n }, {} as Record>);\n\nconst buildLegs = (\n legIds: readonly string[],\n getBulkLegProduct: (legId: string) => BulkLineProduct | null,\n legsPatch: { [legId: string]: Partial } = {},\n) =>\n buildLegsMap(\n legIds.map(id => ({\n legId: id,\n patch: {\n product: getBulkLegProduct(id) ?? undefined,\n ...legsPatch[id],\n },\n })),\n );\n","import type { TcError, TcErrors, TcWarning } from './tradeCaptureModel';\nimport type {\n PropertyError,\n CurrencyChoice,\n PropertyWarning,\n} from 'state/share/productModel/litterals';\n\nexport function previousValue(error?: ReadonlyArray>): T | null | undefined {\n return error && error[0].previousValue;\n}\n\nexport function previousValueAsString(\n error?: ReadonlyArray>,\n): string | null | undefined {\n const value = previousValue(error);\n return value && `${value}`;\n}\n\nexport function fromTcWarning(\n warning?: ReadonlyArray>,\n): PropertyWarning | undefined {\n return (\n warning && {\n code: `warning-tc-${warning[0].id || 0}`,\n description: warning[0].description,\n faultyValue: warning[0].faultyValue,\n userNotified: false,\n }\n );\n}\n\nexport function fromTcWarningAsString(\n warning?: ReadonlyArray>,\n): PropertyWarning | undefined {\n return (\n warning && {\n code: `warning-tc-${warning[0].id || 0}`,\n description: warning[0].description,\n faultyValue: warning[0].faultyValue.toString(),\n userNotified: false,\n }\n );\n}\n\nexport function fromTcError(error?: ReadonlyArray>): PropertyError | undefined {\n return (\n error && {\n code: `error-tc-${error[0].id || 0}`,\n description: error[0].description,\n faultyValue: error[0].faultyValue,\n userNotified: false,\n }\n );\n}\nexport function fromTcErrorAsString(\n error?: ReadonlyArray>,\n): PropertyError | undefined {\n return (\n error && {\n code: `error-tc-${error[0].id || 0}`,\n description: error[0].description,\n faultyValue: error[0].faultyValue.toString(),\n userNotified: false,\n }\n );\n}\n\nexport function getPreviousMap(errors?: TcErrors): Partial | undefined {\n return (\n errors &&\n Object.entries(errors as Record>>).reduce(\n (acc, [key, err]) => ({\n ...acc,\n [key]: err[0].previousValue,\n }),\n {},\n )\n );\n}\n\nexport function mapAmount(\n negotiatedCurrency: CurrencyChoice | undefined,\n amount1: T | undefined,\n amount2: T | undefined,\n): T | undefined {\n if (amount1 === undefined && amount2 === undefined) {\n return;\n }\n if (negotiatedCurrency === undefined) {\n return amount1 !== undefined ? amount1 : amount2;\n } else if (negotiatedCurrency === 1) {\n return amount1;\n } else if (negotiatedCurrency === 2) {\n return amount2;\n }\n}\n","import type {\n BulkTradeCapturePatch,\n TradeCaptureBulkResponseWrapper,\n BulkTradeCaptureResponseLegProperties,\n TradeCaptureBulk,\n TradeCaptureBulkPreviousValues,\n TradeCaptureBulkLegPreviousValues,\n} from 'api/tradeCapture/bulk/tradeCaptureModel';\nimport {\n mapAmount,\n fromTcError,\n previousValue,\n fromTcWarning,\n} from 'api/tradeCapture/tradeCaptureMappingHelper';\nimport type { BulkLineProduct, IFxBulkLegValues, IFxBulkValues } from 'state/fxBulks/fxBulksModel';\nimport { clearUndefined } from 'utils/clearUndefined';\nimport type {\n CurrencyChoice,\n PropertyErrors,\n PropertyWarnings,\n} from 'state/share/productModel/litterals';\nimport type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type { TcErrors, TcWarnings } from 'api/tradeCapture/tradeCaptureModel';\n\ninterface WithBulkId {\n bulkId: string;\n}\n\nexport type TradeCaptureFromBackendMetaSelectorsKeys =\n | 'getBulkAmountCurrency'\n | 'getBulkLegs'\n | 'getBulkExcludedLegs';\nexport type TradeCaptureFromBackendMetaSelectorSelectors = Pick<\n Selectors,\n TradeCaptureFromBackendMetaSelectorsKeys\n>;\n\ninterface MappedResult {\n values: Partial;\n errors: PropertyErrors;\n warnings: PropertyWarnings;\n}\n\n// ---------------------------------------------------------------------------------\n// Public meta selector\n// ---------------------------------------------------------------------------------\n\nexport const metaSelectorTradeCaptureFromBackendWith: MapStateToMetadataHOF<\n BulkTradeCapturePatch,\n TradeCaptureBulkResponseWrapper & WithBulkId,\n AppState,\n TradeCaptureFromBackendMetaSelectorSelectors\n> =\n sl =>\n (state, { changedFields, errors, warnings, idVersion, bulkId }) => {\n const { legs: legsError, ...bulkErrors } = errors || { legs: {} };\n const { legs: legsWarning, ...bulkWarnings } = warnings || { legs: {} };\n const bulkProperties = metaSelectorTradeCaptureToBulkPropertiesWith(sl)(state, {\n changes: changedFields,\n tcErrors: bulkErrors,\n tcWarnings: bulkWarnings,\n });\n\n const legs = Object.entries(changedFields.legs).reduce(\n (acc, [legId, leg]) => {\n acc[legId] = metaSelectorTradeCaptureToBulkLegValuesWith(sl)(state, {\n bulkId,\n changes: leg,\n tcErrors: (legsError && legsError[legId]) || {},\n tcWarnings: (legsWarning && legsWarning[legId]) || {},\n });\n return acc;\n },\n {} as {\n [legId: string]: MappedResult;\n },\n );\n const isReadyToPrice =\n changedFields.isReadyToPrice === undefined ? null : changedFields.isReadyToPrice;\n\n return {\n idVersion,\n ...bulkProperties,\n legs,\n isReadyToPrice,\n isPriceObsolete: changedFields.isPriceObsolete || false,\n };\n };\n\n// ---------------------------------------------------------------------------------\n// Private metaSelector\n// ---------------------------------------------------------------------------------\ninterface PrivateMetaSelectorMetaData {\n changes: Partial;\n tcErrors: TcErrors;\n tcWarnings: TcWarnings;\n}\n\nconst metaSelectorTradeCaptureToBulkPropertiesWith: MapStateToMetadataHOF<\n MappedResult,\n PrivateMetaSelectorMetaData,\n AppState,\n TradeCaptureFromBackendMetaSelectorSelectors\n> =\n _sel =>\n (_state, { changes, tcErrors }) => ({\n values: {\n ...clearUndefined({\n currencyPair: previousValue(tcErrors.currencyPair),\n }),\n ...clearUndefined({\n currencyPair: changes.currencyPair,\n amountCurrency: changes.negotiatedCurrency,\n }),\n },\n errors: {\n ...clearUndefined({\n currencyPair: fromTcError(tcErrors.currencyPair),\n }),\n },\n warnings: {},\n });\n\nconst metaSelectorTradeCaptureToBulkLegValuesWith: MapStateToMetadataHOF<\n MappedResult,\n PrivateMetaSelectorMetaData<\n BulkTradeCaptureResponseLegProperties,\n TradeCaptureBulkLegPreviousValues\n > &\n WithBulkId,\n AppState,\n TradeCaptureFromBackendMetaSelectorSelectors\n> =\n sl =>\n (state, { changes, tcErrors, tcWarnings, bulkId }) => {\n let amountCurrency: CurrencyChoice;\n if (changes.negotiatedCurrency === undefined) {\n const { value: amountCurrencyState } = sl.getBulkAmountCurrency(state, bulkId);\n amountCurrency = amountCurrencyState;\n } else {\n amountCurrency = changes.negotiatedCurrency;\n }\n const amount = mapAmount(amountCurrency, changes.amount1, changes.amount2);\n const nearAmount = mapAmount(amountCurrency, changes.nearAmount1, changes.nearAmount2);\n const farAmount = mapAmount(amountCurrency, changes.farAmount1, changes.farAmount2);\n const product = changes.productName as BulkLineProduct;\n const isSwapLeg = product === 'FxSwap' || product === 'FxNdSwap';\n const values: Partial = clearUndefined({\n product,\n isUneven: changes.isUneven,\n way: changes.way,\n amount: isSwapLeg ? nearAmount : amount,\n farAmount,\n currency1: changes.currency1,\n currency2: changes.currency2,\n paymentDate: isSwapLeg ? changes.nearPaymentDate : changes.maturityDate,\n paymentDateTenor: isSwapLeg ? changes.nearPaymentDateTenor : changes.maturityDateTenor,\n farPaymentDate: changes.farPaymentDate,\n farPaymentDateTenor: changes.farPaymentDateTenor,\n isNonDeliverable: changes.isNonDeliverable,\n fixingCurrency: changes.fixingCurrency,\n fixingDate: changes.fixingDate,\n fixingSource: changes.fixingSource,\n isCrossed: changes.isCrossed,\n possibleFixingCurrencies: changes.possibleFixingCurrencies,\n possibleFixingSources: changes.possibleFixingSources,\n possibleSndFixingSources: changes.possibleSndFixingSources,\n possibleXCurrencies: changes.possibleXCurrencies,\n sndFixingSource: changes.sndFixingSource,\n xCurrency: changes.xCurrency,\n } as Partial);\n const amount1Error = isSwapLeg ? tcErrors.nearAmount1 : tcErrors.amount1;\n const amount2Error = isSwapLeg ? tcErrors.nearAmount2 : tcErrors.amount2;\n const amount1Warning = isSwapLeg ? tcWarnings.nearAmount1 : tcWarnings.amount1;\n const amount2Warning = isSwapLeg ? tcWarnings.nearAmount2 : tcWarnings.amount2;\n return {\n values,\n errors: clearUndefined({\n product: fromTcError(tcErrors.productName),\n isUneven: fromTcError(tcErrors.isUneven),\n way: fromTcError(tcErrors.way),\n amount: fromTcError(amountCurrency === 1 ? amount1Error : amount2Error),\n farAmount: fromTcError(amountCurrency === 1 ? tcErrors.farAmount1 : tcErrors.farAmount2),\n paymentDate: fromTcError(isSwapLeg ? tcErrors.nearPaymentDate : tcErrors.maturityDate),\n paymentDateTenor: fromTcError(\n isSwapLeg ? tcErrors.nearPaymentDateTenor : tcErrors.maturityDateTenor,\n ),\n farPaymentDate: fromTcError(tcErrors.farPaymentDate),\n farPaymentDateTenor: fromTcError(tcErrors.farPaymentDateTenor),\n }),\n warnings: clearUndefined({\n amount: fromTcWarning(amountCurrency === 1 ? amount1Warning : amount2Warning),\n farAmount: fromTcWarning(\n amountCurrency === 1 ? tcWarnings.farAmount1 : tcWarnings.farAmount2,\n ),\n }),\n };\n };\n","import type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport { type Selectors, selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type {\n IBulkRfsCreateRequest,\n IBulkProduct,\n IBulkLeg,\n IBulkLegNonDeliverableFixingInfos,\n} from 'api/multipass/bulk';\n\nimport { SPOT_TENOR } from 'components/share/tenors';\nimport { assertIsDefined } from '@sgme/fp';\n\ninterface QuoteRequestBuilderMetadata {\n quoteId: string;\n rfsId: string;\n}\n\ntype InjectedSelectorsKeys =\n | 'getBulkCurrencyPair'\n | 'getBulkAmountCurrency'\n | 'getCompanyIdFromQuoteId'\n | 'getConnectionId'\n | 'getBulkLegs'\n | 'getBulkExcludedLegs';\nexport type InjectedSelectors = Pick;\n\n// ---------------------------------------------------------------------------------\n// Public meta selector\n// ---------------------------------------------------------------------------------\nexport const metaSelectorQuoteRequestBuilderWith: MapStateToMetadataHOF<\n IBulkRfsCreateRequest,\n QuoteRequestBuilderMetadata,\n AppState,\n InjectedSelectors\n> =\n sl =>\n (state, { rfsId, quoteId: bulkId }) => {\n const excludedLegs = sl.getBulkExcludedLegs(state, bulkId);\n const legs = sl\n .getBulkLegs(state, bulkId)\n .reduce(\n (processedLegs, legId) => [\n ...processedLegs,\n ...(excludedLegs.includes(legId)\n ? []\n : toLegQuoteRequest({ state, bulkId, legId, sl: selectors })),\n ],\n [] as readonly IBulkLeg[],\n );\n\n const currencyPair = sl.getBulkCurrencyPair(state, bulkId).value;\n assertIsDefined(currencyPair, 'currencyPair needs to be defined for pricing');\n const fxBulkProduct: IBulkProduct = {\n currencyPair,\n amountCurrency: sl.getBulkAmountCurrency(state, bulkId).value,\n legs,\n };\n\n const requesterCounterpartyId = sl.getCompanyIdFromQuoteId(state, bulkId);\n assertIsDefined(requesterCounterpartyId, 'companyId needs to be defined for pricing');\n\n return {\n fxBulkProduct,\n replyToStream: sl.getConnectionId(state),\n rfsId,\n requesterCounterpartyId,\n };\n };\n\ntype InjectedLegSelectorsKeys =\n | 'getBulkLegProduct'\n | 'getBulkLegWay'\n | 'getBulkLegAmount'\n | 'getBulkLegPaymentDate'\n | 'getBulkLegPaymentDateTenor'\n | 'getBulkLegFarAmount'\n | 'getBulkLegFarPaymentDate'\n | 'getBulkLegFarPaymentDateTenor';\nexport type InjectedLegSelectors = Pick;\n\nexport const toLegQuoteRequest = ({\n state,\n bulkId,\n legId,\n sl,\n}: {\n state: AppState;\n bulkId: string;\n legId: string;\n sl: InjectedLegSelectors;\n}): readonly IBulkLeg[] => {\n const product = sl.getBulkLegProduct(state, bulkId, legId).value;\n if (product === null) {\n return [];\n }\n\n const way = sl.getBulkLegWay(state, bulkId, legId).value;\n const amount = sl.getBulkLegAmount(state, bulkId, legId).value;\n const paymentDate = sl.getBulkLegPaymentDate(state, bulkId, legId).value;\n const paymentDateTenor = sl.getBulkLegPaymentDateTenor(state, bulkId, legId).value;\n\n assertIsDefined(way, 'way needs to be defined for pricing');\n assertIsDefined(amount, 'way needs to be defined for pricing');\n assertIsDefined(paymentDate, 'paymentDate needs to be defined for pricing');\n assertIsDefined(paymentDateTenor, 'paymentDateTenor needs to be defined for pricing');\n\n let fixingInfos: IBulkLegNonDeliverableFixingInfos | null = null;\n if (product !== 'FxSwap' && product !== 'FxNdSwap') {\n return [\n {\n id: legId,\n product,\n way,\n amount,\n paymentDate,\n paymentDateTenor,\n ndFixingInfos: fixingInfos,\n } as IBulkLeg,\n ];\n }\n\n const nearLeg: IBulkLeg = {\n id: `${legId}-near`,\n product: paymentDateTenor === SPOT_TENOR ? 'FxSpot' : product === 'FxSwap' ? 'FxFwd' : 'FxNdf',\n way,\n amount,\n paymentDate,\n paymentDateTenor,\n ndFixingInfos: fixingInfos,\n };\n\n const farAmount = sl.getBulkLegFarAmount(state, bulkId, legId).value;\n const farPaymentDate = sl.getBulkLegFarPaymentDate(state, bulkId, legId).value;\n const farPaymentDateTenor = sl.getBulkLegFarPaymentDateTenor(state, bulkId, legId).value;\n\n assertIsDefined(farAmount, 'farAmount needs to be defined for pricing');\n assertIsDefined(farPaymentDate, 'farPaymentDate needs to be defined for pricing');\n assertIsDefined(farPaymentDateTenor, 'farPaymentDateTenor needs to be defined for pricing');\n\n const farLeg: IBulkLeg = {\n id: `${legId}-far`,\n product: product === 'FxSwap' ? 'FxFwd' : 'FxNdf',\n way: way === 'Buy' ? 'Sell' : 'Buy',\n amount: farAmount,\n paymentDate: farPaymentDate,\n paymentDateTenor: farPaymentDateTenor,\n ndFixingInfos: fixingInfos,\n };\n\n return [nearLeg, farLeg];\n};\n","import type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type {\n IBulkQuoteExecutionPayload,\n IBulkLegQuoteExecutionPayload,\n} from 'api/multipass/bulk/bulkQuoteExecution';\nimport type { IQuoteLeg, ILegMargin } from 'state/fxBulks/fxBulksModel';\nimport type { BidAskPair, Side } from 'state/share/productModel/litterals';\nimport { getDateForMultipass } from 'utils/dateFormats';\nimport { assertIsDefined, isEmpty } from '@sgme/fp';\n\ninterface IBulkQuoteExecutionMetadata {\n streamId: string;\n bulkId: string;\n tradeDate: Date;\n}\n\ntype selectors =\n | 'isUserInternalSales'\n | 'getBulkCurrencyPair'\n | 'getBulkAmountCurrency'\n | 'getCurrencyPrecision'\n | 'getBulkStreamState'\n | 'getConnectionId'\n | 'getBulkNettedLegMargin'\n | 'getBulkNettedLegWay'\n | 'sideToWay'\n | 'makeSpotWithMargin'\n | 'makeForwardPointWithMargin'\n | 'getUserPreferenceData';\n\ntype ActualSelectors = Pick;\n\nexport const metaSelectorQuoteExecutionBuilderWith: MapStateToMetadataHOF<\n IBulkQuoteExecutionPayload,\n IBulkQuoteExecutionMetadata,\n AppState,\n ActualSelectors\n> =\n sl =>\n (state, { streamId, bulkId, tradeDate }) => {\n const streamState = sl.getBulkStreamState(state, streamId);\n if (streamState.status !== 'PRICING') {\n throw 'error : cannot execute when stream is not pricing';\n }\n const { quoteId, frontTimestamp, backTimestamp } = streamState.quote;\n const streamLegs = streamState.quote.legs;\n const pair = sl.getBulkCurrencyPair(state, bulkId).value;\n\n assertIsDefined(pair, 'currencyPair needs to be defined for execution');\n\n const precision = sl.getCurrencyPrecision(state, pair);\n\n const { emails, splitNotificationsEmailsCash, splitNotifications } =\n sl.getUserPreferenceData(state);\n let emailNotificationList;\n if (splitNotifications && !isEmpty(splitNotificationsEmailsCash)) {\n emailNotificationList = splitNotificationsEmailsCash.join(';');\n } else {\n emailNotificationList = emails.join(';');\n }\n const userLocalDateTime = getDateForMultipass(tradeDate);\n const isInternalSales = sl.isUserInternalSales(state);\n const lastQuoteFromBackTimestamp = backTimestamp;\n const lastQuoteReceivedByFrontTimestamp = frontTimestamp.getTime();\n const executionClickByFrontTimestamp = tradeDate.getTime();\n\n return {\n rfsId: streamId,\n replyToStream: sl.getConnectionId(state),\n quoteId,\n emailNotificationList,\n userLocalDateTime,\n lastQuoteFromBackTimestamp,\n lastQuoteReceivedByFrontTimestamp,\n executionClickByFrontTimestamp,\n legs: streamLegs.map(leg => {\n const margin = sl.getBulkNettedLegMargin(state, bulkId, leg.date);\n const dominantWay = sl.getBulkNettedLegWay(state, bulkId, leg.date);\n\n assertIsDefined(margin, 'netted leg margin needs to be defined for execution');\n assertIsDefined(dominantWay, 'netted leg way needs to be defined for execution');\n\n return toBulkLegExecution(sl, leg, dominantWay, margin, precision, isInternalSales);\n }),\n };\n };\n\nconst toBulkLegExecution = (\n sl: ActualSelectors,\n quoteLeg: IQuoteLeg,\n dominantSide: Side,\n margin: ILegMargin,\n precision: number,\n isInternalSales: boolean,\n): IBulkLegQuoteExecutionPayload => {\n const getBidAskValueByWay =\n quoteLeg.customerWay === 'Buy'\n ? ({ ask }: BidAskPair): number => ask\n : ({ bid }: BidAskPair): number => bid;\n const dominantWay = sl.sideToWay(dominantSide);\n const spotTrader = getBidAskValueByWay(quoteLeg.spotWithoutMargin);\n const { spotMargin: spotMarginPoints, forwardMargin: forwardMarginPoints } = margin;\n const spotClient = isInternalSales\n ? sl.makeSpotWithMargin(\n dominantWay,\n getBidAskValueByWay(quoteLeg.spotWithoutMargin),\n spotMarginPoints,\n precision,\n )\n : getBidAskValueByWay(quoteLeg.spotWithMargin);\n const forwardPointsWithoutMargin = getBidAskValueByWay(quoteLeg.forwardPoints);\n const forwardPointsWithMargin = sl.makeForwardPointWithMargin(\n dominantWay,\n forwardPointsWithoutMargin,\n forwardMarginPoints,\n );\n return {\n amount: quoteLeg.amount,\n valueDate: quoteLeg.date,\n valueDateTenor: quoteLeg.dateTenor,\n customerWay: quoteLeg.customerWay,\n spotTrader: isInternalSales ? spotTrader : undefined,\n spotClient,\n forwardPoints: forwardPointsWithMargin,\n };\n};\n","import { selectors } from 'state/selectors';\nimport { metaSelectorTradeCaptureToBackendWith } from './tradeCaptureToBackend';\nimport {\n legAddToPatchWith,\n legChangedToPatchWith,\n legRemovedToPatchWith,\n bulkPropertyChangedToPatchWith,\n bulkResetToPatchWith,\n bulkImportedToPatchWith,\n legExcludedToPatchWith,\n} from './tradeCapturePatchBuilderFromAction';\nimport { metaSelectorTradeCaptureFromBackendWith } from './tradeCaptureFromBackend';\nimport { metaSelectorQuoteRequestBuilderWith } from './buildQuoteRequest';\nimport { metaSelectorQuoteExecutionBuilderWith } from './buildQuoteExecution';\n\nexport const bulkResponseToPatchMetaSelector = metaSelectorTradeCaptureFromBackendWith(selectors);\n\nexport const createBulkTradeCaptureRequest = metaSelectorTradeCaptureToBackendWith(selectors);\n\nexport const bulkLegAddedToPatch = legAddToPatchWith(selectors);\n\nexport const bulkLegChangedToPatch = legChangedToPatchWith(selectors);\n\nexport const bulkLegRemovedToPatch = legRemovedToPatchWith(selectors);\n\nexport const bulkLegsExcludedToPatch = legExcludedToPatchWith(selectors);\n\nexport const bulkResetToPatch = bulkResetToPatchWith(selectors);\n\nexport const bulkPropertyChangedToPatch = bulkPropertyChangedToPatchWith(selectors);\n\nexport const bulkImportedToPatch = bulkImportedToPatchWith(selectors);\n\nexport const bulkBuildQuoteRequest = metaSelectorQuoteRequestBuilderWith(selectors);\n\nexport const bulkQuoteExecution = metaSelectorQuoteExecutionBuilderWith(selectors);\n","import type { LegType } from 'state/fxOptions/model/optionsLegs';\nimport type { CurrencyChoice, Possible, Side } from 'state/share/productModel/litterals';\nimport type {\n Legs,\n TcErrors,\n ErrorLegs,\n TradeCaptureRequestWrapper,\n TradeCaptureResponseWrapper,\n TcWarnings,\n WarningLegs,\n} from '../tradeCaptureModel';\n\nexport type TradeCaptureOptionChanges = Partial & Legs;\nexport type TradeCaptureOptionErrors = TcErrors &\n NestedTradeCaptureErrors;\n\ninterface NestedTradeCaptureErrors {\n legs?: {\n [legId: string]: TcErrors &\n // for options, error legs can be nested 😣\n ErrorLegs;\n };\n}\n\nexport type TradeCaptureOptionWarnings = TcWarnings &\n NestedTradeCaptureWarnings;\n\ninterface NestedTradeCaptureWarnings {\n legs?: {\n [legId: string]: TcWarnings &\n // for options, error legs can be nested 😣\n WarningLegs;\n };\n}\n\nexport type TradeCaptureOptionRequestWrapper =\n TradeCaptureRequestWrapper;\n\nexport type TradeCaptureOptionResponseWrapper = TradeCaptureResponseWrapper<\n TradeCaptureOptionChanges,\n TradeCaptureOptionErrors,\n TradeCaptureOptionWarnings\n>;\n\nexport interface TradeCaptureOption {\n currencyPair: string | null;\n hedgeType: TcHedgeType;\n hedgePaymentDate: string | null;\n hedgeAmountInCcy1: number | null;\n hedgeAmountInCcy1String: string | null;\n hedgeAmountInCcy2: number | null;\n hedgeAmountInCcy2String: string | null;\n hedgePrice: number | null;\n hedgePriceString: string | null;\n markupCurrency: string | null;\n amountReference: number | null;\n amountReferenceCurrency: string | null;\n isOverriddenAmountReference: boolean;\n isReadyToPrice: boolean;\n isPriceObsolete: boolean;\n isProductObsolete: boolean;\n premiumPaymentDateString: string | null;\n premiumDate: string | null;\n premiumDateTenor: string | null;\n isInFine: boolean | null;\n}\n\nexport interface TradeCaptureOptionPreviousValues {\n currencyPair: string | null;\n hedgeType: TcHedgeType;\n type: TcHedgeType;\n hedgeAmountInCcy1: number | null;\n amountInCcy1: number | null;\n hedgeAmountInCcy1String: string | null;\n amountInCcy1String: string | null;\n hedgeAmountInCcy2: number | null;\n amountInCcy2: number | null;\n hedgeAmountInCcy2String: string | null;\n amountInCcy2String: string | null;\n hedgePrice: number | null;\n price: number | null;\n hedgePriceString: string | null;\n priceString: string | null;\n amountReference: number | null;\n premiumPaymentDate: string | null;\n}\n\nexport type PremiumType =\n | 'AmountCurrency1'\n | 'AmountCurrency2'\n | 'SmiledVolatility1'\n | 'SmiledVolatility2'\n | 'Pip12'\n | 'Pip21'\n | 'PercentageCurrency1'\n | 'PercentageCurrency2';\n\nexport const tradeCaptureOptionLegCallPutType = ['Call', 'Put'] as const;\nexport type TradeCaptureOptionLegCallPutType = typeof tradeCaptureOptionLegCallPutType[number];\n\n// todo 4285 - see with Sylvain if values should be identical in setltlementType between TCmodel and our internal state and include forward ?\nexport const tradeCaptureOptionLegSettlementType = ['Cash', 'Physical', 'NDF'] as const;\nexport type TradeCaptureOptionLegSettlementType =\n typeof tradeCaptureOptionLegSettlementType[number];\n\nexport const tradeCaptureOptionLegSolvableType = [\n 'Strike',\n 'Amount1',\n 'PremiumPaymentAmount',\n] as const;\nexport type TradeCaptureOptionLegSolvableType = typeof tradeCaptureOptionLegSolvableType[number];\n\n/**\n * @todo split in shared, patch -> tc (upward) and tc -> patch (downward)\n */\nexport interface TCOptionLegValues {\n cutOffMarketPlace: string | null;\n possibleCutOffMarketPlaces: Possible | null;\n currencyPair: string;\n currency1: string;\n currency2: string;\n type: TradeCaptureOptionLegCallPutType | null;\n expiryDate: string | null;\n expiryDateString: string | null;\n expiryDateTenor: string | null;\n deliveryDate: string | null;\n deliveryDateString: string | null;\n deliveryDateTenor: string | null;\n settlementType: TradeCaptureOptionLegSettlementType | null;\n possibleSettlementTypes: Possible | null;\n cashSettlementCurrency: string | null;\n possibleCashSettlementCurrencies: Possible | null;\n fixingReference1: string | null;\n possibleFixingReferences1: Possible | null;\n fixingReference2: string | null;\n possibleFixingReferences2: Possible | null;\n isCrossed: boolean | null;\n crossCurrency: string | null;\n possibleCrossCurrencies: Possible | null;\n strikeString: string | null;\n strikeShortcut: string | null;\n strike: number | null;\n strikeInDelta: string | null;\n strikeWithQuotity: number | null;\n amount1String: string;\n amount2String: string;\n amount1: number | null;\n amount2: number | null;\n negotiatedCurrency: CurrencyChoice;\n premiumPaymentDate: string | null;\n premiumPaymentDateString: string | null;\n premiumPaymentDateTenor: string | null;\n isInFine: boolean;\n side: Side | null;\n clientVolAsk: number | null;\n clientVolBid: number | null;\n clientVolAskString: string | null;\n clientVolBidString: string | null;\n premiumPaymentAmountBid: number | null;\n premiumPaymentAmountBidString: string | null;\n premiumPaymentAmountAsk: number | null;\n premiumPaymentAmountAskString: string | null;\n premiumType: PremiumType | null; // Used by TC to determine if they should tell us price is obsolete\n markupAmount: number | null;\n markupAmountString: string | null;\n solvable: TradeCaptureOptionLegSolvableType | null;\n productName: LegType | 'FxOptionHedge';\n isReadyToPrice: boolean;\n isPriceObsolete: boolean;\n isProductObsolete: boolean;\n hedgeType: string | undefined;\n hedgeAmountInCcy1: number | null;\n hedgeAmountInCcy1String: string | null;\n hedgeAmountInCcy2: number | null;\n hedgeAmountInCcy2String: string | null;\n hedgePrice: number | null;\n hedgePriceString: string | null;\n legs: {\n [key: string]: Partial;\n };\n}\n\nexport interface TradeCaptureFxOptionMultileg {\n productName: Extract;\n legs: {\n [key: string]: Partial | Partial;\n };\n}\n\nexport interface TradeCaptureVanillaOptionLeg extends TCOptionLegValues {\n productName: Extract;\n}\n\nexport function isVanilla(leg: Partial): boolean {\n return leg.productName === 'Vanilla';\n}\n\nexport interface TradeCaptureOptionLegPreviousValues {\n expiryDate: string | null;\n expiryDateTenor: string | null;\n strike: number | null;\n strikeInDelta: string | null;\n amount1: number | null;\n amount2: number | null;\n deliveryDate: string | null;\n markupAmount: number | null;\n premiumPaymentAmountBid: number | null;\n premiumPaymentAmountAsk: number | null;\n premiumPaymentDate: string | null;\n clientVolAsk: number | null;\n clientVolBid: number | null;\n}\n\nexport type TcHedgeType = 'None' | 'Spot' | 'Forward';\n\nexport interface TCOptionHedgeValues {\n productName: 'FxOptionHedge';\n type: 'Spot' | 'Forward';\n deliveryDateTenor: string | null;\n deliveryDate: string | null;\n deliveryDateString: string | null;\n amountInCcy1: number | null;\n amountInCcy1String: string | null;\n amountInCcy2: null;\n amountInCcy2String: string | null;\n price: number | null;\n priceString: string | null;\n}\n\nexport interface TradeCaptureStrippingRequest {\n idVersion: number;\n frequency: StrippingFrequency;\n startDate: string;\n iterations: number | undefined;\n endDate: string | undefined;\n}\n\nexport const strippingFrequencies = ['Daily', 'Weekly', 'Monthly'] as const;\n\nexport type StrippingFrequency = typeof strippingFrequencies[number];\n","import type { SettlementType } from 'state/fxOptions/fxOptionsModel';\nimport type { TradeCaptureOptionLegSettlementType } from 'api/tradeCapture/option/tradeCaptureOptionModel';\n\nconst mapLegSettlementTypeToTradeCaptureSettlementType: Record<\n SettlementType,\n TradeCaptureOptionLegSettlementType | undefined\n> = {\n Cash: 'Cash',\n Physical: 'Physical',\n NDF: 'NDF',\n Forward: undefined,\n};\n\nexport function convertLegSettlementTypeToTradeCaptureSettlementType(\n type: SettlementType,\n): TradeCaptureOptionLegSettlementType | undefined {\n return mapLegSettlementTypeToTradeCaptureSettlementType[type];\n}\n\nconst mapTradeCaptureSettlementTypeToLegSettlementType: Record<\n TradeCaptureOptionLegSettlementType,\n SettlementType\n> = {\n Cash: 'Cash',\n Physical: 'Physical',\n NDF: 'NDF',\n};\n\nexport function convertTradeCaptureSettlementTypeToLegSettlementType(\n type: TradeCaptureOptionLegSettlementType,\n): SettlementType {\n return mapTradeCaptureSettlementTypeToLegSettlementType[type];\n}\n","import type { OptionType } from 'state/fxOptions/fxOptionsModel';\nimport type { TradeCaptureOptionLegCallPutType } from 'api/tradeCapture/option/tradeCaptureOptionModel';\n\nconst mapLegOptionTypeToTradeCaptureType: Record = {\n Call: 'Call',\n Put: 'Put',\n};\n\nexport function convertLegOptionTypeToTradeCaptureType(\n type: OptionType,\n): TradeCaptureOptionLegCallPutType {\n return mapLegOptionTypeToTradeCaptureType[type];\n}\n\nconst mapTradeCaptureTypeToLegOptionType: Record = {\n Call: 'Call',\n Put: 'Put',\n};\n\nexport function convertTradeCaptureTypeToLegOptionType(\n type: TradeCaptureOptionLegCallPutType,\n): OptionType {\n return mapTradeCaptureTypeToLegOptionType[type];\n}\n","import type { Collection } from '../../../typings/utils';\nimport type { IFormData } from '../../share/form';\nimport type { CurrencyChoice } from 'state/share/productModel/litterals';\nimport type { IPatch } from 'state/share/patchModels';\n\nexport type FxOptionHedgeStateMap = Readonly>;\n\nexport type FxOptionHedgeState = IFormData;\n\nexport interface IFxHedgeValues {\n /** hedgePrice is spot ref or forward ref (hedge rate in the next UI). (midRate in stream options redux) */\n rate: number | null;\n paymentDate: string | null;\n amount: number | null;\n currency: CurrencyChoice;\n}\n\nexport interface IFxHedgeInputs {\n /** hedgePrice is spot ref or forward ref (hedge rate in the next UI). (midRate in stream options redux) */\n rate: string | null;\n amount: string | null;\n currency: CurrencyChoice;\n}\n\n// ID used when the feature toggle of multi-hedges is disabled to create a single hedge on the client from\n// the date returned by trade capture in the option model\nexport const PRE_MULTI_HEDGES_HEDGE_ID = 'hedge-preMultiHedges';\n\nexport type FxOptionHedgesPatchedValuesRecords = Record;\n\nexport type FxOptionHedgePatchedValues = IPatch;\n","import type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport {\n isVanilla,\n type PremiumType,\n type TcHedgeType,\n type TCOptionHedgeValues,\n type TCOptionLegValues,\n type TradeCaptureOptionChanges,\n type TradeCaptureOptionLegPreviousValues,\n type TradeCaptureOptionLegSettlementType,\n type TradeCaptureOptionPreviousValues,\n type TradeCaptureOptionResponseWrapper,\n} from 'api/tradeCapture/option/tradeCaptureOptionModel';\nimport type {\n ErrorLegs,\n TcErrors,\n TcWarnings,\n WarningLegs,\n} from 'api/tradeCapture/tradeCaptureModel';\nimport type { DisplayPriceType, PriceType } from 'state/fxOptions/fxOptionsModel';\nimport type {\n CurrencyChoice,\n HedgeType,\n Possible,\n PropertyError,\n PropertyErrors,\n PropertyWarning,\n PropertyWarnings,\n} from 'state/share/productModel/litterals';\nimport { FIRST_CURRENCY, SECOND_CURRENCY } from 'state/share/productModel/litterals';\nimport { clearUndefined } from 'utils/clearUndefined';\nimport {\n fromTcError,\n fromTcErrorAsString,\n fromTcWarning,\n fromTcWarningAsString,\n previousValue,\n previousValueAsString,\n} from 'api/tradeCapture/tradeCaptureMappingHelper';\nimport { convertTradeCaptureSettlementTypeToLegSettlementType } from './utils/settlementTypesMap';\nimport { convertTradeCaptureTypeToLegOptionType } from './utils/optionTypesMap';\nimport { mapOptional } from 'utils/optional';\nimport type { IPatch } from 'state/share/patchModels';\nimport type {\n FxOptionLegsPatchedValuesRecords,\n IFxVanillaLegValues,\n LegType,\n} from 'state/fxOptions/model/optionsLegs';\nimport type { IFxOptionValues } from 'state/fxOptions/model/optionProduct';\nimport type { FxOptionPatchWithTradeCaptureMetaData } from 'state/fxOptions/actions/optionProduct';\nimport { isDefined } from '@sgme/fp';\nimport {\n type FxOptionHedgesPatchedValuesRecords,\n type IFxHedgeValues,\n PRE_MULTI_HEDGES_HEDGE_ID,\n} from '../../../state/fxOptions/model/optionHedges';\n\ntype TradeCaptureFromBackendMetaSelectorsKeys =\n | 'getOptionVanillaLegNotionalCurrency'\n | 'getFeatureToggles';\n\nexport type TradeCaptureFromBackendMetaSelectorSelectors = Pick<\n Selectors,\n TradeCaptureFromBackendMetaSelectorsKeys\n>;\n\ninterface WithOptionId {\n optionId: string;\n}\n\n// @todo SGEFX-4285 Rework legIds\ninterface TCOptionLegValuesWithoutLegsRecord {\n [key: string]: Omit;\n}\n\ninterface PartialTCOptionLegValuesWithoutLegsRecord {\n [key: string]: Partial & { legIds?: string[] }>;\n}\n\n// ---------------------------------------------------------------------------------\n// Public meta selector\n// ---------------------------------------------------------------------------------\n\nconst orderChildrenLegs = (\n childrenLegs: { [p: string]: Partial },\n newKey: string,\n optionId: string,\n) => {\n const childrenLegsArePutOrCall = Object.keys(childrenLegs).some(\n key => key.includes('call') || key.includes('put'),\n );\n\n if (childrenLegsArePutOrCall) {\n // we need to always send back call before put\n return [`${optionId}/${newKey}/call`, `${optionId}/${newKey}/put`];\n }\n\n return Object.keys(childrenLegs).map(childrenKey => `${optionId}/${newKey}/${childrenKey}`);\n};\n\n/**\n * Flattens the nested legs from TC in an object with keys for each legs corresponding to their nested path\n * @param allLegs {{[p: string]: Partial}} object with nested legs from TC\n * @param optionId {string} recursive path to keep track of the parent ID\n * @param legsValuesWithLegIds {{[p: string]: Partial}} recursive object use through the reducer to add all the legs\n * @param parentPath {string} recursive path to keep track of the parent ID\n * @returns {{[key: string]: Partial>}}The original or cloned/updated object\n */\nconst flattenNestedLegsValuesWithLegIds = (\n allLegs: { [p: string]: Partial },\n optionId: string,\n legsValuesWithLegIds: { [key: string]: Partial } = {},\n parentPath = '',\n): PartialTCOptionLegValuesWithoutLegsRecord => {\n for (const [key, value] of Object.entries(allLegs)) {\n const { legs, ...otherProperties } = value;\n const newKey = parentPath ? `${parentPath}/${key}` : key;\n\n legsValuesWithLegIds[newKey] = otherProperties;\n\n if (legs) {\n legsValuesWithLegIds[newKey].legIds = orderChildrenLegs(legs, newKey, optionId);\n flattenNestedLegsValuesWithLegIds(legs, optionId, legsValuesWithLegIds, newKey);\n }\n }\n\n return legsValuesWithLegIds;\n};\n\ntype TypeOfWarnings = TcWarnings &\n WarningLegs;\n\ntype TypeOfErrors = TcErrors &\n ErrorLegs;\n\nconst flattenNestedLegsErrorsOrWarning = (\n allErrorOrWarningLegs: TypeOfWarnings | TypeOfErrors,\n optionId: string,\n returnObject: TypeOfWarnings | TypeOfErrors = {},\n parentPath = '',\n): TypeOfWarnings | TypeOfErrors => {\n for (const [key, value] of Object.entries(allErrorOrWarningLegs)) {\n const { legs, ...otherProperties } = value;\n const newKey = parentPath ? `${parentPath}/${key}` : key;\n\n // todo SGEFX 4285 tighten types\n // @ts-ignore\n returnObject[newKey] = otherProperties;\n\n if (legs) {\n flattenNestedLegsErrorsOrWarning(legs, optionId, returnObject, newKey);\n }\n }\n\n return returnObject;\n};\n\n/**\n *\n */\nexport const flattenLegsValuesWithOptionId = (\n optionId: string,\n tcLegs: PartialTCOptionLegValuesWithoutLegsRecord,\n): PartialTCOptionLegValuesWithoutLegsRecord => {\n const values = flattenNestedLegsValuesWithLegIds(tcLegs, optionId) as\n | TypeOfWarnings\n | TypeOfErrors;\n\n return appendLegKeysWithOptionId(optionId, values) as PartialTCOptionLegValuesWithoutLegsRecord;\n};\n\nexport const flattenLegsErrorsOrWarningsWithOptionId = (\n optionId: string,\n tcLegsErrorsOrWarning: TypeOfWarnings | TypeOfErrors,\n): TypeOfWarnings | TypeOfErrors =>\n appendLegKeysWithOptionId(\n optionId,\n flattenNestedLegsErrorsOrWarning(tcLegsErrorsOrWarning, optionId),\n );\n\n/**\n *\n * @param optionId\n * @param legs\n * @returns\n */\nconst appendLegKeysWithOptionId = (\n optionId: string,\n legs: TypeOfWarnings | TypeOfErrors,\n): TypeOfWarnings | TypeOfErrors =>\n Object.entries(legs).reduce((acc, [key, leg]) => {\n acc[`${optionId}/${key}` as keyof (TypeOfWarnings | TypeOfErrors)] = leg;\n\n return acc;\n }, {} as TypeOfWarnings | TypeOfErrors);\n\nconst getChildrenLegIds = (legs: FxOptionLegsPatchedValuesRecords): string[] =>\n Object.entries(legs)\n .filter(([_, leg]) => leg.productName === 'FxOptionMultileg')\n .map(([key, _]) => key);\n\nconst mapPremiumData = (vanillaLeg: IPatch) => {\n const {\n values: { premiumCurrency, premiumTypeString },\n } = vanillaLeg;\n\n if (!premiumCurrency || !premiumTypeString) {\n return undefined;\n }\n\n const displayPriceType: DisplayPriceType = [premiumCurrency, premiumTypeString];\n\n return { displayPriceType };\n};\n\nconst computeNotionalAmount = (\n leg: Partial,\n legId: string,\n state: AppState,\n sl: TradeCaptureFromBackendMetaSelectorSelectors,\n): CurrencyChoice => {\n let notionalCurrency: CurrencyChoice;\n\n if (leg.negotiatedCurrency === undefined && isVanilla(leg)) {\n const { value: notionalCurrencyState } = sl.getOptionVanillaLegNotionalCurrency(state, legId);\n notionalCurrency = notionalCurrencyState;\n } else {\n notionalCurrency = leg.negotiatedCurrency!;\n }\n\n return notionalCurrency;\n};\n\nconst computeIsStrikeInDelta = (leg: Partial): boolean | undefined =>\n leg.strikeString === undefined ? undefined : isDefined(leg.strikeInDelta);\n\ninterface AllFlattenedLegs {\n legsValues: TCOptionLegValuesWithoutLegsRecord;\n legsErrors: {\n [p: string]: TypeOfErrors;\n };\n legsWarnings: {\n [p: string]: TypeOfWarnings;\n };\n}\n\nconst addValuesErrorsAndWarningsToLegs = (\n allFlattenedLegs: AllFlattenedLegs,\n state: AppState,\n sl: TradeCaptureFromBackendMetaSelectorSelectors,\n): FxOptionLegsPatchedValuesRecords => {\n const flattenedLegsWithValuesErrorsAndWarnings = {} as FxOptionLegsPatchedValuesRecords;\n const { legsValues: allLegsValues, legsErrors, legsWarnings } = allFlattenedLegs;\n\n Object.entries(allLegsValues).forEach(([legId, legValues]) => {\n const { productName } = legValues;\n const notionalCurrency = computeNotionalAmount(legValues, legId, state, sl);\n // todo SGEFX 4285 should we type each subleg lvl specifically (i.e should deliveryDate go on FxOptionmultileg leg ?\n\n const errorsForLeg = legsErrors?.[legId] ?? {};\n const warningsForLeg = legsWarnings?.[legId] ?? {};\n\n flattenedLegsWithValuesErrorsAndWarnings[legId] = {\n productName: productName as LegType,\n ...clearUndefined({ legIds: legValues.legIds }),\n errors: mergeLegErrors(errorsForLeg),\n warnings: mergeLegWarnings(warningsForLeg),\n values: mergeLegValues(legValues, notionalCurrency, errorsForLeg),\n };\n });\n\n return flattenedLegsWithValuesErrorsAndWarnings;\n};\n\nconst mergeLegErrors = (errorsForLeg: TypeOfErrors) => ({\n ...clearUndefined({\n expiryDate: fromTcError(errorsForLeg.expiryDate),\n strike: fromTcErrorAsString(errorsForLeg.strike),\n notionalAmount: fromTcError(errorsForLeg.amount1 || errorsForLeg.amount2),\n deliveryDate: fromTcError(errorsForLeg.deliveryDate),\n premiumDate: fromTcError(errorsForLeg.premiumPaymentDate),\n premiumBid: fromTcError(errorsForLeg.premiumPaymentAmountBid),\n premiumAsk: fromTcError(errorsForLeg.premiumPaymentAmountAsk),\n markup: fromTcError(errorsForLeg.markupAmount),\n clientVolAsk: fromTcError(errorsForLeg.clientVolAsk),\n clientVolBid: fromTcError(errorsForLeg.clientVolBid),\n }),\n});\n\nconst mergeLegWarnings = (warningsForLeg: TypeOfWarnings) => ({\n ...clearUndefined({\n expiryDate: fromTcWarning(warningsForLeg.expiryDate),\n strike: fromTcWarningAsString(warningsForLeg.strike),\n notionalAmount: fromTcWarning(warningsForLeg.amount1 || warningsForLeg.amount2),\n deliveryDate: fromTcWarning(warningsForLeg.deliveryDate),\n premiumDate: fromTcWarning(warningsForLeg.premiumPaymentDate),\n premiumBid: fromTcWarning(warningsForLeg.premiumPaymentAmountBid),\n premiumAsk: fromTcWarning(warningsForLeg.premiumPaymentAmountAsk),\n markup: fromTcWarning(warningsForLeg.markupAmount),\n clientVolAsk: fromTcWarning(warningsForLeg.clientVolAsk),\n clientVolBid: fromTcWarning(warningsForLeg.clientVolBid),\n }),\n});\n\nconst mergeLegValues = (\n legValues: Omit<\n TCOptionLegValues & {\n legIds?: string[] | undefined;\n },\n 'legs'\n >,\n notionalCurrency: CurrencyChoice,\n errorsForLeg: TypeOfErrors,\n) => {\n if (legValues.productName !== 'Vanilla') {\n return {};\n }\n\n return clearUndefined({\n currency1: legValues.currency1,\n currency2: legValues.currency2,\n strikeShortcut: legValues.strikeShortcut,\n cashSettlementCurrency: legValues.cashSettlementCurrency,\n possibleCashSettlementCurrencies: legValues.possibleCashSettlementCurrencies,\n fixingReference1: legValues.fixingReference1,\n possibleFixingReferences1: legValues.possibleFixingReferences1,\n side: legValues.side,\n isReadyToPrice: legValues.isReadyToPrice,\n isInFine: legValues.isInFine,\n solvable: legValues.solvable,\n notionalAmount: computeExpectedValue(\n notionalCurrency === 1 ? legValues.amount1 : legValues.amount2,\n previousValue(errorsForLeg.amount1) ?? previousValue(errorsForLeg.amount2),\n ),\n ...mapPremiumType(legValues.premiumType),\n optionType: optionTypeToModel(legValues.type),\n isStrikeInDelta: computeIsStrikeInDelta(legValues),\n expiryDate:\n legValues.expiryDate === null\n ? null\n : dateToModel(legValues.expiryDate) ?? previousValue(errorsForLeg.expiryDate),\n expiryDateTenor: legValues.expiryDateTenor,\n deliveryDate: dateToModel(legValues.deliveryDate),\n deliveryDateTenor: legValues.deliveryDateTenor,\n volatilityAsk: computeExpectedValue(\n legValues.clientVolAsk,\n previousValue(errorsForLeg.premiumPaymentAmountAsk) ??\n previousValue(errorsForLeg.clientVolAsk),\n ),\n volatilityBid: computeExpectedValue(\n legValues.clientVolBid,\n previousValue(errorsForLeg.premiumPaymentAmountBid) ??\n previousValue(errorsForLeg.clientVolBid),\n ),\n marketPlace: legValues.cutOffMarketPlace,\n possibleMarketPlaces: legValues.possibleCutOffMarketPlaces,\n premiumBid: legValues.premiumPaymentAmountBid,\n premiumAsk: legValues.premiumPaymentAmountAsk,\n notionalCurrency: legValues.negotiatedCurrency,\n markup: computeExpectedValue(legValues.markupAmount, previousValue(errorsForLeg.markupAmount)),\n premiumDate: computeExpectedValue(\n dateToModel(legValues.premiumPaymentDate),\n previousValue(errorsForLeg.premiumPaymentDate),\n ),\n premiumDateTenor: dateToModel(legValues.premiumPaymentDateTenor),\n strike: computeExpectedValue(\n legValues.strikeString,\n previousValueAsString(errorsForLeg.strike) ?? previousValue(errorsForLeg.strikeInDelta),\n ),\n possibleSettlementTypes: possibleSettlementTypesToModel(legValues.possibleSettlementTypes),\n settlementType: settlementTypeToModel(legValues.settlementType),\n });\n};\n\nfunction computeExpectedValue(value: any, defaultValue: any) {\n return value !== undefined ? value : defaultValue;\n}\n\n/**\n *\n */\nexport const generatePathFromResponseCreator: MapStateToMetadataHOF<\n FxOptionPatchWithTradeCaptureMetaData,\n TradeCaptureOptionResponseWrapper & WithOptionId,\n AppState,\n TradeCaptureFromBackendMetaSelectorSelectors\n> =\n sl =>\n (state, { changedFields: tcChangedFields, errors, warnings, idVersion, optionId }) => {\n const isTCNewModel = sl.getFeatureToggles(state).optionTradeCaptureNewModel;\n const isMultiHedgesEnabled = sl.getFeatureToggles(state).optionTradeCaptureMultiHedges;\n\n const { legs: tcLegsErrors, ...tcOptionErrors } = errors ?? { legs: {} };\n const { legs: tcLegsWarnings, ...tcOptionWarnings } = warnings ?? {\n legs: {},\n };\n\n if (!isTCNewModel) {\n tcChangedFields = {\n ...tcChangedFields,\n legs: {\n '0': {\n productName: 'FxOptionMultileg',\n legs: tcChangedFields.legs,\n },\n },\n };\n }\n\n const [changedFieldWithoutHedges, hedges] = extractHedgeFromChangedFields(tcChangedFields);\n\n tcChangedFields = changedFieldWithoutHedges;\n\n const legsErrors = isTCNewModel\n ? tcLegsErrors\n : ({\n '0': {\n legs: isDefined(tcLegsErrors) ? clearUndefined(tcLegsErrors) : {},\n },\n } as TypeOfErrors);\n\n const legsWarnings = isTCNewModel\n ? tcLegsWarnings\n : ({\n '0': {\n legs: isDefined(tcLegsWarnings) ? clearUndefined(tcLegsWarnings) : {},\n },\n } as TypeOfWarnings);\n\n const flattenedLegsErrors = flattenLegsErrorsOrWarningsWithOptionId(optionId, legsErrors!);\n const flattenedLegsWarnings = flattenLegsErrorsOrWarningsWithOptionId(optionId, legsWarnings!);\n const flattenedLegsValues = flattenLegsValuesWithOptionId(optionId, tcChangedFields.legs);\n\n // @TODO add metada on flattenLegs\n // legs = addMetadataOnLegs(legs);\n\n const legsWithValues = addValuesErrorsAndWarningsToLegs(\n {\n legsValues: flattenedLegsValues as TCOptionLegValuesWithoutLegsRecord,\n // @ts-ignore\n legsErrors: flattenedLegsErrors,\n // @ts-ignore\n legsWarnings: flattenedLegsWarnings,\n },\n state,\n sl,\n );\n\n const {\n values: optionValues,\n errors: optionErrors,\n warnings: optionWarnings,\n } = mergeOptionValuesWithChanges(state, {\n changes: tcChangedFields,\n tcErrors: tcOptionErrors,\n tcWarnings: tcOptionWarnings,\n });\n\n // @TODO à renomer les 4 functions pour comprendre la logique autour du PremiumDate et ExpiryDate\n const optionGlobalPremiumDateValuesFromLeg =\n getOptionGlobalPremiumDateChangedFieldsFromFirstLeg(legsWithValues);\n\n const optionErrorsFromLeg = getOptionErrorsFromLegErrors(legsWithValues);\n\n const cleanedLegs = removePremiumDateFromLegsError(optionErrorsFromLeg, legsWithValues);\n\n const optionWarningsFromLeg = getOptionWarningsFromLegWarnings(legsWithValues);\n\n const isReadyToPrice =\n tcChangedFields.isReadyToPrice === undefined ? null : tcChangedFields.isReadyToPrice;\n\n const vanillaLegId = getMostNestedKey(Object.keys(cleanedLegs));\n const vanillaLeg = cleanedLegs[vanillaLegId];\n\n const newLocal: FxOptionPatchWithTradeCaptureMetaData = {\n option: {\n [optionId]: {\n idVersion,\n errors: clearUndefined({ ...optionErrors, ...optionErrorsFromLeg }),\n warnings: clearUndefined({ ...optionWarnings, ...optionWarningsFromLeg }),\n values: {\n ...optionValues,\n ...clearUndefined(optionGlobalPremiumDateValuesFromLeg),\n },\n isReadyToPrice,\n isPriceObsolete: tcChangedFields.isPriceObsolete || false,\n isProductObsolete: tcChangedFields.isProductObsolete || false,\n ...mapPremiumData(vanillaLeg),\n legIds: getChildrenLegIds(cleanedLegs),\n },\n },\n hedges: isMultiHedgesEnabled\n ? getHedgesFromTradeCaptureHedges(optionId, hedges, tcLegsErrors, tcLegsWarnings)\n : getHedgesFromTradeCaptureChangedFields(\n optionId,\n tcChangedFields,\n tcOptionErrors,\n tcOptionWarnings,\n ),\n legs: cleanedLegs,\n };\n return newLocal;\n };\n\ntype LegResult = [string, Partial];\ntype HedgeResult = [string, Partial];\n\nfunction extractHedgeFromChangedFields(tcChangedFields: TradeCaptureOptionChanges) {\n const multiLeg = tcChangedFields.legs['0'];\n\n const [legsWithoutHedges, hedges] = Object.entries(multiLeg.legs ?? []).reduce(\n ([legResult, hedgeResult], [legId, leg]) => {\n if (leg.productName === 'FxOptionHedge') {\n hedgeResult.push([legId, leg as Partial]);\n } else {\n legResult.push([legId, leg]);\n }\n\n return [legResult, hedgeResult];\n },\n [[], []] as [LegResult[], HedgeResult[]],\n );\n\n const updatedTcChangedFields: TradeCaptureOptionChanges = {\n ...tcChangedFields,\n legs: { '0': { ...tcChangedFields.legs['0'], legs: Object.fromEntries(legsWithoutHedges) } },\n };\n\n return [updatedTcChangedFields, hedges] as const;\n}\n\n/**\n * Load hedge patch from the multi-leg\n */\nfunction getHedgesFromTradeCaptureHedges(\n optionId: string,\n hedges: HedgeResult[],\n tcErrors: TypeOfErrors | undefined,\n tcWarnings: TypeOfWarnings | undefined,\n): FxOptionHedgesPatchedValuesRecords {\n const toReduxHedge = (\n patch: FxOptionHedgesPatchedValuesRecords,\n [hedgeId, hedge]: HedgeResult,\n ): FxOptionHedgesPatchedValuesRecords => {\n patch[`${optionId}/${hedgeId}`] = {\n values: clearUndefined({\n rate: hedge.price,\n paymentDate: hedge.deliveryDate,\n amount: mapHedgeAmount(hedge.amountInCcy1, hedge.amountInCcy2),\n currency: mapHedgeCurrency(hedge.amountInCcy1, hedge.amountInCcy2), // TODO 4287: if all CcyX are not defined, how to choice it ? Xone team suggests a currency field ?\n }),\n warnings: isDefined(tcWarnings) ? getHedgeWarnings(hedgeId, tcWarnings) : {},\n errors: isDefined(tcErrors) ? getHedgeErrors(hedgeId, tcErrors) : {},\n };\n\n return patch;\n };\n\n return hedges.reduce(toReduxHedge, {} as FxOptionHedgesPatchedValuesRecords);\n}\n\n// TODO 4287: fix the warnings with the multi-leg warnings\nfunction getHedgeWarnings(\n hedgeId: string,\n tcWarnings: TypeOfWarnings,\n): PropertyWarnings {\n return getHedgeWarningsOrErrors>(hedgeId, tcWarnings);\n}\n\n// TODO 4287: fix the warnings with the multi-leg warnings\nfunction getHedgeErrors(hedgeId: string, tcErrors: TypeOfErrors): PropertyErrors {\n return getHedgeWarningsOrErrors>(hedgeId, tcErrors);\n}\n\nfunction getHedgeWarningsOrErrors | PropertyErrors>(\n hedgeId: string,\n /** @todo SGEFX-4288 change this to a real type once xone tradecapture implementation can be checked */\n tcWarningsOrErrors: any, // TypeOfWarnings | TypeOfErrors,\n): PropertyData {\n const hedgeWarningsOrErrors = tcWarningsOrErrors['0']?.legs?.[hedgeId] ?? {};\n\n return Object.entries(hedgeWarningsOrErrors).reduce(\n (warningsOrErrors, [propertyTradeCaptureName, propertyWarnings]: [string, any]) => {\n const propertyName = TRADE_CAPTURE_NAME_TO_LOCAL[propertyTradeCaptureName];\n\n if (isDefined(propertyName)) {\n const [{ id, description, faultyValue }] = propertyWarnings;\n\n // @ts-ignore\n warningsOrErrors[propertyName] = {\n code: `warning-tc-${id}`,\n description,\n faultyValue,\n userNotified: false,\n };\n }\n\n return warningsOrErrors;\n },\n {} as Writeable,\n );\n}\n\ntype Writeable = { -readonly [P in keyof T]: T[P] };\n\nconst TRADE_CAPTURE_NAME_TO_LOCAL: Record = {\n price: 'rate',\n amoutCCy1: 'amount',\n amoutCCy2: 'amount',\n deliveryDate: 'paymentDate',\n};\n\nfunction getHedgesFromTradeCaptureChangedFields(\n optionId: string,\n changes: TradeCaptureOptionChanges,\n tcErrors: TcErrors,\n tcWarnings: TcWarnings,\n): FxOptionHedgesPatchedValuesRecords {\n const hedgePaymentDate = changes.hedgePaymentDate;\n\n const hedgeAmount = mapHedgeAmount(\n changes.hedgeAmountInCcy1,\n changes.hedgeAmountInCcy2,\n extractHedgeNotionalFromCallLeg(changes) ??\n previousValue(tcErrors.hedgeAmountInCcy1) ??\n previousValue(tcErrors.hedgeAmountInCcy2),\n );\n\n const hedgeCurrency =\n mapHedgeCurrency(changes.hedgeAmountInCcy1, changes.hedgeAmountInCcy2) ??\n extractHedgeCurrencyFromCallLeg(changes);\n\n const hedgeRate =\n changes.hedgePrice === null\n ? null\n : changes.hedgePrice ?? extractHedgRateFromCallLeg(changes) ?? previousValue(tcErrors.price);\n\n const hasNoChanges =\n hedgeAmount === undefined &&\n hedgeCurrency === undefined &&\n hedgeRate === undefined &&\n hedgePaymentDate === undefined;\n\n if (hasNoChanges) {\n return {\n [`${optionId}/${PRE_MULTI_HEDGES_HEDGE_ID}`]: {\n values: {},\n errors: {},\n warnings: {},\n },\n };\n }\n\n return {\n [`${optionId}/${PRE_MULTI_HEDGES_HEDGE_ID}`]: {\n values: clearUndefined({\n paymentDate: hedgePaymentDate,\n amount: hedgeAmount,\n currency: hedgeCurrency,\n rate: hedgeRate,\n }),\n warnings: clearUndefined({\n rate: fromTcWarning(tcWarnings.price) || fromTcWarning(tcWarnings.priceString),\n amount:\n fromTcWarning(tcWarnings.amountInCcy1) || fromTcWarning(tcWarnings.amountInCcy1String),\n }),\n errors: clearUndefined({\n rate: fromTcError(tcErrors.price) || fromTcError(tcErrors.priceString),\n\n amount:\n fromTcError(tcErrors.amountInCcy1) ||\n fromTcError(tcErrors.amountInCcy1String) ||\n fromTcError(tcErrors.amountInCcy2) ||\n fromTcError(tcErrors.amountInCcy2String),\n }),\n },\n };\n}\n\n// ---------------------------------------------------------------------------------\n// Private metaSelector\n// ---------------------------------------------------------------------------------\ninterface PrivateMetaSelectorMetaData {\n changes: Partial;\n tcErrors: TcErrors;\n tcWarnings: TcWarnings;\n}\n\n/**\n * hedgeAmount exists only for a typed strategy\n */\nconst mergeOptionValuesWithChanges = (\n _state: Readonly,\n {\n changes,\n tcErrors,\n tcWarnings,\n }: PrivateMetaSelectorMetaData,\n): IPatch => ({\n values: clearUndefined({\n currencyPair:\n changes.currencyPair === null\n ? null\n : changes.currencyPair ?? previousValue(tcErrors.currencyPair),\n hedgeType:\n hedgeTypeToModel(changes.hedgeType) ?? hedgeTypeToModel(previousValue(tcErrors.hedgeType)),\n markupCurrency: changes.markupCurrency,\n premiumDate:\n changes.premiumDate === null\n ? null\n : changes.premiumDate ?? previousValue(tcErrors.premiumPaymentDate),\n premiumDateTenor: changes.premiumDateTenor,\n amountReference:\n changes.amountReference === null\n ? null\n : changes.amountReference ?? previousValue(tcErrors.amountReference),\n amountReferenceCurrency: changes.amountReferenceCurrency,\n amountReferenceIsOverridden: changes.isOverriddenAmountReference,\n }),\n\n errors: clearUndefined({\n currencyPair: fromTcError(tcErrors.currencyPair),\n amountReference: fromTcError(tcErrors.amountReference),\n }),\n\n warnings: clearUndefined({\n currencyPair: fromTcWarning(tcWarnings.currencyPair),\n amountReference: fromTcWarning(tcWarnings.amountReference),\n }),\n});\n\nconst extractHedgeNotionalFromCallLeg = (\n changes: Partial,\n): number | null | undefined => {\n const callLeg = getCallLeg(changes);\n\n if (!isDefined(callLeg)) {\n return undefined;\n }\n\n return mapHedgeAmount(callLeg.hedgeAmountInCcy1, callLeg.hedgeAmountInCcy2, undefined);\n};\n\nconst extractHedgeCurrencyFromCallLeg = (\n changes: Partial,\n): CurrencyChoice | undefined => {\n const callLeg = getCallLeg(changes);\n\n if (!isDefined(callLeg)) {\n return undefined;\n }\n\n return mapHedgeCurrency(callLeg.hedgeAmountInCcy1, callLeg.hedgeAmountInCcy2);\n};\n\nconst extractHedgRateFromCallLeg = (\n changes: Partial,\n): number | null | undefined => {\n const callLeg = getCallLeg(changes);\n\n if (!isDefined(callLeg)) {\n return undefined;\n }\n\n return callLeg.hedgePrice;\n};\n\nconst getCallLeg = (changes: Partial) =>\n (changes.legs?.[0].legs?.[0] as Partial | undefined)?.legs?.call;\n\nfunction hedgeTypeToModel(value: TcHedgeType | null | undefined): HedgeType | undefined {\n if (value === 'None' || value === null) {\n return 'Live';\n }\n return value;\n}\n\nfunction mapHedgeAmount(\n hedgeAmountInCcy1: number | null | undefined,\n hedgeAmountInCcy2: number | null | undefined,\n alternativeValue?: number | null | undefined,\n) {\n // if one amount is null and the other is null or undefined\n return (hedgeAmountInCcy1 === null && !isDefined(hedgeAmountInCcy2)) ||\n (hedgeAmountInCcy2 === null && !isDefined(hedgeAmountInCcy1))\n ? null\n : hedgeAmountInCcy1 ?? hedgeAmountInCcy2 ?? alternativeValue;\n}\n\nfunction mapHedgeCurrency(\n hedgeAmountInCcy1?: number | null,\n hedgeAmountInCcy2?: number | null,\n): CurrencyChoice | undefined {\n if (isDefined(hedgeAmountInCcy1)) {\n return FIRST_CURRENCY;\n } else if (isDefined(hedgeAmountInCcy2)) {\n return SECOND_CURRENCY;\n }\n\n return undefined;\n}\n\nfunction mapPremiumType(\n premiumType: PremiumType | null | undefined,\n): { premiumTypeString: PriceType; premiumCurrency: CurrencyChoice } | undefined {\n switch (premiumType) {\n case 'SmiledVolatility1':\n return { premiumTypeString: 'VOLATILITY', premiumCurrency: 1 };\n case 'SmiledVolatility2':\n return { premiumTypeString: 'VOLATILITY', premiumCurrency: 2 };\n case 'AmountCurrency1':\n return { premiumTypeString: 'AMOUNT', premiumCurrency: 1 };\n case 'AmountCurrency2':\n return { premiumTypeString: 'AMOUNT', premiumCurrency: 2 };\n case 'Pip12':\n return { premiumTypeString: 'PPS', premiumCurrency: 1 };\n case 'Pip21':\n return { premiumTypeString: 'PPS', premiumCurrency: 2 };\n case 'PercentageCurrency1':\n return { premiumTypeString: 'PERCENT', premiumCurrency: 1 };\n case 'PercentageCurrency2':\n return { premiumTypeString: 'PERCENT', premiumCurrency: 2 };\n default:\n return undefined;\n }\n}\n\nconst dateToModel = mapOptional((date: string) => date.substring(0, 10));\n\nconst settlementTypeToModel = mapOptional(convertTradeCaptureSettlementTypeToLegSettlementType);\n\nconst possibleSettlementTypesToModel = mapOptional(\n (possibleSettlementTypes: Possible) => ({\n default: convertTradeCaptureSettlementTypeToLegSettlementType(possibleSettlementTypes.default),\n possible: possibleSettlementTypes.possible.map(\n convertTradeCaptureSettlementTypeToLegSettlementType,\n ),\n }),\n);\n\ninterface OptionChangedFieldsFromLeg {\n premiumDate: string | undefined | null;\n premiumDateTenor: string | undefined | null;\n}\n\nexport function getMostNestedKey(keys: string[]): string {\n let keyWithMaxLength = '';\n keys.forEach(key => {\n if (key.length > keyWithMaxLength.length) {\n keyWithMaxLength = key;\n }\n });\n\n return keyWithMaxLength;\n}\n\nconst getOptionGlobalPremiumDateChangedFieldsFromFirstLeg = (\n legs: FxOptionLegsPatchedValuesRecords,\n): OptionChangedFieldsFromLeg => {\n const keys = Object.keys(legs);\n const anyVanillaLeg = legs[getMostNestedKey(keys)];\n\n const {\n values: { premiumDate, premiumDateTenor },\n } = anyVanillaLeg;\n\n return {\n premiumDate,\n premiumDateTenor,\n };\n};\n\ninterface OptionErrorsFromLegsErrors {\n premiumDate?: PropertyError;\n}\n\nconst getOptionErrorsFromLegErrors = (\n legs: FxOptionLegsPatchedValuesRecords,\n): OptionErrorsFromLegsErrors => {\n const getValue = getOptionErrorOrWarningFromErrorOrWarningLegs('errors', legs);\n\n return { premiumDate: getValue('premiumDate') };\n};\n\ninterface OptionWarningsFromLegsErrors {\n expiryDate?: PropertyWarning;\n}\n\nconst getOptionWarningsFromLegWarnings = (\n legs: FxOptionLegsPatchedValuesRecords,\n): OptionWarningsFromLegsErrors => {\n const getValue = getOptionErrorOrWarningFromErrorOrWarningLegs('warnings', legs);\n\n return {\n expiryDate: getValue('expiryDate'),\n };\n};\n\nconst removePremiumDateFromLegsError = (\n optionErrorFromLeg: OptionErrorsFromLegsErrors,\n legs: FxOptionLegsPatchedValuesRecords,\n): FxOptionLegsPatchedValuesRecords => {\n if (optionErrorFromLeg.premiumDate === undefined) {\n return legs;\n }\n\n return Object.entries(legs).reduce((acc, [legId, leg]) => {\n const { errors, ...data } = leg;\n const { premiumDate, ...cleanedErrors } = errors;\n\n acc[legId] = { ...data, errors: cleanedErrors };\n\n return acc;\n }, {} as FxOptionLegsPatchedValuesRecords);\n};\n\ntype FieldIndex =\n | keyof PropertyErrors\n | keyof PropertyWarnings;\n\nconst getOptionErrorOrWarningFromErrorOrWarningLegs =\n (level: 'errors' | 'warnings', legs: FxOptionLegsPatchedValuesRecords) =>\n (fieldName: FieldIndex): PropertyError | undefined => {\n const errorsOrWarnings = Object.values(legs).map(leg => leg[level]);\n const firstValue = errorsOrWarnings[0] && errorsOrWarnings[0][fieldName];\n // @TODO why this 😫\n const sameValue = errorsOrWarnings.every(\n value => (value[fieldName] && value[fieldName]!.code) === (firstValue && firstValue.code),\n );\n\n return sameValue ? (firstValue as PropertyError) : undefined;\n };\n\nexport const optionTypeToModel = mapOptional(convertTradeCaptureTypeToLegOptionType);\n","import { isDefined, isDefinedAndNonEmpty, isEmpty, isEmptyOrNotDefined } from '@sgme/fp';\nimport { isFxOptionMultileg } from '../../../../state/fxOptions/utilities';\nimport type { FxOptionLegState } from '../../../../state/fxOptions/model/optionsLegs';\nimport { pick } from 'utils/object';\n\nexport interface NestedLegs {\n [key: string]: any;\n legs?: Record;\n}\nexport interface FlattenLegs {\n productName: string;\n legIds?: string[];\n [key: string]: any;\n}\n\n// TODO: update with typings and refacto for human readable\n// TODO: merge flattent and unflatten legs in one place\nexport function unflattenObject(\n allLegs: Record,\n nestedLegs: NestedLegs = {},\n parentId = '',\n flattenLegs: Record = {},\n) {\n const legForIteration = !isEmptyObject(flattenLegs) ? flattenLegs : allLegs;\n\n for (const [legId, leg] of Object.entries(legForIteration)) {\n if (findPath(nestedLegs, legId)) {\n return nestedLegs;\n }\n\n // get values\n const { legIds, ...rest } = leg;\n\n // when we have no legIds on FxOptionLeg, we reinitialise product with one vanilla leg\n if (isFxOptionMultileg(leg as FxOptionLegState) && isEmptyOrNotDefined(leg?.legIds)) {\n nestedLegs[legId] = {\n ...rest,\n legs: {\n [`${legId}/0`]: {\n productName: 'Vanilla',\n },\n },\n };\n return nestedLegs;\n }\n\n // test if children or not\n if (isDefinedAndNonEmpty(legIds)) {\n // I have children\n const pickedLegs = pick(...legIds)(allLegs);\n\n if (parentId) {\n // typedStrategy - stranggle\n nestedLegs[parentId].legs[legId] = { ...rest, legs: {} };\n } else {\n // initiliasation de l'objet FxOptionMultileg\n nestedLegs[legId] = { ...rest, legs: {} };\n }\n\n nestedLegs = unflattenObject(allLegs, nestedLegs, legId, pickedLegs);\n } else if (parentId) {\n // I am the children\n const foundPath = findPath(nestedLegs, parentId);\n const path = foundPath ? `${foundPath}.${parentId}.legs` : `${parentId}.legs`;\n\n nestedLegs = updateValueOnTargetPath(nestedLegs, path.split('.'), {\n [legId]: { ...rest },\n });\n }\n }\n\n return nestedLegs;\n}\n\nexport function isEmptyObject(obj: Record): obj is Record {\n return Object.keys(obj).length === 0;\n}\n\n/**\n * Find path in object from target key\n * Return result as a dot notation of nested path\n * The first matching result is return\n * Ex: for key \"xxx-xxx-xxx/0/0/call\" => \"xxx-xxx-xxx.legs.0.legs.0.legs\"\n * @param ob\n * @param key\n * @returns\n * TODO: update with typings and refacto for human readable\n */\nexport function findPath(ob: T, key: string) {\n const path: string[] = [];\n const keyExists = (obj: string | any[] | T | any): boolean => {\n if (!obj || (typeof obj !== 'object' && !Array.isArray(obj))) {\n return false;\n } else if ({}.hasOwnProperty.call(obj, key)) {\n return true;\n } else if (Array.isArray(obj)) {\n const parentKey = path.length ? path.pop() : '';\n\n for (let i = 0; i < obj.length; i++) {\n path.push(`${parentKey}[${i}]`);\n const result = keyExists(obj[i]);\n if (result) {\n return result;\n }\n path.pop();\n }\n } else {\n for (const k in obj) {\n if ({}.hasOwnProperty.call(obj, k)) {\n path.push(k);\n const result = keyExists(obj[k]);\n if (result) {\n return result;\n }\n path.pop();\n }\n }\n }\n return false;\n };\n\n keyExists(ob);\n\n return path.join('.');\n}\n\n/**\n * Update value on target path for nested object.\n * Allow update deep object with new object\n * @param original\n * @param keys A path split inside an array (Ex: \"xxx-xxx-xxx.legs.0.legs.0.legs\" => [\"xxx-xxx-xxx\",\"legs\",\"0\",\"legs\",\"0\",\"legs\"]) see findPath() before\n * @param value\n * @returns\n */\nexport function updateValueOnTargetPath(\n original: Record,\n keys: string[],\n value: Record,\n): Record {\n if (isEmpty(keys)) {\n return { ...original, ...value };\n }\n const currentKey = keys[0];\n /* is it possible to be an array ?\n if (Array.isArray(original)) {\n return original.map((v, index) =>\n index === currentKey\n ? deepUpdate(v, keys.slice(1), value) // (A)\n : v,\n ); // (B)\n } else */\n if (typeof original === 'object' && isDefined(original)) {\n return Object.fromEntries(\n Object.entries(original).map(keyValuePair => {\n const [nestedKey, nestedValue] = keyValuePair;\n if (nestedKey === currentKey) {\n // Keep going deeper\n return [nestedKey, updateValueOnTargetPath(nestedValue, keys.slice(1), value)]; // (C)\n } else {\n // It's another property string or number\n return keyValuePair; // (D)\n }\n }),\n );\n } else {\n // Primitive value\n return original;\n }\n}\n\n/**\n * Iterate through all property and update target state leg key value\n * This update is done only on targetKeys -> avoid\n * Allow to update \"xxx-xxx-xxx/0/0/call\" => \"call\"\n * Regex is apply to keep only the value on right of the last \"/\" charactere\n * @param obj\n * @param targetKeys\n * @returns\n */\nexport function updateStateLegKeyToTradeCaptureLegKey(\n obj: Record,\n targetKeys: string[],\n): Record {\n const keyValues = Object.keys(obj).map(key => {\n let newKey = key;\n\n if (targetKeys.includes(key)) {\n const execArray = /([^\\/]+)$/.exec(key);\n\n if (isDefinedAndNonEmpty(execArray)) {\n newKey = execArray[0];\n }\n }\n\n const legs = obj[key]?.legs;\n if (isDefined(legs)) {\n obj[key].legs = updateStateLegKeyToTradeCaptureLegKey(legs, targetKeys);\n }\n\n return {\n [newKey]: obj[key],\n };\n });\n\n return Object.assign({}, ...keyValues);\n}\n\n/**\n * Merge two object in one object\n * Obj1 will be overwrite by Obj2 on same keys.\n * Just work on the root keys.\n * If you merge concern a nested key, you need to create the whole object\n * @param obj1\n * @param obj2\n * @returns\n */\nexport function mergeValues(\n obj1: Record,\n obj2: Record,\n): Record {\n const allKeys = [...new Set([...Object.keys(obj1), ...Object.keys(obj2)])];\n\n return allKeys.reduce((acc: Record, key) => {\n acc[key] = {\n ...obj1[key],\n ...obj2[key],\n };\n\n return acc;\n }, {});\n}\n","import type { MapStateToMetadataHOF } from \"typings/redux-utils\";\nimport type {\n FxOptionMultilegModelChanges,\n OptionHedgesStoreModelChanges,\n OptionStoreModelChanges,\n TypedStrategyOptionLegsStoreModelChanges,\n VanillaOptionLegsModelChanges,\n VanillaOptionLegsStoreModelChanges\n} from \"./tradeCaptureModel\";\nimport type { Selectors } from \"state/selectors\";\nimport type { AppState } from \"state/model\";\nimport type {\n IFxOptionTypedStrategyLegInputsWithSubLegs,\n OptionPropertyChanged,\n OptionRemoveGroup,\n OptionStrategyTypeChanged,\n OptionTileOpenFromBlotter,\n OptionTileOpenFromBlotterEpic,\n OptionTileReset,\n OptionTileRestoreEpic\n} from \"state/fxOptions/actions/optionProduct\";\n\nimport type {\n OptionLegAdded,\n OptionLegDuplicated,\n OptionLegPropertyChanged,\n OptionLegRemoved,\n OptionLegsImported,\n OptionLegsPremiumPinToggled,\n OptionLegsPropertyChanged\n} from \"state/fxOptions/actions/optionLegs\";\n\nimport type { OptionSolvingWanted, OptionStrikeSolved } from \"state/fxOptions/actions/optionSolving\";\n\nimport type { OptionLegSavedTile, OptionSavedTile, OptionVanillaLegSavedTile } from \"api/workspaceService/model\";\nimport { fieldData } from \"utils/fieldSelectors\";\nimport type {\n FxOptionLegInputs,\n IFxOptionTypedStrategyLegInputs,\n IFxVanillaLegInputs,\n LegType\n} from \"state/fxOptions/model/optionsLegs\";\nimport { mergeValues, unflattenObject, updateStateLegKeyToTradeCaptureLegKey } from \"./utils/patchBuilder\";\nimport type { OptionType, PriceType } from \"state/fxOptions/fxOptionsModel\";\nimport { addTileIdToLegKey, updateLegIdsWithNewTileId } from \"../../../state/fxOptions/utilities\";\nimport { clearUndefined } from \"../../../utils/clearUndefined\";\nimport { getOptionLegInputs } from \"../../../state/share/productMappers/optionMappers\";\nimport { isDefined, isDefinedAndNonEmpty, isEmpty } from \"@sgme/fp\";\nimport type { IFxHedgeInputs } from \"state/fxOptions/model/optionHedges\";\nimport type { OptionHedgePropertyChanged } from \"../../../state/fxOptions/actions\";\nimport type { CurrencyChoice } from \"state/share/productModel/litterals\";\nimport { FIRST_CURRENCY } from \"state/share/productModel/litterals\";\n\ntype TradeCapturePatchBuilderFromActionSelectorsKeys =\n | 'getUserPreferenceData'\n | 'getLegIdsOfMultilegOfOption'\n | 'getOptionCurrencyPair'\n | 'getOptionNextLegId'\n | 'getOptionLegProductName'\n | 'getOptionVanillaLegMarketPlace'\n | 'getOptionVanillaLegSettlementType'\n | 'getOptionVanillaLegCashSettlementCurrency'\n | 'getOptionVanillaLegPremiumTypeString'\n | 'getOptionVanillaLegPremiumCurrency'\n | 'getOptionPremiumDateTenor'\n | 'getOptionPremiumDate'\n | 'getDefaultPriceTypeForOption'\n | 'getOptionVanillaLegExpiry'\n | 'getOptionRfsStreamId'\n | 'getOptionLastStreamId'\n | 'getOptionDisplayPriceType'\n | 'getOptionVanillaLegPremiumBid'\n | 'getOptionVanillaLegPremiumAsk'\n | 'getProductNameAndSublegIdsOfAllLegsOfOptionById'\n | 'getOptionLegPremiumFromStream'\n | 'getFxOptionMultilegOfOption'\n | 'getAllVanillaLegsOfOptionWithId'\n | 'getFirstVanillaLegIdOfOption'\n | 'getOptionVanillaLegMarkup'\n | 'getOptionVanillaLegFixingReference1'\n | 'getOptionVanillaLegPremiumDate'\n | 'getOptionVanillaLegDelivery'\n | 'getOptionVanillaLegVolatilityBid'\n | 'getOptionVanillaLegVolatilityAsk'\n | 'getOptionVanillaLegExpiryTenor'\n | 'getOptionVanillaLegSide'\n | 'getOptionVanillaLegStrike'\n | 'getOptionVanillaLegNotional'\n | 'getOptionVanillaLegNotionalCurrency'\n | 'getOptionVanillaLegOptionType'\n | 'getFeatureToggles';\n\nexport type TradeCapturePatchBuilderFromActionSelectors = Pick<\n Selectors,\n TradeCapturePatchBuilderFromActionSelectorsKeys\n>;\n\ntype MapStateToActionChanges = MapStateToMetadataHOF<\n [string, OptionStoreModelChanges],\n TAction,\n AppState,\n TradeCapturePatchBuilderFromActionSelectors\n>;\ntype MapStateToActionArrayChanges = MapStateToMetadataHOF<\n ReadonlyArray<[string, OptionStoreModelChanges]>,\n TAction,\n AppState,\n TradeCapturePatchBuilderFromActionSelectors\n>;\n\nexport const legChangedToPatchWith: MapStateToActionChanges =\n sl => (state, action) => {\n const legPatch = {\n [`${action.legId}`]: action.patch,\n };\n\n const patch: OptionStoreModelChanges = {\n legs: patchLegsFromAction(sl, state, action.optionId, legPatch),\n hedges: {},\n };\n\n return [action.optionId, patch];\n };\n\nexport const legsChangedToPatchWith: MapStateToActionChanges =\n sl => (state, action) => {\n const patch: OptionStoreModelChanges = {\n legs: patchLegsFromAction(sl, state, action.optionId, action.patch),\n hedges: {},\n };\n\n return [action.optionId, patch];\n };\n\nexport const optionStrikeSolvedToPatchWith: MapStateToActionChanges =\n sl => (state, action) => {\n const legsPatch = action.strikes.reduce((acc, [legId, strike]) => {\n if (strike === null) {\n return acc;\n }\n\n acc[legId] = {\n strike,\n premiumBid: '',\n premiumAsk: '',\n };\n\n return acc;\n }, {} as Record>);\n\n const patch: OptionStoreModelChanges = {\n legs: patchLegsFromAction(sl, state, action.optionId, legsPatch),\n hedges: {},\n };\n\n return [action.optionId, patch];\n };\n\nexport const optionPropertyChangedToPatchWith: MapStateToActionChanges =\n sl => (state, action) => {\n const { hedges, legs, ...otherPatch } = action.patch;\n\n const patch: OptionStoreModelChanges = {\n ...otherPatch,\n // TODO Handle action.patch.legs exists, see fxOptionMultileg doc => section warnings\n legs: patchLegsFromAction(sl, state, action.optionId, legs),\n hedges: patchHedgesFromAction(hedges),\n };\n\n return [action.optionId, patch];\n };\n\nexport const optionHedgePropertyChangedToPatchWith: MapStateToActionChanges<\n OptionHedgePropertyChanged\n> = sl => (state, action) => {\n const isMultiHedgesEnabled = sl.getFeatureToggles(state).optionTradeCaptureMultiHedges;\n const [optionId, hedgeId] = action.hedgeId.split('/');\n\n const patch: OptionStoreModelChanges = {\n ...(isMultiHedgesEnabled ? {} : getHedgeOptionPatch(action.patch)),\n // TODO Handle action.patch.legs exists, see fxOptionMultileg doc => section warnings\n legs: patchLegsFromAction(sl, state, optionId, {}),\n hedges: isMultiHedgesEnabled ? getHedgePatch(hedgeId, action.patch) : {},\n };\n return [optionId, patch];\n};\n\nconst getHedgeOptionPatch = (hedges: Partial) => {\n const hedgePatch = clearUndefined({\n hedgeNotional: hedges.amount,\n hedgeNotionalCurrency: hedges.currency,\n hedgePrice: hedges.rate,\n });\n\n return hedgePatch;\n};\nconst getHedgePatch = (\n hedgeId: string,\n hedge: Partial,\n): OptionHedgesStoreModelChanges => {\n const hedgePatch = {\n productName: 'FxOptionHedge' as const,\n currentCurrency: hedge.currency as CurrencyChoice, // TODO 4288 FIRST_CURRENCY as CurrencyChoice,\n ...clearUndefined(hedge),\n };\n\n return { [hedgeId]: hedgePatch };\n};\n\nexport const optionStrategyTypeChangedToPatchWith: MapStateToActionChanges<\n OptionStrategyTypeChanged\n> = sl => (state, action) => {\n let [firstLegId] = sl.getLegIdsOfMultilegOfOption(state, action.optionId);\n const { defaultHedgeType } = sl.getUserPreferenceData(state);\n const defaultPriceType = sl.getDefaultPriceTypeForOption(state, action.optionId);\n\n const execArray = /([^\\/]+)$/.exec(firstLegId);\n if (isDefinedAndNonEmpty(execArray)) {\n firstLegId = execArray[0];\n }\n\n const legs =\n action.strategyType === 'Vanilla'\n ? createOptionStrategyTypeChangedPathVanillaLeg(\n firstLegId,\n action.optionType,\n defaultPriceType,\n )\n : createOptionStrategyTypeChangedPathTypedStrategyLegs(\n firstLegId,\n action.strategyType,\n defaultPriceType,\n );\n\n const patch: OptionStoreModelChanges = {\n currencyPair: fieldData(sl.getOptionCurrencyPair(state, action.optionId)).data,\n hedgeType: defaultHedgeType,\n legs: {\n ['0']: {\n productName: 'FxOptionMultileg',\n legs,\n },\n },\n hedges: {},\n };\n\n return [action.optionId, patch];\n};\n\nconst createDefaultVanillaLeg = (defaultPriceType: PriceType): VanillaOptionLegsModelChanges =>\n ({\n productName: 'Vanilla',\n premiumTypeString: defaultPriceType,\n premiumCurrency: 1,\n } as const);\n\nconst createOptionStrategyTypeChangedPathVanillaLeg = (\n firstLegId: string,\n optionType: OptionType | undefined,\n defaultPriceType: PriceType,\n): VanillaOptionLegsStoreModelChanges => ({\n [firstLegId]: {\n ...createDefaultVanillaLeg(defaultPriceType),\n optionType,\n },\n});\n\nconst createOptionStrategyTypeChangedPathTypedStrategyLegs = (\n firstLegId: string,\n strategyType: Exclude,\n defaultPriceType: PriceType,\n): TypedStrategyOptionLegsStoreModelChanges => {\n const defaultVanillaLeg = createDefaultVanillaLeg(defaultPriceType);\n\n return {\n [firstLegId]: {\n productName: strategyType,\n legs: {\n call: { ...defaultVanillaLeg },\n put: { ...defaultVanillaLeg },\n },\n },\n };\n};\n\nexport const legRemovedToPatchWith: MapStateToActionChanges =\n sl => (state, action) => {\n const { value: currencyPair } = sl.getOptionCurrencyPair(state, action.optionId);\n const fxOptionMultileg = sl.getFxOptionMultilegOfOption(state, action.optionId);\n\n const legIdsPatch = {\n [`${action.optionId}/0`]: {\n legIds: [...fxOptionMultileg.legIds.filter(legId => legId !== action.legId)],\n },\n };\n\n const patch: OptionStoreModelChanges = {\n currencyPair,\n legs: patchLegsFromAction(sl, state, action.optionId, legIdsPatch),\n hedges: {},\n };\n\n return [action.optionId, patch];\n };\n\nexport const legGroupRemovedToPatchWith: MapStateToActionChanges =\n sl =>\n (state, { quoteId: optionId, expiry }) => {\n const { value: currencyPair } = sl.getOptionCurrencyPair(state, optionId);\n const fxOptionMultileg = sl.getFxOptionMultilegOfOption(state, optionId);\n\n const legIdsPatch = {\n [`${optionId}/0`]: {\n legIds: [\n ...fxOptionMultileg.legIds.filter(\n legId => (sl.getOptionVanillaLegExpiry(state, legId).value ?? 'nodate') !== expiry,\n ),\n ],\n },\n };\n\n const patch: OptionStoreModelChanges = {\n currencyPair,\n legs: patchLegsFromAction(sl, state, optionId, legIdsPatch),\n hedges: {},\n };\n\n return [optionId, patch];\n };\n\nexport const legsImportedToPatchWith: MapStateToActionChanges =\n sl =>\n (state, action): [optionId: string, changes: OptionStoreModelChanges] => {\n const { value: currencyPair } = sl.getOptionCurrencyPair(state, action.optionId);\n\n const patchLegs = action.patch.legs ?? {};\n\n const importedLegIds: string[] = Object.keys(patchLegs);\n\n const toPatchLegId = (id: string) => `${action.optionId}/0/${id}`;\n\n const multileg = {\n [`${action.optionId}/0`]: {\n productName: 'FxOptionMultileg',\n\n legIds: importedLegIds.map(toPatchLegId),\n },\n };\n\n const allImportedLegs = importedLegIds.reduce((legs, id) => {\n const importedLeg = patchLegs[id] as Partial;\n\n legs[toPatchLegId(id)] = clearUndefined({\n productName: 'Vanilla',\n\n deliveryDate: importedLeg.deliveryDate,\n expiryDate: importedLeg.expiryDate,\n notionalAmount: importedLeg.notionalAmount,\n notionalCurrency: importedLeg.notionalCurrency,\n optionType: importedLeg.optionType,\n side: importedLeg.side,\n strike: importedLeg.strike,\n });\n\n return legs;\n }, multileg as Record>);\n\n const patch: OptionStoreModelChanges = {\n currencyPair,\n legs: patchLegsFromAction(sl, state, action.optionId, allImportedLegs),\n hedges: {},\n };\n\n return [action.optionId, patch];\n };\n\nexport const legsPremiumPinToggledToPatchWith: MapStateToActionChanges<\n OptionLegsPremiumPinToggled\n> =\n sl =>\n (state, { quoteId: optionId }) => {\n function isLegPinned(legId: string) {\n const premiumBid =\n fieldData(sl.getOptionVanillaLegPremiumBid(state, legId)).data?.toString() ?? null;\n const premiumAsk =\n fieldData(sl.getOptionVanillaLegPremiumAsk(state, legId)).data?.toString() ?? null;\n return premiumBid !== null || premiumAsk !== null;\n }\n\n const vanillaLegs = sl.getAllVanillaLegsOfOptionWithId(state, optionId);\n const vanillaLegsIds = vanillaLegs.map(leg => leg[0]);\n\n const streamId =\n sl.getOptionRfsStreamId(state, optionId) ?? sl.getOptionLastStreamId(state, optionId);\n const priceType = sl.getOptionDisplayPriceType(state, optionId);\n\n const allPinned = vanillaLegsIds.every(legId => isLegPinned(legId));\n\n const pinChanges: Record<\n string,\n Partial | IFxOptionTypedStrategyLegInputsWithSubLegs\n > = {};\n\n vanillaLegsIds.forEach(legId => {\n if (allPinned) {\n pinChanges[legId] = { productName: 'Vanilla', premiumBid: null, premiumAsk: null };\n } else if (!isLegPinned(legId)) {\n const premium = sl.getOptionLegPremiumFromStream(state, legId, streamId!, priceType);\n pinChanges[legId] = {\n productName: 'Vanilla',\n premiumBid: premium?.bid,\n premiumAsk: premium?.ask,\n };\n }\n });\n\n const patch: OptionStoreModelChanges = {\n legs: { ...patchLegsFromAction(sl, state, optionId, pinChanges) },\n hedges: {},\n };\n\n return [optionId, patch];\n };\n\nexport const legAddToPatchWith: MapStateToActionChanges =\n sl =>\n (state, { optionId }) => {\n const fxOptionMultileg = sl.getFxOptionMultilegOfOption(state, optionId);\n const firstLegId = sl.getFirstVanillaLegIdOfOption(state, optionId);\n const { value: currencyPair } = sl.getOptionCurrencyPair(state, optionId);\n const legIdToAdd = sl.getOptionNextLegId(state, optionId);\n const premiumDate = sl.getOptionPremiumDate(state, optionId).value;\n const premiumDateTenor = sl.getOptionPremiumDateTenor(state, optionId).value;\n const marketPlace = sl.getOptionVanillaLegMarketPlace(state, firstLegId).value;\n const premiumTypeString = sl.getOptionVanillaLegPremiumTypeString(state, firstLegId).value;\n const premiumCurrency = sl.getOptionVanillaLegPremiumCurrency(state, firstLegId).value;\n const settlementType = sl.getOptionVanillaLegSettlementType(state, firstLegId).value;\n let cashSettlementCurrency;\n if (settlementType === 'Cash') {\n cashSettlementCurrency = sl.getOptionVanillaLegCashSettlementCurrency(\n state,\n firstLegId,\n ).value;\n }\n\n const legToAdd: Record | IFxOptionTypedStrategyLegInputs> = {\n [`${optionId}/0`]: {\n legIds: [...fxOptionMultileg.legIds, `${optionId}/0/${legIdToAdd}`],\n },\n [`${optionId}/0/${legIdToAdd}`]: {\n productName: 'Vanilla',\n marketPlace,\n settlementType,\n cashSettlementCurrency,\n premiumTypeString,\n premiumCurrency,\n },\n };\n\n const legs = patchLegsFromAction(sl, state, optionId, legToAdd);\n\n const patch: OptionStoreModelChanges = {\n currencyPair,\n premiumDate,\n premiumDateTenor,\n legs,\n hedges: {},\n };\n\n return [optionId, patch];\n };\n\nexport const legDuplicateToPatchWith: MapStateToActionChanges =\n sl =>\n (state, { optionId, legId }) => {\n const fxOptionMultileg = sl.getFxOptionMultilegOfOption(state, optionId);\n const currencyPair = sl.getOptionCurrencyPair(state, optionId).value;\n const legPatch = getOptionLegInputs(sl as Selectors, state, legId);\n const legIdToAdd = sl.getOptionNextLegId(state, optionId);\n const premiumDate = sl.getOptionPremiumDate(state, optionId).value;\n const premiumDateTenor = sl.getOptionPremiumDateTenor(state, optionId).value;\n\n const legToAdd: Record | IFxOptionTypedStrategyLegInputs> = {\n [`${optionId}/0`]: {\n legIds: [...fxOptionMultileg.legIds, `${optionId}/0/${legIdToAdd}`],\n },\n [`${optionId}/0/${legIdToAdd}`]: {\n productName: 'Vanilla',\n ...legPatch,\n },\n };\n\n const legs = patchLegsFromAction(sl, state, optionId, legToAdd);\n\n const patch: OptionStoreModelChanges = {\n currencyPair,\n premiumDate,\n premiumDateTenor,\n legs,\n hedges: {},\n };\n\n return [optionId, patch];\n };\n\n\n\nexport const optionTileRestoreToPatchWith: MapStateToActionArrayChanges =\n sl => (state, action) =>\n Object.entries(action.tiles).map(([tileId, tile]) => {\n const updatedLegs = Object.entries(tile.legs).reduce((acc, [legId, leg]) => {\n // legId with optionId/tileId are needed to properly build the patch later on\n if (isVanillaSavedLeg(leg!)) {\n acc[addTileIdToLegKey(tileId, legId)] = mapSavedVanillaLeg(\n leg,\n tile,\n ) as OptionVanillaLegSavedTile;\n } else {\n acc[addTileIdToLegKey(tileId, legId)] = {\n ...leg!,\n legIds: updateLegIdsWithNewTileId(tileId, leg!.legIds),\n };\n }\n\n return acc;\n }, {} as Record);\n\n const updatedHedges = Object.entries(tile.hedges).reduce((acc, [hedgeId, hedge]) => {\n acc[`${hedgeId}`] = {\n productName: 'FxOptionHedge',\n amount: isDefined(hedge?.amount) ? String(hedge?.amount) : undefined,\n currency: hedge?.currency ?? FIRST_CURRENCY,\n rate: isDefined(hedge?.rate) ? String(hedge?.rate) : undefined,\n };\n\n return acc;\n }, {} as OptionHedgesStoreModelChanges)\n\n const patch: OptionStoreModelChanges = {\n currencyPair: tile.currencyPair,\n hedgeType: tile.hedgeType,\n premiumDateTenor: tile.premiumDateTenor,\n premiumDate: tile.premiumDate,\n legs: patchLegsFromAction(sl, state, tileId, updatedLegs),\n hedges: updatedHedges,\n };\n\n return [tileId, patch];\n });\n\nfunction mapSavedVanillaLeg(\n leg: OptionVanillaLegSavedTile,\n { priceType, priceTypeCcy }: Pick,\n): Partial {\n return {\n productName: 'Vanilla',\n side: leg.side,\n optionType: leg.putOrCall,\n premiumTypeString: priceType,\n premiumCurrency: priceTypeCcy,\n marketPlace: leg.marketPlace,\n settlementType: leg.settlementType,\n expiryDate: leg.expiryDate,\n expiryDateTenor: leg.expiryDateTenor,\n strike: leg.strikePrice,\n notionalAmount: leg.notionalAmount?.toString() ?? undefined,\n notionalCurrency: leg.notionalCurrency,\n };\n}\n\nexport function optionTileOpenFromBlotterToPatch({\n tileId,\n tile,\n}: OptionTileOpenFromBlotterEpic): [string, OptionStoreModelChanges] {\n const patch: OptionStoreModelChanges = {\n currencyPair: tile.currencyPair,\n hedgeType: tile.hedgeType,\n legs: mapBlotterOptionLegs(tile),\n hedges: {},\n };\n\n return [tileId, patch];\n}\n\nconst mapLegValues = (tile: Partial): Partial => ({\n productName: 'Vanilla',\n premiumTypeString: tile.priceType,\n premiumCurrency: tile.premiumCurrency,\n side: tile.side,\n optionType: tile.optionType,\n expiryDate: tile.expiryDate,\n strike: tile.strike,\n notionalAmount: tile.notionalAmount,\n notionalCurrency: tile.notionalCurrency,\n deliveryDate: tile.deliveryDate,\n settlementType: tile.settlementType,\n marketPlace: tile.settlementPlace,\n premiumDate: tile.premiumDate,\n});\n\n/**\n * Function that takes an array of legs from blotter and wrap them with the right leg structure for TradeCapture\n * @param tile\n */\nfunction mapBlotterOptionLegs(\n tile: OptionTileOpenFromBlotter,\n): Record {\n let legs: Record>;\n\n if (isEmpty(tile.legs)) {\n legs = { ['0']: mapLegValues(tile) };\n } else {\n legs = tile.legs.reduce((acc, leg, index) => {\n const legId =\n tile.strategyType === 'Vanilla' || tile.strategyType === 'Strategy'\n ? `${index}`\n : `${leg.optionType?.toLowerCase()}`;\n\n acc[`${legId}`] = mapLegValues({\n ...leg,\n priceType: tile.priceType,\n premiumCurrency: tile.premiumCurrency,\n });\n\n return acc;\n }, {} as Record>);\n }\n\n return {\n [`0`]: {\n productName: 'FxOptionMultileg',\n legs:\n tile.strategyType === 'Vanilla' || tile.strategyType === 'Strategy'\n ? legs\n : {\n ['0']: {\n productName: tile.strategyType,\n legs,\n },\n },\n } as FxOptionMultilegModelChanges,\n };\n}\n\nexport const optionTileResetToPatchWith: MapStateToActionChanges =\n sl =>\n (state, { quoteId, currencyPair }) => {\n const { defaultHedgeType } = sl.getUserPreferenceData(state);\n const defaultPriceType = sl.getDefaultPriceTypeForOption(state, quoteId);\n\n const patch: OptionStoreModelChanges = {\n currencyPair,\n hedgeType: defaultHedgeType,\n hedges: {},\n legs: patchLegsFromAction(sl, state, quoteId, {\n defaultLeg: {\n premiumTypeString: defaultPriceType,\n premiumCurrency: 1,\n },\n }),\n };\n\n return [quoteId, patch];\n };\n\nexport const optionSolvingWantedToPatchWith: MapStateToActionChanges =\n sl => (state, action) => {\n const existingLegs = patchLegsFromAction(sl, state, action.quoteId, {\n [action.legId]: { productName: 'Vanilla', strike: '', premiumAsk: null, premiumBid: null },\n });\n const patch: OptionStoreModelChanges = {\n legs: existingLegs,\n hedges: {},\n };\n\n return [action.quoteId, patch];\n };\n\n/**\n * Return a nested object that TC is waiting for a request\n * Contain the new value of the option/legs\n * @param sl\n * @param state\n * @param optionId\n * @param patch\n * @returns\n */\nexport function patchLegsFromAction(\n sl: TradeCapturePatchBuilderFromActionSelectors,\n state: AppState,\n optionId: string,\n patch: Record | IFxOptionTypedStrategyLegInputs> = {},\n) {\n // Get Record of legs of target optionId\n const legsWithId = sl.getProductNameAndSublegIdsOfAllLegsOfOptionById(state.fxOptions, optionId);\n\n // Update legs with a patch of one or more legs - Patch is Record too\n const patchedLegs = mergeValues(legsWithId, patch);\n\n // Convert Record to a Nested object - TC is waiting for a nested object\n const unflattenLegs = unflattenObject(patchedLegs);\n\n const legIds = Object.keys(patchedLegs);\n\n // Remove naming key to keep only the last part (after the last \"/\")\n // Ex: \"xxx-xxx-xxx/0/0/call\" => \"call\"\n return updateStateLegKeyToTradeCaptureLegKey(unflattenLegs, legIds);\n}\n\nexport function patchHedgesFromAction(\n patch: Record> = {},\n): OptionHedgesStoreModelChanges {\n return Object.entries(patch).reduce((result, [hedgeId, hedge]) => {\n const [_, unflattenHedgeId ] = hedgeId.split(('/'));\n\n result[unflattenHedgeId] = {\n productName: 'FxOptionHedge',\n ...hedge\n };\n\n return result;\n }, {} as OptionHedgesStoreModelChanges)\n}\n\nfunction isVanillaSavedLeg(leg: OptionLegSavedTile): leg is OptionVanillaLegSavedTile {\n return leg.productName === 'Vanilla';\n}\n","import type { IFxHedgeInputs } from 'state/fxOptions/model/optionHedges';\nimport type { IFxVanillaLegInputs, TypedStrategyLegType } from 'state/fxOptions/model/optionsLegs';\nimport type { IFxOptionInputs } from '../../../state/fxOptions/model/optionProduct';\nimport type { CurrencyChoice } from '../../../state/share/productModel/litterals';\n\n// ████████╗ ██████╗ ████████╗ ██████╗ ██████╗ █████╗ ██████╗██╗ ██╗███████╗███╗ ██╗██████╗\n// ╚══██╔══╝██╔════╝ ╚══██╔══╝██╔═══██╗ ██╔══██╗██╔══██╗██╔════╝██║ ██╔╝██╔════╝████╗ ██║██╔══██╗\n// ██║ ██║ ██║ ██║ ██║ ██████╔╝███████║██║ █████╔╝ █████╗ ██╔██╗ ██║██║ ██║\n// ██║ ██║ ██║ ██║ ██║ ██╔══██╗██╔══██║██║ ██╔═██╗ ██╔══╝ ██║╚██╗██║██║ ██║\n// ██║ ╚██████╗ ██║ ╚██████╔╝ ██████╔╝██║ ██║╚██████╗██║ ██╗███████╗██║ ╚████║██████╔╝\n// ╚═╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═══╝╚═════╝\n\nexport type TradeCaptureToBackendMetadata = {\n patch: OptionStoreModelChanges;\n} & WithOptionId;\n\n// ██████╗ ██████╗ ████████╗██╗ ██████╗ ███╗ ██╗\n// ██╔═══██╗██╔══██╗╚══██╔══╝██║██╔═══██╗████╗ ██║\n// ██║ ██║██████╔╝ ██║ ██║██║ ██║██╔██╗ ██║\n// ██║ ██║██╔═══╝ ██║ ██║██║ ██║██║╚██╗██║\n// ╚██████╔╝██║ ██║ ██║╚██████╔╝██║ ╚████║\n// ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝\n\nexport type OptionStoreModelChanges = Partial & {\n legs: Record;\n hedges: OptionHedgesStoreModelChanges;\n // TODO 4287: move into FxOptionMultilegModelChanges legs after the activation of multi-hedges\n hedgePaymentDate?: string | null;\n hedgeNotional?: string | null;\n hedgeNotionalCurrency?: CurrencyChoice;\n hedgePrice?: string | null;\n};\n\n// ██████╗ ██████╗ ████████╗██╗ ██████╗ ███╗ ██╗ ███╗ ███╗██╗ ██╗██╗ ████████╗██╗██╗ ███████╗ ██████╗\n// ██╔═══██╗██╔══██╗╚══██╔══╝██║██╔═══██╗████╗ ██║ ████╗ ████║██║ ██║██║ ╚══██╔══╝██║██║ ██╔════╝██╔════╝\n// ██║ ██║██████╔╝ ██║ ██║██║ ██║██╔██╗ ██║ ██╔████╔██║██║ ██║██║ ██║ ██║██║ █████╗ ██║ ███╗\n// ██║ ██║██╔═══╝ ██║ ██║██║ ██║██║╚██╗██║ ██║╚██╔╝██║██║ ██║██║ ██║ ██║██║ ██╔══╝ ██║ ██║\n// ╚██████╔╝██║ ██║ ██║╚██████╔╝██║ ╚████║ ██║ ╚═╝ ██║╚██████╔╝███████╗██║ ██║███████╗███████╗╚██████╔╝\n// ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚══════╝╚══════╝ ╚═════╝\n\nexport interface FxOptionMultilegModelChanges {\n productName: 'FxOptionMultileg';\n legs: TypedStrategyOptionLegsStoreModelChanges | VanillaOptionLegsStoreModelChanges;\n}\n\n// ████████╗██╗ ██╗██████╗ ███████╗██████╗ ███████╗████████╗██████╗ █████╗ ████████╗███████╗ ██████╗██╗ ██╗\n// ╚══██╔══╝╚██╗ ██╔╝██╔══██╗██╔════╝██╔══██╗ ██╔════╝╚══██╔══╝██╔══██╗██╔══██╗╚══██╔══╝██╔════╝██╔════╝╚██╗ ██╔╝\n// ██║ ╚████╔╝ ██████╔╝█████╗ ██║ ██║ ███████╗ ██║ ██████╔╝███████║ ██║ █████╗ ██║ ███╗╚████╔╝\n// ██║ ╚██╔╝ ██╔═══╝ ██╔══╝ ██║ ██║ ╚════██║ ██║ ██╔══██╗██╔══██║ ██║ ██╔══╝ ██║ ██║ ╚██╔╝\n// ██║ ██║ ██║ ███████╗██████╔╝ ███████║ ██║ ██║ ██║██║ ██║ ██║ ███████╗╚██████╔╝ ██║\n// ╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═════╝ ╚══════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚══════╝ ╚═════╝ ╚═╝\n\nexport type TypedStrategyOptionLegsStoreModelChanges = Record<\n string,\n TypedStrategyOptionLegsModelChanges\n>;\n\nexport interface TypedStrategyOptionLegsModelChanges {\n productName: TypedStrategyLegType;\n legs: VanillaOptionLegsStoreModelChanges;\n}\n\n// ██╗ ██╗ █████╗ ███╗ ██╗██╗██╗ ██╗ █████╗\n// ██║ ██║██╔══██╗████╗ ██║██║██║ ██║ ██╔══██╗\n// ██║ ██║███████║██╔██╗ ██║██║██║ ██║ ███████║\n// ╚██╗ ██╔╝██╔══██║██║╚██╗██║██║██║ ██║ ██╔══██║\n// ╚████╔╝ ██║ ██║██║ ╚████║██║███████╗███████╗██║ ██║\n// ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝╚══════╝╚══════╝╚═╝ ╚═╝\n\nexport type VanillaOptionLegsStoreModelChanges = Record;\n\nexport type VanillaOptionLegsModelChanges = Partial & {\n productName: 'Vanilla';\n // It's mandatory to check of the leg strategy\n};\n\nexport function isVanilla(\n leg: TypedStrategyOptionLegsModelChanges | VanillaOptionLegsModelChanges,\n): leg is VanillaOptionLegsModelChanges {\n return leg.productName === 'Vanilla';\n}\n\n// ██╗ ██╗███████╗██████╗ ██████╗ ███████╗\n// ██║ ██║██╔════╝██╔══██╗██╔════╝ ██╔════╝\n// ███████║█████╗ ██║ ██║██║ ███╗█████╗\n// ██╔══██║██╔══╝ ██║ ██║██║ ██║██╔══╝\n// ██║ ██║███████╗██████╔╝╚██████╔╝███████╗\n// ╚═╝ ╚═╝╚══════╝╚═════╝ ╚═════╝ ╚══════╝\n//\n\nexport type OptionHedgesStoreModelChanges = Record;\n\nexport type OptionHedgesModelChanges = Partial & {\n productName: 'FxOptionHedge';\n};\n\n// ███╗ ███╗██╗███████╗ ██████╗███████╗██╗ ██╗ █████╗ ███╗ ██╗███████╗ ██████╗ ██╗ ██╗███████╗\n// ████╗ ████║██║██╔════╝██╔════╝██╔════╝██║ ██║ ██╔══██╗████╗ ██║██╔════╝██╔═══██╗██║ ██║██╔════╝\n// ██╔████╔██║██║███████╗██║ █████╗ ██║ ██║ ███████║██╔██╗ ██║█████╗ ██║ ██║██║ ██║███████╗\n// ██║╚██╔╝██║██║╚════██║██║ ██╔══╝ ██║ ██║ ██╔══██║██║╚██╗██║██╔══╝ ██║ ██║██║ ██║╚════██║\n// ██║ ╚═╝ ██║██║███████║╚██████╗███████╗███████╗███████╗██║ ██║██║ ╚████║███████╗╚██████╔╝╚██████╔╝███████║\n// ╚═╝ ╚═╝╚═╝╚══════╝ ╚═════╝╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═════╝ ╚══════╝\n\nexport interface WithOptionId {\n optionId: string;\n}\n","import { isDefined, isDefinedAndNonEmpty, isEmpty, isNotDefined } from '@sgme/fp';\nimport type {\n PremiumType,\n TcHedgeType,\n TCOptionHedgeValues,\n TCOptionLegValues,\n TradeCaptureFxOptionMultileg,\n TradeCaptureOption,\n TradeCaptureOptionRequestWrapper,\n TradeCaptureVanillaOptionLeg,\n} from 'api/tradeCapture/option/tradeCaptureOptionModel';\nimport type { PriceType } from 'state/fxOptions/fxOptionsModel';\nimport type { IFxVanillaLegInputs, LegType } from 'state/fxOptions/model/optionsLegs';\nimport type { AppState } from 'state/model';\nimport type { Selectors } from 'state/selectors';\nimport {\n type CurrencyChoice,\n FIRST_CURRENCY,\n type HedgeType,\n SECOND_CURRENCY,\n type Side,\n} from 'state/share/productModel/litterals';\nimport type { DateInputCultureInfo } from 'state/userPreferences';\nimport type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport { clearUndefined } from 'utils/clearUndefined';\n// import { fieldData } from 'utils/fieldSelectors';\nimport { mapOptional } from 'utils/optional';\nimport { parseWithCultureInfo } from 'utils/parseDateWithCultureInfo';\nimport {\n type FxOptionMultilegModelChanges,\n isVanilla,\n type OptionHedgesStoreModelChanges,\n type OptionStoreModelChanges,\n type TradeCaptureToBackendMetadata,\n type TypedStrategyOptionLegsModelChanges,\n type TypedStrategyOptionLegsStoreModelChanges,\n type VanillaOptionLegsModelChanges,\n type VanillaOptionLegsStoreModelChanges,\n type WithOptionId,\n} from './tradeCaptureModel';\nimport { convertLegOptionTypeToTradeCaptureType } from './utils/optionTypesMap';\nimport { convertLegSettlementTypeToTradeCaptureSettlementType } from './utils/settlementTypesMap';\nimport type { IFxOptionInputs } from '../../../state/fxOptions/model/optionProduct';\nimport { getFieldContent } from 'utils/fieldSelectors';\n\nexport type TradeCaptureToBackendMetaSelectorsKeys =\n | 'getOptionLegProductName'\n | 'getOptionVanillaLegOptionType'\n | 'getOptionTradeCaptureIdVersion'\n | 'getOptionNextLegId'\n | 'getLegIdsOfMultilegOfOption'\n | 'getUserPreferenceData'\n | 'getOptionHedgeCurrency'\n | 'getFirstLegIdOfOption'\n | 'getFeatureToggles'\n | 'getOptionHedgeCurrency'\n | 'getAllHedgeIdsOfOption';\n\nexport type TradeCaptureToBackendMetaSelectorSelectors = Pick<\n Selectors,\n TradeCaptureToBackendMetaSelectorsKeys\n>;\n// ---------------------------------------------------------------------------------\n// Public meta selector\n// ---------------------------------------------------------------------------------\n\nexport const buildTradeCaptureRequestCreator: MapStateToMetadataHOF<\n TradeCaptureOptionRequestWrapper,\n TradeCaptureToBackendMetadata,\n AppState,\n TradeCaptureToBackendMetaSelectorSelectors\n> =\n sl =>\n // todo 4285 - the patch is based on FxOptionMultilegModelChanges which has some properties specific to the state input / values such as strike : string\n // whereas the TradeCaptureOptionRequestWrapper seem to have the values both sent and receive from TC (strike : number) - seems suprising that we have the same typing for both the request and the response\n // how was it working before\n // @ts-ignore\n (state, { optionId, patch }) => {\n const idVersion = getNextIdVersion(sl)(state, optionId, patch.legs);\n\n const changedOptionFields = getChangedOptionFieldsWith(sl)(state, {\n optionId,\n patch,\n });\n const isNewModel = sl.getFeatureToggles(state).optionTradeCaptureNewModel;\n const legs = !isNewModel\n ? getOldModelPatchedLegs(patch, sl, state, optionId)\n : getNewModelPatchedLegs(patch, sl, state, optionId);\n return {\n idVersion,\n changedFields: {\n ...changedOptionFields,\n legs,\n },\n };\n };\n\n// TODO remove below function with the new TC model are alive\nfunction getOldModelPatchedLegs(\n patch: Partial & { legs: Record },\n sl: TradeCaptureToBackendMetaSelectorSelectors,\n state: AppState,\n optionId: string,\n) {\n const hasLegPatch = patch.legs !== undefined && Object.keys(patch.legs).length > 0;\n\n if (!hasLegPatch) {\n return {\n [sl.getOptionNextLegId(state, optionId)]: {\n productName: 'Vanilla' as const,\n },\n } as VanillaOptionLegsStoreModelChanges;\n }\n\n const newModelPatchedLegs = mapOptionLegs(sl, state, patch.legs);\n return newModelPatchedLegs['0'].legs as Record<\n string,\n TypedStrategyOptionLegsStoreModelChanges | VanillaOptionLegsStoreModelChanges\n >;\n}\n\nfunction getNewModelPatchedLegs(\n patch: OptionStoreModelChanges,\n sl: TradeCaptureToBackendMetaSelectorSelectors,\n state: AppState,\n optionId: string,\n) {\n const isMultiHedgesEnabled = sl.getFeatureToggles(state).optionTradeCaptureMultiHedges;\n\n const optionLegs = mapOptionLegs(sl, state, patch.legs);\n\n const hedges = getEmptyHedges(sl)(state, optionId);\n\n const hedgesWithPatch = {\n ...hedges,\n ...mapOptionHedges(\n patch.hedges,\n hedgeId => sl.getOptionHedgeCurrency(state, hedgeId)?.value ?? FIRST_CURRENCY,\n ),\n };\n\n const legsWithHedges = {\n ...optionLegs,\n '0': {\n ...optionLegs['0'],\n legs: {\n ...optionLegs['0'].legs,\n ...hedgesWithPatch,\n },\n },\n };\n\n return patch.legs === undefined || isEmpty(Object.keys(patch.legs)) // object is empty\n ? {\n [sl.getOptionNextLegId(state, optionId)]: {\n productName: 'FxOptionMultileg' as const,\n legs: {\n '0': {\n productName: 'Vanilla' as const,\n },\n },\n },\n }\n : isMultiHedgesEnabled\n ? legsWithHedges\n : optionLegs;\n}\n\nfunction getNextIdVersion(sl: TradeCaptureToBackendMetaSelectorSelectors) {\n return (\n state: AppState,\n optionId: string,\n patchLegs: Record,\n ) => {\n const typedStrategyLegOrVanillaLegs = patchLegs['0']?.legs ?? {};\n const [firstLegId] = Object.keys(typedStrategyLegOrVanillaLegs);\n const { productName: firstLegChangedProductName } =\n typedStrategyLegOrVanillaLegs[firstLegId] ?? {};\n const firstStateLegId = sl.getFirstLegIdOfOption(state, optionId);\n const firstStateLegProductName = sl.getOptionLegProductName(state, firstStateLegId);\n\n return firstLegChangedProductName !== undefined &&\n firstLegChangedProductName !== firstStateLegProductName\n ? 0\n : incrementIdVersion(sl.getOptionTradeCaptureIdVersion(state, optionId));\n };\n}\n\nfunction mapOptionLegs(\n sl: TradeCaptureToBackendMetaSelectorSelectors,\n state: AppState,\n legs: Record,\n): Record> {\n const vanillaOrTypedStrategyLegs = legs[0].legs;\n\n const mappedOptionLegs: Record> = {\n ...legs,\n } as Record>;\n\n const { dateInputCultureInfo: cultureInfo } = sl.getUserPreferenceData(state);\n mappedOptionLegs[0].legs = Object.entries(vanillaOrTypedStrategyLegs).reduce(\n (\n acc,\n [legId, leg]: [string, TypedStrategyOptionLegsModelChanges | VanillaOptionLegsModelChanges],\n ) => {\n if (isVanilla(leg)) {\n acc[legId] = {\n ...metaSelectorOptionLegToTradeCapturePatch(leg, cultureInfo),\n };\n } else {\n // is a typed strategy\n const { productName, legs: childrens, ...legPatch } = leg;\n\n const {\n legs: childrenLegs,\n legSide,\n legStrike,\n firstChildrenLeg,\n } = Object.entries(childrens).reduce(\n (childrenAcc, [childrenLegId, childrenLeg]) => {\n if (isVanilla(childrenLeg)) {\n if (!isDefined(childrenAcc.firstChildrenLeg)) {\n // Exclude data\n const {\n side: _side,\n strike: _strike,\n premiumBid: _premiumBid,\n premiumAsk: _premiumAsk,\n markup: _markup,\n volatilityBid: _volatilityBid,\n volatilityAsk: _volatilityAsk,\n ...rest\n } = childrenLeg;\n childrenAcc.firstChildrenLeg = rest;\n }\n\n if (!isDefined(childrenAcc.legSide)) {\n childrenAcc.legSide = childrenLeg.side;\n }\n\n if (!isDefined(childrenAcc.legStrike)) {\n childrenAcc.legStrike = childrenLeg.strike;\n }\n\n childrenAcc.legs[childrenLegId] = {\n ...metaSelectorOptionLegToTradeCapturePatch(\n {\n productName: 'Vanilla',\n premiumBid: childrenLeg.premiumBid,\n premiumAsk: childrenLeg.premiumAsk,\n volatilityBid: childrenLeg.volatilityBid,\n volatilityAsk: childrenLeg.volatilityAsk,\n markup: childrenLeg.markup,\n ...(leg.productName !== 'RiskReversal' ? {} : { side: childrenLeg.side }), // side needs to be at subleg level for RiskReversal\n ...(leg.productName === 'Straddle' ? {} : { strike: childrenLeg.strike }), // strike needs to be at subleg level for all other typed strategies\n },\n cultureInfo,\n ),\n };\n }\n return childrenAcc;\n },\n { legs: {} } as {\n legs: Record>;\n legStrike?: string | null;\n legSide?: Side;\n firstChildrenLeg: VanillaOptionLegsModelChanges;\n },\n );\n // @TODO is it really necessary ? LegPatch is a strategy so don't have value except productname ?\n let legPatchInputs = metaSelectorOptionLegToTradeCapturePatch(legPatch, cultureInfo);\n if (productName === 'RiskReversal') {\n // @ts-ignore\n const { strikeString, ...possibleLegPatchInputs } = legPatch;\n legPatchInputs = metaSelectorOptionLegToTradeCapturePatch(\n possibleLegPatchInputs,\n cultureInfo,\n );\n }\n\n acc[legId] = {\n ...metaSelectorOptionLegToTradeCapturePatch(\n {\n ...firstChildrenLeg,\n ...(leg.productName !== 'RiskReversal' ? { side: legSide } : {}),\n ...(leg.productName === 'Straddle' ? { strike: legStrike } : {}), // strike needs to be at leg level for straddles,\n },\n cultureInfo,\n ),\n ...legPatchInputs,\n productName: productName as LegType,\n // productName: leg.productName,\n legs: childrenLegs,\n };\n }\n return acc;\n },\n {} as Record>,\n );\n\n return mappedOptionLegs;\n}\n\nfunction mapOptionHedges(\n hedges: OptionHedgesStoreModelChanges,\n getHedgeCurrency: (hedgeId: string) => CurrencyChoice,\n): Record> {\n return Object.entries(hedges).reduce((result, [hedgeId, hedge]) => {\n result[hedgeId] = {\n productName: 'FxOptionHedge',\n priceString: hedge.rate,\n };\n\n result[hedgeId][\n (hedge.currency ?? getHedgeCurrency(hedgeId)) === SECOND_CURRENCY\n ? 'amountInCcy2String'\n : 'amountInCcy1String'\n ] = hedge.amount;\n\n return result;\n }, {} as Record>);\n}\n\n// ---------------------------------------------------------------------------------\n// Private metaSelector\n// ---------------------------------------------------------------------------------\nfunction incrementIdVersion(lastIdVersion: number | null): number {\n return lastIdVersion == null ? 0 : lastIdVersion + 1;\n}\n\nconst getChangedOptionFieldsWith: MapStateToMetadataHOF<\n Partial,\n { patch: OptionStoreModelChanges } & WithOptionId,\n AppState,\n TradeCaptureToBackendMetaSelectorSelectors\n> =\n sl =>\n (state, { optionId, patch }) => {\n const [hedgeId] = sl.getAllHedgeIdsOfOption(state, optionId);\n const { dateInputCultureInfo: cultureInfo } = sl.getUserPreferenceData(state);\n const isMultiHedgesEnabled = sl.getFeatureToggles(state).optionTradeCaptureMultiHedges;\n const hedgeNotionalCurrency =\n patch.hedgeNotionalCurrency ??\n getFieldContent(sl.getOptionHedgeCurrency(state, hedgeId)) ??\n FIRST_CURRENCY;\n\n const optionHedgeProperties = isMultiHedgesEnabled\n ? {}\n : {\n hedgeAmountInCcy1String:\n hedgeNotionalCurrency === FIRST_CURRENCY ? patch.hedgeNotional : undefined,\n hedgeAmountInCcy2String:\n hedgeNotionalCurrency === SECOND_CURRENCY ? patch.hedgeNotional : undefined,\n hedgePriceString: patch.hedgePrice,\n };\n\n return clearUndefined({\n currencyPair: patch.currencyPair,\n hedgeType: hedgeTypeToPatch(patch.hedgeType),\n\n // TODO 4287 : move into legs after the activation of multi-hedges\n ...optionHedgeProperties,\n\n markupCurrency: patch.markupCurrency,\n premiumPaymentDateString: dateToPatch(patch.premiumDate, patch.premiumDateTenor, cultureInfo),\n isInFine: patch.isInFine,\n amountReferenceString: patch.amountReference,\n });\n };\n\nconst metaSelectorOptionLegToTradeCapturePatch = (\n patch: Partial,\n cultureInfo: DateInputCultureInfo,\n): Partial =>\n clearUndefined({\n productName: 'Vanilla',\n type: optionTypeToPatch(patch.optionType),\n side: patch.side,\n expiryDateString: dateToPatch(patch.expiryDate, patch.expiryDateTenor, cultureInfo),\n strikeString: patch.strike === '?' ? '' : patch.strike,\n amount1String:\n patch.notionalCurrency === 1 && patch.notionalAmount !== null\n ? patch.notionalAmount\n : undefined,\n amount2String:\n patch.notionalCurrency === 2 && patch.notionalAmount !== null\n ? patch.notionalAmount\n : undefined,\n deliveryDateString: dateToPatch(patch.deliveryDate, undefined, cultureInfo),\n settlementType: settlementTypeToPatch(patch.settlementType),\n cashSettlementCurrency: patch.cashSettlementCurrency,\n fixingReference1: patch.fixingReference1,\n cutOffMarketPlace: patch.marketPlace,\n premiumPaymentDateString: dateToPatch(patch.premiumDate, patch.premiumDateTenor, cultureInfo),\n isInFine: patch.isInFine,\n premiumPaymentAmountBidString: patch.premiumBid,\n premiumPaymentAmountAskString: patch.premiumAsk,\n premiumType: mapToPremiumType(patch.premiumTypeString, patch.premiumCurrency),\n markupAmountString: patch.markup,\n clientVolBidString: patch.volatilityBid,\n clientVolAskString: patch.volatilityAsk,\n negotiatedCurrency: patch.notionalCurrency,\n });\n\nconst priceAndCcyToPremiumType: Record = {\n VOLATILITY: ['SmiledVolatility1', 'SmiledVolatility2'],\n PPS: ['Pip12', 'Pip21'],\n AMOUNT: ['AmountCurrency1', 'AmountCurrency2'],\n PERCENT: ['PercentageCurrency1', 'PercentageCurrency2'],\n};\n\nfunction mapToPremiumType(\n priceType: PriceType | null | undefined,\n amountCcy: CurrencyChoice | null | undefined,\n): PremiumType | undefined {\n if (isNotDefined(priceType) || isNotDefined(amountCcy)) {\n return undefined;\n }\n\n return priceAndCcyToPremiumType[priceType][amountCcy - 1];\n}\n\nfunction hedgeTypeToPatch(value: HedgeType | undefined): TcHedgeType | undefined {\n if (value === 'Live') {\n return 'None';\n }\n return value;\n}\n\nfunction dateToPatch(\n date: string | undefined | null,\n tenor: string | undefined | null,\n cultureInfo: DateInputCultureInfo,\n) {\n if (date === null) {\n return null;\n }\n if (date === '') {\n return '';\n }\n if (isDefinedAndNonEmpty(date)) {\n return parseWithCultureInfo(cultureInfo, date);\n }\n if (isDefinedAndNonEmpty(tenor)) {\n return tenor;\n }\n return undefined;\n}\n\nfunction getEmptyHedges(sl: TradeCaptureToBackendMetaSelectorSelectors) {\n return (state: AppState, optionId: string) => {\n const hedgesIds = sl.getAllHedgeIdsOfOption(state, optionId).map(id => {\n const [_optionId, hedgeId] = id.split('/');\n\n return hedgeId;\n });\n\n return hedgesIds.reduce(\n (allHedges, hedgeId) => ({\n ...allHedges,\n [hedgeId]: {\n productName: 'FxOptionHedge',\n },\n }),\n {},\n );\n };\n}\n\nconst optionTypeToPatch = mapOptional(convertLegOptionTypeToTradeCaptureType);\n\nconst settlementTypeToPatch = mapOptional(convertLegSettlementTypeToTradeCaptureSettlementType);\n","import type { TileInstrumentChanged } from 'state/clientWorkspace';\nimport { selectors } from 'state/selectors';\nimport { generatePathFromResponseCreator } from './tradeCaptureFromBackend';\nimport type { OptionStoreModelChanges } from './tradeCaptureModel';\nimport {\n legAddToPatchWith,\n legChangedToPatchWith,\n legGroupRemovedToPatchWith,\n legRemovedToPatchWith,\n legsChangedToPatchWith,\n legsPremiumPinToggledToPatchWith,\n legsImportedToPatchWith,\n optionPropertyChangedToPatchWith,\n optionTileResetToPatchWith,\n optionStrategyTypeChangedToPatchWith,\n optionStrikeSolvedToPatchWith,\n optionSolvingWantedToPatchWith,\n optionTileRestoreToPatchWith,\n legDuplicateToPatchWith,\n optionHedgePropertyChangedToPatchWith,\n} from './tradeCapturePatchBuilderFromAction';\nimport { buildTradeCaptureRequestCreator } from './tradeCaptureToBackend';\n\nexport const optionResponseToPatchMetaSelector = generatePathFromResponseCreator(selectors);\n\nexport const createTradeCaptureRequest = buildTradeCaptureRequestCreator(selectors);\n\nexport const optionStrategyTypeChangedToPatch = optionStrategyTypeChangedToPatchWith(selectors);\n\nexport const legAddedToPatch = legAddToPatchWith(selectors);\n\nexport const legDuplicatedToPatch = legDuplicateToPatchWith(selectors);\n\nexport const legChangedToPatch = legChangedToPatchWith(selectors);\n\nexport const legsChangedToPatch = legsChangedToPatchWith(selectors);\n\nexport const optionStrikeSolvedToPatch = optionStrikeSolvedToPatchWith(selectors);\n\nexport const legsPremiumPinToggledToPatch = legsPremiumPinToggledToPatchWith(selectors);\n\nexport const legRemovedToPatch = legRemovedToPatchWith(selectors);\n\nexport const legGroupRemovedToPatch = legGroupRemovedToPatchWith(selectors);\n\nexport const legsImportedToPatch = legsImportedToPatchWith(selectors);\n\nexport const optionPropertyChangedToPatch = optionPropertyChangedToPatchWith(selectors);\n\nexport const optionHedgePropertyChangedToPatch = optionHedgePropertyChangedToPatchWith(selectors);\n\nexport const optionTileResetToPatch = optionTileResetToPatchWith(selectors);\n\nexport const optionSolvingWantedToPatch = optionSolvingWantedToPatchWith(selectors);\n\nexport const optionTileRestoreToPatch = optionTileRestoreToPatchWith(selectors);\n\nexport { optionTileOpenFromBlotterToPatch } from './tradeCapturePatchBuilderFromAction';\n\nexport const optionTileInstrumentChangedToPatch = ({\n tileId,\n currencyPair,\n}: TileInstrumentChanged): [string, OptionStoreModelChanges] => [\n tileId,\n {\n currencyPair,\n legs: {\n 0: {\n productName: 'FxOptionMultileg',\n legs: {\n 0: {\n productName: 'Vanilla',\n },\n },\n },\n },\n hedges: {},\n },\n];\n","import { identity } from '@sgme/fp';\nimport type { BidAsk, Way } from './litterals';\n\nexport function getRelevantPriceFromBidAsk(pair: BidAsk, way: Way): T {\n if (way === 'Ask') {\n return pair.ask;\n }\n if (way === 'Bid') {\n return pair.bid;\n }\n throw `way ${way} is not supported`;\n}\n\ntype BidAskTransformer = (bidAsk: BidAsk) => BidAsk;\n\nexport const mapBidAsk = (transform: (v: T) => T): BidAskTransformer => {\n if (transform === identity) {\n return identity;\n }\n return ({ bid, ask }) => ({\n bid: transform(bid),\n ask: transform(ask),\n });\n};\n","import { getRelevantPriceFromBidAsk } from 'state/share/productModel/utils';\nimport type { Way } from 'state/share/productModel/litterals';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport type { SwapRfsExecutePayload } from 'api/multipass/swap/swapRfsQuoteExecution';\nimport { getDateForMultipass } from 'utils/dateFormats';\nimport { assertIsDefined, isEmpty } from '@sgme/fp';\n\ntype MySelectorKeys =\n | 'getSwapRfsStream'\n | 'getDisplayNearPrice'\n | 'getDisplayFarPrice'\n | 'getDisplaySpot'\n | 'getDisplayNearPoints'\n | 'getDisplayFarPoints'\n | 'getConnectionId'\n | 'getUserPreferenceData';\n\ntype MySelectors = Pick;\n\nexport const swapRfsExecuteRequestWith: MapStateToMetadataHOF<\n SwapRfsExecutePayload,\n { swapId: string; way: Way; streamId: string; tradeDate: Date },\n AppState,\n MySelectors\n> =\n sl =>\n (state, { swapId, way, streamId, tradeDate }) => {\n const streamState = sl.getSwapRfsStream(state, streamId);\n\n if (streamState.status !== 'PRICING') {\n throw 'error : can not execute when stream is not pricing';\n }\n const {\n quoteId,\n nearSalesAllInRate,\n farSalesAllInRate,\n farPoints: farPointsTrader,\n frontTimestamp,\n backTimestamp,\n } = streamState.quote;\n const nearPrice = sl.getDisplayNearPrice(state, swapId).value;\n const farPrice = sl.getDisplayFarPrice(state, swapId).value;\n\n assertIsDefined(nearPrice, 'nearPrice should be defined for execution');\n assertIsDefined(farPrice, 'farPrice should be defined for execution');\n\n const spot = sl.getDisplaySpot(state, swapId);\n const spotWithWay = getRelevantPriceFromBidAsk(spot, way);\n const nearPriceWithWay = getRelevantPriceFromBidAsk(nearPrice, way);\n const farPriceWithWay = getRelevantPriceFromBidAsk(farPrice, way);\n const nearPoints = sl.getDisplayNearPoints(state, swapId);\n const farPoints = sl.getDisplayFarPoints(state, swapId);\n const farPointsWithMarginWithWay = getRelevantPriceFromBidAsk(farPoints.raw, way);\n const nearPointsWithWay = getRelevantPriceFromBidAsk(nearPoints.raw, way);\n const farPointsWithoutMarginWithWay = getRelevantPriceFromBidAsk(farPointsTrader, way);\n const nearSalesAllInRateWithWay = getRelevantPriceFromBidAsk(nearSalesAllInRate, way);\n const farSalesAllInRateWithWay = getRelevantPriceFromBidAsk(farSalesAllInRate, way);\n const { emails, splitNotificationsEmailsCash, splitNotifications } =\n sl.getUserPreferenceData(state);\n let emailNotificationList;\n if (splitNotifications && !isEmpty(splitNotificationsEmailsCash)) {\n emailNotificationList = splitNotificationsEmailsCash.join(';');\n } else {\n emailNotificationList = emails.join(';');\n }\n const userLocalDateTime = getDateForMultipass(tradeDate);\n const lastQuoteFromBackTimestamp = backTimestamp;\n const lastQuoteReceivedByFrontTimestamp = frontTimestamp.getTime();\n const executionClickByFrontTimestamp = tradeDate.getTime();\n\n const connectionId = sl.getConnectionId(state);\n const payload: SwapRfsExecutePayload = {\n replyToStream: connectionId,\n rfsId: streamId,\n quoteId,\n way,\n spot: spotWithWay,\n nearPrice: nearPriceWithWay,\n farPrice: farPriceWithWay,\n nearPoints: nearPointsWithWay,\n farPointsWithoutMargin: farPointsWithoutMarginWithWay,\n farPointsWithMargin: farPointsWithMarginWithWay,\n nearSalesAllInRate: nearSalesAllInRateWithWay,\n farSalesAllInRate: farSalesAllInRateWithWay,\n emailNotificationList,\n userLocalDateTime,\n lastQuoteFromBackTimestamp,\n lastQuoteReceivedByFrontTimestamp,\n executionClickByFrontTimestamp,\n };\n return payload;\n };\n","import { getRelevantPriceFromBidAsk } from 'state/share/productModel/utils';\nimport type { Way } from 'state/share/productModel/litterals';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport type { IFxSwapExecutionData } from 'state/fxSwaps/fxSwapsModel';\nimport { assertIsDefined } from '@sgme/fp';\n\ntype MySelectorKeys =\n | 'getSwapState'\n | 'getSwapStreamCurrencyPrecision'\n | 'getCurrencyPrecision'\n | 'getClientForTile'\n | 'getDisplayNearPrice'\n | 'getDisplaySwapPointsAllIn'\n | 'getDisplayFarPrice'\n | 'getSwapIsNonDeliverable'\n | 'getSwapProductName';\n\ntype MySelectors = Pick;\n\nexport const swapRfsExecutionWith: MapStateToMetadataHOF<\n IFxSwapExecutionData,\n { swapId: string; way: Way; tradeDate: Date },\n AppState,\n MySelectors\n> =\n sl =>\n (state, { swapId, way, tradeDate }) => {\n const {\n values: {\n nearAmount: nearNotionalAmount,\n farAmount: farNotionalAmount,\n nearPaymentDate,\n farPaymentDate,\n amountCurrency,\n currencyPair,\n currency1,\n currency2,\n },\n } = sl.getSwapState(state, swapId);\n const precision = sl.getSwapStreamCurrencyPrecision(state, swapId);\n\n assertIsDefined(nearNotionalAmount, 'nearAmount needs to be defined for execution');\n assertIsDefined(farNotionalAmount, 'farAmount needs to be defined for execution');\n assertIsDefined(nearPaymentDate, 'nearPaymentDate needs to be defined for execution');\n assertIsDefined(farPaymentDate, 'farPaymentDate needs to be defined for execution');\n assertIsDefined(amountCurrency, 'amountCurrency needs to be defined for execution');\n assertIsDefined(currency1, 'currency1 needs to be defined for execution');\n assertIsDefined(currency2, 'currency2 needs to be defined for execution');\n assertIsDefined(currencyPair, 'currencyPair needs to be defined for execution');\n assertIsDefined(precision, 'precision needs to be defined for execution');\n\n const notionalCurrency = amountCurrency === 1 ? currency1 : currency2;\n\n const client = sl.getClientForTile(state, swapId);\n\n const nearPrice = sl.getDisplayNearPrice(state, swapId).value;\n const farPrice = sl.getDisplayFarPrice(state, swapId).value;\n\n assertIsDefined(nearPrice, 'nearPrice should be defined for execution');\n assertIsDefined(farPrice, 'farPrice should be defined for execution');\n\n const allInPrice = sl.getDisplaySwapPointsAllIn(state, swapId);\n const productName = sl.getSwapProductName(state, swapId);\n\n const executionSummary: IFxSwapExecutionData = {\n instrument: 'Swap',\n productName,\n currencyPair,\n way,\n swapPoints: getRelevantPriceFromBidAsk(allInPrice.points, way),\n nearNotionalAmount,\n farNotionalAmount,\n notionalCurrency,\n nearDate: new Date(nearPaymentDate),\n farDate: new Date(farPaymentDate),\n nearPrice: getRelevantPriceFromBidAsk(nearPrice, way),\n farPrice: getRelevantPriceFromBidAsk(farPrice, way),\n client,\n tradeDate,\n precision: precision! + 2,\n };\n return executionSummary;\n };\n","import type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type { IFxSwapInputs, PatchLegs } from 'state/fxSwaps/fxSwapsModel';\nimport type {\n SwapTradeCaptureRequestLegProperties,\n TradeCaptureSwapRequestWrapper,\n} from 'api/tradeCapture/swap/tradeCaptureModel';\n\nimport { parseWithCultureInfo } from 'utils/parseDateWithCultureInfo';\nimport type { BidAsk } from 'state/share/productModel/litterals';\n\ninterface WithSwapId {\n swapId: string;\n}\n\nexport type SwapStoreModelChanges = Partial> & PatchLegs;\n\nexport type TradeCaptureToBackendMetaSelectorsKeys =\n | 'getSwapTradeCaptureIdVersion'\n | 'getUserPreferenceData'\n | 'getProductsAccess';\n\nexport type TradeCaptureToBackendMetaSelectorSelectors = Pick<\n Selectors,\n TradeCaptureToBackendMetaSelectorsKeys\n>;\n\nexport type TradeCaptureToBackendMetadata = {\n patch: SwapStoreModelChanges;\n} & WithSwapId;\n\n// ---------------------------------------------------------------------------------\n// Public meta selector\n// ---------------------------------------------------------------------------------\n\nexport const swapTradeCaptureToBackendWith: MapStateToMetadataHOF<\n TradeCaptureSwapRequestWrapper,\n TradeCaptureToBackendMetadata,\n AppState,\n TradeCaptureToBackendMetaSelectorSelectors\n> =\n sl =>\n (state, { swapId, patch }) => {\n const idVersion = getNextIdVersion(sl.getSwapTradeCaptureIdVersion(state, swapId));\n const { dateInputCultureInfo: cultureInfo } = sl.getUserPreferenceData(state);\n\n const {\n legs: { 0: legPatch },\n ...productPatch\n } = patch;\n\n let tradeCapturelegPatch: Partial = {\n productName: 'FxSwap',\n };\n if (legPatch !== undefined) {\n const nearPaymentDate =\n legPatch.nearPaymentDate === undefined\n ? undefined\n : legPatch.nearPaymentDate === null\n ? null\n : parseWithCultureInfo(cultureInfo, legPatch.nearPaymentDate);\n const farPaymentDate =\n legPatch.farPaymentDate === undefined\n ? undefined\n : legPatch.farPaymentDate === null\n ? null\n : parseWithCultureInfo(cultureInfo, legPatch.farPaymentDate);\n tradeCapturelegPatch = {\n ...tradeCapturelegPatch,\n currencyPair: legPatch.currencyPair,\n nearPaymentDateString: nearPaymentDate ?? legPatch.nearPaymentDateTenor,\n farPaymentDateString: farPaymentDate ?? legPatch.farPaymentDateTenor,\n isUneven: legPatch.isUneven,\n swapOffMarket: legPatch.isOffMarket,\n xCurrency: legPatch.xCurrency,\n fixingSource: legPatch.fixingSource,\n sndFixingSource: legPatch.sndFixingSource,\n ...mapPriceReferenceToTradeCapture(legPatch.nearPriceReference, 'near'),\n ...mapPriceReferenceToTradeCapture(legPatch.farPriceReference, 'far'),\n };\n\n if (legPatch.currencyPair !== undefined) {\n if (sl.getProductsAccess(state).nonDeliverable === false) {\n productPatch.isNonDeliverable = false;\n }\n }\n\n if (legPatch.nearAmount !== undefined) {\n if (legPatch.amountCurrency === 1) {\n tradeCapturelegPatch.nearAmount1String = legPatch.nearAmount;\n } else if (legPatch.amountCurrency === 2) {\n tradeCapturelegPatch.nearAmount2String = legPatch.nearAmount;\n }\n }\n if (legPatch.farAmount !== undefined) {\n if (legPatch.amountCurrency === 1) {\n tradeCapturelegPatch.farAmount1String = legPatch.farAmount;\n } else if (legPatch.amountCurrency === 2) {\n tradeCapturelegPatch.farAmount2String = legPatch.farAmount;\n }\n }\n }\n\n return {\n idVersion,\n changedFields: {\n ...productPatch,\n legs: {\n 0: tradeCapturelegPatch,\n },\n },\n };\n };\n\n// ---------------------------------------------------------------------------------\n// Private metaSelector\n// ---------------------------------------------------------------------------------\nfunction getNextIdVersion(lastIdVersion: number | null): number {\n return lastIdVersion == null ? 0 : lastIdVersion + 1;\n}\n\nfunction mapPriceReferenceToTradeCapture(\n data: BidAsk | null | undefined,\n leg: 'near' | 'far',\n): Partial {\n if (data === undefined) {\n return {};\n }\n if (data === null) {\n return {\n [`${leg}PriceReferenceAskString`]: null,\n [`${leg}PriceReferenceBidString`]: null,\n };\n }\n return {\n [`${leg}PriceReferenceAskString`]: data.ask,\n [`${leg}PriceReferenceBidString`]: data.bid,\n };\n}\n","import type {\n Legs,\n TradeCaptureResponseWrapper,\n ErrorLegs,\n TcErrors,\n TradeCaptureRequestWrapper,\n ITradeCaptureMetaData,\n} from '../tradeCaptureModel';\nimport type { FxSwapPatch, SwapProductName } from 'state/fxSwaps/fxSwapsModel';\nimport type { CurrencyChoice, Possible } from 'state/share/productModel/litterals';\n\nexport type SwapTradeCapturePatch = ITradeCaptureMetaData & FxSwapPatch;\nexport type TradeCaptureSwapRequestChanges = Partial &\n Legs;\nexport type TradeCaptureSwapRequestWrapper =\n TradeCaptureRequestWrapper;\nexport type TradeCaptureSwapResponseChanges = Partial &\n Legs;\nexport type TradeCaptureSwapResponseWrapper = TradeCaptureResponseWrapper<\n TradeCaptureSwapResponseChanges,\n TradeCaptureSwapErrors,\n TradeCaptureSwapWarnings\n>;\nexport type TradeCaptureSwapErrors = TcErrors &\n ErrorLegs;\n\nexport type TradeCaptureSwapWarnings = ErrorLegs;\n\nexport const SwapLegId = '0';\n\nexport interface SwapTradeCaptureResponseProperties {\n isNonDeliverable: boolean;\n}\n\nexport interface SwapTradeCaptureRequestProperties {\n isNonDeliverable: boolean | null;\n}\n\nexport interface SwapTradeCaptureResponseLegProperties {\n currencyPair: string;\n productName: SwapProductName;\n isReadyToPrice: boolean;\n isPriceObsolete: boolean;\n currency1: string;\n currency2: string;\n negotiatedCurrency: CurrencyChoice;\n nearAmount1: number | null;\n nearAmount2: number | null;\n nearPaymentDate: string;\n nearPaymentDateTenor: string;\n farAmount1: number | null;\n farAmount2: number | null;\n farPaymentDate: string;\n farPaymentDateTenor: string;\n isUneven: boolean;\n swapOffMarket: boolean;\n fixingSource: string;\n nearFixingDate: string;\n farFixingDate: string;\n fixingCurrency: string;\n possibleFixingSources: Possible;\n isCrossed: boolean;\n possibleXCurrencies: Possible;\n possibleSndFixingSources: Possible;\n xCurrency: string;\n sndFixingSource: string;\n nearPriceReferenceBid: number | null;\n nearPriceReferenceAsk: number | null;\n farPriceReferenceBid: number | null;\n farPriceReferenceAsk: number | null;\n}\n\nexport interface SwapTradeCaptureRequestLegProperties {\n currencyPair: string | null;\n productName: SwapProductName;\n nearAmount1String: string | null;\n nearAmount2String: string | null;\n nearPaymentDateString: string | null;\n farAmount1String: string | null;\n farAmount2String: string | null;\n farPaymentDateString: string | null;\n isUneven: boolean | null;\n swapOffMarket: boolean | null;\n fixingSource: string | null;\n xCurrency: string | null;\n sndFixingSource: string | null;\n nearPriceReferenceBidString: string | null;\n nearPriceReferenceAskString: string | null;\n}\n","import type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport {\n type SwapTradeCapturePatch,\n type TradeCaptureSwapResponseWrapper,\n SwapLegId,\n type SwapTradeCaptureResponseLegProperties,\n type SwapTradeCaptureResponseProperties,\n} from 'api/tradeCapture/swap/tradeCaptureModel';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport { clearUndefined } from 'utils/clearUndefined';\nimport {\n getPreviousMap,\n previousValue,\n fromTcWarning,\n fromTcError,\n mapAmount,\n} from 'api/tradeCapture/tradeCaptureMappingHelper';\nimport type { BidAsk } from 'state/share/productModel/litterals';\nimport type { IFxSwapValues } from 'state/fxSwaps/fxSwapsModel';\nimport { isDefined } from '@sgme/fp';\n\ninterface WithSwapId {\n swapId: string;\n}\n\nexport type TradeCaptureFromBackendMetaSelectorsKeys = 'getSwapNearPrice' | 'getSwapFarPrice';\nexport type TradeCaptureFromBackendMetaSelectorSelectors = Pick<\n Selectors,\n TradeCaptureFromBackendMetaSelectorsKeys\n>;\n\n// ---------------------------------------------------------------------------------\n// Public meta selector\n// ---------------------------------------------------------------------------------\n\nexport const swapTradeCaptureFromBackendWith: MapStateToMetadataHOF<\n SwapTradeCapturePatch,\n TradeCaptureSwapResponseWrapper & WithSwapId,\n AppState,\n TradeCaptureFromBackendMetaSelectorSelectors\n> =\n sl =>\n (state, { changedFields: tcChangedFields, errors, warnings, idVersion, swapId }) => {\n const { legs, ...swapProperties } = tcChangedFields;\n const { legs: legsErrors, ...swapErrors } = errors || { legs: {} };\n const { legs: legsWarnings, ...swapWarnings } = warnings || { legs: {} };\n\n const {\n isReadyToPrice: _legIsReadyToPrice = false,\n isPriceObsolete: _legIsPriceObsolete = false,\n ...legProperties\n } = legs[SwapLegId] || {};\n\n const legErrors = legsErrors?.[SwapLegId] ?? {};\n const legWarnings = legsWarnings?.[SwapLegId] ?? {};\n\n const { isReadyToPrice } = legs[SwapLegId];\n\n const stateNearPrice = sl.getSwapNearPrice(state, swapId).value;\n const stateFarPrice = sl.getSwapFarPrice(state, swapId).value;\n return {\n idVersion,\n values: {\n ...clearUndefined({\n ...getPreviousMap(swapErrors),\n ...getPreviousMap(swapWarnings),\n ...getPreviousMap(legErrors),\n ...getPreviousMap(legWarnings),\n nearAmount: previousValue(legErrors.nearAmount1 ?? legErrors.nearAmount2),\n farAmount: previousValue(legErrors.farAmount1 ?? legErrors.farAmount2),\n nearPriceReferenceBid: undefined,\n nearPriceReferenceAsk: undefined,\n nearPriceReference: mapPriceReferenceFromTradeCapture(\n stateNearPrice,\n previousValue(legErrors.nearPriceReferenceBid),\n previousValue(legErrors.nearPriceReferenceAsk),\n ),\n farPriceReference: mapPriceReferenceFromTradeCapture(\n stateFarPrice,\n previousValue(legErrors.farPriceReferenceBid),\n previousValue(legErrors.farPriceReferenceAsk),\n ),\n }),\n ...mapSwapTCPropertiesToSwapStoreProperties(swapProperties),\n ...metaSelectorTradeCaptureFromBackendToSwapLegValuesWith(sl)(state, {\n responseSwapLeg: legProperties,\n swapId,\n }),\n },\n errors: {\n ...swapErrors,\n ...clearUndefined({\n ...legErrors,\n farPaymentDate: fromTcError(legErrors.farPaymentDate),\n nearPaymentDate: fromTcError(legErrors.nearPaymentDate),\n nearAmount: fromTcError(legErrors.nearAmount1 ?? legErrors.nearAmount2),\n farAmount: fromTcError(legErrors.farAmount1 ?? legErrors.farAmount2),\n nearPriceReferenceAsk: undefined,\n nearPriceReferenceBid: undefined,\n nearPriceReference: fromTcError(\n legErrors.nearPriceReferenceBid ?? legErrors.nearPriceReferenceAsk,\n ),\n farPriceReferenceAsk: undefined,\n farPriceReferenceBid: undefined,\n farPriceReference: fromTcError(\n legErrors.farPriceReferenceBid ?? legErrors.farPriceReferenceAsk,\n ),\n nearAmount1: undefined,\n nearAmount2: undefined,\n farAmount1: undefined,\n farAmount2: undefined,\n }),\n },\n warnings: {\n ...swapWarnings,\n ...clearUndefined({\n ...legsWarnings,\n nearAmount: fromTcWarning(legWarnings.nearAmount1 ?? legWarnings.nearAmount2),\n farAmount: fromTcWarning(legWarnings.farAmount1 ?? legWarnings.farAmount2),\n nearAmount1: undefined,\n nearAmount2: undefined,\n farAmount1: undefined,\n farAmount2: undefined,\n }),\n },\n isReadyToPrice: isReadyToPrice ?? null,\n isPriceObsolete: legs[SwapLegId].isPriceObsolete ?? false,\n productName: legs[SwapLegId].productName ?? 'FxSwap',\n } as SwapTradeCapturePatch;\n };\n\n// ---------------------------------------------------------------------------------\n// Private metaSelector\n// ---------------------------------------------------------------------------------\n\nconst metaSelectorTradeCaptureFromBackendToSwapLegValuesWith: MapStateToMetadataHOF<\n Partial,\n {\n responseSwapLeg: Partial;\n } & WithSwapId,\n AppState,\n TradeCaptureFromBackendMetaSelectorSelectors\n> =\n sl =>\n (state, { responseSwapLeg, swapId }) => {\n const stateNearPrice = sl.getSwapNearPrice(state, swapId).value;\n const stateFarPrice = sl.getSwapFarPrice(state, swapId).value;\n\n const mappedSwapLegProperties: Partial = {\n currencyPair: responseSwapLeg.currencyPair,\n productName: responseSwapLeg.productName,\n currency1: responseSwapLeg.currency1,\n currency2: responseSwapLeg.currency2,\n nearAmount: mapAmount(\n responseSwapLeg.negotiatedCurrency,\n responseSwapLeg.nearAmount1,\n responseSwapLeg.nearAmount2,\n ),\n farAmount: mapAmount(\n responseSwapLeg.negotiatedCurrency,\n responseSwapLeg.farAmount1,\n responseSwapLeg.farAmount2,\n ),\n amountCurrency: responseSwapLeg.negotiatedCurrency,\n nearPaymentDate: responseSwapLeg.nearPaymentDate,\n nearPaymentDateTenor: responseSwapLeg.nearPaymentDateTenor,\n farPaymentDate: responseSwapLeg.farPaymentDate,\n farPaymentDateTenor: responseSwapLeg.farPaymentDateTenor,\n isUneven: responseSwapLeg.isUneven,\n isOffMarket: responseSwapLeg.swapOffMarket,\n nearFixingDate: responseSwapLeg.nearFixingDate,\n farFixingDate: responseSwapLeg.farFixingDate,\n fixingSource: responseSwapLeg.fixingSource,\n fixingCurrency: responseSwapLeg.fixingCurrency,\n possibleFixingSources: responseSwapLeg.possibleFixingSources,\n isCrossed: responseSwapLeg.isCrossed,\n possibleXCurrencies: responseSwapLeg.possibleXCurrencies,\n possibleSndFixingSources: responseSwapLeg.possibleSndFixingSources,\n xCurrency: responseSwapLeg.xCurrency,\n sndFixingSource: responseSwapLeg.sndFixingSource,\n nearPriceReference: mapPriceReferenceFromTradeCapture(\n stateNearPrice,\n responseSwapLeg.nearPriceReferenceBid,\n responseSwapLeg.nearPriceReferenceAsk,\n ),\n farPriceReference: mapPriceReferenceFromTradeCapture(\n stateFarPrice,\n responseSwapLeg.farPriceReferenceBid,\n responseSwapLeg.farPriceReferenceAsk,\n ),\n };\n return clearUndefined(mappedSwapLegProperties);\n };\n\nfunction mapSwapTCPropertiesToSwapStoreProperties(\n responseSwap: Partial,\n): Partial {\n const mappedSwapProperties: Partial = {\n isNonDeliverable: responseSwap.isNonDeliverable,\n };\n return clearUndefined(mappedSwapProperties);\n}\n\nfunction mapPriceReferenceFromTradeCapture(\n priceState: BidAsk | null,\n priceReferenceBid: number | null | undefined,\n priceReferenceAsk: number | null | undefined,\n): BidAsk | null | undefined {\n if (priceReferenceAsk === undefined && priceReferenceBid === undefined) {\n return undefined;\n }\n if (priceReferenceAsk === null && priceReferenceBid === null) {\n return null;\n }\n\n if (isDefined(priceReferenceBid) && isDefined(priceReferenceAsk)) {\n return {\n ask: priceReferenceAsk,\n bid: priceReferenceBid,\n };\n }\n\n if (priceState === null) {\n return {\n bid: isDefined(priceReferenceBid) ? priceReferenceBid : 0,\n ask: isDefined(priceReferenceAsk) ? priceReferenceAsk : 0,\n };\n } else {\n return {\n bid: isDefined(priceReferenceBid) ? priceReferenceBid : priceState.bid,\n ask: isDefined(priceReferenceAsk) ? priceReferenceAsk : priceState.ask,\n };\n }\n}\n","import { selectors } from 'state/selectors';\nimport { swapRfsExecuteRequestWith } from './swapRfsExecuteRequest';\nimport { swapRfsExecutionWith } from './swapRfsExecution';\nimport { swapTradeCaptureToBackendWith } from './tradeCaptureToBackend';\nimport { swapTradeCaptureFromBackendWith } from './tradeCaptureFromBackend';\n\nexport const swapRfsExecuteRequest = swapRfsExecuteRequestWith(selectors);\nexport const swapRfsExecution = swapRfsExecutionWith(selectors);\nexport const createSwapTradeCaptureToBackendRequest = swapTradeCaptureToBackendWith(selectors);\nexport const swapTCResponseToPatch = swapTradeCaptureFromBackendWith(selectors);\n","import type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type { ICashRfsCreateRequest } from '../../cash';\nimport { assertIsDefined } from '@sgme/fp';\n\ninterface QuoteRequestBuilderMetadata {\n quoteId: string;\n rfsId: string;\n}\n\ntype InjectedSelectorsKeys =\n | 'getCashCurrencyPair'\n | 'getCashState'\n | 'getClientForTile'\n | 'getCurrencyPrecision'\n | 'getCashProductName'\n | 'getConnectionId';\ntype InjectedSelectors = Pick;\n\nexport const metaSelectorQuoteRequestBuilderWith: MapStateToMetadataHOF<\n ICashRfsCreateRequest,\n QuoteRequestBuilderMetadata,\n AppState,\n InjectedSelectors\n> =\n sl =>\n (state, { quoteId, rfsId }) => {\n const { values } = sl.getCashState(state, quoteId);\n const { currencyPair, currency1, currency2, amount: negociatedAmount, maturityDate } = values;\n\n assertIsDefined(currencyPair, 'currencyPair is mandatory for pricing');\n assertIsDefined(currency1, 'currency1 is mandatory for pricing');\n assertIsDefined(currency2, 'currency2 is mandatory for pricing');\n assertIsDefined(negociatedAmount, 'amount is mandatory for pricing');\n assertIsDefined(maturityDate, 'maturityDate is mandatory for pricing');\n\n const clientId = sl.getClientForTile(state, quoteId).companyId;\n const currencyPrecision = sl.getCurrencyPrecision(state, currencyPair);\n const cashType = sl.getCashProductName(state, quoteId);\n if (cashType === null) {\n throw 'cash tile not found:' + quoteId;\n }\n const ndfData =\n values.isNonDeliverable === true\n ? {\n fixingDate: values.fixingDate ?? undefined,\n fixingCurrency: values.fixingCurrency ?? undefined,\n fixingSource: values.fixingSource ?? undefined,\n sndFixingSource: values.isCrossed ? values.sndFixingSource ?? undefined : undefined,\n xCurrency: values.isCrossed ? values.xCurrency ?? undefined : undefined,\n }\n : {\n fixingDate: undefined,\n fixingCurrency: undefined,\n fixingSource: undefined,\n sndFixingSource: undefined,\n xCurrency: undefined,\n };\n\n return {\n fxCashProduct: {\n currencyPair,\n currency1,\n currency2,\n negociatedAmount,\n negociatedCurrency: values.amountCurrency,\n expiryDate: new Date(maturityDate),\n spotPrecision: currencyPrecision,\n cashType,\n ...ndfData,\n },\n replyToStream: sl.getConnectionId(state),\n rfsId,\n requesterCounterpartyId: clientId,\n forceTradable: true,\n };\n };\n","import type { BidAskPair, CurrencyChoice, Possible, Way } from 'state/share/productModel/litterals';\nimport type { IFxExecutionState, IFxExecutionData } from 'state/executions/executionsStateModel';\nimport type { PredealCheck } from 'state/share/predealChecksModel';\nimport type { Collection } from 'typings/utils';\nimport type { IFormData } from 'state/share/form';\nimport type { IFxTileMetadata } from '../tile/fxTileModel';\nimport type { Patch } from 'state/share/patchModels';\n\n// data types\n// ////////////\n\nexport type QuoteType = 'Tradeable' | 'Indicative' | 'Withdraw';\n\n// entity types\n// //////////////\n\n// all properties are sent to TC - put transient info in metadata\n\nexport type CashTileStatus = 'NO_PRICE' | 'ESP_PRICING' | 'RFS_PRICING';\n\nexport interface IFxCashMarginMetadata {\n askMargin: number | null;\n bidMargin: number | null;\n askForwardMargin: number | null;\n bidForwardMargin: number | null;\n}\n\nexport interface IFxCashMetadata extends IFxTileMetadata, IFxCashMarginMetadata {\n markupCurrency: CurrencyChoice;\n isEspDefaultTiering: boolean | null;\n}\n\nexport interface IFxCashNdfValues {\n isNonDeliverable?: boolean;\n fixingDate: string | null;\n fixingSource: string | null;\n fixingCurrency: string | null;\n possibleFixingCurrencies: Possible | null;\n possibleFixingSources: Possible | null;\n isCrossed: boolean | null;\n possibleXCurrencies: Possible | null;\n possibleSndFixingSources: Possible | null;\n xCurrency: string | null;\n sndFixingSource: string | null;\n}\n\nexport interface IFxCashValues extends IFxCashNdfValues {\n productName: CashProductName;\n currencyPair: string | null;\n currency1: string | null;\n currency2: string | null;\n maturityDate: string | null;\n maturityDateTenor: string | null;\n amount: number | null;\n amountCurrency: CurrencyChoice;\n}\n\nexport interface IFxCashNdfInputs {\n isNonDeliverable: boolean | null;\n fixingSource: string | null;\n fixingCurrency: string | null;\n xCurrency: string | null;\n sndFixingSource: string | null;\n}\n\nexport interface IFxCashInputs extends IFxCashNdfInputs {\n currencyPair: string | null;\n amount: string | null;\n amountCurrency: CurrencyChoice;\n maturityDate: string | null;\n maturityDateTenor: string | null;\n}\n\nexport type FxCashProperties = IFormData;\n\nexport type FxCashState = Readonly<\n IFxCashMetadata & {\n dirtyFields: ReadonlyArray;\n } & FxCashProperties\n>;\n\n// for now, we only support a single strategy\n// therefore '0' is the only leg created.\n// this will change once multiple strategies will be implemented\nexport const emptyFxCashState: FxCashState = {\n values: {\n productName: 'FxSpot',\n currencyPair: null,\n currency1: null,\n currency2: null,\n amount: null,\n amountCurrency: 1,\n maturityDate: null,\n maturityDateTenor: null,\n isNonDeliverable: false,\n fixingSource: null,\n fixingDate: null,\n fixingCurrency: null,\n possibleFixingCurrencies: null,\n possibleFixingSources: null,\n isCrossed: null,\n possibleSndFixingSources: null,\n possibleXCurrencies: null,\n sndFixingSource: null,\n xCurrency: null,\n },\n errors: {},\n warnings: {},\n dirtyFields: [],\n inputs: {},\n propertiesRequested: false,\n propertiesRequestError: null,\n currentSessionId: null,\n isPriceable: false,\n currentStreamId: null,\n tradeCaptureIdVersion: null,\n lastStreamError: null,\n askMargin: null,\n bidMargin: null,\n askForwardMargin: null,\n bidForwardMargin: null,\n markupCurrency: 2,\n currentEspStreamId: null,\n isEspDefaultTiering: null,\n lastExecutedQuoteId: null,\n currentExecutionId: null,\n rfsStartedAt: null,\n priceRecords: [],\n};\n\nexport type CashProductName = 'FxSpot' | 'FxFwd' | 'FxNdf';\n\n// state types\n\nexport interface IFxCashsState {\n cashs: FxCashStateMap;\n streams: FxCashStreamMap;\n}\nexport type FxCashsState = Readonly;\n\nexport const emptyFxCashsState: FxCashsState = {\n cashs: {},\n streams: {},\n};\n\nexport type IFxCashStateMap = Collection;\nexport type FxCashStateMap = Readonly;\n\ntype IFxCashStreamMap = Collection;\nexport type FxCashStreamMap = Readonly;\n\n// ////////////////////\n\nexport type FxCashPatch = {\n productName: CashProductName;\n} & Patch;\n\n// ////////////////////////\n\nexport interface IQuote {\n quoteId: string;\n quoteType: QuoteType;\n rfsWindow: number;\n traderId: string | null;\n frontTimestamp: Date;\n backTimestamp: number;\n spotWithoutMargin: BidAskPair;\n spotWithMargin: BidAskPair;\n forwardPointsWithoutMargin: BidAskPair;\n forwardPointsWithMargin: BidAskPair;\n defaultForwardMarginPoints: BidAskPair;\n defaultSpotMargin: BidAskPair;\n midAllInRate: number | null;\n predealChecks: readonly PredealCheck[];\n}\n\nexport interface IQuoteCurrency {\n askAmount: number;\n bidAmount: number;\n}\n\ninterface IFxCashStreamAwaitingState {\n status: 'AWAITING';\n}\n\nexport interface IFxCashStreamStreamingState {\n status: 'PRICING';\n quote: Readonly;\n initialRfsWindow: number;\n tiering: string | null;\n}\n\nexport type IFxCashStreamState = IFxCashStreamAwaitingState | IFxCashStreamStreamingState;\n\nexport type FxCashStreamState = Readonly;\n\nexport interface IFxCashExecutionData extends IFxExecutionData {\n instrument: 'Cash';\n way: Way;\n notionalAmount: number;\n notionalCurrency: string;\n dealtRate: number;\n dealtRatePrecision: number;\n expiryDate: Date;\n expiryDateTenor: string;\n productName: CashProductName;\n swapPoints: number | undefined;\n spot: number | undefined;\n ndReference: string | undefined;\n ndFixingDate: string | undefined;\n}\n\nexport type FxCashExecutionState = IFxExecutionState & IFxCashExecutionData;\n\nexport interface ISpotMargin {\n ask: number;\n bid: number;\n}\n\nexport function assertIsPricing(\n streamState: IFxCashStreamState,\n): asserts streamState is IFxCashStreamStreamingState {\n if (streamState.status !== 'PRICING') {\n throw 'error: stream is not pricing';\n }\n}\n\nexport interface CashTileOpenFromBlotter {\n instrument: 'Cash';\n productName: CashProductName;\n currencyPair?: string | null;\n isNonDeliverable: boolean;\n amount?: number;\n amountCurrency?: CurrencyChoice;\n maturityDateTenor?: string;\n}\n","import type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type { CashRfsExecutePayload } from 'api/multipass/cash/rfs/cashRfsQuoteExecution';\nimport { getRelevantPriceFromBidAsk } from 'state/share/productModel/utils';\nimport type { Way } from 'state/share/productModel/litterals';\nimport type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport { getDateForMultipass } from 'utils/dateFormats';\nimport { assertIsPricing } from 'state/fxCashs/fxCashsModel';\nimport { isEmpty } from '@sgme/fp';\n\nexport const cashRfsExecuteRequestWith: MapStateToMetadataHOF<\n CashRfsExecutePayload,\n { cashId: string; way: Way; streamId: string; tradeDate: Date },\n AppState,\n Selectors\n> =\n sl =>\n (state, { cashId, way, streamId: rfsId, tradeDate }) => {\n const streamState = sl.getCashRfsStreamState(state, rfsId);\n assertIsPricing(streamState);\n const { quoteId, spotWithoutMargin: fullSpotWithoutMargin } = streamState.quote;\n\n const fullSpotWithMargin = sl.getCashRfsSpotPriceWithMargin(state, cashId);\n const forwardPtsWithMargin = sl.getCashRfsForwardPointsWithMargin(state, cashId);\n\n const replyToStream = sl.getConnectionId(state);\n\n const spotWithoutMargin = getRelevantPriceFromBidAsk(fullSpotWithoutMargin, way);\n const spotWithMargin = getRelevantPriceFromBidAsk(fullSpotWithMargin, way);\n const forwardPoints = getRelevantPriceFromBidAsk(forwardPtsWithMargin, way);\n const { emails, splitNotificationsEmailsCash, splitNotifications } =\n sl.getUserPreferenceData(state);\n let emailNotificationList;\n if (splitNotifications && !isEmpty(splitNotificationsEmailsCash)) {\n emailNotificationList = splitNotificationsEmailsCash.join(';');\n } else {\n emailNotificationList = emails.join(';');\n }\n const userLocalDateTime = getDateForMultipass(tradeDate);\n const lastQuoteFromBackTimestamp = streamState.quote.backTimestamp;\n const lastQuoteReceivedByFrontTimestamp = streamState.quote.frontTimestamp.getTime();\n const executionClickByFrontTimestamp = tradeDate.getTime();\n\n return {\n replyToStream,\n rfsId,\n quoteId,\n way,\n spotWithoutMargin,\n spotWithMargin,\n forwardPoints,\n emailNotificationList,\n userLocalDateTime,\n lastQuoteFromBackTimestamp,\n lastQuoteReceivedByFrontTimestamp,\n executionClickByFrontTimestamp,\n };\n };\n","import type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport { type IFxCashExecutionData, assertIsPricing } from 'state/fxCashs/fxCashsModel';\nimport type { IFxExecutionPendingState } from 'state/executions/executionsStateModel';\nimport { getRelevantPriceFromBidAsk } from 'state/share/productModel/utils';\nimport type { Way, BidAskPair } from 'state/share/productModel/litterals';\nimport { assertIsDefined } from '@sgme/fp';\nimport { fieldData } from 'utils/fieldSelectors';\n\nexport type CashRfsExecutionData = IFxCashExecutionData &\n IFxExecutionPendingState & { quoteId: string };\n\nexport const cashRfsExecutionWith: MapStateToMetadataHOF<\n CashRfsExecutionData,\n { cashId: string; way: Way; tradeDate: Date; streamId: string },\n AppState,\n Selectors\n> =\n sl =>\n (state, { cashId, way, tradeDate, streamId }) => {\n const ensureFieldIsDefined = (\n selector: (s: AppState, id: string) => { value: T | null | undefined },\n fieldName: string,\n ): T => {\n const { value } = selector(state, cashId);\n assertIsDefined(value, `${fieldName} needs to be defined for RFS execution`);\n return value;\n };\n\n const streamState = sl.getCashRfsStreamState(state, streamId);\n assertIsPricing(streamState);\n\n const fromBidAsk = (pair: BidAskPair) => getRelevantPriceFromBidAsk(pair, way);\n\n const productName = sl.getCashProductName(state, cashId);\n const { quoteId } = streamState.quote;\n\n const allIn = fromBidAsk(sl.getCashRfsAllInPrice(state, cashId));\n const spot =\n productName === 'FxFwd'\n ? fromBidAsk(sl.getCashRfsSpotPriceWithMargin(state, cashId))\n : undefined;\n const swapPoints =\n productName === 'FxFwd'\n ? fromBidAsk(sl.getCashRfsForwardPointsWithMargin(state, cashId))\n : undefined;\n\n const currencyPair = ensureFieldIsDefined(sl.getCashCurrencyPair, 'currencyPair');\n const precision = sl.getCurrencyPrecision(state, currencyPair);\n\n const notionalAmount = ensureFieldIsDefined(sl.getCashAmount, 'notionalAmount');\n const expiryDate = new Date(ensureFieldIsDefined(sl.getCashMaturityDate, 'maturityDate'));\n const expiryDateTenor = ensureFieldIsDefined(sl.getCashMaturityDateTenor, 'maturityDateTenor');\n\n const notionalCurrency = sl.getAmountCurrency(state, cashId);\n assertIsDefined(notionalCurrency, 'amountCurrency needs to be defined for RFS execution');\n\n const client = sl.getClientForTile(state, cashId);\n\n const ndReference = fieldData(sl.getCashFixingSource(state, cashId)).data ?? undefined;\n const ndFixingDate = sl.getCashFixingDate(state, cashId) ?? undefined;\n\n return {\n quoteId,\n instrument: 'Cash',\n status: 'Pending',\n currencyPair,\n way,\n notionalAmount,\n notionalCurrency,\n dealtRate: allIn,\n client,\n expiryDate,\n expiryDateTenor,\n dealtRatePrecision: precision,\n tradeDate,\n productName,\n swapPoints,\n spot,\n ndReference,\n ndFixingDate,\n };\n };\n","import type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type { TradeCaptureApiRequest } from 'api/tradeCapture/cash/tradeCapture';\nimport type {\n CashPropertiesChangedPatch,\n CashTradeCaptureRequestLegProperties,\n TradeCaptureCashRequestWrapper,\n} from 'api/tradeCapture/cash/tradeCaptureModel';\nimport type { CashProductName } from 'state/fxCashs/fxCashsModel';\nimport type { DateInputCultureInfo } from 'state/userPreferences';\nimport { parseWithCultureInfo } from 'utils/parseDateWithCultureInfo';\nimport { isDefined } from '@sgme/fp';\n\n// Mapping WEB APP => XONE-TC\nexport function mapCashPropertiesPatchToTCRequest(\n patch: CashPropertiesChangedPatch,\n idVersion: number,\n productName: CashProductName,\n cultureInfo: DateInputCultureInfo,\n): TradeCaptureCashRequestWrapper {\n const {\n legs: { 0: legPatch },\n ...productPatch\n } = patch;\n\n let tradeCapturelegPatch: Partial = {\n productName,\n };\n\n if (legPatch !== undefined) {\n const maturityDate =\n legPatch.maturityDate === undefined\n ? undefined\n : legPatch.maturityDate === null\n ? null\n : parseWithCultureInfo(cultureInfo, legPatch.maturityDate);\n\n tradeCapturelegPatch = {\n ...tradeCapturelegPatch,\n maturityDateString: maturityDate ?? legPatch.maturityDateTenor,\n isNonDeliverable: legPatch.isNonDeliverable!,\n fixingCurrency: legPatch.fixingCurrency,\n xCurrency: legPatch.xCurrency,\n fixingSource: legPatch.fixingSource,\n sndFixingSource: legPatch.sndFixingSource,\n };\n\n if (legPatch.amount !== undefined) {\n if (legPatch.amountCurrency === 1) {\n tradeCapturelegPatch.amount1String = legPatch.amount;\n } else if (legPatch.amountCurrency === 2) {\n tradeCapturelegPatch.amount2String = legPatch.amount;\n }\n }\n }\n\n return {\n idVersion,\n changedFields: {\n ...productPatch,\n legs: {\n 0: tradeCapturelegPatch,\n },\n },\n };\n}\n\nexport const cashBuildTradeCaptureRequestWith: MapStateToMetadataHOF<\n TradeCaptureApiRequest,\n {\n cashId: string;\n patch: CashPropertiesChangedPatch;\n getNewGuid: () => string;\n },\n AppState,\n Selectors\n> =\n sl =>\n (state, { cashId, getNewGuid, patch }) => {\n const currentSessionId = sl.getCashTradeCaptureCurrentSessionId(state, cashId);\n const sessionId = currentSessionId || getNewGuid();\n\n const productName = sl.getCashProductName(state, cashId);\n const { dateInputCultureInfo } = sl.getUserPreferenceData(state);\n if (productName === null) {\n throw 'cash tile not found:' + cashId;\n }\n\n if (\n isDefined(patch.legs[0]) &&\n isDefined(patch.legs[0].currencyPair) &&\n sl.getProductsAccess(state).nonDeliverable === false\n ) {\n patch.legs[0].isNonDeliverable = false;\n }\n\n const request: TradeCaptureCashRequestWrapper = mapCashPropertiesPatchToTCRequest(\n patch,\n 0,\n productName,\n dateInputCultureInfo,\n );\n\n return {\n sessionId,\n tileId: cashId,\n request,\n };\n };\n","import type {\n ErrorLegs,\n ITradeCaptureMetaData,\n Legs,\n TradeCaptureRequestWrapper,\n TradeCaptureResponseWrapper,\n} from '../tradeCaptureModel';\nimport type { CashProductName, FxCashPatch, IFxCashInputs } from 'state/fxCashs/fxCashsModel';\nimport type { CurrencyChoice, Possible } from 'state/share/productModel/litterals';\n\nexport type CashTradeCapturePatch = ITradeCaptureMetaData & FxCashPatch;\nexport type TradeCaptureCashRequestChanges = Legs;\nexport type TradeCaptureCashRequestWrapper =\n TradeCaptureRequestWrapper;\nexport type TradeCaptureCashResponseChanges =\n Partial &\n Legs;\nexport type TradeCaptureCashResponseWrapper = TradeCaptureResponseWrapper<\n TradeCaptureCashResponseChanges,\n TradeCaptureCashErrors\n>;\nexport type TradeCaptureCashErrors = ErrorLegs;\n\nexport const SpotProductName = 'FxSpot';\nexport const CashLegId = '0';\n\nexport interface CashTradeCaptureResponsechangedFieldsProperties {\n currencyPair: string;\n currency1: string;\n currency2: string;\n}\n\nexport interface CashTradeCaptureResponseLegProperties {\n productName: CashProductName;\n currencyPair: string;\n currency1: string;\n currency2: string;\n isReadyToPrice: boolean;\n isPriceObsolete: boolean;\n maturityDate: string;\n maturityDateTenor: string;\n negotiatedCurrency: CurrencyChoice;\n amount1: number | null;\n amount2: number | null;\n isNonDeliverable: boolean;\n fixingSource: string;\n fixingDate: string;\n fixingCurrency: string;\n possibleFixingCurrencies: Possible;\n possibleFixingSources: Possible;\n isCrossed: boolean;\n possibleXCurrencies: Possible;\n possibleSndFixingSources: Possible;\n xCurrency: string;\n sndFixingSource: string;\n}\n\nexport interface CashTradeCaptureRequestLegProperties {\n currencyPair: string | null;\n productName: CashProductName;\n maturityDateString: string | null;\n amount1String: string | null;\n amount2String: string | null;\n isNonDeliverable: boolean | null;\n fixingCurrency: string | null;\n fixingSource: string | null;\n xCurrency: string | null;\n sndFixingSource: string | null;\n}\n\ninterface PatchLeg {\n // cash legId\n 0: Partial;\n}\n\ninterface PatchLegs {\n currencyPair?: string | null;\n legs: Partial;\n}\n\nexport type CashPropertiesChangedPatch = PatchLegs;\n\nexport interface ICashPropertiesChangedPatch {\n cashId: string;\n patch: CashPropertiesChangedPatch;\n}\n","import {\n CashLegId,\n type ICashPropertiesChangedPatch,\n} from 'api/tradeCapture/cash/tradeCaptureModel';\nimport type { TileInstrumentChanged } from 'state/clientWorkspace/clientWorkspaceActions';\nimport type {\n CashPropertiesChanged,\n CashTileOpenFromBlotterEpic,\n CashTileRestoreEpic,\n} from 'state/fxCashs/fxCashsActions';\n\nexport function cashLegPropertiesChangedToTCPatch({\n cashId,\n patch,\n}: CashPropertiesChanged): ICashPropertiesChangedPatch {\n const { currencyPair, ...legPatch } = patch;\n\n return {\n cashId,\n patch: {\n currencyPair,\n legs: {\n [CashLegId]: legPatch,\n },\n },\n };\n}\n\nexport function cashTileRestoreToTCPatch(\n action: CashTileRestoreEpic,\n): ICashPropertiesChangedPatch[] {\n return Object.entries(action.tiles).map(([cashId, tile]) => ({\n cashId,\n patch: {\n currencyPair: tile.currencyPair,\n legs: {\n [CashLegId]: {\n maturityDate: tile.maturityDateTenor,\n amountCurrency: tile.amountCurrency,\n amount: tile.amount?.toString(),\n isNonDeliverable: tile.isNonDeliverable,\n },\n },\n },\n }));\n}\n\nexport function cashTileOpenFromBlotter({\n tileId,\n tile,\n}: CashTileOpenFromBlotterEpic): ICashPropertiesChangedPatch {\n return {\n cashId: tileId,\n patch: {\n currencyPair: tile.currencyPair,\n legs: {\n [CashLegId]: {\n maturityDate: tile.maturityDateTenor,\n amountCurrency: tile.amountCurrency,\n amount: tile.amount?.toString(),\n isNonDeliverable: tile.isNonDeliverable,\n },\n },\n },\n };\n}\n\nexport function cashTileIntrumentChangedToPatch({\n tileId,\n currencyPair,\n}: TileInstrumentChanged): ICashPropertiesChangedPatch {\n return {\n cashId: tileId,\n patch: {\n currencyPair,\n legs: {\n [CashLegId]: {},\n },\n },\n };\n}\n","import { selectors } from 'state/selectors';\nimport { metaSelectorQuoteRequestBuilderWith } from './buildQuoteRequest';\nimport { cashRfsExecuteRequestWith } from './cashRfsExecuteRequest';\nimport { cashRfsExecutionWith } from './cashRfsExecution';\nimport { cashBuildTradeCaptureRequestWith } from './buildTradeCaptureRequest';\nexport * from './tradeCaptureToBackend';\n\nexport const cashBuildQuoteRequest = metaSelectorQuoteRequestBuilderWith(selectors);\nexport const cashRfsExecuteRequest = cashRfsExecuteRequestWith(selectors);\nexport const cashRfsExecution = cashRfsExecutionWith(selectors);\nexport const cashBuildTradeCaptureRequest = cashBuildTradeCaptureRequestWith(selectors);\n","import { format, isValid } from 'date-fns';\nimport { toUtc } from 'utils/dateFormats';\n\nfunction dayAndTimeToDate(day: string, time: string) {\n const normalizedTime = time\n .split(':')\n .map(part => part.padStart(2, '0'))\n .join(':');\n const dateTimeString = `${day}T${normalizedTime}`;\n return new Date(dateTimeString);\n}\n\nexport function getUtcExpiry(isGtc: boolean, expiryDay: string | undefined, expiryTime = '') {\n if (isGtc) {\n return {\n expiryDay: undefined,\n expiryTime: undefined,\n };\n }\n const expiry = dayAndTimeToDate(expiryDay ?? '', expiryTime);\n if (!isValid(expiry)) {\n // In case of an invalid date, we only send the day to provoke a validation failure\n return {\n expiryDay,\n expiryTime: undefined,\n };\n }\n const utcExpiry = toUtc(expiry);\n return {\n expiryDay: format(utcExpiry, 'yyyy-MM-dd'),\n expiryTime: format(utcExpiry, 'HH:mm:ss'),\n };\n}\n\nexport function dateAndTimeToUtc(day = '', time = '') {\n const localDateTime = dayAndTimeToDate(day, time);\n return toUtc(localDateTime);\n}\n","import { isNotDefined } from '@sgme/fp';\nimport type * as blotterOrderSelectors from 'state/blotter/selectors';\nimport { isAlgoOrder } from 'state/fxOrders/fxOrdersModel';\nimport type { AppState } from 'state/model';\nimport { getFullDateForOMS } from 'utils/dateFormats';\nimport { fieldData } from 'utils/fieldSelectors';\nimport { dateAndTimeToUtc } from '../order/utils';\n\ntype ValueOf = T[keyof T];\n\ntype BlotterOrderSelectors = typeof blotterOrderSelectors;\n\nexport function getDatesDataHOF(sl: BlotterOrderSelectors) {\n return (state: AppState, orderId: string) => {\n const get = (selector: ValueOf>) =>\n fieldData(selector(state, orderId)).data ?? undefined;\n const startDate = get(sl.getBlotterOrderStartDate);\n const startTime = get(sl.getBlotterOrderStartTime);\n const endDate = get(sl.getBlotterOrderEndDate);\n const endTime = get(sl.getBlotterOrderEndTime);\n return {\n startDateUtc: getFullDateForOMS(dateAndTimeToUtc(startDate, startTime)),\n endDateUtc: getFullDateForOMS(dateAndTimeToUtc(endDate, endTime)),\n };\n };\n}\n\nexport function getEditedDatesDataHOF(sl: BlotterOrderSelectors) {\n return (state: AppState, orderId: string) => {\n const get = (selector: ValueOf>) =>\n fieldData(selector(state, orderId)).data ?? undefined;\n const startDate = get(sl.getBlotterEditedOrderStartDate);\n const startTime = get(sl.getBlotterEditedOrderStartTime);\n const endDate = get(sl.getBlotterEditedOrderEndDate);\n const endTime = get(sl.getBlotterEditedOrderEndTime);\n\n return {\n startDateUtc: getFullDateForOMS(dateAndTimeToUtc(startDate, startTime)),\n endDateUtc: getFullDateForOMS(dateAndTimeToUtc(endDate, endTime)),\n };\n };\n}\n\nexport function getAmountsHOF(sl: BlotterOrderSelectors) {\n return (state: AppState, orderId: string) => {\n const amountCurrency = sl.getBlotterOrderNotionalCurrency(state, orderId);\n if (amountCurrency === null) {\n throw new Error(`amountCurrency shoud not be null for order ${orderId}`);\n }\n const currencyPair = sl.getBlotterOrderCurrencyPair(state, orderId);\n if (currencyPair === null) {\n throw new Error(`currencyPair shoud not be null for order ${orderId}`);\n }\n const isFirstCurrency = currencyPair.indexOf(amountCurrency) === 0;\n const notional = fieldData(sl.getBlotterOrderNotionalInput(state, orderId)).data;\n const amount = notional !== null ? Number(notional) : undefined;\n return {\n amountInCcy1: isFirstCurrency ? amount : undefined,\n amountInCcy2: !isFirstCurrency ? amount : undefined,\n };\n };\n}\n\nexport function getEditedAmountsHOF(sl: BlotterOrderSelectors) {\n return (state: AppState, orderId: string) => {\n const amountCurrency = sl.getBlotterEditedOrderNotionalCurrency(state, orderId);\n if (amountCurrency === null) {\n throw new Error(`amountCurrency shoud not be null for order ${orderId}`);\n }\n const currencyPair = sl.getBlotterOrderCurrencyPair(state, orderId);\n if (currencyPair === null) {\n throw new Error(`currencyPair shoud not be null for order ${orderId}`);\n }\n const isFirstCurrency = currencyPair.indexOf(amountCurrency) === 0;\n const notional = fieldData(sl.getBlotterEditedOrderNotionalInput(state, orderId)).data;\n const amount = notional !== null ? Number(notional) : undefined;\n return {\n amountInCcy1: isFirstCurrency ? amount : undefined,\n amountInCcy2: !isFirstCurrency ? amount : undefined,\n };\n };\n}\n\nexport function getLimitPriceHOF(sl: BlotterOrderSelectors) {\n return (state: AppState, orderId: string) => {\n const orderType = fieldData(sl.getBlotterOrderProduct(state, orderId)).data;\n const sharedProperty = isAlgoOrder(orderType)\n ? sl.getBlotterOrderNoWorseThan(state, orderId)\n : sl.getBlotterOrderLimitPriceInput(state, orderId);\n const data = fieldData(sharedProperty)?.data;\n\n if (data === undefined || typeof data === 'string') {\n return data;\n }\n\n return `${data}`;\n };\n}\n\nexport function getEditedLimitPriceHOF(sl: BlotterOrderSelectors) {\n return (state: AppState, orderId: string) => {\n const orderType = fieldData(sl.getBlotterOrderProduct(state, orderId)).data;\n const sharedProperty = isAlgoOrder(orderType)\n ? sl.getBlotterEditedOrderNoWorseThan(state, orderId)\n : sl.getBlotterEditedOrderLimitPriceInput(state, orderId);\n const data = fieldData(sharedProperty)?.data;\n\n if (data === undefined || typeof data === 'string') {\n return data;\n }\n\n return `${data}`;\n };\n}\n\nexport function getClipDataHOF(sl: BlotterOrderSelectors) {\n return (state: AppState, orderId: string) => {\n const clippingMode = fieldData(sl.getBlotterOrderClippingMode(state, orderId))?.data;\n if (isNotDefined(clippingMode)) {\n return { clippingMode: undefined, clipSize: undefined };\n }\n if (clippingMode !== 'Manual') {\n return { clippingMode, clipSize: undefined };\n }\n const rowClipSize = fieldData(sl.getBlotterOrderClipSize(state, orderId)).data;\n const clipSize = typeof rowClipSize === 'string' ? Number(rowClipSize) : rowClipSize ?? undefined;\n return { clippingMode, clipSize };\n };\n}\n\nexport function getEditedClipDataHOF(sl: BlotterOrderSelectors) {\n return (state: AppState, orderId: string) => {\n const clippingMode = fieldData(sl.getBlotterEditedOrderClippingModeInput(state, orderId))?.data;\n if (isNotDefined(clippingMode)) {\n return { clippingMode: undefined, clipSize: undefined };\n }\n if (clippingMode !== 'Manual') {\n return { clippingMode, clipSize: undefined };\n }\n const rowClipSize = fieldData(sl.getBlotterEditedOrderClipSizeInput(state, orderId)).data;\n const clipSize = typeof rowClipSize === 'string' ? Number(rowClipSize) : rowClipSize ?? undefined;\n return { clippingMode, clipSize };\n };\n}\n","import type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport type { AppState } from 'state/model';\nimport type { OmsOrderModifyRequest } from 'api/order/oms';\nimport { fieldData } from 'utils/fieldSelectors';\nimport {\n getEditedAmountsHOF,\n getEditedClipDataHOF,\n getEditedDatesDataHOF,\n getEditedLimitPriceHOF,\n} from './blotterOrderGetters';\nimport * as orderMetaSelectors from 'state/blotter/selectors';\n\ntype OrderMetaSelectors = typeof orderMetaSelectors;\n\nexport const metaSelectorBlotterOrderModifyData: MapStateToMetadataHOF<\n OmsOrderModifyRequest,\n { orderId: string },\n AppState,\n OrderMetaSelectors\n> = sl => {\n const getAmounts = getEditedAmountsHOF(sl);\n const getClipData = getEditedClipDataHOF(sl);\n const getLimitPrice = getEditedLimitPriceHOF(sl);\n const getDatesData = getEditedDatesDataHOF(sl);\n\n return (state, { orderId }) => {\n const orderType = fieldData(sl.getBlotterOrderProduct(state, orderId)).data;\n const fixingMarginType = fieldData(sl.getBlotterEditedOrderFixingMarginTypeInput(state, orderId)).data ?? undefined;\n\n const isInternalSales = state.referenceData.userInfo.userType === 'Internal Sales';\n const isTakeProfit = orderType === 'TakeProfit';\n const margin =\n isInternalSales && isTakeProfit\n ? fieldData(sl.getBlotterEditedOrderTakeProfitMarginInput(state, orderId)).data\n : undefined;\n const way = sl.getBlotterOrderWay(state, orderId);\n\n return orderType === 'Fixing'\n ? {\n orderType,\n payload: {\n orderRef: orderId,\n ...getAmounts(state, orderId),\n ccyPair: sl.getBlotterOrderCurrencyPair(state, orderId),\n fixingPriceType: fieldData(sl.getBlotterEditedOrderFixingPriceTypeInput(state, orderId)).data ?? undefined,\n fixingTime: fieldData(sl.getBlotterOrderFixingTime(state, orderId)).data ?? undefined,\n fixingPlace: fieldData(sl.getBlotterOrderFixingPlace(state, orderId)).data ?? undefined,\n fixingMarginType,\n marginInBps:\n fixingMarginType === 'MarginInBps'\n ? Number(fieldData(sl.getBlotterEditedOrderMarginInBpsInput(state, orderId)).data) ?? undefined\n : undefined,\n fixingDateUtc: sl.getBlotterOrderFixingDateUtc(state, orderId) ?? undefined,\n fixingBenchmark: fieldData(sl.getBlotterOrderFixingBenchmark(state, orderId)).data ?? undefined,\n },\n }\n : {\n orderType: fieldData(sl.getBlotterEditedOrderProduct(state, orderId)).data ?? undefined,\n payload: {\n orderRef: orderId,\n way: way === null ? undefined : way.toLocaleLowerCase(),\n ccyPair: sl.getBlotterOrderCurrencyPair(state, orderId),\n limitPrice: getLimitPrice(state, orderId),\n customerPrice:\n fieldData(sl.getBlotterEditedOrderCustomerPriceInput(state, orderId)).data?.toString() ?? undefined,\n margin,\n ...(orderType !== 'Call' ? getAmounts(state, orderId) : undefined),\n ...getDatesData(state, orderId),\n liquidityPool: fieldData(sl.getBlotterOrderLiquidityPool(state, orderId)).data?.join(',') ?? undefined,\n ...getClipData(state, orderId),\n dodging: fieldData(sl.getBlotterEditedOrderRandomize(state, orderId)).data ?? undefined,\n spreadCapture: fieldData(sl.getBlotterEditedOrderSpreadCapture(state, orderId)).data ?? undefined,\n speed: fieldData(sl.getBlotterEditedOrderSpeed(state, orderId)).data ?? undefined,\n alphaSeeker: fieldData(sl.getBlotterEditedOrderAlphaSeeker(state, orderId)).data ?? undefined,\n },\n };\n };\n};\n\nexport const getBlotterOrderModify = metaSelectorBlotterOrderModifyData(orderMetaSelectors);\n","import { isDefined } from '@sgme/fp';\nimport type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport type { AppState } from 'state/model';\nimport { fieldData } from 'utils/fieldSelectors';\nimport type { OmsOrderSubmissionPayload, OrderRequestPayload } from 'api/order/oms';\nimport { clearUndefined } from 'utils/clearUndefined';\nimport { isLimitOrder } from 'state/fxOrders/fxOrdersModel';\nimport type { Side } from 'state/share/productModel/litterals';\nimport {\n getAmountsHOF,\n getClipDataHOF,\n getDatesDataHOF,\n getEditedAmountsHOF,\n getEditedClipDataHOF,\n getEditedDatesDataHOF,\n getEditedLimitPriceHOF,\n getLimitPriceHOF,\n} from './blotterOrderGetters';\nimport * as orderMetaSelectors from 'state/blotter/selectors';\nimport { getUtcExpiry } from '../order/utils';\n\nexport type OrderMetaSelectors = typeof orderMetaSelectors;\n\n// ---------------------------------------------------------------------------------\n// Public meta selector\n// ---------------------------------------------------------------------------------\n\ninterface Parameters {\n getNewGuid(): string;\n}\n\nexport const metaSelectorBlotterOrderToBackend: MapStateToMetadataHOF<\n OrderRequestPayload,\n Parameters & { orderId: string },\n AppState,\n OrderMetaSelectors\n> = sl => {\n const makeOrderTypeToBackendPayload = makeOrderTypeToBackendPayloadWith(sl);\n return (state, { getNewGuid, orderId }) => {\n const product = sl.getBlotterOrderProduct(state, orderId);\n const orderTypeSpecificPayload = makeOrderTypeToBackendPayload(state, orderId);\n\n const notional = fieldData(sl.getBlotterOrderNotionalInput(state, orderId)).data;\n const currencyPair = sl.getBlotterOrderCurrencyPair(state, orderId);\n const way = sl.getBlotterOrderWay(state, orderId);\n const notionalCurrency = sl.getBlotterOrderNotionalCurrency(state, orderId);\n const currencyNumber = currencyPair?.split('/').indexOf(notionalCurrency ?? '');\n const payload: Partial = {\n isGtc: fieldData(sl.getBlotterOrderIsGtc(state, orderId)).data ?? undefined,\n bdrId: sl.getBlotterOrderAccount(state, orderId) ?? undefined,\n amountInCcy1: currencyNumber === 0 && notional !== null ? Number(notional) : undefined,\n amountInCcy2: currencyNumber === 1 && notional !== null ? Number(notional) : undefined,\n ccyPair: currencyPair ?? undefined,\n way: way === null ? undefined : toOmsSide(way),\n limitPrice: isLimitOrder(product.value)\n ? fieldData(sl.getBlotterOrderLimitPriceInput(state, orderId)).data?.toString() ?? undefined\n : undefined,\n ...orderTypeSpecificPayload,\n };\n\n return {\n orderType: product.value,\n payload: clearUndefined(payload),\n correlationId: `${orderId}/${getNewGuid()}`,\n };\n };\n};\n\nexport const metaSelectorBlotterEditedOrderToBackend: MapStateToMetadataHOF<\n OrderRequestPayload,\n Parameters & { orderId: string },\n AppState,\n OrderMetaSelectors\n> = sl => {\n const makeOrderTypeToBackendPayload = makeEditedOrderTypeToBackendPayloadWith(sl);\n\n return (state, { getNewGuid, orderId }) => {\n const product = fieldData(sl.getBlotterEditedOrderProduct(state, orderId)).data;\n const orderTypeSpecificPayload = makeOrderTypeToBackendPayload(state, orderId);\n const notional = fieldData(sl.getBlotterEditedOrderNotionalInput(state, orderId)).data;\n const currencyPair = sl.getBlotterOrderCurrencyPair(state, orderId);\n const way = sl.getBlotterOrderWay(state, orderId);\n const notionalCurrency = sl.getBlotterEditedOrderNotionalCurrency(state, orderId);\n const currencyNumber = currencyPair?.split('/').indexOf(notionalCurrency ?? '');\n const payload: Partial = {\n isGtc: fieldData(sl.getBlotterEditedOrderIsGtc(state, orderId)).data ?? undefined,\n bdrId: sl.getBlotterOrderAccount(state, orderId) ?? undefined,\n amountInCcy1: currencyNumber === 0 && notional !== null ? Number(notional) : undefined,\n amountInCcy2: currencyNumber === 1 && notional !== null ? Number(notional) : undefined,\n ccyPair: currencyPair ?? undefined,\n way: way === null ? undefined : toOmsSide(way),\n limitPrice: isLimitOrder(product)\n ? fieldData(sl.getBlotterEditedOrderLimitPriceInput(state, orderId)).data?.toString() ?? undefined\n : undefined,\n ...orderTypeSpecificPayload,\n };\n\n return {\n orderType: product,\n payload: clearUndefined(payload),\n correlationId: `${orderId}/${getNewGuid()}`,\n };\n };\n};\n\nfunction toOmsSide(side: Side) {\n return side === 'Buy' ? 'buy' : 'sell';\n}\n\nconst makeOrderTypeToBackendPayloadWith = (sl: OrderMetaSelectors) => {\n const getAmounts = getAmountsHOF(sl);\n const getClipData = getClipDataHOF(sl);\n const getLimitPrice = getLimitPriceHOF(sl);\n const getDatesData = getDatesDataHOF(sl);\n\n return (state: AppState, orderId: string): Partial => {\n const orderType = sl.getBlotterOrderProduct(state, orderId).value;\n const fixingPriceType = fieldData(sl.getBlotterOrderFixingPriceTypeInput(state, orderId)).data ?? undefined;\n\n const isInternalSales = state.referenceData.userInfo.userType === 'Internal Sales';\n const isTakeProfitOrder = orderType === 'TakeProfit';\n const takeProfitMargin = fieldData(sl.getBlotterOrderTakeProfitMarginInput(state, orderId)).data;\n\n const isGtc = fieldData(sl.getBlotterOrderIsGtc(state, orderId)).data;\n\n const expiryDay = isGtc === true ? undefined : sl.getBlotterOrderExpiryDay(state, orderId) ?? undefined;\n const expiryTime = isGtc === true ? undefined : sl.getBlotterOrderExpiryTime(state, orderId);\n const utcExpiry = getUtcExpiry(isGtc ?? false, expiryDay, expiryTime ?? undefined);\n const orderTypeWithUtcExpiry = ['TakeProfit', 'StopLoss', 'Call'];\n const applicableUtcExpiry = orderTypeWithUtcExpiry.includes(orderType) ? utcExpiry : {};\n\n switch (orderType) {\n case 'Fixing':\n const marginInBps = fieldData(sl.getBlotterOrderMarginInBpsInput(state, orderId)).data;\n return {\n fixingBenchmark: fieldData(sl.getBlotterOrderFixingBenchmark(state, orderId)).data ?? undefined,\n fixingPriceType,\n fixingDateUtc: sl.getBlotterOrderFixingDateUtc(state, orderId) ?? undefined,\n fixingTime: fieldData(sl.getBlotterOrderFixingTime(state, orderId)).data ?? undefined,\n fixingPlace: fieldData(sl.getBlotterOrderFixingPlace(state, orderId)).data ?? undefined,\n marginInBps: isDefined(marginInBps) ? Number(marginInBps) : undefined,\n fixingMarginType:\n fixingPriceType === 'BIDASK'\n ? 'MarginInBps'\n : fieldData(sl.getBlotterOrderFixingMarginTypeInput(state, orderId)).data ?? undefined,\n limitPrice: undefined,\n };\n default:\n return {\n ccyPair: sl.getBlotterOrderCurrencyPair(state, orderId),\n limitPrice: getLimitPrice(state, orderId),\n customerPrice: fieldData(sl.getBlotterOrderCustomerPriceInput(state, orderId))?.data?.toString() ?? undefined,\n margin: isInternalSales && isTakeProfitOrder ? Number(takeProfitMargin) : undefined,\n ...(orderType !== 'Call' ? getAmounts(state, orderId) : undefined),\n ...getDatesData(state, orderId),\n liquidityPool: fieldData(sl.getBlotterOrderLiquidityPool(state, orderId)).data?.join(',') ?? undefined,\n ...getClipData(state, orderId),\n dodging: fieldData(sl.getBlotterOrderRandomize(state, orderId)).data ?? undefined,\n spreadCapture: fieldData(sl.getBlotterOrderSpreadCapture(state, orderId)).data ?? undefined,\n speed: fieldData(sl.getBlotterOrderSpeed(state, orderId)).data ?? undefined,\n alphaSeeker: fieldData(sl.getBlotterOrderAlphaSeeker(state, orderId)).data ?? undefined,\n ...applicableUtcExpiry,\n };\n }\n };\n};\n\nconst makeEditedOrderTypeToBackendPayloadWith = (sl: OrderMetaSelectors) => {\n const getAmounts = getEditedAmountsHOF(sl);\n const getClipData = getEditedClipDataHOF(sl);\n const getLimitPrice = getEditedLimitPriceHOF(sl);\n const getDatesData = getEditedDatesDataHOF(sl);\n\n return (state: AppState, orderId: string): Partial => {\n const orderType = sl.getBlotterOrderProduct(state, orderId).value;\n const fixingPriceType = fieldData(sl.getBlotterEditedOrderFixingPriceTypeInput(state, orderId)).data ?? undefined;\n\n const isInternalSales = state.referenceData.userInfo.userType === 'Internal Sales';\n const isTakeProfitOrder = orderType === 'TakeProfit';\n const takeProfitMargin = fieldData(sl.getBlotterEditedOrderTakeProfitMarginInput(state, orderId)).data;\n\n const isGtc = fieldData(sl.getBlotterEditedOrderIsGtc(state, orderId)).data;\n\n const expiryDay = isGtc === true ? undefined : sl.getBlotterOrderExpiryDay(state, orderId) ?? undefined;\n const expiryTime = isGtc === true ? undefined : sl.getBlotterOrderExpiryTime(state, orderId);\n const utcExpiry = getUtcExpiry(isGtc ?? false, expiryDay, expiryTime ?? undefined);\n const orderTypeWithUtcExpiry = ['TakeProfit', 'StopLoss', 'Call'];\n const applicableUtcExpiry = orderTypeWithUtcExpiry.includes(orderType) ? utcExpiry : {};\n\n switch (orderType) {\n case 'Fixing':\n const marginInBps = fieldData(sl.getBlotterEditedOrderMarginInBpsInput(state, orderId)).data;\n return {\n fixingBenchmark: fieldData(sl.getBlotterOrderFixingBenchmark(state, orderId)).data ?? undefined,\n fixingPriceType,\n fixingDateUtc: sl.getBlotterOrderFixingDateUtc(state, orderId) ?? undefined,\n fixingTime: fieldData(sl.getBlotterOrderFixingTime(state, orderId)).data ?? undefined,\n fixingPlace: fieldData(sl.getBlotterOrderFixingPlace(state, orderId)).data ?? undefined,\n marginInBps: isDefined(marginInBps) ? Number(marginInBps) : undefined,\n fixingMarginType:\n fixingPriceType === 'BIDASK'\n ? 'MarginInBps'\n : fieldData(sl.getBlotterEditedOrderFixingMarginTypeInput(state, orderId)).data ?? undefined,\n limitPrice: undefined,\n };\n default:\n return {\n ccyPair: sl.getBlotterOrderCurrencyPair(state, orderId),\n limitPrice: getLimitPrice(state, orderId),\n customerPrice:\n fieldData(sl.getBlotterEditedOrderCustomerPriceInput(state, orderId))?.data?.toString() ?? undefined,\n margin: isInternalSales && isTakeProfitOrder ? Number(takeProfitMargin) : undefined,\n ...(orderType !== 'Call' ? getAmounts(state, orderId) : undefined),\n ...getDatesData(state, orderId),\n liquidityPool: fieldData(sl.getBlotterOrderLiquidityPool(state, orderId)).data?.join(',') ?? undefined,\n ...getClipData(state, orderId),\n dodging: fieldData(sl.getBlotterEditedOrderRandomize(state, orderId)).data ?? undefined,\n spreadCapture: fieldData(sl.getBlotterEditedOrderSpreadCapture(state, orderId)).data ?? undefined,\n speed: fieldData(sl.getBlotterEditedOrderSpeed(state, orderId)).data ?? undefined,\n alphaSeeker: fieldData(sl.getBlotterEditedOrderAlphaSeeker(state, orderId)).data ?? undefined,\n ...applicableUtcExpiry,\n };\n }\n };\n};\n\nexport const getOrderRequestFromBlotter = metaSelectorBlotterOrderToBackend(orderMetaSelectors);\nexport const getEditedOrderRequestFromBlotter = metaSelectorBlotterEditedOrderToBackend(orderMetaSelectors);\n","import type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport type { AppState } from 'state/model';\nimport type { OmsOrderSimpleRequest } from 'api/order/oms';\nimport { fieldData } from 'utils/fieldSelectors';\nimport { getBlotterOrderProduct } from 'state/blotter/selectors/blotterOrderSelectors';\n\nconst orderMetaSelectors = { getBlotterOrderProduct };\nexport type OrderMetaSelectors = typeof orderMetaSelectors;\n\nexport const metaSelectorBlotterOrderSimpleRequestData: MapStateToMetadataHOF<\n OmsOrderSimpleRequest,\n { orderId: string },\n AppState,\n OrderMetaSelectors\n> =\n sl =>\n (state, { orderId }) => ({\n orderType: fieldData(sl.getBlotterOrderProduct(state, orderId)).data,\n payload: {\n orderRef: orderId,\n },\n });\n\nexport const getBlotterOrderSimpleRequest =\n metaSelectorBlotterOrderSimpleRequestData(orderMetaSelectors);\n","import type { LogDealInfoLeg, LogInstrumentType } from 'api/eventLog';\nimport type { FxExecutionState } from 'state/executions/executionsModel';\n\nexport function getLogInstrumentType(execution: FxExecutionState): LogInstrumentType {\n if (execution.instrument === 'Cash') {\n return execution.productName === 'FxSpot' ? 'Spot' : 'Forward';\n }\n return execution.instrument;\n}\n\nexport function getLegDealInfo(execution: FxExecutionState): readonly LogDealInfoLeg[] {\n switch (execution.instrument) {\n case 'Cash':\n return [\n {\n index: 'Default',\n negotiatedAmount: execution.notionalAmount,\n negotiatedCurrency: execution.notionalCurrency,\n },\n ];\n case 'Option':\n const [ccy1, ccy2] = execution.currencyPair.split('/');\n return Object.entries(execution.legs).map(([lkey, lvalue]) => {\n return {\n index: lkey,\n negotiatedAmount: lvalue.notionalAmount!,\n negotiatedCurrency: lvalue.notionalCurrency === 1 ? ccy1 : ccy2,\n };\n });\n case 'Swap':\n return [\n {\n index: 'Near',\n negotiatedAmount: execution.nearNotionalAmount,\n negotiatedCurrency: execution.notionalCurrency,\n },\n {\n index: 'Far',\n negotiatedAmount: execution.farNotionalAmount,\n negotiatedCurrency: execution.notionalCurrency,\n },\n ];\n }\n return [];\n}\n","import type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport type { EventLog, LogLevel } from 'api/eventLog';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport { getLegDealInfo, getLogInstrumentType } from './tools';\n\ntype SelectorKeys = 'getUserInfo' | 'getExecutionById' | 'hasExecution';\n\nexport type InjectedSelectors = Pick;\nexport interface PendingEventLogRequest {\n type: LogLevel;\n data: EventLog;\n}\n\nexport interface PendingEventLogShell {\n executionId: string;\n reason: string;\n}\n\nexport const metaSelectorBuildPendingExecutionEventLogWith: MapStateToMetadataHOF<\n PendingEventLogRequest | undefined,\n PendingEventLogShell,\n AppState,\n InjectedSelectors\n> =\n sl =>\n (state, { executionId, reason }) => {\n if (!sl.hasExecution(state, executionId)) {\n return;\n }\n const execution = sl.getExecutionById(state, executionId);\n const [currency1, currency2] = execution.currencyPair.split('/');\n\n const instrument = getLogInstrumentType(execution);\n const legs = getLegDealInfo(execution);\n const log: EventLog = {\n login: sl.getUserInfo(state).login || 'Unknown',\n userAction: 'Execution',\n actionOutcome: 'Pending',\n correlationId: executionId,\n dealInfo: {\n clientId: execution.client.companyId.toString(),\n clientName: execution.client.companyName,\n currency1,\n currency2,\n legs,\n },\n instrument,\n additionalData: {\n reason,\n },\n };\n return { type: 'warn', data: log };\n };\n","import type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\n\nexport interface ExecutionPendingMailPayload {\n productType: string;\n tradeDate: Date;\n currencyPair: string;\n clientId: number;\n}\n\nexport const metaSelectorBuildExecutionPendingMailPayloadWith: MapStateToMetadataHOF<\n ExecutionPendingMailPayload,\n string,\n AppState,\n Selectors\n> = sl => (state, executionId) => {\n const execution = sl.getExecutionById(state, executionId);\n return {\n clientId: execution.client.companyId,\n tradeDate: execution.tradeDate,\n productType: execution.instrument,\n currencyPair: execution.currencyPair,\n };\n};\n","import type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport type { EventLog, LogLevel } from 'api/eventLog';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport { getLegDealInfo, getLogInstrumentType } from './tools';\n\ntype SelectorKeys = 'getUserInfo' | 'getExecutionById' | 'hasExecution';\n\nexport type InjectedSelectors = Pick;\nexport interface ApiTimeoutExecutionEventLogRequest {\n type: LogLevel;\n data: EventLog;\n}\n\nexport interface ApiTimeoutExecutionEventLogShell {\n executionId: string;\n reason: string;\n}\n\nexport const metaSelectorBuildApiErrorExecutionEventLogWith: MapStateToMetadataHOF<\n ApiTimeoutExecutionEventLogRequest | undefined,\n ApiTimeoutExecutionEventLogShell,\n AppState,\n InjectedSelectors\n> =\n sl =>\n (state, { executionId, reason }) => {\n if (!sl.hasExecution(state, executionId)) {\n return;\n }\n const execution = sl.getExecutionById(state, executionId);\n const [currency1, currency2] = execution.currencyPair.split('/');\n\n const instrument = getLogInstrumentType(execution);\n const legs = getLegDealInfo(execution);\n const log: EventLog = {\n login: sl.getUserInfo(state).login || 'Unknown',\n userAction: 'Execution',\n actionOutcome: 'Pending',\n correlationId: executionId,\n dealInfo: {\n clientId: execution.client.companyId.toString(),\n clientName: execution.client.companyName,\n currency1,\n currency2,\n legs,\n },\n instrument,\n additionalData: {\n reason,\n },\n };\n return { type: 'warn', data: log };\n };\n","import { selectors } from 'state/selectors';\n\nimport { metaSelectorBuildPendingExecutionEventLogWith } from './buildPendingExecutionEventLog';\nimport { metaSelectorBuildExecutionPendingMailPayloadWith } from './buildPendingExecutionMailPayload';\nimport { metaSelectorBuildApiErrorExecutionEventLogWith } from './buildApiTimeoutExecutionEventLog';\n\nexport const buildPendingExecutionEventLog =\n metaSelectorBuildPendingExecutionEventLogWith(selectors);\n\nexport const buildPendingExecutionMailPayload =\n metaSelectorBuildExecutionPendingMailPayloadWith(selectors);\n\nexport const buildApiErrorExecutionEventLog =\n metaSelectorBuildApiErrorExecutionEventLogWith(selectors);\n","import type { AccumulatorAmountSplitType, IFxAccumulatorExecutionData } from 'state/fxAccumulators/fxAccumulatorsModel';\nimport { sideToWay } from 'state/fxBulks/selectors';\nimport type { AppState } from 'state/model';\nimport type { CurrencyPair } from 'state/referenceData/referenceDataModel';\nimport type { Selectors } from 'state/selectors';\nimport type { CurrencyChoice } from 'state/share/productModel/litterals';\nimport type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport { fieldData } from 'utils/fieldSelectors';\nimport { assertIsDefined } from '@sgme/fp';\n\nconst toCurrencyLabel =\n ({ ccy1, ccy2 }: CurrencyPair) =>\n (ccy: CurrencyChoice) =>\n ccy === 1 ? ccy1 : ccy2;\n\nexport const buildAccuExecutionReportWith: MapStateToMetadataHOF<\n IFxAccumulatorExecutionData,\n {\n accumulatorId: string;\n rfsId: string;\n tradeDate: Date;\n productName: string | null;\n amountSplitType: AccumulatorAmountSplitType;\n },\n AppState,\n Selectors\n> =\n sl =>\n (state, { accumulatorId, rfsId, tradeDate, productName, amountSplitType }) => {\n const client = sl.getClientForTile(state, accumulatorId);\n const currencyPair = fieldData(sl.getAccumulatorCurrencyPairInput(state, accumulatorId)).data!;\n const pair = sl.getCurrencyPairDetails(state, currencyPair)!;\n const toCurrencyLabelWithPair = toCurrencyLabel(pair!);\n const amount = fieldData(sl.getAccumulatorAmount(state, accumulatorId)).data;\n const amountCurrency = fieldData(sl.getAccumulatorAmountCurrency(state, accumulatorId)).data;\n\n const expiryDate = fieldData(sl.getAccumulatorExpiryDate(state, accumulatorId)).data!;\n const expiryTenor = fieldData(sl.getAccumulatorExpiryTenor(state, accumulatorId)).data!;\n const firstFixingDate = fieldData(sl.getAccumulatorFirstFixingDate(state, accumulatorId)).data!;\n const firstFixingTenor = fieldData(sl.getAccumulatorFirstFixingTenor(state, accumulatorId)).data!;\n const lastFixingDate = sl.getAccumulatorLastFixingDate(state, accumulatorId)!;\n const fixingFrequency = fieldData(sl.getAccumulatorFixingFrequency(state, accumulatorId)).data!;\n const numberOfFixings = fieldData(sl.getAccumulatorNumberOfFixings(state, accumulatorId)).data;\n const target = fieldData(sl.getAccumulatorTarget(state, accumulatorId)).data!;\n const side = fieldData(sl.getAccumulatorWay(state, accumulatorId)).data!;\n const quote = sl.getAccumulatorRfsQuote(state, rfsId);\n\n assertIsDefined(quote, 'quote should exist during execution');\n\n const accuType =\n productName === 'FxForwardAccumulator'\n ? sl.getForwardAccumulatorAccuType(state, accumulatorId)\n : sl.getTargetAccumulatorAccuType(state, accumulatorId);\n\n const strike = fieldData(sl.getAccumulatorStrike(state, accumulatorId)).data;\n\n const akoTriggerValue = sl.getAccumulatorAkoTrigger(state, accumulatorId);\n const akoTrigger = akoTriggerValue.value !== null ? Number(fieldData(akoTriggerValue).data) : undefined;\n const barrier = sl.getAccumulatorBarrier(state, accumulatorId);\n\n const ekiTriggerValue = sl.getAccumulatorEkiTrigger(state, accumulatorId);\n const ekiTrigger = ekiTriggerValue.value !== null ? Number(fieldData(ekiTriggerValue).data) : undefined;\n\n const step = fieldData(sl.getAccumulatorStep(state, accumulatorId)).data;\n\n const execution: IFxAccumulatorExecutionData = {\n instrument: 'Accumulator',\n way: sideToWay(side),\n currencyPair,\n amount: Number(amount!),\n amountCcy: toCurrencyLabelWithPair(amountCurrency),\n premium: Math.abs(quote.premiumCcy1.ask),\n premiumCcy: toCurrencyLabelWithPair(1),\n priceLabelId: quote.premiumCcy1.ask >= 0 ? 'Pay' : 'Receive',\n accuType,\n strike: Number(strike),\n akoTrigger,\n barrier,\n ekiTrigger,\n step: Number(step),\n target: Number(target),\n firstFixingDate,\n firstFixingTenor,\n expiryDate: new Date(expiryDate),\n expiryTenor,\n lastFixingDate,\n fixingFrequency,\n numberOfFixings,\n client,\n tradeDate,\n productName,\n amountSplitType,\n };\n\n return execution;\n };\n","import type { Observable } from 'rxjs';\nimport type { HttpCall } from 'utils/sgmeHttp';\n\nexport interface ForexOptionExecuteRequestFrontDto {\n way: ForexOptionExecuteRequestFrontDtoWay | null;\n /** Id of RFS */\n rfsId: string | null;\n /** Quote ID within RFS */\n quoteId: string;\n /** Streaming connectionId to reply to */\n replyToStream: string;\n emailNotificationList: string;\n userLocalDateTime: string | null;\n lastQuoteFromBackTimestamp: number;\n lastQuoteReceivedByFrontTimestamp: number;\n executionClickByFrontTimestamp: number;\n}\n\n/* eslint-disable no-shadow */\nexport enum ForexOptionExecuteRequestFrontDtoWay {\n Bid = 'bid',\n Ask = 'ask',\n}\n\nexport interface IAccumulatorRfsExecuteApi {\n msApiTimeout: number;\n executeQuote(payload: ForexOptionExecuteRequestFrontDto): Observable>;\n}\n","import type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport { getDateForMultipass } from 'utils/dateFormats';\nimport { assertIsDefined, isEmpty } from '@sgme/fp';\nimport {\n type ForexOptionExecuteRequestFrontDto,\n ForexOptionExecuteRequestFrontDtoWay,\n} from 'api/multipass/accumulator/model';\n\nexport const buildAccuQuoteExecuteWith: MapStateToMetadataHOF<\n ForexOptionExecuteRequestFrontDto,\n { rfsId: string; tradeDate: Date },\n AppState,\n Selectors\n> =\n sl =>\n (state, { rfsId, tradeDate }) => {\n const replyToStream = sl.getConnectionId(state);\n\n const { emails, splitNotificationsEmailsOptions, splitNotifications } =\n sl.getUserPreferenceData(state);\n let emailNotificationList;\n if (splitNotifications && !isEmpty(splitNotificationsEmailsOptions)) {\n emailNotificationList = splitNotificationsEmailsOptions.join(';');\n } else {\n emailNotificationList = emails.join(';');\n }\n const rfsQuoteId = sl.getAccumulatorRfsQuoteId(state, rfsId);\n assertIsDefined(rfsQuoteId, 'rfsQuoteId needs to be defined for execution');\n const userLocalDateTime = getDateForMultipass(tradeDate);\n\n const streamState = sl.getAccumulatorRfsState(state, rfsId);\n\n if (streamState.status !== 'PRICING') {\n throw 'Assertion error : executing a accumulator stream that is not pricing';\n }\n const lastQuoteFromBackTimestamp = streamState.quote.backTimestamp;\n const lastQuoteReceivedByFrontTimestamp = streamState.quote.frontTimestamp.getTime();\n const executionClickByFrontTimestamp = tradeDate.getTime();\n\n const result: ForexOptionExecuteRequestFrontDto = {\n emailNotificationList,\n quoteId: rfsQuoteId,\n replyToStream,\n rfsId,\n userLocalDateTime,\n way: ForexOptionExecuteRequestFrontDtoWay.Ask,\n lastQuoteFromBackTimestamp,\n lastQuoteReceivedByFrontTimestamp,\n executionClickByFrontTimestamp,\n };\n return result;\n };\n","import type { HedgeType, HedgeWay, SettlementMode } from 'state/share/productModel/litterals';\nimport type { BidAskPair, CurrencyChoice, QuoteContributionType, Side, Way } from '../share/productModel/litterals';\nimport type { IFormData } from 'state/share/form';\nimport type { IFxTileMetadata } from 'state/tile/fxTileModel';\nimport type { Collection } from 'typings/utils';\nimport type { Patch } from '../share/patchModels';\nimport type { IFxExecutionData, IFxExecutionState } from 'state/executions/executionsStateModel';\nimport type { PredealCheck } from 'state/share/predealChecksModel';\n\nexport const accumulatorPriceType = ['Amount'] as const;\nexport type AccumulatorPriceType = (typeof accumulatorPriceType)[number];\n\nexport type AccumulatorProductName = 'FxTargetAccumulator' | 'FxForwardAccumulator';\n\nexport type AccumulatorCalendar = readonly ForwardAccuCalendarLine[] | readonly TargetAccuCalendarLine[];\n\nexport const accumulatorAmountSplitTypes = ['Fixing', 'Total'] as const;\nexport type AccumulatorAmountSplitType = (typeof accumulatorAmountSplitTypes)[number];\n\nexport const targetAccuTypes = ['TargetAccu', 'PIVOTEKI', 'PIVOT', 'EKI'] as const;\nexport type TargetAccuType = (typeof targetAccuTypes)[number];\n\nexport const ForwardAccuTypes = ['Standard', 'Permanent'] as const;\nexport type ForwardAccuType = (typeof ForwardAccuTypes)[number];\n\nexport interface AccumulatorCalendarLine {\n amountDown: number | null;\n amountUp: number | null;\n strike: number | null;\n fixingDate: string | null;\n paymentDate: string | null;\n fixingValue: number | null;\n weight: number | null;\n isDelivered: boolean | null;\n stepDown: number | null;\n stepUp: number | null;\n amountMid: number | null;\n step: number | null;\n power: number | null;\n leverage: number | null;\n targetGapDeltaProfit: number | null;\n couponGapDelta: number | null;\n}\n\nexport interface ForwardAccuCalendarLine extends AccumulatorCalendarLine {}\n\nexport interface TargetAccuCalendarLine extends AccumulatorCalendarLine {}\n\nexport interface IFxTargetAccumulatorValues extends IFxAccumulatorValues {\n possibleAccuTypeList: readonly TargetAccuType[];\n accuType: TargetAccuType;\n eki: string | null;\n ekiString: string | null;\n}\n\nexport interface IFxForwardAccumulatorValues extends IFxAccumulatorValues {\n accuType: ForwardAccuType;\n}\n\nexport interface IFxAccumulatorValues {\n productName: AccumulatorProductName;\n currencyPair: string | null;\n premiumDate: string | null;\n premiumDateTenor: string | null;\n\n hedgeType: HedgeType;\n hedgeAmount: string | null;\n hedgePrice: string | null;\n hedgePaymentDate: string | null;\n hedgeCurrency: CurrencyChoice;\n\n way: Side;\n amount: string | null;\n amountCurrency: CurrencyChoice;\n totalNotional: number | null;\n leverage: string | null;\n leverageAmount: string | null;\n totalLeverage: number | null;\n strike: string | null;\n step: string | null;\n akoTrigger: string | null;\n barrier: AccumulatorBarrier | null;\n ekiTrigger: string | null;\n strikeDown?: string | null;\n pivot?: string | null;\n strikeUp?: string | null;\n stepDown?: number;\n stepUp?: number;\n ekiUp: string | null;\n ekiDown: string | null;\n targetProfitType: string | null;\n targetProfitTypeList: readonly string[];\n target: string | null;\n firstFixingDate: string | null;\n firstFixingDateTenor: string | null;\n expiryDate: string | null;\n expiryTenor: string | null;\n fixingFrequency: string;\n fixingFrequenciesList: readonly string[];\n defaultFixingFrequency: string;\n numberOfFixings: number;\n settlementFrequency: string | null;\n defaultSettlementFrequency: string;\n settlementFrequenciesList: readonly string[];\n settlementMode: SettlementMode;\n settlementModeList: readonly SettlementMode[];\n cashSettlementCurrency: string;\n cashSettlementCurrencyList: readonly string[];\n defaultFixingReference1: string;\n defaultFixingReference2: string;\n fixingReferencesList1: readonly string[];\n fixingReferencesList2: readonly string[];\n fixingReference1: string;\n fixingReference2: string;\n priceType: AccumulatorPriceType;\n priceCurrency: CurrencyChoice;\n possiblePriceTypes: readonly AccumulatorPriceType[];\n possibleHedgeTypes: readonly HedgeType[];\n lastFixingDate: string | null;\n calendar: AccumulatorCalendar;\n deliveryDate: string | null;\n cutOffMarketPlace: string | null;\n markupCurrency: string;\n customFields: readonly CustomFieldValues[];\n isCrossed: boolean;\n crossCurrency: string;\n possibleCrossCurrencies: readonly string[];\n amountSplitType: AccumulatorAmountSplitType;\n strikeComparator: string;\n}\n\nexport const customField = [\n 'SettlementFrequency',\n 'FixingFrequency',\n 'Strike',\n 'StrikeUp',\n 'StrikeDown',\n 'Step',\n 'Amount',\n 'LeverageAmount',\n] as const;\n\nexport type CustomFieldValues = (typeof customField)[number];\n\nexport type AccumulatorSchedule = Record;\n\nexport type AccumulatorScheduleItem = IFormData &\n AccumulatorScheduleMetadata;\n\nexport const scheduleCustomFieldValues = [\n 'fixingDate',\n 'paymentDate',\n 'strike',\n 'step',\n 'stepDown',\n 'stepUp',\n 'ekiTrigger',\n 'amount',\n 'leverageAmount',\n 'strikeUp',\n 'strikeDown',\n] as const;\n\nexport type ScheduleCustomFieldValues = (typeof scheduleCustomFieldValues)[number];\n\nexport interface AccumulatorScheduleValues {\n fixingDate: string | null;\n paymentDate: string | null;\n strike: number | null;\n strikeDown: number | null;\n strikeUp: number | null;\n ekiTrigger?: number | null;\n stepUp?: number | null;\n stepDown?: number | null;\n step: number | null;\n amount: number | null;\n leverageAmount: number | null;\n}\n\nexport interface AccumulatorScheduleInputs {\n fixingDate: string | null;\n paymentDate: string | null;\n strike: string | null;\n strikeUp: string | null;\n strikeDown: string | null;\n pivot: string | null;\n ekiTrigger?: string | null;\n stepUp: string | null;\n stepDown: string | null;\n step: string | null;\n amount: string | null;\n leverageAmount: string | null;\n}\n\nexport interface AccumulatorScheduleMetadata {\n custom: readonly ScheduleCustomFieldValues[];\n}\n\nexport interface FxTargetAccumulatorInputs extends FxAccumulatorInputs {\n ekiString: string | null;\n eki: string | null;\n ekiUp: string | null;\n ekiDown: string | null;\n strikeDownString: string | null;\n strikeDown: string | null;\n pivotString: string | null;\n pivot: string | null;\n strikeUpString: string | null;\n strikeUp: string | null;\n}\n\nexport interface FxForwardAccumulatorInputs extends FxAccumulatorInputs {}\n\nexport interface FxAccumulatorInputs {\n currencyPair: string | null;\n premiumDate: string | null;\n premiumDateTenor: string | null;\n way: Side;\n amount: string | null;\n amountCurrency: CurrencyChoice;\n leverage: string | null;\n leverageAmount: string | null;\n strike: string | null;\n strikeDown: string | null;\n pivot: string | null;\n strikeUp: string | null;\n step: string | null;\n ekiUp: string | null;\n ekiDown: string | null;\n akoTrigger: string | null;\n ekiTrigger: string | null;\n targetProfitType: string;\n target: string | null;\n firstFixingDate: string | null;\n firstFixingDateTenor: string | null;\n priceType: AccumulatorPriceType;\n priceCurrency: CurrencyChoice;\n\n hedgeCurrency: CurrencyChoice;\n hedgeAmount: string | null;\n hedgeType: HedgeType;\n hedgePrice: string | null;\n\n fixingFrequency: string;\n numberOfFixings: number;\n settlementFrequency: string | null;\n fixingReference1: string;\n fixingReference2: string;\n settlementMode: SettlementMode;\n cashSettlementCurrency: string;\n expiryDate: string | null;\n expiryTenor: string | null;\n markupCurrency: string;\n schedule: Record | null> | null;\n isCrossed: boolean;\n crossCurrency: string;\n amountSplitType: AccumulatorAmountSplitType;\n}\n\nexport type IFxTargetAccumulatorProperties = IFormData;\n\nexport type FxTargetAccumulatorState = Readonly;\n\nexport type IFxForwardAccumulatorProperties = IFormData;\n\nexport type FxForwardAccumulatorState = Readonly;\n\nexport interface IFxAccumulatorMetadata extends IFxTileMetadata {\n displayMode: 'SCHEDULER' | 'PRICER';\n legs: readonly string[];\n lastStreamId: string | null;\n summary?: string;\n numberOfSettlements: number;\n}\n\nexport type FxAccumulatorState = FxTargetAccumulatorState | FxForwardAccumulatorState;\n\nexport type FxAccumulatorMap = Collection;\n\ninterface FxAccuStreamStreamingAwaitingState {\n status: 'AWAITING';\n forceTradeable: boolean;\n traderId: string | null;\n}\n\nexport interface FxAccuStreamStreamingWithPrice {\n status: 'PRICING' | 'EXPIRED';\n quote: Readonly;\n lastQuoteReceivedDate: Date;\n initialRfsWindow: number;\n tiering: string | null;\n skippedLimitCheck: boolean;\n traderId: string | null;\n quoteContribution: QuoteContributionType | null;\n}\n\nexport type FxAccumulatorRfsStream = FxAccuStreamStreamingAwaitingState | FxAccuStreamStreamingWithPrice;\n\nexport type FxAccumulatorSchedules = Collection;\n\nexport type FxAccumulatorRfsStreams = Collection;\n\nexport interface IFxAccumulatorsState {\n accumulators: FxAccumulatorMap;\n schedules: FxAccumulatorSchedules;\n rfsStreams: FxAccumulatorRfsStreams;\n}\n\nexport type FxAccumulatorsState = Readonly;\n\nexport type FxAccumulatorPatch = Patch;\n\nexport interface FxAccumulatorQuoteWithPrice {\n quoteId: string;\n quoteType: 'Indicative' | 'Tradeable';\n rfsWindow: number;\n markupCcy1: number;\n markupCcy2: number;\n premiumCcy1: BidAskPair;\n premiumCcy2: BidAskPair;\n premiumPctCcy1: number;\n premiumPctCcy2: number;\n\n hedge?: IHedge | IHedge[];\n\n deltaCcy1: number;\n deltaCcy2: number;\n vegaCcy1: number;\n vegaCcy2: number;\n spot: BidAskPair;\n forward: BidAskPair;\n swapPoints: BidAskPair;\n volatility: number;\n predealChecks: readonly PredealCheck[];\n frontTimestamp: Date;\n backTimestamp: number;\n}\n\nexport interface IFxAccumulatorExecutionData extends IFxExecutionData {\n instrument: 'Accumulator';\n way: Way;\n amount: number;\n amountCcy: string;\n premium: number;\n premiumCcy: string;\n priceLabelId: 'Receive' | 'Pay';\n accuType: ForwardAccuType | TargetAccuType;\n strike: number;\n step: number;\n akoTrigger?: number | null;\n barrier: AccumulatorBarrier | null;\n ekiTrigger?: number | null;\n target: number;\n firstFixingDate: string;\n firstFixingTenor: string;\n expiryDate: Date;\n expiryTenor: string;\n lastFixingDate: string;\n fixingFrequency: string;\n numberOfFixings: number;\n productName: string | null;\n amountSplitType: AccumulatorAmountSplitType;\n}\n\nexport type FxAccumulatorExecutionState = IFxExecutionState & IFxAccumulatorExecutionData;\n\nexport interface IHedge {\n way: HedgeWay;\n rateMid: string;\n notionalAmount: string;\n notionalCurrency: string;\n}\n\nexport interface AccumulatorBarrier {\n level: number;\n type: string;\n nature: string;\n}\n","export function camelize(str: string): O {\n return (str.charAt(0).toLowerCase() + str.slice(1)) as O;\n}\n","import type {\n AccumulatorBarrier,\n AccumulatorScheduleMetadata,\n IFxForwardAccumulatorValues,\n IFxTargetAccumulatorValues,\n} from 'state/fxAccumulators/fxAccumulatorsModel';\nimport {\n type AccumulatorSchedule,\n type AccumulatorScheduleValues,\n type FxAccumulatorPatch,\n type IFxAccumulatorValues,\n scheduleCustomFieldValues,\n type ScheduleCustomFieldValues,\n} from 'state/fxAccumulators/fxAccumulatorsModel';\nimport type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport type {\n ITradeCaptureMetaData,\n TcError,\n TcErrors,\n TcWarning,\n TcWarnings,\n} from 'api/tradeCapture/tradeCaptureModel';\nimport type {\n CalendarPreviousValue,\n ITradeCaptureAccumulatorMetaData,\n ITradeCaptureAccumulatorSchedule,\n ResponseBarrier,\n TcAccumulatorHedgeType,\n TradeCaptureAccumulatorErrors,\n TradeCaptureAccumulatorLegPreviousValues,\n TradeCaptureAccumulatorResponseWrapper,\n TradeCaptureAccumulatorScheduleCustomFieldResponse,\n TradeCaptureAccumulatorScheduleItemRequest,\n TradeCaptureAccumulatorScheduleItemResponse,\n TradeCaptureAccumulatorScheduleResponse,\n TradeCaptureAccumulatorWarnings,\n} from 'api/tradeCapture/accumulator/tradeCaptureModel';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport { clearUndefined } from 'utils/clearUndefined';\nimport {\n fromTcError,\n fromTcErrorAsString,\n fromTcWarning,\n fromTcWarningAsString,\n previousValue,\n} from 'api/tradeCapture/tradeCaptureMappingHelper';\nimport type { CurrencyChoice, HedgeType, PropertyErrors, PropertyWarnings } from 'state/share/productModel/litterals';\nimport { fieldData } from 'utils/fieldSelectors';\nimport { camelize } from 'utils/camelize';\nimport { mapOptional } from 'utils/optional';\nimport { isDefined, isEmptyOrNotDefined } from '@sgme/fp';\n\ntype ActionPatch = TradeCaptureAccumulatorResponseWrapper & WithAccumulatorId;\n\nexport type TradeCaptureAccumulatorResponsePatch = TradeCaptureAccumulatorResponseWrapper & WithAccumulatorId;\n\nexport type AccumulatorTradeCapturePatch = ITradeCaptureMetaData &\n ITradeCaptureAccumulatorMetaData &\n FxAccumulatorPatch &\n ITradeCaptureAccumulatorSchedule;\n\ninterface WithAccumulatorId {\n quoteId: string;\n}\n\ntype TradeCaptureFromBackendMetaSelectorsKeys =\n | 'getAccumulatorCurrencyPairInput'\n | 'getAccumulatorScheduleItemIds'\n | 'getAccumulatorScheduleCustomFields'\n | 'getAccumulatorBarrier';\n\ntype TradeCaptureFromBackendMetaSelectorSelectors = Pick;\n\nexport const metaSelectorTradeCaptureFromBackendWith: MapStateToMetadataHOF<\n AccumulatorTradeCapturePatch,\n TradeCaptureAccumulatorResponsePatch,\n AppState,\n TradeCaptureFromBackendMetaSelectorSelectors\n> = sl => (state, patch) => {\n const getValues = makeGetValues(state, sl);\n const tcErrors = getTradeCaptureErrors(patch.errors);\n const tcWarnings = getTradeCaptureWarnings(patch.warnings);\n\n const { scheduleCustomFields: tcFixingCustomFields, schedule: tcSchedule } = patch.changedFields.legs[0];\n\n const stateFixingCustomFields = sl.getAccumulatorScheduleItemIds(state, patch.quoteId).reduce((acc, legId) => {\n acc[legId] = {\n custom: sl.getAccumulatorScheduleCustomFields(state, patch.quoteId, legId),\n };\n return acc;\n }, {} as Record);\n\n return {\n ...getMetadata(patch),\n values: getValues(patch, tcErrors),\n errors: getErrors(tcErrors),\n warnings: getWarnings(tcWarnings),\n schedule: mapToSchedule(\n stateFixingCustomFields,\n tcSchedule,\n tcFixingCustomFields,\n tcErrors.schedule,\n tcWarnings.schedule,\n ),\n };\n};\n\nconst getMetadata = (patch: ActionPatch): ITradeCaptureMetaData & ITradeCaptureAccumulatorMetaData => ({\n idVersion: patch.idVersion,\n isReadyToPrice: patch.changedFields.isReadyToPrice || false,\n isPriceObsolete: patch.changedFields.isPriceObsolete || false,\n isProductObsolete: patch.changedFields.isProductObsolete || false,\n summary: patch.changedFields.legs[0].summary || '',\n numberOfSettlements: patch.changedFields.legs[0].numberOfSettlements,\n});\n\nconst makeGetValues =\n (state: AppState, sl: TradeCaptureFromBackendMetaSelectorSelectors) =>\n (\n { quoteId, changedFields }: TradeCaptureAccumulatorResponsePatch,\n errors: TcErrors,\n ): Partial => {\n const { currencyPair, hedgeType, hedgePaymentDate, hedgePrice, markupCurrency } = changedFields;\n\n const currencyPairRef = currencyPair || fieldData(sl.getAccumulatorCurrencyPairInput(state, quoteId)).data;\n\n const previousBarrier = sl.getAccumulatorBarrier(state, quoteId) ?? undefined;\n\n const {\n accuType,\n strikeComparator,\n premiumPaymentCurrency,\n premiumPaymentDate,\n premiumPaymentDateTenor,\n side,\n amount,\n amountSplitType,\n amountCurrency,\n leverage,\n leverageAmount,\n strike,\n ekiDown,\n strikeDown,\n pivot,\n strikeUp,\n ekiUp,\n possibleAccuTypeList,\n step,\n step2,\n stepDown,\n stepUp,\n barrier,\n possibleKoPaymentConventions,\n koPaymentConvention,\n target,\n firstFixingDate,\n firstFixingDateTenor,\n possibleFixingFrequencies,\n possibleSettlementFrequencies,\n fixingFrequency,\n numberOfFixings,\n possibleFixingReferences1,\n fixingReference1,\n possibleFixingReferences2,\n fixingReference2,\n settlementFrequency,\n deliveryType,\n possibleDeliveryTypes,\n cashSettlementCurrency,\n possibleCashSettlementCurrencies,\n expiryDateTenor,\n expiryDate,\n deliveryDate,\n lastFixingDate,\n calendar,\n cutOffMarketPlace,\n totalLeverageAmount,\n totalNotionalAmount,\n customFields,\n isCrossed,\n crossCurrency,\n possibleCrossCurrencies,\n eki,\n ekiString,\n hedgeAmountInCcy1,\n hedgeAmountInCcy2,\n } = changedFields.legs[0];\n\n const akoTrigger =\n barrier === null\n ? null\n : mapToString(barrier?.level, previousValue((errors.barrier as TcErrors)?.level));\n\n return clearUndefined>({\n currencyPair,\n hedgeType: mapToHedgeType(hedgeType),\n hedgePaymentDate,\n hedgeAmount: mapToString(mapHedgeAmount(hedgeAmountInCcy1, hedgeAmountInCcy2)),\n hedgePrice: mapToString(hedgePrice),\n premiumDate: premiumPaymentDate || previousValue(errors.premiumPaymentDate),\n premiumDateTenor: premiumPaymentDateTenor,\n way: side,\n amount: mapToString(amount, previousValue(errors.amount)),\n amountSplitType,\n amountCurrency: mapToCurrencyChoice(amountCurrency, currencyPairRef),\n leverage: mapToString(leverage, previousValue(errors.leverage)),\n leverageAmount: mapToString(leverageAmount, previousValue(errors.leverageAmount)),\n strike: mapToString(strike, previousValue(errors.strike)),\n ekiDown: mapToString(ekiDown, previousValue(errors.ekiDown)),\n strikeDown: mapToString(strikeDown, previousValue(errors.strikeDown)),\n pivot: mapToString(pivot, previousValue(errors.pivot)),\n strikeUp: mapToString(strikeUp, previousValue(errors.strikeUp)),\n ekiUp: mapToString(ekiUp, previousValue(errors.ekiUp)),\n possibleAccuTypeList: possibleAccuTypeList?.possible,\n step: mapToString(step, previousValue(errors.step)),\n akoTrigger,\n barrier: mapAkoTriggerFromBackend(barrier, previousBarrier),\n ekiTrigger: mapToString(step2, previousValue(errors.step2)),\n stepDown,\n stepUp,\n target: mapToString(target, previousValue(errors.target)),\n firstFixingDate: firstFixingDate || previousValue(errors.firstFixingDate),\n firstFixingDateTenor,\n priceCurrency: mapToPriceCurrency(premiumPaymentCurrency, currencyPairRef),\n targetProfitType: koPaymentConvention,\n targetProfitTypeList: possibleKoPaymentConventions?.possible,\n fixingFrequency,\n numberOfFixings,\n defaultFixingFrequency: possibleFixingFrequencies?.default,\n fixingFrequenciesList: possibleFixingFrequencies?.possible,\n fixingReference1,\n defaultFixingReference1: possibleFixingReferences1?.default,\n fixingReferencesList1: possibleFixingReferences1?.possible,\n fixingReference2,\n defaultFixingReference2: possibleFixingReferences2?.default ?? undefined,\n fixingReferencesList2: possibleFixingReferences2?.possible === null ? [] : possibleFixingReferences2?.possible,\n settlementFrequency,\n defaultSettlementFrequency: possibleSettlementFrequencies?.default,\n settlementFrequenciesList: possibleSettlementFrequencies?.possible,\n settlementMode: deliveryType,\n settlementModeList: possibleDeliveryTypes?.possible,\n cashSettlementCurrency,\n cashSettlementCurrencyList: possibleCashSettlementCurrencies?.possible,\n expiryTenor: expiryDateTenor,\n expiryDate,\n deliveryDate,\n cutOffMarketPlace,\n lastFixingDate,\n calendar,\n totalLeverage: totalLeverageAmount,\n totalNotional: totalNotionalAmount,\n markupCurrency,\n customFields,\n isCrossed,\n crossCurrency,\n possibleCrossCurrencies: possibleCrossCurrencies?.possible,\n accuType,\n strikeComparator,\n eki,\n ekiString,\n });\n };\n\nfunction mapHedgeAmount(hedgeAmountInCcy1: number | null | undefined, hedgeAmountInCcy2: number | null | undefined) {\n // if one amount is null and the other is null or undefined\n // CAUTION : isDefined uses double equal not triple equals, meaning that undefined is also considered truthy here\n return (hedgeAmountInCcy1 === null && !isDefined(hedgeAmountInCcy2)) ||\n (hedgeAmountInCcy2 === null && !isDefined(hedgeAmountInCcy1))\n ? null\n : hedgeAmountInCcy1 ?? hedgeAmountInCcy2;\n}\n\nconst mapAkoTriggerFromBackend = (\n barrier: ResponseBarrier | null | undefined,\n previousBarrier: AccumulatorBarrier | undefined,\n): AccumulatorBarrier | null | undefined => {\n const NO_CHANGE = undefined;\n const hasNewValue = isDefined(barrier);\n const hasPreviousValue = isDefined(previousBarrier);\n const isValueRemoved = barrier === null;\n\n if (isValueRemoved) {\n return null;\n }\n\n if (!hasNewValue) {\n return NO_CHANGE;\n }\n\n if (barrier.nature === null && !hasPreviousValue) {\n return NO_CHANGE; // TODO: what is the rule ?\n }\n\n return {\n level: (barrier.level ?? previousBarrier?.level) as number,\n nature: (barrier.nature ?? previousBarrier?.nature) as string,\n type: (barrier.type ?? previousBarrier?.type) as string,\n };\n};\n\nconst getErrors = (errors: TcErrors): PropertyErrors =>\n clearUndefined>({\n premiumDate: fromTcError(errors.premiumPaymentDate),\n amount: fromTcErrorAsString(errors.amount),\n leverage: fromTcErrorAsString(errors.leverage),\n strike: fromTcErrorAsString(errors.strike),\n akoTrigger: fromTcErrorAsString((errors.barrier as TcErrors)?.level), // TODO: handle the nested type for akotrigger error\n ekiTrigger: fromTcErrorAsString(errors.step2),\n target: fromTcErrorAsString(errors.target),\n firstFixingDate: fromTcError(errors.firstFixingDate),\n expiryDate: fromTcError(errors.expiryDate),\n });\n\nconst getWarnings = (\n warnings: TcWarnings,\n): PropertyWarnings =>\n clearUndefined>({\n premiumDate: fromTcWarning(warnings.premiumPaymentDate),\n amount: fromTcWarningAsString(warnings.amount),\n leverage: fromTcWarningAsString(warnings.leverage),\n strike: fromTcWarningAsString(warnings.strike),\n akoTrigger: fromTcWarningAsString((warnings.barrier as TcWarnings)?.level), // TODO: handle the nested type for akotrigger warning\n ekiTrigger: fromTcWarningAsString(warnings.step2),\n target: fromTcWarningAsString(warnings.target),\n firstFixingDate: fromTcWarning(warnings.firstFixingDate),\n expiryDate: fromTcWarning(warnings.expiryDate),\n });\n\nconst getTradeCaptureErrors = (responseError: TradeCaptureAccumulatorErrors | null) => responseError?.legs?.[0] ?? {};\n\nconst getTradeCaptureWarnings = (responseWarning: TradeCaptureAccumulatorWarnings | null) =>\n responseWarning?.legs?.[0] ?? {};\n\nconst mapToPriceCurrency = (\n premiumPaymentCurrency: string | undefined,\n currencyPair: string | null,\n): CurrencyChoice | undefined => {\n if (currencyPair === null) {\n if (isEmptyOrNotDefined(premiumPaymentCurrency)) {\n return undefined;\n }\n throw new Error('Should not have no currency pair with a premiumPaymentCurrency');\n }\n const [currency1, currency2] = currencyPair.split('/');\n switch (premiumPaymentCurrency) {\n case undefined:\n return undefined;\n case currency1:\n return 1;\n case currency2:\n return 2;\n default:\n throw new Error(`premiumPaymentCurrency:${premiumPaymentCurrency} does not match currencies`);\n }\n};\n\nconst mapToCurrencyChoice = (\n amountCurrency: string | undefined,\n currencyPair: string | null,\n): CurrencyChoice | undefined => {\n if (isEmptyOrNotDefined(amountCurrency)) {\n return undefined;\n }\n if (isEmptyOrNotDefined(currencyPair)) {\n throw new Error('Should not have no currency pair with a amountCurrency');\n }\n const currencies = currencyPair.split('/');\n return amountCurrency === currencies[0] ? 1 : 2;\n};\n\nconst toStringMapper = (value: number) => value.toString();\nconst mapToString = (value?: number | null, prevValue?: number | null): string | null | undefined =>\n value === null ? null : mapOptional(toStringMapper)(value ?? prevValue);\n\nfunction mapToHedgeType(value: TcAccumulatorHedgeType | null | undefined): HedgeType | undefined {\n if (value === 'None' || value === null) {\n return 'Live';\n }\n return value;\n}\n\nconst mapToSchedule = (\n stateFixingCustomFields: Record,\n tcSchedule: TradeCaptureAccumulatorScheduleResponse | undefined,\n tcScheduleCustomFields: TradeCaptureAccumulatorScheduleCustomFieldResponse | undefined,\n tcErrors: ReadonlyArray> | undefined,\n _tcWarnings: ReadonlyArray> | undefined,\n): AccumulatorSchedule | undefined => {\n const scheduleFixings = mapScheduleValues(stateFixingCustomFields, tcSchedule, tcScheduleCustomFields);\n const errors = extractErrorsFromTC(tcErrors);\n // const warnings: PropertyWarnings = {};\n\n return Object.entries(errors).reduce((previous, [fixingId, fieldErrors]) => {\n previous[fixingId] = {\n values: {\n ...scheduleFixings[fixingId].values,\n ...extractPreviousValues(fieldErrors),\n },\n inputs: {},\n errors: Object.entries(fieldErrors).reduce(\n (acc, [field, error]) => ({\n ...acc,\n [field]: fromTcError(error as any),\n }),\n {} as PropertyErrors,\n ),\n warnings: {},\n custom: stateFixingCustomFields[fixingId]?.custom ?? [],\n };\n return previous;\n }, scheduleFixings);\n};\n\nconst extractPreviousValues = (\n errors: TcErrors,\n): Partial =>\n Object.entries(errors).reduce(\n (previous, [fieldName, error]) => ({ ...previous, [fieldName]: previousValue(error as any) }),\n {},\n );\n\nconst fieldMapper: Record<\n keyof TradeCaptureAccumulatorScheduleItemRequest,\n keyof TradeCaptureAccumulatorScheduleItemResponse\n> = {\n paymentDateString: 'paymentDate',\n amountString: 'amount',\n step2String: 'step2',\n fixingDateString: 'fixingDate',\n leverageAmountString: 'leverageAmount',\n strikeString: 'strike',\n stepUpString: 'stepUp',\n stepDownString: 'stepDown',\n strikeDownString: 'strikeDown',\n strikeUpString: 'strikeUp',\n};\n\nconst extractErrorsFromTC = (tcErrors: ReadonlyArray> | undefined) =>\n (tcErrors ?? []).reduce((acc, error) => {\n const affectedLeg = Object.keys(error.faultyValue)[0];\n const affectedField = Object.keys(\n error.faultyValue[affectedLeg],\n )[0] as keyof TradeCaptureAccumulatorScheduleItemRequest;\n const previousFieldName = fieldMapper[affectedField];\n const previousTcValue = error.previousValue === null ? null : error.previousValue![affectedLeg][previousFieldName];\n const currLeg = acc[affectedLeg] || {};\n acc[affectedLeg] = {\n ...currLeg,\n [previousFieldName]: [\n ...(currLeg[previousFieldName] || []),\n {\n id: error.id,\n description: error.description,\n faultyValue: error.faultyValue[affectedLeg][affectedField],\n previousValue: previousTcValue,\n },\n ],\n };\n return acc;\n }, {} as Record>);\n\nconst mapScheduleValues = (\n stateFixingCustomFields: Record,\n tcSchedule: TradeCaptureAccumulatorScheduleResponse | undefined,\n tcScheduleCustomFields: TradeCaptureAccumulatorScheduleCustomFieldResponse | undefined,\n): AccumulatorSchedule =>\n tcSchedule === undefined\n ? Object.entries(stateFixingCustomFields).reduce((previous, [key, custom]) => {\n if (custom === undefined) {\n return previous;\n }\n previous[key] = {\n values: {} as AccumulatorScheduleValues,\n inputs: {},\n errors: {},\n warnings: {},\n ...custom,\n };\n return previous;\n }, {} as AccumulatorSchedule)\n : Object.entries(tcSchedule).reduce((previous, [key, values]) => {\n previous[key] = {\n values: { ...values, ekiTrigger: values.step2 },\n custom:\n tcScheduleCustomFields?.[key]\n ?.map(field => camelize(field))\n ?.filter(field => scheduleCustomFieldValues.includes(field)) ?? [],\n inputs: {},\n warnings: {},\n errors: {},\n };\n return previous;\n }, {} as AccumulatorSchedule);\n","import type {\n AccumulatorPropertiesChanged,\n AccumulatorScheduleImported,\n AccumulatorScheduleLegAdded,\n AccumulatorScheduleLegPropertiesChanged,\n AccumulatorScheduleLegRemoved,\n AccumulatorScheduleReset,\n AccumulatorTileRestoreEpic,\n} from 'state/fxAccumulators/actions';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport type { AccumulatorStoreModelChanges } from './tradeCaptureToBackend';\n\ntype TradeCapturePatchBuilderFromActionSelectorsKeys =\n | 'getAccumulatorCurrencyPairInput'\n | 'getAccumulatorScheduleItemIds';\nexport type TradeCapturePatchBuilderFromActionSelectors = Pick<\n Selectors,\n TradeCapturePatchBuilderFromActionSelectorsKeys\n>;\n\ntype MapStateToActionChanges = MapStateToMetadataHOF<\n [string, AccumulatorStoreModelChanges],\n TAction,\n AppState,\n TradeCapturePatchBuilderFromActionSelectors\n>;\n\nexport const accumulatorChangedToPatchWith: MapStateToActionChanges =\n _sl => (_state, action) =>\n [action.quoteId, action.patch];\n\nexport const accumulatorScheduleChangedToPatchWith: MapStateToActionChanges =\n _sl => (_state, action) =>\n [action.quoteId, { schedule: { [action.legId]: action.patch } }];\n\nexport const accumulatorScheduleResetToPatchWith: MapStateToActionChanges =\n _sl => (_state, action) =>\n [action.quoteId, { schedule: null }];\n\nexport const accumulatorScheduleAddedToPatchWith: MapStateToActionChanges =\n _sl => (_state, action) =>\n [action.quoteId, { schedule: { [action.legId]: {} } }];\n\nexport const accumulatorScheduleRemovedToPatchWith: MapStateToActionChanges =\n _sl => (_state, action) =>\n [action.quoteId, { schedule: { [action.legId]: null } }];\n\nexport const accumulatorScheduleImportedToPatchWith: MapStateToActionChanges =\n sl => (state, action) =>\n [\n action.quoteId,\n {\n schedule: {\n ...Object.fromEntries(sl.getAccumulatorScheduleItemIds(state, action.quoteId).map(id => [id, null])),\n ...action.patch,\n },\n },\n ];\n\nexport const accumulatorRestoreToPatchWith: MapStateToMetadataHOF<\n Array<[string, AccumulatorStoreModelChanges]>,\n AccumulatorTileRestoreEpic,\n AppState,\n TradeCapturePatchBuilderFromActionSelectors\n> = _sl => (_state, action) =>\n Object.entries(action.tiles).map(([tileId, tile]) => [\n tileId,\n {\n currencyPair: tile.currencyPair,\n priceType: tile.priceType,\n priceCurrency: tile.priceCurrency,\n premiumDate: tile.premiumDate,\n premiumDateTenor: tile.premiumDateTenor,\n hedgeType: tile.hedgeType,\n way: tile.way,\n amount: tile.amount,\n amountCurrency: tile.amountCurrency,\n amountSplitType: tile.amountSplitType, // amount mode\n leverage: tile.leverage,\n strike: tile.strike,\n step: tile.step,\n accuType: tile.accuType,\n eki: tile.eki,\n ekiDown: tile.ekiDown,\n ekiUp: tile.ekiUp,\n strikeDown: tile.strikeDown,\n strikeUp: tile.strikeUp,\n pivot: tile.pivot,\n akoTrigger: tile.akoTrigger,\n ekiTrigger: tile.ekiTrigger,\n targetProfitType: tile.targetProfitType,\n target: tile.target,\n expiryDate: tile.expiryDate,\n expiryTenor: tile.expiryTenor,\n fixingFrequency: tile.fixingFrequency,\n settlementMode: tile.settlementMode,\n cashSettlementCurrency: tile.cashSettlementCurrency,\n firstFixingDate: tile.firstFixingDate,\n firstFixingDateTenor: tile.firstFixingDateTenor,\n isCrossed: tile.isCrossed,\n crossCurrency: tile.crossCurrency,\n fixingReference1: tile.fixingReference1,\n fixingReference2: tile.fixingReference2,\n settlementFrequency: tile.settlementFrequency,\n } as AccumulatorStoreModelChanges,\n ]);\n","import type {\n AccumulatorScheduleInputs,\n ForwardAccuType,\n FxAccumulatorInputs,\n TargetAccuType,\n} from 'state/fxAccumulators/fxAccumulatorsModel';\nimport type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type {\n FxForwardAccumulatorLegRequest,\n FxTargetAccumulatorLegRequest,\n RequestBarrier,\n TcAccumulatorHedgeType,\n TradeCaptureAccumulator,\n TradeCaptureAccumulatorLegRequest,\n TradeCaptureAccumulatorRequestWrapper,\n TradeCaptureAccumulatorScheduleItemRequest,\n} from 'api/tradeCapture/accumulator/tradeCaptureModel';\nimport { clearUndefined } from 'utils/clearUndefined';\nimport { parseWithCultureInfo } from 'utils/parseDateWithCultureInfo';\nimport type { DateInputCultureInfo } from 'state/userPreferences';\nimport { fieldData } from 'utils/fieldSelectors';\nimport type { CurrencyChoice, HedgeType } from 'state/share/productModel/litterals';\nimport { FIRST_CURRENCY } from 'state/share/productModel/litterals';\nimport { isDefined, isEmpty, isEmptyOrNotDefined } from '@sgme/fp';\n\nexport type AccumulatorStoreModelChanges = Partial;\n\ninterface WithQuoteId {\n quoteId: string;\n}\n\nexport type TradeCaptureToBackendMetadata = {\n patch: AccumulatorStoreModelChanges;\n} & WithQuoteId;\n\nexport type TradeCaptureToBackendMetaSelectorsKeys =\n | 'getAccumulatorTradeCaptureIdVersion'\n | 'getUserPreferenceData'\n | 'getAccumulatorCurrencyPairInput'\n | 'getTargetAccumulatorAccuType'\n | 'getAccumulatorProductName';\n\nexport type TradeCaptureToBackendMetaSelectorSelectors = Pick;\n\nexport const metaSelectorTradeCaptureToBackendWith: MapStateToMetadataHOF<\n TradeCaptureAccumulatorRequestWrapper,\n TradeCaptureToBackendMetadata,\n AppState,\n TradeCaptureToBackendMetaSelectorSelectors\n> = sl => {\n const toTradeCapturePatch = metaSelectorAccumulatorToTradeCapturePatchWith(sl);\n const toTradeCaptureLegPatch = metaSelectorAccumulatorToTradeCaptureLegPatchWith(sl);\n\n return (state, { quoteId, patch }) => {\n const idVersion = getNextIdVersion(sl.getAccumulatorTradeCaptureIdVersion(state, quoteId));\n const productChangedFields = toTradeCapturePatch(state, patch);\n const legChangedFields = toTradeCaptureLegPatch(state, {\n quoteId,\n ...patch,\n });\n return {\n idVersion,\n changedFields: {\n ...productChangedFields,\n legs: {\n 0: legChangedFields,\n },\n },\n };\n };\n};\n\nfunction getNextIdVersion(lastIdVersion: number | null): number {\n return lastIdVersion == null ? 0 : lastIdVersion + 1;\n}\n\nconst metaSelectorAccumulatorToTradeCapturePatchWith: MapStateToMetadataHOF<\n Partial,\n Partial,\n AppState,\n TradeCaptureToBackendMetaSelectorSelectors\n> = _sl => (_state, patch) => {\n const leg = clearUndefined({ premiumDate: patch.premiumDate });\n const isFirstHedgeCurrency = patch.hedgeCurrency === FIRST_CURRENCY;\n\n const product = clearUndefined({\n currencyPair: patch.currencyPair,\n hedgeType: mapToTcHedgeType(patch.hedgeType as 'Live' | 'Spot'),\n hedgePriceString: patch.hedgePrice,\n hedgeAmountInCcy1String: isFirstHedgeCurrency ? patch.hedgeAmount : undefined,\n hedgeAmountInCcy2String: !isFirstHedgeCurrency ? patch.hedgeAmount : undefined,\n markupCurrency: patch.markupCurrency,\n });\n\n return {\n ...product,\n legs: {\n 0: leg,\n },\n };\n};\n\nexport type AccumulatorType = TargetAccuType | ForwardAccuType;\n\nexport interface PatchAccuType {\n accuType?: AccumulatorType;\n}\n\nconst metaSelectorAccumulatorToTradeCaptureLegPatchWith: MapStateToMetadataHOF<\n Partial,\n Partial & WithQuoteId & PatchAccuType,\n AppState,\n TradeCaptureToBackendMetaSelectorSelectors\n> =\n sl =>\n (state, { quoteId, ...patch }) => {\n const { dateInputCultureInfo: cultureInfo } = sl.getUserPreferenceData(state);\n const currencyPairRef = patch.currencyPair || fieldData(sl.getAccumulatorCurrencyPairInput(state, quoteId)).data;\n const expiryDateString = patch.expiryDate\n ? dateToPatch(patch.expiryDate, null, cultureInfo) || patch.expiryDate\n : patch.expiryTenor;\n\n const productName = sl.getAccumulatorProductName(state, quoteId);\n let ekiTrigger:\n | { ekiString: string | null | undefined }\n | {\n step2String: string | null | undefined;\n } = { ekiString: undefined };\n\n const targetAccuType = patch.accuType ?? undefined;\n if (productName === 'FxTargetAccumulator') {\n // is a targetAccu need to send eki on ekiString\n // depending on targetAccuType value, need to send ekiString ou step2String property with ekiTrigger value\n if (targetAccuType === 'EKI') {\n // TODO ABO, SGEFX-5007: harmonize eki variant name (eki, ekiTrigger, step)\n // @ts-ignore\n ekiTrigger = { ekiString: patch.ekiTrigger ?? patch.eki?.toString() };\n }\n } else {\n ekiTrigger = { step2String: patch.ekiTrigger };\n }\n return clearUndefined>({\n productName,\n premiumPaymentCurrency: mapToPremiumPaymentCurrency(patch.priceCurrency, currencyPairRef),\n premiumPaymentDateString: dateToPatch(patch.premiumDate, patch.premiumDateTenor, cultureInfo),\n side: patch.way,\n amountString: patch.amount,\n amountSplitType: patch.amountSplitType,\n amountCurrency: mapToCurrency(patch.amountCurrency, currencyPairRef),\n leverageString: patch.leverage,\n leverageAmountString: patch.leverageAmount,\n strikeString: patch.strike,\n stepString: patch.step,\n accuType: targetAccuType,\n ...ekiTrigger,\n EkiDownString: patch.ekiDown,\n EkiUpString: patch.ekiUp,\n strikeDownString: patch.strikeDown,\n pivotString: patch.pivot,\n strikeUpString: patch.strikeUp,\n barrier: mapAkoTriggerToBackend(patch.akoTrigger),\n koPaymentConvention: patch.targetProfitType,\n fixingFrequency: patch.fixingFrequency,\n numberOfFixings: patch.numberOfFixings,\n fixingReference1: patch.fixingReference1,\n fixingReference2: patch.fixingReference2,\n settlementFrequency: patch.settlementFrequency,\n isCrossed: patch.isCrossed,\n crossCurrency: patch.crossCurrency,\n targetString: patch.target,\n firstFixingDateString: dateToPatch(patch.firstFixingDate, null, cultureInfo) || patch.firstFixingDateTenor,\n schedule: mapToTradeCaptureSchedule(patch.schedule, targetAccuType, cultureInfo),\n deliveryType: patch.settlementMode,\n cashSettlementCurrency: patch.cashSettlementCurrency,\n expiryDateString,\n });\n };\n\nconst mapAkoTriggerToBackend = (akoTrigger: string | null | undefined): RequestBarrier | null | undefined => {\n if (isDefined(akoTrigger)) {\n return akoTrigger === '' ? null : { levelString: akoTrigger };\n }\n\n return undefined;\n};\n\nconst dateToPatch = (\n date: string | undefined | null,\n tenor: string | undefined | null,\n cultureInfo: DateInputCultureInfo,\n) => {\n const ref = date || tenor;\n return ref ? parseWithCultureInfo(cultureInfo, ref) : undefined;\n};\n\nconst mapToPremiumPaymentCurrency = (\n priceCurrency: CurrencyChoice | undefined,\n currencyPair: string | null,\n): string | undefined => {\n if (priceCurrency === undefined || isEmptyOrNotDefined(currencyPair)) {\n return undefined;\n }\n const [currency1, currency2] = currencyPair.split('/');\n return priceCurrency === 1 ? currency1 : currency2;\n};\n\nconst mapToCurrency = (amountCurrency: CurrencyChoice | undefined, currencyPair: string | null): string | undefined => {\n if (amountCurrency === undefined || isEmptyOrNotDefined(currencyPair)) {\n return undefined;\n }\n const currencies = currencyPair.split('/');\n return currencies[amountCurrency - 1];\n};\n\nfunction mapToTradeCaptureSchedule(\n schedule: Record | null> | null | undefined,\n accuType: AccumulatorType | undefined,\n cultureInfo: DateInputCultureInfo,\n): Record | null> | null | undefined {\n if (schedule === undefined) {\n return undefined;\n }\n if (schedule === null) {\n return null;\n }\n\n const result = Object.entries(schedule).reduce(\n (acc, [key, value]) => ({\n ...acc,\n [key]:\n value === null\n ? null\n : {\n fixingDateString: dateToPatch(value.fixingDate, null, cultureInfo),\n paymentDateString:\n value.paymentDate?.length !== 0 ? dateToPatch(value.paymentDate, null, cultureInfo) : '',\n strikeString: value.strike?.toString(),\n strikeDownString: value.strikeDown?.toString(),\n stepDownString: value.stepDown?.toString(),\n stepUpString: value.stepUp?.toString(),\n strikeUpString: value.strikeUp?.toString(),\n step2String: value.ekiTrigger?.toString(),\n stepString: accuType === 'PIVOT' ? value.pivot?.toString() : value.step?.toString(),\n amountString: value.amount?.toString(),\n leverageAmountString: value.leverageAmount?.toString(),\n },\n }),\n {} as Record>,\n );\n\n return isEmpty(Object.keys(result)) ? undefined : result;\n}\n\nfunction mapToTcHedgeType(value: Exclude | undefined): TcAccumulatorHedgeType | undefined {\n if (value === 'Live') {\n return 'None';\n }\n return value;\n}\n","import { selectors } from 'state/selectors';\nimport { buildAccuExecutionReportWith } from './buildAccuExecutionReport';\nimport { buildAccuQuoteExecuteWith } from './buildAccuQuoteExecute';\nimport { metaSelectorTradeCaptureFromBackendWith } from './tradeCaptureFromBackend';\nimport {\n accumulatorChangedToPatchWith,\n accumulatorRestoreToPatchWith,\n accumulatorScheduleAddedToPatchWith,\n accumulatorScheduleChangedToPatchWith,\n accumulatorScheduleImportedToPatchWith,\n accumulatorScheduleRemovedToPatchWith,\n accumulatorScheduleResetToPatchWith,\n} from './tradeCapturePatchBuilderFromAction';\nimport { metaSelectorTradeCaptureToBackendWith } from './tradeCaptureToBackend';\n\nexport const accumulatorChangedToPatch = accumulatorChangedToPatchWith(selectors);\n\nexport const accumulatorScheduleChangedToPatch = accumulatorScheduleChangedToPatchWith(selectors);\n\nexport const accumulatorScheduleResetToPatch = accumulatorScheduleResetToPatchWith(selectors);\n\nexport const accumulatorScheduleAddedToPatch = accumulatorScheduleAddedToPatchWith(selectors);\n\nexport const accumulatorScheduleRemovedToPatch = accumulatorScheduleRemovedToPatchWith(selectors);\n\nexport const accumulatorScheduleImportedToPatch = accumulatorScheduleImportedToPatchWith(selectors);\n\nexport const accumulatorRestoreToPatch = accumulatorRestoreToPatchWith(selectors);\n\nexport const createAccumulatorTradeCaptureRequest =\n metaSelectorTradeCaptureToBackendWith(selectors);\n\nexport const accumulatorResponseToPatchMetaSelector =\n metaSelectorTradeCaptureFromBackendWith(selectors);\n\nexport const buildAccuQuoteExecute = buildAccuQuoteExecuteWith(selectors);\n\nexport const buildAccuExecutionReport = buildAccuExecutionReportWith(selectors);\n","import type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport type {\n OrderPropertyChanged,\n OrderPropertyChangedFromTemplate,\n OrderSubmission,\n} from 'state/fxOrders/fxOrdersActions';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport { fieldData } from 'utils/fieldSelectors';\nimport type { OmsOrderSubmissionPayload, OrderRequestPayload } from 'api/order/oms';\nimport { clearUndefined } from 'utils/clearUndefined';\nimport type { IFxOrderInputs, OrderType } from 'state/fxOrders/fxOrdersModel';\nimport { dateAndTimeToUtc, getUtcExpiry } from './utils';\nimport { assertUnreachable, isEmpty } from '@sgme/fp';\nimport { getFullDateForOMS, toUtc } from 'utils/dateFormats';\nimport { parseWithCultureInfo } from 'utils/parseDateWithCultureInfo';\nimport { strictKeys } from 'utils/object';\n\nexport type OrderMetaSelectorsKeys =\n | 'getOrderType'\n | 'getOrderAmount'\n | 'getOrderAmountCurrency'\n | 'getClientIdByQuoteId'\n | 'getUserInfo'\n | 'getOrderCurrencyPair'\n | 'getOrderWay'\n | 'getOrderIsGtc'\n | 'getOrderExpiryDay'\n | 'getOrderExpiryTime'\n | 'getOrderLimitPrice'\n | 'getOrderTrigger'\n | 'getOrderEmails'\n | 'getOrderEmailsWithSplit'\n | 'getOrderCustomerPrice'\n | 'getUserInfoBdrId'\n | 'isUserInternalSales'\n | 'getOrderMaturityDate'\n | 'getOrderIsStartDateNow'\n | 'getOrderStartDate'\n | 'getOrderStartTime'\n | 'getOrderClippingMode'\n | 'getOrderClipSize'\n | 'getOrderLiquidityPool'\n | 'getOrderRandomize'\n | 'getOrderSpreadCapture'\n | 'getOrderSpeed'\n | 'getOrderAlphaSeeker'\n | 'getUserPreferenceData'\n | 'getOrderFixingBenchmark'\n | 'getOrderFixingPriceType'\n | 'getOrderFixingDateUtc'\n | 'getOrderFixingTime'\n | 'getOrderFixingPlace'\n | 'getOrderMarginInBps'\n | 'getOrderMargin'\n | 'getOrderFixingMarginType'\n | 'getOrderClockOffset'\n | 'getCurrencyPairDetails'\n | 'getFeatureToggles';\n\nexport type OrderMetaSelectors = Pick;\n\n// ---------------------------------------------------------------------------------\n// Public meta selector\n// ---------------------------------------------------------------------------------\n\ntype Action = OrderPropertyChanged | OrderPropertyChangedFromTemplate | OrderSubmission;\n\nconst keysWhichShouldMakeFieldReset: ReadonlyArray = ['currencyPair', 'way', 'type'];\n\nconst shouldResetField = (action: Action, ignoreResetPredicate?: (action: Action) => boolean) => {\n if (action.type === 'ORDER_SUBMISSION_EPIC' || (ignoreResetPredicate && ignoreResetPredicate(action))) {\n return false;\n }\n\n const patchedKeys = strictKeys(action.patch);\n return patchedKeys.some(patchedKey => keysWhichShouldMakeFieldReset.includes(patchedKey));\n};\n\nconst computeTakeProfitCustomerPrice = (action: Action, customerPrice: string | undefined | null) => {\n if (shouldResetField(action, ignorePriceResetPredicate('customerPrice'))) {\n return undefined;\n }\n\n return customerPrice === '' ? undefined : customerPrice ?? undefined;\n};\n\nconst ignorePriceResetPredicate = (field: keyof IFxOrderInputs) => (action: Action) => {\n if (action.type === 'ORDER_SUBMISSION_EPIC') {\n return false;\n }\n\n // this is needed when an order is created from quick order button for example, where we have several fields in the same patch to create the order, we do not want any of them to be reset\n return Object.keys(action.patch).includes(field) && Object.keys(action.patch).includes('type');\n};\n\nconst computeTakeProfitLimitPrice = (\n action: Action,\n isInternalUser: boolean,\n limitPrice: string | undefined | null,\n customerPrice: string | undefined | null,\n allowOrderTakeProfitMargin: boolean,\n) => {\n if (customerPrice && !allowOrderTakeProfitMargin && !isInternalUser) {\n return customerPrice;\n }\n\n if (shouldResetField(action, ignorePriceResetPredicate('limitPrice'))) {\n return undefined;\n }\n\n if (action.type !== 'ORDER_SUBMISSION_EPIC') {\n const hasCustomerPriceInputChanged = action.patch.customerPrice && action.patch.customerPrice !== '';\n\n if (hasCustomerPriceInputChanged) {\n return undefined;\n }\n\n return limitPrice ?? undefined;\n }\n\n return limitPrice ?? undefined;\n};\n\nexport const metaSelectorOrderToBackend: MapStateToMetadataHOF<\n OrderRequestPayload,\n { action: Action; getNewGuid: () => string; dateNow?: Date },\n AppState,\n OrderMetaSelectors\n> =\n sl =>\n (state, { action, getNewGuid, dateNow }) => {\n const makeOrderTypeToBackendPayload = makeOrderTypeToBackendPayloadWith(sl, action);\n const { quoteId } = action;\n const orderTypeToBackendPayload = makeOrderTypeToBackendPayload(state, quoteId);\n const orderType = fieldData(sl.getOrderType(state, quoteId)).data;\n const amount = fieldData(sl.getOrderAmount(state, quoteId)).data;\n const amountCurrency = fieldData(sl.getOrderAmountCurrency(state, quoteId)).data;\n const isGtc = fieldData(sl.getOrderIsGtc(state, quoteId)).data;\n const { splitNotificationsEmailsOrders, splitNotifications } = sl.getUserPreferenceData(state);\n let emailNotificationList;\n if (splitNotifications && !isEmpty(splitNotificationsEmailsOrders)) {\n emailNotificationList = fieldData(sl.getOrderEmailsWithSplit(state, quoteId)).data;\n } else {\n emailNotificationList = fieldData(sl.getOrderEmails(state, quoteId)).data;\n }\n\n const orderClockOffset = sl.getOrderClockOffset(state, quoteId);\n\n const payload: Partial = {\n isGtc,\n bdrId: sl.getClientIdByQuoteId(state, quoteId) ?? undefined,\n amountInCcy1: amountCurrency === 1 && amount !== null ? Number(amount) : undefined,\n amountInCcy2: amountCurrency === 2 && amount !== null ? Number(amount) : undefined,\n ccyPair: fieldData(sl.getOrderCurrencyPair(state, quoteId)).data ?? undefined,\n way: fieldData(sl.getOrderWay(state, quoteId)).data === 'Buy' ? 'buy' : 'sell',\n limitPrice: shouldResetField(action)\n ? undefined\n : fieldData(sl.getOrderLimitPrice(state, quoteId)).data ?? undefined,\n base64Emails: emailNotificationList != null ? btoa(emailNotificationList) : undefined,\n ...orderTypeToBackendPayload(orderType),\n localTimeWithOffSet:\n orderClockOffset !== undefined && dateNow !== undefined ? dateNow.getTime() + orderClockOffset : 0,\n };\n return {\n orderType,\n payload: clearUndefined(payload),\n correlationId: `${quoteId}/${getNewGuid()}`,\n };\n };\n\nfunction isNdf(state: AppState, sl: OrderMetaSelectors, quoteId: string): boolean {\n const currencyPair = fieldData(sl.getOrderCurrencyPair(state, quoteId)).data ?? undefined;\n\n const extCcyPair = currencyPair !== undefined ? sl.getCurrencyPairDetails(state, currencyPair) : null;\n\n return !!extCcyPair?.notDeliverable;\n}\n\nconst makeOrderTypeToBackendPayloadWith =\n (sl: OrderMetaSelectors, action: OrderPropertyChanged | OrderPropertyChangedFromTemplate | OrderSubmission) =>\n (state: AppState, quoteId: string) => {\n const { dateInputCultureInfo } = sl.getUserPreferenceData(state);\n const isGtc = fieldData(sl.getOrderIsGtc(state, quoteId)).data;\n const expiryDay = isGtc === true ? undefined : fieldData(sl.getOrderExpiryDay(state, quoteId)).data ?? undefined;\n const expiryTime = isGtc === true ? undefined : fieldData(sl.getOrderExpiryTime(state, quoteId)).data ?? undefined;\n const utcExpiry = getUtcExpiry(isGtc, expiryDay, expiryTime);\n const isStartDateNow = sl.getOrderIsStartDateNow(state, quoteId);\n const startDate = fieldData(sl.getOrderStartDate(state, quoteId)).data ?? undefined;\n const startTime = fieldData(sl.getOrderStartTime(state, quoteId)).data ?? undefined;\n const clipSize = fieldData(sl.getOrderClipSize(state, quoteId)).data;\n const maturityDate = fieldData(sl.getOrderMaturityDate(state, quoteId)).data ?? undefined;\n const maturityDateString = maturityDate\n ? parseWithCultureInfo(dateInputCultureInfo, maturityDate) ?? maturityDate\n : undefined;\n\n const startDateUtc = getFullDateForOMS(isStartDateNow ? toUtc(new Date()) : dateAndTimeToUtc(startDate, startTime));\n const endDateUtc =\n isGtc || expiryDay === undefined || expiryTime === undefined\n ? undefined\n : getFullDateForOMS(dateAndTimeToUtc(expiryDay, expiryTime));\n const liquidityPools = fieldData(sl.getOrderLiquidityPool(state, quoteId)).data;\n const liquidityPool = liquidityPools.join(',');\n const speed = fieldData(sl.getOrderSpeed(state, quoteId)).data ?? undefined;\n\n const isInternalUser = sl.isUserInternalSales(state);\n const allowOrderTakeProfitMargin = sl.getFeatureToggles(state).orderTakeProfitMargin;\n const limitPrice = fieldData(sl.getOrderLimitPrice(state, quoteId)).data;\n const customerPrice = fieldData(sl.getOrderCustomerPrice(state, quoteId)).data;\n\n return (orderType: OrderType): Partial => {\n switch (orderType) {\n case 'TakeProfit':\n return {\n ...utcExpiry,\n margin: shouldResetField(action)\n ? undefined\n : fieldData(sl.getOrderMargin(state, quoteId)).data ?? undefined,\n customerPrice: computeTakeProfitCustomerPrice(action, customerPrice),\n limitPrice: computeTakeProfitLimitPrice(\n action,\n isInternalUser,\n limitPrice,\n customerPrice,\n allowOrderTakeProfitMargin,\n ),\n };\n case 'Call':\n return {\n ...utcExpiry,\n amountInCcy1: undefined,\n amountInCcy2: undefined,\n way: undefined,\n };\n case 'StopLoss':\n return {\n ...utcExpiry,\n triggerMode: fieldData(sl.getOrderTrigger(state, quoteId)).data ?? undefined,\n };\n case 'Fixing':\n return {\n fixingBenchmark: fieldData(sl.getOrderFixingBenchmark(state, quoteId)).data ?? undefined,\n fixingPriceType: fieldData(sl.getOrderFixingPriceType(state, quoteId)).data ?? undefined,\n fixingDateUtc: fieldData(sl.getOrderFixingDateUtc(state, quoteId)).data ?? undefined,\n fixingTime: fieldData(sl.getOrderFixingTime(state, quoteId)).data ?? undefined,\n fixingPlace: fieldData(sl.getOrderFixingPlace(state, quoteId)).data ?? undefined,\n marginInBps: fieldData(sl.getOrderMarginInBps(state, quoteId)).data ?? undefined,\n fixingMarginType: fieldData(sl.getOrderFixingMarginType(state, quoteId)).data ?? undefined,\n };\n case 'Twap':\n return {\n isNdf: isNdf(state, sl, quoteId),\n maturityDateString: isNdf(state, sl, quoteId) ? '1M' : maturityDateString,\n startDateUtc,\n endDateUtc,\n liquidityPool,\n clippingMode: fieldData(sl.getOrderClippingMode(state, quoteId)).data ?? undefined,\n clipSize: clipSize !== null ? Number(clipSize) : undefined,\n dodging: fieldData(sl.getOrderRandomize(state, quoteId)).data,\n spreadCapture: fieldData(sl.getOrderSpreadCapture(state, quoteId)).data,\n };\n case 'Nightjar':\n return {\n isNdf: isNdf(state, sl, quoteId),\n maturityDateString: isNdf(state, sl, quoteId) ? '1M' : maturityDateString,\n startDateUtc,\n endDateUtc,\n liquidityPool,\n speed,\n alphaSeeker: fieldData(sl.getOrderAlphaSeeker(state, quoteId)).data ?? undefined,\n };\n case 'Falcon':\n return {\n isNdf: isNdf(state, sl, quoteId),\n maturityDateString: isNdf(state, sl, quoteId) ? '1M' : maturityDateString,\n startDateUtc,\n endDateUtc,\n liquidityPool,\n speed,\n };\n default:\n assertUnreachable(orderType, 'Unhandled order type');\n }\n };\n };\n","import type { BlotterOrderCommonValues, BlotterOrderValues } from 'state/blotter/blotterEntryModel';\nimport { isLimitOrder } from 'state/fxOrders/fxOrdersModel';\nimport type { AppState } from 'state/model';\nimport type { Selectors } from 'state/selectors';\nimport type { MapStateToMetadataHOF } from 'typings/redux-utils';\n\ntype OrderMetaSelectors = Selectors;\n\nexport const metaSelectorOrderToBlotterOrderData: MapStateToMetadataHOF<\n Omit,\n { quoteId: string; getDateNow: () => Date },\n AppState,\n OrderMetaSelectors\n> =\n sl =>\n (state, { quoteId, getDateNow }) => {\n const product = sl.getOrderType(state, quoteId).value;\n const commonValues: Omit = {\n account: sl.getClientForTile(state, quoteId).companyId.toString(),\n currencyPair: sl.getOrderCurrencyPair(state, quoteId).value!,\n status: 'Submitted', // Why \"Submitted\" ? if change for other value it's broke placing order\n way: sl.getOrderWay(state, quoteId).value,\n notional: sl.getOrderAmount(state, quoteId).value,\n notionalCurrency:\n sl.getOrderAmountCurrency(state, quoteId).value === 1\n ? sl.getOrderCurrency1(state, quoteId)\n : sl.getOrderCurrency2(state, quoteId),\n executionPrice: null,\n executedNotional: 0,\n remainingAmount: sl.getOrderAmount(state, quoteId).value,\n isGtc: sl.getOrderIsGtc(state, quoteId).value,\n rejectReason: null,\n expiryDay: sl.getOrderExpiryDay(state, quoteId).value,\n expiryTime: sl.getOrderExpiryTime(state, quoteId).value,\n };\n\n const limitPrice = sl.getOrderLimitPrice(state, quoteId).value;\n if (isLimitOrder(product)) {\n const customerPrice = sl.getOrderCustomerPrice(state, quoteId).value;\n return {\n product,\n ...commonValues,\n limitPrice: limitPrice === null ? null : parseFloat(limitPrice),\n customerPrice: customerPrice === null ? null : parseFloat(customerPrice),\n };\n } else {\n const clipSize = sl.getOrderClipSize(state, quoteId).value;\n const startDateTime = getDateNow().toISOString();\n const [startDate, startTime] = sl.getOrderIsStartDateNow(state, quoteId)\n ? startDateTime.split(/T|Z/)\n : [\n sl.getOrderStartDate(state, quoteId).value!,\n sl.getOrderStartTime(state, quoteId).value!,\n ];\n return {\n product,\n ...commonValues,\n startDate,\n startTime,\n endDate: sl.getOrderExpiryDay(state, quoteId).value,\n endTime: sl.getOrderExpiryTime(state, quoteId).value,\n maturityDate: sl.getOrderMaturityDate(state, quoteId).value,\n liquidityPool: sl.getOrderLiquidityPool(state, quoteId).value,\n clippingMode: sl.getOrderClippingMode(state, quoteId).value,\n clipSize: clipSize === null ? null : parseFloat(clipSize),\n randomize: sl.getOrderRandomize(state, quoteId).value,\n noWorseThan: limitPrice === null ? null : parseFloat(limitPrice),\n spreadCapture: sl.getOrderSpreadCapture(state, quoteId).value,\n alphaSeeker: sl.getOrderAlphaSeeker(state, quoteId).value,\n speed: sl.getOrderSpeed(state, quoteId).value,\n };\n }\n };\n","import { selectors } from 'state/selectors';\nimport { metaSelectorOrderToBackend } from './orderToBackendPayload';\nimport { metaSelectorOrderToBlotterOrderData } from './orderToBlotterOrderData';\n\nexport const getOrderRequest = metaSelectorOrderToBackend(selectors);\nexport const getBlotterOrderData = metaSelectorOrderToBlotterOrderData(selectors);\n","import type { MapStateToMetadataHOF } from 'typings/redux-utils';\n\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type { TieringRequest } from 'api/multipass/cash/esp/model';\nimport { fieldData } from 'utils/fieldSelectors';\n\nexport const buildTieringRequestWith: MapStateToMetadataHOF<\n TieringRequest,\n { tileId: string; pair: string; companyId: number },\n AppState,\n Selectors\n> =\n sl =>\n (state, { tileId, pair, companyId }) => {\n const productName = sl.getProductName(state, tileId);\n const { ccy1, ccy2 } = sl.getCurrencyPairDetails(state, pair)!;\n let maturityDate = new Date();\n if (productName === 'FxSpot' || productName === 'FxFwd') {\n maturityDate = new Date(fieldData(sl.getCashMaturityDate(state, tileId)).data!);\n }\n\n const request: TieringRequest = {\n ccy1,\n ccy2,\n clientBdrId: companyId,\n maturityDate,\n product: productName === 'FxNdf' ? 'ndf' : 'spot',\n };\n\n return request;\n };\n","import { selectors } from 'state/selectors';\nimport { buildTieringRequestWith } from './buildTieringRequest';\n\nexport const buildTieringRequest = buildTieringRequestWith(selectors);\n","import { isEmpty } from '@sgme/fp';\n\n/**\n * given a string representation of a number and separators\n * return a formated string representation number\n */\nexport function formatNumberAsStringToLocale(\n number: string,\n localeThousandSeparator: string,\n localeDecimalSeparator: string,\n): string {\n if (!isEmpty(number) && !'0123456789'.includes(number[0])) {\n return (\n number[0] +\n formatNumberAsStringToLocale(number.slice(1), localeThousandSeparator, localeDecimalSeparator)\n );\n }\n // splits integer and decimal part\n const [integer, decimal] = number.split('.') as [string, string | undefined];\n // only format integer part\n const localeInteger = splitIntegerByThousands(integer).join(localeThousandSeparator);\n // concatenate decimal part if it exists\n const localeNumber =\n decimal === undefined ? localeInteger : [localeInteger, decimal].join(localeDecimalSeparator);\n\n return localeNumber;\n}\n\n/**\n * splits a string into an array of three char strings, except the first between 1 and 3\n */\nfunction splitIntegerByThousands(number: string) {\n const splitNumber: string[] = [];\n // first item length\n const leftHandLength = ((number.length - 1) % 3) + 1;\n // number of items\n const splitInto = Math.floor((number.length - 1) / 3);\n\n for (let splitIndex = 0; splitIndex <= splitInto; splitIndex++) {\n // split 3 by 3 (except first)\n splitNumber.push(\n number.substring(leftHandLength + splitIndex * 3 - 3, leftHandLength + splitIndex * 3),\n );\n }\n\n return splitNumber;\n}\n\n/**\n * calculates the cursor position offset\n * from the localized string (input field)\n * to the non-localized representation of the number\n */\nexport function getCursorOffsetFromSelectionToValue(\n cursor: number,\n localized: string,\n separator: string,\n) {\n let offset = 0;\n for (let index = 0; index < localized.length && index < cursor; index++) {\n if (localized[index] === separator) {\n offset++;\n }\n }\n return offset;\n}\n\n/**\n * calculates the cursor position offset\n * from non-localized representation of the number\n * to the localized string (input field)\n */\nexport function getCursorOffsetFromValueToSelection(\n cursor: number,\n localized: string,\n separator: string,\n) {\n let offset = 0;\n for (let index = 0; index < localized.length && cursor > 0; index++) {\n if (localized[index] === separator) {\n offset++;\n } else {\n cursor--;\n }\n }\n return offset;\n}\n\nexport function stringToNumber(value: string | null): number | null {\n return value === '' || value === null ? null : parseFloat(value);\n}\n","import type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type {\n OptionHedgeSavedTile,\n OptionLegSavedTile,\n OptionVanillaLegSavedTile,\n SavedBlotter,\n SavedBlotterTab,\n SavedTile,\n SavedTilePosition,\n SavedTileSize,\n SavedWorkspace,\n} from 'api/workspaceService/model';\nimport { assertUnreachable, isDefined, isDefinedAndNonEmpty } from '@sgme/fp';\nimport type { BlotterTabMetadata } from 'state/blotter/blotterModel';\nimport { colWidth } from 'styles/constants';\nimport { pick } from 'utils/object';\nimport type { Instrument } from 'state/referenceData';\nimport { getAllLegsInputs } from 'state/share/productMappers/optionMappers';\nimport { stringToNumber } from 'utils/numberInputFormats';\nimport type { MapStateToMetadataHOF } from 'typings/redux-utils';\nimport type {\n FxOptionLegInputs,\n IFxOptionTypedStrategyLegInputs,\n IFxVanillaLegInputs,\n} from 'state/fxOptions/model/optionsLegs';\nimport type { Collection } from '../../../typings/utils';\n\nconst dateBR = 'BR';\n\nfunction toCol(size: number) {\n return Math.round(size / colWidth);\n}\n\nfunction shouldSaveTile(instrument: Instrument): boolean {\n switch (instrument) {\n case 'Cash':\n case 'Swap':\n case 'Option':\n case 'Accumulator':\n case 'Bulk':\n return true;\n case 'Order':\n case 'BlotterOrder':\n return false;\n default:\n assertUnreachable(instrument, 'instrument not handled');\n }\n}\n\nconst makeGetTileToSave =\n (sl: Selectors, state: AppState, tabId: string) =>\n (tileId: string): SavedTile | undefined => {\n const { instrument, overrideClientId } = sl.getTileState(state, tileId);\n\n if (!shouldSaveTile(instrument)) {\n return;\n }\n\n const { top, left } = sl.getGridItemPosition(state, tabId, tileId);\n const { height, width } = sl.getGridItemSize(state, tabId, tileId);\n\n const position: SavedTilePosition = {\n top,\n colPosition: toCol(left),\n };\n\n const size: SavedTileSize = { height, colSize: toCol(width) };\n\n switch (instrument) {\n case 'Cash':\n return makeCashTileToSave(sl, state, tileId, overrideClientId, position, size);\n case 'Option':\n return makeOptionTileToSave(sl, state, tileId, overrideClientId, position, size);\n case 'Swap':\n return makeSwapTileToSave(sl, state, tileId, overrideClientId, position, size);\n case 'Accumulator':\n return makeAccumulatorTileToSave(sl, state, tileId, position, size);\n default:\n return undefined;\n }\n };\n\nfunction makeCashTileToSave(\n sl: Selectors,\n state: AppState,\n tileId: string,\n overrideClientId: string | null,\n position: SavedTilePosition,\n size: SavedTileSize,\n): SavedTile | undefined {\n const currencyPair = sl.getCashCurrencyPair(state, tileId).value;\n\n const {\n values: { maturityDate, maturityDateTenor, productName, amountCurrency, amount, isNonDeliverable = false },\n } = sl.getCashState(state, tileId);\n\n if (currencyPair === null) {\n return {\n instrument: 'Cash',\n overrideClientId: overrideClientId ?? undefined,\n productName,\n currencyPair,\n position,\n size,\n isNonDeliverable,\n };\n } else {\n return {\n instrument: 'Cash',\n overrideClientId: overrideClientId ?? undefined,\n productName,\n currencyPair,\n position,\n size,\n maturityDateTenor:\n maturityDateTenor === dateBR ? getValueOrUndefined(maturityDate) : getValueOrUndefined(maturityDateTenor),\n amountCurrency,\n amount: amount ?? undefined,\n isNonDeliverable,\n };\n }\n}\n\nfunction makeOptionTileToSave(\n sl: Selectors,\n state: AppState,\n tileId: string,\n overrideClientId: string | null,\n position: SavedTilePosition,\n size: SavedTileSize,\n): SavedTile | undefined {\n const {\n values: { currencyPair, hedgeType, premiumDate, premiumDateTenor },\n displayPriceType: [priceTypeCcy, priceType],\n isStrategy,\n orientation,\n } = sl.getOptionState(state, tileId);\n\n function isVanillaLegInput(leg: Partial): leg is IFxVanillaLegInputs {\n return leg.productName === 'Vanilla';\n }\n\n const stripOptionIdFromElementId = (legId: string) => legId.substring(legId.indexOf('/') + 1);\n\n const allLegsInputs = getAllLegsInputs(sl, state, tileId);\n const allHedgesInputs = sl.getAllHedgesOfOptionWithId(state, tileId);\n\n // TODO: remove the complexity\n const updatedLegsInSavedTileFormat = Object.entries(allLegsInputs).reduce((acc, [legId, leg]) => {\n if (isVanillaLegInput(leg)) {\n acc[stripOptionIdFromElementId(legId)] = mapVanillaLeg(leg);\n } else {\n acc[stripOptionIdFromElementId(legId)] = {\n ...(leg as IFxOptionTypedStrategyLegInputs),\n legIds: (leg as IFxOptionTypedStrategyLegInputs).legIds.map(stripOptionIdFromElementId),\n };\n }\n return acc;\n }, {} as Collection);\n\n // simple version\n const updatedHedgesInSavedTileFormat = allHedgesInputs.reduce((acc, [hedgeId, hedge]) => {\n acc[stripOptionIdFromElementId(hedgeId)] = {\n amount: hedge.values.amount ?? undefined,\n currency: hedge.values.currency ?? undefined,\n rate: hedge.values.rate ?? undefined,\n };\n\n return acc;\n }, {} as Collection);\n\n return {\n instrument: 'Option',\n overrideClientId: overrideClientId ?? undefined,\n productName: 'FxOption',\n currencyPair,\n position,\n size,\n isStrategy,\n orientation,\n priceType,\n priceTypeCcy,\n premiumDate: premiumDateTenor === dateBR ? getValueOrUndefined(premiumDate) : undefined,\n premiumDateTenor: premiumDateTenor === dateBR ? undefined : getValueOrUndefined(premiumDateTenor),\n legs: updatedLegsInSavedTileFormat,\n hedgeType,\n hedges: updatedHedgesInSavedTileFormat,\n legIds: [`0`],\n };\n}\n\nfunction makeSwapTileToSave(\n sl: Selectors,\n state: AppState,\n tileId: string,\n overrideClientId: string | null,\n position: SavedTilePosition,\n size: SavedTileSize,\n): SavedTile | undefined {\n const {\n values: {\n nearPaymentDate,\n nearPaymentDateTenor,\n farPaymentDate,\n farPaymentDateTenor,\n productName,\n amountCurrency,\n farAmount,\n nearAmount,\n currencyPair,\n isNonDeliverable,\n },\n } = sl.getSwapState(state, tileId);\n\n if (currencyPair === null) {\n return {\n instrument: 'Swap',\n overrideClientId: overrideClientId ?? undefined,\n productName,\n currencyPair,\n position,\n size,\n isNonDeliverable,\n };\n } else {\n return {\n instrument: 'Swap',\n overrideClientId: overrideClientId ?? undefined,\n productName: isNonDeliverable ? 'FxNdSwap' : productName,\n isNonDeliverable,\n currencyPair,\n position,\n size,\n nearPaymentDateTenor:\n nearPaymentDateTenor === dateBR\n ? getValueOrUndefined(nearPaymentDate)\n : getValueOrUndefined(nearPaymentDateTenor),\n farPaymentDateTenor:\n farPaymentDateTenor === dateBR ? getValueOrUndefined(farPaymentDate) : getValueOrUndefined(farPaymentDateTenor),\n amountCurrency,\n nearAmount: nearAmount ?? undefined,\n farAmount: farAmount ?? undefined,\n };\n }\n}\n\nfunction makeAccumulatorTileToSave(\n sl: Selectors,\n state: AppState,\n tileId: string,\n position: SavedTilePosition,\n size: SavedTileSize,\n): SavedTile | undefined {\n // settlement cut off?\n const {\n values: {\n productName,\n currencyPair,\n priceType,\n priceCurrency,\n premiumDate,\n premiumDateTenor,\n hedgeType,\n way,\n amount,\n amountCurrency,\n amountSplitType,\n leverage,\n step,\n accuType,\n // TODO ABO, SGEFX-5007: harmonize eki variant name (eki, ekiTrigger, step)\n // @ts-ignore\n eki,\n ekiDown,\n ekiUp,\n strikeUp,\n strikeDown,\n pivot,\n akoTrigger,\n ekiTrigger,\n strike,\n targetProfitType,\n target,\n expiryDate,\n expiryTenor,\n fixingFrequency,\n settlementMode,\n cashSettlementCurrency,\n firstFixingDate,\n firstFixingDateTenor,\n isCrossed,\n crossCurrency,\n fixingReference1,\n fixingReference2,\n settlementFrequency,\n },\n } = sl.getAccumulatorState(state, tileId);\n\n return {\n instrument: 'Accumulator',\n productName,\n position,\n size,\n currencyPair: getValueOrUndefined(currencyPair),\n priceType,\n priceCurrency,\n premiumDate: premiumDateTenor === dateBR ? getValueOrUndefined(premiumDate) : undefined,\n premiumDateTenor: premiumDateTenor === dateBR ? undefined : getValueOrUndefined(premiumDateTenor),\n hedgeType,\n way,\n amount: getValueOrUndefined(amount),\n amountCurrency,\n amountSplitType,\n leverage: getValueOrUndefined(leverage),\n step: productName === 'FxForwardAccumulator' ? getValueOrUndefined(step) : undefined,\n accuType,\n eki,\n ekiDown: isDefined(ekiDown) ? ekiDown : undefined,\n ekiUp: isDefined(ekiUp) ? ekiUp : undefined,\n strikeDown: isDefined(strikeDown) ? strikeDown : undefined,\n strikeUp: isDefined(strikeUp) ? strikeUp : undefined,\n pivot: isDefined(pivot) ? pivot : undefined,\n akoTrigger: productName === 'FxForwardAccumulator' && isDefined(akoTrigger) ? akoTrigger : undefined,\n ekiTrigger: productName === 'FxForwardAccumulator' ? getValueOrUndefined(ekiTrigger) : undefined,\n strike: getValueOrUndefined(strike),\n targetProfitType: targetProfitType ?? undefined,\n target: getValueOrUndefined(target),\n expiryDate: expiryTenor === dateBR ? getValueOrUndefined(expiryDate) : undefined,\n expiryTenor: expiryTenor === dateBR ? undefined : getValueOrUndefined(expiryTenor), // date absolue\n fixingFrequency: getValueOrUndefined(fixingFrequency),\n settlementMode,\n cashSettlementCurrency,\n firstFixingDate: firstFixingDateTenor === dateBR ? getValueOrUndefined(firstFixingDate) : undefined,\n firstFixingDateTenor: firstFixingDateTenor === dateBR ? undefined : getValueOrUndefined(firstFixingDateTenor),\n isCrossed,\n crossCurrency: getValueOrUndefined(crossCurrency),\n fixingReference1: getValueOrUndefined(fixingReference1),\n fixingReference2: getValueOrUndefined(fixingReference2),\n settlementFrequency: productName === 'FxForwardAccumulator' ? getValueOrUndefined(settlementFrequency) : undefined,\n };\n}\n\nfunction mapVanillaLeg(argLeg: Partial): OptionVanillaLegSavedTile {\n return {\n productName: 'Vanilla',\n side: argLeg.side ?? undefined,\n expiryDate: argLeg.expiryDateTenor === dateBR ? getValueOrUndefined(argLeg.expiryDate) : undefined,\n expiryDateTenor: argLeg.expiryDateTenor === dateBR ? undefined : getValueOrUndefined(argLeg.expiryDateTenor),\n notionalAmount: stringToNumber(argLeg.notionalAmount ?? null) ?? undefined,\n notionalCurrency: argLeg.notionalCurrency,\n putOrCall: argLeg.optionType ?? undefined,\n strikePrice: getValueOrUndefined(argLeg.strike),\n marketPlace: getValueOrUndefined(argLeg.marketPlace),\n settlementType: argLeg.settlementType ?? undefined,\n cashSettlementCurrency: getValueOrUndefined(argLeg.cashSettlementCurrency),\n fixingReference1: getValueOrUndefined(argLeg.fixingReference1),\n };\n}\n\nfunction getValueOrUndefined(value: string | null | undefined) {\n if (isDefinedAndNonEmpty(value)) {\n return value;\n } else {\n return undefined;\n }\n}\n\nfunction isNotUndefinedTuple(tuple: [string, T | undefined]): tuple is [string, T] {\n return tuple[1] !== undefined;\n}\n\nexport const getWorkspaceToSaveWith: MapStateToMetadataHOF =\n sl => state => {\n const canTrade = sl.userCanTrade(state);\n const tabs = sl.getClientWorkspaceTabs(state);\n const activeTab = sl.getClientWorkspaceActiveTab(state);\n\n const tabsToSave = Object.entries(tabs)\n .filter(isNotUndefinedTuple)\n .map(([tabId, tab], index) => ({\n tabName: tab.name,\n tabType: tab.type,\n order: index,\n clientId: tab.clientId,\n isActive: activeTab === tabId,\n tiles: tab.tiles.map(makeGetTileToSave(sl, state, tabId)).filter(isDefined),\n }));\n\n const blotter = getBlotterToSave(sl, state);\n\n return { version: 9, canTrade, tabs: tabsToSave, blotter };\n };\n\nconst pickPropertiesToSave = pick('colId', 'hide', 'width');\n\nconst mapToSavedTab = (tab: BlotterTabMetadata): SavedBlotterTab => ({\n autoColumState: tab.autoColumState,\n columnsState: tab.columnsState.map(pickPropertiesToSave),\n sortModel: tab.sortModel,\n});\n\nfunction getBlotterToSave(sl: Selectors, state: AppState): SavedBlotter {\n const cashMetadata = sl.getBlotterTabMetadata(state, 'cash');\n const optionMetadata = sl.getBlotterTabMetadata(state, 'option');\n const orderMetadata = sl.getBlotterTabMetadata(state, 'order');\n const accumulatorMetadata = sl.getBlotterTabMetadata(state, 'accumulator');\n\n return {\n panelHeight: sl.getBlotterPanelHeight(state),\n activeTab: sl.getBlotterActiveTab(state),\n cashTab: mapToSavedTab(cashMetadata),\n optionTab: mapToSavedTab(optionMetadata),\n orderTab: mapToSavedTab(orderMetadata),\n accumulatorTab: mapToSavedTab(accumulatorMetadata),\n };\n}\n","import { selectors } from 'state/selectors';\nimport { getWorkspaceToSaveWith } from './saveWorkspaceSelectors';\n\nexport const getWorkspaceToSave = getWorkspaceToSaveWith(selectors);\n","import * as bulkMsl from './bulk';\nimport * as optionMsl from './option';\nimport * as swapMsl from './swap';\nimport * as cashMsl from './cash';\nimport * as blotterMsl from './blotter';\nimport * as eventLogMsl from './eventLog';\nimport * as accumulatorMsl from './accumulator';\nimport * as orderMsl from './order';\nimport * as espMsl from './esp';\nimport * as workspaceMsl from './workspace';\n\nexport const metaSelectors = {\n ...bulkMsl,\n ...optionMsl,\n ...swapMsl,\n ...cashMsl,\n ...blotterMsl,\n ...eventLogMsl,\n ...accumulatorMsl,\n ...orderMsl,\n ...espMsl,\n ...workspaceMsl,\n};\nexport type MetaSelectors = typeof metaSelectors;\n","import type { FxApi } from 'api/typings';\nimport { logger } from 'logging/logger';\nimport { type EpicMiddleware, createEpicMiddleware } from 'redux-observable';\nimport type { EffectsExtraArgument, EpicExtraArgument } from 'state';\nimport { actionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\nimport { selectors } from 'state/selectors';\nimport { getNewRfsId } from 'utils/rfs';\nimport { metaSelectors } from './metaSelectors';\nimport { v4 as getNewGuid } from 'uuid';\n\nfunction formatNumber(value: number, locale: string) {\n // replace nbsp by real spaces\n return Intl.NumberFormat(locale).format(value).replace(/\\s/g, ' ');\n}\n\nconst effects: EffectsExtraArgument = {\n getNewRfsId,\n getDateNow: () => new Date(),\n checkDomValue(quoteId: string, cssSelector: string, sentValue: number): void {\n const inputValue = document.querySelector(\n `[data-quote-id=\"${quoteId}\"] + form [data-e2e=\"${cssSelector}\"]`,\n )?.value;\n const locale = document.querySelector(\n 'sgwt-account-center',\n )?.language;\n const formattedNumber = formatNumber(sentValue, locale ?? 'en');\n if (inputValue !== undefined && !Number.isNaN(sentValue)) {\n if (formattedNumber !== inputValue) {\n throw `DOM input mismatch: expected ${formattedNumber} but was actually ${inputValue}`;\n }\n } else {\n logger.logWarning('Could not check state vs input value {@inputDomDetails}', {\n quoteId,\n cssSelector,\n sentValue,\n formattedNumber,\n inputValue,\n locale,\n });\n }\n },\n};\n\nexport function makeEpicMiddleware(\n api: FxApi,\n): EpicMiddleware {\n return createEpicMiddleware({\n dependencies: {\n actionCreators,\n selectors,\n metaSelectors,\n getNewGuid,\n api,\n effects,\n },\n });\n}\n","import type { IMatomoConfig } from 'utils/matomoUtils';\nimport type { Theme } from 'utils/theme';\nimport type { ISignalRConfiguration } from '../../configuration.signalr';\n\nexport interface ISgmeConfiguration {\n sgConnect: {\n authorization_endpoint: string;\n client_id: string;\n scope: string;\n acr_values: 'L2' | 'L3';\n redirect_uri: string;\n };\n accessRequestUrl: string;\n SGWTWidgetConfiguration: {\n environment: string;\n };\n signalR: ISignalRConfiguration;\n piwik: IMatomoConfig | null;\n helpCenterSendMailto: string;\n useFakeSgConnect: boolean;\n pingIntervalMs: string;\n maxEspPingDelayMs: string;\n logIntervalMs: string;\n recommendedHedgeAmountInPercent: string;\n env: string;\n apiUrl: string;\n sgmContactsUrl: string;\n bamSearchFrequencyMs: string;\n fxtcaUrl: string;\n}\n\nexport const getApiUrl = () => {\n let apiUrl = window.sgmeConfiguration.apiUrl;\n if (!apiUrl.endsWith('/')) {\n apiUrl += '/';\n window.sgmeConfiguration.apiUrl = apiUrl;\n }\n return apiUrl;\n};\n\ndeclare global {\n interface Window {\n sgmeConfiguration: ISgmeConfiguration;\n theme: Theme;\n }\n}\n","import { v4 as getNewGuid } from 'uuid';\nimport { Observable, of } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\nimport type { AjaxResponse, AjaxError } from 'rxjs/ajax';\nimport { getApiUrl } from 'bootstrap/sgmeConfiguration';\n\nconst apiUrl = getApiUrl();\n\nexport interface HttpCall {\n payload: T;\n timeTaken: number;\n}\n\nexport const correlationIdHeaderName = 'X-Correlation-ID';\n\nexport const mockPost = () => of({ payload: {} as any, timeTaken: 0 });\n\nexport interface ISgmeHttp {\n post(url: string, body?: any, headers?: object): Observable>;\n put(url: string, body?: any, headers?: object): Observable>;\n getJSON(url: string, headers?: object): Observable>;\n}\n\nexport interface IAjaxAlike {\n post(url: string, body?: any, headers?: object): Observable;\n put(url: string, body?: any, headers?: object): Observable;\n getJSON(url: string, headers?: object): Observable;\n}\n\nfunction buildContentTypeHeader() {\n return {\n 'Content-Type': 'application/json',\n };\n}\n\nfunction buildCorrelationIdHeader(headers?: object) {\n return Object.keys(headers || {}).some(header => header === correlationIdHeaderName)\n ? undefined\n : { [correlationIdHeaderName]: getNewGuid() };\n}\n\nfunction buildFakeAuthenticationHeader(fakeUser: string) {\n return { 'X-Fake-Authentication': fakeUser };\n}\n\nfunction cleanUpSensitiveInformation(err?: AjaxError) {\n if (err !== undefined && err.request !== undefined && err.request.headers !== undefined) {\n const headers: any = err.request.headers;\n if (headers.Authorization !== undefined) {\n headers.Authorization = '*** SECRET ***';\n }\n }\n return err;\n}\n\nexport function SgmeHttp(\n getAuthorizationHeader: () => string | null | never,\n ajaxApi: IAjaxAlike,\n fakeUser?: string,\n): ISgmeHttp {\n const fakeAuthenticationHeader =\n fakeUser !== undefined && window.sgmeConfiguration.useFakeSgConnect\n ? buildFakeAuthenticationHeader(fakeUser)\n : undefined;\n\n function buildCommonHeaders(headers?: object) {\n return {\n ...headers,\n Application: 'FX',\n ...buildCorrelationIdHeader(headers),\n ...fakeAuthenticationHeader,\n Authorization: getAuthorizationHeader(),\n };\n }\n\n const buildGetHeaders = (headers?: object) => ({\n // don't put Content-Type in GET\n ...buildCommonHeaders(headers),\n });\n\n const buildPostHeaders = (headers?: object) => ({\n ...buildContentTypeHeader(),\n ...buildCommonHeaders(headers),\n });\n\n return {\n post(url: string, body?: any, headers?: object): Observable> {\n const start = performance.now();\n return ajaxApi.post(apiUrl + url, body, buildPostHeaders(headers)).pipe(\n map(r => {\n const end = performance.now();\n return {\n payload: r.response as T,\n timeTaken: end - start,\n };\n }),\n catchError(err => {\n throw cleanUpSensitiveInformation(err);\n }),\n );\n },\n put(url: string, body?: any, headers?: object): Observable> {\n const start = performance.now();\n return ajaxApi.put(apiUrl + url, body, buildPostHeaders(headers)).pipe(\n map(r => {\n const end = performance.now();\n return {\n payload: r.response as T,\n timeTaken: end - start,\n };\n }),\n catchError(err => {\n throw cleanUpSensitiveInformation(err);\n }),\n );\n },\n getJSON(url: string, headers?: object): Observable> {\n const start = performance.now();\n return ajaxApi.getJSON(apiUrl + url, buildGetHeaders(headers)).pipe(\n map((payload: T) => {\n const end = performance.now();\n return {\n payload,\n timeTaken: end - start,\n };\n }),\n catchError(err => {\n throw cleanUpSensitiveInformation(err);\n }),\n );\n },\n };\n}\n","import { SgmeHttp } from 'utils/sgmeHttp';\nimport { ajax } from 'rxjs/ajax';\nimport { sgwtConnect, getFakeUser } from 'api/connect';\n\nexport const sgmeHttp = SgmeHttp(\n sgwtConnect.getAuthorizationHeader.bind(sgwtConnect),\n ajax,\n getFakeUser(),\n);\n","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","import type { Reducer } from 'redux';\nimport { type IWorkspaceTabs, tabNameGenerators } from '../clientWorkspaceModel';\nimport type { Action } from 'state/actions';\nimport { strictEntries } from 'utils/object/entries';\nimport { addKey, updateKey, removeKey } from 'utils/stateMap';\n\nexport const clientWorkspaceTabsReducer: Reducer = (\n tabs: IWorkspaceTabs = {},\n action: Action,\n): IWorkspaceTabs => {\n switch (action.type) {\n case 'CLIENTWORKSPACE_TAB_ADDED':\n return addKey(tabs, action.tabId, {\n name: action.tabName,\n isNamePristine: true,\n type: action.tabType,\n clientId: action.clientId,\n tiles: [],\n zoomedTile: null,\n });\n case 'ORDER_SUBMISSION_SUCCESS':\n if (action.orderId === null) {\n return tabs;\n }\n const [tabId] =\n strictEntries(tabs).find(([, { tiles }]) => tiles.includes(action.quoteId)) ?? [];\n if (tabId === undefined) {\n return tabs;\n }\n return updateKey(tabs, tabId, ({ tiles }) => ({\n tiles: action.order ? [...tiles.filter(t => t !== action.quoteId), action.orderId!] : tiles,\n }));\n case 'BLOTTER_ORDER_OPEN_TILE':\n return updateKey(tabs, action.currentTabId, ({ tiles }) => ({\n tiles: tiles.includes(action.orderId) ? tiles : [...tiles, action.orderId],\n }));\n case 'CLIENTWORKSPACE_TAB_REMOVED':\n return removeKey(tabs, action.tabId);\n case 'CLIENTWORKSPACE_CLIENT_CHANGED':\n return updateKey(tabs, action.clientWorkspaceId, () => ({\n clientId: action.clientId,\n }));\n case 'CLIENTWORKSPACE_TAB_TYPE_CHANGED':\n return updateKey(tabs, action.clientWorkspaceId, state => {\n const findLastNumber = /^.*\\s(\\d+)$/g.exec(state.name);\n const shouldNotUpdateName =\n !state.isNamePristine || findLastNumber === null || findLastNumber.length < 2;\n return {\n name: shouldNotUpdateName\n ? state.name\n : tabNameGenerators[action.tabType](parseInt(findLastNumber![1], 10)),\n type: action.tabType,\n };\n });\n case 'CLIENTWORKSPACE_NEW_TILE_ADDED':\n case 'CLIENTWORKSPACE_TILE_RESTORED':\n case 'CLIENTWORKSPACE_TILE_DUPLICATED':\n case 'CLIENTWORKSPACE_TILE_REOPENED':\n return updateKey(tabs, action.clientWorkspaceId, ({ tiles }) => ({\n tiles: tiles.concat([action.tileId]),\n }));\n case 'CLIENTWORKSPACE_TILE_DELETED':\n return updateKey(tabs, action.clientWorkspaceId, ({ tiles }) => ({\n tiles: tiles.filter(tileId => tileId !== action.tileId),\n }));\n case 'CLIENTWORKSPACE_TAB_RENAMED':\n return updateKey(tabs, action.clientWorkspaceId, () => ({\n name: action.newName,\n isNamePristine: false,\n }));\n case 'CLIENTWORKSPACE_TILE_ZOOMED':\n return updateKey(tabs, action.tabId, () => ({ zoomedTile: action.tileId }));\n case 'CLIENTWORKSPACE_TILE_MINIMIZED':\n return updateKey(tabs, action.tabId, () => ({ zoomedTile: null }));\n default:\n return tabs;\n }\n};\n","import type { Reducer } from 'redux';\nimport type { Action } from 'state/actions';\n\nexport const clientWorkspaceActiveTabReducer: Reducer = (\n activeTab: string | null = null,\n action: Action,\n) => {\n switch (action.type) {\n case 'CLIENTWORKSPACE_TAB_SWITCHED':\n return action.tabId;\n case 'CLIENTWORKSPACE_TAB_ADDED':\n if (activeTab === null) {\n return action.tabId;\n }\n }\n return activeTab;\n};\n","import type { Reducer } from 'redux';\nimport type { IWorkspaceTiles, IWorkspaceTileState } from '../clientWorkspaceModel';\nimport type { Action } from 'state/actions';\nimport { addKey, removeKey, updateKey } from 'utils/stateMap';\nimport type { InstrumentChoice, TileInstrument } from 'state/referenceData/referenceDataModel';\n\nfunction mapToTileInstrument(instrumentChoice: InstrumentChoice | 'Order'): TileInstrument {\n return instrumentChoice === 'ForwardAccumulator' || instrumentChoice === 'TargetAccumulator'\n ? 'Accumulator'\n : instrumentChoice;\n}\n\nexport const clientWorkspaceTilesReducer: Reducer = (\n tiles: IWorkspaceTiles = {},\n action: Action,\n): IWorkspaceTiles => {\n switch (action.type) {\n case 'CLIENTWORKSPACE_TILE_RESTORED':\n return addKey(tiles, action.tileId, {\n instrument: action.savedTile.instrument,\n expanded:\n action.savedTile.instrument === 'Option' && action.isOptionGreekAndMktExpanded\n ? ['Greeks', 'MarketData']\n : [],\n clientWorkspaceId: action.clientWorkspaceId,\n overrideClientId: action.savedTile.overrideClientId ?? null,\n });\n case 'BULK_CREATED':\n return addKey(tiles, action.bulkId, {\n instrument: 'Bulk',\n expanded: [],\n clientWorkspaceId: action.bulkId,\n overrideClientId: null,\n });\n case 'CLIENTWORKSPACE_NEW_TILE_ADDED':\n case 'CLIENTWORKSPACE_TILE_DUPLICATED':\n case 'CLIENTWORKSPACE_TILE_REOPENED':\n return addKey(tiles, action.tileId, {\n instrument: mapToTileInstrument(action.instrument),\n expanded:\n action.instrument === 'Option' && action.isOptionGreekAndMktExpanded\n ? ['Greeks', 'MarketData']\n : [],\n clientWorkspaceId: action.clientWorkspaceId,\n overrideClientId: null,\n });\n case 'CLIENTWORKSPACE_TILE_TOGGLE_COLLAPSED':\n return updateKey(tiles, action.tileId, ({ expanded }) => ({\n expanded: expanded.includes(action.keyName)\n ? expanded.filter(key => key !== action.keyName)\n : expanded.concat([action.keyName]),\n }));\n case 'CLIENTWORKSPACE_TILE_DELETED':\n return removeKey(tiles, action.tileId);\n case 'CLIENTWORKSPACE_TILE_INSTRUMENT_CHANGED':\n return updateKey(tiles, action.tileId, () => ({\n instrument: mapToTileInstrument(action.instrument),\n expanded:\n action.instrument === 'Option' && action.isOptionGreekAndMktExpanded\n ? ['Greeks', 'MarketData']\n : [],\n }));\n case 'ORDER_SUBMISSION_SUCCESS':\n if (action.orderId === null) {\n return tiles;\n }\n const existingTileState = tiles[action.quoteId]!;\n return action.order\n ? removeKey(\n addKey(tiles, action.orderId, {\n ...existingTileState,\n instrument: 'BlotterOrder',\n }),\n action.quoteId,\n )\n : tiles;\n case 'BLOTTER_ORDER_OPEN_TILE':\n return Object.keys(tiles).includes(action.orderId)\n ? tiles\n : addKey(tiles, action.orderId, {\n instrument: 'BlotterOrder',\n clientWorkspaceId: action.currentTabId,\n overrideClientId: action.account,\n expanded: [],\n });\n case 'CLIENTWORKSPACE_CLIENT_CHANGED':\n let newTiles = tiles;\n for (const key of Object.keys(tiles)) {\n newTiles = updateKey(newTiles, key, tile =>\n tile.instrument === 'BlotterOrder' && tile.clientWorkspaceId === action.clientWorkspaceId\n ? {\n overrideClientId:\n tile.overrideClientId === action.clientId\n ? null\n : tile.overrideClientId === null\n ? action.previousClientId\n : tile.overrideClientId,\n }\n : {},\n );\n }\n return newTiles;\n case 'CLIENTWORKSPACE_TILE_CLIENT_OVERRIDDEN':\n return updateKey(tiles, action.quoteId, () => ({\n overrideClientId: action.clientId,\n }));\n case 'CLIENTWORKSPACE_TILE_CLIENT_RESET':\n return updateKey(tiles, action.quoteId, () => ({\n overrideClientId: null,\n }));\n case 'CLIENTWORKSPACE_TILE_CLIENT_ERROR_CHANGED':\n return updateKey(tiles, action.tileId, () => ({\n clientError: action.clientError,\n }));\n case 'CASH_TILE_RESET':\n case 'SWAP_TILE_RESET':\n case 'OPTION_TILE_RESET':\n case 'ACCUMULATOR_TILE_RESET':\n return updateKey(tiles, action.quoteId, ({ clientError }) =>\n clientError\n ? {\n clientError: false,\n }\n : null,\n );\n default:\n return tiles;\n }\n};\n","import type { Reducer } from 'redux';\nimport type { IWorkspaceGrowls, GrowlData } from '../clientWorkspaceModel';\nimport type { Action } from 'state/actions';\n\nexport const clientWorkspaceGrowlsReducer: Reducer = (\n growls: IWorkspaceGrowls = [],\n action: Action,\n): IWorkspaceGrowls => {\n switch (action.type) {\n case 'OPTION_EXECUTION_SENT':\n case 'CASH_RFS_EXECUTION_SENT':\n case 'CASH_ESP_EXECUTION_SENT':\n case 'SWAP_EXECUTION_SENT':\n case 'ACCUMULATOR_EXECUTION_SENT':\n const newGrowl: GrowlData = {\n id: action.executionId,\n instrument: action.instrument,\n };\n return [newGrowl, ...growls];\n case 'GROWL_CLOSED':\n return growls.filter(({ id }) => id !== action.growlId);\n default:\n return growls;\n }\n};\n","import type { Reducer } from 'redux';\nimport type { Action } from 'state/actions';\n\nexport const tradingDisabledReducer: Reducer = (\n state: boolean = true,\n action: Action,\n): boolean => {\n switch (action.type) {\n case 'REFERENCE_DATA_RECEIVED':\n return !action.userInfo.canTrade;\n case 'TOGGLE_TRADING_DISABLED':\n return !state;\n case 'TOGGLE_TRADING_RECEIVED':\n return !action.canTrade;\n default:\n return state;\n }\n};\n","import type { Reducer } from 'redux';\nimport type { Action } from 'state/actions';\nimport type { SaveState } from '..';\n\nconst defaultSaveState = 'READY';\n\nexport const saveStateReducer: Reducer = (\n state: SaveState = defaultSaveState,\n action: Action,\n): SaveState => {\n switch (action.type) {\n case 'SAVE_WORKSPACE_REQUESTED':\n return 'PENDING';\n case 'SAVE_WORKSPACE_DONE':\n return action.success ? 'SUCCESS' : 'FAIL';\n case 'SAVE_WORKSPACE_READY':\n return 'READY';\n default:\n return state;\n }\n};\n","import { combineReducers } from 'redux';\nimport type { ClientWorkspaceState } from '../clientWorkspaceModel';\nimport { clientWorkspaceTabsReducer } from './clientWorkspaceTabsReducer';\nimport { clientWorkspaceActiveTabReducer } from './clientWorkspaceActiveTabReducer';\nimport { clientWorkspaceTilesReducer } from './clientWorkspaceTilesReducer';\nimport { clientWorkspaceGrowlsReducer } from './clientWorkspaceGrowlsReducer';\nimport { tradingDisabledReducer } from './clientWorkspaceTradingDisabledReducer';\nimport { saveStateReducer } from './clientWorkspaceSavingReducer';\n\nexport const clientWorkspaceReducer = combineReducers({\n tabs: clientWorkspaceTabsReducer,\n activeTab: clientWorkspaceActiveTabReducer,\n tiles: clientWorkspaceTilesReducer,\n growls: clientWorkspaceGrowlsReducer,\n tradingDisabled: tradingDisabledReducer,\n saveState: saveStateReducer,\n});\n","import type { FxPriceRecordState, PriceRecord } from './priceRecordModel';\nimport type { Patcher } from 'utils/stateMap';\n\nexport function addPriceRecorded(action: {\n priceRecord: PriceRecord;\n}): Patcher {\n return state =>\n ({\n priceRecords: [...state.priceRecords, action.priceRecord] as readonly PriceRecord[],\n } as Partial);\n}\n","import type { Action } from 'state/globalActions';\nimport type { FormDomain } from 'state/referenceData';\nimport type { Collection } from 'typings/utils';\nimport { updateKey } from 'utils/stateMap';\nimport type { IFormData } from './form';\nimport type { ValueKeys } from './productModel';\n\nexport const validationPartialReducer =\n >(reducerInstrument: I) =>\n (state: Collection, action: Action): Collection => {\n switch (action.type) {\n case 'LOCAL_FIELD_VALIDATION_SET':\n return action.instrument !== reducerInstrument\n ? state\n : updateKey(state, action.quoteId, ({ errors, warnings }) => {\n const validation = {\n code: action.messageId,\n userNotified: false,\n };\n return (\n action.validationStatus === 'warning'\n ? { warnings: { ...warnings, [action.field]: validation } }\n : { errors: { ...errors, [action.field]: validation } }\n ) as Partial;\n });\n case 'LOCAL_FIELD_VALIDATION_CLEAR':\n return action.instrument !== reducerInstrument\n ? state\n : updateKey(\n state,\n action.quoteId,\n ({\n errors: { [action.field as ValueKeys]: _error, ...errors },\n warnings: { [action.field as ValueKeys]: _warning, ...warnings },\n }) => ({ errors, warnings } as Partial),\n );\n default:\n return state;\n }\n };\n","export const shallowEqual = function shallowEqual(objA: any, objB: any) {\n // early equality detection\n if (Object.is(objA, objB)) {\n return true;\n }\n // defensive assertion that args are iterable objects\n if (!isObject(objA) || !isObject(objB)) {\n return false;\n }\n // key by key equality assertion\n const A = Object.keys(objA);\n const B = Object.keys(objB);\n // early difference inferable from length difference\n if (A.length !== B.length) {\n return false;\n }\n // compare values for every keys\n return A.every(p => hasOwnProperty.call(objB, p) && Object.is(objA[p], objB[p]));\n};\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst isObject = (obj: any) => obj !== null && typeof obj === 'object';\n","import type { Reducer } from 'redux';\nimport { addKey, removeKey, updateKey } from 'utils/stateMap';\nimport type { Action } from 'state/actions';\nimport { addPriceRecorded } from 'state/share/priceRecordReducerHelper';\nimport { strictEntries } from 'utils/object/entries';\nimport { isDefined } from '@sgme/fp';\nimport { productPatcher } from 'state/share/patchHelper';\nimport { validationPartialReducer } from 'state/share/validationReducer';\nimport { shallowEqual } from 'utils/shallowEqual';\nimport type { DisplayPriceType, FxOptionState, FxOptionStateMap, OptionLegsOrientation } from '../model/optionProduct';\nimport { emptyFxOptionState, updateLegIdsWithNewTileId } from '../utilities';\n\nconst mapDisplayPriceType = (displayPriceType: DisplayPriceType | undefined) =>\n displayPriceType ? { displayPriceType } : undefined;\n\nconst emptyStateWithGrouping = (\n group: boolean | null,\n orientation: OptionLegsOrientation,\n defaultLegIds?: string[],\n): FxOptionState => ({\n ...emptyFxOptionState,\n ...(defaultLegIds && { legIds: defaultLegIds }),\n group: group ?? false,\n orientation,\n expanded: [],\n});\n\n/**\n * Filter string[] to remove call/put leg and only return number\n * @param legKeys\n * @returns\n */\nexport const getLastNumberLastLegId = (legKeys: string[]): number => {\n const allIds = legKeys\n .map(legId => {\n const legIdValue = /\\/([0-9]+)$/.exec(legId);\n return isDefined(legIdValue) ? Number(legIdValue[1]) : null;\n })\n .filter(isDefined);\n\n return Math.max(...allIds);\n};\n\nconst optionValidationReducer = validationPartialReducer<'Option', FxOptionState>('Option');\n\nexport const optionsProductReducer: Reducer = (\n state: FxOptionStateMap = {},\n action: Action,\n): FxOptionStateMap => {\n switch (action.type) {\n case 'CLIENTWORKSPACE_TILE_RESTORED':\n return action.savedTile.instrument === 'Option'\n ? addKey(\n state,\n action.tileId,\n emptyStateWithGrouping(\n action.isOptionGrouped,\n action.savedTile.orientation,\n updateLegIdsWithNewTileId(action.tileId, action.savedTile.legIds),\n ),\n )\n : state;\n\n case 'CLIENTWORKSPACE_NEW_TILE_ADDED':\n case 'CLIENTWORKSPACE_TILE_REOPENED':\n // todo 4285 should we add legIds when calling emptyStateWithGrouping ? - when do we pass here for option ?\n return action.instrument === 'Option'\n ? addKey(\n state,\n action.tileId,\n emptyStateWithGrouping(action.isOptionGrouped, 'vertical', [`${action.tileId}/0`]),\n )\n : state;\n\n case 'CLIENTWORKSPACE_TILE_DUPLICATED':\n if (action.instrument === 'Option') {\n const legIds = state[action.originalTileId]?.legIds.map(x => x);\n return addKey(state, action.tileId, emptyStateWithGrouping(action.isOptionGrouped, 'vertical', legIds));\n } else {\n return state;\n }\n\n case 'CLIENTWORKSPACE_TILE_INSTRUMENT_CHANGED':\n return action.instrument === 'Option'\n ? addKey(\n state,\n action.tileId,\n emptyStateWithGrouping(action.isOptionGrouped, 'vertical', [`${action.tileId}/0`]),\n )\n : removeKey(state, action.tileId);\n\n case 'CLIENTWORKSPACE_TILE_DELETED':\n return removeKey(state, action.tileId);\n\n case 'OPTION_TILE_RESET':\n return updateKey(state, action.quoteId, ({ isStrategy, legIds, orientation, displayPriceType, group }) => ({\n ...emptyFxOptionState,\n isStrategy,\n legIds: legIds.slice(0, 1),\n orientation,\n displayPriceType,\n group,\n }));\n\n case 'OPTION_PROPERTY_CHANGED':\n return updateKey(state, action.optionId, option => ({\n inputs: {\n ...option.inputs,\n ...action.patch,\n },\n lastStreamError: null,\n }));\n\n case 'OPTION_PROPERTY_REMOVE_ERROR':\n return updateKey(state, action.optionId, option => {\n const errors = strictEntries(option.errors)\n .filter(([errorKey]) => !action.keys.includes(errorKey))\n .reduce(\n (newErrors, [key, error]) => ({\n ...newErrors,\n [key]: error,\n }),\n {},\n );\n return {\n ...option,\n errors,\n };\n });\n case 'RECORD_PRICE_SUCCEEDED':\n case 'RECORD_PRICE_FAILED':\n if (action.instrument !== 'Option') {\n return state;\n }\n return updateKey(\n state,\n action.tileId,\n addPriceRecorded({\n priceRecord: {\n error: action.error,\n prices: action.error ? undefined : action.prices,\n timestamp: action.timestamp,\n },\n }),\n );\n case 'OPTION_DISPLAY_PRICE_TYPE_CHANGED':\n return updateKey(state, action.optionId, _ => ({\n displayPriceType: action.displayPriceType,\n }));\n\n case 'OPTION_LEG_CURRENCY_LINKED_TOGGLED':\n return updateKey(state, action.optionId, option => ({\n legsCurrencyLinked: !option.legsCurrencyLinked,\n }));\n\n case 'OPTION_PROPERTIES_REQUESTED':\n return updateKey(state, action.optionId, _ => ({\n propertiesRequested: true,\n currentSessionId: action.sessionId,\n }));\n\n case 'OPTION_PROPERTIES_RECEIVED': {\n return productPatcher(state, { ...action, patch: action.optionPatch }, oldOption => {\n const legIds = Object.keys(action.legsPatch);\n const fxOptionMultilegIds = legIds.filter(legId => /^[^/]+\\/[^/]+$/.test(legId));\n const lastLegId = getLastNumberLastLegId(legIds);\n\n return {\n legIds: shallowEqual(oldOption.legIds, fxOptionMultilegIds) ? oldOption.legIds : fxOptionMultilegIds, // todo SGEFX 4282 do we still need the shallowEqual ?\n nextLegId: lastLegId + 1,\n ...(oldOption.group\n ? {\n expanded: [\n ...oldOption.expanded,\n ...Object.values(action.legsPatch)\n // @TODO @SGME-4285 remove non vanilla productName ?\n .map(({ values }) => values.expiryDate)\n .filter(isDefined)\n .filter(expiry => !oldOption.expanded.includes(expiry)),\n ],\n }\n : {}),\n ...mapDisplayPriceType(action.displayPriceType),\n };\n });\n }\n\n case 'OPTION_PROPERTIES_REQUEST_FAILED':\n return updateKey(state, action.quoteId, () => ({\n propertiesRequested: false,\n propertiesRequestError: action.error,\n }));\n case 'OPTION_STRIPPING_FAILED':\n return updateKey(state, action.quoteId, () => ({\n propertiesRequested: false,\n }));\n\n case 'OPTION_LEG_PROPERTY_CHANGED':\n case 'OPTION_LEGS_PROPERTY_CHANGED':\n return updateKey(state, action.optionId, () => ({\n lastStreamError: null,\n }));\n case 'OPTION_STRIKE_SOLVED':\n return updateKey(state, action.optionId, () => ({\n lastStreamError: null,\n displaySolveStrikeModal: false,\n wayStrikeModal: 'Bid',\n }));\n case 'FIELD_TOOLTIP_SEEN':\n return action.instrument !== 'Option'\n ? state\n : updateKey(state, action.quoteId, ({ errors, warnings }) => ({\n errors: updateKey(errors, action.field, () => ({ userNotified: true })),\n warnings: updateKey(warnings, action.field, () => ({ userNotified: true })),\n }));\n case 'OPTION_STREAM_STARTED':\n return updateKey(state, action.optionId, () => ({\n priceRecords: [],\n rfsStartedAt: action.rfsStartedAt,\n currentStreamId: action.streamId,\n lastStreamError: null,\n }));\n\n case 'OPTION_STREAM_CANCELED':\n case 'OPTION_STREAM_TERMINATED':\n return updateKey(state, action.optionId, ({ currentStreamId }) => {\n if (currentStreamId !== action.streamId) {\n return null;\n }\n return {\n currentStreamId: null,\n lastStreamId: action.shouldKeepAsExpired ? currentStreamId : null,\n lastStreamError: null,\n };\n });\n case 'OPTION_STREAM_FAILED':\n return updateKey(state, action.optionId, () => ({\n currentStreamId: null,\n lastStreamId: null,\n lastStreamError: action.error,\n }));\n\n case 'OPTION_RFS_CLEAR_ERROR':\n return updateKey(state, action.quoteId, () => ({\n currentStreamId: null,\n lastStreamError: null,\n }));\n\n case 'OPTION_EXECUTION_SENT':\n return updateKey(state, action.optionId, ({ currentStreamId }) => ({\n lastExecutedQuoteId: action.quoteId,\n currentExecutionId: action.executionId,\n currentStreamId: null,\n lastStreamId: currentStreamId,\n lastStreamError: null,\n warnings: {},\n }));\n case 'OPTION_STREAM_LAST_REMOVED':\n return updateKey(state, action.optionId, () => ({\n lastStreamId: null,\n }));\n case 'TILE_EXECUTION_OVERLAY_HIDDEN':\n return updateKey(state, action.quoteId, () => ({\n currentExecutionId: null,\n }));\n\n case 'OPTION_TOGGLE_STRATEGY':\n return updateKey(state, action.optionId, () => ({\n isStrategy: action.isStrategy,\n }));\n\n case 'OPTION_STRATEGY_TYPE_CHANGED':\n return updateKey(state, action.optionId, ({ values }) => ({\n values: {\n ...values,\n hedgeType: emptyFxOptionState.values.hedgeType,\n },\n }));\n\n case 'OPTION_TOGGLE_GROUP':\n return updateKey(state, action.quoteId, () => ({ group: action.isGroup }));\n case 'OPTION_TOGGLE_EXPAND':\n return updateKey(state, action.quoteId, metadata => {\n if (metadata.expanded.includes(action.expiry)) {\n return { expanded: metadata.expanded.filter(expiry => expiry !== action.expiry) };\n } else {\n return { expanded: [...metadata.expanded, action.expiry] };\n }\n });\n case 'OPTION_MASS_EXPAND':\n return updateKey(state, action.quoteId, metadata => {\n if (!metadata.group) {\n return {};\n }\n return { expanded: action.expiries };\n });\n case 'OPTION_LEG_ADDED':\n case 'OPTION_LEG_REMOVED':\n return updateKey(state, action.optionId, () => ({\n propertiesRequested: true,\n }));\n case 'ESP_TILE_STREAM_ID_AND_REFCOUNT_UPDATED':\n return updateKey(state, action.tileId, () => ({\n currentEspStreamId: action.streamId,\n }));\n case 'ESP_STREAM_RECONNECTED':\n return updateKey(state, action.tileId, () => ({\n currentEspStreamId: action.streamKey,\n }));\n case 'ESP_STREAM_TILE_UNSUBSCRIBE':\n case 'ESP_STREAM_KEY_REQUEST_PENDING':\n return updateKey(state, action.tileId, () => ({\n currentEspStreamId: null,\n }));\n case 'OPTION_ORIENTATION_TOGGLED':\n return updateKey(state, action.tileId, () => ({\n orientation: action.orientation,\n }));\n case 'TOGGLE_SOLVE_STRIKE_MODAL':\n return updateKey(state, action.quoteId, () => ({\n displaySolveStrikeModal: action.display,\n wayStrikeModal: 'Bid',\n }));\n default:\n return optionValidationReducer(state, action);\n }\n};\n","import { updateKey, removeKey, addKey, setKeyIfExisty } from 'utils/stateMap';\nimport type {\n FxOptionStreamState,\n FxOptionStreamMap,\n IFxOptionStreamAwaitingState,\n} from '../model/optionsStreams';\nimport type { Action } from '../../actions';\nimport type { Reducer } from 'redux';\nimport { immutableReferenceUpdate } from 'utils/immutableReferenceUpdate';\n\n// STREAMS\n\nexport const optionsStreamsReducer: Reducer = (\n state: FxOptionStreamMap = {},\n action: Action,\n): FxOptionStreamMap => {\n switch (action.type) {\n case 'OPTION_STREAM_STARTED':\n return addKey(state, action.streamId, {\n version: 0,\n status: 'AWAITING',\n forceTradeable: action.forceTradeable,\n traderId: null,\n });\n\n case 'OPTION_STREAM_UPDATED':\n return setKeyIfExisty(state, action.streamId, prevStream => {\n if (prevStream.status === 'INVALID') {\n return prevStream;\n }\n\n const result: IFxOptionStreamAwaitingState = {\n status: 'AWAITING',\n forceTradeable: prevStream.forceTradeable,\n traderId: prevStream.traderId,\n version: prevStream.version + 1,\n };\n\n return result;\n });\n\n case 'OPTION_TRADER_NOTIFICATION_RECEIVED':\n return updateKey(state, action.streamId, () => ({\n status: 'AWAITING',\n traderId: action.traderId,\n }));\n\n case 'OPTION_QUOTE_RECEIVED':\n return setKeyIfExisty(state, action.streamId, stream => {\n if (stream.status === 'INVALID') {\n return stream;\n }\n\n const traderId =\n stream.status === 'AWAITING' || stream.status === 'PRICING' ? stream.traderId : null;\n\n const result: FxOptionStreamState = {\n status: 'PRICING',\n quote:\n stream.status === 'PRICING'\n ? immutableReferenceUpdate(stream.quote, action.quote)\n : action.quote,\n initialRfsWindow:\n stream.status === 'PRICING' ? stream.initialRfsWindow : action.quote.rfsWindow,\n tiering: action.tiering,\n skippedLimitCheck: action.skippedLimitCheck,\n forceTradeable: stream.forceTradeable,\n traderId,\n quoteContribution: action.quoteContribution,\n version: stream.version,\n };\n\n return result;\n });\n\n case 'OPTION_STREAM_CANCELED':\n case 'OPTION_STREAM_TERMINATED':\n if (!action.shouldKeepAsExpired) {\n return removeKey(state, action.streamId);\n }\n return updateKey(state, action.streamId, () => ({\n status: 'EXPIRED',\n }));\n\n case 'OPTION_STREAM_FAILED':\n case 'OPTION_STREAM_LAST_REMOVED':\n return removeKey(state, action.streamId);\n\n case 'OPTION_EXECUTION_SENT':\n return updateKey(state, action.executionId, () => ({\n status: 'EXPIRED',\n }));\n\n case 'OPTION_STREAM_INVALIDATED':\n return setKeyIfExisty(state, action.streamId, stream => ({\n status: 'INVALID',\n version: stream.version,\n }));\n\n default:\n return state;\n }\n};\n","import type { Reducer } from 'redux';\nimport type { Action } from 'state/actions';\nimport { addKey, updateKey, removeKey } from 'utils/stateMap';\nimport type { FxOptionStrippingMap } from '../model/optionStrippings';\n\n// TODO: add tests\n\nexport const optionsStrippingsReducer: Reducer = (\n state = {},\n action,\n) => {\n switch (action.type) {\n case 'OPTION_STRIPPING_OPENED':\n if (state[action.quoteId] !== undefined) {\n return state;\n }\n return addKey(state, action.quoteId, {\n requestPending: false,\n error: undefined,\n });\n\n case 'OPTION_STRIPPING_REQUESTED':\n return updateKey(state, action.quoteId, () => ({\n requestPending: true,\n }));\n\n case 'OPTION_STRIPPING_FAILED':\n return updateKey(state, action.quoteId, () => ({\n requestPending: false,\n error: action.error,\n }));\n\n case 'OPTION_STRIPPING_CLOSED':\n case 'OPTION_STRIPPING_RECEIVED':\n return removeKey(state, action.quoteId);\n\n default:\n return state;\n }\n};\n","import type { IFormData } from 'state/share/form';\nimport type { IPatch } from 'state/share/patchModels';\nimport type { CurrencyChoice, Possible, Side } from 'state/share/productModel/litterals';\nimport type { Collection } from 'typings/utils';\nimport type { StrictExclude } from 'utils/object';\nimport type { PriceType } from './common';\n\nexport type FxOptionLegStateMap = Readonly>;\n\nexport type FxOptionLegState = VanillaLegState | TypedLegState | FxOptionMultilegState;\n\n// ██╗ ██╗ █████╗ ██╗ ██╗ ██╗███████╗███████╗\n// ██║ ██║██╔══██╗██║ ██║ ██║██╔════╝██╔════╝\n// ██║ ██║███████║██║ ██║ ██║█████╗ ███████╗\n// ╚██╗ ██╔╝██╔══██║██║ ██║ ██║██╔══╝ ╚════██║\n// ╚████╔╝ ██║ ██║███████╗╚██████╔╝███████╗███████║\n// ╚═══╝ ╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚══════╝╚══════╝\n//\n\nexport type FxOptionLegValues = IFxVanillaLegValues | IFxOptionTypedStrategyLegValues;\n\nexport type VanillaLegState = IFormData & {\n productName: 'Vanilla';\n solvingFor: OptionSolvableValue;\n solved: SolvedType;\n};\n\nexport interface FxOptionVanillaLegMetadata {\n solvingFor: OptionSolvableValue;\n solved: SolvedType;\n}\n\nexport type TypedLegState = IFormData<\n IFxOptionTypedStrategyLegValues,\n IFxOptionTypedStrategyLegInputs\n> & {\n productName: TypedStrategyLegType;\n legIds: string[];\n};\n\nexport type FxOptionMultilegState = IFormData, Record> & {\n productName: 'FxOptionMultileg';\n legIds: string[];\n};\n\nexport interface IFxVanillaLegValues {\n currency1: string | null;\n currency2: string | null;\n hedgePrice: number | null;\n optionType: OptionType | null;\n possibleOptionTypes: ReadonlyArray<[OptionType, string]> | null;\n expiryDate: string | null;\n expiryDateTenor: string | null;\n strike: string | null;\n isStrikeInDelta: boolean;\n notionalAmount: number | null;\n notionalCurrency: CurrencyChoice;\n deliveryDate: string | null;\n deliveryDateTenor: string | null;\n settlementType: SettlementType | null;\n possibleSettlementTypes: Possible | null;\n cashSettlementCurrency: string | null;\n possibleCashSettlementCurrencies: Possible | null;\n fixingReference1: string | null;\n possibleFixingReferences1: Possible | null;\n marketPlace: string | null;\n possibleMarketPlaces: Possible | null;\n premiumDate: string | null;\n premiumDateTenor: string | null;\n side: Side | null;\n isReadyToPrice: boolean;\n premiumBid: number | null;\n premiumAsk: number | null;\n isInFine: boolean | null;\n solvable: OptionSolvableValue | null;\n strikeShortcut: string | null;\n /**\n * @todo audit and delete\n */\n premiumTypeString: PriceType | null;\n premiumCurrency: CurrencyChoice | null;\n markup: number | null;\n volatilityBid: number | null;\n volatilityAsk: number | null;\n}\n\nexport interface IFxOptionTypedStrategyLegValues {}\n\nexport type OptionSolvableValue = (typeof optionSolvableValues)[number];\nexport const defaultSolvingFor = 'PremiumPaymentAmount' as const;\nexport const optionSolvableValues = ['Strike', 'Amount1', defaultSolvingFor] as const;\n\n// ██╗███╗ ██╗██████╗ ██╗ ██╗████████╗███████╗\n// ██║████╗ ██║██╔══██╗██║ ██║╚══██╔══╝██╔════╝\n// ██║██╔██╗ ██║██████╔╝██║ ██║ ██║ ███████╗\n// ██║██║╚██╗██║██╔═══╝ ██║ ██║ ██║ ╚════██║\n// ██║██║ ╚████║██║ ╚██████╔╝ ██║ ███████║\n// ╚═╝╚═╝ ╚═══╝╚═╝ ╚═════╝ ╚═╝ ╚══════╝\n//\n\nexport type FxOptionLegInputs = IFxVanillaLegInputs | IFxOptionTypedStrategyLegInputs;\n\nexport interface IFxVanillaLegInputs {\n productName: Exclude;\n optionType: OptionType;\n expiryDate: string | null;\n expiryDateTenor: string | null;\n strike: string | null;\n notionalAmount: string | null;\n notionalCurrency: CurrencyChoice;\n deliveryDate: string | null;\n settlementType: SettlementType | null;\n cashSettlementCurrency: string | null;\n fixingReference1: string | null;\n marketPlace: string | null;\n premiumDate: string | null;\n premiumDateTenor: string | null;\n side: Side;\n premiumBid: string | null;\n premiumAsk: string | null;\n isInFine: boolean;\n /**\n * @todo audit and delete\n */\n premiumTypeString: PriceType | null;\n premiumCurrency: CurrencyChoice | null;\n markup: string | null;\n volatilityBid: string | null;\n volatilityAsk: string | null;\n}\n\n// We have Vanilla as a possible productName for inputs and only for input.\n// This result in a transient state where a Vanilla leg can have legsIds until TC sends u back the new structure with the Typed leg and its vanilla legs\nexport interface IFxOptionTypedStrategyLegInputs {\n productName: LegType;\n legIds: string[];\n}\n\n// ██████╗ ████████╗██╗ ██╗███████╗██████╗\n// ██╔═══██╗╚══██╔══╝██║ ██║██╔════╝██╔══██╗\n// ██║ ██║ ██║ ███████║█████╗ ██████╔╝\n// ██║ ██║ ██║ ██╔══██║██╔══╝ ██╔══██╗\n// ╚██████╔╝ ██║ ██║ ██║███████╗██║ ██║\n// ╚═════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝\n//\n\nexport const optionTypes = ['Call', 'Put'] as const;\nexport type OptionType = (typeof optionTypes)[number];\n\nexport type SettlementType = 'Cash' | 'Physical' | 'Forward' | 'NDF';\n\nexport type SolvedType = StrictExclude | null;\n\nexport const typedStrategyLegTypes = ['Straddle', 'Strangle', 'RiskReversal'] as const;\nexport type TypedStrategyLegType = (typeof typedStrategyLegTypes)[number];\n\nexport const strategyLegTypes = ['Vanilla', ...typedStrategyLegTypes] as const;\n\nexport const legTypes = ['FxOptionMultileg', ...strategyLegTypes] as const;\nexport type LegType = (typeof legTypes)[number];\n\nexport type FxOptionLegsPatchedValuesRecords = Record;\n\nexport type FxOptionLegPatchedValues = IPatch & {\n productName: LegType;\n legIds?: string[];\n};\n","import type { Reducer } from 'redux';\nimport type { Action } from 'state/actions';\nimport { addKey, removeKey, removeKeys, unpatchedEntries, updateKey } from 'utils/stateMap';\n\nimport {\n createEmptyFxOptionMultilegState,\n createEmptyFxOptionsState,\n createEmptyFxOptionVanillaLegState,\n createEmptyTypedLegState,\n emptyFxOptionState,\n isFxOptionMultileg,\n isVanillaLeg,\n addTileIdToLegKey,\n updateLegIdsWithNewTileId,\n isVanillaLegSavedTile,\n isFxOptionMultilegSavedTile,\n} from '../utilities';\n\nimport { getLegKey } from 'state/share/patchHelper';\nimport type { IPatch } from 'state/share/patchModels';\nimport type { Collection } from 'typings/utils';\nimport { strictEntries } from 'utils/object/entries';\nimport {\n defaultSolvingFor,\n type FxOptionLegInputs,\n type FxOptionLegsPatchedValuesRecords,\n type FxOptionLegState,\n type FxOptionLegStateMap,\n type FxOptionMultilegState,\n type IFxVanillaLegValues,\n type OptionSolvableValue,\n type TypedLegState,\n type VanillaLegState,\n} from '../model/optionsLegs';\nimport type { PropertyErrors } from '../../share/productModel/litterals';\nimport type {\n OptionMultilegSavedTile,\n OptionLegSavedTile,\n OptionTypedStrategyLegSavedTile,\n} from '../../../api/workspaceService/updaters/updater9/model';\nimport { clearUndefined } from '../../../utils/clearUndefined';\n\nexport const optionsLegsReducer: Reducer = (\n state: FxOptionLegStateMap = {},\n action: Action,\n): FxOptionLegStateMap => {\n switch (action.type) {\n case 'CLIENTWORKSPACE_TILE_RESTORED':\n if (action.savedTile.instrument === 'Option') {\n const tileId = action.tileId;\n\n return Object.entries(action.savedTile.legs).reduce(\n (acc, [legKey, leg]) => {\n if (isVanillaLegSavedTile(leg as OptionLegSavedTile)) {\n acc[addTileIdToLegKey(tileId, legKey)] = createEmptyFxOptionVanillaLegState();\n } else if (isFxOptionMultilegSavedTile(leg as OptionLegSavedTile)) {\n acc[addTileIdToLegKey(tileId, legKey)] = createEmptyFxOptionMultilegState(\n updateLegIdsWithNewTileId(tileId, (leg as OptionMultilegSavedTile).legIds),\n );\n }\n // we are in typed Leg\n else {\n acc[addTileIdToLegKey(action.tileId, legKey)] = createEmptyTypedLegState(\n (leg as OptionTypedStrategyLegSavedTile).productName,\n updateLegIdsWithNewTileId(tileId, (leg as OptionTypedStrategyLegSavedTile).legIds),\n );\n }\n\n return acc;\n },\n { ...state },\n );\n } else {\n return state;\n }\n\n case 'CLIENTWORKSPACE_NEW_TILE_ADDED':\n case 'CLIENTWORKSPACE_TILE_REOPENED':\n if (action.instrument === 'Option') {\n const multilegId = `${action.tileId}/0`;\n const vanillaLegId = `${action.tileId}/0/0`;\n\n const stateWithMultileg = addKey(\n state,\n multilegId,\n createEmptyFxOptionMultilegState([vanillaLegId]),\n );\n\n return addKey(stateWithMultileg, vanillaLegId, createEmptyFxOptionVanillaLegState());\n }\n\n return state;\n\n case 'CLIENTWORKSPACE_TILE_DUPLICATED':\n if (action.instrument === 'Option') {\n return getLegKeysForOption(state, action.originalTileId).reduce(\n (stateAcc, currentLegKey) => {\n const currentLegId = currentLegKey.replace(`${action.originalTileId}/`, '');\n return addKey(\n stateAcc,\n getLegKey(action.tileId, currentLegId),\n createEmptyFxOptionVanillaLegState(),\n );\n },\n state,\n );\n } else {\n return state;\n }\n\n case 'CLIENTWORKSPACE_TILE_INSTRUMENT_CHANGED':\n return action.instrument === 'Option'\n ? createEmptyFxOptionsState(state, action.tileId)\n : removeKeys(state, getLegKeysForOption(state, action.tileId));\n\n case 'CLIENTWORKSPACE_TILE_DELETED':\n return removeKeys(state, getLegKeysForOption(state, action.tileId));\n\n case 'OPTION_TILE_RESET':\n const legIds = getLegKeysForOption(state, action.quoteId); // ['option/0/1', 'option/0/0', 'option/0']\n const allLegs = legIds.map(id => state[id]!);\n const fxOptionMultilegId = findLegIdgOfType(legIds, allLegs, isFxOptionMultileg);\n const firstVanillaLegId = findLegIdgOfType(legIds, allLegs, isVanillaLeg);\n const firstVanillaLeg = state[firstVanillaLegId] as VanillaLegState;\n\n const { currency1 = null, currency2 = null } = firstVanillaLeg.values;\n\n const { values: defaultValues, ...emptyFxOptionStateWithoutValues } =\n createEmptyFxOptionVanillaLegState();\n const newLeg: FxOptionLegState = {\n ...emptyFxOptionStateWithoutValues,\n values: {\n ...defaultValues,\n currency1,\n currency2,\n },\n };\n\n const newFxOptionMultileg: FxOptionMultilegState = createEmptyFxOptionMultilegState([\n firstVanillaLegId,\n ]);\n\n const otherlegs = removeKeys(state, legIds);\n return {\n ...otherlegs,\n [fxOptionMultilegId]: newFxOptionMultileg,\n [firstVanillaLegId]: newLeg,\n };\n\n case 'OPTION_NOTIONAL_CURRENCY_CHANGED':\n return action.legsId.reduce(\n (stateAcc, legId) =>\n updateKey(stateAcc, legId, leg => {\n if (isVanillaLeg(leg)) {\n return {\n values: {\n ...leg.values,\n notionalCurrency: action.notionalCurrency,\n },\n };\n } else {\n return leg;\n }\n }),\n state,\n );\n\n case 'OPTION_LEGS_PROPERTY_CHANGED':\n return Object.entries(action.patch).reduce(\n (stateAcc, [legId, legPatch]) => updateLeg(stateAcc, action.optionId, legId, legPatch),\n state,\n );\n\n case 'OPTION_STRIKE_SOLVED':\n return action.strikes.reduce(\n (stateAcc, [legId, strike]) =>\n updateKey(stateAcc, legId, leg => {\n if (!isVanillaLeg(leg) || strike === null) {\n return leg;\n }\n\n const updatedVanilla: VanillaLegState = {\n ...leg,\n values: {\n ...leg.values,\n\n solvable: defaultSolvingFor,\n // TODO: ask Sylvain for those values\n premiumBid: null,\n premiumAsk: null,\n },\n inputs: {\n strike,\n },\n solved: 'Strike',\n solvingFor: 'PremiumPaymentAmount',\n };\n\n return updatedVanilla;\n }),\n state,\n );\n\n case 'OPTION_LEG_PROPERTY_CHANGED':\n return updateLeg(state, action.optionId, action.legId, action.patch);\n\n case 'OPTION_LEG_PROPERTY_REMOVE_ERROR':\n return updateKey(state, action.legId, leg => {\n const errors = strictEntries(leg.errors as PropertyErrors) // cast because TS has an issue to handle union types here\n .filter(([errorKey]) => !action.keys.includes(errorKey))\n .reduce(\n (newErrors, [key, legError]) => ({\n ...newErrors,\n [key]: legError,\n }),\n {},\n );\n return {\n ...leg,\n errors,\n };\n });\n\n case 'OPTION_PROPERTIES_RECEIVED':\n return patchOptionLegs(state, action.quoteId, action.legsPatch);\n\n case 'LOCAL_LEG_FIELD_VALIDATION_SET':\n return action.instrument !== 'Option'\n ? state\n : updateKey(state, getLegKey(action.quoteId, action.legId), ({ errors, warnings }) => {\n const validation = {\n code: action.messageId,\n userNotified: false,\n };\n return action.validationStatus === 'warning'\n ? { warnings: { ...warnings, [action.field]: validation } }\n : { errors: { ...errors, [action.field]: validation } };\n });\n\n case 'LOCAL_LEG_FIELD_VALIDATION_CLEAR':\n return action.instrument !== 'Option'\n ? state\n : updateKey(state, getLegKey(action.quoteId, action.legId), ({ errors, warnings }) => ({\n errors: removeKey(errors, action.field),\n warnings: removeKey(warnings, action.field),\n }));\n\n case 'LEG_FIELD_TOOLTIP_SEEN':\n return action.instrument !== 'Option'\n ? state\n : updateKey(state, getLegKey(action.quoteId, action.legId), ({ errors, warnings }) => ({\n errors: updateKey(errors, action.field, () => ({ userNotified: true })),\n warnings: updateKey(warnings, action.field, () => ({ userNotified: true })),\n }));\n\n case 'OPTION_STRATEGY_TYPE_CHANGED':\n const legIdKeys = getLegKeysForOption(state, action.optionId);\n const notionalCurrency = createEmptyFxOptionVanillaLegState().values.notionalCurrency;\n\n const multilegId = legIdKeys.find(legId => /^[^/]+\\/[^/]+$/.test(legId)) as string;\n const childrenLegIds = legIdKeys.filter(legId =>\n new RegExp(`^${multilegId}\\/[^/]+$`).test(legId),\n );\n\n if (childrenLegIds.length > 1) {\n return state;\n }\n\n return legIdKeys.reduce(\n (stateAcc, legId) =>\n updateKey(stateAcc, legId, leg => ({\n values: isVanillaLeg(leg)\n ? {\n ...leg.values,\n expiryDate: null,\n expiryDateTenor: null,\n strike: null,\n notionalAmount: null,\n notionalCurrency,\n settlementType: leg.values.possibleSettlementTypes?.default ?? null,\n marketPlace: leg.values.possibleMarketPlaces?.default ?? null,\n fixingReference1: null,\n /** @todo use user prefs values instead of emptyFxOptionState */\n premiumTypeString: emptyFxOptionState.displayPriceType[1],\n premiumCurrency: emptyFxOptionState.displayPriceType[0],\n deliveryDate: null,\n deliveryDateTenor: null,\n }\n : leg.values,\n inputs: legId === childrenLegIds[0] ? { productName: action.strategyType } : {},\n errors: {},\n warnings: {},\n })),\n state,\n );\n\n case 'OPTION_LEG_ADDED':\n // Solving is not supported for multilegs, so we reset solvingFor field for now\n const allLegIds = getLegKeysForOption(state, action.optionId);\n return allLegIds.reduce(\n (stateAcc, legId) =>\n updateKey(stateAcc, legId, leg => ({\n ...leg,\n solvingFor: defaultSolvingFor,\n })),\n state,\n );\n\n case 'OPTION_SOLVING_WANTED':\n const firstLeg = getFirstLegOfMultilegOfOption(state, action.quoteId);\n\n return isAlreadyStrikeSolving(state, action.quoteId) || firstLeg.productName === 'Straddle'\n ? state\n : updateKey(state, action.legId, leg => {\n const solvingFor: OptionSolvableValue =\n action.field === 'strike' ? 'Strike' : defaultSolvingFor;\n\n if (isVanillaLeg(leg)) {\n return {\n solvingFor,\n };\n }\n\n return leg;\n });\n\n default:\n return state;\n }\n};\n\nfunction fillLeg(\n emptyLeg: OptionLegState,\n legPatch: IPatch,\n): OptionLegState {\n return {\n ...emptyLeg,\n ...legPatch,\n values: {\n ...emptyLeg.values,\n ...legPatch.values,\n },\n errors: legPatch.errors,\n warnings: legPatch.warnings,\n };\n}\n\nfunction patchLeg(\n existingLeg: OptionLegState,\n legPatch: IPatch,\n): OptionLegState {\n return {\n ...existingLeg,\n ...legPatch,\n inputs: {},\n values: {\n ...existingLeg.values,\n ...legPatch.values,\n },\n errors: {\n ...unpatchedEntries(existingLeg.errors as Collection, legPatch.values), // TODO: how to avoid the as Collection ??\n ...legPatch.errors,\n },\n warnings: {\n ...unpatchedEntries(existingLeg.warnings as Collection, legPatch.values), // TODO: how to avoid the as Collection ??\n ...legPatch.warnings,\n },\n };\n}\n\nexport function patchOptionLegs(\n state: Collection,\n quoteId: string,\n legsPatch: FxOptionLegsPatchedValuesRecords,\n): Collection {\n const patchLegIds = Object.keys(legsPatch);\n\n const quoteIdKey = `${quoteId}/`;\n const legsIdsToRemove = Object.keys(state).filter(\n id => id.startsWith(quoteIdKey) && !patchLegIds.includes(id),\n );\n\n const stateWithoutRemovedLegs = removeKeys(state, legsIdsToRemove);\n\n return Object.entries(legsPatch).reduce((stateAcc, [patchedLegId, legPatch]) => {\n const stateWithoutCurrentLeg = removeKey(stateAcc, patchedLegId);\n const currentLeg = stateAcc[patchedLegId];\n\n // leg creation\n if (\n currentLeg === undefined ||\n (legPatch.productName !== undefined && legPatch.productName !== currentLeg.productName)\n ) {\n const emptyFxOptionLegState =\n legPatch.productName === 'Vanilla'\n ? createEmptyFxOptionVanillaLegState()\n : ({\n values: {},\n inputs: {},\n errors: {},\n warnings: {},\n } as TypedLegState);\n\n return addKey(stateWithoutCurrentLeg, patchedLegId, fillLeg(emptyFxOptionLegState, legPatch));\n }\n // leg update\n const updatedLeg: FxOptionLegState = patchLeg(currentLeg, legPatch);\n\n return addKey(stateWithoutCurrentLeg, patchedLegId, updatedLeg);\n }, stateWithoutRemovedLegs);\n}\n\nconst updateLeg = (\n state: FxOptionLegStateMap,\n optionId: string,\n legId: string,\n legPatch: Partial,\n): FxOptionLegStateMap =>\n updateKey(state, legId, leg => {\n const firstLeg = getFirstLegOfMultilegOfOption(state, optionId);\n\n if (!isVanillaLeg(leg) || firstLeg.productName === 'Straddle') {\n return { ...leg, inputs: legPatch } as FxOptionLegState;\n }\n\n const legPatchWithoutStrikeSolvingDoublon =\n 'strike' in legPatch && legPatch.strike === '?' && isAlreadyStrikeSolving(state, optionId)\n ? (removeKey(legPatch, 'strike') as Partial)\n : legPatch;\n\n return clearUndefined({\n ...leg,\n inputs: legPatchWithoutStrikeSolvingDoublon,\n solvingFor: !('strike' in legPatchWithoutStrikeSolvingDoublon)\n ? // disable solver if multileg\n undefined\n : getStrikeToSolvingFor(legPatchWithoutStrikeSolvingDoublon.strike),\n solved: null,\n } as VanillaLegState);\n });\n\nfunction isAlreadyStrikeSolving(state: FxOptionLegStateMap, optionId: string) {\n return getAllVanillaLegsOfOption(state, optionId).some(leg => leg.solvingFor === 'Strike');\n}\n\n// TODO: try to merge with fx-web/app/src/state/fxOptions/selectors/fxOptionsLegsSelectors.ts same functions\nconst getAllVanillaLegsOfOption = (\n state: FxOptionLegStateMap,\n optionId: string,\n): VanillaLegState[] => getAllLegsOfOption(state, optionId).filter(isVanillaLeg);\n\nconst getAllLegsOfOption = (state: FxOptionLegStateMap, optionId: string): FxOptionLegState[] =>\n getAllLegIdsOfOption(state, optionId).map(legId => state[legId] as FxOptionLegState);\n\nconst getAllLegIdsOfOption = (state: FxOptionLegStateMap, optionId: string) => {\n const optionPrefixLegId = `${optionId}/`;\n\n return Object.keys(state).filter(legId => legId.startsWith(optionPrefixLegId));\n};\n\nconst getFirstLegOfMultilegOfOption = (state: FxOptionLegStateMap, optionId: string) => {\n const multileg = state[`${optionId}/0`] as FxOptionMultilegState; // TODO: we can't get the option to get the real id like fxOptionsLegsSelectors\n const [firstLegId] = multileg.legIds;\n\n return state[firstLegId] as Exclude;\n};\n\nconst getLegKeysForOption = (state: FxOptionLegStateMap, optionId: string) =>\n Object.keys(state).filter(optionLegId => optionLegId.startsWith(optionId));\n\nfunction getStrikeToSolvingFor(strike: string | undefined | null): OptionSolvableValue | undefined {\n switch (strike) {\n case '?':\n return 'Strike';\n case undefined:\n case null:\n return undefined;\n default:\n return 'PremiumPaymentAmount';\n }\n}\n\n/**\n * Becarefull with ids[] and allLegs[] need to be map of other to keep ids sorting\n * @param ids\n * @param allLegs\n * @param predicate\n * @returns\n */\nfunction findLegIdgOfType(\n ids: string[],\n allLegs: FxOptionLegState[],\n predicate: (leg: FxOptionLegState) => boolean,\n): string {\n const legIndex = allLegs.findIndex(predicate);\n const legId = ids[legIndex];\n return legId;\n}\n","import type { Action } from 'state/actions';\nimport type { Reducer } from 'redux';\n\nimport type {\n FxOptionHedgePatchedValues,\n FxOptionHedgesPatchedValuesRecords,\n FxOptionHedgeState,\n FxOptionHedgeStateMap,\n} from '../model/optionHedges';\nimport { FIRST_CURRENCY } from 'state/share/productModel/litterals';\nimport { addKey, removeKey, removeKeys, updateKey } from '../../../utils/stateMap';\nimport { strictEntries } from '../../../utils/object';\nimport type { Collection } from '../../../typings/utils';\nimport { isDefined } from '@sgme/fp';\n\nexport const optionsHedgesReducer: Reducer = (\n state: FxOptionHedgeStateMap = {},\n action: Action,\n): FxOptionHedgeStateMap => {\n switch (action.type) {\n case 'CLIENTWORKSPACE_TILE_RESTORED':\n if (action.savedTile.instrument === 'Option') {\n const tileId = action.tileId;\n\n return Object.entries(action.savedTile.hedges).reduce(\n (acc, [hedgeId, hedge]) => {\n acc[`${tileId}/${hedgeId}`] = {\n values: {\n amount: hedge?.amount ?? null,\n currency: hedge?.currency ?? FIRST_CURRENCY,\n rate: hedge?.rate ?? null,\n paymentDate: null,\n },\n inputs: {},\n errors: {},\n warnings: {},\n };\n\n return acc;\n },\n { ...state },\n );\n } else {\n return state;\n }\n\n case 'CLIENTWORKSPACE_NEW_TILE_ADDED':\n case 'CLIENTWORKSPACE_TILE_REOPENED':\n return state;\n\n case 'CLIENTWORKSPACE_TILE_DUPLICATED':\n if (action.instrument === 'Option') {\n return getHedgeKeysForOption(state, action.originalTileId).reduce(\n (stateAcc, currentHedgeKey) => {\n const originalHedge = state[currentHedgeKey];\n\n if (!isDefined(originalHedge)) {\n return state;\n }\n\n const currentHedgeId = currentHedgeKey.replace(\n `${action.originalTileId}/`,\n `${action.tileId}/`,\n );\n\n return addKey(stateAcc, currentHedgeId, {\n values: originalHedge.values,\n inputs: {},\n errors: {},\n warnings: {},\n });\n },\n state,\n );\n } else {\n return state;\n }\n case 'CLIENTWORKSPACE_TILE_INSTRUMENT_CHANGED':\n return action.instrument === 'Option'\n ? state\n : removeKeys(state, getHedgeKeysForOption(state, action.tileId));\n\n case 'CLIENTWORKSPACE_TILE_DELETED':\n return removeKeys(state, getHedgeKeysForOption(state, action.tileId));\n\n case 'OPTION_TILE_RESET':\n return removeKeys(state, getHedgeKeysForOption(state, action.quoteId));\n\n case 'HEDGE_RESET':\n return removeKeys(state, getHedgeKeysForOption(state, action.quoteId));\n\n case 'OPTION_PROPERTIES_RECEIVED':\n return patchHedgeFromOption(state, action.quoteId, action.hedgesPatch);\n\n case 'OPTION_HEDGE_PROPERTY_CHANGED':\n return updateKey(state, action.hedgeId, hedge => ({\n inputs: {\n ...hedge.inputs,\n ...action.patch,\n },\n }));\n\n case 'OPTION_HEDGE_PROPERTY_REMOVE_ERROR':\n return updateKey(state, action.hedgeId, hedge => {\n const errors = strictEntries(hedge.errors)\n .filter(([errorKey]) => !(action.keys as string[]).includes(errorKey))\n .reduce(\n (newErrors, [key, error]) => ({\n ...newErrors,\n [key]: error,\n }),\n {},\n );\n\n return {\n ...hedge,\n errors,\n };\n });\n\n case 'HEDGE_FIELD_TOOLTIP_SEEN':\n return action.instrument !== 'Option'\n ? state\n : updateKey(state, `${action.quoteId}/${action.hedgeId}`, ({ errors, warnings }) => ({\n errors: updateKey(errors, action.field, () => ({ userNotified: true })),\n warnings: updateKey(warnings, action.field, () => ({ userNotified: true })),\n }));\n\n case 'LOCAL_HEDGE_FIELD_VALIDATION_SET':\n return action.instrument !== 'Option'\n ? state\n : updateKey(state, `${action.quoteId}/${action.hedgeId}`, ({ errors, warnings }) => {\n const validation = {\n code: action.messageId,\n userNotified: false,\n };\n return action.validationStatus === 'warning'\n ? { warnings: { ...warnings, [action.field]: validation } }\n : { errors: { ...errors, [action.field]: validation } };\n });\n\n case 'LOCAL_HEDGE_FIELD_VALIDATION_CLEAR':\n return action.instrument !== 'Option'\n ? state\n : updateKey(state, `${action.quoteId}/${action.hedgeId}`, ({ errors, warnings }) => ({\n errors: removeKey(errors, action.field),\n warnings: removeKey(warnings, action.field),\n }));\n\n default:\n return state;\n }\n};\n\nconst patchHedgeFromOption = (\n state: FxOptionHedgeStateMap,\n optionId: string,\n hedgePatch: FxOptionHedgesPatchedValuesRecords,\n): FxOptionHedgeStateMap => {\n if (!hasOptionHedgeUpdate(hedgePatch)) {\n return state;\n }\n\n return Object.entries(hedgePatch).reduce(\n patchHedge(state),\n removeKeys(state, getHedgeKeysForOption(state, optionId)),\n ) satisfies FxOptionHedgeStateMap;\n};\n\nconst patchHedge =\n (previousState: FxOptionHedgeStateMap) =>\n (\n newState: Collection,\n [hedgeId, hedgePatch]: [string, FxOptionHedgePatchedValues],\n ): Collection => {\n const oldValues = previousState[hedgeId]?.values;\n const newValues = hedgePatch.values;\n\n newState[hedgeId] = {\n values: {\n amount: mergeValuesOrDefault(newValues.amount, oldValues?.amount) ?? null,\n currency: mergeValuesOrDefault(newValues.currency, oldValues?.currency) ?? FIRST_CURRENCY,\n rate: mergeValuesOrDefault(newValues.rate, oldValues?.rate) ?? null,\n paymentDate: mergeValuesOrDefault(newValues.paymentDate, oldValues?.paymentDate) ?? null,\n },\n inputs: {},\n warnings: hedgePatch.warnings,\n errors: hedgePatch.errors,\n } as const;\n\n return newState;\n };\n\nconst mergeValuesOrDefault = (\n newValue: Value | null | undefined,\n oldValue: Value | null | undefined,\n): Value | null | undefined => (newValue !== undefined ? newValue : oldValue);\n\nconst hasOptionHedgeUpdate = (hedgePatch: FxOptionHedgesPatchedValuesRecords) =>\n Object.keys(hedgePatch).length > 0;\n\nconst getHedgeKeysForOption = (state: FxOptionHedgeStateMap, optionId: string) =>\n Object.keys(state).filter(optionLegId => optionLegId.startsWith(optionId));\n","import { combineReducers } from 'redux';\nimport type { FxOptionsState } from '../model';\nimport { optionsProductReducer } from './optionsProductReducer';\nimport { optionsStreamsReducer } from './optionsStreamsReducer';\nimport { optionsStrippingsReducer } from './optionStrippingsReducer';\nimport { optionsLegsReducer } from './optionsLegsReducer';\nimport { optionsHedgesReducer } from './optionsHedgesReducer';\n\nexport const fxOptionsReducer = combineReducers({\n options: optionsProductReducer,\n legs: optionsLegsReducer,\n hedges: optionsHedgesReducer,\n streams: optionsStreamsReducer,\n strippings: optionsStrippingsReducer,\n});\n","import type { Reducer } from 'redux';\nimport type { FxCashStreamMap, FxCashStreamState } from '../fxCashsModel';\nimport type { Action } from 'state/actions';\nimport { removeKey, addKey, updateKey } from 'utils/stateMap';\n\nexport const fxCashsStreamsReducer: Reducer = (\n state: FxCashStreamMap = {},\n action: Action,\n): FxCashStreamMap => {\n switch (action.type) {\n case 'CASH_RFS_STARTED':\n return addKey(state, action.streamId, {\n status: 'AWAITING',\n } as FxCashStreamState);\n case 'CASH_QUOTE_RECEIVED':\n const { streamId, quote, tiering } = action;\n return updateKey(state, streamId, stream => {\n const initialRfsWindow =\n stream.status === 'PRICING' ? stream.initialRfsWindow : quote.rfsWindow;\n return {\n status: 'PRICING',\n quote: { ...quote },\n initialRfsWindow,\n tiering,\n } as FxCashStreamState;\n });\n case 'CASH_RFS_TERMINATED':\n case 'CASH_RFS_CANCEL':\n case 'CASH_RFS_FAILED':\n return removeKey(state, action.streamId);\n case 'CASH_RFS_EXECUTION_SENT':\n return removeKey(state, action.executionId);\n default:\n return state;\n }\n};\n","import type { Reducer } from 'redux';\nimport {\n type FxCashStateMap,\n emptyFxCashState,\n type FxCashState,\n type CashProductName,\n type IFxCashStateMap,\n type IFxCashInputs,\n} from '../fxCashsModel';\nimport type { Action } from 'state/actions';\nimport { updateKey, removeKeys, addKey, removeKey, updateProperty } from 'utils/stateMap';\nimport { addPriceRecorded } from 'state/share/priceRecordReducerHelper';\nimport type { CurrencyChoice } from 'state/share/productModel/litterals';\nimport type { InstrumentChoice } from 'state/referenceData/referenceDataModel';\nimport type { TradeCaptureSessionInfos } from 'state/sharedSelectors';\nimport type { EspPriceReceived } from 'state/esp/espStreamsActions';\nimport type { IESPTraderPriceUnderThreshold } from 'state/esp/espStreamsModel';\nimport { getEspPriceByNotional } from 'state/esp/utils';\nimport { nullify, strictEntries } from 'utils/object';\nimport { productPatcher } from 'state/share/patchHelper';\nimport { validationPartialReducer } from 'state/share/validationReducer';\nimport { isDefined, isEmpty } from '@sgme/fp';\n\nconst nullifyNDFields = nullify(\n 'fixingCurrency',\n 'fixingDate',\n 'fixingSource',\n 'sndFixingSource',\n 'xCurrency',\n 'possibleFixingCurrencies',\n 'possibleFixingSources',\n 'possibleSndFixingSources',\n 'possibleXCurrencies',\n);\n\nconst cashValidationReducer = validationPartialReducer<'Cash', FxCashState>('Cash');\n\nexport const fxCashsProductReducer: Reducer = (\n state: FxCashStateMap = {},\n action: Action,\n): FxCashStateMap => {\n switch (action.type) {\n case 'CLIENTWORKSPACE_TILE_RESTORED':\n if (action.savedTile.instrument !== 'Cash') {\n return state;\n }\n return addCashForTileIfNeeded(\n state,\n action.tileId,\n action.savedTile.instrument,\n action.savedTile.productName,\n action.savedTile.amountCurrency,\n );\n case 'CLIENTWORKSPACE_NEW_TILE_ADDED':\n return addCashForTileIfNeeded(state, action.tileId, action.instrument);\n case 'CLIENTWORKSPACE_TILE_DUPLICATED':\n case 'CLIENTWORKSPACE_TILE_REOPENED':\n return addCashForTileIfNeeded(\n state,\n action.tileId,\n action.instrument,\n action.productName as CashProductName,\n );\n case 'CLIENTWORKSPACE_TILE_INSTRUMENT_CHANGED':\n if (action.instrument !== 'Cash' && state[action.tileId] !== undefined) {\n return removeKey(state, action.tileId);\n }\n return addCashForTileIfNeeded(\n state,\n action.tileId,\n action.instrument,\n undefined,\n undefined,\n action.tradeCaptureSessionInfos,\n );\n case 'CLIENTWORKSPACE_TILE_DELETED':\n return removeKey(state, action.tileId);\n case 'CASH_RFS_STARTED':\n return updateKey(state, action.cashId, () => ({\n currentStreamId: action.streamId,\n lastStreamError: null,\n rfsStartedAt: action.rfsStartedAt,\n priceRecords: [],\n }));\n case 'CASH_RFS_CANCEL':\n return updateKey(state, action.cashId, () => ({\n currentStreamId: null,\n }));\n case 'CASH_RFS_FAILED':\n return updateKey(state, action.cashId, () => ({\n currentStreamId: null,\n lastStreamError: action.error,\n }));\n case 'CASH_RFS_CLEAR_ERROR':\n return updateKey(state, action.quoteId, () => {\n const patch: Partial = {\n lastStreamError: null,\n };\n return patch;\n });\n case 'ESP_PRICE_RECEIVED':\n return updateCashMarginOnEspPrice(action)(state);\n case 'CASH_QUOTE_RECEIVED':\n const { quote } = action;\n return updateKey(state, action.cashId, tile => ({\n askMargin: tile.askMargin === null ? quote.defaultSpotMargin.ask : tile.askMargin,\n bidMargin: tile.bidMargin === null ? quote.defaultSpotMargin.bid : tile.bidMargin,\n askForwardMargin:\n tile.askForwardMargin === null\n ? quote.defaultForwardMarginPoints.ask\n : tile.askForwardMargin,\n bidForwardMargin:\n tile.askForwardMargin === null\n ? quote.defaultForwardMarginPoints.bid\n : tile.bidForwardMargin,\n }));\n case 'CASH_RFS_EXECUTION_SENT':\n return updateKey(state, action.cashId, () => ({\n lastExecutedQuoteId: action.quoteId,\n currentExecutionId: action.executionId,\n currentStreamId: null,\n askMargin: null,\n bidMargin: null,\n askForwardMargin: null,\n bidForwardMargin: null,\n /**\n * @nb remove warning but not errors ?\n */\n warnings: {},\n }));\n case 'CASH_ESP_EXECUTION_SENT':\n return updateKey(state, action.cashId, () => ({\n lastExecutedQuoteId: action.quoteId,\n currentExecutionId: action.executionId,\n }));\n case 'TILE_EXECUTION_OVERLAY_HIDDEN':\n return updateKey(state, action.quoteId, () => ({\n currentExecutionId: null,\n }));\n case 'CASH_PROPERTIES_REQUEST_FAILED':\n return updateKey(state, action.quoteId, () => ({\n propertiesRequested: false,\n propertiesRequestError: action.error,\n }));\n case 'CASH_TILE_RESET':\n return updateKey(state, action.quoteId, () => emptyFxCashState);\n case 'ESP_TILE_STREAM_ID_AND_REFCOUNT_UPDATED':\n return updateKey(state, action.tileId, () => ({\n currentEspStreamId: action.streamId,\n isEspDefaultTiering: action.isDefaultTiering,\n }));\n case 'ESP_STREAM_TILE_UNSUBSCRIBE':\n return updateKey(state, action.tileId, () => ({\n currentEspStreamId: null,\n }));\n case 'ESP_STREAM_RECONNECTED':\n return updateKey(state, action.tileId, () => ({\n currentEspStreamId: action.streamKey,\n isEspDefaultTiering: action.isDefaultTIering,\n }));\n case 'ESP_STREAM_KEY_REQUEST_PENDING':\n return updateKey(state, action.tileId, () => ({\n currentEspStreamId: null,\n }));\n case 'CASH_LOCAL_PROPERTY_CHANGED':\n return updateKey(state, action.tileId, () => ({ ...action.patch }));\n case 'CASH_PROPERTIES_CHANGED':\n return updateKey(\n state,\n action.cashId,\n () => (action.patch.currencyPair === undefined ? null : { lastStreamError: null }),\n updateProperty('inputs')>>(() => action.patch),\n );\n\n case 'CASH_PROPERTIES_RECEIVED':\n return productPatcher(\n state,\n action,\n ({ dirtyFields }) => {\n const patchedFields = Object.keys(action.patch.values);\n return {\n dirtyFields: dirtyFields.filter(field => !patchedFields.includes(field)),\n };\n },\n ({ values }) => ({\n values:\n values.isNonDeliverable === false || action.patch.values.isNonDeliverable === false\n ? nullifyNDFields(values)\n : values,\n }),\n );\n case 'CASH_PROPERTIES_REQUESTED':\n return updateKey(state, action.cashId, () => ({\n propertiesRequested: true,\n currentSessionId: action.sessionId,\n }));\n case 'RECORD_PRICE_SUCCEEDED':\n case 'RECORD_PRICE_FAILED':\n if (action.instrument !== 'Cash') {\n return state;\n }\n return updateKey(\n state,\n action.tileId,\n addPriceRecorded({\n priceRecord: {\n error: action.error,\n prices: action.error === true ? undefined : action.prices,\n timestamp: action.timestamp,\n },\n }),\n );\n case 'CASH_RFS_TERMINATED':\n return updateKey(state, action.cashId, cash =>\n cash.currentStreamId !== action.streamId\n ? null\n : {\n askMargin: null,\n bidMargin: null,\n askForwardMargin: null,\n bidForwardMargin: null,\n currentStreamId: null,\n lastStreamError: null,\n },\n );\n case 'CASH_AMOUNT_CURRENCY_MASK_CHANGED':\n return updateKey(\n state,\n action.cashId,\n updateProperty('values')(() => ({\n amountCurrency: action.amountCurrency,\n })),\n );\n case 'FIELD_TOOLTIP_SEEN':\n return action.instrument !== 'Cash'\n ? state\n : updateKey(state, action.quoteId, ({ errors, warnings }) => ({\n errors: updateKey(errors, action.field, () => ({ userNotified: true })),\n warnings: updateKey(warnings, action.field, () => ({ userNotified: true })),\n }));\n\n case 'CASH_PROPERTIES_REMOVE_ERROR':\n return updateKey(state, action.cashId, ({ errors }) => ({\n errors: removeKeys(errors, action.keys),\n }));\n case 'CASH_PROPERTIES_DIRTY':\n return updateKey(state, action.cashId, ({ dirtyFields }) => ({\n dirtyFields: [...dirtyFields, action.fieldName],\n }));\n case 'CASH_PROPERTIES_PRISTINE':\n return updateKey(state, action.cashId, ({ dirtyFields }) => ({\n dirtyFields: dirtyFields.filter(field => field !== action.fieldName),\n }));\n default:\n return cashValidationReducer(state, action);\n }\n};\n\nfunction addCashForTileIfNeeded(\n state: FxCashStateMap,\n tileId: string,\n instrument: InstrumentChoice | 'Order' | 'BlotterOrder',\n productName: CashProductName = 'FxSpot',\n amountCurrency: CurrencyChoice = emptyFxCashState.values.amountCurrency,\n tradeCaptureSessionInfos?: TradeCaptureSessionInfos,\n): FxCashStateMap {\n if (instrument !== 'Cash') {\n return state;\n }\n\n return addKey(state, tileId, {\n ...emptyFxCashState,\n ...tradeCaptureSessionInfos,\n values: { ...emptyFxCashState.values, productName, amountCurrency },\n });\n}\n\nexport const updateCashMarginOnEspPrice =\n ({ streamId, ...espStreamState }: EspPriceReceived) =>\n (state: FxCashStateMap): FxCashStateMap => {\n if (espStreamState.priceType === 'ESP.CLIENT.PRICE') {\n return state;\n }\n const newCashsState: IFxCashStateMap = {};\n\n strictEntries(state).forEach(([tileId, cash]) => {\n if (cash.currentEspStreamId === streamId) {\n const {\n values: { amountCurrency, amount: notional },\n } = cash;\n const price = getEspPriceByNotional(espStreamState, notional, amountCurrency)\n .price as IESPTraderPriceUnderThreshold;\n\n if (!isDefined(price)) {\n return state;\n }\n const isMarginsSet = cash.askMargin !== null || cash.bidMargin !== null;\n if (price.valid && !isMarginsSet) {\n // First valid price received => set margin\n newCashsState[tileId] = {\n ...cash,\n askMargin: price.marginAsk,\n bidMargin: price.marginBid,\n };\n } else if (!price.valid && isMarginsSet) {\n newCashsState[tileId] = {\n ...cash,\n askMargin: null,\n bidMargin: null,\n };\n }\n }\n });\n\n if (isEmpty(Object.keys(newCashsState))) {\n return state;\n }\n\n return { ...state, ...newCashsState };\n };\n","import type { FxCashsState } from '../fxCashsModel';\nimport { combineReducers } from 'redux';\nimport { fxCashsStreamsReducer } from './fxCashsStreamsReducer';\nimport { fxCashsProductReducer } from './fxCashsProductReducer';\n\nexport const fxCashsReducer = combineReducers({\n streams: fxCashsStreamsReducer,\n cashs: fxCashsProductReducer,\n});\n","import type {\n BidAsk,\n BidAskPair,\n CurrencyChoice,\n Possible,\n Way,\n} from 'state/share/productModel/litterals';\nimport type { IFxExecutionData, IFxExecutionState } from 'state/executions/executionsStateModel';\nimport type { PredealCheck } from 'state/share/predealChecksModel';\nimport type { Collection } from 'typings/utils';\nimport type { IFormData } from 'state/share/form';\nimport type { IFxTileMetadata } from '../tile/fxTileModel';\nimport type { Patch } from '../share/patchModels';\n\nexport type SwapProductName = 'FxSwap' | 'FxNdSwap' | 'FxRollover' | 'FxPredeliver';\n// state types\n// all properties are sent to TC - put transient info in metadata\n\n// //////////////////////////////////////////////////////////////////\n// Swaps\n// /////////////////////////////////////////////////////////////////\n\n/**\n * @todo audit why so many non inputable properties\n */\nexport interface IFxSwapValues {\n // TC non inputable\n productName: SwapProductName;\n currency1: string | null;\n currency2: string | null;\n nearPaymentDateTenor: string | null;\n nearFixingDate: string | null;\n farFixingDate: string | null;\n possibleFixingSources: Possible | null;\n farPaymentDateTenor: string | null;\n fixingCurrency: string | null;\n isCrossed: boolean | null;\n possibleXCurrencies: Possible | null;\n possibleSndFixingSources: Possible | null;\n nearAmount: number | null;\n farAmount: number | null;\n // TC inputable\n isNonDeliverable: boolean;\n currencyPair: string | null;\n isUneven: boolean;\n isOffMarket: boolean;\n amountCurrency: CurrencyChoice;\n nearPaymentDate: string | null;\n farPaymentDate: string | null;\n fixingSource: string | null;\n xCurrency: string | null;\n sndFixingSource: string | null;\n nearPriceReference: BidAsk | null;\n farPriceReference: BidAsk | null;\n}\n\nexport interface IFxSwapInputs {\n isNonDeliverable: boolean;\n currencyPair: string | null;\n isUneven: boolean;\n isOffMarket: boolean;\n amountCurrency: CurrencyChoice;\n nearPaymentDate: string | null;\n nearPaymentDateTenor: string | null;\n farPaymentDate: string | null;\n farPaymentDateTenor: string | null;\n fixingSource: string | null;\n xCurrency: string | null;\n sndFixingSource: string | null;\n farAmount: string | null;\n nearAmount: string | null;\n nearPriceReference: BidAsk | null;\n farPriceReference: BidAsk | null;\n}\n\nexport type IFxSwapProperties = IFormData;\n\nexport type SwapOffMarketType = 'predeliver' | 'rollover';\n\nexport interface IFxSwapMetadata extends IFxTileMetadata {\n /**\n * @todo audit: share or delete\n */\n isPriceObsolete: boolean;\n askMargin: number | null;\n bidMargin: number | null;\n askSpotMargin: number | null;\n bidSpotMargin: number | null;\n markupCurrency: CurrencyChoice;\n}\n\nexport type FxSwapState = Readonly;\n\nexport const emptyFxSwapState: FxSwapState = {\n values: {\n productName: 'FxSwap',\n isNonDeliverable: false,\n currencyPair: null,\n currency1: null,\n currency2: null,\n nearAmount: null,\n amountCurrency: 1,\n nearPaymentDate: null,\n nearPaymentDateTenor: null,\n farAmount: null,\n farPaymentDate: null,\n farPaymentDateTenor: null,\n isUneven: false,\n isOffMarket: false,\n fixingSource: null,\n nearFixingDate: null,\n farFixingDate: null,\n fixingCurrency: null,\n possibleFixingSources: null,\n isCrossed: null,\n possibleSndFixingSources: null,\n possibleXCurrencies: null,\n sndFixingSource: null,\n xCurrency: null,\n nearPriceReference: null,\n farPriceReference: null,\n },\n errors: {},\n warnings: {},\n inputs: {},\n propertiesRequested: false,\n currentSessionId: null,\n propertiesRequestError: null,\n tradeCaptureIdVersion: null,\n currentStreamId: null,\n currentEspStreamId: null,\n isPriceable: false,\n isPriceObsolete: false,\n lastStreamError: null,\n askMargin: null,\n bidMargin: null,\n askSpotMargin: null,\n bidSpotMargin: null,\n markupCurrency: 2,\n lastExecutedQuoteId: null,\n currentExecutionId: null,\n rfsStartedAt: null,\n priceRecords: [],\n};\n\nexport type IFxSwapStateMap = Collection;\nexport type FxSwapStateMap = Readonly;\n// //////////////////////////////////////////////////////////////////\n// Executions\n// /////////////////////////////////////////////////////////////////\nexport interface IFxSwapExecutionData extends IFxExecutionData {\n instrument: 'Swap';\n productName: SwapProductName;\n way: Way;\n swapPoints: number;\n nearNotionalAmount: number;\n farNotionalAmount: number;\n notionalCurrency: string;\n nearPrice: number;\n farPrice: number;\n nearDate: Date;\n farDate: Date;\n precision: number;\n}\n\nexport type FxSwapExecutionState = IFxExecutionState & IFxSwapExecutionData;\n\n// //////////////////////////////////////////////////////////////////\n// Streams\n// /////////////////////////////////////////////////////////////////\n\ninterface IFxSwapStreamAwaitingState {\n status: 'AWAITING';\n}\n\nexport type QuoteType = 'Tradeable' | 'Withdraw';\n\nexport interface IQuote {\n quoteId: string;\n quoteType: QuoteType;\n rfsWindow: number;\n frontTimestamp: Date;\n backTimestamp: number;\n defaultMargin: BidAskPair;\n defaultSpotMargin: BidAskPair;\n spot: BidAskPair;\n nearPoints: BidAskPair;\n nearSalesPoints: BidAskPair;\n farPoints: BidAskPair;\n farMktPoints: BidAskPair;\n nearSalesAllInRate: BidAskPair;\n farSalesAllInRate: BidAskPair;\n nearDf2: number;\n farDf2: number;\n midAllInRate: number;\n delta: number;\n traderId: string | null;\n predealChecks: readonly PredealCheck[];\n}\n\ninterface IFxSwapStreamStreamingState {\n status: 'PRICING';\n quote: Readonly;\n initialRfsWindow: number;\n tiering: string | null;\n}\n\nexport type IFxSwapStreamState = IFxSwapStreamAwaitingState | IFxSwapStreamStreamingState;\n\nexport type FxSwapStreamState = Readonly;\n\ntype IFxSwapStreamStateMap = Collection;\n\nexport type FxSwapStreamStateMap = Readonly;\n\n// //////////////////////////////////////////////////////////////////\n// Combine state\n// /////////////////////////////////////////////////////////////////\nexport type FxSwapPatch = {\n productName: SwapProductName;\n} & Patch;\n\nexport interface IFxSwapsState {\n swaps: FxSwapStateMap;\n streams: FxSwapStreamStateMap;\n}\nexport type FxSwapsState = Readonly;\n\nexport const emptyFxSwapsState: FxSwapsState = {\n swaps: {},\n streams: {},\n};\n\nexport interface SwapTileOpenFromBlotter {\n instrument: 'Swap';\n productName: SwapProductName;\n isNonDeliverable: boolean;\n currencyPair?: string | null;\n amountCurrency?: CurrencyChoice;\n nearAmount?: number;\n farAmount?: number;\n nearPaymentDateTenor?: string;\n farPaymentDateTenor?: string;\n}\n\nexport interface PatchLegs {\n currencyPair?: string | null;\n legs: Partial;\n}\n\nexport interface PatchLeg {\n // swap legId\n 0: Partial;\n}\n","import { addKey, updateKey, removeKey, removeKeys } from 'utils/stateMap';\nimport type { Reducer } from 'redux';\nimport { type FxSwapStateMap, emptyFxSwapState, type FxSwapState } from '../fxSwapsModel';\nimport type { Action } from 'state/actions';\nimport { addPriceRecorded } from 'state/share/priceRecordReducerHelper';\nimport { productPatcher } from 'state/share/patchHelper';\nimport { validationPartialReducer } from 'state/share/validationReducer';\n\nconst swapValidationReducer = validationPartialReducer<'Swap', FxSwapState>('Swap');\n\nexport const swapsReducer: Reducer = (\n state: FxSwapStateMap = {},\n action: Action,\n): FxSwapStateMap => {\n switch (action.type) {\n case 'CLIENTWORKSPACE_TILE_RESTORED':\n return action.savedTile.instrument === 'Swap'\n ? addKey(state, action.tileId, emptyFxSwapState)\n : state;\n case 'RECORD_PRICE_SUCCEEDED':\n case 'RECORD_PRICE_FAILED':\n if (action.instrument !== 'Swap') {\n return state;\n }\n return updateKey(\n state,\n action.tileId,\n addPriceRecorded({\n priceRecord: {\n error: action.error,\n prices: action.error === true ? undefined : action.prices,\n timestamp: action.timestamp,\n },\n }),\n );\n case 'CLIENTWORKSPACE_NEW_TILE_ADDED':\n case 'CLIENTWORKSPACE_TILE_DUPLICATED':\n case 'CLIENTWORKSPACE_TILE_REOPENED':\n return action.instrument === 'Swap'\n ? addKey(state, action.tileId, emptyFxSwapState)\n : removeKey(state, action.tileId);\n case 'CLIENTWORKSPACE_TILE_INSTRUMENT_CHANGED':\n return action.instrument === 'Swap'\n ? addKey(state, action.tileId, {\n ...emptyFxSwapState,\n ...action.tradeCaptureSessionInfos,\n })\n : removeKey(state, action.tileId);\n case 'CLIENTWORKSPACE_TILE_DELETED':\n return removeKey(state, action.tileId);\n case 'SWAP_PROPERTIES_CHANGED':\n return updateKey(state, action.swapId, swap => ({\n inputs: {\n ...swap.inputs,\n ...action.patch,\n },\n }));\n case 'SWAP_LOCAL_PROPERTY_CHANGED':\n return updateKey(state, action.swapId, () => ({\n ...action.patch,\n }));\n case 'SWAP_PROPERTIES_REQUESTED':\n return updateKey(state, action.swapId, () => ({\n propertiesRequested: true,\n currentSessionId: action.sessionId,\n }));\n case 'SWAP_PROPERTIES_REQUEST_FAILED':\n return updateKey(state, action.quoteId, () => ({\n propertiesRequested: false,\n propertiesRequestError: action.error,\n }));\n case 'SWAP_PROPERTIES_RECEIVED':\n return productPatcher(state, action, () => ({ isPriceObsolete: action.isPriceObsolete }));\n case 'SWAP_TILE_RESET':\n return updateKey(state, action.quoteId, () => emptyFxSwapState);\n case 'SWAP_RFS_STARTED':\n return updateKey(state, action.swapId, () => ({\n rfsStartedAt: action.rfsStartedAt,\n priceRecords: [],\n currentStreamId: action.streamId,\n lastStreamError: null,\n }));\n case 'SWAP_RFS_FAILED':\n return updateKey(state, action.swapId, _swap => ({\n currentStreamId: null,\n lastStreamError: action.error,\n }));\n case 'SWAP_RFS_CANCEL':\n return updateKey(state, action.swapId, () => ({ currentStreamId: null }));\n case 'SWAP_RFS_CLEAR_ERROR':\n return updateKey(state, action.quoteId, () => ({\n currentStreamId: null,\n lastStreamError: null,\n }));\n case 'SWAP_RFS_TERMINATED':\n return updateKey(state, action.swapId, swap => {\n if (swap.currentStreamId !== action.streamId) {\n return null;\n }\n return {\n askMargin: null,\n bidMargin: null,\n askSpotMargin: null,\n bidSpotMargin: null,\n currentStreamId: null,\n lastStreamError: null,\n };\n });\n case 'SWAP_EXECUTION_SENT':\n return updateKey(state, action.swapId, () => ({\n currentStreamId: null,\n askMargin: null,\n bidMargin: null,\n askSpotMargin: null,\n bidSpotMargin: null,\n warnings: {},\n lastExecutedQuoteId: action.quoteId,\n currentExecutionId: action.executionId,\n }));\n case 'TILE_EXECUTION_OVERLAY_HIDDEN':\n return updateKey(state, action.quoteId, () => ({\n currentExecutionId: null,\n }));\n case 'SWAP_QUOTE_RECEIVED':\n return updateKey(state, action.swapId, swap => {\n if (swap.currentStreamId !== action.streamId) {\n return null;\n }\n return {\n askMargin: swap.askMargin === null ? action.quote.defaultMargin.ask : swap.askMargin,\n bidMargin: swap.bidMargin === null ? action.quote.defaultMargin.bid : swap.bidMargin,\n askSpotMargin:\n swap.askSpotMargin === null ? action.quote.defaultSpotMargin.ask : swap.askSpotMargin,\n bidSpotMargin:\n swap.bidSpotMargin === null ? action.quote.defaultSpotMargin.bid : swap.bidSpotMargin,\n };\n });\n case 'SWAP_PROPERTIES_REMOVE_ERROR':\n return updateKey(state, action.swapId, swap => ({\n ...swap,\n errors: removeKeys(swap.errors, action.keys),\n warnings: removeKeys(swap.warnings, action.keys),\n }));\n case 'SWAP_AMOUNT_CURRENCY_MASK_CHANGED':\n return updateKey(state, action.swapId, keyState => ({\n values: {\n ...keyState.values,\n amountCurrency: action.amountCurrency,\n },\n }));\n case 'FIELD_TOOLTIP_SEEN':\n return action.instrument !== 'Swap'\n ? state\n : updateKey(state, action.quoteId, ({ errors, warnings }) => ({\n errors: updateKey(errors, action.field, () => ({ userNotified: true })),\n warnings: updateKey(warnings, action.field, () => ({ userNotified: true })),\n }));\n }\n return swapValidationReducer(state, action);\n};\n","import type { Reducer } from 'redux';\nimport type { FxSwapStreamStateMap, FxSwapStreamState } from '../fxSwapsModel';\nimport type { Action } from 'state/actions';\nimport { addKey, removeKey, updateKey } from 'utils/stateMap';\n\nexport const swapStreamsReducer: Reducer = (\n state: FxSwapStreamStateMap = {},\n action: Action,\n): FxSwapStreamStateMap => {\n switch (action.type) {\n case 'SWAP_RFS_STARTED':\n return addKey(state, action.streamId, {\n status: 'AWAITING',\n } as FxSwapStreamState);\n case 'SWAP_RFS_FAILED':\n case 'SWAP_RFS_TERMINATED':\n case 'SWAP_RFS_CANCEL':\n return removeKey(state, action.streamId);\n case 'SWAP_EXECUTION_SENT':\n return removeKey(state, action.executionId);\n case 'SWAP_QUOTE_RECEIVED':\n return updateKey(state, action.streamId, currentState => {\n const initialRfsWindow =\n currentState.status === 'PRICING'\n ? currentState.initialRfsWindow\n : action.quote.rfsWindow;\n return {\n status: 'PRICING',\n quote: action.quote,\n initialRfsWindow,\n tiering: action.tiering,\n } as FxSwapStreamState;\n });\n }\n\n return state;\n};\n","import { combineReducers } from 'redux';\nimport type { FxSwapsState } from '../fxSwapsModel';\nimport { swapsReducer } from './fxSwapsProductReducer';\nimport { swapStreamsReducer } from './fxSwapsStreamsReducer';\nexport const fxSwapsReducer = combineReducers({\n swaps: swapsReducer,\n streams: swapStreamsReducer,\n});\n","import type { Collection } from 'typings/utils';\nimport type { IFormData } from 'state/share/form';\nimport type { IFxTileMetadata } from 'state/tile/fxTileModel';\nimport type { CurrencyChoice, Side, BidAskPair } from 'state/share/productModel/litterals';\nimport type { CashProductName } from 'state/fxCashs/fxCashsModel';\nimport type { SwapProductName } from 'state/fxSwaps/fxSwapsModel';\nimport type { Patch } from 'state/share/patchModels';\nimport type { IFxExecutionState, IFxExecutionData } from 'state/executions/executionsStateModel';\nimport type { PredealCheck } from 'state/share/predealChecksModel';\n\nexport type BulkLineProduct = CashProductName | SwapProductName;\n\nexport const bulkLineTypes = ['Spot', 'Forward', 'Swap'] as const;\nexport type BulkLineType = typeof bulkLineTypes[number];\nexport type QuoteType = 'Tradeable' | 'Withdraw';\nexport const bulkLineTypeMap: Record = {\n FxSpot: 'Spot',\n FxFwd: 'Forward',\n FxNdf: 'Forward',\n FxSwap: 'Swap',\n FxNdSwap: 'Swap',\n FxPredeliver: 'Swap',\n FxRollover: 'Swap',\n};\n\n/* eslint-disable no-shadow */\nexport enum Step {\n UserInput = 1,\n TradeNegotiation,\n TradeConfirmation,\n}\n\nexport interface IFxBulksState {\n bulks: FxBulkStateMap;\n legs: FxBulkLegStateMap;\n streams: FxBulkStreamStateMap;\n splitLegs: FxBulkSplitLegStateMap;\n nettedLegs: FxBulkNettedLegStateMap;\n}\n\nexport type IFxBulkStateMap = Collection;\nexport type FxBulkStateMap = Readonly;\n\nexport type FxBulksState = Readonly;\n\nexport interface IFxBulkValues {\n currencyPair: string | null;\n amountCurrency: CurrencyChoice;\n currency1: string | null;\n currency2: string | null;\n valueDate: Date | null;\n}\n\nexport interface IFxBulkInputs {\n currencyPair: string | null;\n amountCurrency: CurrencyChoice;\n}\n\nexport const emptyFxBulkState: FxBulkState = {\n values: {\n currencyPair: null,\n amountCurrency: 1,\n currency1: null,\n currency2: null,\n valueDate: null,\n },\n errors: {},\n inputs: {},\n warnings: {},\n step: Step.UserInput,\n legs: [],\n selectedLegs: [],\n excludedLegs: [],\n lastLegIdRequested: 0,\n propertiesRequested: false,\n currentSessionId: null,\n propertiesRequestError: null,\n tradeCaptureIdVersion: null,\n currentStreamId: null,\n currentEspStreamId: null,\n isPriceable: false,\n lastStreamError: null,\n lastExecutedQuoteId: null,\n currentExecutionId: null,\n priceRecords: [],\n /*\n * Never used, but common meta data\n */\n rfsStartedAt: null,\n executionId: null,\n};\n\nexport interface IFxBulkInputs {\n currencyPair: string | null;\n amountCurrency: CurrencyChoice;\n}\nexport type IFxBulkProperties = IFormData;\nexport interface IFxBulkMetadata extends IFxTileMetadata {\n step: Step;\n legs: readonly string[];\n selectedLegs: readonly string[];\n excludedLegs: readonly string[];\n lastLegIdRequested: number;\n executionId: string | null;\n}\nexport type FxBulkState = Readonly;\n\nexport interface ISimpleLeg {\n id: string;\n product: CashProductName;\n way: Side;\n amount: number;\n paymentDate: string;\n paymentDateTenor: string;\n}\n\nexport interface ILegMargin {\n spotMargin: number;\n forwardMargin: number;\n}\n\nexport interface IMargedLeg extends ISimpleLeg {\n margin: ILegMargin | null;\n}\n\ninterface IFxBulkStreamAwaitingState {\n status: 'AWAITING';\n}\ninterface IFxBulkStreamStreamingState {\n status: 'PRICING';\n quote: Readonly;\n initialRfsWindow: number;\n tiering: string | null;\n}\n\nexport type IFxBulkStreamState = IFxBulkStreamAwaitingState | IFxBulkStreamStreamingState;\n\nexport type FxBulkStreamState = Readonly;\n\ntype IFxBulkStreamStateMap = Collection;\n\nexport type FxBulkStreamStateMap = Readonly;\n\nexport type FxBulkLegStateMap = Collection;\nexport type FxBulkLegState = IFormData;\n\nexport type FxBulkSplitLegStateMap = Collection;\nexport type FxBulkNettedLegStateMap = Collection;\n\nexport interface FxBulkLegInputs {\n product: BulkLineProduct;\n isUneven: boolean;\n way: Side;\n amount: string | null;\n amountCurrency: CurrencyChoice | null;\n farAmount: string | null;\n paymentDate: string | null;\n paymentDateTenor: string | null;\n farPaymentDate: string | null;\n farPaymentDateTenor: string | null;\n}\n\nexport interface IFxBulkLegValues {\n product: BulkLineProduct | null;\n isUneven: boolean | null;\n way: Side | null;\n currency1: string | null;\n currency2: string | null;\n amount: number | null;\n farAmount: number | null;\n paymentDate: string | null;\n paymentDateTenor: string | null;\n farPaymentDate: string | null;\n farPaymentDateTenor: string | null;\n}\n\nexport type FxBulkPatch = Patch;\n\nexport const emptyFxBulkLegState: FxBulkLegState = {\n values: {\n product: null,\n isUneven: false,\n way: 'Buy',\n currency1: null,\n currency2: null,\n amount: null,\n farAmount: null,\n paymentDate: null,\n paymentDateTenor: null,\n farPaymentDate: null,\n farPaymentDateTenor: null,\n },\n errors: {},\n warnings: {},\n inputs: {},\n};\n\nexport interface IQuoteLeg {\n spotWithoutMargin: BidAskPair;\n spotWithMargin: BidAskPair;\n forwardPoints: BidAskPair;\n forwardMarginPoints: BidAskPair;\n defaultMargin: BidAskPair;\n midAllInRate: number | null;\n date: string;\n dateTenor: string;\n amount: number;\n customerWay: Side;\n isForward: boolean;\n}\n\nexport interface IQuote {\n quoteId: string;\n rfsWindow: number;\n frontTimestamp: Date;\n backTimestamp: number;\n negotiatedCurrency: string;\n legs: readonly IQuoteLeg[];\n nettedLegs: readonly IQuoteLeg[];\n\n /* not used at the moment */\n quoteType: QuoteType;\n predealChecks: readonly PredealCheck[];\n}\n\nexport interface IFxBulkExecutionData extends IFxExecutionData {\n instrument: 'Bulk';\n quote: IQuote;\n}\nexport type FxBulkExecutionState = IFxExecutionState & IFxBulkExecutionData;\n","import type { Reducer } from 'redux';\nimport { type FxBulkStateMap, emptyFxBulkState, type FxBulkState } from '../fxBulksModel';\nimport type { Action } from 'state/actions';\nimport { addKey, updateKey, removeKey, unpatchedEntries } from 'utils/stateMap';\nimport { addPriceRecorded } from 'state/share/priceRecordReducerHelper';\nimport { validationPartialReducer } from 'state/share/validationReducer';\n\nconst bulkValidationReducer = validationPartialReducer<'Bulk', FxBulkState>('Bulk');\n\nexport const bulksReducer: Reducer = (\n state: FxBulkStateMap = {},\n action: Action,\n): FxBulkStateMap => {\n switch (action.type) {\n case 'BULK_CREATED':\n return addKey(state, action.bulkId, emptyFxBulkState);\n case 'BULK_CLOSED':\n return removeKey(state, action.bulkId);\n case 'BULK_IMPORTED':\n case 'BULK_PROPERTY_CHANGED':\n return updateKey(state, action.bulkId, bulk => ({\n inputs: {\n ...bulk.inputs,\n ...action.patch,\n },\n }));\n case 'BULK_PROPERTIES_REQUESTED':\n return updateKey(state, action.bulkId, () => ({\n propertiesRequested: true,\n currentSessionId: action.sessionId,\n }));\n case 'BULK_PROPERTIES_REQUEST_FAILED':\n return updateKey(state, action.bulkId, () => ({\n propertiesRequested: false,\n propertiesRequestError: action.error,\n }));\n case 'BULK_PROPERTIES_RECEIVED':\n return updateKey(state, action.bulkId, bulk => {\n const { patch } = action;\n\n const errorsToKeep = unpatchedEntries(bulk.errors, patch.values);\n\n const isReadyToPrice =\n patch.isReadyToPrice === null ? bulk.isPriceable : patch.isReadyToPrice;\n\n const legsIds = Object.keys(patch.legs);\n const potentialLastLegId = Math.max(...legsIds.map(Number));\n\n return {\n ...bulk,\n propertiesRequested: false,\n isPriceable: isReadyToPrice,\n tradeCaptureIdVersion: patch.idVersion,\n lastLegIdRequested:\n potentialLastLegId > bulk.lastLegIdRequested\n ? potentialLastLegId\n : bulk.lastLegIdRequested,\n legs: [...bulk.excludedLegs, ...legsIds]\n .sort((a, b) => Number(a) - Number(b))\n .reduce((acc, val) => {\n if (!acc.includes(val)) {\n acc.push(val);\n }\n return acc;\n }, [] as string[]),\n values: {\n ...bulk.values,\n ...patch.values,\n },\n errors: {\n ...errorsToKeep,\n ...patch.errors,\n },\n inputs: {},\n };\n });\n case 'BULK_SELECTION_CHANGED':\n return updateKey(state, action.bulkId, bulk => ({\n ...bulk,\n selectedLegs: action.legIds,\n }));\n case 'BULK_LEG_ADDED':\n return updateKey(state, action.bulkId, bulk => ({\n propertiesRequested: true,\n lastLegIdRequested: bulk.lastLegIdRequested + 1,\n }));\n case 'BULK_RESET':\n return updateKey(state, action.bulkId, bulk => ({\n propertiesRequested: true,\n lastLegIdRequested: bulk.lastLegIdRequested + 1,\n selectedLegs: [],\n excludedLegs: [],\n }));\n case 'BULK_RESET_ALL':\n return updateKey(state, action.bulkId, () => emptyFxBulkState);\n case 'BULK_LEGS_EXCLUDED':\n return updateKey(state, action.bulkId, bulk => ({\n ...bulk,\n excludedLegs: action.legIds,\n }));\n case 'BULK_LEGS_REMOVED':\n return updateKey(state, action.bulkId, bulk => ({\n propertiesRequested: true,\n excludedLegs: bulk.excludedLegs.filter(id => !action.legIds.includes(id)),\n selectedLegs: bulk.selectedLegs.filter(id => !action.legIds.includes(id)),\n }));\n case 'BULK_RFS_CLEAR_ERROR':\n return updateKey(state, action.bulkId, _bulk => ({\n lastStreamError: null,\n }));\n case 'BULK_RFS_STARTED':\n return updateKey(state, action.bulkId, () => ({\n priceRecords: [],\n rfsStartedAt: action.rfsStartedAt,\n currentStreamId: action.streamId,\n lastStreamError: null,\n }));\n case 'BULK_QUOTE_RECEIVED':\n return updateKey(state, action.bulkId, _bulk => ({\n step: 2,\n }));\n case 'BULK_RFS_FAILED':\n return updateKey(state, action.bulkId, _bulk => ({\n step: 1,\n currentStreamId: null,\n lastStreamError: action.error,\n }));\n case 'BULK_RFS_CANCEL':\n case 'BULK_RFS_TERMINATED':\n case 'BULK_RESTART':\n return updateKey(state, action.bulkId, _bulk => ({\n step: 1,\n currentStreamId: null,\n currentExecutionId: null,\n }));\n case 'BULK_EXECUTION_SENT':\n return updateKey(state, action.bulkId, _bulk => ({\n step: 3,\n currentStreamId: null,\n currentExecutionId: action.executionId,\n }));\n case 'RECORD_PRICE_SUCCEEDED':\n case 'RECORD_PRICE_FAILED':\n if (action.instrument !== 'Bulk') {\n return state;\n }\n return updateKey(\n state,\n action.tileId,\n addPriceRecorded({\n priceRecord: {\n error: action.error,\n prices: action.error === true ? undefined : action.prices,\n timestamp: action.timestamp,\n },\n }),\n );\n case 'FIELD_TOOLTIP_SEEN':\n return action.instrument !== 'Bulk'\n ? state\n : updateKey(state, action.quoteId, ({ errors, warnings }) => ({\n errors: updateKey(errors, action.field, () => ({ userNotified: true })),\n warnings: updateKey(warnings, action.field, () => ({ userNotified: true })),\n }));\n case 'ESP_TILE_STREAM_ID_AND_REFCOUNT_UPDATED':\n return updateKey(state, action.tileId, () => ({\n currentEspStreamId: action.streamId,\n }));\n case 'ESP_STREAM_RECONNECTED':\n return updateKey(state, action.tileId, () => ({\n currentEspStreamId: action.streamKey,\n }));\n case 'ESP_STREAM_TILE_UNSUBSCRIBE':\n case 'ESP_STREAM_KEY_REQUEST_PENDING':\n return updateKey(state, action.tileId, () => ({\n currentEspStreamId: null,\n }));\n default:\n return bulkValidationReducer(state, action);\n }\n};\n","import type { Reducer } from 'redux';\nimport type { FxBulkStreamStateMap, FxBulkStreamState } from 'state/fxBulks/fxBulksModel';\nimport type { Action } from 'state/actions';\nimport { addKey, removeKey, updateKey } from 'utils/stateMap';\nexport const bulkStreamsReducer: Reducer = (\n state: FxBulkStreamStateMap = {},\n action: Action,\n): FxBulkStreamStateMap => {\n switch (action.type) {\n case 'BULK_RFS_STARTED': {\n return addKey(state, action.streamId, {\n status: 'AWAITING',\n } as FxBulkStreamState);\n }\n case 'BULK_QUOTE_RECEIVED':\n return updateKey(\n state,\n action.streamId,\n currentStreamState =>\n ({\n status: 'PRICING',\n quote: action.quote,\n tiering: action.tiering,\n initialRfsWindow:\n currentStreamState.status === 'PRICING'\n ? currentStreamState.initialRfsWindow\n : action.quote.rfsWindow,\n } as FxBulkStreamState),\n );\n case 'BULK_RFS_CANCEL':\n case 'BULK_RFS_FAILED':\n case 'BULK_RFS_TERMINATED':\n return removeKey(state, action.streamId);\n case 'BULK_EXECUTION_SENT':\n return removeKey(state, action.executionId);\n }\n return state;\n};\n","import type { IFormData } from './../../share/form/formModel';\nimport {\n type FxBulkLegStateMap,\n type FxBulkLegState,\n type FxBulkLegInputs,\n emptyFxBulkLegState,\n type FxBulkSplitLegStateMap,\n type IQuoteLeg,\n type ISimpleLeg,\n type FxBulkNettedLegStateMap,\n type IMargedLeg,\n type ILegMargin,\n type IFxBulkLegValues,\n} from '../fxBulksModel';\nimport type { Reducer } from 'redux';\nimport type { Action } from 'state/actions';\nimport { addKey, removeKey, removeKeys, updateKey } from 'utils/stateMap';\nimport { getLegKey, legsPatcher } from 'state/share/patchHelper';\nimport type { CashProductName } from 'state/fxCashs/fxCashsModel';\nimport type { Collection } from 'typings/utils';\nimport { getBidAskValueWith, makeBulkLegId } from '../selectors';\nimport type { BulkMarginAction } from '../fxBulksActions';\nimport { precisionAdderWithPrecision } from 'utils/number';\n\nconst patchBulkLegs = legsPatcher<\n IFxBulkLegValues,\n FxBulkLegInputs,\n IFormData\n>(emptyFxBulkLegState);\n\nconst resetLeg = (state: FxBulkLegStateMap, quoteId: string, legId: string) => {\n const legKey = getLegKey(quoteId, legId);\n return updateKey(state, legKey, leg => {\n const legValues = leg.values;\n const values = {\n ...emptyFxBulkLegState.values,\n product: legValues.product,\n currency1: legValues.currency1,\n currency2: legValues.currency2,\n amount: legValues.amount,\n };\n return {\n inputs: {},\n values,\n errors: {},\n warnings: {},\n };\n });\n};\n\nexport const legsReducer: Reducer = (\n state: FxBulkLegStateMap = {},\n action: Action,\n): FxBulkLegStateMap => {\n switch (action.type) {\n case 'BULK_CREATED':\n // return addKey(state, getLegKey(action.bulkId), emptyFxBulkLegState);\n return state;\n case 'BULK_RESET_ALL':\n case 'BULK_CLOSED':\n return removeKeys(state, getLegKeys(state, action.bulkId));\n case 'BULK_LEG_PROPERTY_CHANGED':\n return updateBulkLeg(state, action.bulkId, action.legId, action.patch);\n case 'BULK_LEGS_PROPERTY_CHANGED':\n return getLegKeys(state, action.bulkId).reduce(\n (accumulatedState, legKey) =>\n updateKey(accumulatedState, legKey, leg => ({\n inputs: action.patch,\n errors: leg.errors,\n values: leg.values,\n })),\n state,\n );\n case 'BULK_PROPERTIES_RECEIVED':\n return patchBulkLegs(state, action.bulkId, action.patch.legs, action.excludedLegsIds);\n case 'BULK_IMPORTED':\n const initialState = Object.keys(action.patchLegs).reduce(\n (_stateAcc, legId) => addKey(state, getLegKey(action.bulkId, legId), emptyFxBulkLegState),\n state,\n );\n return Object.keys(action.patchLegs).reduce(\n (stateAcc, legId) =>\n updateBulkLeg(stateAcc, action.bulkId, legId, action.patchLegs![legId]),\n initialState,\n );\n case 'BULK_PROPERTY_CHANGED':\n if (action.patchLegs === undefined) {\n return state;\n }\n return Object.keys(action.patchLegs).reduce(\n (stateAcc, legId) =>\n updateBulkLeg(stateAcc, action.bulkId, legId, action.patchLegs![legId]),\n state,\n );\n case 'LOCAL_LEG_FIELD_VALIDATION_SET':\n return action.instrument !== 'Bulk'\n ? state\n : updateKey(state, getLegKey(action.quoteId, action.legId), ({ errors, warnings }) => {\n const validation = {\n code: action.messageId,\n userNotified: false,\n };\n return action.validationStatus === 'warning'\n ? { warnings: { ...warnings, [action.field]: validation } }\n : { errors: { ...errors, [action.field]: validation } };\n });\n case 'LOCAL_LEG_FIELD_VALIDATION_CLEAR':\n return action.instrument !== 'Bulk'\n ? state\n : updateKey(state, getLegKey(action.quoteId, action.legId), ({ errors, warnings }) => ({\n errors: removeKey(errors, action.field),\n warnings: removeKey(warnings, action.field),\n }));\n case 'LEG_FIELD_TOOLTIP_SEEN':\n return action.instrument !== 'Bulk'\n ? state\n : updateKey(state, getLegKey(action.quoteId, action.legId), ({ errors, warnings }) => ({\n errors: updateKey(errors, action.field, () => ({ userNotified: true })),\n warnings: updateKey(warnings, action.field, () => ({ userNotified: true })),\n }));\n case 'BULK_LEG_RESET': {\n return resetLeg(state, action.bulkId, action.legId);\n }\n case 'BULK_EXECUTION_SENT': {\n return getLegKeys(state, action.bulkId).reduce(\n (accumulatedState, legKey) =>\n updateKey(accumulatedState, legKey, _leg => ({\n warnings: {},\n })),\n state,\n );\n }\n default:\n return state;\n }\n};\n\nexport const splitLegsReducer: Reducer = (\n state: FxBulkSplitLegStateMap = {},\n action: Action,\n) => {\n switch (action.type) {\n case 'BULK_RFS_CANCEL':\n case 'BULK_RFS_TERMINATED':\n case 'BULK_RESTART':\n return removeKeys(state, getLegKeys(state, action.bulkId));\n case 'BULK_QUOTE_RECEIVED':\n return action.quote.legs.reduce(\n (s, leg, index) => ({\n ...s,\n [`${action.bulkId}/${index}`]: toSimpleLeg(leg, index),\n }),\n state,\n );\n default:\n return state;\n }\n};\n\nexport const nettedLegsReducer: Reducer = (\n state: FxBulkNettedLegStateMap = {},\n action: Action,\n) => {\n switch (action.type) {\n case 'BULK_RFS_CANCEL':\n case 'BULK_RFS_TERMINATED':\n case 'BULK_RESTART':\n return removeKeys(state, getLegKeys(state, action.bulkId));\n case 'BULK_QUOTE_RECEIVED':\n return action.quote.nettedLegs.reduce(\n (s, leg) => ({\n ...s,\n [makeBulkLegId(action.bulkId, leg.date)]: toMargedLeg(\n leg,\n leg.date,\n s[makeBulkLegId(action.bulkId, leg.date)],\n ) as IMargedLeg,\n }),\n state,\n );\n case 'BULK_INCREMENT_MARGIN':\n case 'BULK_DECREMENT_MARGIN':\n case 'BULK_SET_MARGIN':\n return updateKey(state, makeBulkLegId(action.bulkId, action.date), old => ({\n margin: old.margin === null ? null : marginReducer(old.margin, action),\n }));\n default:\n return state;\n }\n};\n\nconst precisionAdder = precisionAdderWithPrecision(1);\n\nexport const marginReducer = (state: ILegMargin, action: BulkMarginAction): ILegMargin => {\n switch (action.type) {\n case 'BULK_INCREMENT_MARGIN':\n return {\n spotMargin: precisionAdder(state.spotMargin, 0.1),\n forwardMargin: state.forwardMargin,\n };\n case 'BULK_DECREMENT_MARGIN':\n return {\n spotMargin: precisionAdder(state.spotMargin, -0.1),\n forwardMargin: state.forwardMargin,\n };\n case 'BULK_SET_MARGIN':\n // TODO : add some smart algorithm to spread margin between spot and forward\n return {\n spotMargin: action.value,\n forwardMargin: state.forwardMargin,\n };\n default:\n return state;\n }\n};\n\nconst getLegKeys = (state: Collection, bulkId: string) =>\n Object.keys(state).filter(bulkLegId => bulkLegId.startsWith(bulkId));\n\nconst updateBulkLeg = (\n state: FxBulkLegStateMap,\n bulkId: string,\n legId: string,\n legPatch: Partial,\n) =>\n updateKey(state, getLegKey(bulkId, legId), leg => ({\n inputs: legPatch,\n errors: leg.errors,\n values: leg.values,\n }));\n\nconst toSimpleLeg = (quoteLeg: IQuoteLeg, index: number | string): ISimpleLeg => {\n const simpleLeg: ISimpleLeg = {\n id: index.toString(),\n amount: quoteLeg.amount,\n paymentDate: quoteLeg.date,\n paymentDateTenor: quoteLeg.dateTenor,\n product: (quoteLeg.isForward ? 'FxFwd' : 'FxSpot') as CashProductName,\n way: quoteLeg.customerWay,\n };\n return simpleLeg;\n};\n\nconst toMargedLeg = (\n quoteLeg: IQuoteLeg,\n index: number | string,\n old: IMargedLeg | undefined,\n): IMargedLeg => {\n const simpleLeg = toSimpleLeg(quoteLeg, index);\n const margin = old?.margin ?? computeMargin(quoteLeg);\n return { ...simpleLeg, ...{ margin } };\n};\n\nconst computeMargin = (quoteLeg: IQuoteLeg): ILegMargin => {\n const getBidAskValueWithWay = getBidAskValueWith(quoteLeg.customerWay);\n\n return {\n forwardMargin: getBidAskValueWithWay(quoteLeg.forwardMarginPoints),\n spotMargin: getBidAskValueWithWay(quoteLeg.defaultMargin),\n };\n};\n","import { combineReducers } from 'redux';\nimport type { FxBulksState } from '../fxBulksModel';\nimport { bulksReducer } from './fxBulksProductReducer';\nimport { bulkStreamsReducer } from './fxBulkStreamReducer';\nimport { legsReducer, splitLegsReducer, nettedLegsReducer } from './fxBulksLegReducer';\n\nexport const fxBulksReducer = combineReducers({\n bulks: bulksReducer,\n legs: legsReducer,\n streams: bulkStreamsReducer,\n splitLegs: splitLegsReducer,\n nettedLegs: nettedLegsReducer,\n});\n","import type { Reducer } from 'redux';\nimport type { Action } from 'state/actions';\nimport { productPatcher } from 'state/share/patchHelper';\nimport { addPriceRecorded } from 'state/share/priceRecordReducerHelper';\nimport { validationPartialReducer } from 'state/share/validationReducer';\nimport { addKey, removeKey, removeKeys, updateKey, updateProperty } from 'utils/stateMap';\nimport type { FxAccumulatorInputs, FxAccumulatorMap, FxAccumulatorState } from '../fxAccumulatorsModel';\n\nexport const defaultFxAccumulatorState: FxAccumulatorState = {\n errors: {},\n values: {\n productName: 'FxTargetAccumulator',\n ekiDown: null,\n ekiUp: null,\n currencyPair: null,\n premiumDate: null,\n premiumDateTenor: null,\n way: 'Buy',\n amount: null,\n amountSplitType: 'Fixing',\n amountCurrency: 1,\n leverage: '',\n leverageAmount: null,\n strike: null,\n step: null,\n akoTrigger: null,\n barrier: null,\n ekiTrigger: null,\n stepDown: undefined,\n stepUp: undefined,\n priceType: 'Amount',\n priceCurrency: 1,\n possiblePriceTypes: ['Amount'],\n hedgeType: 'Live',\n hedgePrice: null,\n hedgePaymentDate: null,\n hedgeAmount: null,\n hedgeCurrency: 1,\n possibleHedgeTypes: ['Live', 'Spot'],\n targetProfitTypeList: [''],\n targetProfitType: null,\n target: null,\n firstFixingDate: null,\n firstFixingDateTenor: null,\n defaultFixingFrequency: '',\n fixingFrequenciesList: [],\n fixingFrequency: '',\n numberOfFixings: 0,\n settlementFrequency: '',\n defaultSettlementFrequency: '',\n settlementFrequenciesList: [],\n settlementMode: 'Physical_Spot',\n settlementModeList: [],\n cashSettlementCurrency: '',\n cashSettlementCurrencyList: [],\n expiryDate: null,\n expiryTenor: null,\n fixingReferencesList1: [],\n defaultFixingReference1: '',\n fixingReference1: '',\n fixingReferencesList2: [],\n defaultFixingReference2: '',\n fixingReference2: '',\n lastFixingDate: null,\n calendar: [],\n deliveryDate: '',\n cutOffMarketPlace: '',\n totalLeverage: null,\n totalNotional: null,\n markupCurrency: 'ccy1',\n customFields: [],\n isCrossed: false,\n crossCurrency: '',\n possibleCrossCurrencies: [],\n accuType: 'TargetAccu',\n possibleAccuTypeList: ['TargetAccu', 'PIVOT', 'EKI', 'PIVOTEKI'],\n strikeComparator: '',\n eki: null,\n ekiString: '',\n },\n inputs: {},\n warnings: {},\n displayMode: 'PRICER',\n currentEspStreamId: null,\n currentSessionId: null,\n isPriceable: false,\n currentExecutionId: null,\n currentStreamId: null,\n lastStreamId: null,\n lastExecutedQuoteId: null,\n lastStreamError: null,\n priceRecords: [],\n propertiesRequested: false,\n propertiesRequestError: null,\n rfsStartedAt: null,\n tradeCaptureIdVersion: null,\n legs: [],\n numberOfSettlements: 0,\n};\n\nconst defaultFxAccumulatorsState: FxAccumulatorMap = {};\n\nconst updateInput = updateProperty('inputs');\n\nconst accumulatorValidationReducer = validationPartialReducer<'Accumulator', FxAccumulatorState>('Accumulator');\n\n// TODO: review all cases execpt CLIENTWORKSPACE_TILE_RESTORED because instrument is accumulator now\nexport const fxAccumulatorsProductReducer: Reducer = (\n state = defaultFxAccumulatorsState,\n action,\n) => {\n switch (action.type) {\n case 'CLIENTWORKSPACE_TILE_RESTORED':\n return action.savedTile.instrument === 'Accumulator'\n ? addKey(state, action.tileId, {\n ...defaultFxAccumulatorState,\n values: {\n ...defaultFxAccumulatorState.values,\n productName: action.savedTile.productName,\n },\n })\n : state;\n case 'CLIENTWORKSPACE_NEW_TILE_ADDED':\n return action.instrument === 'TargetAccumulator' || action.instrument === 'ForwardAccumulator'\n ? addKey(state, action.tileId, defaultFxAccumulatorState)\n : state;\n case 'CLIENTWORKSPACE_TILE_DUPLICATED':\n case 'CLIENTWORKSPACE_TILE_REOPENED':\n return action.instrument === 'TargetAccumulator' || action.instrument === 'ForwardAccumulator'\n ? addKey(state, action.tileId, {\n ...defaultFxAccumulatorState,\n values: {\n ...defaultFxAccumulatorState.values,\n productName: action.instrument === 'TargetAccumulator' ? 'FxTargetAccumulator' : 'FxForwardAccumulator',\n },\n })\n : state;\n case 'CLIENTWORKSPACE_TILE_INSTRUMENT_CHANGED':\n if (action.instrument === 'TargetAccumulator' || action.instrument === 'ForwardAccumulator') {\n const newState: FxAccumulatorState = {\n ...defaultFxAccumulatorState,\n values: {\n ...defaultFxAccumulatorState.values,\n productName: action.instrument === 'TargetAccumulator' ? 'FxTargetAccumulator' : 'FxForwardAccumulator',\n },\n };\n if (state[action.tileId] !== undefined) {\n return addKey(removeKey(state, action.tileId), action.tileId, newState);\n } else {\n return addKey(state, action.tileId, newState);\n }\n } else {\n return removeKey(state, action.tileId);\n }\n case 'CLIENTWORKSPACE_TILE_DELETED':\n return removeKey(state, action.tileId);\n case 'ACCUMULATOR_PROPERTIES_CHANGED':\n return updateKey(\n state,\n action.quoteId,\n updateInput>(() => action.patch),\n () =>\n action.patch.schedule === undefined\n ? { lastStreamError: null }\n : {\n legs: action.patch.schedule === null ? [] : Object.keys(action.patch.schedule),\n },\n );\n case 'ACCUMULATOR_PROPERTIES_REQUESTED':\n return updateKey(state, action.quoteId, () => ({\n propertiesRequested: true,\n currentSessionId: action.sessionId,\n }));\n case 'ACCUMULATOR_PROPERTIES_REQUEST_FAILED':\n return updateKey(state, action.quoteId, () => ({\n propertiesRequested: false,\n propertiesRequestError: action.error,\n }));\n case 'ACCUMULATOR_PROPERTIES_RECEIVED':\n return productPatcher(state, action, accumulator => ({\n propertiesRequestError: null,\n summary: action.summary,\n numberOfSettlements: action.numberOfSettlements || accumulator.numberOfSettlements,\n legs: action.schedule !== undefined ? Object.keys(action.schedule) : accumulator.legs,\n }));\n case 'ACCUMULATOR_SCHEDULE_LEG_ADDED':\n return updateKey(state, action.quoteId, ({ legs }) => ({\n legs: [...legs, action.legId],\n }));\n case 'ACCUMULATOR_TILE_RESET':\n return updateKey(state, action.quoteId, legacyAccu => ({\n ...defaultFxAccumulatorState,\n displayMode: legacyAccu.displayMode,\n values: {\n ...defaultFxAccumulatorState.values,\n productName: legacyAccu.values.productName,\n },\n }));\n case 'ACCUMULATOR_PROPERTIES_REMOVE_ERROR':\n return updateKey(state, action.quoteId, quoteState => ({\n errors: removeKeys(quoteState.errors, action.keys),\n }));\n case 'FIELD_TOOLTIP_SEEN':\n return action.instrument !== 'Accumulator'\n ? state\n : updateKey(state, action.quoteId, ({ errors, warnings }) => ({\n errors: updateKey(errors, action.field, () => ({ userNotified: true })),\n warnings: updateKey(warnings, action.field, () => ({ userNotified: true })),\n }));\n case 'ACCUMULATOR_PROPERTIES_PRISTINE':\n return updateKey(state, action.quoteId, cashState => ({\n ...cashState,\n dirtyFields: removeKeys(cashState.errors, [action.fieldName]),\n }));\n case 'ESP_TILE_STREAM_ID_AND_REFCOUNT_UPDATED':\n return updateKey(state, action.tileId, () => ({\n currentEspStreamId: action.streamId,\n }));\n case 'ESP_STREAM_RECONNECTED':\n return updateKey(state, action.tileId, () => ({\n currentEspStreamId: action.streamKey,\n }));\n case 'ESP_STREAM_TILE_UNSUBSCRIBE':\n case 'ESP_STREAM_KEY_REQUEST_PENDING':\n return updateKey(state, action.tileId, () => ({\n currentEspStreamId: null,\n }));\n case 'ACCUMULATOR_RFS_STARTED':\n return updateKey(state, action.quoteId, () => ({\n currentStreamId: action.rfsId,\n lastStreamError: null,\n rfsStartedAt: action.rfsStartedAt,\n priceRecords: [],\n }));\n case 'ACCUMULATOR_RFS_CANCELED':\n case 'ACCUMULATOR_RFS_TERMINATED':\n return updateKey(state, action.quoteId, ({ currentStreamId }) =>\n currentStreamId !== action.rfsId\n ? null\n : {\n currentStreamId: null,\n lastStreamId: action.shouldKeepAsExpired ? currentStreamId : null,\n lastStreamError: null,\n },\n );\n case 'ACCUMULATOR_RFS_FAILED':\n return updateKey(state, action.quoteId, () => ({\n currentStreamId: null,\n lastStreamId: null,\n lastStreamError: action.error,\n }));\n case 'ACCUMULATOR_RFS_CLEAR_ERROR':\n return updateKey(state, action.quoteId, () => ({\n lastStreamError: null,\n }));\n case 'ACCUMULATOR_RFS_LAST_REMOVED':\n return updateKey(state, action.quoteId, () => ({\n lastStreamId: null,\n }));\n case 'ACCUMULATOR_EXECUTION_SENT':\n return updateKey(state, action.quoteId, ({ currentStreamId }) => ({\n currentStreamId: null,\n lastStreamId: currentStreamId,\n lastStreamError: null,\n currentExecutionId: action.executionId,\n lastExecutedQuoteId: action.executedQuoteId,\n warnings: {},\n }));\n case 'TILE_EXECUTION_OVERLAY_HIDDEN':\n return updateKey(state, action.quoteId, () => ({\n currentExecutionId: null,\n }));\n case 'ACCUMULATOR_DISPLAYMODE_TOGGLE':\n return updateKey(state, action.quoteId, ({ displayMode }) => ({\n displayMode: displayMode === 'PRICER' ? 'SCHEDULER' : 'PRICER',\n }));\n case 'RECORD_PRICE_SUCCEEDED':\n case 'RECORD_PRICE_FAILED':\n if (action.instrument !== 'Accumulator') {\n return state;\n }\n return updateKey(\n state,\n action.tileId,\n addPriceRecorded({\n priceRecord: {\n error: action.error,\n prices: action.error === true ? undefined : action.prices,\n timestamp: action.timestamp,\n },\n }),\n );\n }\n return accumulatorValidationReducer(state, action);\n};\n","import type { FxAccumulatorRfsStreams, FxAccumulatorRfsStream } from '../fxAccumulatorsModel';\nimport { updateKey, addKey, removeKey } from 'utils/stateMap';\nimport type { Action } from 'state/actions';\nimport type { Reducer } from 'redux';\nimport { immutableReferenceUpdate } from 'utils/immutableReferenceUpdate';\n\nconst defaultFxAccumulatorRfsStreamState = {};\n\nexport const fxAccumulatorsRfsStreams: Reducer = (\n state = defaultFxAccumulatorRfsStreamState,\n action,\n) => {\n switch (action.type) {\n case 'ACCUMULATOR_RFS_STARTED':\n return addKey(state, action.rfsId, {\n status: 'AWAITING',\n forceTradeable: action.forceTradeable,\n traderId: null,\n });\n\n case 'ACCUMULATOR_RFS_QUOTE_RECEIVED':\n return updateKey(state, action.rfsId, currentState => {\n const initialRfsWindow =\n currentState.status === 'AWAITING'\n ? action.quote.rfsWindow\n : currentState.initialRfsWindow;\n\n const newState: FxAccumulatorRfsStream = {\n status: 'PRICING',\n quote:\n currentState.status === 'PRICING'\n ? immutableReferenceUpdate(currentState.quote, action.quote)\n : action.quote,\n initialRfsWindow,\n lastQuoteReceivedDate: action.quoteDate,\n tiering: action.tiering,\n skippedLimitCheck: action.skippedLimitCheck,\n traderId: currentState.traderId,\n quoteContribution: action.quoteContribution,\n };\n\n return newState;\n });\n\n case 'ACCUMULATOR_TRADER_NOTIFICATION_RECEIVED':\n return updateKey(state, action.rfsId, currentState => ({\n status: 'AWAITING',\n traderId: action.traderId,\n forceTradeable: currentState.status === 'AWAITING' ? currentState.forceTradeable : false,\n }));\n\n case 'ACCUMULATOR_EXECUTION_SENT':\n return updateKey(state, action.executionId, () => ({\n status: 'EXPIRED',\n }));\n\n case 'ACCUMULATOR_RFS_CANCELED':\n case 'ACCUMULATOR_RFS_TERMINATED':\n if (!action.shouldKeepAsExpired) {\n return removeKey(state, action.rfsId);\n }\n return updateKey(state, action.rfsId, () => ({ status: 'EXPIRED' }));\n\n case 'ACCUMULATOR_RFS_FAILED':\n case 'ACCUMULATOR_RFS_LAST_REMOVED':\n return removeKey(state, action.rfsId);\n\n default:\n return state;\n }\n};\n","import type {\n AccumulatorScheduleInputs,\n AccumulatorScheduleItem,\n AccumulatorScheduleValues,\n FxAccumulatorSchedules,\n} from '../fxAccumulatorsModel';\nimport type { Reducer } from 'redux';\nimport type { Action } from 'state/actions';\nimport { addKey, removeKey, updateKey, updateProperty } from 'utils/stateMap';\nimport { getLegKey, legsPatcher } from 'state/share/patchHelper';\n\nconst updateInput = updateProperty('inputs');\n\nconst emptyLeg: AccumulatorScheduleItem = {\n values: {\n fixingDate: null,\n amount: null,\n paymentDate: null,\n strikeDown: null,\n strikeUp: null,\n strike: null,\n leverageAmount: null,\n step: null,\n },\n inputs: {},\n errors: {},\n warnings: {},\n custom: [],\n};\n\nconst legPatcher = legsPatcher<\n AccumulatorScheduleValues,\n AccumulatorScheduleInputs,\n AccumulatorScheduleItem\n>(emptyLeg);\n\nexport const fxAccumulatorsScheduleReducer: Reducer = (\n state = {},\n action,\n) => {\n switch (action.type) {\n case 'ACCUMULATOR_PROPERTIES_RECEIVED':\n return action.patch === undefined\n ? state\n : legPatcher(state, action.quoteId, action.schedule!);\n case 'ACCUMULATOR_SCHEDULE_LEG_PROPERTIES_CHANGED':\n return updateKey(\n state,\n getLegKey(action.quoteId, action.legId),\n updateInput(() => action.patch),\n );\n case 'ACCUMULATOR_SCHEDULE_LEG_ADDED':\n return addKey(\n state,\n getLegKey(action.quoteId, action.legId),\n emptyLeg,\n );\n case 'LOCAL_LEG_FIELD_VALIDATION_SET':\n return action.instrument !== 'Accumulator'\n ? state\n : updateKey(state, getLegKey(action.quoteId, action.legId), ({ errors, warnings }) => {\n const validation = {\n code: action.messageId,\n userNotified: false,\n };\n return action.validationStatus === 'warning'\n ? { warnings: { ...warnings, [action.field]: validation } }\n : { errors: { ...errors, [action.field]: validation } };\n });\n case 'LOCAL_LEG_FIELD_VALIDATION_CLEAR':\n return action.instrument !== 'Accumulator'\n ? state\n : updateKey(state, getLegKey(action.quoteId, action.legId), ({ errors, warnings }) => ({\n errors: removeKey(errors, action.field),\n warnings: removeKey(warnings, action.field),\n }));\n case 'LEG_FIELD_TOOLTIP_SEEN':\n return action.instrument !== 'Accumulator'\n ? state\n : updateKey(state, getLegKey(action.quoteId, action.legId), ({ errors, warnings }) => ({\n errors: updateKey(errors, action.field, () => ({ userNotified: true })),\n warnings: updateKey(warnings, action.field, () => ({ userNotified: true })),\n }));\n case 'CLIENTWORKSPACE_TILE_INSTRUMENT_CHANGED':\n return removeSchedules(action.tileId, state);\n\n default:\n return state;\n }\n};\n\nfunction removeSchedules(tileId: string, state: FxAccumulatorSchedules) {\n const prefixScheduleId = `${tileId}/`;\n\n return Object.keys(state).reduce((previousState, scheduleId) => {\n if (!scheduleId.startsWith(prefixScheduleId)) {\n return previousState;\n }\n\n const { [scheduleId]: deletedSchedule, ...otherSchedules } = previousState;\n\n return otherSchedules;\n }, state);\n}\n","import { combineReducers } from 'redux';\nimport type { FxAccumulatorsState } from '../fxAccumulatorsModel';\nimport { fxAccumulatorsProductReducer } from './fxAccumulatorsProductReducer';\nimport { fxAccumulatorsRfsStreams } from './fxAccumulatorsRfsStreamsReducer';\nimport { fxAccumulatorsScheduleReducer } from './fxAccumulatorsScheduleReducer';\n\nexport const fxAccumulatorsReducer = combineReducers({\n accumulators: fxAccumulatorsProductReducer,\n rfsStreams: fxAccumulatorsRfsStreams,\n schedules: fxAccumulatorsScheduleReducer,\n});\n","// this file is generated from the shared currencies tsv file, do not modify\nimport type { CurrencyPairData } from '../state/referenceData/referenceDataModel';\n\nexport const currencies: Record = {\n 'AED/CNH': {\n pair: 'AED/CNH',\n ccy1: 'AED',\n ccy2: 'CNH',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AED/HKD': {\n pair: 'AED/HKD',\n ccy1: 'AED',\n ccy2: 'HKD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AED/JPY': {\n pair: 'AED/JPY',\n ccy1: 'AED',\n ccy2: 'JPY',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AED/NOK': {\n pair: 'AED/NOK',\n ccy1: 'AED',\n ccy2: 'NOK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AED/PLN': {\n pair: 'AED/PLN',\n ccy1: 'AED',\n ccy2: 'PLN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AED/SEK': {\n pair: 'AED/SEK',\n ccy1: 'AED',\n ccy2: 'SEK',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ARS/HUF': {\n pair: 'ARS/HUF',\n ccy1: 'ARS',\n ccy2: 'HUF',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ARS/JPY': {\n pair: 'ARS/JPY',\n ccy1: 'ARS',\n ccy2: 'JPY',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/AED': {\n pair: 'AUD/AED',\n ccy1: 'AUD',\n ccy2: 'AED',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/ARS': {\n pair: 'AUD/ARS',\n ccy1: 'AUD',\n ccy2: 'ARS',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/BRL': {\n pair: 'AUD/BRL',\n ccy1: 'AUD',\n ccy2: 'BRL',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/CAD': {\n pair: 'AUD/CAD',\n ccy1: 'AUD',\n ccy2: 'CAD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'AUD/CHF': {\n pair: 'AUD/CHF',\n ccy1: 'AUD',\n ccy2: 'CHF',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'AUD/CLP': {\n pair: 'AUD/CLP',\n ccy1: 'AUD',\n ccy2: 'CLP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/CNH': {\n pair: 'AUD/CNH',\n ccy1: 'AUD',\n ccy2: 'CNH',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/CNY': {\n pair: 'AUD/CNY',\n ccy1: 'AUD',\n ccy2: 'CNY',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/COP': {\n pair: 'AUD/COP',\n ccy1: 'AUD',\n ccy2: 'COP',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/CZK': {\n pair: 'AUD/CZK',\n ccy1: 'AUD',\n ccy2: 'CZK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/DKK': {\n pair: 'AUD/DKK',\n ccy1: 'AUD',\n ccy2: 'DKK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/EGP': {\n pair: 'AUD/EGP',\n ccy1: 'AUD',\n ccy2: 'EGP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/HKD': {\n pair: 'AUD/HKD',\n ccy1: 'AUD',\n ccy2: 'HKD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/HUF': {\n pair: 'AUD/HUF',\n ccy1: 'AUD',\n ccy2: 'HUF',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/IDR': {\n pair: 'AUD/IDR',\n ccy1: 'AUD',\n ccy2: 'IDR',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/ILS': {\n pair: 'AUD/ILS',\n ccy1: 'AUD',\n ccy2: 'ILS',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/INR': {\n pair: 'AUD/INR',\n ccy1: 'AUD',\n ccy2: 'INR',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/JPY': {\n pair: 'AUD/JPY',\n ccy1: 'AUD',\n ccy2: 'JPY',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'AUD/KRW': {\n pair: 'AUD/KRW',\n ccy1: 'AUD',\n ccy2: 'KRW',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/KZT': {\n pair: 'AUD/KZT',\n ccy1: 'AUD',\n ccy2: 'KZT',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/MAD': {\n pair: 'AUD/MAD',\n ccy1: 'AUD',\n ccy2: 'MAD',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/MXN': {\n pair: 'AUD/MXN',\n ccy1: 'AUD',\n ccy2: 'MXN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/NGN': {\n pair: 'AUD/NGN',\n ccy1: 'AUD',\n ccy2: 'NGN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/NOK': {\n pair: 'AUD/NOK',\n ccy1: 'AUD',\n ccy2: 'NOK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'AUD/NZD': {\n pair: 'AUD/NZD',\n ccy1: 'AUD',\n ccy2: 'NZD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'AUD/PEN': {\n pair: 'AUD/PEN',\n ccy1: 'AUD',\n ccy2: 'PEN',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/PHP': {\n pair: 'AUD/PHP',\n ccy1: 'AUD',\n ccy2: 'PHP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/PLN': {\n pair: 'AUD/PLN',\n ccy1: 'AUD',\n ccy2: 'PLN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/RUB': {\n pair: 'AUD/RUB',\n ccy1: 'AUD',\n ccy2: 'RUB',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/SEK': {\n pair: 'AUD/SEK',\n ccy1: 'AUD',\n ccy2: 'SEK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'AUD/SGD': {\n pair: 'AUD/SGD',\n ccy1: 'AUD',\n ccy2: 'SGD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'AUD/THB': {\n pair: 'AUD/THB',\n ccy1: 'AUD',\n ccy2: 'THB',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/TRY': {\n pair: 'AUD/TRY',\n ccy1: 'AUD',\n ccy2: 'TRY',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/TWD': {\n pair: 'AUD/TWD',\n ccy1: 'AUD',\n ccy2: 'TWD',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/UAH': {\n pair: 'AUD/UAH',\n ccy1: 'AUD',\n ccy2: 'UAH',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/USD': {\n pair: 'AUD/USD',\n ccy1: 'AUD',\n ccy2: 'USD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: true,\n isOptionCurrency: true\n },\n 'AUD/VND': {\n pair: 'AUD/VND',\n ccy1: 'AUD',\n ccy2: 'VND',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/ZAR': {\n pair: 'AUD/ZAR',\n ccy1: 'AUD',\n ccy2: 'ZAR',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'BGN/PLN': {\n pair: 'BGN/PLN',\n ccy1: 'BGN',\n ccy2: 'PLN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'BGN/RON': {\n pair: 'BGN/RON',\n ccy1: 'BGN',\n ccy2: 'RON',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'BRL/CLP': {\n pair: 'BRL/CLP',\n ccy1: 'BRL',\n ccy2: 'CLP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'BRL/DKK': {\n pair: 'BRL/DKK',\n ccy1: 'BRL',\n ccy2: 'DKK',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'BRL/JPY': {\n pair: 'BRL/JPY',\n ccy1: 'BRL',\n ccy2: 'JPY',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'BRL/MXN': {\n pair: 'BRL/MXN',\n ccy1: 'BRL',\n ccy2: 'MXN',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/AED': {\n pair: 'CAD/AED',\n ccy1: 'CAD',\n ccy2: 'AED',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/ARS': {\n pair: 'CAD/ARS',\n ccy1: 'CAD',\n ccy2: 'ARS',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/BGN': {\n pair: 'CAD/BGN',\n ccy1: 'CAD',\n ccy2: 'BGN',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/BHD': {\n pair: 'CAD/BHD',\n ccy1: 'CAD',\n ccy2: 'BHD',\n precision: 6,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/BRL': {\n pair: 'CAD/BRL',\n ccy1: 'CAD',\n ccy2: 'BRL',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/CHF': {\n pair: 'CAD/CHF',\n ccy1: 'CAD',\n ccy2: 'CHF',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'CAD/CLP': {\n pair: 'CAD/CLP',\n ccy1: 'CAD',\n ccy2: 'CLP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/CNH': {\n pair: 'CAD/CNH',\n ccy1: 'CAD',\n ccy2: 'CNH',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/CNY': {\n pair: 'CAD/CNY',\n ccy1: 'CAD',\n ccy2: 'CNY',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/COP': {\n pair: 'CAD/COP',\n ccy1: 'CAD',\n ccy2: 'COP',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/CZK': {\n pair: 'CAD/CZK',\n ccy1: 'CAD',\n ccy2: 'CZK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/DKK': {\n pair: 'CAD/DKK',\n ccy1: 'CAD',\n ccy2: 'DKK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/EGP': {\n pair: 'CAD/EGP',\n ccy1: 'CAD',\n ccy2: 'EGP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/HKD': {\n pair: 'CAD/HKD',\n ccy1: 'CAD',\n ccy2: 'HKD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/HUF': {\n pair: 'CAD/HUF',\n ccy1: 'CAD',\n ccy2: 'HUF',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/IDR': {\n pair: 'CAD/IDR',\n ccy1: 'CAD',\n ccy2: 'IDR',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/ILS': {\n pair: 'CAD/ILS',\n ccy1: 'CAD',\n ccy2: 'ILS',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/INR': {\n pair: 'CAD/INR',\n ccy1: 'CAD',\n ccy2: 'INR',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/JPY': {\n pair: 'CAD/JPY',\n ccy1: 'CAD',\n ccy2: 'JPY',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'CAD/KRW': {\n pair: 'CAD/KRW',\n ccy1: 'CAD',\n ccy2: 'KRW',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/KWD': {\n pair: 'CAD/KWD',\n ccy1: 'CAD',\n ccy2: 'KWD',\n precision: 6,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/KZT': {\n pair: 'CAD/KZT',\n ccy1: 'CAD',\n ccy2: 'KZT',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/MXN': {\n pair: 'CAD/MXN',\n ccy1: 'CAD',\n ccy2: 'MXN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/NGN': {\n pair: 'CAD/NGN',\n ccy1: 'CAD',\n ccy2: 'NGN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/NOK': {\n pair: 'CAD/NOK',\n ccy1: 'CAD',\n ccy2: 'NOK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'CAD/PEN': {\n pair: 'CAD/PEN',\n ccy1: 'CAD',\n ccy2: 'PEN',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/PHP': {\n pair: 'CAD/PHP',\n ccy1: 'CAD',\n ccy2: 'PHP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/PLN': {\n pair: 'CAD/PLN',\n ccy1: 'CAD',\n ccy2: 'PLN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/QAR': {\n pair: 'CAD/QAR',\n ccy1: 'CAD',\n ccy2: 'QAR',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/RON': {\n pair: 'CAD/RON',\n ccy1: 'CAD',\n ccy2: 'RON',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/RUB': {\n pair: 'CAD/RUB',\n ccy1: 'CAD',\n ccy2: 'RUB',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/SAR': {\n pair: 'CAD/SAR',\n ccy1: 'CAD',\n ccy2: 'SAR',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/SEK': {\n pair: 'CAD/SEK',\n ccy1: 'CAD',\n ccy2: 'SEK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'CAD/SGD': {\n pair: 'CAD/SGD',\n ccy1: 'CAD',\n ccy2: 'SGD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/THB': {\n pair: 'CAD/THB',\n ccy1: 'CAD',\n ccy2: 'THB',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/TRY': {\n pair: 'CAD/TRY',\n ccy1: 'CAD',\n ccy2: 'TRY',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/TWD': {\n pair: 'CAD/TWD',\n ccy1: 'CAD',\n ccy2: 'TWD',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/UAH': {\n pair: 'CAD/UAH',\n ccy1: 'CAD',\n ccy2: 'UAH',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/VND': {\n pair: 'CAD/VND',\n ccy1: 'CAD',\n ccy2: 'VND',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/ZAR': {\n pair: 'CAD/ZAR',\n ccy1: 'CAD',\n ccy2: 'ZAR',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/AED': {\n pair: 'CHF/AED',\n ccy1: 'CHF',\n ccy2: 'AED',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/ARS': {\n pair: 'CHF/ARS',\n ccy1: 'CHF',\n ccy2: 'ARS',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/BGN': {\n pair: 'CHF/BGN',\n ccy1: 'CHF',\n ccy2: 'BGN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/BRL': {\n pair: 'CHF/BRL',\n ccy1: 'CHF',\n ccy2: 'BRL',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/CLP': {\n pair: 'CHF/CLP',\n ccy1: 'CHF',\n ccy2: 'CLP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/CNH': {\n pair: 'CHF/CNH',\n ccy1: 'CHF',\n ccy2: 'CNH',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/CNY': {\n pair: 'CHF/CNY',\n ccy1: 'CHF',\n ccy2: 'CNY',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/COP': {\n pair: 'CHF/COP',\n ccy1: 'CHF',\n ccy2: 'COP',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/CZK': {\n pair: 'CHF/CZK',\n ccy1: 'CHF',\n ccy2: 'CZK',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/DKK': {\n pair: 'CHF/DKK',\n ccy1: 'CHF',\n ccy2: 'DKK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/EGP': {\n pair: 'CHF/EGP',\n ccy1: 'CHF',\n ccy2: 'EGP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/GHS': {\n pair: 'CHF/GHS',\n ccy1: 'CHF',\n ccy2: 'GHS',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/HKD': {\n pair: 'CHF/HKD',\n ccy1: 'CHF',\n ccy2: 'HKD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/HRK': {\n pair: 'CHF/HRK',\n ccy1: 'CHF',\n ccy2: 'HRK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/HUF': {\n pair: 'CHF/HUF',\n ccy1: 'CHF',\n ccy2: 'HUF',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/IDR': {\n pair: 'CHF/IDR',\n ccy1: 'CHF',\n ccy2: 'IDR',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/ILS': {\n pair: 'CHF/ILS',\n ccy1: 'CHF',\n ccy2: 'ILS',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/INR': {\n pair: 'CHF/INR',\n ccy1: 'CHF',\n ccy2: 'INR',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/JPY': {\n pair: 'CHF/JPY',\n ccy1: 'CHF',\n ccy2: 'JPY',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'CHF/KES': {\n pair: 'CHF/KES',\n ccy1: 'CHF',\n ccy2: 'KES',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/KRW': {\n pair: 'CHF/KRW',\n ccy1: 'CHF',\n ccy2: 'KRW',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/KWD': {\n pair: 'CHF/KWD',\n ccy1: 'CHF',\n ccy2: 'KWD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/KZT': {\n pair: 'CHF/KZT',\n ccy1: 'CHF',\n ccy2: 'KZT',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/MAD': {\n pair: 'CHF/MAD',\n ccy1: 'CHF',\n ccy2: 'MAD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/MXN': {\n pair: 'CHF/MXN',\n ccy1: 'CHF',\n ccy2: 'MXN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/NGN': {\n pair: 'CHF/NGN',\n ccy1: 'CHF',\n ccy2: 'NGN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/NOK': {\n pair: 'CHF/NOK',\n ccy1: 'CHF',\n ccy2: 'NOK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'CHF/PEN': {\n pair: 'CHF/PEN',\n ccy1: 'CHF',\n ccy2: 'PEN',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/PHP': {\n pair: 'CHF/PHP',\n ccy1: 'CHF',\n ccy2: 'PHP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/PLN': {\n pair: 'CHF/PLN',\n ccy1: 'CHF',\n ccy2: 'PLN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/QAR': {\n pair: 'CHF/QAR',\n ccy1: 'CHF',\n ccy2: 'QAR',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/RON': {\n pair: 'CHF/RON',\n ccy1: 'CHF',\n ccy2: 'RON',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/RSD': {\n pair: 'CHF/RSD',\n ccy1: 'CHF',\n ccy2: 'RSD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/RUB': {\n pair: 'CHF/RUB',\n ccy1: 'CHF',\n ccy2: 'RUB',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/SEK': {\n pair: 'CHF/SEK',\n ccy1: 'CHF',\n ccy2: 'SEK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'CHF/SGD': {\n pair: 'CHF/SGD',\n ccy1: 'CHF',\n ccy2: 'SGD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/THB': {\n pair: 'CHF/THB',\n ccy1: 'CHF',\n ccy2: 'THB',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/TRY': {\n pair: 'CHF/TRY',\n ccy1: 'CHF',\n ccy2: 'TRY',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/TWD': {\n pair: 'CHF/TWD',\n ccy1: 'CHF',\n ccy2: 'TWD',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/UAH': {\n pair: 'CHF/UAH',\n ccy1: 'CHF',\n ccy2: 'UAH',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/VND': {\n pair: 'CHF/VND',\n ccy1: 'CHF',\n ccy2: 'VND',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/ZAR': {\n pair: 'CHF/ZAR',\n ccy1: 'CHF',\n ccy2: 'ZAR',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/BRL': {\n pair: 'CNH/BRL',\n ccy1: 'CNH',\n ccy2: 'BRL',\n precision: 4,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/CZK': {\n pair: 'CNH/CZK',\n ccy1: 'CNH',\n ccy2: 'CZK',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/HKD': {\n pair: 'CNH/HKD',\n ccy1: 'CNH',\n ccy2: 'HKD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/HUF': {\n pair: 'CNH/HUF',\n ccy1: 'CNH',\n ccy2: 'HUF',\n precision: 2,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/IDR': {\n pair: 'CNH/IDR',\n ccy1: 'CNH',\n ccy2: 'IDR',\n precision: 2,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/INR': {\n pair: 'CNH/INR',\n ccy1: 'CNH',\n ccy2: 'INR',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/JPY': {\n pair: 'CNH/JPY',\n ccy1: 'CNH',\n ccy2: 'JPY',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/KRW': {\n pair: 'CNH/KRW',\n ccy1: 'CNH',\n ccy2: 'KRW',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/MXN': {\n pair: 'CNH/MXN',\n ccy1: 'CNH',\n ccy2: 'MXN',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: true,\n isOptionCurrency: false\n },\n 'CNH/PHP': {\n pair: 'CNH/PHP',\n ccy1: 'CNH',\n ccy2: 'PHP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/RUB': {\n pair: 'CNH/RUB',\n ccy1: 'CNH',\n ccy2: 'RUB',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/TWD': {\n pair: 'CNH/TWD',\n ccy1: 'CNH',\n ccy2: 'TWD',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNY/JPY': {\n pair: 'CNY/JPY',\n ccy1: 'CNY',\n ccy2: 'JPY',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CZK/HRK': {\n pair: 'CZK/HRK',\n ccy1: 'CZK',\n ccy2: 'HRK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CZK/HUF': {\n pair: 'CZK/HUF',\n ccy1: 'CZK',\n ccy2: 'HUF',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CZK/JPY': {\n pair: 'CZK/JPY',\n ccy1: 'CZK',\n ccy2: 'JPY',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CZK/PLN': {\n pair: 'CZK/PLN',\n ccy1: 'CZK',\n ccy2: 'PLN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CZK/RON': {\n pair: 'CZK/RON',\n ccy1: 'CZK',\n ccy2: 'RON',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CZK/SEK': {\n pair: 'CZK/SEK',\n ccy1: 'CZK',\n ccy2: 'SEK',\n precision: 6,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CZK/SGD': {\n pair: 'CZK/SGD',\n ccy1: 'CZK',\n ccy2: 'SGD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CZK/ZAR': {\n pair: 'CZK/ZAR',\n ccy1: 'CZK',\n ccy2: 'ZAR',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/ARS': {\n pair: 'DKK/ARS',\n ccy1: 'DKK',\n ccy2: 'ARS',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/CLP': {\n pair: 'DKK/CLP',\n ccy1: 'DKK',\n ccy2: 'CLP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/CNH': {\n pair: 'DKK/CNH',\n ccy1: 'DKK',\n ccy2: 'CNH',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/CNY': {\n pair: 'DKK/CNY',\n ccy1: 'DKK',\n ccy2: 'CNY',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/COP': {\n pair: 'DKK/COP',\n ccy1: 'DKK',\n ccy2: 'COP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/CZK': {\n pair: 'DKK/CZK',\n ccy1: 'DKK',\n ccy2: 'CZK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/EGP': {\n pair: 'DKK/EGP',\n ccy1: 'DKK',\n ccy2: 'EGP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/HKD': {\n pair: 'DKK/HKD',\n ccy1: 'DKK',\n ccy2: 'HKD',\n precision: 6,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/HUF': {\n pair: 'DKK/HUF',\n ccy1: 'DKK',\n ccy2: 'HUF',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/IDR': {\n pair: 'DKK/IDR',\n ccy1: 'DKK',\n ccy2: 'IDR',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/INR': {\n pair: 'DKK/INR',\n ccy1: 'DKK',\n ccy2: 'INR',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/JPY': {\n pair: 'DKK/JPY',\n ccy1: 'DKK',\n ccy2: 'JPY',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/KRW': {\n pair: 'DKK/KRW',\n ccy1: 'DKK',\n ccy2: 'KRW',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/KZT': {\n pair: 'DKK/KZT',\n ccy1: 'DKK',\n ccy2: 'KZT',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/NGN': {\n pair: 'DKK/NGN',\n ccy1: 'DKK',\n ccy2: 'NGN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/PEN': {\n pair: 'DKK/PEN',\n ccy1: 'DKK',\n ccy2: 'PEN',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/PHP': {\n pair: 'DKK/PHP',\n ccy1: 'DKK',\n ccy2: 'PHP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/RON': {\n pair: 'DKK/RON',\n ccy1: 'DKK',\n ccy2: 'RON',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/RUB': {\n pair: 'DKK/RUB',\n ccy1: 'DKK',\n ccy2: 'RUB',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/SEK': {\n pair: 'DKK/SEK',\n ccy1: 'DKK',\n ccy2: 'SEK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/SGD': {\n pair: 'DKK/SGD',\n ccy1: 'DKK',\n ccy2: 'SGD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/TRY': {\n pair: 'DKK/TRY',\n ccy1: 'DKK',\n ccy2: 'TRY',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/TWD': {\n pair: 'DKK/TWD',\n ccy1: 'DKK',\n ccy2: 'TWD',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/UAH': {\n pair: 'DKK/UAH',\n ccy1: 'DKK',\n ccy2: 'UAH',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/VND': {\n pair: 'DKK/VND',\n ccy1: 'DKK',\n ccy2: 'VND',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/AED': {\n pair: 'EUR/AED',\n ccy1: 'EUR',\n ccy2: 'AED',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/ARS': {\n pair: 'EUR/ARS',\n ccy1: 'EUR',\n ccy2: 'ARS',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/AUD': {\n pair: 'EUR/AUD',\n ccy1: 'EUR',\n ccy2: 'AUD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'EUR/BGN': {\n pair: 'EUR/BGN',\n ccy1: 'EUR',\n ccy2: 'BGN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/BHD': {\n pair: 'EUR/BHD',\n ccy1: 'EUR',\n ccy2: 'BHD',\n precision: 6,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/BRL': {\n pair: 'EUR/BRL',\n ccy1: 'EUR',\n ccy2: 'BRL',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/CAD': {\n pair: 'EUR/CAD',\n ccy1: 'EUR',\n ccy2: 'CAD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: true,\n isOptionCurrency: true\n },\n 'EUR/CHF': {\n pair: 'EUR/CHF',\n ccy1: 'EUR',\n ccy2: 'CHF',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: true,\n isOptionCurrency: true\n },\n 'EUR/CLP': {\n pair: 'EUR/CLP',\n ccy1: 'EUR',\n ccy2: 'CLP',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/CNH': {\n pair: 'EUR/CNH',\n ccy1: 'EUR',\n ccy2: 'CNH',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'EUR/CNY': {\n pair: 'EUR/CNY',\n ccy1: 'EUR',\n ccy2: 'CNY',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/COP': {\n pair: 'EUR/COP',\n ccy1: 'EUR',\n ccy2: 'COP',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/CZK': {\n pair: 'EUR/CZK',\n ccy1: 'EUR',\n ccy2: 'CZK',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'EUR/DKK': {\n pair: 'EUR/DKK',\n ccy1: 'EUR',\n ccy2: 'DKK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/DZD': {\n pair: 'EUR/DZD',\n ccy1: 'EUR',\n ccy2: 'DZD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/EGP': {\n pair: 'EUR/EGP',\n ccy1: 'EUR',\n ccy2: 'EGP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/GBP': {\n pair: 'EUR/GBP',\n ccy1: 'EUR',\n ccy2: 'GBP',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: true,\n isOptionCurrency: true\n },\n 'EUR/GHS': {\n pair: 'EUR/GHS',\n ccy1: 'EUR',\n ccy2: 'GHS',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/HKD': {\n pair: 'EUR/HKD',\n ccy1: 'EUR',\n ccy2: 'HKD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'EUR/HRK': {\n pair: 'EUR/HRK',\n ccy1: 'EUR',\n ccy2: 'HRK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/HUF': {\n pair: 'EUR/HUF',\n ccy1: 'EUR',\n ccy2: 'HUF',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'EUR/IDR': {\n pair: 'EUR/IDR',\n ccy1: 'EUR',\n ccy2: 'IDR',\n precision: 1,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/ILS': {\n pair: 'EUR/ILS',\n ccy1: 'EUR',\n ccy2: 'ILS',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/INR': {\n pair: 'EUR/INR',\n ccy1: 'EUR',\n ccy2: 'INR',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/ISK': {\n pair: 'EUR/ISK',\n ccy1: 'EUR',\n ccy2: 'ISK',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/JOD': {\n pair: 'EUR/JOD',\n ccy1: 'EUR',\n ccy2: 'JOD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/JPY': {\n pair: 'EUR/JPY',\n ccy1: 'EUR',\n ccy2: 'JPY',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: true,\n isOptionCurrency: true\n },\n 'EUR/KES': {\n pair: 'EUR/KES',\n ccy1: 'EUR',\n ccy2: 'KES',\n precision: 2,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/KRW': {\n pair: 'EUR/KRW',\n ccy1: 'EUR',\n ccy2: 'KRW',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/KWD': {\n pair: 'EUR/KWD',\n ccy1: 'EUR',\n ccy2: 'KWD',\n precision: 6,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/KZT': {\n pair: 'EUR/KZT',\n ccy1: 'EUR',\n ccy2: 'KZT',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/MAD': {\n pair: 'EUR/MAD',\n ccy1: 'EUR',\n ccy2: 'MAD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/MUR': {\n pair: 'EUR/MUR',\n ccy1: 'EUR',\n ccy2: 'MUR',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/MXN': {\n pair: 'EUR/MXN',\n ccy1: 'EUR',\n ccy2: 'MXN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'EUR/MZN': {\n pair: 'EUR/MZN',\n ccy1: 'EUR',\n ccy2: 'MZN',\n precision: 2,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'EUR/NGN': {\n pair: 'EUR/NGN',\n ccy1: 'EUR',\n ccy2: 'NGN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/NOK': {\n pair: 'EUR/NOK',\n ccy1: 'EUR',\n ccy2: 'NOK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'EUR/NZD': {\n pair: 'EUR/NZD',\n ccy1: 'EUR',\n ccy2: 'NZD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'EUR/OMR': {\n pair: 'EUR/OMR',\n ccy1: 'EUR',\n ccy2: 'OMR',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/PEN': {\n pair: 'EUR/PEN',\n ccy1: 'EUR',\n ccy2: 'PEN',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/PHP': {\n pair: 'EUR/PHP',\n ccy1: 'EUR',\n ccy2: 'PHP',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/PLN': {\n pair: 'EUR/PLN',\n ccy1: 'EUR',\n ccy2: 'PLN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'EUR/QAR': {\n pair: 'EUR/QAR',\n ccy1: 'EUR',\n ccy2: 'QAR',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/RON': {\n pair: 'EUR/RON',\n ccy1: 'EUR',\n ccy2: 'RON',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'EUR/RSD': {\n pair: 'EUR/RSD',\n ccy1: 'EUR',\n ccy2: 'RSD',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/RUB': {\n pair: 'EUR/RUB',\n ccy1: 'EUR',\n ccy2: 'RUB',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'EUR/SAR': {\n pair: 'EUR/SAR',\n ccy1: 'EUR',\n ccy2: 'SAR',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/SEK': {\n pair: 'EUR/SEK',\n ccy1: 'EUR',\n ccy2: 'SEK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: true,\n isOptionCurrency: true\n },\n 'EUR/SGD': {\n pair: 'EUR/SGD',\n ccy1: 'EUR',\n ccy2: 'SGD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'EUR/THB': {\n pair: 'EUR/THB',\n ccy1: 'EUR',\n ccy2: 'THB',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/TND': {\n pair: 'EUR/TND',\n ccy1: 'EUR',\n ccy2: 'TND',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/TRY': {\n pair: 'EUR/TRY',\n ccy1: 'EUR',\n ccy2: 'TRY',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'EUR/TWD': {\n pair: 'EUR/TWD',\n ccy1: 'EUR',\n ccy2: 'TWD',\n precision: 4,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/UAH': {\n pair: 'EUR/UAH',\n ccy1: 'EUR',\n ccy2: 'UAH',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/USD': {\n pair: 'EUR/USD',\n ccy1: 'EUR',\n ccy2: 'USD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: true,\n isOptionCurrency: true\n },\n 'EUR/VND': {\n pair: 'EUR/VND',\n ccy1: 'EUR',\n ccy2: 'VND',\n precision: 1,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/XAF': {\n pair: 'EUR/XAF',\n ccy1: 'EUR',\n ccy2: 'XAF',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/XOF': {\n pair: 'EUR/XOF',\n ccy1: 'EUR',\n ccy2: 'XOF',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EUR/ZAR': {\n pair: 'EUR/ZAR',\n ccy1: 'EUR',\n ccy2: 'ZAR',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'GBP/AED': {\n pair: 'GBP/AED',\n ccy1: 'GBP',\n ccy2: 'AED',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/ARS': {\n pair: 'GBP/ARS',\n ccy1: 'GBP',\n ccy2: 'ARS',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/AUD': {\n pair: 'GBP/AUD',\n ccy1: 'GBP',\n ccy2: 'AUD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'GBP/BGN': {\n pair: 'GBP/BGN',\n ccy1: 'GBP',\n ccy2: 'BGN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/BRL': {\n pair: 'GBP/BRL',\n ccy1: 'GBP',\n ccy2: 'BRL',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/CAD': {\n pair: 'GBP/CAD',\n ccy1: 'GBP',\n ccy2: 'CAD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'GBP/CHF': {\n pair: 'GBP/CHF',\n ccy1: 'GBP',\n ccy2: 'CHF',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'GBP/CLP': {\n pair: 'GBP/CLP',\n ccy1: 'GBP',\n ccy2: 'CLP',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/CNH': {\n pair: 'GBP/CNH',\n ccy1: 'GBP',\n ccy2: 'CNH',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/CNY': {\n pair: 'GBP/CNY',\n ccy1: 'GBP',\n ccy2: 'CNY',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/COP': {\n pair: 'GBP/COP',\n ccy1: 'GBP',\n ccy2: 'COP',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/CZK': {\n pair: 'GBP/CZK',\n ccy1: 'GBP',\n ccy2: 'CZK',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/DKK': {\n pair: 'GBP/DKK',\n ccy1: 'GBP',\n ccy2: 'DKK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/EGP': {\n pair: 'GBP/EGP',\n ccy1: 'GBP',\n ccy2: 'EGP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/GHS': {\n pair: 'GBP/GHS',\n ccy1: 'GBP',\n ccy2: 'GHS',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/HKD': {\n pair: 'GBP/HKD',\n ccy1: 'GBP',\n ccy2: 'HKD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/HRK': {\n pair: 'GBP/HRK',\n ccy1: 'GBP',\n ccy2: 'HRK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/HUF': {\n pair: 'GBP/HUF',\n ccy1: 'GBP',\n ccy2: 'HUF',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/IDR': {\n pair: 'GBP/IDR',\n ccy1: 'GBP',\n ccy2: 'IDR',\n precision: 1,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/ILS': {\n pair: 'GBP/ILS',\n ccy1: 'GBP',\n ccy2: 'ILS',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/INR': {\n pair: 'GBP/INR',\n ccy1: 'GBP',\n ccy2: 'INR',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/JPY': {\n pair: 'GBP/JPY',\n ccy1: 'GBP',\n ccy2: 'JPY',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'GBP/KES': {\n pair: 'GBP/KES',\n ccy1: 'GBP',\n ccy2: 'KES',\n precision: 2,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/KRW': {\n pair: 'GBP/KRW',\n ccy1: 'GBP',\n ccy2: 'KRW',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/KWD': {\n pair: 'GBP/KWD',\n ccy1: 'GBP',\n ccy2: 'KWD',\n precision: 6,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/KZT': {\n pair: 'GBP/KZT',\n ccy1: 'GBP',\n ccy2: 'KZT',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/MAD': {\n pair: 'GBP/MAD',\n ccy1: 'GBP',\n ccy2: 'MAD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/MXN': {\n pair: 'GBP/MXN',\n ccy1: 'GBP',\n ccy2: 'MXN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/NGN': {\n pair: 'GBP/NGN',\n ccy1: 'GBP',\n ccy2: 'NGN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/NOK': {\n pair: 'GBP/NOK',\n ccy1: 'GBP',\n ccy2: 'NOK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'GBP/NZD': {\n pair: 'GBP/NZD',\n ccy1: 'GBP',\n ccy2: 'NZD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'GBP/PEN': {\n pair: 'GBP/PEN',\n ccy1: 'GBP',\n ccy2: 'PEN',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/PHP': {\n pair: 'GBP/PHP',\n ccy1: 'GBP',\n ccy2: 'PHP',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/PLN': {\n pair: 'GBP/PLN',\n ccy1: 'GBP',\n ccy2: 'PLN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/QAR': {\n pair: 'GBP/QAR',\n ccy1: 'GBP',\n ccy2: 'QAR',\n precision: 4,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/RON': {\n pair: 'GBP/RON',\n ccy1: 'GBP',\n ccy2: 'RON',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/RUB': {\n pair: 'GBP/RUB',\n ccy1: 'GBP',\n ccy2: 'RUB',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/SAR': {\n pair: 'GBP/SAR',\n ccy1: 'GBP',\n ccy2: 'SAR',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/SEK': {\n pair: 'GBP/SEK',\n ccy1: 'GBP',\n ccy2: 'SEK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'GBP/SGD': {\n pair: 'GBP/SGD',\n ccy1: 'GBP',\n ccy2: 'SGD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'GBP/THB': {\n pair: 'GBP/THB',\n ccy1: 'GBP',\n ccy2: 'THB',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/TND': {\n pair: 'GBP/TND',\n ccy1: 'GBP',\n ccy2: 'TND',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/TRY': {\n pair: 'GBP/TRY',\n ccy1: 'GBP',\n ccy2: 'TRY',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/TWD': {\n pair: 'GBP/TWD',\n ccy1: 'GBP',\n ccy2: 'TWD',\n precision: 4,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/UAH': {\n pair: 'GBP/UAH',\n ccy1: 'GBP',\n ccy2: 'UAH',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/USD': {\n pair: 'GBP/USD',\n ccy1: 'GBP',\n ccy2: 'USD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: true,\n isOptionCurrency: true\n },\n 'GBP/VND': {\n pair: 'GBP/VND',\n ccy1: 'GBP',\n ccy2: 'VND',\n precision: 1,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/ZAR': {\n pair: 'GBP/ZAR',\n ccy1: 'GBP',\n ccy2: 'ZAR',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HKD/CNY': {\n pair: 'HKD/CNY',\n ccy1: 'HKD',\n ccy2: 'CNY',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HKD/CZK': {\n pair: 'HKD/CZK',\n ccy1: 'HKD',\n ccy2: 'CZK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HKD/DKK': {\n pair: 'HKD/DKK',\n ccy1: 'HKD',\n ccy2: 'DKK',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HKD/HUF': {\n pair: 'HKD/HUF',\n ccy1: 'HKD',\n ccy2: 'HUF',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HKD/INR': {\n pair: 'HKD/INR',\n ccy1: 'HKD',\n ccy2: 'INR',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HKD/JPY': {\n pair: 'HKD/JPY',\n ccy1: 'HKD',\n ccy2: 'JPY',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HKD/KRW': {\n pair: 'HKD/KRW',\n ccy1: 'HKD',\n ccy2: 'KRW',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HKD/KWD': {\n pair: 'HKD/KWD',\n ccy1: 'HKD',\n ccy2: 'KWD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HKD/NOK': {\n pair: 'HKD/NOK',\n ccy1: 'HKD',\n ccy2: 'NOK',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HKD/SEK': {\n pair: 'HKD/SEK',\n ccy1: 'HKD',\n ccy2: 'SEK',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HKD/THB': {\n pair: 'HKD/THB',\n ccy1: 'HKD',\n ccy2: 'THB',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HKD/TWD': {\n pair: 'HKD/TWD',\n ccy1: 'HKD',\n ccy2: 'TWD',\n precision: 4,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/BRL': {\n pair: 'HUF/BRL',\n ccy1: 'HUF',\n ccy2: 'BRL',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/CLP': {\n pair: 'HUF/CLP',\n ccy1: 'HUF',\n ccy2: 'CLP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/CNY': {\n pair: 'HUF/CNY',\n ccy1: 'HUF',\n ccy2: 'CNY',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/COP': {\n pair: 'HUF/COP',\n ccy1: 'HUF',\n ccy2: 'COP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/EGP': {\n pair: 'HUF/EGP',\n ccy1: 'HUF',\n ccy2: 'EGP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/HRK': {\n pair: 'HUF/HRK',\n ccy1: 'HUF',\n ccy2: 'HRK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/IDR': {\n pair: 'HUF/IDR',\n ccy1: 'HUF',\n ccy2: 'IDR',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/INR': {\n pair: 'HUF/INR',\n ccy1: 'HUF',\n ccy2: 'INR',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/JPY': {\n pair: 'HUF/JPY',\n ccy1: 'HUF',\n ccy2: 'JPY',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/KRW': {\n pair: 'HUF/KRW',\n ccy1: 'HUF',\n ccy2: 'KRW',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/KZT': {\n pair: 'HUF/KZT',\n ccy1: 'HUF',\n ccy2: 'KZT',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/NGN': {\n pair: 'HUF/NGN',\n ccy1: 'HUF',\n ccy2: 'NGN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/PEN': {\n pair: 'HUF/PEN',\n ccy1: 'HUF',\n ccy2: 'PEN',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/PHP': {\n pair: 'HUF/PHP',\n ccy1: 'HUF',\n ccy2: 'PHP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/RON': {\n pair: 'HUF/RON',\n ccy1: 'HUF',\n ccy2: 'RON',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/TWD': {\n pair: 'HUF/TWD',\n ccy1: 'HUF',\n ccy2: 'TWD',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/UAH': {\n pair: 'HUF/UAH',\n ccy1: 'HUF',\n ccy2: 'UAH',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/VND': {\n pair: 'HUF/VND',\n ccy1: 'HUF',\n ccy2: 'VND',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/ZAR': {\n pair: 'HUF/ZAR',\n ccy1: 'HUF',\n ccy2: 'ZAR',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ILS/HUF': {\n pair: 'ILS/HUF',\n ccy1: 'ILS',\n ccy2: 'HUF',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ILS/JPY': {\n pair: 'ILS/JPY',\n ccy1: 'ILS',\n ccy2: 'JPY',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'INR/JPY': {\n pair: 'INR/JPY',\n ccy1: 'INR',\n ccy2: 'JPY',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/BGN': {\n pair: 'JPY/BGN',\n ccy1: 'JPY',\n ccy2: 'BGN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/CLP': {\n pair: 'JPY/CLP',\n ccy1: 'JPY',\n ccy2: 'CLP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/COP': {\n pair: 'JPY/COP',\n ccy1: 'JPY',\n ccy2: 'COP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/EGP': {\n pair: 'JPY/EGP',\n ccy1: 'JPY',\n ccy2: 'EGP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/GHS': {\n pair: 'JPY/GHS',\n ccy1: 'JPY',\n ccy2: 'GHS',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/HRK': {\n pair: 'JPY/HRK',\n ccy1: 'JPY',\n ccy2: 'HRK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/IDR': {\n pair: 'JPY/IDR',\n ccy1: 'JPY',\n ccy2: 'IDR',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/INR': {\n pair: 'JPY/INR',\n ccy1: 'JPY',\n ccy2: 'INR',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/KES': {\n pair: 'JPY/KES',\n ccy1: 'JPY',\n ccy2: 'KES',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/KRW': {\n pair: 'JPY/KRW',\n ccy1: 'JPY',\n ccy2: 'KRW',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/KWD': {\n pair: 'JPY/KWD',\n ccy1: 'JPY',\n ccy2: 'KWD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/KZT': {\n pair: 'JPY/KZT',\n ccy1: 'JPY',\n ccy2: 'KZT',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/MAD': {\n pair: 'JPY/MAD',\n ccy1: 'JPY',\n ccy2: 'MAD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/NGN': {\n pair: 'JPY/NGN',\n ccy1: 'JPY',\n ccy2: 'NGN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/QAR': {\n pair: 'JPY/QAR',\n ccy1: 'JPY',\n ccy2: 'QAR',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/RON': {\n pair: 'JPY/RON',\n ccy1: 'JPY',\n ccy2: 'RON',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/RSD': {\n pair: 'JPY/RSD',\n ccy1: 'JPY',\n ccy2: 'RSD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/SAR': {\n pair: 'JPY/SAR',\n ccy1: 'JPY',\n ccy2: 'SAR',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/TND': {\n pair: 'JPY/TND',\n ccy1: 'JPY',\n ccy2: 'TND',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/UAH': {\n pair: 'JPY/UAH',\n ccy1: 'JPY',\n ccy2: 'UAH',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/VND': {\n pair: 'JPY/VND',\n ccy1: 'JPY',\n ccy2: 'VND',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'MAD/SEK': {\n pair: 'MAD/SEK',\n ccy1: 'MAD',\n ccy2: 'SEK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'MXN/HKD': {\n pair: 'MXN/HKD',\n ccy1: 'MXN',\n ccy2: 'HKD',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'MXN/JPY': {\n pair: 'MXN/JPY',\n ccy1: 'MXN',\n ccy2: 'JPY',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/ARS': {\n pair: 'NOK/ARS',\n ccy1: 'NOK',\n ccy2: 'ARS',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/BRL': {\n pair: 'NOK/BRL',\n ccy1: 'NOK',\n ccy2: 'BRL',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/CLP': {\n pair: 'NOK/CLP',\n ccy1: 'NOK',\n ccy2: 'CLP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/CNH': {\n pair: 'NOK/CNH',\n ccy1: 'NOK',\n ccy2: 'CNH',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/CNY': {\n pair: 'NOK/CNY',\n ccy1: 'NOK',\n ccy2: 'CNY',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/COP': {\n pair: 'NOK/COP',\n ccy1: 'NOK',\n ccy2: 'COP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/CZK': {\n pair: 'NOK/CZK',\n ccy1: 'NOK',\n ccy2: 'CZK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/DKK': {\n pair: 'NOK/DKK',\n ccy1: 'NOK',\n ccy2: 'DKK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/EGP': {\n pair: 'NOK/EGP',\n ccy1: 'NOK',\n ccy2: 'EGP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/HKD': {\n pair: 'NOK/HKD',\n ccy1: 'NOK',\n ccy2: 'HKD',\n precision: 6,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/HUF': {\n pair: 'NOK/HUF',\n ccy1: 'NOK',\n ccy2: 'HUF',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/IDR': {\n pair: 'NOK/IDR',\n ccy1: 'NOK',\n ccy2: 'IDR',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/INR': {\n pair: 'NOK/INR',\n ccy1: 'NOK',\n ccy2: 'INR',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/JPY': {\n pair: 'NOK/JPY',\n ccy1: 'NOK',\n ccy2: 'JPY',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'NOK/KRW': {\n pair: 'NOK/KRW',\n ccy1: 'NOK',\n ccy2: 'KRW',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/KZT': {\n pair: 'NOK/KZT',\n ccy1: 'NOK',\n ccy2: 'KZT',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/NGN': {\n pair: 'NOK/NGN',\n ccy1: 'NOK',\n ccy2: 'NGN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/PEN': {\n pair: 'NOK/PEN',\n ccy1: 'NOK',\n ccy2: 'PEN',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/PHP': {\n pair: 'NOK/PHP',\n ccy1: 'NOK',\n ccy2: 'PHP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/PLN': {\n pair: 'NOK/PLN',\n ccy1: 'NOK',\n ccy2: 'PLN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/RUB': {\n pair: 'NOK/RUB',\n ccy1: 'NOK',\n ccy2: 'RUB',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/SEK': {\n pair: 'NOK/SEK',\n ccy1: 'NOK',\n ccy2: 'SEK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'NOK/TRY': {\n pair: 'NOK/TRY',\n ccy1: 'NOK',\n ccy2: 'TRY',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/TWD': {\n pair: 'NOK/TWD',\n ccy1: 'NOK',\n ccy2: 'TWD',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/UAH': {\n pair: 'NOK/UAH',\n ccy1: 'NOK',\n ccy2: 'UAH',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/VND': {\n pair: 'NOK/VND',\n ccy1: 'NOK',\n ccy2: 'VND',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/ARS': {\n pair: 'NZD/ARS',\n ccy1: 'NZD',\n ccy2: 'ARS',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/BRL': {\n pair: 'NZD/BRL',\n ccy1: 'NZD',\n ccy2: 'BRL',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/CAD': {\n pair: 'NZD/CAD',\n ccy1: 'NZD',\n ccy2: 'CAD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'NZD/CHF': {\n pair: 'NZD/CHF',\n ccy1: 'NZD',\n ccy2: 'CHF',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'NZD/CLP': {\n pair: 'NZD/CLP',\n ccy1: 'NZD',\n ccy2: 'CLP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/CNH': {\n pair: 'NZD/CNH',\n ccy1: 'NZD',\n ccy2: 'CNH',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/CNY': {\n pair: 'NZD/CNY',\n ccy1: 'NZD',\n ccy2: 'CNY',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/COP': {\n pair: 'NZD/COP',\n ccy1: 'NZD',\n ccy2: 'COP',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/CZK': {\n pair: 'NZD/CZK',\n ccy1: 'NZD',\n ccy2: 'CZK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/DKK': {\n pair: 'NZD/DKK',\n ccy1: 'NZD',\n ccy2: 'DKK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/EGP': {\n pair: 'NZD/EGP',\n ccy1: 'NZD',\n ccy2: 'EGP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/HKD': {\n pair: 'NZD/HKD',\n ccy1: 'NZD',\n ccy2: 'HKD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/HUF': {\n pair: 'NZD/HUF',\n ccy1: 'NZD',\n ccy2: 'HUF',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/IDR': {\n pair: 'NZD/IDR',\n ccy1: 'NZD',\n ccy2: 'IDR',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/ILS': {\n pair: 'NZD/ILS',\n ccy1: 'NZD',\n ccy2: 'ILS',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/INR': {\n pair: 'NZD/INR',\n ccy1: 'NZD',\n ccy2: 'INR',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/JPY': {\n pair: 'NZD/JPY',\n ccy1: 'NZD',\n ccy2: 'JPY',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'NZD/KRW': {\n pair: 'NZD/KRW',\n ccy1: 'NZD',\n ccy2: 'KRW',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/KZT': {\n pair: 'NZD/KZT',\n ccy1: 'NZD',\n ccy2: 'KZT',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/NGN': {\n pair: 'NZD/NGN',\n ccy1: 'NZD',\n ccy2: 'NGN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/NOK': {\n pair: 'NZD/NOK',\n ccy1: 'NZD',\n ccy2: 'NOK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'NZD/PEN': {\n pair: 'NZD/PEN',\n ccy1: 'NZD',\n ccy2: 'PEN',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/PHP': {\n pair: 'NZD/PHP',\n ccy1: 'NZD',\n ccy2: 'PHP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/PLN': {\n pair: 'NZD/PLN',\n ccy1: 'NZD',\n ccy2: 'PLN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/RUB': {\n pair: 'NZD/RUB',\n ccy1: 'NZD',\n ccy2: 'RUB',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/SEK': {\n pair: 'NZD/SEK',\n ccy1: 'NZD',\n ccy2: 'SEK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'NZD/SGD': {\n pair: 'NZD/SGD',\n ccy1: 'NZD',\n ccy2: 'SGD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'NZD/TRY': {\n pair: 'NZD/TRY',\n ccy1: 'NZD',\n ccy2: 'TRY',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/TWD': {\n pair: 'NZD/TWD',\n ccy1: 'NZD',\n ccy2: 'TWD',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/UAH': {\n pair: 'NZD/UAH',\n ccy1: 'NZD',\n ccy2: 'UAH',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/USD': {\n pair: 'NZD/USD',\n ccy1: 'NZD',\n ccy2: 'USD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: true,\n isOptionCurrency: true\n },\n 'NZD/VND': {\n pair: 'NZD/VND',\n ccy1: 'NZD',\n ccy2: 'VND',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PEN/JPY': {\n pair: 'PEN/JPY',\n ccy1: 'PEN',\n ccy2: 'JPY',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PHP/JPY': {\n pair: 'PHP/JPY',\n ccy1: 'PHP',\n ccy2: 'JPY',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/CNH': {\n pair: 'PLN/CNH',\n ccy1: 'PLN',\n ccy2: 'CNH',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/CNY': {\n pair: 'PLN/CNY',\n ccy1: 'PLN',\n ccy2: 'CNY',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/DKK': {\n pair: 'PLN/DKK',\n ccy1: 'PLN',\n ccy2: 'DKK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/HKD': {\n pair: 'PLN/HKD',\n ccy1: 'PLN',\n ccy2: 'HKD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/HRK': {\n pair: 'PLN/HRK',\n ccy1: 'PLN',\n ccy2: 'HRK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/HUF': {\n pair: 'PLN/HUF',\n ccy1: 'PLN',\n ccy2: 'HUF',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/ILS': {\n pair: 'PLN/ILS',\n ccy1: 'PLN',\n ccy2: 'ILS',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/INR': {\n pair: 'PLN/INR',\n ccy1: 'PLN',\n ccy2: 'INR',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/JPY': {\n pair: 'PLN/JPY',\n ccy1: 'PLN',\n ccy2: 'JPY',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/MXN': {\n pair: 'PLN/MXN',\n ccy1: 'PLN',\n ccy2: 'MXN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/RON': {\n pair: 'PLN/RON',\n ccy1: 'PLN',\n ccy2: 'RON',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/RUB': {\n pair: 'PLN/RUB',\n ccy1: 'PLN',\n ccy2: 'RUB',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/SEK': {\n pair: 'PLN/SEK',\n ccy1: 'PLN',\n ccy2: 'SEK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/SGD': {\n pair: 'PLN/SGD',\n ccy1: 'PLN',\n ccy2: 'SGD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/UAH': {\n pair: 'PLN/UAH',\n ccy1: 'PLN',\n ccy2: 'UAH',\n precision: 4,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/ZAR': {\n pair: 'PLN/ZAR',\n ccy1: 'PLN',\n ccy2: 'ZAR',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RON/CNH': {\n pair: 'RON/CNH',\n ccy1: 'RON',\n ccy2: 'CNH',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RON/RUB': {\n pair: 'RON/RUB',\n ccy1: 'RON',\n ccy2: 'RUB',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RON/ZAR': {\n pair: 'RON/ZAR',\n ccy1: 'RON',\n ccy2: 'ZAR',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RUB/CZK': {\n pair: 'RUB/CZK',\n ccy1: 'RUB',\n ccy2: 'CZK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RUB/HKD': {\n pair: 'RUB/HKD',\n ccy1: 'RUB',\n ccy2: 'HKD',\n precision: 4,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RUB/HUF': {\n pair: 'RUB/HUF',\n ccy1: 'RUB',\n ccy2: 'HUF',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RUB/JPY': {\n pair: 'RUB/JPY',\n ccy1: 'RUB',\n ccy2: 'JPY',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RUB/KZT': {\n pair: 'RUB/KZT',\n ccy1: 'RUB',\n ccy2: 'KZT',\n precision: 4,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RUB/SEK': {\n pair: 'RUB/SEK',\n ccy1: 'RUB',\n ccy2: 'SEK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SAR/AED': {\n pair: 'SAR/AED',\n ccy1: 'SAR',\n ccy2: 'AED',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SAR/CHF': {\n pair: 'SAR/CHF',\n ccy1: 'SAR',\n ccy2: 'CHF',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SAR/CZK': {\n pair: 'SAR/CZK',\n ccy1: 'SAR',\n ccy2: 'CZK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/ARS': {\n pair: 'SEK/ARS',\n ccy1: 'SEK',\n ccy2: 'ARS',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/BRL': {\n pair: 'SEK/BRL',\n ccy1: 'SEK',\n ccy2: 'BRL',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/CLP': {\n pair: 'SEK/CLP',\n ccy1: 'SEK',\n ccy2: 'CLP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/CNH': {\n pair: 'SEK/CNH',\n ccy1: 'SEK',\n ccy2: 'CNH',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/CNY': {\n pair: 'SEK/CNY',\n ccy1: 'SEK',\n ccy2: 'CNY',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/COP': {\n pair: 'SEK/COP',\n ccy1: 'SEK',\n ccy2: 'COP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/EGP': {\n pair: 'SEK/EGP',\n ccy1: 'SEK',\n ccy2: 'EGP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/HUF': {\n pair: 'SEK/HUF',\n ccy1: 'SEK',\n ccy2: 'HUF',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/IDR': {\n pair: 'SEK/IDR',\n ccy1: 'SEK',\n ccy2: 'IDR',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/INR': {\n pair: 'SEK/INR',\n ccy1: 'SEK',\n ccy2: 'INR',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/JPY': {\n pair: 'SEK/JPY',\n ccy1: 'SEK',\n ccy2: 'JPY',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'SEK/KRW': {\n pair: 'SEK/KRW',\n ccy1: 'SEK',\n ccy2: 'KRW',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/KZT': {\n pair: 'SEK/KZT',\n ccy1: 'SEK',\n ccy2: 'KZT',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/NGN': {\n pair: 'SEK/NGN',\n ccy1: 'SEK',\n ccy2: 'NGN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/PEN': {\n pair: 'SEK/PEN',\n ccy1: 'SEK',\n ccy2: 'PEN',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/PHP': {\n pair: 'SEK/PHP',\n ccy1: 'SEK',\n ccy2: 'PHP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/PLN': {\n pair: 'SEK/PLN',\n ccy1: 'SEK',\n ccy2: 'PLN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/RON': {\n pair: 'SEK/RON',\n ccy1: 'SEK',\n ccy2: 'RON',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/THB': {\n pair: 'SEK/THB',\n ccy1: 'SEK',\n ccy2: 'THB',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/TWD': {\n pair: 'SEK/TWD',\n ccy1: 'SEK',\n ccy2: 'TWD',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/UAH': {\n pair: 'SEK/UAH',\n ccy1: 'SEK',\n ccy2: 'UAH',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/VND': {\n pair: 'SEK/VND',\n ccy1: 'SEK',\n ccy2: 'VND',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SGD/AED': {\n pair: 'SGD/AED',\n ccy1: 'SGD',\n ccy2: 'AED',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SGD/CNH': {\n pair: 'SGD/CNH',\n ccy1: 'SGD',\n ccy2: 'CNH',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SGD/CNY': {\n pair: 'SGD/CNY',\n ccy1: 'SGD',\n ccy2: 'CNY',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SGD/HKD': {\n pair: 'SGD/HKD',\n ccy1: 'SGD',\n ccy2: 'HKD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SGD/HUF': {\n pair: 'SGD/HUF',\n ccy1: 'SGD',\n ccy2: 'HUF',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SGD/IDR': {\n pair: 'SGD/IDR',\n ccy1: 'SGD',\n ccy2: 'IDR',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SGD/INR': {\n pair: 'SGD/INR',\n ccy1: 'SGD',\n ccy2: 'INR',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SGD/JPY': {\n pair: 'SGD/JPY',\n ccy1: 'SGD',\n ccy2: 'JPY',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SGD/KRW': {\n pair: 'SGD/KRW',\n ccy1: 'SGD',\n ccy2: 'KRW',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SGD/NOK': {\n pair: 'SGD/NOK',\n ccy1: 'SGD',\n ccy2: 'NOK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SGD/PHP': {\n pair: 'SGD/PHP',\n ccy1: 'SGD',\n ccy2: 'PHP',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SGD/SEK': {\n pair: 'SGD/SEK',\n ccy1: 'SGD',\n ccy2: 'SEK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SGD/THB': {\n pair: 'SGD/THB',\n ccy1: 'SGD',\n ccy2: 'THB',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SGD/TWD': {\n pair: 'SGD/TWD',\n ccy1: 'SGD',\n ccy2: 'TWD',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'THB/CNH': {\n pair: 'THB/CNH',\n ccy1: 'THB',\n ccy2: 'CNH',\n precision: 6,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'THB/IDR': {\n pair: 'THB/IDR',\n ccy1: 'THB',\n ccy2: 'IDR',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'THB/JPY': {\n pair: 'THB/JPY',\n ccy1: 'THB',\n ccy2: 'JPY',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'THB/PLN': {\n pair: 'THB/PLN',\n ccy1: 'THB',\n ccy2: 'PLN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TND/CHF': {\n pair: 'TND/CHF',\n ccy1: 'TND',\n ccy2: 'CHF',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TND/PLN': {\n pair: 'TND/PLN',\n ccy1: 'TND',\n ccy2: 'PLN',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TRY/CZK': {\n pair: 'TRY/CZK',\n ccy1: 'TRY',\n ccy2: 'CZK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TRY/HUF': {\n pair: 'TRY/HUF',\n ccy1: 'TRY',\n ccy2: 'HUF',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TRY/ILS': {\n pair: 'TRY/ILS',\n ccy1: 'TRY',\n ccy2: 'ILS',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TRY/JPY': {\n pair: 'TRY/JPY',\n ccy1: 'TRY',\n ccy2: 'JPY',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TRY/MXN': {\n pair: 'TRY/MXN',\n ccy1: 'TRY',\n ccy2: 'MXN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TRY/PLN': {\n pair: 'TRY/PLN',\n ccy1: 'TRY',\n ccy2: 'PLN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TRY/RUB': {\n pair: 'TRY/RUB',\n ccy1: 'TRY',\n ccy2: 'RUB',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TRY/SEK': {\n pair: 'TRY/SEK',\n ccy1: 'TRY',\n ccy2: 'SEK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TRY/ZAR': {\n pair: 'TRY/ZAR',\n ccy1: 'TRY',\n ccy2: 'ZAR',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TWD/JPY': {\n pair: 'TWD/JPY',\n ccy1: 'TWD',\n ccy2: 'JPY',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/AED': {\n pair: 'USD/AED',\n ccy1: 'USD',\n ccy2: 'AED',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/ARS': {\n pair: 'USD/ARS',\n ccy1: 'USD',\n ccy2: 'ARS',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/BGN': {\n pair: 'USD/BGN',\n ccy1: 'USD',\n ccy2: 'BGN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/BHD': {\n pair: 'USD/BHD',\n ccy1: 'USD',\n ccy2: 'BHD',\n precision: 6,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/BRL': {\n pair: 'USD/BRL',\n ccy1: 'USD',\n ccy2: 'BRL',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/BRO': {\n pair: 'USD/BRO',\n ccy1: 'USD',\n ccy2: 'BRO',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/BWP': {\n pair: 'USD/BWP',\n ccy1: 'USD',\n ccy2: 'BWP',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/CAD': {\n pair: 'USD/CAD',\n ccy1: 'USD',\n ccy2: 'CAD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: true,\n isOptionCurrency: true\n },\n 'USD/CHF': {\n pair: 'USD/CHF',\n ccy1: 'USD',\n ccy2: 'CHF',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: true,\n isOptionCurrency: true\n },\n 'USD/CLP': {\n pair: 'USD/CLP',\n ccy1: 'USD',\n ccy2: 'CLP',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/CNH': {\n pair: 'USD/CNH',\n ccy1: 'USD',\n ccy2: 'CNH',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'USD/CNY': {\n pair: 'USD/CNY',\n ccy1: 'USD',\n ccy2: 'CNY',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/COP': {\n pair: 'USD/COP',\n ccy1: 'USD',\n ccy2: 'COP',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/CZK': {\n pair: 'USD/CZK',\n ccy1: 'USD',\n ccy2: 'CZK',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'USD/DKK': {\n pair: 'USD/DKK',\n ccy1: 'USD',\n ccy2: 'DKK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/DZD': {\n pair: 'USD/DZD',\n ccy1: 'USD',\n ccy2: 'DZD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/EGP': {\n pair: 'USD/EGP',\n ccy1: 'USD',\n ccy2: 'EGP',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/GHS': {\n pair: 'USD/GHS',\n ccy1: 'USD',\n ccy2: 'GHS',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/HKD': {\n pair: 'USD/HKD',\n ccy1: 'USD',\n ccy2: 'HKD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'USD/HRK': {\n pair: 'USD/HRK',\n ccy1: 'USD',\n ccy2: 'HRK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/HUF': {\n pair: 'USD/HUF',\n ccy1: 'USD',\n ccy2: 'HUF',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'USD/IDR': {\n pair: 'USD/IDR',\n ccy1: 'USD',\n ccy2: 'IDR',\n precision: 1,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/ILS': {\n pair: 'USD/ILS',\n ccy1: 'USD',\n ccy2: 'ILS',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/INR': {\n pair: 'USD/INR',\n ccy1: 'USD',\n ccy2: 'INR',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/ISK': {\n pair: 'USD/ISK',\n ccy1: 'USD',\n ccy2: 'ISK',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/JOD': {\n pair: 'USD/JOD',\n ccy1: 'USD',\n ccy2: 'JOD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/JPY': {\n pair: 'USD/JPY',\n ccy1: 'USD',\n ccy2: 'JPY',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: true,\n isOptionCurrency: true\n },\n 'USD/KES': {\n pair: 'USD/KES',\n ccy1: 'USD',\n ccy2: 'KES',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/KRW': {\n pair: 'USD/KRW',\n ccy1: 'USD',\n ccy2: 'KRW',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/KWD': {\n pair: 'USD/KWD',\n ccy1: 'USD',\n ccy2: 'KWD',\n precision: 6,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/KZT': {\n pair: 'USD/KZT',\n ccy1: 'USD',\n ccy2: 'KZT',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/MAD': {\n pair: 'USD/MAD',\n ccy1: 'USD',\n ccy2: 'MAD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/MUR': {\n pair: 'USD/MUR',\n ccy1: 'USD',\n ccy2: 'MUR',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/MXN': {\n pair: 'USD/MXN',\n ccy1: 'USD',\n ccy2: 'MXN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'USD/MZN': {\n pair: 'USD/MZN',\n ccy1: 'USD',\n ccy2: 'MZN',\n precision: 2,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/NGN': {\n pair: 'USD/NGN',\n ccy1: 'USD',\n ccy2: 'NGN',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/NOK': {\n pair: 'USD/NOK',\n ccy1: 'USD',\n ccy2: 'NOK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'USD/OMR': {\n pair: 'USD/OMR',\n ccy1: 'USD',\n ccy2: 'OMR',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/PEN': {\n pair: 'USD/PEN',\n ccy1: 'USD',\n ccy2: 'PEN',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/PHP': {\n pair: 'USD/PHP',\n ccy1: 'USD',\n ccy2: 'PHP',\n precision: 3,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/PLN': {\n pair: 'USD/PLN',\n ccy1: 'USD',\n ccy2: 'PLN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'USD/QAR': {\n pair: 'USD/QAR',\n ccy1: 'USD',\n ccy2: 'QAR',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/RON': {\n pair: 'USD/RON',\n ccy1: 'USD',\n ccy2: 'RON',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'USD/RSD': {\n pair: 'USD/RSD',\n ccy1: 'USD',\n ccy2: 'RSD',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/RUB': {\n pair: 'USD/RUB',\n ccy1: 'USD',\n ccy2: 'RUB',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'USD/SAR': {\n pair: 'USD/SAR',\n ccy1: 'USD',\n ccy2: 'SAR',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/SEK': {\n pair: 'USD/SEK',\n ccy1: 'USD',\n ccy2: 'SEK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: true,\n isOptionCurrency: true\n },\n 'USD/SGD': {\n pair: 'USD/SGD',\n ccy1: 'USD',\n ccy2: 'SGD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'USD/THB': {\n pair: 'USD/THB',\n ccy1: 'USD',\n ccy2: 'THB',\n precision: 3,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/TND': {\n pair: 'USD/TND',\n ccy1: 'USD',\n ccy2: 'TND',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/TRY': {\n pair: 'USD/TRY',\n ccy1: 'USD',\n ccy2: 'TRY',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'USD/TWD': {\n pair: 'USD/TWD',\n ccy1: 'USD',\n ccy2: 'TWD',\n precision: 4,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/UAH': {\n pair: 'USD/UAH',\n ccy1: 'USD',\n ccy2: 'UAH',\n precision: 5,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/VND': {\n pair: 'USD/VND',\n ccy1: 'USD',\n ccy2: 'VND',\n precision: 1,\n isInverted: false,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/XAF': {\n pair: 'USD/XAF',\n ccy1: 'USD',\n ccy2: 'XAF',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/XOF': {\n pair: 'USD/XOF',\n ccy1: 'USD',\n ccy2: 'XOF',\n precision: 4,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/ZAR': {\n pair: 'USD/ZAR',\n ccy1: 'USD',\n ccy2: 'ZAR',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'ZAR/CNH': {\n pair: 'ZAR/CNH',\n ccy1: 'ZAR',\n ccy2: 'CNH',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ZAR/JPY': {\n pair: 'ZAR/JPY',\n ccy1: 'ZAR',\n ccy2: 'JPY',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ZAR/MXN': {\n pair: 'ZAR/MXN',\n ccy1: 'ZAR',\n ccy2: 'MXN',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ZAR/RUB': {\n pair: 'ZAR/RUB',\n ccy1: 'ZAR',\n ccy2: 'RUB',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ZAR/SEK': {\n pair: 'ZAR/SEK',\n ccy1: 'ZAR',\n ccy2: 'SEK',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ZAR/SGD': {\n pair: 'ZAR/SGD',\n ccy1: 'ZAR',\n ccy2: 'SGD',\n precision: 5,\n isInverted: false,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AED/AUD': {\n pair: 'AED/AUD',\n ccy1: 'AED',\n ccy2: 'AUD',\n precision: 4,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AED/CAD': {\n pair: 'AED/CAD',\n ccy1: 'AED',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AED/CHF': {\n pair: 'AED/CHF',\n ccy1: 'AED',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AED/EUR': {\n pair: 'AED/EUR',\n ccy1: 'AED',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AED/GBP': {\n pair: 'AED/GBP',\n ccy1: 'AED',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AED/SAR': {\n pair: 'AED/SAR',\n ccy1: 'AED',\n ccy2: 'SAR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AED/SGD': {\n pair: 'AED/SGD',\n ccy1: 'AED',\n ccy2: 'SGD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AED/USD': {\n pair: 'AED/USD',\n ccy1: 'AED',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ARS/AUD': {\n pair: 'ARS/AUD',\n ccy1: 'ARS',\n ccy2: 'AUD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ARS/CAD': {\n pair: 'ARS/CAD',\n ccy1: 'ARS',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ARS/CHF': {\n pair: 'ARS/CHF',\n ccy1: 'ARS',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ARS/DKK': {\n pair: 'ARS/DKK',\n ccy1: 'ARS',\n ccy2: 'DKK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ARS/EUR': {\n pair: 'ARS/EUR',\n ccy1: 'ARS',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ARS/GBP': {\n pair: 'ARS/GBP',\n ccy1: 'ARS',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ARS/NOK': {\n pair: 'ARS/NOK',\n ccy1: 'ARS',\n ccy2: 'NOK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ARS/NZD': {\n pair: 'ARS/NZD',\n ccy1: 'ARS',\n ccy2: 'NZD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ARS/SEK': {\n pair: 'ARS/SEK',\n ccy1: 'ARS',\n ccy2: 'SEK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ARS/USD': {\n pair: 'ARS/USD',\n ccy1: 'ARS',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/EUR': {\n pair: 'AUD/EUR',\n ccy1: 'AUD',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'AUD/GBP': {\n pair: 'AUD/GBP',\n ccy1: 'AUD',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'BGN/CHF': {\n pair: 'BGN/CHF',\n ccy1: 'BGN',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'BGN/EUR': {\n pair: 'BGN/EUR',\n ccy1: 'BGN',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'BGN/GBP': {\n pair: 'BGN/GBP',\n ccy1: 'BGN',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'BGN/JPY': {\n pair: 'BGN/JPY',\n ccy1: 'BGN',\n ccy2: 'JPY',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'BHD/CAD': {\n pair: 'BHD/CAD',\n ccy1: 'BHD',\n ccy2: 'CAD',\n precision: 6,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'BHD/USD': {\n pair: 'BHD/USD',\n ccy1: 'BHD',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'BRL/AUD': {\n pair: 'BRL/AUD',\n ccy1: 'BRL',\n ccy2: 'AUD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'BRL/CAD': {\n pair: 'BRL/CAD',\n ccy1: 'BRL',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'BRL/CHF': {\n pair: 'BRL/CHF',\n ccy1: 'BRL',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'BRL/CNH': {\n pair: 'BRL/CNH',\n ccy1: 'BRL',\n ccy2: 'CNH',\n precision: 4,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'BRL/EUR': {\n pair: 'BRL/EUR',\n ccy1: 'BRL',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'BRL/GBP': {\n pair: 'BRL/GBP',\n ccy1: 'BRL',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'BRL/HUF': {\n pair: 'BRL/HUF',\n ccy1: 'BRL',\n ccy2: 'HUF',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'BRL/NOK': {\n pair: 'BRL/NOK',\n ccy1: 'BRL',\n ccy2: 'NOK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'BRL/NZD': {\n pair: 'BRL/NZD',\n ccy1: 'BRL',\n ccy2: 'NZD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'BRL/SEK': {\n pair: 'BRL/SEK',\n ccy1: 'BRL',\n ccy2: 'SEK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'BRL/USD': {\n pair: 'BRL/USD',\n ccy1: 'BRL',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/AUD': {\n pair: 'CAD/AUD',\n ccy1: 'CAD',\n ccy2: 'AUD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/EUR': {\n pair: 'CAD/EUR',\n ccy1: 'CAD',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/GBP': {\n pair: 'CAD/GBP',\n ccy1: 'CAD',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/NZD': {\n pair: 'CAD/NZD',\n ccy1: 'CAD',\n ccy2: 'NZD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CAD/USD': {\n pair: 'CAD/USD',\n ccy1: 'CAD',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/AUD': {\n pair: 'CHF/AUD',\n ccy1: 'CHF',\n ccy2: 'AUD',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/CAD': {\n pair: 'CHF/CAD',\n ccy1: 'CHF',\n ccy2: 'CAD',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/EUR': {\n pair: 'CHF/EUR',\n ccy1: 'CHF',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/GBP': {\n pair: 'CHF/GBP',\n ccy1: 'CHF',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/NZD': {\n pair: 'CHF/NZD',\n ccy1: 'CHF',\n ccy2: 'NZD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/SAR': {\n pair: 'CHF/SAR',\n ccy1: 'CHF',\n ccy2: 'SAR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/TND': {\n pair: 'CHF/TND',\n ccy1: 'CHF',\n ccy2: 'TND',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CHF/USD': {\n pair: 'CHF/USD',\n ccy1: 'CHF',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: true,\n isOptionCurrency: false\n },\n 'CLP/AUD': {\n pair: 'CLP/AUD',\n ccy1: 'CLP',\n ccy2: 'AUD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CLP/CAD': {\n pair: 'CLP/CAD',\n ccy1: 'CLP',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CLP/CHF': {\n pair: 'CLP/CHF',\n ccy1: 'CLP',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CLP/DKK': {\n pair: 'CLP/DKK',\n ccy1: 'CLP',\n ccy2: 'DKK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CLP/EUR': {\n pair: 'CLP/EUR',\n ccy1: 'CLP',\n ccy2: 'EUR',\n precision: 7,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CLP/GBP': {\n pair: 'CLP/GBP',\n ccy1: 'CLP',\n ccy2: 'GBP',\n precision: 7,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CLP/HUF': {\n pair: 'CLP/HUF',\n ccy1: 'CLP',\n ccy2: 'HUF',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CLP/JPY': {\n pair: 'CLP/JPY',\n ccy1: 'CLP',\n ccy2: 'JPY',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CLP/NOK': {\n pair: 'CLP/NOK',\n ccy1: 'CLP',\n ccy2: 'NOK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CLP/NZD': {\n pair: 'CLP/NZD',\n ccy1: 'CLP',\n ccy2: 'NZD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CLP/SEK': {\n pair: 'CLP/SEK',\n ccy1: 'CLP',\n ccy2: 'SEK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CLP/USD': {\n pair: 'CLP/USD',\n ccy1: 'CLP',\n ccy2: 'USD',\n precision: 7,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/AED': {\n pair: 'CNH/AED',\n ccy1: 'CNH',\n ccy2: 'AED',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/AUD': {\n pair: 'CNH/AUD',\n ccy1: 'CNH',\n ccy2: 'AUD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/CAD': {\n pair: 'CNH/CAD',\n ccy1: 'CNH',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/CHF': {\n pair: 'CNH/CHF',\n ccy1: 'CNH',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/DKK': {\n pair: 'CNH/DKK',\n ccy1: 'CNH',\n ccy2: 'DKK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/EUR': {\n pair: 'CNH/EUR',\n ccy1: 'CNH',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/GBP': {\n pair: 'CNH/GBP',\n ccy1: 'CNH',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/NOK': {\n pair: 'CNH/NOK',\n ccy1: 'CNH',\n ccy2: 'NOK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/NZD': {\n pair: 'CNH/NZD',\n ccy1: 'CNH',\n ccy2: 'NZD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/PLN': {\n pair: 'CNH/PLN',\n ccy1: 'CNH',\n ccy2: 'PLN',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/SEK': {\n pair: 'CNH/SEK',\n ccy1: 'CNH',\n ccy2: 'SEK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/SGD': {\n pair: 'CNH/SGD',\n ccy1: 'CNH',\n ccy2: 'SGD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/THB': {\n pair: 'CNH/THB',\n ccy1: 'CNH',\n ccy2: 'THB',\n precision: 4,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/USD': {\n pair: 'CNH/USD',\n ccy1: 'CNH',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNH/ZAR': {\n pair: 'CNH/ZAR',\n ccy1: 'CNH',\n ccy2: 'ZAR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNY/AUD': {\n pair: 'CNY/AUD',\n ccy1: 'CNY',\n ccy2: 'AUD',\n precision: 8,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNY/CAD': {\n pair: 'CNY/CAD',\n ccy1: 'CNY',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNY/CHF': {\n pair: 'CNY/CHF',\n ccy1: 'CNY',\n ccy2: 'CHF',\n precision: 8,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNY/DKK': {\n pair: 'CNY/DKK',\n ccy1: 'CNY',\n ccy2: 'DKK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNY/EUR': {\n pair: 'CNY/EUR',\n ccy1: 'CNY',\n ccy2: 'EUR',\n precision: 6,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNY/GBP': {\n pair: 'CNY/GBP',\n ccy1: 'CNY',\n ccy2: 'GBP',\n precision: 6,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNY/HUF': {\n pair: 'CNY/HUF',\n ccy1: 'CNY',\n ccy2: 'HUF',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNY/NOK': {\n pair: 'CNY/NOK',\n ccy1: 'CNY',\n ccy2: 'NOK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNY/NZD': {\n pair: 'CNY/NZD',\n ccy1: 'CNY',\n ccy2: 'NZD',\n precision: 8,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNY/SEK': {\n pair: 'CNY/SEK',\n ccy1: 'CNY',\n ccy2: 'SEK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CNY/USD': {\n pair: 'CNY/USD',\n ccy1: 'CNY',\n ccy2: 'USD',\n precision: 6,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'COP/AUD': {\n pair: 'COP/AUD',\n ccy1: 'COP',\n ccy2: 'AUD',\n precision: 7,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'COP/CAD': {\n pair: 'COP/CAD',\n ccy1: 'COP',\n ccy2: 'CAD',\n precision: 7,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'COP/CHF': {\n pair: 'COP/CHF',\n ccy1: 'COP',\n ccy2: 'CHF',\n precision: 7,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'COP/DKK': {\n pair: 'COP/DKK',\n ccy1: 'COP',\n ccy2: 'DKK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'COP/EUR': {\n pair: 'COP/EUR',\n ccy1: 'COP',\n ccy2: 'EUR',\n precision: 7,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'COP/GBP': {\n pair: 'COP/GBP',\n ccy1: 'COP',\n ccy2: 'GBP',\n precision: 7,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'COP/HUF': {\n pair: 'COP/HUF',\n ccy1: 'COP',\n ccy2: 'HUF',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'COP/JPY': {\n pair: 'COP/JPY',\n ccy1: 'COP',\n ccy2: 'JPY',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'COP/NOK': {\n pair: 'COP/NOK',\n ccy1: 'COP',\n ccy2: 'NOK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'COP/NZD': {\n pair: 'COP/NZD',\n ccy1: 'COP',\n ccy2: 'NZD',\n precision: 7,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'COP/SEK': {\n pair: 'COP/SEK',\n ccy1: 'COP',\n ccy2: 'SEK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'COP/USD': {\n pair: 'COP/USD',\n ccy1: 'COP',\n ccy2: 'USD',\n precision: 7,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CZK/AUD': {\n pair: 'CZK/AUD',\n ccy1: 'CZK',\n ccy2: 'AUD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CZK/CHF': {\n pair: 'CZK/CHF',\n ccy1: 'CZK',\n ccy2: 'CHF',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CZK/DKK': {\n pair: 'CZK/DKK',\n ccy1: 'CZK',\n ccy2: 'DKK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CZK/EUR': {\n pair: 'CZK/EUR',\n ccy1: 'CZK',\n ccy2: 'EUR',\n precision: 6,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CZK/GBP': {\n pair: 'CZK/GBP',\n ccy1: 'CZK',\n ccy2: 'GBP',\n precision: 6,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CZK/HKD': {\n pair: 'CZK/HKD',\n ccy1: 'CZK',\n ccy2: 'HKD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CZK/NOK': {\n pair: 'CZK/NOK',\n ccy1: 'CZK',\n ccy2: 'NOK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CZK/RUB': {\n pair: 'CZK/RUB',\n ccy1: 'CZK',\n ccy2: 'RUB',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'CZK/USD': {\n pair: 'CZK/USD',\n ccy1: 'CZK',\n ccy2: 'USD',\n precision: 6,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/AUD': {\n pair: 'DKK/AUD',\n ccy1: 'DKK',\n ccy2: 'AUD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/BRL': {\n pair: 'DKK/BRL',\n ccy1: 'DKK',\n ccy2: 'BRL',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/CAD': {\n pair: 'DKK/CAD',\n ccy1: 'DKK',\n ccy2: 'CAD',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/CHF': {\n pair: 'DKK/CHF',\n ccy1: 'DKK',\n ccy2: 'CHF',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/EUR': {\n pair: 'DKK/EUR',\n ccy1: 'DKK',\n ccy2: 'EUR',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/GBP': {\n pair: 'DKK/GBP',\n ccy1: 'DKK',\n ccy2: 'GBP',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/NOK': {\n pair: 'DKK/NOK',\n ccy1: 'DKK',\n ccy2: 'NOK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/NZD': {\n pair: 'DKK/NZD',\n ccy1: 'DKK',\n ccy2: 'NZD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/PLN': {\n pair: 'DKK/PLN',\n ccy1: 'DKK',\n ccy2: 'PLN',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DKK/USD': {\n pair: 'DKK/USD',\n ccy1: 'DKK',\n ccy2: 'USD',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DZD/EUR': {\n pair: 'DZD/EUR',\n ccy1: 'DZD',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'DZD/USD': {\n pair: 'DZD/USD',\n ccy1: 'DZD',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EGP/AUD': {\n pair: 'EGP/AUD',\n ccy1: 'EGP',\n ccy2: 'AUD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EGP/CAD': {\n pair: 'EGP/CAD',\n ccy1: 'EGP',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EGP/CHF': {\n pair: 'EGP/CHF',\n ccy1: 'EGP',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EGP/DKK': {\n pair: 'EGP/DKK',\n ccy1: 'EGP',\n ccy2: 'DKK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EGP/EUR': {\n pair: 'EGP/EUR',\n ccy1: 'EGP',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EGP/GBP': {\n pair: 'EGP/GBP',\n ccy1: 'EGP',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EGP/HUF': {\n pair: 'EGP/HUF',\n ccy1: 'EGP',\n ccy2: 'HUF',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EGP/JPY': {\n pair: 'EGP/JPY',\n ccy1: 'EGP',\n ccy2: 'JPY',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EGP/NOK': {\n pair: 'EGP/NOK',\n ccy1: 'EGP',\n ccy2: 'NOK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EGP/NZD': {\n pair: 'EGP/NZD',\n ccy1: 'EGP',\n ccy2: 'NZD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EGP/SEK': {\n pair: 'EGP/SEK',\n ccy1: 'EGP',\n ccy2: 'SEK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'EGP/USD': {\n pair: 'EGP/USD',\n ccy1: 'EGP',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/EUR': {\n pair: 'GBP/EUR',\n ccy1: 'GBP',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'GBP/XAF': {\n pair: 'GBP/XAF',\n ccy1: 'GBP',\n ccy2: 'XAF',\n precision: 4,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GBP/XOF': {\n pair: 'GBP/XOF',\n ccy1: 'GBP',\n ccy2: 'XOF',\n precision: 4,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GHS/CHF': {\n pair: 'GHS/CHF',\n ccy1: 'GHS',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GHS/EUR': {\n pair: 'GHS/EUR',\n ccy1: 'GHS',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GHS/GBP': {\n pair: 'GHS/GBP',\n ccy1: 'GHS',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GHS/JPY': {\n pair: 'GHS/JPY',\n ccy1: 'GHS',\n ccy2: 'JPY',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'GHS/USD': {\n pair: 'GHS/USD',\n ccy1: 'GHS',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HKD/AOA': {\n pair: 'HKD/AOA',\n ccy1: 'HKD',\n ccy2: 'AOA',\n precision: 4,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HKD/AUD': {\n pair: 'HKD/AUD',\n ccy1: 'HKD',\n ccy2: 'AUD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HKD/CAD': {\n pair: 'HKD/CAD',\n ccy1: 'HKD',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HKD/CHF': {\n pair: 'HKD/CHF',\n ccy1: 'HKD',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HKD/CNH': {\n pair: 'HKD/CNH',\n ccy1: 'HKD',\n ccy2: 'CNH',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: true\n },\n 'HKD/EUR': {\n pair: 'HKD/EUR',\n ccy1: 'HKD',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HKD/GBP': {\n pair: 'HKD/GBP',\n ccy1: 'HKD',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HKD/MXN': {\n pair: 'HKD/MXN',\n ccy1: 'HKD',\n ccy2: 'MXN',\n precision: 4,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HKD/NZD': {\n pair: 'HKD/NZD',\n ccy1: 'HKD',\n ccy2: 'NZD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HKD/PLN': {\n pair: 'HKD/PLN',\n ccy1: 'HKD',\n ccy2: 'PLN',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HKD/RUB': {\n pair: 'HKD/RUB',\n ccy1: 'HKD',\n ccy2: 'RUB',\n precision: 4,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HKD/SGD': {\n pair: 'HKD/SGD',\n ccy1: 'HKD',\n ccy2: 'SGD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HKD/USD': {\n pair: 'HKD/USD',\n ccy1: 'HKD',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HRK/CHF': {\n pair: 'HRK/CHF',\n ccy1: 'HRK',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HRK/CZK': {\n pair: 'HRK/CZK',\n ccy1: 'HRK',\n ccy2: 'CZK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HRK/EUR': {\n pair: 'HRK/EUR',\n ccy1: 'HRK',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HRK/GBP': {\n pair: 'HRK/GBP',\n ccy1: 'HRK',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HRK/HUF': {\n pair: 'HRK/HUF',\n ccy1: 'HRK',\n ccy2: 'HUF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HRK/JPY': {\n pair: 'HRK/JPY',\n ccy1: 'HRK',\n ccy2: 'JPY',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HRK/PLN': {\n pair: 'HRK/PLN',\n ccy1: 'HRK',\n ccy2: 'PLN',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HRK/USD': {\n pair: 'HRK/USD',\n ccy1: 'HRK',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/ARS': {\n pair: 'HUF/ARS',\n ccy1: 'HUF',\n ccy2: 'ARS',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/AUD': {\n pair: 'HUF/AUD',\n ccy1: 'HUF',\n ccy2: 'AUD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/CAD': {\n pair: 'HUF/CAD',\n ccy1: 'HUF',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/CHF': {\n pair: 'HUF/CHF',\n ccy1: 'HUF',\n ccy2: 'CHF',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/DKK': {\n pair: 'HUF/DKK',\n ccy1: 'HUF',\n ccy2: 'DKK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/EUR': {\n pair: 'HUF/EUR',\n ccy1: 'HUF',\n ccy2: 'EUR',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/GBP': {\n pair: 'HUF/GBP',\n ccy1: 'HUF',\n ccy2: 'GBP',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/HKD': {\n pair: 'HUF/HKD',\n ccy1: 'HUF',\n ccy2: 'HKD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/ILS': {\n pair: 'HUF/ILS',\n ccy1: 'HUF',\n ccy2: 'ILS',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/NOK': {\n pair: 'HUF/NOK',\n ccy1: 'HUF',\n ccy2: 'NOK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/PLN': {\n pair: 'HUF/PLN',\n ccy1: 'HUF',\n ccy2: 'PLN',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/RUB': {\n pair: 'HUF/RUB',\n ccy1: 'HUF',\n ccy2: 'RUB',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/SEK': {\n pair: 'HUF/SEK',\n ccy1: 'HUF',\n ccy2: 'SEK',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/SGD': {\n pair: 'HUF/SGD',\n ccy1: 'HUF',\n ccy2: 'SGD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/TRY': {\n pair: 'HUF/TRY',\n ccy1: 'HUF',\n ccy2: 'TRY',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'HUF/USD': {\n pair: 'HUF/USD',\n ccy1: 'HUF',\n ccy2: 'USD',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'IDR/AUD': {\n pair: 'IDR/AUD',\n ccy1: 'IDR',\n ccy2: 'AUD',\n precision: 8,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'IDR/CAD': {\n pair: 'IDR/CAD',\n ccy1: 'IDR',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'IDR/CHF': {\n pair: 'IDR/CHF',\n ccy1: 'IDR',\n ccy2: 'CHF',\n precision: 6,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'IDR/CNH': {\n pair: 'IDR/CNH',\n ccy1: 'IDR',\n ccy2: 'CNH',\n precision: 6,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'IDR/DKK': {\n pair: 'IDR/DKK',\n ccy1: 'IDR',\n ccy2: 'DKK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'IDR/EUR': {\n pair: 'IDR/EUR',\n ccy1: 'IDR',\n ccy2: 'EUR',\n precision: 10,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'IDR/GBP': {\n pair: 'IDR/GBP',\n ccy1: 'IDR',\n ccy2: 'GBP',\n precision: 10,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'IDR/HUF': {\n pair: 'IDR/HUF',\n ccy1: 'IDR',\n ccy2: 'HUF',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'IDR/JPY': {\n pair: 'IDR/JPY',\n ccy1: 'IDR',\n ccy2: 'JPY',\n precision: 6,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'IDR/NOK': {\n pair: 'IDR/NOK',\n ccy1: 'IDR',\n ccy2: 'NOK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'IDR/NZD': {\n pair: 'IDR/NZD',\n ccy1: 'IDR',\n ccy2: 'NZD',\n precision: 6,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'IDR/SEK': {\n pair: 'IDR/SEK',\n ccy1: 'IDR',\n ccy2: 'SEK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'IDR/USD': {\n pair: 'IDR/USD',\n ccy1: 'IDR',\n ccy2: 'USD',\n precision: 10,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ILS/CAD': {\n pair: 'ILS/CAD',\n ccy1: 'ILS',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ILS/CHF': {\n pair: 'ILS/CHF',\n ccy1: 'ILS',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ILS/EUR': {\n pair: 'ILS/EUR',\n ccy1: 'ILS',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ILS/GBP': {\n pair: 'ILS/GBP',\n ccy1: 'ILS',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ILS/NZD': {\n pair: 'ILS/NZD',\n ccy1: 'ILS',\n ccy2: 'NZD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ILS/PLN': {\n pair: 'ILS/PLN',\n ccy1: 'ILS',\n ccy2: 'PLN',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ILS/USD': {\n pair: 'ILS/USD',\n ccy1: 'ILS',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'INR/AUD': {\n pair: 'INR/AUD',\n ccy1: 'INR',\n ccy2: 'AUD',\n precision: 6,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'INR/CAD': {\n pair: 'INR/CAD',\n ccy1: 'INR',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'INR/CHF': {\n pair: 'INR/CHF',\n ccy1: 'INR',\n ccy2: 'CHF',\n precision: 6,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'INR/CNH': {\n pair: 'INR/CNH',\n ccy1: 'INR',\n ccy2: 'CNH',\n precision: 6,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'INR/DKK': {\n pair: 'INR/DKK',\n ccy1: 'INR',\n ccy2: 'DKK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'INR/EUR': {\n pair: 'INR/EUR',\n ccy1: 'INR',\n ccy2: 'EUR',\n precision: 8,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'INR/GBP': {\n pair: 'INR/GBP',\n ccy1: 'INR',\n ccy2: 'GBP',\n precision: 8,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'INR/HUF': {\n pair: 'INR/HUF',\n ccy1: 'INR',\n ccy2: 'HUF',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'INR/NOK': {\n pair: 'INR/NOK',\n ccy1: 'INR',\n ccy2: 'NOK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'INR/NZD': {\n pair: 'INR/NZD',\n ccy1: 'INR',\n ccy2: 'NZD',\n precision: 6,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'INR/SEK': {\n pair: 'INR/SEK',\n ccy1: 'INR',\n ccy2: 'SEK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'INR/SGD': {\n pair: 'INR/SGD',\n ccy1: 'INR',\n ccy2: 'SGD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'INR/USD': {\n pair: 'INR/USD',\n ccy1: 'INR',\n ccy2: 'USD',\n precision: 8,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/AED': {\n pair: 'JPY/AED',\n ccy1: 'JPY',\n ccy2: 'AED',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/ARS': {\n pair: 'JPY/ARS',\n ccy1: 'JPY',\n ccy2: 'ARS',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/AUD': {\n pair: 'JPY/AUD',\n ccy1: 'JPY',\n ccy2: 'AUD',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/BRL': {\n pair: 'JPY/BRL',\n ccy1: 'JPY',\n ccy2: 'BRL',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/CAD': {\n pair: 'JPY/CAD',\n ccy1: 'JPY',\n ccy2: 'CAD',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/CHF': {\n pair: 'JPY/CHF',\n ccy1: 'JPY',\n ccy2: 'CHF',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/CNH': {\n pair: 'JPY/CNH',\n ccy1: 'JPY',\n ccy2: 'CNH',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/CNY': {\n pair: 'JPY/CNY',\n ccy1: 'JPY',\n ccy2: 'CNY',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/CZK': {\n pair: 'JPY/CZK',\n ccy1: 'JPY',\n ccy2: 'CZK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/DKK': {\n pair: 'JPY/DKK',\n ccy1: 'JPY',\n ccy2: 'DKK',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/EUR': {\n pair: 'JPY/EUR',\n ccy1: 'JPY',\n ccy2: 'EUR',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/GBP': {\n pair: 'JPY/GBP',\n ccy1: 'JPY',\n ccy2: 'GBP',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/HKD': {\n pair: 'JPY/HKD',\n ccy1: 'JPY',\n ccy2: 'HKD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/HUF': {\n pair: 'JPY/HUF',\n ccy1: 'JPY',\n ccy2: 'HUF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/ILS': {\n pair: 'JPY/ILS',\n ccy1: 'JPY',\n ccy2: 'ILS',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/MXN': {\n pair: 'JPY/MXN',\n ccy1: 'JPY',\n ccy2: 'MXN',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/NOK': {\n pair: 'JPY/NOK',\n ccy1: 'JPY',\n ccy2: 'NOK',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/NZD': {\n pair: 'JPY/NZD',\n ccy1: 'JPY',\n ccy2: 'NZD',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/PEN': {\n pair: 'JPY/PEN',\n ccy1: 'JPY',\n ccy2: 'PEN',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/PHP': {\n pair: 'JPY/PHP',\n ccy1: 'JPY',\n ccy2: 'PHP',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/PLN': {\n pair: 'JPY/PLN',\n ccy1: 'JPY',\n ccy2: 'PLN',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/RUB': {\n pair: 'JPY/RUB',\n ccy1: 'JPY',\n ccy2: 'RUB',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/SEK': {\n pair: 'JPY/SEK',\n ccy1: 'JPY',\n ccy2: 'SEK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/SGD': {\n pair: 'JPY/SGD',\n ccy1: 'JPY',\n ccy2: 'SGD',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/THB': {\n pair: 'JPY/THB',\n ccy1: 'JPY',\n ccy2: 'THB',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/TRY': {\n pair: 'JPY/TRY',\n ccy1: 'JPY',\n ccy2: 'TRY',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/TWD': {\n pair: 'JPY/TWD',\n ccy1: 'JPY',\n ccy2: 'TWD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/USD': {\n pair: 'JPY/USD',\n ccy1: 'JPY',\n ccy2: 'USD',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: true,\n isOptionCurrency: false\n },\n 'JPY/XAF': {\n pair: 'JPY/XAF',\n ccy1: 'JPY',\n ccy2: 'XAF',\n precision: 4,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/XOF': {\n pair: 'JPY/XOF',\n ccy1: 'JPY',\n ccy2: 'XOF',\n precision: 4,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'JPY/ZAR': {\n pair: 'JPY/ZAR',\n ccy1: 'JPY',\n ccy2: 'ZAR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KES/EUR': {\n pair: 'KES/EUR',\n ccy1: 'KES',\n ccy2: 'EUR',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KES/GBP': {\n pair: 'KES/GBP',\n ccy1: 'KES',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KES/JPY': {\n pair: 'KES/JPY',\n ccy1: 'KES',\n ccy2: 'JPY',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KRW/AUD': {\n pair: 'KRW/AUD',\n ccy1: 'KRW',\n ccy2: 'AUD',\n precision: 8,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KRW/CAD': {\n pair: 'KRW/CAD',\n ccy1: 'KRW',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KRW/CHF': {\n pair: 'KRW/CHF',\n ccy1: 'KRW',\n ccy2: 'CHF',\n precision: 8,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KRW/CNH': {\n pair: 'KRW/CNH',\n ccy1: 'KRW',\n ccy2: 'CNH',\n precision: 8,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KRW/DKK': {\n pair: 'KRW/DKK',\n ccy1: 'KRW',\n ccy2: 'DKK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KRW/EUR': {\n pair: 'KRW/EUR',\n ccy1: 'KRW',\n ccy2: 'EUR',\n precision: 8,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KRW/GBP': {\n pair: 'KRW/GBP',\n ccy1: 'KRW',\n ccy2: 'GBP',\n precision: 8,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KRW/HUF': {\n pair: 'KRW/HUF',\n ccy1: 'KRW',\n ccy2: 'HUF',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KRW/JPY': {\n pair: 'KRW/JPY',\n ccy1: 'KRW',\n ccy2: 'JPY',\n precision: 8,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KRW/NOK': {\n pair: 'KRW/NOK',\n ccy1: 'KRW',\n ccy2: 'NOK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KRW/NZD': {\n pair: 'KRW/NZD',\n ccy1: 'KRW',\n ccy2: 'NZD',\n precision: 8,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KRW/SEK': {\n pair: 'KRW/SEK',\n ccy1: 'KRW',\n ccy2: 'SEK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KRW/USD': {\n pair: 'KRW/USD',\n ccy1: 'KRW',\n ccy2: 'USD',\n precision: 8,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KWD/CAD': {\n pair: 'KWD/CAD',\n ccy1: 'KWD',\n ccy2: 'CAD',\n precision: 6,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KWD/CHF': {\n pair: 'KWD/CHF',\n ccy1: 'KWD',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KWD/JPY': {\n pair: 'KWD/JPY',\n ccy1: 'KWD',\n ccy2: 'JPY',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KWD/USD': {\n pair: 'KWD/USD',\n ccy1: 'KWD',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KZT/AUD': {\n pair: 'KZT/AUD',\n ccy1: 'KZT',\n ccy2: 'AUD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KZT/CAD': {\n pair: 'KZT/CAD',\n ccy1: 'KZT',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KZT/CHF': {\n pair: 'KZT/CHF',\n ccy1: 'KZT',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KZT/DKK': {\n pair: 'KZT/DKK',\n ccy1: 'KZT',\n ccy2: 'DKK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KZT/EUR': {\n pair: 'KZT/EUR',\n ccy1: 'KZT',\n ccy2: 'EUR',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KZT/GBP': {\n pair: 'KZT/GBP',\n ccy1: 'KZT',\n ccy2: 'GBP',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KZT/HUF': {\n pair: 'KZT/HUF',\n ccy1: 'KZT',\n ccy2: 'HUF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KZT/JPY': {\n pair: 'KZT/JPY',\n ccy1: 'KZT',\n ccy2: 'JPY',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KZT/NOK': {\n pair: 'KZT/NOK',\n ccy1: 'KZT',\n ccy2: 'NOK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KZT/NZD': {\n pair: 'KZT/NZD',\n ccy1: 'KZT',\n ccy2: 'NZD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KZT/RUB': {\n pair: 'KZT/RUB',\n ccy1: 'KZT',\n ccy2: 'RUB',\n precision: 4,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KZT/SEK': {\n pair: 'KZT/SEK',\n ccy1: 'KZT',\n ccy2: 'SEK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'KZT/USD': {\n pair: 'KZT/USD',\n ccy1: 'KZT',\n ccy2: 'USD',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'MAD/CHF': {\n pair: 'MAD/CHF',\n ccy1: 'MAD',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'MAD/EUR': {\n pair: 'MAD/EUR',\n ccy1: 'MAD',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'MAD/GBP': {\n pair: 'MAD/GBP',\n ccy1: 'MAD',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'MAD/JPY': {\n pair: 'MAD/JPY',\n ccy1: 'MAD',\n ccy2: 'JPY',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'MAD/USD': {\n pair: 'MAD/USD',\n ccy1: 'MAD',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'MUR/EUR': {\n pair: 'MUR/EUR',\n ccy1: 'MUR',\n ccy2: 'EUR',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'MUR/USD': {\n pair: 'MUR/USD',\n ccy1: 'MUR',\n ccy2: 'USD',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'MXN/CAD': {\n pair: 'MXN/CAD',\n ccy1: 'MXN',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'MXN/CHF': {\n pair: 'MXN/CHF',\n ccy1: 'MXN',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'MXN/CNH': {\n pair: 'MXN/CNH',\n ccy1: 'MXN',\n ccy2: 'CNH',\n precision: 4,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: true,\n isOptionCurrency: false\n },\n 'MXN/EUR': {\n pair: 'MXN/EUR',\n ccy1: 'MXN',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'MXN/PLN': {\n pair: 'MXN/PLN',\n ccy1: 'MXN',\n ccy2: 'PLN',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'MXN/TRY': {\n pair: 'MXN/TRY',\n ccy1: 'MXN',\n ccy2: 'TRY',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'MXN/USD': {\n pair: 'MXN/USD',\n ccy1: 'MXN',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'MXN/ZAR': {\n pair: 'MXN/ZAR',\n ccy1: 'MXN',\n ccy2: 'ZAR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NGN/AUD': {\n pair: 'NGN/AUD',\n ccy1: 'NGN',\n ccy2: 'AUD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NGN/CAD': {\n pair: 'NGN/CAD',\n ccy1: 'NGN',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NGN/CHF': {\n pair: 'NGN/CHF',\n ccy1: 'NGN',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NGN/DKK': {\n pair: 'NGN/DKK',\n ccy1: 'NGN',\n ccy2: 'DKK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NGN/EUR': {\n pair: 'NGN/EUR',\n ccy1: 'NGN',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NGN/GBP': {\n pair: 'NGN/GBP',\n ccy1: 'NGN',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NGN/HUF': {\n pair: 'NGN/HUF',\n ccy1: 'NGN',\n ccy2: 'HUF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NGN/JPY': {\n pair: 'NGN/JPY',\n ccy1: 'NGN',\n ccy2: 'JPY',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NGN/NOK': {\n pair: 'NGN/NOK',\n ccy1: 'NGN',\n ccy2: 'NOK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NGN/NZD': {\n pair: 'NGN/NZD',\n ccy1: 'NGN',\n ccy2: 'NZD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NGN/SEK': {\n pair: 'NGN/SEK',\n ccy1: 'NGN',\n ccy2: 'SEK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NGN/USD': {\n pair: 'NGN/USD',\n ccy1: 'NGN',\n ccy2: 'USD',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/AUD': {\n pair: 'NOK/AUD',\n ccy1: 'NOK',\n ccy2: 'AUD',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/CAD': {\n pair: 'NOK/CAD',\n ccy1: 'NOK',\n ccy2: 'CAD',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/CHF': {\n pair: 'NOK/CHF',\n ccy1: 'NOK',\n ccy2: 'CHF',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/EUR': {\n pair: 'NOK/EUR',\n ccy1: 'NOK',\n ccy2: 'EUR',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/GBP': {\n pair: 'NOK/GBP',\n ccy1: 'NOK',\n ccy2: 'GBP',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/NZD': {\n pair: 'NOK/NZD',\n ccy1: 'NOK',\n ccy2: 'NZD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/SGD': {\n pair: 'NOK/SGD',\n ccy1: 'NOK',\n ccy2: 'SGD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NOK/USD': {\n pair: 'NOK/USD',\n ccy1: 'NOK',\n ccy2: 'USD',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/AUD': {\n pair: 'NZD/AUD',\n ccy1: 'NZD',\n ccy2: 'AUD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/EUR': {\n pair: 'NZD/EUR',\n ccy1: 'NZD',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'NZD/GBP': {\n pair: 'NZD/GBP',\n ccy1: 'NZD',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'OMR/EUR': {\n pair: 'OMR/EUR',\n ccy1: 'OMR',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'OMR/USD': {\n pair: 'OMR/USD',\n ccy1: 'OMR',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PEN/AUD': {\n pair: 'PEN/AUD',\n ccy1: 'PEN',\n ccy2: 'AUD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PEN/CAD': {\n pair: 'PEN/CAD',\n ccy1: 'PEN',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PEN/CHF': {\n pair: 'PEN/CHF',\n ccy1: 'PEN',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PEN/DKK': {\n pair: 'PEN/DKK',\n ccy1: 'PEN',\n ccy2: 'DKK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PEN/EUR': {\n pair: 'PEN/EUR',\n ccy1: 'PEN',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PEN/GBP': {\n pair: 'PEN/GBP',\n ccy1: 'PEN',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PEN/HUF': {\n pair: 'PEN/HUF',\n ccy1: 'PEN',\n ccy2: 'HUF',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PEN/NOK': {\n pair: 'PEN/NOK',\n ccy1: 'PEN',\n ccy2: 'NOK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PEN/NZD': {\n pair: 'PEN/NZD',\n ccy1: 'PEN',\n ccy2: 'NZD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PEN/SEK': {\n pair: 'PEN/SEK',\n ccy1: 'PEN',\n ccy2: 'SEK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PEN/USD': {\n pair: 'PEN/USD',\n ccy1: 'PEN',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PHP/AUD': {\n pair: 'PHP/AUD',\n ccy1: 'PHP',\n ccy2: 'AUD',\n precision: 6,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PHP/CAD': {\n pair: 'PHP/CAD',\n ccy1: 'PHP',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PHP/CHF': {\n pair: 'PHP/CHF',\n ccy1: 'PHP',\n ccy2: 'CHF',\n precision: 6,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PHP/CNH': {\n pair: 'PHP/CNH',\n ccy1: 'PHP',\n ccy2: 'CNH',\n precision: 6,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PHP/DKK': {\n pair: 'PHP/DKK',\n ccy1: 'PHP',\n ccy2: 'DKK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PHP/EUR': {\n pair: 'PHP/EUR',\n ccy1: 'PHP',\n ccy2: 'EUR',\n precision: 8,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PHP/GBP': {\n pair: 'PHP/GBP',\n ccy1: 'PHP',\n ccy2: 'GBP',\n precision: 8,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PHP/HUF': {\n pair: 'PHP/HUF',\n ccy1: 'PHP',\n ccy2: 'HUF',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PHP/NOK': {\n pair: 'PHP/NOK',\n ccy1: 'PHP',\n ccy2: 'NOK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PHP/NZD': {\n pair: 'PHP/NZD',\n ccy1: 'PHP',\n ccy2: 'NZD',\n precision: 6,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PHP/SEK': {\n pair: 'PHP/SEK',\n ccy1: 'PHP',\n ccy2: 'SEK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PHP/USD': {\n pair: 'PHP/USD',\n ccy1: 'PHP',\n ccy2: 'USD',\n precision: 8,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/AED': {\n pair: 'PLN/AED',\n ccy1: 'PLN',\n ccy2: 'AED',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/AUD': {\n pair: 'PLN/AUD',\n ccy1: 'PLN',\n ccy2: 'AUD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/BGN': {\n pair: 'PLN/BGN',\n ccy1: 'PLN',\n ccy2: 'BGN',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/CHF': {\n pair: 'PLN/CHF',\n ccy1: 'PLN',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/CZK': {\n pair: 'PLN/CZK',\n ccy1: 'PLN',\n ccy2: 'CZK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/EUR': {\n pair: 'PLN/EUR',\n ccy1: 'PLN',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/GBP': {\n pair: 'PLN/GBP',\n ccy1: 'PLN',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/THB': {\n pair: 'PLN/THB',\n ccy1: 'PLN',\n ccy2: 'THB',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/TND': {\n pair: 'PLN/TND',\n ccy1: 'PLN',\n ccy2: 'TND',\n precision: 4,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/TRY': {\n pair: 'PLN/TRY',\n ccy1: 'PLN',\n ccy2: 'TRY',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'PLN/USD': {\n pair: 'PLN/USD',\n ccy1: 'PLN',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'QAR/CHF': {\n pair: 'QAR/CHF',\n ccy1: 'QAR',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'QAR/JPY': {\n pair: 'QAR/JPY',\n ccy1: 'QAR',\n ccy2: 'JPY',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'QAR/USD': {\n pair: 'QAR/USD',\n ccy1: 'QAR',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RON/BGN': {\n pair: 'RON/BGN',\n ccy1: 'RON',\n ccy2: 'BGN',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RON/CAD': {\n pair: 'RON/CAD',\n ccy1: 'RON',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RON/CHF': {\n pair: 'RON/CHF',\n ccy1: 'RON',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RON/CZK': {\n pair: 'RON/CZK',\n ccy1: 'RON',\n ccy2: 'CZK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RON/EUR': {\n pair: 'RON/EUR',\n ccy1: 'RON',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RON/HUF': {\n pair: 'RON/HUF',\n ccy1: 'RON',\n ccy2: 'HUF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RON/JPY': {\n pair: 'RON/JPY',\n ccy1: 'RON',\n ccy2: 'JPY',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RON/PLN': {\n pair: 'RON/PLN',\n ccy1: 'RON',\n ccy2: 'PLN',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RON/USD': {\n pair: 'RON/USD',\n ccy1: 'RON',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RSD/CHF': {\n pair: 'RSD/CHF',\n ccy1: 'RSD',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RSD/JPY': {\n pair: 'RSD/JPY',\n ccy1: 'RSD',\n ccy2: 'JPY',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RUB/AUD': {\n pair: 'RUB/AUD',\n ccy1: 'RUB',\n ccy2: 'AUD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RUB/CAD': {\n pair: 'RUB/CAD',\n ccy1: 'RUB',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RUB/CHF': {\n pair: 'RUB/CHF',\n ccy1: 'RUB',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RUB/CNH': {\n pair: 'RUB/CNH',\n ccy1: 'RUB',\n ccy2: 'CNH',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RUB/DKK': {\n pair: 'RUB/DKK',\n ccy1: 'RUB',\n ccy2: 'DKK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RUB/EUR': {\n pair: 'RUB/EUR',\n ccy1: 'RUB',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RUB/GBP': {\n pair: 'RUB/GBP',\n ccy1: 'RUB',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RUB/NOK': {\n pair: 'RUB/NOK',\n ccy1: 'RUB',\n ccy2: 'NOK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RUB/NZD': {\n pair: 'RUB/NZD',\n ccy1: 'RUB',\n ccy2: 'NZD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RUB/PLN': {\n pair: 'RUB/PLN',\n ccy1: 'RUB',\n ccy2: 'PLN',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RUB/RON': {\n pair: 'RUB/RON',\n ccy1: 'RUB',\n ccy2: 'RON',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RUB/TRY': {\n pair: 'RUB/TRY',\n ccy1: 'RUB',\n ccy2: 'TRY',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RUB/USD': {\n pair: 'RUB/USD',\n ccy1: 'RUB',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'RUB/ZAR': {\n pair: 'RUB/ZAR',\n ccy1: 'RUB',\n ccy2: 'ZAR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SAR/CAD': {\n pair: 'SAR/CAD',\n ccy1: 'SAR',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SAR/EUR': {\n pair: 'SAR/EUR',\n ccy1: 'SAR',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SAR/GBP': {\n pair: 'SAR/GBP',\n ccy1: 'SAR',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SAR/JPY': {\n pair: 'SAR/JPY',\n ccy1: 'SAR',\n ccy2: 'JPY',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SAR/USD': {\n pair: 'SAR/USD',\n ccy1: 'SAR',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/AED': {\n pair: 'SEK/AED',\n ccy1: 'SEK',\n ccy2: 'AED',\n precision: 4,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/AUD': {\n pair: 'SEK/AUD',\n ccy1: 'SEK',\n ccy2: 'AUD',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/CAD': {\n pair: 'SEK/CAD',\n ccy1: 'SEK',\n ccy2: 'CAD',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/CHF': {\n pair: 'SEK/CHF',\n ccy1: 'SEK',\n ccy2: 'CHF',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/CZK': {\n pair: 'SEK/CZK',\n ccy1: 'SEK',\n ccy2: 'CZK',\n precision: 4,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/DKK': {\n pair: 'SEK/DKK',\n ccy1: 'SEK',\n ccy2: 'DKK',\n precision: 6,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/EUR': {\n pair: 'SEK/EUR',\n ccy1: 'SEK',\n ccy2: 'EUR',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/GBP': {\n pair: 'SEK/GBP',\n ccy1: 'SEK',\n ccy2: 'GBP',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/HKD': {\n pair: 'SEK/HKD',\n ccy1: 'SEK',\n ccy2: 'HKD',\n precision: 6,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/MAD': {\n pair: 'SEK/MAD',\n ccy1: 'SEK',\n ccy2: 'MAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/NOK': {\n pair: 'SEK/NOK',\n ccy1: 'SEK',\n ccy2: 'NOK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/NZD': {\n pair: 'SEK/NZD',\n ccy1: 'SEK',\n ccy2: 'NZD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/RUB': {\n pair: 'SEK/RUB',\n ccy1: 'SEK',\n ccy2: 'RUB',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/SGD': {\n pair: 'SEK/SGD',\n ccy1: 'SEK',\n ccy2: 'SGD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/TRY': {\n pair: 'SEK/TRY',\n ccy1: 'SEK',\n ccy2: 'TRY',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/USD': {\n pair: 'SEK/USD',\n ccy1: 'SEK',\n ccy2: 'USD',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SEK/ZAR': {\n pair: 'SEK/ZAR',\n ccy1: 'SEK',\n ccy2: 'ZAR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SGD/AUD': {\n pair: 'SGD/AUD',\n ccy1: 'SGD',\n ccy2: 'AUD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SGD/CAD': {\n pair: 'SGD/CAD',\n ccy1: 'SGD',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SGD/CHF': {\n pair: 'SGD/CHF',\n ccy1: 'SGD',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SGD/CZK': {\n pair: 'SGD/CZK',\n ccy1: 'SGD',\n ccy2: 'CZK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SGD/DKK': {\n pair: 'SGD/DKK',\n ccy1: 'SGD',\n ccy2: 'DKK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SGD/EUR': {\n pair: 'SGD/EUR',\n ccy1: 'SGD',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SGD/GBP': {\n pair: 'SGD/GBP',\n ccy1: 'SGD',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SGD/NZD': {\n pair: 'SGD/NZD',\n ccy1: 'SGD',\n ccy2: 'NZD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SGD/PLN': {\n pair: 'SGD/PLN',\n ccy1: 'SGD',\n ccy2: 'PLN',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SGD/RUB': {\n pair: 'SGD/RUB',\n ccy1: 'SGD',\n ccy2: 'RUB',\n precision: 4,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: true,\n isOptionCurrency: false\n },\n 'SGD/USD': {\n pair: 'SGD/USD',\n ccy1: 'SGD',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'SGD/ZAR': {\n pair: 'SGD/ZAR',\n ccy1: 'SGD',\n ccy2: 'ZAR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'THB/CAD': {\n pair: 'THB/CAD',\n ccy1: 'THB',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'THB/CHF': {\n pair: 'THB/CHF',\n ccy1: 'THB',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'THB/EUR': {\n pair: 'THB/EUR',\n ccy1: 'THB',\n ccy2: 'EUR',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'THB/HKD': {\n pair: 'THB/HKD',\n ccy1: 'THB',\n ccy2: 'HKD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'THB/USD': {\n pair: 'THB/USD',\n ccy1: 'THB',\n ccy2: 'USD',\n precision: 7,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TND/EUR': {\n pair: 'TND/EUR',\n ccy1: 'TND',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TND/GBP': {\n pair: 'TND/GBP',\n ccy1: 'TND',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TND/JPY': {\n pair: 'TND/JPY',\n ccy1: 'TND',\n ccy2: 'JPY',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TND/USD': {\n pair: 'TND/USD',\n ccy1: 'TND',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TRY/AUD': {\n pair: 'TRY/AUD',\n ccy1: 'TRY',\n ccy2: 'AUD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TRY/CAD': {\n pair: 'TRY/CAD',\n ccy1: 'TRY',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TRY/CHF': {\n pair: 'TRY/CHF',\n ccy1: 'TRY',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TRY/DKK': {\n pair: 'TRY/DKK',\n ccy1: 'TRY',\n ccy2: 'DKK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TRY/EUR': {\n pair: 'TRY/EUR',\n ccy1: 'TRY',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TRY/GBP': {\n pair: 'TRY/GBP',\n ccy1: 'TRY',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TRY/NOK': {\n pair: 'TRY/NOK',\n ccy1: 'TRY',\n ccy2: 'NOK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TRY/NZD': {\n pair: 'TRY/NZD',\n ccy1: 'TRY',\n ccy2: 'NZD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TRY/USD': {\n pair: 'TRY/USD',\n ccy1: 'TRY',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TWD/AUD': {\n pair: 'TWD/AUD',\n ccy1: 'TWD',\n ccy2: 'AUD',\n precision: 6,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TWD/CAD': {\n pair: 'TWD/CAD',\n ccy1: 'TWD',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TWD/CHF': {\n pair: 'TWD/CHF',\n ccy1: 'TWD',\n ccy2: 'CHF',\n precision: 7,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TWD/CNH': {\n pair: 'TWD/CNH',\n ccy1: 'TWD',\n ccy2: 'CNH',\n precision: 6,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TWD/DKK': {\n pair: 'TWD/DKK',\n ccy1: 'TWD',\n ccy2: 'DKK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TWD/EUR': {\n pair: 'TWD/EUR',\n ccy1: 'TWD',\n ccy2: 'EUR',\n precision: 7,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TWD/GBP': {\n pair: 'TWD/GBP',\n ccy1: 'TWD',\n ccy2: 'GBP',\n precision: 7,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TWD/HKD': {\n pair: 'TWD/HKD',\n ccy1: 'TWD',\n ccy2: 'HKD',\n precision: 4,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TWD/HUF': {\n pair: 'TWD/HUF',\n ccy1: 'TWD',\n ccy2: 'HUF',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TWD/NOK': {\n pair: 'TWD/NOK',\n ccy1: 'TWD',\n ccy2: 'NOK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TWD/NZD': {\n pair: 'TWD/NZD',\n ccy1: 'TWD',\n ccy2: 'NZD',\n precision: 7,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TWD/SEK': {\n pair: 'TWD/SEK',\n ccy1: 'TWD',\n ccy2: 'SEK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'TWD/USD': {\n pair: 'TWD/USD',\n ccy1: 'TWD',\n ccy2: 'USD',\n precision: 7,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'UAH/AUD': {\n pair: 'UAH/AUD',\n ccy1: 'UAH',\n ccy2: 'AUD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'UAH/CAD': {\n pair: 'UAH/CAD',\n ccy1: 'UAH',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'UAH/CHF': {\n pair: 'UAH/CHF',\n ccy1: 'UAH',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'UAH/DKK': {\n pair: 'UAH/DKK',\n ccy1: 'UAH',\n ccy2: 'DKK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'UAH/EUR': {\n pair: 'UAH/EUR',\n ccy1: 'UAH',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'UAH/GBP': {\n pair: 'UAH/GBP',\n ccy1: 'UAH',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'UAH/HUF': {\n pair: 'UAH/HUF',\n ccy1: 'UAH',\n ccy2: 'HUF',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'UAH/JPY': {\n pair: 'UAH/JPY',\n ccy1: 'UAH',\n ccy2: 'JPY',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'UAH/NOK': {\n pair: 'UAH/NOK',\n ccy1: 'UAH',\n ccy2: 'NOK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'UAH/NZD': {\n pair: 'UAH/NZD',\n ccy1: 'UAH',\n ccy2: 'NZD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'UAH/PLN': {\n pair: 'UAH/PLN',\n ccy1: 'UAH',\n ccy2: 'PLN',\n precision: 4,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'UAH/SEK': {\n pair: 'UAH/SEK',\n ccy1: 'UAH',\n ccy2: 'SEK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'UAH/USD': {\n pair: 'UAH/USD',\n ccy1: 'UAH',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/AUD': {\n pair: 'USD/AUD',\n ccy1: 'USD',\n ccy2: 'AUD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/EUR': {\n pair: 'USD/EUR',\n ccy1: 'USD',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/GBP': {\n pair: 'USD/GBP',\n ccy1: 'USD',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'USD/NZD': {\n pair: 'USD/NZD',\n ccy1: 'USD',\n ccy2: 'NZD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'VND/AUD': {\n pair: 'VND/AUD',\n ccy1: 'VND',\n ccy2: 'AUD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'VND/CAD': {\n pair: 'VND/CAD',\n ccy1: 'VND',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'VND/CHF': {\n pair: 'VND/CHF',\n ccy1: 'VND',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'VND/DKK': {\n pair: 'VND/DKK',\n ccy1: 'VND',\n ccy2: 'DKK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'VND/EUR': {\n pair: 'VND/EUR',\n ccy1: 'VND',\n ccy2: 'EUR',\n precision: 9,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'VND/GBP': {\n pair: 'VND/GBP',\n ccy1: 'VND',\n ccy2: 'GBP',\n precision: 9,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'VND/HUF': {\n pair: 'VND/HUF',\n ccy1: 'VND',\n ccy2: 'HUF',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'VND/JPY': {\n pair: 'VND/JPY',\n ccy1: 'VND',\n ccy2: 'JPY',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'VND/NOK': {\n pair: 'VND/NOK',\n ccy1: 'VND',\n ccy2: 'NOK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'VND/NZD': {\n pair: 'VND/NZD',\n ccy1: 'VND',\n ccy2: 'NZD',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'VND/SEK': {\n pair: 'VND/SEK',\n ccy1: 'VND',\n ccy2: 'SEK',\n precision: 5,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'VND/USD': {\n pair: 'VND/USD',\n ccy1: 'VND',\n ccy2: 'USD',\n precision: 9,\n isInverted: true,\n canBeDelivered: false,\n notDeliverable: true,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ZAR/CAD': {\n pair: 'ZAR/CAD',\n ccy1: 'ZAR',\n ccy2: 'CAD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ZAR/CHF': {\n pair: 'ZAR/CHF',\n ccy1: 'ZAR',\n ccy2: 'CHF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ZAR/CZK': {\n pair: 'ZAR/CZK',\n ccy1: 'ZAR',\n ccy2: 'CZK',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ZAR/EUR': {\n pair: 'ZAR/EUR',\n ccy1: 'ZAR',\n ccy2: 'EUR',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ZAR/GBP': {\n pair: 'ZAR/GBP',\n ccy1: 'ZAR',\n ccy2: 'GBP',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ZAR/HUF': {\n pair: 'ZAR/HUF',\n ccy1: 'ZAR',\n ccy2: 'HUF',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ZAR/PLN': {\n pair: 'ZAR/PLN',\n ccy1: 'ZAR',\n ccy2: 'PLN',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ZAR/RON': {\n pair: 'ZAR/RON',\n ccy1: 'ZAR',\n ccy2: 'RON',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ZAR/TRY': {\n pair: 'ZAR/TRY',\n ccy1: 'ZAR',\n ccy2: 'TRY',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n },\n 'ZAR/USD': {\n pair: 'ZAR/USD',\n ccy1: 'ZAR',\n ccy2: 'USD',\n precision: 5,\n isInverted: true,\n canBeDelivered: true,\n notDeliverable: false,\n isCashDeliverable: false,\n isOptionCurrency: false\n }\n};\n","import type { Reducer } from 'redux';\nimport type { Action } from 'state/actions';\nimport {\n type ReferenceDataState,\n type Client,\n defaultUserInfo,\n type IndexedCurrencyPairs,\n type CurrencyPair,\n type CurrencyPairData,\n} from './referenceDataModel';\nimport {\n defaultFeatureToggles,\n defaultProductsAccess,\n type ClosedDates,\n} from 'state/referenceData/referenceDataModel';\nimport { currencies } from 'data/currencies';\nimport { strictEntries } from 'utils/object';\nimport { isEmpty } from '@sgme/fp';\n\nexport const initialState: ReferenceDataState = {\n instruments: [],\n ccyPairs: addCurrencyPairRuntimeFields(currencies),\n userInfo: defaultUserInfo,\n userClients: {},\n /**\n * default in model\n */\n featureToggles: defaultFeatureToggles,\n productsAccess: defaultProductsAccess,\n espLimits: {},\n localMarketsCcy: [],\n pinnedCompanies: [],\n};\n\nexport const referenceDataReducer: Reducer = (\n state = initialState,\n action: Action,\n): ReferenceDataState => {\n switch (action.type) {\n case 'REFERENCE_DATA_RECEIVED':\n return {\n ...state,\n instruments: action.productTypes,\n userInfo: action.userInfo,\n userClients: toClientsMap(action.userClients),\n featureToggles: action.featureToggles,\n productsAccess: action.productsAccess,\n localMarketsCcy: action.localMarketsCcy || [],\n ccyPairs: updateCcyPairsWithLocalMarket(action.localMarketsCcy || [], state.ccyPairs),\n };\n case 'CLOSED_DATES_RETRIEVED':\n return {\n ...state,\n ccyPairs: updateClosedDates(state.ccyPairs, action.closedDates),\n };\n\n case 'MAX_DATE_SET':\n const existingCcyPair = state.ccyPairs[action.currencyPair];\n return {\n ...state,\n ccyPairs: {\n ...state.ccyPairs,\n [action.currencyPair]: {\n ...existingCcyPair,\n tenorDatesCache: {\n ...existingCcyPair.tenorDatesCache,\n [action.maxTenor]: action.maxDate,\n },\n },\n },\n };\n\n case 'ESP_LIMITS_ADD_CURRENCIES':\n const newCurrencies = action.currencies.filter(ccy => !state.espLimits.hasOwnProperty(ccy));\n if (isEmpty(newCurrencies)) {\n return state;\n }\n return {\n ...state,\n espLimits: newCurrencies.reduce(\n (acc, val) => ({\n ...acc,\n [val]: undefined,\n }),\n state.espLimits,\n ),\n };\n case 'ESP_LIMITS_RETRIEVED':\n return {\n ...state,\n espLimits: { ...state.espLimits, ...action.limits },\n };\n case 'PIN_CLIENT':\n return {\n ...state,\n pinnedCompanies: [...state.pinnedCompanies, action.companyId],\n };\n case 'UNPIN_CLIENT':\n return {\n ...state,\n pinnedCompanies: state.pinnedCompanies.filter(c => c !== action.companyId),\n };\n\n case 'MOVE_UP_PINNED_CLIENT':\n return {\n ...state,\n pinnedCompanies: swapElements(\n state.pinnedCompanies,\n state.pinnedCompanies.indexOf(action.companyId),\n state.pinnedCompanies.indexOf(action.companyId) - 1,\n ),\n };\n\n case 'MOVE_DOWN_PINNED_CLIENT':\n return {\n ...state,\n pinnedCompanies: swapElements(\n state.pinnedCompanies,\n state.pinnedCompanies.indexOf(action.companyId),\n state.pinnedCompanies.indexOf(action.companyId) + 1,\n ),\n };\n\n case 'RETRIEVE_PINNED_CLIENT':\n return {\n ...state,\n pinnedCompanies: action.clients,\n };\n\n default:\n return state;\n }\n};\n\nfunction swapElements(pinnedCompanies: readonly number[], index: number, newIndex: number) {\n if (newIndex >= pinnedCompanies.length || newIndex < 0) {\n return pinnedCompanies;\n }\n\n const pinneds = [...pinnedCompanies];\n const tmp = pinneds[newIndex];\n pinneds[newIndex] = pinneds[index];\n pinneds[index] = tmp;\n return pinneds;\n}\n\nexport function updateCcyPairsWithLocalMarket(\n localMarketsCcy: readonly string[],\n ccyPairs: Readonly,\n) {\n const ccyPairsKey = Object.keys(ccyPairs);\n\n return ccyPairsKey\n .map(ccy => ccyPairs[ccy])\n .map(ccyPair => {\n if (localMarketsCcy.includes(ccyPair.ccy1) || localMarketsCcy.includes(ccyPair.ccy2)) {\n return {\n ...ccyPair,\n canBeDelivered: true,\n };\n }\n return ccyPair;\n })\n .reduce((acc, current) => {\n acc[current.pair] = current;\n return acc;\n }, {} as Record);\n}\n\nfunction toClientsMap(clients: readonly Client[]) {\n return clients.reduce((map, client) => ({ ...map, [client.companyId]: client }), {});\n}\n\nfunction updateClosedDates(\n existingPairs: Readonly,\n closedDates: ClosedDates,\n) {\n return Object.entries(closedDates || {}).reduce(\n (acc, [pair, dates]) => ({\n ...acc,\n [pair]: {\n ...acc[pair],\n closedDates: dates,\n },\n }),\n existingPairs,\n );\n}\n\nfunction addCurrencyPairRuntimeFields(\n currenciesData: Record,\n): Record {\n return Object.fromEntries(\n strictEntries(currenciesData).map(([pair, ccyPairData]) => [\n pair,\n {\n ...ccyPairData,\n closedDates: [],\n tenorDatesCache: {},\n },\n ]),\n );\n}\n","import type { Reducer } from 'redux';\nimport type { Action } from 'state/actions';\nimport {\n type GlobalErrorState,\n GLOBAL_ERROR_AUTH_EXPIRED,\n} from 'state/globalError/globalErrorModel';\n\nexport const globalErrorReducer: Reducer = (\n state: GlobalErrorState = {\n error: null,\n tileId: null,\n executionId: null,\n isOffline: false,\n },\n action: Action,\n): GlobalErrorState => {\n switch (action.type) {\n case 'APP_CRASHED':\n const { error } = action;\n return {\n ...state,\n error: !state.error\n ? `${error?.stack ?? error ?? `internal error in ${action.source}`}`\n : state.error,\n tileId: state.tileId,\n };\n case 'AUTH_EXPIRED':\n return {\n ...state,\n error: GLOBAL_ERROR_AUTH_EXPIRED,\n tileId: state.tileId,\n };\n case 'NO_CLIENTS':\n return {\n ...state,\n error: 'NO_CLIENTS',\n };\n case 'NO_PRODUCTS':\n return {\n ...state,\n error: 'NO_PRODUCTS',\n };\n case 'USER_OFFLINE':\n return {\n ...state,\n isOffline: true,\n };\n case 'DISPLAY_STREAM_ERROR_DETAIL':\n return {\n ...state,\n error: state.error,\n tileId: action.tileId,\n };\n case 'DISPLAY_EXECUTION_ERROR_DETAIL':\n return {\n ...state,\n error: state.error,\n executionId: action.executionId,\n };\n case 'DISPLAY_PROPERTIES_ERROR_DETAIL':\n return {\n ...state,\n error: state.error,\n tileId: action.quoteId,\n };\n case 'CLOSE_ERROR_DETAIL':\n return {\n ...state,\n error: state.error,\n tileId: null,\n executionId: null,\n };\n default:\n return state;\n }\n};\n","import { type StreamingConnectionState, patchConnected } from './streamingConnectionModel';\nimport type { Action } from 'state/actions';\nimport type { Reducer } from 'redux';\n\nconst defaultState: StreamingConnectionState = {\n status: 'INITIALISING',\n};\n\nconst streamingConnectionReducer: Reducer = (\n state: StreamingConnectionState = defaultState,\n action: Action,\n): StreamingConnectionState => {\n switch (action.type) {\n case 'STREAMING_CONNECTED':\n case 'STREAMING_RECONNECTED':\n return {\n status: 'CONNECTED',\n connectionId: action.connectionId,\n degraded: false,\n driver: action.driver,\n };\n case 'STREAMING_DEGRADED':\n return patchConnected({ degraded: true })(state);\n case 'STREAMING_HEALTHY':\n return patchConnected({ degraded: false })(state);\n case 'STREAMING_DISCONNECTED':\n return { status: 'DISCONNECTED', reason: action.reason };\n default:\n return state;\n }\n};\n\nexport { streamingConnectionReducer };\n","import type { Locus, GridState, GridItemPosition } from '../gridLayoutModels';\nimport { defaultHeights, colWidth, defaultOptionHeight } from 'styles/constants';\nimport { addKey } from 'utils/stateMap';\nimport { logger } from 'logging/logger';\nimport type { InstrumentChoice } from 'state/referenceData/referenceDataModel';\n\ninterface TileInfos {\n tileId: string;\n instrument: InstrumentChoice | 'Order' | 'BlotterOrder';\n position?: GridItemPosition;\n}\n\nexport const addGridItem =\n ({ tileId, instrument, position = { top: 0, left: 0 } }: TileInfos) =>\n ({ gridLayout }: GridState): Pick => {\n const height = defaultHeights[instrument] || defaultOptionHeight;\n const { columns, gridItemPositions, gridItemSizes } = gridLayout;\n\n const newGridItemPositions = addKey(gridItemPositions, tileId, position);\n\n const newGridItemSizes = addKey(gridItemSizes, tileId, {\n height,\n width: colWidth,\n });\n\n const colNumber = Math.floor(position.left / colWidth);\n const { top } = position;\n const newTileLocus: Locus = {\n gridItemId: tileId,\n top,\n bottom: top + height,\n };\n const missingColNumber = colNumber + 1 - columns.length;\n const missingColumns =\n missingColNumber > 0 ? Array.from(Array(missingColNumber), () => []) : [];\n\n const newColumns = columns\n .concat(missingColumns)\n .map((column, index) =>\n index !== colNumber ? column : column.concat([newTileLocus]).sort(sortLocus),\n );\n return {\n gridLayout: {\n gridItemPositions: newGridItemPositions,\n gridItemSizes: newGridItemSizes,\n columns: newColumns,\n },\n };\n };\n\nfunction sortLocus(a: Locus, b: Locus) {\n if (a.bottom === b.top) {\n return -1;\n }\n if (a.top === b.bottom) {\n return 1;\n }\n if (a.top < b.top && a.bottom < b.top) {\n return -1;\n }\n if (b.top < a.top && b.bottom < a.top) {\n return 1;\n }\n logger.logError(\n 'invalid grid state: overlapping Loci: {locus_a_s} {locus_b_s}',\n JSON.stringify(a),\n JSON.stringify(b),\n );\n return -1;\n}\n","import type { GridState, GridItemPosition, GridIdleState } from '../gridLayoutModels';\nimport { defaultCashHeight, colWidth } from 'styles/constants';\n\nexport function updateAddTilePositions({\n gridLayout,\n}: GridState): Pick {\n const addTilePositions: GridItemPosition[] = [];\n gridLayout.columns.forEach((column, columnIndex) => {\n let previousBottom = 0;\n column.forEach(position => {\n if (position.top - previousBottom >= defaultCashHeight) {\n const newAddTilePosition: GridItemPosition = {\n top: previousBottom,\n left: columnIndex * colWidth,\n };\n addTilePositions.push(newAddTilePosition);\n }\n previousBottom = position.bottom;\n });\n addTilePositions.push({\n top: previousBottom,\n left: columnIndex * colWidth,\n });\n });\n addTilePositions.push({\n top: 0,\n left: gridLayout.columns.length * colWidth,\n });\n\n return { addTilePositions };\n}\n","import type { Locus, LocusCoordinates, GridLayout } from '../gridLayoutModels';\nimport {\n updateKey,\n updateArrayByMatchingKey,\n type Patcher,\n insertAtIndex,\n filterArrayByMatchingKey,\n} from 'utils/stateMap';\nimport {\n getPositionById,\n getDownwardNeighbourGridItem,\n getUpwardNeighbourGridItem,\n getRightNeighbourGridItemCoordinates,\n getLociById,\n findLocusInsertionIndexInColumn,\n} from './utils';\nimport { colWidth } from 'styles/constants';\n\nconst updateLocusByPixelOffset =\n (pixel: number): Patcher =>\n ({ top, bottom }) => ({\n top: top + pixel,\n bottom: bottom + pixel,\n });\n\nexport const shiftRight =\n (lociCoordinates: readonly LocusCoordinates[] | undefined) =>\n (gridState: GridLayout): GridLayout => {\n if (lociCoordinates === undefined) {\n return {\n ...gridState,\n columns: gridState.columns.concat([[]]),\n };\n }\n return lociCoordinates.reduce(\n (previousGridState, locusCoordinate) =>\n shiftRightOnceGridItemHorizontalPosition(\n previousGridState,\n locusCoordinate.locus.gridItemId,\n ),\n gridState,\n );\n };\n\nfunction shiftRightOnceGridItemHorizontalPosition(\n gridState: GridLayout,\n gridItemId: string,\n): GridLayout {\n // in case we move a multi locus grid item (several col wide),\n // we only shift the leftmost locus to the right\n // . a b c . . => . . b c a .\n const locusToMove = getLociById(gridState, gridItemId)[0];\n\n // get all neighbours to push one col to the right\n const { neighbours, colIndex } = getRightNeighbourGridItemCoordinates(gridState, gridItemId);\n // RECURSION\n // if there are neighbours to push, let them handle recursive propagation\n // before the current state is modified\n const recursivelyObtainedNewState = shiftRight(neighbours)(gridState);\n // !RECURSION\n\n // DELETION UPDATER\n // update columns by deleting the leftmost locus\n const columnWithDeletedLocusUpdater = filterArrayByMatchingKey(\n 'gridItemId',\n gridItemId,\n );\n // !DELETION UPDATER\n\n // INSERTION UPDATER\n // if we have neighbour, we should take their place\n // else we need to search for a spot on the next column\n const insertionLocusIndex =\n neighbours === undefined || neighbours[0] === undefined\n ? findLocusInsertionIndexInColumn(\n locusToMove.locus.top,\n locusToMove.locus.bottom,\n )(recursivelyObtainedNewState.columns[colIndex])\n : neighbours[0].locusIndex;\n\n // update columns by inserting the leftmost locus\n // at the correct position in the next colum\n const columnWithInsertedLocusUpdater = insertAtIndex([locusToMove.locus], insertionLocusIndex);\n // !INSERTION UPDATER\n\n // APPLY COLUMNS UPDATER\n const updatedColumns = recursivelyObtainedNewState.columns.map((column, colNumber) => {\n switch (colNumber) {\n case locusToMove.colIndex:\n return columnWithDeletedLocusUpdater(column);\n case colIndex:\n return columnWithInsertedLocusUpdater(column);\n default:\n return column;\n }\n });\n // !APPLY COLUMNS UPDATER\n\n // UPDATE POSITION\n const newPositions = updateKey(\n recursivelyObtainedNewState.gridItemPositions,\n gridItemId,\n ({ left }) => ({ left: left + colWidth }),\n );\n // !UPDATE POSITION\n\n return {\n ...gridState,\n columns: updatedColumns,\n gridItemPositions: newPositions,\n };\n}\n\nexport function reduceGridItemVerticalOffsetPropagation(\n gridLayout: GridLayout,\n loci: ReadonlyArray>,\n): Pick {\n return loci.reduce(\n (previousGridLayout, { gridItemId }) => ({\n ...previousGridLayout,\n ...updateGridItemVerticalPosition(previousGridLayout, gridItemId),\n }),\n gridLayout,\n );\n}\n\nexport function updateGridItemVerticalPosition(\n gridState: GridLayout,\n gridItemId: string,\n): Pick {\n // compare old position and uppest possible new position\n const oldTop = getPositionById(gridState, gridItemId).top;\n const newTop = Math.max(\n ...getUpwardNeighbourGridItem(gridState, gridItemId).map(({ bottom }) => bottom),\n );\n const deltaPixel = newTop - oldTop;\n // if position wouldn't change, stop propagation of action\n if (deltaPixel === 0) {\n return gridState;\n }\n\n // update item in columns and positions\n const newGridState = {\n ...gridState,\n columns: gridState.columns.map(\n updateArrayByMatchingKey('gridItemId', gridItemId, updateLocusByPixelOffset(deltaPixel)),\n ),\n gridItemPositions: updateKey(gridState.gridItemPositions, gridItemId, () => ({ top: newTop })),\n };\n\n // propagate reduction to downward neighbours\n return reduceGridItemVerticalOffsetPropagation(\n newGridState,\n getDownwardNeighbourGridItem(gridState, gridItemId),\n );\n}\n","import { filterArrayByMatchingKey, removeKey } from 'utils/stateMap';\nimport type { ClientWorkspaceTileDeleted } from 'state/clientWorkspace/clientWorkspaceActions';\nimport type { GridState, Locus, GridLayout } from '../gridLayoutModels';\nimport { getDownwardNeighbourGridItem } from './utils';\nimport { reduceGridItemVerticalOffsetPropagation } from './moveGridItems';\n\nexport const removeGridItem =\n (action: ClientWorkspaceTileDeleted) =>\n ({ gridLayout }: GridState): Pick => {\n const columnUpdater = filterArrayByMatchingKey(\n 'gridItemId',\n action.tileId,\n );\n const newGridItemSizes = removeKey(gridLayout.gridItemSizes, action.tileId);\n // Break if nothing remove\n if (newGridItemSizes === gridLayout.gridItemSizes) {\n return { gridLayout };\n }\n const newGridLayout: GridLayout = {\n gridItemSizes: newGridItemSizes,\n gridItemPositions: removeKey(gridLayout.gridItemPositions, action.tileId),\n columns: gridLayout.columns.map(columnUpdater),\n };\n\n return {\n gridLayout: {\n ...gridLayout,\n ...reduceGridItemVerticalOffsetPropagation(\n newGridLayout,\n getDownwardNeighbourGridItem(gridLayout, action.tileId),\n ),\n },\n };\n };\n","import { isDefined, isEmpty } from '@sgme/fp';\nimport type { GridState } from '../gridLayoutModels';\n\nexport function stripTrailingEmptyColumns({\n gridLayout,\n}: GridState): Pick {\n let columns = gridLayout.columns;\n while (isDefined(columns[columns.length - 1]) && isEmpty(columns[columns.length - 1])) {\n columns = columns.slice(0, columns.length - 1);\n }\n return { gridLayout: { ...gridLayout, columns } };\n}\n","import {\n updateArrayByMatchingKey,\n type Patcher,\n updateKey,\n composeLeftPatcher,\n insertAtIndex,\n entriesDiff,\n filterArrayByMatchingKey,\n} from 'utils/stateMap';\nimport type { GridItemSizeChange } from 'state/gridLayout/gridLayoutActions';\nimport type { Locus, GridItemSize, Column, GridLayout, GridState } from '../gridLayoutModels';\nimport { colWidth } from 'styles/constants';\nimport {\n getSizeById,\n getDownwardNeighbourGridItem,\n getRightNeighbourGridItemCoordinates,\n getLociById,\n findLocusInsertionIndexInColumn,\n} from './utils';\nimport { reduceGridItemVerticalOffsetPropagation, shiftRight } from './moveGridItems';\nimport { extract } from 'utils/object';\n\nconst verticalSizeChanged =\n (action: GridItemSizeChange, oldSize: GridItemSize) =>\n (gridLayout: GridLayout): Partial => {\n const deltaHeight = action.size.height - oldSize.height;\n if (deltaHeight === 0) {\n return gridLayout;\n }\n const gridItemSize = getSizeById(gridLayout, action.gridItemId);\n const columnUpdater = updateArrayByMatchingKey(\n 'gridItemId',\n action.gridItemId,\n locus => ({ bottom: locus.top + gridItemSize.height }),\n );\n const columns = gridLayout.columns.map(columnUpdater);\n const newGridState = { ...gridLayout, columns };\n\n return reduceGridItemVerticalOffsetPropagation(\n newGridState,\n getDownwardNeighbourGridItem(newGridState, action.gridItemId),\n );\n };\n\nconst updateGridItemSizeByGridItemId =\n (gridItemId: string, patcher: Patcher) => (previousGridState: GridLayout) => ({\n gridItemSizes: updateKey(previousGridState.gridItemSizes, gridItemId, patcher),\n });\n\nconst horizontalSizeChanged =\n (action: GridItemSizeChange, oldSize: GridItemSize) =>\n (gridState: GridLayout): GridLayout => {\n const deltaCol =\n Math.floor(action.size.width / colWidth) - Math.floor(oldSize.width / colWidth);\n const templateLocus = getLociById(gridState, action.gridItemId)[0].locus;\n\n const findLocusInsertionIndex = findLocusInsertionIndexInColumn(\n templateLocus.top,\n templateLocus.bottom,\n );\n\n if (deltaCol === 0) {\n // small size change that should not trigger any columns update\n return gridState;\n } else if (deltaCol > 0) {\n // a gridItem increase in size\n let gridStateTmp: GridLayout = gridState;\n // for each additional column the grid item will now occupy\n for (let i = 0; i < deltaCol; i++) {\n // get neighbouring grid items to push rightward\n const { neighbours, colIndex } = getRightNeighbourGridItemCoordinates(\n gridStateTmp,\n action.gridItemId,\n );\n\n const getInsertionLocusIndex = (column: Column) =>\n neighbours === undefined || neighbours[0] === undefined\n ? findLocusInsertionIndex(column)\n : neighbours[0].locusIndex;\n\n gridStateTmp = composeLeftPatcher(\n // recursive update of neighbours\n shiftRight(neighbours),\n // pre emptive update of current item size of one addition column width wide\n updateGridItemSizeByGridItemId(action.gridItemId, ({ width }) => ({\n width: width + colWidth,\n })),\n // add loci to the immediate right hand side column\n ({ columns }) => ({\n columns: columns.map((column, index) =>\n index !== colIndex\n ? column\n : insertAtIndex([{ ...templateLocus }], getInsertionLocusIndex(column))(column),\n ),\n }),\n )(gridStateTmp);\n }\n // trigger upward update on all modified tiles and their immediate downward neighbour\n gridStateTmp = entriesDiff(\n gridState.gridItemPositions,\n gridStateTmp.gridItemPositions,\n ).reduce(\n (previousGridState, [gridItemId]) => ({\n ...previousGridState,\n ...reduceGridItemVerticalOffsetPropagation(\n previousGridState,\n [{ gridItemId }].concat(getDownwardNeighbourGridItem(previousGridState, gridItemId)),\n ),\n }),\n gridStateTmp,\n );\n // trigger upward update on all immediate downward neighbour of the current tile\n return {\n ...gridStateTmp,\n ...reduceGridItemVerticalOffsetPropagation(\n gridStateTmp,\n getDownwardNeighbourGridItem(gridStateTmp, action.gridItemId),\n ),\n };\n } else {\n const deleteLocusInColumns = getLociById(gridState, action.gridItemId)\n .slice(1)\n .map(extract('colIndex'));\n // get downward neighbours\n const downWardNeighbours = getDownwardNeighbourGridItem(gridState, action.gridItemId);\n // delete deltaCol loci\n const colUpdater = filterArrayByMatchingKey(\n 'gridItemId',\n action.gridItemId,\n );\n const columns = gridState.columns.map((column, index) =>\n deleteLocusInColumns.includes(index) ? colUpdater(column) : column,\n );\n return {\n ...gridState,\n ...reduceGridItemVerticalOffsetPropagation({ ...gridState, columns }, downWardNeighbours),\n };\n }\n };\n\nexport const gridItemSizeChanged =\n (action: GridItemSizeChange) =>\n ({ gridLayout }: GridState): Pick => {\n const {\n gridItemId,\n size: { height, width },\n } = action;\n const oldSize = getSizeById(gridLayout, gridItemId);\n const updateHeight = updateGridItemSizeByGridItemId(gridItemId, () => ({\n height,\n }));\n const updateWidth = updateGridItemSizeByGridItemId(gridItemId, () => ({\n width,\n }));\n return {\n gridLayout: composeLeftPatcher(\n updateHeight,\n verticalSizeChanged(action, oldSize),\n horizontalSizeChanged(action, oldSize),\n updateWidth,\n )(gridLayout),\n };\n };\n","import type {\n GridState,\n GridDraggingState,\n GridItemPosition,\n GridLayout,\n GridIdleState,\n Locus,\n Column,\n} from '../gridLayoutModels';\nimport {\n getDownwardNeighbourGridItem,\n getPositionById,\n getSizeById,\n getOccupiedColumnsIndicesByCoordinates,\n findForceInsertionIndexInColumn,\n} from './utils';\nimport { filterArrayByMatchingKey, updateKey, insertAtIndex } from 'utils/stateMap';\nimport { reduceGridItemVerticalOffsetPropagation } from './moveGridItems';\nimport { colWidth } from 'styles/constants';\n\nexport const setIdleStatus = (gridState: GridState): Pick => {\n if (gridState.draggingStatus === 'IDLE') {\n return gridState;\n }\n return { draggingStatus: 'IDLE' };\n};\n\nexport const setDraggingStatus =\n (draggingGridItemId: string) =>\n (gridState: GridState): Pick => {\n if (gridState.draggingStatus === 'DRAGGING') {\n return gridState;\n }\n return { draggingStatus: 'DRAGGING', draggingGridItemId };\n };\n\nfunction isDragging(gridState: GridState): gridState is GridDraggingState {\n return gridState.draggingStatus === 'DRAGGING';\n}\n\nexport const dragGridItem =\n (position: GridItemPosition) =>\n (gridState: GridState): Pick | null => {\n if (!isDragging(gridState)) {\n return null;\n }\n const draggingGridLayout = {\n gridItemSizes: gridState.gridLayout.gridItemSizes,\n ...move(gridState.draggingGridItemId, gridState.gridLayout, position),\n };\n\n return { draggingGridLayout };\n };\n\nfunction move(gridItemId: string, layout: GridLayout, dragPosition: GridItemPosition) {\n // correct position\n const position: GridItemPosition = {\n top: dragPosition.top,\n left: Math.floor(dragPosition.left / colWidth) * colWidth,\n };\n // get size\n const size = getSizeById(layout, gridItemId);\n // get original coordinates\n const originalPosition = getPositionById(layout, gridItemId);\n // get origin downward neighbours\n const downwardNeighbours = getDownwardNeighbourGridItem(layout, gridItemId);\n\n // remove dragged item from columns\n const originColumns = getOccupiedColumnsIndicesByCoordinates(originalPosition.left, size.width);\n const filterOrigin = filterArrayByMatchingKey('gridItemId', gridItemId);\n let columns = layout.columns.map((column, index) =>\n originColumns.includes(index) ? filterOrigin(column) : column,\n );\n\n // update dragged item position\n const gridItemPositions = updateKey(layout.gridItemPositions, gridItemId, () => ({\n ...position,\n }));\n\n // force insertion to new position\n const destinationColumns = getOccupiedColumnsIndicesByCoordinates(position.left, size.width);\n // if item is dragged to the right of the workspace, add columns to receive loci\n destinationColumns.forEach(colIndex => {\n while (columns.length <= colIndex) {\n columns.push([]);\n }\n });\n const newLocus: Locus = {\n gridItemId,\n top: position.top,\n bottom: position.top + size.height,\n };\n const indexFinder = findForceInsertionIndexInColumn(position.top);\n const insertDestination = (column: Column): Column => {\n const insertionIndex = indexFinder(column);\n return insertAtIndex([newLocus], insertionIndex)(column);\n };\n columns = columns.map((column, index) =>\n destinationColumns.includes(index) ? insertDestination(column) : column,\n );\n\n const newLayout: GridLayout = {\n ...layout,\n columns,\n gridItemPositions,\n };\n\n // get new downward neighbours\n const destinationDownwardNeighbours = getDownwardNeighbourGridItem(newLayout, gridItemId);\n\n // push every destination loci downward\n\n return reduceGridItemVerticalOffsetPropagation(newLayout, [\n newLocus,\n ...downwardNeighbours,\n ...destinationDownwardNeighbours,\n ]);\n\n // return layout;\n}\n\nexport const submitDraggingLayout = (gridState: GridState): GridState | null => {\n if (isDragging(gridState)) {\n return {\n draggingStatus: 'IDLE',\n gridLayout: gridState.draggingGridLayout,\n addTilePositions: [],\n };\n }\n return null;\n};\n","import type { ClientWorkspaceTileRestored } from 'state/clientWorkspace/clientWorkspaceActions';\nimport type { Columns, GridState } from '../gridLayoutModels';\nimport type { SavedTileSize, SavedTilePosition } from 'api/workspaceService/model';\nimport { colWidth } from 'styles/constants';\n\nexport const restoreGridItem =\n ({ tileId, savedTile: { position, size } }: ClientWorkspaceTileRestored) =>\n ({ gridLayout: { columns, gridItemPositions, gridItemSizes } }: GridState) => ({\n gridLayout: {\n columns: addLoci(columns, tileId, position, size),\n gridItemPositions: {\n ...gridItemPositions,\n [tileId]: { top: position.top, left: position.colPosition * colWidth },\n },\n gridItemSizes: {\n ...gridItemSizes,\n [tileId]: { height: size.height, width: size.colSize * colWidth },\n },\n },\n });\n\nfunction addLoci(\n columns: Columns,\n gridItemId: string,\n { top, colPosition }: SavedTilePosition,\n { height, colSize }: SavedTileSize,\n) {\n let newColumns = [...columns];\n const columnIndexes = Array.from(Array(colSize), (_item, index) => index + colPosition);\n const maxIndex = Math.max(...columnIndexes);\n if (newColumns.length <= maxIndex) {\n const missingColNumber = maxIndex + 1 - newColumns.length;\n const missingColumns =\n missingColNumber > 0 ? Array.from(Array(missingColNumber), () => []) : [];\n\n newColumns = newColumns.concat(missingColumns);\n }\n columnIndexes.forEach(index => {\n newColumns[index] = [...newColumns[index], { top, bottom: top + height, gridItemId }].sort(\n ({ top: a }, { top: b }) => a - b,\n );\n });\n return newColumns;\n}\n","import type { GridState } from '../gridLayoutModels';\nimport { type Patcher, composeLeftPatcher } from 'utils/stateMap';\nimport type { Action } from 'state/actions';\nimport { addGridItem } from './addGridItem';\nimport { updateAddTilePositions } from './updateAddTilePositions';\nimport { removeGridItem } from './removeGridItem';\nimport { stripTrailingEmptyColumns } from './stripTrailingEmptyColumns';\nimport { gridItemSizeChanged } from './gridItemSizeChange';\nimport { setDraggingStatus, dragGridItem, submitDraggingLayout } from './dragGridItem';\nimport { restoreGridItem } from './restoreGridItem';\n\nexport const gridStatePatcher = (action: Action): Patcher => {\n switch (action.type) {\n case 'CLIENTWORKSPACE_NEW_TILE_ADDED':\n case 'CLIENTWORKSPACE_TILE_DUPLICATED':\n case 'CLIENTWORKSPACE_TILE_REOPENED':\n return composeLeftPatcher(addGridItem(action), updateAddTilePositions);\n case 'CLIENTWORKSPACE_TILE_RESTORED':\n return composeLeftPatcher(restoreGridItem(action), updateAddTilePositions);\n case 'CLIENTWORKSPACE_TILE_DELETED':\n return composeLeftPatcher(\n removeGridItem(action),\n stripTrailingEmptyColumns,\n updateAddTilePositions,\n );\n case 'GRID_ITEM_SIZE_CHANGED':\n return composeLeftPatcher(\n gridItemSizeChanged(action),\n stripTrailingEmptyColumns,\n updateAddTilePositions,\n );\n case 'GRID_ITEM_DRAG':\n return composeLeftPatcher(\n setDraggingStatus(action.gridItemId),\n dragGridItem(action.position),\n );\n case 'GRID_ITEM_DRAG_END':\n return composeLeftPatcher(\n submitDraggingLayout,\n stripTrailingEmptyColumns,\n updateAddTilePositions,\n );\n }\n return () => null;\n};\n","import type { Reducer } from 'redux';\nimport type { Action } from 'state/actions';\nimport type { InstrumentChoice } from 'state/referenceData/referenceDataModel';\nimport type {\n GridStateCollection,\n GridIdleState,\n GridLayout,\n GridItemPosition,\n} from '../gridLayoutModels';\nimport { addKey, updateKey, removeKey } from 'utils/stateMap';\nimport { gridStatePatcher } from './gridStatePatcher';\n\nexport const defaultLayout: GridLayout = {\n columns: [[]],\n gridItemSizes: {},\n gridItemPositions: {},\n};\n\nconst defaultAddTilePositions: readonly GridItemPosition[] = [\n {\n top: 0,\n left: 0,\n },\n];\n\nexport const defaultGridState: GridIdleState = {\n draggingStatus: 'IDLE',\n gridLayout: defaultLayout,\n addTilePositions: defaultAddTilePositions,\n};\n\nconst defaultGridCollection: GridStateCollection = {};\n\nconst gridLayoutAuthorizedInstruments: ReadonlyArray = [\n 'Cash',\n 'Option',\n 'Swap',\n 'TargetAccumulator',\n 'ForwardAccumulator',\n];\nexport const gridCollectionReducer: Reducer = (\n gridLayoutCollection = defaultGridCollection,\n action: Action,\n) => {\n switch (action.type) {\n case 'CLIENTWORKSPACE_TAB_ADDED':\n return addKey(gridLayoutCollection, action.tabId, defaultGridState);\n\n case 'CLIENTWORKSPACE_TAB_REMOVED':\n return removeKey(gridLayoutCollection, action.tabId);\n case 'CLIENTWORKSPACE_NEW_TILE_ADDED':\n case 'CLIENTWORKSPACE_TILE_DUPLICATED':\n case 'CLIENTWORKSPACE_TILE_REOPENED':\n if (gridLayoutAuthorizedInstruments.includes(action.instrument)) {\n return updateKey(gridLayoutCollection, action.clientWorkspaceId, gridStatePatcher(action));\n }\n break;\n case 'CLIENTWORKSPACE_TILE_RESTORED':\n const { instrument, productName } = action.savedTile;\n const instrumentChoice: InstrumentChoice =\n instrument !== 'Accumulator'\n ? instrument\n : productName === 'FxForwardAccumulator'\n ? 'ForwardAccumulator'\n : 'TargetAccumulator';\n if (gridLayoutAuthorizedInstruments.includes(instrumentChoice)) {\n return updateKey(gridLayoutCollection, action.clientWorkspaceId, gridStatePatcher(action));\n }\n break;\n case 'CLIENTWORKSPACE_TILE_DELETED':\n if (\n gridLayoutCollection[action.clientWorkspaceId]!.gridLayout.gridItemPositions[\n action.tileId\n ] === undefined\n ) {\n return gridLayoutCollection;\n }\n return updateKey(gridLayoutCollection, action.clientWorkspaceId, gridStatePatcher(action));\n case 'GRID_ITEM_SIZE_CHANGED':\n case 'GRID_ITEM_DRAG':\n case 'GRID_ITEM_DRAG_END':\n return updateKey(gridLayoutCollection, action.gridId, gridStatePatcher(action));\n }\n return gridLayoutCollection;\n};\n","import type { Action } from 'state/actions';\nimport type { Reducer } from 'redux';\nimport type { SessionState } from './sessionModel';\n\nconst defaultState: SessionState = {\n isValid: true,\n};\n\nexport const sessionReducer: Reducer = (state = defaultState, action: Action) => {\n switch (action.type) {\n case 'NOTIFY_DISCONNECTION':\n return {\n ...state,\n isValid: false,\n logoffReason: action.reason,\n };\n\n default:\n return state;\n }\n};\n","import type { HedgeType } from 'state/share/productModel/litterals';\nimport type { PriceType } from 'state/fxOptions/fxOptionsModel';\n\nexport const dateInputCultureInfoOptions = ['en', 'fr'] as const;\nexport type DateInputCultureInfo = typeof dateInputCultureInfoOptions[number];\n\nexport const booleanUserPrefsKeys = [\n 'oneClickExecution',\n 'resetTileOnSuccessfulExecution',\n 'showSwapPoints',\n 'showDeltaStrike',\n 'showMyMainDeals',\n 'optionOneWayQuotation',\n 'optionDisplayMidVolatility',\n 'optionStrategyGroupLegs',\n 'optionExpandGreekAndMkt',\n 'optionAlignCurrencies',\n 'orderQuickLimit',\n 'extendedSwapPrecision',\n 'splitNotifications',\n] as const;\n\nexport const autoCloseGrowlAfterChoices = [null, 5000, 15000, 60000] as const;\nexport type AutoCloseGrowlAfter = typeof autoCloseGrowlAfterChoices[number];\n\nexport type BooleanUserPrefKeys = typeof booleanUserPrefsKeys[number];\n\nexport type BooleanUserPref = Record;\n\nexport const accountLengthOptions = ['Long', 'Short'] as const;\nexport type AccountLengthOption = typeof accountLengthOptions[number];\n\ninterface IUserPreferencesData {\n dateInputCultureInfo: DateInputCultureInfo;\n autoCloseGrowlAfter: AutoCloseGrowlAfter;\n defaultNotional: string | null;\n emails: readonly string[];\n accountNameLength: AccountLengthOption;\n defaultHedgeType: HedgeType;\n defaultPriceType: PriceType;\n splitNotificationsEmailsCash: readonly string[];\n splitNotificationsEmailsOrders: readonly string[];\n splitNotificationsEmailsOptions: readonly string[];\n}\n\nexport type UserPreferencesData = Readonly;\n\nexport interface UserPreferencesState {\n showUserPreferences: boolean;\n data: UserPreferencesData;\n}\n\nexport const defaultUserPreferenceData: UserPreferencesData = {\n dateInputCultureInfo: 'en',\n autoCloseGrowlAfter: null,\n showSwapPoints: true,\n showDeltaStrike: false,\n splitNotifications: false,\n resetTileOnSuccessfulExecution: true,\n defaultNotional: null,\n optionOneWayQuotation: true,\n optionDisplayMidVolatility: true,\n optionStrategyGroupLegs: false,\n optionExpandGreekAndMkt: false,\n optionAlignCurrencies: false,\n showMyMainDeals: true,\n emails: [],\n accountNameLength: 'Long',\n orderQuickLimit: true,\n extendedSwapPrecision: false,\n oneClickExecution: false,\n defaultHedgeType: 'Live',\n defaultPriceType: 'AMOUNT',\n splitNotificationsEmailsCash: [],\n splitNotificationsEmailsOrders: [],\n splitNotificationsEmailsOptions: [],\n};\n","import type { Reducer } from 'redux';\nimport type { Action } from 'state/actions';\n\nexport const userPreferenceShowReducer: Reducer = (state = false, action: Action) => {\n switch (action.type) {\n case 'USER_PREFERENCES_TOGGLE_MODAL':\n return action.open;\n }\n return state;\n};\n","import type { Reducer } from 'redux';\nimport type { Action } from 'state/actions';\nimport {\n defaultUserPreferenceData,\n type UserPreferencesData,\n} from 'state/userPreferences/userPreferencesModel';\n\nexport const userPreferenceDataReducer: Reducer = (\n state = defaultUserPreferenceData,\n action: Action,\n) => {\n switch (action.type) {\n case 'USER_PREFERENCES_DATA_RECEIVED':\n if (action.data) {\n return { ...state, ...action.data };\n }\n break;\n case 'USER_PREFERENCES_DATA_CHANGED':\n return {\n ...state,\n ...action.patch,\n };\n }\n return state;\n};\n","import { combineReducers } from 'redux';\nimport type { UserPreferencesState } from '../userPreferencesModel';\nimport { userPreferenceShowReducer } from './userPreferencesShowReducer';\nimport { userPreferenceDataReducer } from './userPreferencesDataReducer';\n\nexport const userPreferencesReducer = combineReducers({\n showUserPreferences: userPreferenceShowReducer,\n data: userPreferenceDataReducer,\n});\n","import type { BlotterData } from '../blotterModel';\nimport type { TradeBlotterEntry, BlotterEntry } from '../blotterEntryModel';\nimport { isEmpty } from '@sgme/fp';\n\nexport const integrateTrades = (\n currentTrades: BlotterData,\n newTrades: readonly TradeBlotterEntry[],\n): BlotterData => {\n if (isEmpty(newTrades)) {\n return currentTrades;\n }\n\n const tradesToAdd = newTrades.filter(trade => {\n const existingTrade = currentTrades[trade.id];\n return existingTrade === undefined || existingTrade.values.updateTime < trade.values.updateTime;\n });\n\n const strategyNewChildrenIds: Record = {};\n\n const updatedTrades = tradesToAdd.reduce(\n (acc, val) => {\n acc[val.id] = val;\n if (val.strategyReference) {\n const childrenIds = strategyNewChildrenIds[val.strategyReference];\n strategyNewChildrenIds[val.strategyReference] = childrenIds\n ? [...childrenIds, val.id]\n : [val.id];\n }\n return acc;\n },\n { ...currentTrades } as Record,\n );\n\n Object.entries(strategyNewChildrenIds).forEach(updateChildrenIds(updatedTrades));\n\n return updatedTrades;\n};\n\nconst updateChildrenIds =\n (trades: Record) =>\n ([stratId, newChildIds]: [string, readonly string[]]) => {\n const strategy = trades[stratId] as TradeBlotterEntry;\n if (strategy === undefined) {\n return;\n }\n const { childrenIds: existingChildrenIds = [] } = strategy;\n const childIdsToAdd = newChildIds.filter(childId => !existingChildrenIds.includes(childId)); // remove duplicates\n if (!isEmpty(childIdsToAdd)) {\n trades[stratId] = {\n ...strategy,\n childrenIds: [...existingChildrenIds, ...childIdsToAdd],\n };\n }\n };\n","import type { Side } from '../share/productModel/litterals';\nimport { makeValuesPredicate } from '@sgme/fp';\nimport type { BlotterOrderInputs } from '../blotter/blotterEntryModel';\nimport type { BlotterOrderLimitInputs } from '../blotter/blotterEntryModel';\nimport type { BlotterEntry, OrderBlotterLimitEntry } from '../blotter/blotterEntryModel';\nimport { limitOrderTypes } from './fxOrdersModel';\n\nconst possiblePriceFields = ['margin', 'limitPrice', 'customerPrice'] as const;\nconst isPriceField = makeValuesPredicate(possiblePriceFields);\n\nexport const isOrderBlotterLimitEntry = (order: BlotterEntry): order is OrderBlotterLimitEntry =>\n // @ts-ignore\n limitOrderTypes.includes(order.values.product);\n\nexport const isBlotterOrderLimitInputs = (\n patch: Partial,\n): patch is BlotterOrderLimitInputs => Object.keys(patch).some(isPriceField);\n\nexport function getCurrentPriceField>(patch: Partial) {\n return Object.keys(patch).find(isPriceField) ?? null;\n}\n\nexport function getPriceWith(way: Side | null, priceType: string | number) {\n return (price: number, margin: string | number) => {\n const calculatePrice = calculatePriceWith(price, Number(margin));\n const subtractMarginFromPrice = calculatePrice('subtract');\n const addMarginFromPrice = calculatePrice('add');\n\n if (\n (priceType === 'limitPrice' && way === 'Sell') ||\n (priceType !== 'limitPrice' && way === 'Buy')\n ) {\n return subtractMarginFromPrice;\n } else {\n return addMarginFromPrice;\n }\n };\n}\n\nfunction calculatePriceWith(price: number, margin: number) {\n return (operation: string) => {\n const marginValue = operation === 'add' ? margin : margin * -1;\n\n return parseFloat((price + marginValue / 10000).toFixed(5)).toString();\n };\n}\n","import type { IFxOrderValues, OrderType } from 'state/fxOrders/fxOrdersModel';\nimport { isAlgoOrder } from 'state/fxOrders/fxOrdersModel';\nimport type {\n OmsOrderSubmissionPayload,\n OmsOrderValidationResponse,\n OrderValidationDetail,\n OrderValidationResponse,\n} from 'api/order/oms';\nimport { type DayAndTime, extractDayAndTime, toUtc } from 'utils/dateFormats';\nimport { format, parseISO } from 'date-fns';\nimport { mapOrDefault } from 'utils/optional';\nimport { isDefined } from '@sgme/fp';\n\nexport const getLimitPrice = (\n response: OmsOrderValidationResponse,\n orderType: OrderType,\n allowOrderTakeProfitMargin: boolean,\n) => {\n //todo 4466 - remove toggleCheck once featureToggle is enabled\n if (orderType === 'TakeProfit' && allowOrderTakeProfitMargin) {\n return response.limitPrice;\n }\n if (isAlgoOrder(orderType)) {\n return isDefined(response.defaultPrice) ? response.defaultPrice : undefined;\n }\n\n //currently limitPrice is not sent back neither consumed for other type of orders\n return undefined;\n};\n\nexport const extractAndComputeOrderValidationDetails = (\n response: OmsOrderValidationResponse,\n orderType: OrderType,\n allowOrderTakeProfitMargin: boolean\n): OrderValidationResponse => {\n const validationResponseDetailContent = response.validationResponseDetailContent.reduce(\n (acc, omsError) => {\n const field = omsFieldToStateField[omsError.field as ResponseOmsSubmissionField];\n if (field === undefined) {\n return acc;\n }\n const code = `error-oms-${omsError.errorCode}`;\n const error: OrderValidationDetail = {\n code,\n field,\n description: omsError.errorDescription,\n };\n return [...acc, error];\n },\n [] as readonly OrderValidationDetail[],\n );\n\n const isAlgo = isAlgoOrder(orderType);\n const { day: expiryDay, time: expiryTime } = parseAndExtractDayAndTime(response.expiryDay);\n const maturityDay = parseAndExtractDay(response.maturityDay);\n\n return {\n isReadyToSubmit: response.isReadyToSubmit,\n validationDetails: validationResponseDetailContent,\n expiryDay,\n expiryTime,\n maturityDay: isAlgo ? maturityDay : undefined,\n limitPrice: getLimitPrice(response, orderType, allowOrderTakeProfitMargin),\n ...(allowOrderTakeProfitMargin && orderType === 'TakeProfit'\n ? { customerPrice: response.customerPrice }\n : {}),\n margin: response.margin,\n fixingTypes: response.fixingTypes,\n isCcyForcedBidAsk: response.isCcyForcedBidAsk,\n isStandardGroup: response.isStandardGroup,\n fixingTimesOfSelectedType: response.fixingTimesOfSelectedType,\n sourceNameOfSelectedType: response.sourceNameOfSelectedType,\n canModifyMarginInBps: response.canModifyMarginInBps,\n marginInBps: response.marginInBps,\n fixingMarginType: response.fixingMarginType,\n ndfFixingDate: response.ndfFixingDate,\n ndfFixingSource: response.ndfFixingSource\n };\n};\n\nexport type ResponseOmsSubmissionField = keyof OmsOrderSubmissionPayload & 'tenor' & 'maturityDate';\nconst omsFieldToStateField: Record = {\n bdrId: undefined,\n bdrIni: undefined,\n ulysseLogin: undefined,\n owner: undefined,\n ccyPair: 'currencyPair',\n amountInCcy1: 'amount',\n amountInCcy2: 'amount',\n customerPrice: 'customerPrice',\n expiryDay: 'expiryDay',\n expiryTime: 'expiryTime',\n emails: 'emails',\n limitPrice: 'limitPrice',\n triggerMode: 'trigger',\n way: 'way',\n isGtc: 'isGtc',\n maturityDateString: 'maturityDate',\n maturityDate: 'maturityDate',\n tenor: 'maturityDate',\n startDateUtc: 'startDate',\n endDateUtc: 'expiryDay',\n clipSize: 'clipSize',\n clippingMode: 'clippingMode',\n liquidityPool: 'liquidityPool',\n dodging: 'randomize',\n spreadCapture: 'spreadCapture',\n alphaSeeker: 'alphaSeeker',\n speed: 'speed',\n fixingDateUtc: 'fixingDateUtc',\n fixingPriceType: 'fixingPriceType',\n margin: 'margin',\n};\n\nexport const parseAndExtractDayAndTime = mapOrDefault(\n (receivedDateTime: string): Partial => extractDayAndTime(parseISO(receivedDateTime)),\n { day: undefined, time: undefined },\n);\n\nexport const parseAndExtractDay = (receivedDate: string | null): string | undefined =>\n receivedDate ? format(toUtc(parseISO(receivedDate)), 'yyyy-MM-dd') : undefined;\n","import type { OmsOrderSubmissionPayload, OmsOrderValidationResponse } from 'api/order/oms';\nimport type {\n BlotterEntry,\n BlotterOrderAllValuesKeys,\n BlotterOrderValues,\n OrderBlotterEntry,\n TradeBlotterEntry,\n TradeType,\n} from 'state/blotter/blotterEntryModel';\nimport type { BlotterData } from 'state/blotter/blotterModel';\nimport type { IBlotterOrderNotificationData, IBlotterTradeNotificationData } from 'bootstrap/streams';\nimport type { EffectsExtraArgument } from 'state';\nimport { distinct } from 'utils/array';\nimport { logger } from 'logging/logger';\nimport { extract } from 'utils/object';\nimport {\n type FixingMarginType,\n isAlgoOrder,\n isLimitOrder,\n type LiquidityPool,\n type OrderType,\n} from 'state/fxOrders/fxOrdersModel';\nimport { extractDayAndTime } from 'utils/dateFormats';\nimport { getLimitPrice, parseAndExtractDay, parseAndExtractDayAndTime } from 'epics/order/utils';\nimport type { Side } from '../../state/share/productModel/litterals';\nimport { isDefined } from '@sgme/fp';\n\nconst nullifyEmptyDate = (date: string | null) =>\n date === '' || (date !== null && date.includes('0001-01-01')) ? null : date;\n\nexport const tradeNotificationToTradeBlotterEntryWith =\n (getDateNow: EffectsExtraArgument['getDateNow']) =>\n (data: IBlotterTradeNotificationData, childrenIds?: readonly string[]): TradeBlotterEntry => ({\n instrument: data.blotterType,\n id: data.id,\n childrenIds,\n strategyReference: data.strategyReference,\n receivedDate: getDateNow().getTime(),\n electronicReference: data.electronicReference,\n values: {\n counterpartyBdrId: data.counterpartyBdrId,\n account: data.account,\n accountLongName: data.accountLongName,\n currencyPair: data.currencyPair,\n date: data.date,\n dealtAmount: data.dealtAmount,\n dealtCurrency: data.dealtCurrency,\n farDealtAmount: data.farDealtAmount,\n contraAmount: data.contraAmount,\n contraCurrency: data.contraCurrency,\n farContraAmount: data.farContraAmount,\n points: data.points,\n product: data.product as TradeType,\n spot: data.spot,\n status: data.status,\n salesFullName: data.salesFullName,\n venue: data.venue,\n way: data.way,\n expiry: nullifyEmptyDate(data.expiry),\n premium: data.premium,\n strike: data.strike,\n farDate: data.farDate,\n nearDate: data.nearDate,\n nearRate: data.nearRate,\n farRate: data.farRate,\n spotDate: data.spotDate,\n portfolio: data.portfolio,\n premiumCurrency: data.premiumCurrency,\n premiumSide: data.premiumSide === 'Receive' || data.premiumSide === 'Pay' ? data.premiumSide : null,\n updateTime: data.updateTime,\n electronicAccount: data.electronicAccount,\n optionType: data.optionType,\n cutOffPlace: data.cutOffPlace,\n deliveryDate: data.deliveryDate,\n deliveryType: data.deliveryType,\n premiumPaymentDate: data.premiumPaymentDate,\n },\n inputs: {},\n warnings: {},\n errors: {},\n });\n\nexport const getChildrenIdsInBlotterData = (\n tradesList: BlotterData,\n trade: TradeBlotterEntry,\n): readonly string[] | undefined => {\n if (trade.instrument !== 'Option') {\n return undefined;\n }\n\n return Object.values(tradesList).filter(isChildrenOf(trade.id)).map(extract('id'));\n};\n\nconst isChildrenOf =\n (strategyId: string) =>\n (entry: BlotterEntry | undefined): entry is TradeBlotterEntry =>\n entry !== undefined && entry.instrument !== 'Order' && entry.strategyReference === strategyId;\n\nexport const getChildrenIds = (\n tradeNotificationsData: readonly IBlotterTradeNotificationData[],\n tradeData: IBlotterTradeNotificationData,\n): readonly string[] | undefined => {\n if (tradeData.blotterType !== 'Option') {\n return undefined;\n }\n\n return tradeNotificationsData\n .filter(trade => trade.strategyReference === tradeData.id)\n .map(extract('id'))\n .filter(distinct);\n};\n\nexport const orderNotificationToOrderBlotterEntryWith = (\n getDateNow: EffectsExtraArgument['getDateNow'],\n parse: (dateString: string) => Date,\n) => {\n const mapValues = mapValuesWith(parse);\n const convertExpiryToUserTimezone = convertExpiryToUserTimezoneWith(parse);\n return (data: IBlotterOrderNotificationData): OrderBlotterEntry => {\n const localExpiryData = convertExpiryToUserTimezone(data);\n return {\n id: data.id,\n instrument: 'Order',\n receivedDate: getDateNow().getTime(),\n values: mapValues(data.orderType as OrderType, data, localExpiryData) as any, // Sorry, I didn't manage to make Typescript do what I wanted\n inputs: {},\n errors: {},\n warnings: {},\n mode: 'Display',\n modeStatus: 'Idle',\n };\n };\n};\n\ninterface ExpiryData {\n isGtc: boolean | null;\n expiryDay: string | null;\n expiryTime: string | null;\n}\n\nexport const convertExpiryToUserTimezoneWith =\n (parse: (dateString: string) => Date) =>\n (data: Pick): ExpiryData => {\n if (data.goodTillCancelled) {\n return {\n isGtc: true,\n expiryDay: null,\n expiryTime: null,\n };\n } else {\n const datePartlyNull = data.expiryDay === null || data.expiryTime === null;\n\n if (datePartlyNull === true) {\n const fields = ['expiryDay', 'expiryTime'] as const;\n logger.logError(\n 'Order blotter notification {dataId_s} is invalid: GTC is false and the following field(s) {fields_s} are null',\n data.id,\n fields.filter(val => data[val] === null).join(','),\n );\n\n return {\n isGtc: false,\n expiryDay: null,\n expiryTime: null,\n };\n }\n\n const dayTime = extractDayAndTime(parse(`${data.expiryDay}T${data.expiryTime}Z`));\n return {\n isGtc: data.goodTillCancelled,\n expiryDay: dayTime.day,\n expiryTime: dayTime.time,\n };\n }\n };\n\nexport const omsFieldToBlotterOrderStateField: Record<\n keyof OmsOrderSubmissionPayload,\n BlotterOrderAllValuesKeys | undefined\n> = {\n bdrId: undefined,\n bdrIni: undefined,\n ulysseLogin: undefined,\n owner: undefined,\n ccyPair: 'currencyPair',\n amountInCcy1: 'notional',\n amountInCcy2: 'notional',\n customerPrice: 'customerPrice',\n expiryDay: 'expiryDay',\n expiryTime: 'expiryTime',\n base64Emails: undefined,\n limitPrice: 'limitPrice',\n triggerMode: undefined,\n way: 'way',\n isGtc: 'isGtc',\n maturityDateString: 'maturityDate',\n startDateUtc: 'startTime',\n endDateUtc: 'endTime',\n clippingMode: 'clippingMode',\n clipSize: 'clipSize',\n liquidityPool: 'liquidityPool',\n dodging: 'randomize',\n spreadCapture: 'spreadCapture',\n alphaSeeker: 'alphaSeeker',\n speed: undefined,\n fixingBenchmark: undefined,\n fixingPriceType: undefined,\n fixingDateUtc: undefined,\n fixingTime: undefined,\n fixingPlace: undefined,\n fixingMarginType: undefined,\n marginInBps: undefined,\n margin: undefined,\n isNdf: undefined,\n localTimeWithOffSet: undefined,\n};\n\nexport const extractBlotterOrderValidationDetails = (\n response: OmsOrderValidationResponse,\n orderType: OrderType,\n allowOrderTakeProfitMargin: boolean,\n): BlotterOrderValidationResponse => {\n const validationResponseDetailContent = response.validationResponseDetailContent.reduce((acc, omsError) => {\n const field = omsFieldToBlotterOrderStateField[omsError.field as keyof OmsOrderSubmissionPayload];\n if (field === undefined) {\n return acc;\n }\n const code = `error-oms-${omsError.errorCode}`;\n const error: BlotterOrderValidationDetail = {\n code,\n field,\n description: omsError.errorDescription,\n };\n acc.push(error);\n return acc;\n }, [] as BlotterOrderValidationDetail[]);\n\n const { day: expiryDay, time: expiryTime } = parseAndExtractDayAndTime(response.expiryDay);\n const maturityDay = parseAndExtractDay(response.maturityDay);\n\n return {\n isReadyToSubmit: response.isReadyToSubmit,\n validationResponseDetailContent,\n expiryDay,\n expiryTime,\n maturityDay,\n limitPrice: getLimitPrice(response, orderType, allowOrderTakeProfitMargin),\n ...(allowOrderTakeProfitMargin\n ? { customerPrice: isDefined(response.customerPrice) ? response.customerPrice : undefined }\n : {}),\n margin: response.margin,\n fixingTypes: response.fixingTypes,\n isCcyForcedBidAsk: response.isCcyForcedBidAsk,\n isStandardGroup: response.isStandardGroup,\n fixingTimesOfSelectedType: response.fixingTimesOfSelectedType,\n sourceNameOfSelectedType: response.sourceNameOfSelectedType,\n canModifyMarginInBps: response.canModifyMarginInBps,\n marginInBps: response.marginInBps,\n fixingMarginType: response.fixingMarginType,\n ndfFixingDate: response.ndfFixingDate,\n ndfFixingSource: response.ndfFixingSource,\n };\n};\n\nexport interface BlotterOrderValidationDetail {\n code: string;\n field: Partial;\n description: string;\n}\n\nexport interface BlotterOrderValidationResponse {\n isReadyToSubmit: boolean;\n validationResponseDetailContent: readonly BlotterOrderValidationDetail[];\n expiryDay?: string | null;\n expiryTime?: string | null;\n maturityDay?: string | null;\n limitPrice?: number | null;\n customerPrice?: number | null;\n fixingTypes: string[] | null;\n isCcyForcedBidAsk: boolean | null;\n isStandardGroup: boolean | null;\n fixingTimesOfSelectedType: string[] | null;\n sourceNameOfSelectedType: string[] | null;\n margin?: number | null;\n marginInBps: number | null;\n canModifyMarginInBps: boolean;\n fixingMarginType: FixingMarginType;\n ndfFixingDate?: string | null;\n ndfFixingSource?: string | null;\n}\n\nconst mapValuesWith =\n (parse: (dateString: string) => Date) =>\n (\n orderType: OrderType,\n data: IBlotterOrderNotificationData,\n localExpiryData: ExpiryData,\n ): Readonly => {\n const startDayTime =\n isAlgoOrder(orderType) && data.startTime ? extractDayAndTime(parse(data.startTime)) : undefined;\n const endDayTime = isAlgoOrder(orderType) && data.endTime ? extractDayAndTime(parse(data.endTime)) : undefined;\n\n const getMargin = getMarginWith(data.yourWay);\n const margin = data.orderType === 'TakeProfit' ? getMargin(data.limitPrice, data.customerPrice) : undefined;\n\n return {\n status: data.status,\n account: data.account,\n currencyPair: data.currencyPair,\n way: data.yourWay,\n notional: data.notional,\n notionalCurrency: data.notionalCurrency,\n executionPrice: data.executionPrice,\n executedNotional: data.executedAmount,\n remainingAmount: data.remainingAmount ?? null,\n rejectReason: data.rejectReason,\n updateTime: data.updateTime,\n\n ...localExpiryData,\n ...(isLimitOrder(orderType)\n ? {\n product: orderType,\n limitPrice: data.limitPrice,\n customerPrice: data.customerPrice,\n fixingBenchmark: data.fixingBenchmark,\n fixingPlace: data.fixingPlace,\n fixingTime: data.fixingTime,\n fixingDateUtc: data.fixingDateUtc,\n fixingPriceType: data.fixingPriceType,\n fixingMarginType: data.fixingMarginType,\n margin,\n marginInBps: data.marginInBps,\n price: data.price,\n }\n : {\n product: orderType,\n startDate: startDayTime?.day,\n startTime: startDayTime?.time,\n endDate: endDayTime?.day,\n endTime: endDayTime?.time,\n maturityDate: data.maturityDate,\n liquidityPool: (data.liquidityPool?.split(',') as readonly LiquidityPool[]) ?? undefined,\n clippingMode: data.clippingMode ?? undefined,\n clipSize: data.clipSize,\n randomize: data.randomize ?? undefined,\n swapPoints: data.swapPoints,\n forwardPrice: data.forwardPrice,\n averagePrice: data.averagePrice,\n noWorseThan: data.noWorseThan,\n spreadCapture: data.spreadCapture ?? undefined,\n alphaSeeker: data.alphaSeeker ?? undefined,\n speed: data.speed ?? 'Normal',\n }),\n };\n };\n\nfunction getMarginWith(way: Side | null) {\n return (limitPrice: number | null, customerPrice: number | null) => {\n if (way !== null && limitPrice !== null && customerPrice !== null) {\n const firstPrice = way === 'Sell' ? limitPrice : customerPrice;\n const secondPrice = way === 'Sell' ? customerPrice : limitPrice;\n\n return parseFloat(((firstPrice - secondPrice) * 10000).toFixed(5));\n }\n\n return undefined;\n };\n}\n","import type { Reducer } from 'redux';\nimport {\n type BlotterEntry,\n type BlotterOrderAlgoInputs,\n type BlotterOrderAlgoValues,\n type BlotterOrderAllInputsKeys,\n type BlotterOrderCommonInputs,\n type BlotterOrderCommonValues,\n type BlotterOrderInputs,\n type BlotterOrderLimitInputs,\n type BlotterOrderLimitValues,\n type BlotterOrderValues,\n isOrderBlotterEntry,\n type TradeBlotterEntry,\n} from '../blotterEntryModel';\nimport type { BlotterData } from '../blotterModel';\nimport type { Action } from 'state/actions';\nimport { addKey, patchValueByProperty, removeKey, removeKeys, updateKey } from 'utils/stateMap';\nimport { integrateTrades } from './integrateTrades';\nimport type { GetKeysExtending } from 'utils/object';\nimport { strictEntries } from 'utils/object/entries';\nimport { logger } from 'logging/logger';\nimport { validationPartialReducer } from 'state/share/validationReducer';\nimport type { Collection } from 'typings/utils';\nimport { isDefined, isEmpty } from '@sgme/fp';\nimport {\n getCurrentPriceField,\n getPriceWith,\n isBlotterOrderLimitInputs,\n isOrderBlotterLimitEntry,\n} from 'state/fxOrders/utils';\nimport type { BlotterEditedOrderPropertiesChanged } from '../action';\nimport { getChildrenIdsInBlotterData } from '../../../epics/blotter/utils';\n\nconst orderValidationReducer = validationPartialReducer<'BlotterOrder', BlotterEntry>('BlotterOrder');\n\nexport const intradayReducer: Reducer = (blotterData: BlotterData = {}, action: Action): BlotterData => {\n switch (action.type) {\n case 'BLOTTER_ENTRY_RECEIVED':\n return updateTradeState(blotterData, action.entry);\n case 'BLOTTER_INTRADAY_TRADES_RECEIVED':\n return integrateTrades(blotterData, action.trades);\n case 'BLOTTER_ORDER_LIST_RECEIVED':\n return isEmpty(action.orders)\n ? blotterData\n : action.orders.reduce(\n (acc, val) => {\n acc[val.id] = val;\n return acc;\n },\n { ...blotterData },\n );\n case 'ORDER_SUBMISSION_SUCCESS':\n return action.order === undefined || action.orderId === null || blotterData[action.orderId] !== undefined\n ? blotterData\n : addKey(blotterData, action.orderId, {\n values: { ...action.order, updateTime: null } as any,\n inputs: {},\n errors: {},\n warnings: {},\n id: action.orderId,\n instrument: 'Order',\n receivedDate: action.receivedDate,\n mode: 'Display',\n modeStatus: 'Idle',\n });\n case 'ESP_STREAM_RECONNECTED':\n return updateKey(blotterData, action.tileId, () => ({\n currentEspStreamId: action.streamKey,\n }));\n case 'ESP_STREAM_TILE_UNSUBSCRIBE':\n return updateKey(blotterData, action.tileId, () => ({\n currentEspStreamId: undefined,\n }));\n case 'BLOTTER_ORDER_TOGGLE_MODE':\n return updateKey(blotterData, action.orderId, () => ({\n mode: action.mode,\n modeStatus: 'Idle',\n }));\n case 'BLOTTER_ORDER_MODIFY_EPIC':\n return updateKey(blotterData, action.orderId, () => ({\n mode: 'Save',\n modeStatus: 'Pending',\n }));\n case 'BLOTTER_ORDER_CANCELLATION_EPIC':\n return updateKey(blotterData, action.orderId, () => ({\n mode: 'Cancel',\n modeStatus: 'Pending',\n }));\n case 'BLOTTER_ORDER_OPEN_TILE':\n return updateKey(blotterData, action.orderId, () => ({\n mode: action.mode,\n }));\n case 'ORDER_CANCELLATION_SUCCESS':\n return updateKey(blotterData, action.quoteId, () => ({\n mode: 'Display',\n modeStatus: 'Idle',\n }));\n case 'ORDER_CANCELLATION_FAILED':\n return updateKey(blotterData, action.quoteId, () => ({\n modeStatus: 'Error',\n }));\n case 'BLOTTER_ORDER_UPDATE_FAILED':\n return updateKey(blotterData, action.orderId, () =>\n action.isValidationError\n ? { mode: 'Edit', modeStatus: 'Idle' }\n : { modeStatus: 'Error', errorCode: action.errorCode },\n );\n\n case 'ORDER_ERROR_DISMISSED':\n return updateKey(blotterData, action.quoteId, trade =>\n isOrderBlotterEntry(trade)\n ? {\n modeStatus: 'Idle',\n }\n : null,\n );\n case 'FIELD_TOOLTIP_SEEN':\n return action.instrument !== 'BlotterOrder'\n ? blotterData\n : updateKey(blotterData, action.quoteId, ({ errors, warnings }) => ({\n // todo-5010 check typing\n // @ts-ignore\n errors: updateKey(errors, action.field, () => ({ userNotified: true })),\n // todo-5010 check typing\n // @ts-ignore\n warnings: updateKey(warnings, action.field, () => ({ userNotified: true })),\n }));\n\n case 'BLOTTER_ORDER_RESET_PROPERTY':\n return updateKey(blotterData, action.orderId, trade =>\n isOrderBlotterEntry(trade)\n ? {\n // TODO ABO, SGEFX-5010: check type\n // @ts-ignore\n inputs: removeKey(trade.inputs, action.field),\n // @ts-ignore\n warnings: removeKey(trade.warnings, action.field),\n // @ts-ignore\n errors: removeKeys(trade.errors, [action.field, 'limitPrice']),\n }\n : null,\n );\n case 'BLOTTER_ORDER_ERRORS_RECEIVED':\n return updateKey(blotterData, action.orderId, trade =>\n isOrderBlotterEntry(trade) ? patchValueByProperty(trade, 'errors', () => action.errors) : null,\n );\n case 'BLOTTER_ORDER_UPDATE_SUCCESS':\n return updateKey(\n blotterData,\n action.orderId,\n trade =>\n isOrderBlotterEntry(trade)\n ? patchValueByProperty(trade, 'values', () => mapOrderInputsToValues(trade.inputs))\n : null,\n trade => patchValueByProperty(trade, 'inputs', () => ({})),\n () => ({ mode: 'Display' as const, modeStatus: 'Idle' as const }),\n );\n case 'BLOTTER_ORDER_UPDATE_STILL_PENDING':\n return updateKey(blotterData, action.orderId, trade =>\n isOrderBlotterEntry(trade) ? { modeStatus: 'StillPending' } : null,\n );\n case 'BLOTTER_ORDER_PAUSE_EPIC':\n case 'BLOTTER_ORDER_RESUME_EPIC':\n return updateKey(blotterData, action.orderId, trade =>\n isOrderBlotterEntry(trade) ? { togglePausePending: true } : null,\n );\n case 'BLOTTER_ORDER_RESUME_SUCCESS':\n case 'BLOTTER_ORDER_RESUME_FAILURE':\n case 'BLOTTER_ORDER_PAUSE_SUCCESS':\n case 'BLOTTER_ORDER_PAUSE_FAILURE':\n return updateKey(blotterData, action.orderId, trade =>\n isOrderBlotterEntry(trade) ? { togglePausePending: false } : null,\n );\n case 'BLOTTER_ORDER_FILL_EPIC':\n return updateKey(blotterData, action.orderId, trade =>\n isOrderBlotterEntry(trade) ? { fillNowPending: true } : null,\n );\n case 'BLOTTER_ORDER_FILL_SUCCESS':\n case 'BLOTTER_ORDER_FILL_FAILURE':\n return updateKey(blotterData, action.orderId, trade =>\n isOrderBlotterEntry(trade) ? { fillNowPending: false } : null,\n );\n case 'ESP_TILE_STREAM_ID_AND_REFCOUNT_UPDATED':\n return updateKey(blotterData, action.tileId, trade =>\n isOrderBlotterEntry(trade) ? { currentEspStreamId: action.streamId } : null,\n );\n case 'BLOTTER_FETCH_INTRADAY_TRADES_STARTED':\n return Object.entries(blotterData).reduce((acc, [key, entry]) => {\n if (action.ordersToKeep?.includes(key)) {\n acc[key] = entry;\n }\n return acc;\n }, {} as Collection);\n }\n return orderValidationReducer(blotterData, action);\n};\n\nconst updateTradeState = (trades: BlotterData, newTrade: BlotterEntry) => {\n const legacyTrade = trades[newTrade.id];\n\n if (legacyTrade === undefined) {\n if (newTrade.instrument === 'Order') {\n return addKey(trades, newTrade.id, newTrade);\n } else if (newTrade.strategyReference) {\n const strategyReferenceTrade = trades[newTrade.strategyReference] as TradeBlotterEntry;\n\n if (strategyReferenceTrade) {\n const shouldUpdateStrategyReferenceTrade =\n !strategyReferenceTrade.childrenIds || !strategyReferenceTrade.childrenIds.includes(newTrade.id);\n\n if (shouldUpdateStrategyReferenceTrade) {\n const updatedTrades = updateKey(trades, strategyReferenceTrade.id, () => ({\n ...strategyReferenceTrade,\n ...{\n childrenIds: [...(strategyReferenceTrade.childrenIds ?? []), newTrade.id],\n },\n }));\n\n return addKey(updatedTrades, newTrade.id, newTrade);\n }\n }\n\n return addKey(trades, newTrade.id, newTrade);\n } else {\n const childrenIds = newTrade.childrenIds || getChildrenIdsInBlotterData(trades, newTrade);\n return addKey(trades, newTrade.id, { ...newTrade, ...{ childrenIds } });\n }\n } else if (\n legacyTrade.values.updateTime === null || // Check needed because we are creating orders ex-nihilo on ORDER_SUBMISSION_SUCCESS and null < '' === false\n legacyTrade.values.updateTime < newTrade.values.updateTime\n ) {\n // @ts-ignore\n return updateKey(trades, newTrade.id, existingTrade => {\n const takeProfitmargin =\n // @ts-ignore\n existingTrade.values.product === 'TakeProfit' && existingTrade.inputs.margin\n ? // @ts-ignore\n { margin: existingTrade.inputs.margin }\n : {};\n\n if (existingTrade.instrument === 'Order') {\n return {\n ...newTrade,\n values: {\n ...newTrade.values,\n ...takeProfitmargin,\n },\n modeStatus: existingTrade.modeStatus,\n mode: existingTrade.mode,\n };\n }\n return newTrade;\n });\n } else {\n logger.logInformation('Ignoring new trade', newTrade);\n return trades;\n }\n};\n\ntype BlotterInputsWhichNeedNumberConvert =\n | InputsWhichNeedNumberConvert\n | InputsWhichNeedNumberConvert\n | InputsWhichNeedNumberConvert;\n\ntype InputsWhichNeedNumberConvert = GetKeysExtending & keyof I;\n\nconst inputsWhichNeedNumberConvert: readonly BlotterInputsWhichNeedNumberConvert[] = [\n 'notional',\n 'limitPrice',\n 'customerPrice',\n];\n\nconst needConvert = (input: BlotterOrderAllInputsKeys): input is BlotterInputsWhichNeedNumberConvert =>\n (inputsWhichNeedNumberConvert as readonly string[]).includes(input);\n\nconst mapOrderInputsToValues = (inputs: Partial): Partial =>\n strictEntries(inputs).reduce((acc, [key, value]) => {\n if (isDefined(value) && needConvert(key)) {\n acc[key as keyof typeof acc] = Number(value) as any;\n }\n return acc;\n }, {} as Partial);\n\nexport function preparePricesAndMargin(action: BlotterEditedOrderPropertiesChanged, trade: BlotterEntry) {\n const currentPriceField = getCurrentPriceField(action.patch);\n\n const isTakeProfit = trade.values.product === 'TakeProfit';\n const hasPriceField = currentPriceField !== null;\n\n if (isTakeProfit && hasPriceField && isOrderBlotterLimitEntry(trade) && isBlotterOrderLimitInputs(action.patch)) {\n const margin = trade.inputs.margin ?? trade.values.margin ?? 0;\n const way = trade.values.way;\n const getPrice = getPriceWith(way, currentPriceField);\n\n switch (currentPriceField) {\n case 'limitPrice':\n const limitPrice = action.patch.limitPrice ? Number(action.patch.limitPrice) : 0;\n\n return {\n customerPrice: getPrice(limitPrice, margin),\n };\n case 'customerPrice':\n const customerPrice = action.patch.customerPrice ? Number(action.patch.customerPrice) : 0;\n\n return {\n limitPrice: getPrice(customerPrice, margin),\n };\n case 'margin':\n const customerPriceInput = trade.inputs.customerPrice ?? trade.values.customerPrice;\n const customerPriceValue = customerPriceInput ? Number(customerPriceInput) : 0;\n\n return {\n limitPrice: getPrice(customerPriceValue, action.patch.margin ?? 0),\n };\n }\n }\n\n return {};\n}\n","import type { Reducer } from 'redux';\nimport type { BlotterData } from '../blotterModel';\nimport type { BlotterEntry } from '../blotterEntryModel';\nimport type { Collection } from 'typings/utils';\nimport type { Action } from 'state/actions';\n\nconst initialState: BlotterData = {};\n\nexport const historicalTradesReducer: Reducer = (\n blotterData: BlotterData = initialState,\n action: Action,\n): BlotterData => {\n switch (action.type) {\n case 'BLOTTER_RETRIEVE_HISTORICAL_TRADES':\n case 'BLOTTER_HISTORICAL_TRADES_REQUEST_FAILED':\n return initialState;\n case 'BLOTTER_HISTORICAL_TRADES_RECEIVED':\n return action.trades.reduce((acc, val) => {\n acc[val.id] = val;\n return acc;\n }, {} as Collection);\n }\n return blotterData;\n};\n","export function filterArray(\n array: readonly T[],\n func: (value: T, index: number, target: readonly T[]) => boolean,\n) {\n let pristine = true;\n const filter = (value: T, index: number, target: readonly T[]) => {\n const bool = func(value, index, target);\n if (bool === false) {\n pristine = false;\n }\n };\n const newArray = array.filter(filter);\n return pristine === true ? array : newArray;\n}\n\nexport function insertInArray(array: readonly T[], value: T) {\n if (array.includes(value) === true) {\n return array;\n }\n return [...array, value];\n}\n","import type { Reducer } from 'redux';\nimport type { Action } from 'state/actions';\nimport {\n blotterDetailsPanelHidden,\n type BlotterMetadata,\n defaultBlotterMetadata,\n type IBlotterErrorType,\n} from '../blotterModel';\nimport { filterArray, insertInArray } from 'utils/stateArray';\nimport { composeLeftPatcher, patcherReducer, patchValueByProperty, updateValueByProperty } from 'utils/stateMap';\n\nconst removeError = (errorValue: IBlotterErrorType) =>\n composeLeftPatcher(\n updateValueByProperty('errors')(errors => filterArray(errors!, error => error !== errorValue)),\n );\nconst removeNetworkError = removeError('network');\nconst removeLiveError = removeError('live');\nconst removeHistoricalError = removeError('historical');\nconst removeHistoricalOrderError = removeError('historicalOrder');\n\nconst addError = (errorValue: IBlotterErrorType) =>\n composeLeftPatcher(updateValueByProperty('errors')(errors => insertInArray(errors!, errorValue)));\nconst addNetworkError = addError('network');\nconst addLiveError = addError('live');\nconst addHistoricalError = addError('historical');\nconst addHistoricalOrderError = addError('historicalOrder');\n\nconst updateBlotterEnableShowMyMainDeals = (isVisible: boolean) =>\n composeLeftPatcher(updateValueByProperty('enableShowMyMainDeals')(() => isVisible));\n\nexport const metadataReducer: Reducer = (\n state = defaultBlotterMetadata,\n action: Action,\n): BlotterMetadata => {\n switch (action.type) {\n case 'STREAMING_CONNECTED':\n case 'STREAMING_RECONNECTED':\n return removeNetworkError(state);\n case 'STREAMING_DISCONNECTED':\n return addNetworkError(state);\n case 'BLOTTER_TOGGLE':\n return {\n ...state,\n isOpen: action.isOpen ?? !state.isOpen,\n };\n case 'BLOTTER_UPDATE_MODE_METADATA':\n return {\n ...state,\n ...action.modeMetadata,\n detailsPanel: blotterDetailsPanelHidden,\n };\n case 'BLOTTER_CANT_REOPEN_ENTRY':\n return {\n ...state,\n cantReopenReason: action.reason,\n };\n case 'USER_PREFERENCES_DATA_CHANGED':\n if (action.patch.showMyMainDeals === undefined) {\n return state;\n }\n return {\n ...state,\n fetching: state.mode,\n canRefetch: false,\n };\n case 'BLOTTER_HISTORICAL_TRADES_REQUEST_FAILED':\n return {\n ...state,\n ...{\n fetching: null,\n canRefetch: true,\n historical: state.historical\n ? {\n ...state.historical,\n error: action.error,\n errorDetails: action.errorDetails,\n }\n : undefined,\n },\n };\n case 'BLOTTER_LIVE_REGISTER_SUCCESS':\n return removeLiveError(state);\n case 'BLOTTER_LIVE_REGISTER_FAILURE':\n return updateBlotterEnableShowMyMainDeals(true)(addLiveError(state));\n case 'BLOTTER_TABLE_CRASHED':\n return addError('tableCrash')(state);\n case 'BLOTTER_INTRADAY_TRADES_REQUEST_FAILED':\n return updateBlotterEnableShowMyMainDeals(true)(\n addHistoricalError({ ...state, fetching: null, canRefetch: true }),\n );\n case 'BLOTTER_ORDER_LIST_REQUEST_FAILED':\n return addHistoricalOrderError(state);\n case 'BLOTTER_INTRADAY_TRADES_RECEIVED':\n return updateBlotterEnableShowMyMainDeals(true)(\n removeHistoricalError({ ...state, fetching: null, canRefetch: true }),\n );\n case 'BLOTTER_RETRIEVE_HISTORICAL_TRADES':\n return { ...state, fetching: 'historical' };\n case 'BLOTTER_ALLOW_REFETCH_TRADES':\n return { ...state, canRefetch: true };\n case 'BLOTTER_HISTORICAL_TRADES_RECEIVED':\n return { ...state, fetching: null, canRefetch: true };\n case 'BLOTTER_ORDER_LIST_RECEIVED':\n return removeHistoricalOrderError(state);\n case 'BLOTTER_TAB_CHANGED':\n if (action.tab === state.activeTab) {\n return state;\n }\n return {\n ...removeError('tableCrash')(state),\n activeTab: action.tab,\n detailsPanel: blotterDetailsPanelHidden,\n };\n case 'BLOTTER_PANEL_HEIGHT_CHANGED':\n return patcherReducer(state, () => ({\n panelHeight: action.height,\n }));\n case 'BLOTTER_TAB_METADATA_CHANGED':\n const { tab, tabMetatada } = action;\n switch (tab) {\n case 'cash':\n return patchValueByProperty(state, 'cashTab', () => tabMetatada);\n case 'option':\n return patchValueByProperty(state, 'optionTab', () => tabMetatada);\n case 'order':\n return patchValueByProperty(state, 'orderTab', () => tabMetatada);\n case 'accumulator':\n return patchValueByProperty(state, 'accumulatorTab', () => tabMetatada);\n default:\n return state;\n }\n case 'BLOTTER_SHOW_DETAILS_PANEL':\n return patchValueByProperty(state, 'detailsPanel', () => ({\n selectedId: action.selectedId,\n mode: action.mode,\n childrenIds: action.childrenIds,\n hasUnexpectedError: false,\n validationResponse: null,\n }));\n case 'BLOTTER_HIDE_DETAILS_PANEL':\n return patchValueByProperty(state, 'detailsPanel', () => blotterDetailsPanelHidden);\n case 'BLOTTER_SET_DETAILS_PANEL_MODE':\n return patchValueByProperty(state, 'detailsPanel', () => ({\n mode: action.mode,\n saveError: action.saveError,\n }));\n case 'BLOTTER_CHANGE_DETAILS_PANEL_UNEXPECTED_ERROR':\n return patchValueByProperty(state, 'detailsPanel', () => ({\n hasUnexpectedError: action.hasError,\n }));\n case 'BLOTTER_FETCH_INTRADAY_TRADES_STARTED':\n return patchValueByProperty(state, 'detailsPanel', () => ({\n selectedId: null,\n }));\n case 'BLOTTER_LIVE_REGISTER_START':\n return {\n ...state,\n enableShowMyMainDeals: false,\n detailsPanel: blotterDetailsPanelHidden,\n };\n case 'BLOTTER_ORDER_REJECTED_SHOW_DIALOG':\n return {\n ...state,\n orderRejectedId: action.orderId,\n };\n case 'BLOTTER_ORDER_REJECTED_HIDE_DIALOG':\n return {\n ...state,\n orderRejectedId: null,\n };\n case 'BLOTTER_ORDER_SAVE_ERROR_SHOW_DIALOG':\n return {\n ...state,\n showSaveErrorDialogBox: true,\n displayedErrorId: action.quoteId,\n };\n case 'BLOTTER_ORDER_SAVE_ERROR_HIDE_DIALOG':\n return {\n ...state,\n showSaveErrorDialogBox: false,\n displayedErrorId: undefined,\n };\n\n case 'BLOTTER_EDITED_ORDER_VALIDATION_RECEIVED':\n return {\n ...state,\n detailsPanel: {\n ...state.detailsPanel,\n // todo-5010 encapsuler les details de la reponse dans une propriété spécifique\n validationResponse: action,\n },\n };\n default:\n return state;\n }\n};\n","import {\n emptyFxOrderState,\n type FxOrderState,\n type FxOrderStateMap,\n getOrderLiquidityPoolOptions,\n type IFxOrderInputs,\n type IFxOrderMetadata,\n type IFxOrderProperties,\n type IFxOrderValues,\n type OrderType,\n} from '../fxOrdersModel';\nimport type { Action } from 'state/actions';\nimport type { Reducer } from 'redux';\nimport { addKey, removeKey, updateKey } from 'utils/stateMap';\nimport type { PropertyErrors } from 'state/share/productModel/litterals';\nimport type { OrderPropertyChanged, OrderValidationReceived } from '../fxOrdersActions';\nimport { validationPartialReducer } from 'state/share/validationReducer';\nimport { isDefined, isNotDefined } from '@sgme/fp';\nimport { clearUndefined } from 'utils/clearUndefined';\nimport { getCurrentPriceField, getPriceWith } from '../utils';\nimport type { BlotterEditedOrderValidationReceived } from '../../blotter/action';\nimport type { BlotterOrderLimitValues, OrderBlotterLimitEntry } from '../../blotter/blotterEntryModel';\nimport { strictEntries } from '../../../utils/object';\n\nconst orderValidationReducer = validationPartialReducer<'Order', FxOrderState>('Order');\n\nexport const ordersReducer: Reducer = (\n state: FxOrderStateMap = {},\n action: Action,\n): FxOrderStateMap => {\n switch (action.type) {\n case 'CLIENTWORKSPACE_NEW_TILE_ADDED':\n if (action.instrument === 'Order') {\n return addKey(state, action.tileId, emptyFxOrderState);\n }\n return state;\n case 'ORDER_PROPERTY_CHANGED':\n return updateKey(state, action.quoteId, order => ({\n inputs: {\n ...order.inputs,\n ...action.patch,\n ...prepareCommonResetFieldsAfterTypeChange(action.patch.type),\n ...prepareSpecificResetFieldsAfterTypeChangePatch(action.patch.type),\n ...prepareResetExpiryPatch(action.patch.startDate),\n ...prepareFixingPatch(action, order),\n ...(action.allowOrderTakeProfitMargin ? {} : preparePricesAndMargin(action, order)),\n },\n }));\n case 'ORDER_PROPERTY_CHANGED_FROM_TEMPLATE':\n return updateKey(state, action.quoteId, order => ({\n inputs: {\n ...order.inputs,\n ...action.patch,\n },\n }));\n case 'ORDER_TEMPLATE_CHANGED':\n return updateKey(state, action.quoteId, _order => ({\n currentTemplateId: action.templateId,\n }));\n case 'CLIENTWORKSPACE_TILE_DELETED':\n return removeKey(state, action.tileId);\n case 'ORDER_AMOUNT_CURRENCY_CHANGED':\n return updateKey(state, action.quoteId, order => ({\n values: {\n ...order.values,\n amountCurrency: action.currencyChoice,\n },\n }));\n case 'ORDER_VALIDATION_REQUESTED':\n return updateKey(state, action.quoteId, order => ({\n ...order,\n orderStatus: 'PropertiesRequested',\n }));\n case 'ORDER_VALIDATION_RECEIVED':\n return updateKey(state, action.quoteId, order => {\n let { currency1, currency2 } = order.values;\n\n const { currencyPair } = order.inputs;\n\n if (isDefined(currencyPair)) {\n [currency1, currency2] = currencyPair.split('/');\n }\n\n const isFixingOrder = order.inputs.type === 'Fixing' || order.values.type === 'Fixing';\n const isTakeProfitOrder = order.inputs.type === 'TakeProfit' || order.values.type === 'TakeProfit';\n\n const initialPatch: IFxOrderProperties & IFxOrderMetadata = {\n values: {\n ...order.values,\n ...mapOrderInputsToValues(order.inputs),\n currency1,\n currency2,\n ...mapValuesFromActionIfValidated(action, isTakeProfitOrder),\n ...(isFixingOrder ? getFixingOrderValues(action, order) : {}),\n },\n inputs: {},\n errors: {},\n warnings: order.warnings,\n isReadyToSubmit: action.isReadyToSubmit,\n editingEmails: false,\n isStartDateNow: order.isStartDateNow,\n orderStatus: null,\n propertiesRequestError: null,\n currentExecutionId: null,\n currentEspStreamId: order.currentEspStreamId,\n clockOffset: action.clockOffset,\n };\n\n const patch = action.validationDetails.reduce((acc, { code, description, field }) => {\n const errors: PropertyErrors = {\n ...acc.errors,\n [field]: {\n code,\n description,\n userNotified: false,\n faultyValue: null,\n },\n };\n return { ...acc, errors };\n }, initialPatch);\n return patch;\n });\n case 'ORDER_VALIDATION_FAILED':\n return updateKey(state, action.quoteId, order => ({\n ...order,\n propertiesRequested: false,\n propertiesRequestError: action.error,\n orderStatus: 'PropertiesError',\n }));\n case 'ORDER_EDITING_EMAILS':\n return updateKey(state, action.quoteId, () => ({\n editingEmails: action.editingEmails,\n }));\n case 'ORDER_START_DATE_NOW_CHANGED':\n return updateKey(state, action.quoteId, () => ({\n isStartDateNow: action.isStartDateNow,\n }));\n case 'FIELD_TOOLTIP_SEEN':\n return action.instrument !== 'Order'\n ? state\n : updateKey(state, action.quoteId, ({ errors, warnings }) => ({\n errors: updateKey(errors, action.field, () => ({ userNotified: true })),\n warnings: updateKey(warnings, action.field, () => ({ userNotified: true })),\n }));\n case 'ORDER_SUBMISSION_SENT':\n return updateKey(state, action.quoteId, () => ({\n orderStatus: 'Pending',\n warnings: {},\n }));\n case 'ORDER_SUBMISSION_SUCCESS':\n if (action.orderId === null) {\n return updateKey(state, action.quoteId, () => ({\n orderStatus: 'Success',\n }));\n } else {\n return removeKey(state, action.quoteId);\n }\n case 'ORDER_SUBMISSION_FAILED':\n return updateKey(state, action.quoteId, () => ({\n orderStatus: 'Failed',\n propertiesRequestError: action.errorCode,\n }));\n case 'ORDER_ERROR_DISMISSED':\n return updateKey(state, action.quoteId, () => ({\n orderStatus: null,\n propertiesRequestError: null,\n }));\n case 'TILE_EXECUTION_OVERLAY_HIDDEN':\n return updateKey(state, action.quoteId, () => ({\n currentExecutionId: null,\n orderStatus: null,\n }));\n case 'ESP_TILE_STREAM_ID_AND_REFCOUNT_UPDATED':\n return updateKey(state, action.tileId, () => ({\n currentEspStreamId: action.streamId,\n }));\n case 'ESP_STREAM_RECONNECTED':\n return updateKey(state, action.tileId, () => ({\n currentEspStreamId: action.streamKey,\n }));\n case 'ESP_STREAM_TILE_UNSUBSCRIBE':\n case 'ESP_STREAM_KEY_REQUEST_PENDING':\n return updateKey(state, action.tileId, () => ({\n currentEspStreamId: null,\n }));\n default:\n return orderValidationReducer(state, action);\n }\n};\n\nconst adaptPriceForTakeProfitIfNeeded = (\n isTakeProfitOrder: boolean,\n price: number | null | undefined,\n allowOrderTakeProfitMargin: boolean,\n) => {\n if (isTakeProfitOrder && allowOrderTakeProfitMargin) {\n // we need null values to passed only for takeProfit as this needs to override input values for this specific order\n // whereas we do not expect any override for other type of order when oms sends back null value\n return isDefined(price) ? `${price}` : null;\n }\n\n return isDefined(price) ? `${price}` : undefined;\n};\n\nexport const mapValuesFromActionIfValidated = (\n action: OrderValidationReceived | BlotterEditedOrderValidationReceived,\n isTakeProfitOrder: boolean,\n) => {\n const isPayloadValid = action.validationDetails.length === 0;\n\n return isPayloadValid\n ? {\n margin: isDefined(action.margin) ? action.margin : null,\n ...clearUndefined({\n limitPrice: adaptPriceForTakeProfitIfNeeded(\n isTakeProfitOrder,\n action.limitPrice,\n action.allowOrderTakeProfitMargin,\n ),\n customerPrice: adaptPriceForTakeProfitIfNeeded(\n isTakeProfitOrder,\n action.customerPrice,\n action.allowOrderTakeProfitMargin,\n ),\n maturityDate: action.maturityDay,\n ndfFixingSource: action.ndfFixingSource,\n ndfFixingDate: action.ndfFixingDate,\n expiryDay: action.expiryDay,\n expiryTime: action.expiryTime,\n }),\n }\n : {};\n};\n\nconst commonResetFields: Partial = {\n alphaSeeker: undefined,\n clippingMode: undefined,\n clipSize: null,\n randomize: undefined,\n speed: undefined,\n spreadCapture: undefined,\n trigger: undefined,\n};\n\nconst prepareCommonResetFieldsAfterTypeChange = (value?: OrderType): Partial =>\n value === undefined ? {} : { ...commonResetFields, liquidityPool: getOrderLiquidityPoolOptions(value) };\n\nconst specificResetFieldsAfterChangePatches: Record> = {\n TakeProfit: {},\n StopLoss: { customerPrice: '', trigger: 'Spot' },\n Nightjar: { alphaSeeker: false, speed: 'Normal' },\n Falcon: { speed: 'Normal' },\n Twap: { clippingMode: 'Automatic', spreadCapture: true, randomize: true, isGtc: false },\n Call: {},\n Fixing: {},\n};\n\nconst prepareSpecificResetFieldsAfterTypeChangePatch = (type?: OrderType) =>\n type === undefined ? {} : specificResetFieldsAfterChangePatches[type];\n\n/**\n * expiry date needs to be recomputed when start date change\n */\nconst prepareResetExpiryPatch = (startDate?: string | null): Partial =>\n isDefined(startDate)\n ? {\n expiryDay: null,\n expiryTime: null,\n }\n : {};\n\nconst prepareFixingPatch = (\n action: OrderPropertyChanged,\n order: Readonly,\n): Partial => {\n const isFixingOrder = order.inputs.type === 'Fixing' || order.values.type === 'Fixing';\n if (!isFixingOrder || isNotDefined(action.patch.fixingPriceType)) {\n return {};\n }\n return {\n fixingMarginType:\n action.patch.fixingPriceType === 'BIDASK'\n ? 'MarginInBps'\n : action.patch.fixingMarginType ||\n order.inputs.fixingMarginType ||\n order.values.fixingMarginType ||\n 'MarginInBps',\n };\n};\n\nexport function getFixingOrderValues(\n action: OrderValidationReceived | BlotterEditedOrderValidationReceived,\n order: Readonly | OrderBlotterLimitEntry,\n): Omit {\n const fixingPriceType = action.isCcyForcedBidAsk\n ? 'BIDASK'\n : order.inputs.fixingPriceType || order.values.fixingPriceType || 'MID';\n\n return {\n fixingTypes: action.fixingTypes,\n isCcyForcedBidAsk: action.isCcyForcedBidAsk,\n isStandardGroup: action.isStandardGroup,\n fixingTimesOfSelectedType: action.fixingTimesOfSelectedType ?? null,\n sourceNameOfSelectedType: action.sourceNameOfSelectedType ?? null,\n fixingBenchmark:\n order.inputs.fixingBenchmark ||\n order.values.fixingBenchmark ||\n (action.fixingTypes ? action.fixingTypes[0] : null),\n fixingPriceType,\n fixingTime:\n !action.isStandardGroup || action.isStandardGroup === null\n ? null\n : (order.inputs.fixingTime || order.values.fixingTime) ??\n (action.fixingTimesOfSelectedType ? action.fixingTimesOfSelectedType[0] : null),\n fixingPlace:\n action.isStandardGroup || action.isStandardGroup === null\n ? null\n : (order.inputs.fixingPlace || order.values.fixingPlace) ??\n (action.sourceNameOfSelectedType ? action.sourceNameOfSelectedType[0] : null),\n marginInBps: action.marginInBps,\n canModifyMarginInBps: action.canModifyMarginInBps,\n fixingMarginType:\n fixingPriceType === 'BIDASK'\n ? 'MarginInBps'\n : (order.inputs.fixingMarginType || order.values.fixingMarginType) ?? 'MarginInBps',\n };\n}\n\nfunction preparePricesAndMargin(\n action: OrderPropertyChanged,\n order: Readonly,\n): Partial {\n const currentPriceField = getCurrentPriceField(action.patch);\n\n const isTakeProfit = order.values.type === 'TakeProfit';\n const isPriceField = currentPriceField !== null;\n const isInternalSales = action.isInternalSales;\n\n if (isTakeProfit && isPriceField && isInternalSales) {\n const margin = order.values.margin ?? 0;\n const way = order.values.way;\n const getPrice = getPriceWith(way, currentPriceField);\n\n switch (currentPriceField) {\n case 'limitPrice':\n const limitPrice = action.patch.limitPrice ? Number(action.patch.limitPrice) : 0;\n\n return {\n customerPrice: getPrice(limitPrice, margin),\n };\n case 'customerPrice':\n const customerPrice = action.patch.customerPrice ? Number(action.patch.customerPrice) : 0;\n\n return {\n limitPrice: getPrice(customerPrice, margin),\n };\n case 'margin':\n const customerPriceValue = order.values.customerPrice ? Number(order.values.customerPrice) : 0;\n\n return {\n limitPrice: getPrice(customerPriceValue, action.patch.margin ?? 0),\n };\n }\n }\n\n return {};\n}\n\nconst convertAmountToNumber = (key: K, value: IFxOrderInputs[K]): IFxOrderValues[K] =>\n (key === 'amount' ? Number(value) : value) as IFxOrderValues[K];\n\nconst mapOrderInputsToValues = (inputs: Partial): Partial =>\n strictEntries(inputs).reduce((acc, [key, value]) => {\n if (isDefined(value)) {\n return { ...acc, [key]: convertAmountToNumber(key, value) };\n }\n return acc;\n }, {} as Partial);\n","import type { Reducer } from 'redux';\nimport type { BlotterEditOrderData } from '../blotterModel';\nimport type { Action } from 'state/actions';\nimport { addKey, patchValueByProperty, removeKey, updateKey } from 'utils/stateMap';\nimport type {\n BlotterAllOrderAlgoInputs,\n BlotterAllOrderAlgoValues,\n BlotterAllOrderLimitValues,\n BlotterOrderAlgoProperties,\n BlotterOrderLimitProperties,\n OrderBlotterAlgoEntry,\n OrderBlotterEntry,\n} from '../blotterEntryModel';\nimport { isOrderBlotterEntry } from '../blotterEntryModel';\nimport { preparePricesAndMargin } from './intradayReducer';\nimport { strictEntries } from '../../../utils/object';\nimport { isDefined } from '@sgme/fp';\nimport type { BlotterEditedOrderValidationReceived } from '../action';\nimport { clearUndefined } from '../../../utils/clearUndefined';\nimport { isFixingOrder } from '../../fxOrders/fxOrdersModel';\nimport { getFixingOrderValues } from '../../fxOrders/reducers/fxOrdersProductReducer';\n\nconst initialState: BlotterEditOrderData = {};\n\nexport const editedOrdersReducer: Reducer = (\n blotterData: BlotterEditOrderData = initialState,\n action: Action,\n): BlotterEditOrderData => {\n switch (action.type) {\n case 'BLOTTER_EDITED_ORDER_PROPERTIES_CHANGED':\n return updateKey(blotterData, action.orderId, trade => {\n const patch = {\n ...action.patch,\n ...(action.allowOrderTakeProfitMargin ? {} : preparePricesAndMargin(action, trade)),\n };\n\n return isOrderBlotterEntry(trade) ? patchValueByProperty(trade, 'inputs', () => patch) : null;\n });\n case 'BLOTTER_EDITED_ORDER_VALIDATION_RECEIVED':\n // todo - in our case we know blotterData is a OrderBlotterEntry - check how to tighten it\n return updateKey(blotterData, action.orderId, (order: OrderBlotterEntry) => {\n const isTakeProfitOrder = order.inputs.product === 'TakeProfit' || order.values.product === 'TakeProfit';\n\n const mappedInputs = strictEntries(order.inputs as BlotterAllOrderAlgoInputs).reduce((acc, [key, value]) => {\n if (isDefined(value)) {\n return { ...acc, [key]: key === 'notional' ? Number(value) : value };\n }\n\n return acc;\n }, {} as Partial);\n\n type OrderInitialPatch =\n | (BlotterOrderLimitProperties & { isReadyToSubmit: boolean })\n | (BlotterOrderAlgoProperties & { isReadyToSubmit: boolean });\n\n let initialPatch: OrderInitialPatch;\n\n if (isAlgoOrder(order)) {\n initialPatch = {\n values: {\n ...order.values,\n ...mappedInputs,\n ...mapValuesFromActionIfValidated(action, isTakeProfitOrder),\n },\n inputs: {},\n errors: {},\n warnings: order.warnings,\n isReadyToSubmit: action.isReadyToSubmit,\n // todo 5010 see if we need those properties (can they be updated by oms validation ? )\n // instrument: 'Order',\n // modeStatus: ModeStatus;\n // errorCode?: OrderErrorCode;\n } as BlotterOrderAlgoProperties & { isReadyToSubmit: boolean };\n\n const patch = action.validationDetails.reduce((acc, { code, description, field }) => {\n const errors = {\n ...acc.errors,\n [field]: {\n code,\n description,\n userNotified: false,\n faultyValue: null,\n },\n };\n return { ...acc, errors };\n }, initialPatch);\n return patch;\n } else {\n initialPatch = {\n values: {\n ...order.values,\n ...mappedInputs,\n ...mapValuesFromActionIfValidated(action, isTakeProfitOrder),\n ...(isFixingOrder(order.values.product) ? getFixingOrderValues(action, order) : {}),\n },\n inputs: {},\n errors: {},\n warnings: order.warnings,\n isReadyToSubmit: action.isReadyToSubmit,\n // todo 5010 see if we need those properties (can they be updated by oms validation ? )\n // instrument: 'Order',\n // modeStatus: ModeStatus;\n // errorCode?: OrderErrorCode;\n } as BlotterOrderLimitProperties & { isReadyToSubmit: boolean };\n }\n\n // const initialPatch: OrderInitialPatch = {\n // values: {\n // ...order.values,\n // ...mappedInputs,\n // ...mapValuesFromActionIfValidated(action, isTakeProfitOrder),\n // ...(!getIsAlgoOrder(order) && isFixingOrder(order.values.product)\n // ? getFixingOrderValues(action, order)\n // : {}),\n // },\n // inputs: {},\n // errors: {},\n // warnings: order.warnings,\n // isReadyToSubmit: action.isReadyToSubmit,\n // // todo 5010 see if we need those properties (can they be updated by oms validation ? )\n // // instrument: 'Order',\n // // modeStatus: ModeStatus;\n // // errorCode?: OrderErrorCode;\n // };\n\n return action.validationDetails.reduce((acc, { code, description, field }) => {\n const errors = {\n ...acc.errors,\n [field]: {\n code,\n description,\n userNotified: false,\n faultyValue: null,\n },\n };\n return { ...acc, errors };\n }, initialPatch);\n });\n // TODO ABO, SGEFX-5010: impplement validation error ???\n case 'BLOTTER_EDITED_ORDER_CREATE_ENTRY':\n return blotterData[action.orderId] !== undefined\n ? blotterData\n : addKey(blotterData, action.orderId, action.order);\n case 'BLOTTER_EDITED_ORDER_REMOVE_ENTRY':\n return blotterData[action.orderId] === undefined ? blotterData : removeKey(blotterData, action.orderId);\n }\n return blotterData;\n};\n\nconst mapValuesFromActionIfValidated = (action: BlotterEditedOrderValidationReceived, isTakeProfitOrder: boolean) => {\n const isPayloadValid = action.validationDetails.length === 0;\n\n return isPayloadValid\n ? {\n margin: isDefined(action.margin) ? action.margin : null,\n ...clearUndefined({\n limitPrice: adaptPriceForTakeProfitIfNeeded(\n isTakeProfitOrder,\n action.limitPrice,\n action.allowOrderTakeProfitMargin,\n ),\n customerPrice: adaptPriceForTakeProfitIfNeeded(\n isTakeProfitOrder,\n action.customerPrice,\n action.allowOrderTakeProfitMargin,\n ),\n maturityDate: action.maturityDay,\n ndfFixingSource: action.ndfFixingSource,\n ndfFixingDate: action.ndfFixingDate,\n expiryDay: action.expiryDay,\n expiryTime: action.expiryTime,\n }),\n }\n : {};\n};\n\nconst adaptPriceForTakeProfitIfNeeded = (\n isTakeProfitOrder: boolean,\n price: number | null | undefined,\n allowOrderTakeProfitMargin: boolean,\n) => {\n if (isTakeProfitOrder && allowOrderTakeProfitMargin) {\n // we need null values to passed only for takeProfit as this needs to override input values for this specific order\n // whereas we do not expect any override for other type of order when oms sends back null value\n return isDefined(price) ? `${price}` : null;\n }\n\n return isDefined(price) ? `${price}` : undefined;\n};\n\nfunction isAlgoOrder(order: OrderBlotterEntry): order is OrderBlotterAlgoEntry {\n return 'speed' in order.values;\n}\n","import { combineReducers } from 'redux';\nimport type { BlotterState } from '../blotterModel';\nimport { intradayReducer } from './intradayReducer';\nimport { historicalTradesReducer } from './historicalTradesReducer';\nimport { metadataReducer } from './metadataReducer';\nimport { editedOrdersReducer } from './editedOrdersReducer';\n\nexport const blotterReducer = combineReducers({\n intraday: intradayReducer,\n historical: historicalTradesReducer,\n metadata: metadataReducer,\n editedOrders: editedOrdersReducer,\n});\n","import type { FxExecutionsMap, FxExecutionState } from './executionsModel';\nimport { addKey, updateKey, removeKey } from 'utils/stateMap';\nimport type { Reducer } from 'redux';\nimport type { Action } from 'state/actions';\n\nexport const executionsReducer: Reducer = (\n state: FxExecutionsMap = {},\n action: Action,\n): FxExecutionsMap => {\n switch (action.type) {\n case 'CASH_ESP_EXECUTION_SENT':\n case 'CASH_RFS_EXECUTION_SENT':\n case 'SWAP_EXECUTION_SENT':\n case 'OPTION_EXECUTION_SENT':\n case 'BULK_EXECUTION_SENT':\n case 'ACCUMULATOR_EXECUTION_SENT':\n return addKey(state, action.executionId, {\n status: 'Pending',\n ...action.execution,\n });\n case 'CASH_EXECUTION_RECEIVED':\n case 'SWAP_EXECUTION_RECEIVED':\n case 'OPTION_EXECUTION_RECEIVED':\n case 'BULK_EXECUTION_RECEIVED':\n case 'ACCUMULATOR_EXECUTION_RECEIVED':\n return updateKey(state, action.executionId, execution =>\n execution.status === 'Pending' || execution.status === 'StillPending'\n ? { status: 'Success' }\n : null,\n );\n case 'CASH_FILL_REPORT_RECEIVED':\n case 'SWAP_FILL_REPORT_RECEIVED':\n case 'OPTION_FILL_REPORT_RECEIVED':\n case 'BULK_FILL_REPORT_RECEIVED':\n case 'ACCUMULATOR_FILL_REPORT_RECEIVED':\n return updateKey(state, action.executionId, execution =>\n execution.status === 'Success' || execution.status === 'StillPending'\n ? action.tradeIds[0] === 'NOT_YET_INTEGRATED'\n ? { status: 'NotIntegrated' }\n : { status: 'BackOfficeValidated', tradeIds: action.tradeIds }\n : null,\n );\n case 'CASH_EXECUTION_FAILED':\n case 'SWAP_EXECUTION_FAILED':\n case 'OPTION_EXECUTION_FAILED':\n case 'BULK_EXECUTION_FAILED':\n case 'ACCUMULATOR_EXECUTION_FAILED':\n return updateKey(state, action.executionId, execution =>\n execution.status === 'Pending' || execution.status === 'StillPending'\n ? {\n status: 'Error',\n streamError: action.streamError,\n }\n : null,\n );\n\n case 'EXECUTION_STILL_PENDING':\n return updateKey(state, action.executionId, execution =>\n execution.status === 'Pending'\n ? {\n status: 'StillPending',\n }\n : null,\n );\n\n case 'EXECUTION_TIMEOUTED_DEAL':\n return updateKey(state, action.executionId, execution =>\n execution.status === 'Pending'\n ? {\n status: 'TimeoutedDeal',\n }\n : null,\n );\n\n case 'ORDER_SUBMISSION_STILL_PENDING':\n return updateKey(state, action.quoteId, execution =>\n execution.status === 'Pending'\n ? {\n status: 'StillPending',\n }\n : null,\n );\n\n case 'EXECUTION_CLEANUP':\n return removeKey(state, action.executionId);\n\n default:\n return state;\n }\n};\n","import type { Reducer } from 'redux';\nimport type { Collection } from 'typings/utils';\nimport type { Action } from 'state/actions';\n\nexport const orderEmailsReducer: Reducer> = (\n state: Collection = {},\n action: Action,\n): Collection => {\n if (action.type === 'ORDER_DEFAULT_EMAILS') {\n return { ...state, [action.bdrId]: action.emails };\n }\n return state;\n};\n","import type { Reducer } from 'redux';\nimport type { Action } from 'state/actions';\nimport type { Collection } from 'typings/utils';\nimport { addKey, removeKey, updateKey } from 'utils/stateMap';\nimport type { OrderTemplate } from '../fxOrdersModel';\n\nexport const orderTemplatesReducer: Reducer, Action> = (\n state = {},\n action,\n) => {\n switch (action.type) {\n case 'SAVED_ORDER_TEMPLATES_RECEIVED':\n return action.templates;\n case 'ORDER_TEMPLATE_SAVED':\n return addKey(state, action.template.id, action.template);\n case 'ORDER_TEMPLATE_UPDATED':\n return updateKey(state, action.id, _ => ({ fields: action.fields }));\n case 'ORDER_TEMPLATE_DELETED':\n return removeKey(state, action.templateId);\n }\n return state;\n};\n","import { combineReducers } from 'redux';\nimport type { FxOrdersState } from '../fxOrdersModel';\nimport { ordersReducer } from './fxOrdersProductReducer';\nimport { orderEmailsReducer } from './fxOrdersEmailsReducer';\nimport { orderTemplatesReducer } from './fxOrderTemplatesReducer';\n\nexport const fxOrdersReducer = combineReducers({\n orders: ordersReducer,\n defaultEmailsByBdrId: orderEmailsReducer,\n templates: orderTemplatesReducer,\n});\n","import type { Collection } from 'typings/utils';\n\nexport interface ItemPosition {\n top: number;\n left: number;\n}\n\ninterface IFreeLayout {\n itemPositions: Collection;\n}\n\nexport const emptyFreeLayout: FreeLayout = {\n itemPositions: {},\n};\n\nexport type FreeLayout = Readonly;\n\nexport type FreeLayoutCollection = Collection;\n","import type { FreeLayout } from '../freeLayoutModel';\nimport type { Action } from 'state/actions';\nimport { type Patcher, addKey, updateKey, removeKey } from 'utils/stateMap';\n\nexport const freeLayoutStatePatcher = (action: Action): Patcher => {\n switch (action.type) {\n case 'CLIENTWORKSPACE_NEW_TILE_ADDED':\n return (state: FreeLayout) => ({\n itemPositions: addKey(\n state.itemPositions,\n action.tileId,\n action.position || { top: 0, left: 0 },\n ),\n });\n case 'CLIENTWORKSPACE_TILE_DELETED':\n return (state: FreeLayout) => ({\n itemPositions: removeKey(state.itemPositions, action.tileId),\n });\n case 'FREELAYOUT_ITEM_POSITION_CHANGED': {\n return (state: FreeLayout) => ({\n itemPositions: updateKey(\n state.itemPositions,\n action.itemId,\n () => action.position || { top: 0, left: 0 },\n ),\n });\n }\n }\n return () => null;\n};\n","import type { Reducer } from 'redux';\nimport type { Action } from 'state/actions';\nimport { type FreeLayout, emptyFreeLayout } from '../freeLayoutModel';\nimport type { Collection } from 'typings/utils';\nimport { addKey, removeKey, updateKey } from 'utils/stateMap';\nimport { freeLayoutStatePatcher } from './freeLayoutStatePatcher';\nimport { strictEntries } from 'utils/object/entries';\n\nconst openTileOffset = 40;\n\nexport const freeLayoutCollectionReducer: Reducer, Action> = (\n state = {},\n action,\n) => {\n switch (action.type) {\n case 'CLIENTWORKSPACE_TAB_ADDED':\n return addKey(state, action.tabId, emptyFreeLayout);\n case 'CLIENTWORKSPACE_TAB_REMOVED':\n return removeKey(state, action.tabId);\n case 'CLIENTWORKSPACE_NEW_TILE_ADDED':\n if (action.instrument === 'Order') {\n return updateKey(state, action.clientWorkspaceId, freeLayoutStatePatcher(action));\n }\n break;\n case 'ORDER_SUBMISSION_SUCCESS':\n if (action.orderId === null) {\n return state;\n }\n const [\n workspaceId,\n {\n itemPositions: { [action.quoteId]: existing, ...otherItemPositions },\n },\n ] = strictEntries(state).find(\n ([, { itemPositions }]) => itemPositions[action.quoteId] !== undefined,\n ) ?? [undefined, { itemPositions: {} } as FreeLayout];\n return updateKey(state, workspaceId!, () => {\n if (action.order === undefined) {\n return null;\n }\n return {\n itemPositions: { ...otherItemPositions, [action.orderId!]: existing! },\n };\n });\n case 'BLOTTER_ORDER_OPEN_TILE':\n return updateKey(state, action.currentTabId, layout => {\n const keys = Object.keys(layout.itemPositions);\n return keys.includes(action.orderId)\n ? layout\n : {\n itemPositions: {\n ...layout.itemPositions,\n [action.orderId]: {\n top: (keys.length + 1) * openTileOffset,\n left: (keys.length + 1) * openTileOffset,\n },\n },\n };\n });\n case 'CLIENTWORKSPACE_TILE_DELETED':\n case 'FREELAYOUT_ITEM_POSITION_CHANGED':\n return updateKey(state, action.clientWorkspaceId, freeLayoutStatePatcher(action));\n }\n return state;\n};\n","import type { Reducer } from 'redux';\nimport type { Action } from 'state/actions';\nimport { updateKey, addKey, removeKey } from 'utils/stateMap';\nimport type {\n FxEspStreamsMap,\n EspStreamStreamingState,\n IEspStreamAwaitingState,\n IEspStreamInvalidState,\n} from './espStreamsModel';\n\nexport const espStreamsReducer: Reducer = (\n state: FxEspStreamsMap = {},\n action: Action,\n): FxEspStreamsMap => {\n switch (action.type) {\n case 'ESP_STREAM_TILE_UNSUBSCRIBE':\n return updateKey(state, action.streamKey, ({ refCount }) => ({\n refCount: refCount - 1,\n }));\n\n case 'ESP_REFCOUNT_RESET':\n const stream: IEspStreamAwaitingState = {\n status: 'AWAITING',\n refCount: 0,\n tiering: action.tiering,\n };\n\n return addKey(state, action.streamId, stream);\n\n case 'ESP_TILE_STREAM_ID_AND_REFCOUNT_UPDATED':\n return updateKey(state, action.streamId, ({ refCount }) => ({\n refCount: refCount + 1,\n }));\n\n case 'ESP_HEARTBEAT_MISSED':\n return updateKey(\n state,\n action.streamId,\n () =>\n ({\n status: 'AWAITING',\n } as IEspStreamAwaitingState),\n );\n\n case 'ESP_INVALID_PRICE_RECEIVED':\n return updateKey(\n state,\n action.streamId,\n () =>\n ({\n status: 'INVALID',\n } as IEspStreamInvalidState),\n );\n\n case 'ESP_PRICE_RECEIVED':\n return updateKey(\n state,\n action.streamId,\n () =>\n ({\n status: 'PRICING',\n quoteId: action.quoteId,\n ladders: action.ladders,\n multipassInstanceId: action.multipassInstanceId,\n priceType: action.priceType,\n missedHeartbeat: false,\n priceDecodedTime: action.priceDecodedTime,\n frontTimestamp: action.frontTimestamp,\n backTimestamp: action.backtimestamp,\n } as EspStreamStreamingState),\n );\n\n case 'ESP_STREAM_UNSUBSCRIPTION_REQUEST_SENT':\n return removeKey(state, action.espStreamId);\n\n default:\n return state;\n }\n};\n","import type { Reducer } from 'redux';\nimport type { Mifid2PanelActions } from '../mifidPanelActions';\n\nexport const mifid2ToggleReducer: Reducer = (\n state = false,\n action,\n) => {\n switch (action.type) {\n case 'TOGGLE_MIFID2_PANEL':\n return action.open ?? !state;\n default:\n return state;\n }\n};\n","import type { Reducer } from 'redux';\nimport { addKey, updateKey, removeKey } from 'utils/stateMap';\nimport type { Collection } from 'typings/utils';\nimport type { Mifid2Negotiation } from '../mifidPanelModel';\nimport type { Mifid2PanelActions } from '../mifidPanelActions';\n\nexport const mifid2NegotiationsReducer: Reducer<\n Collection,\n Mifid2PanelActions\n> = (state = {}, action) => {\n switch (action.type) {\n case 'MIFID2_START_NEW_NEGOTIATION':\n return addKey(state, action.negotiationId, {\n startTime: action.timestamp,\n status: 'Open',\n quotes: [],\n });\n case 'MIFID2_FINISH_NEGOTIATION':\n return updateKey(state, action.negotiationId, () => ({\n status: [action.dealDone ? 'Done' : 'Missed', false],\n }));\n case 'MIFID2_FINISH_NEGOTIATION_FAILED':\n return updateKey(state, action.negotiationId, ({ status }) => ({\n status: status === 'Open' ? status : [status[0], true],\n }));\n case 'MIFID2_REMOVE_NEGOTIATION':\n return removeKey(state, action.negotiationId);\n case 'MIFID2_RECORD_TIMESTAMP_SENT':\n return updateKey(state, action.negotiationId, ({ quotes }) => ({\n quotes: [...quotes, action.quoteId],\n }));\n default:\n return state;\n }\n};\n","import type { Reducer } from 'redux';\nimport type { Mifid2PanelActions } from '../mifidPanelActions';\n\nexport const mifid2StartingNegotiationReducer: Reducer = (\n state = false,\n action,\n) => {\n switch (action.type) {\n case 'MIFID2_START_NEW_NEGOTIATION_EPIC':\n return true;\n case 'MIFID2_START_NEW_NEGOTIATION':\n case 'MIFID2_START_NEW_NEGOTIATION_FAILED':\n return false;\n default:\n return state;\n }\n};\n","export const getMifidQuoteId = (negotiationId: string, quoteId: string) =>\n `${negotiationId}/${quoteId}`;\n","import type { Reducer } from 'redux';\nimport { addKey, updateKey } from 'utils/stateMap';\nimport type { Collection } from 'typings/utils';\nimport type { Mifid2Quote } from '../mifidPanelModel';\nimport type { Mifid2PanelActions } from '../mifidPanelActions';\nimport { getMifidQuoteId } from '../utils';\n\nexport const mifid2QuotesReducer: Reducer, Mifid2PanelActions> = (\n state = {},\n action,\n) => {\n switch (action.type) {\n case 'MIFID2_RECORD_TIMESTAMP_SENT':\n return addKey(state, getMifidQuoteId(action.negotiationId, action.quoteId), {\n timestamp: action.timestamp,\n status: 'Sent',\n });\n case 'MIFID2_RECORD_TIMESTAMP_RECEIVED':\n return updateKey(state, getMifidQuoteId(action.negotiationId, action.quoteId), () => ({\n status: action.success ? 'Given' : 'Failed',\n }));\n default:\n return state;\n }\n};\n","import { combineReducers } from 'redux';\nimport type { Mifid2PanelState } from '../mifidPanelModel';\nimport { mifid2ToggleReducer } from './mifidToggleReducer';\nimport { mifid2NegotiationsReducer } from './mifidNegotiationsReducer';\nimport { mifid2StartingNegotiationReducer } from './mifidStartingNegotiationReducer';\nimport { mifid2QuotesReducer } from './mifidQuotesReducer';\n\nexport const mifid2PanelReducer = combineReducers({\n showMifid2Panel: mifid2ToggleReducer,\n isStartingNegotiation: mifid2StartingNegotiationReducer,\n negotiations: mifid2NegotiationsReducer,\n quotes: mifid2QuotesReducer,\n});\n","import type { Reducer } from 'redux';\nimport type { Action } from 'state/actions';\nimport type { ToastsState } from './toastsModel';\n\nconst defaultState: ToastsState = {\n toasts: [],\n};\n\nexport const toastsReducer: Reducer = (\n state: ToastsState = defaultState,\n action: Action,\n): ToastsState => {\n switch (action.type) {\n case 'ADD_TOAST':\n return {\n ...state,\n toasts: [\n ...state.toasts,\n {\n id: action.id,\n\n ...action.toast,\n },\n ],\n };\n case 'REMOVE_TOAST':\n return {\n ...state,\n toasts: state.toasts.filter(c => c.id !== action.id),\n };\n default:\n return state;\n }\n};\n","import { combineReducers } from 'redux';\nimport type { AppState } from 'state/model';\nimport { clientWorkspaceReducer } from 'state/clientWorkspace';\nimport { fxOptionsReducer } from 'state/fxOptions/reducers';\nimport { fxCashsReducer } from 'state/fxCashs/reducer';\nimport { fxSwapsReducer } from 'state/fxSwaps/reducer';\nimport { fxBulksReducer } from 'state/fxBulks/reducer';\nimport { fxAccumulatorsReducer } from 'state/fxAccumulators/reducer';\nimport { referenceDataReducer } from 'state/referenceData/referenceDataReducer';\nimport { globalErrorReducer } from 'state/globalError';\nimport { streamingConnectionReducer } from 'state/streamingConnection';\nimport { gridCollectionReducer } from 'state/gridLayout';\nimport { sessionReducer } from 'state/session/sessionReducer';\nimport { userPreferencesReducer } from 'state/userPreferences';\nimport { blotterReducer } from 'state/blotter/reducer';\nimport { executionsReducer } from './executions/executionsReducer';\nimport { fxOrdersReducer } from './fxOrders/reducers';\nimport { freeLayoutCollectionReducer } from './freeLayout/reducer';\nimport { espStreamsReducer } from './esp/espStreamsReducer';\nimport { rootReducerTimer } from 'utils/Timer/Timers';\nimport { mifid2PanelReducer } from './mifidPanel/reducers';\nimport { toastsReducer } from './toasts/toastsReducer';\n\nexport const rootReducer = rootReducerTimer(\n combineReducers({\n clientWorkspace: clientWorkspaceReducer,\n fxOptions: fxOptionsReducer,\n fxCashs: fxCashsReducer,\n fxSwaps: fxSwapsReducer,\n fxBulks: fxBulksReducer,\n fxAccumulators: fxAccumulatorsReducer,\n fxOrders: fxOrdersReducer,\n espStreams: espStreamsReducer,\n executions: executionsReducer,\n referenceData: referenceDataReducer,\n globalError: globalErrorReducer,\n streamingConnection: streamingConnectionReducer,\n gridLayout: gridCollectionReducer,\n freeLayout: freeLayoutCollectionReducer,\n session: sessionReducer,\n userPreferences: userPreferencesReducer,\n blotter: blotterReducer,\n mifid2Panel: mifid2PanelReducer,\n toasts: toastsReducer,\n }),\n);\n","import type {\n BlotterInstrument,\n BlotterOrderInstrument,\n BlotterOrderStatus,\n BlotterTradeInstrument,\n BlotterTradeOptionType,\n BlotterTradeStatus,\n} from 'state/blotter/blotterEntryModel';\nimport type { ESPHeartbeat, ESPPrice } from 'state/esp/espStreamsModel';\nimport type { ClippingMode, FixingMarginType, FixingPriceType, Speed } from 'state/fxOrders/fxOrdersModel';\nimport type { ConnectableObservable, Observable } from 'rxjs';\nimport type { ISessionStreamEvent } from 'Workers/streamingTypes';\nimport type { Side } from 'state/share/productModel/litterals';\n\nexport type BlotterNotificationType = 'BLOTTER.TRADE' | 'BLOTTER.ORDER';\n\nexport interface IStreamingData {\n type: 'DATA';\n data: T;\n}\n\nexport interface IStreamingError {\n type: 'ERROR';\n error: T;\n}\n\nexport declare type StreamingEvent = IStreamingData | IStreamingError;\n\nexport function isStreamingData(event: StreamingEvent): event is IStreamingData {\n return event.type === 'DATA';\n}\n\ninterface BlotterNotificationMetaData {\n blotterType: BlotterInstrument;\n}\n\nexport interface IBlotterTradeNotificationData extends BlotterNotificationMetaData {\n type: 'BLOTTER.TRADE';\n blotterType: BlotterTradeInstrument;\n id: string;\n status: BlotterTradeStatus | null;\n product: string | null;\n currencyPair: string | null;\n way: Side | null;\n dealtAmount: number | null;\n dealtCurrency: string | null;\n farDealtAmount: number | null;\n contraAmount: number | null;\n contraCurrency: string | null;\n farContraAmount: number | null;\n date: string | null;\n spot: number | null;\n points: number | null;\n venue: string | null;\n account: string | null;\n accountLongName: string | null;\n salesFullName: string | null;\n strike: number | null;\n expiry: string | null;\n premium: number | null;\n premiumCurrency: string | null;\n premiumSide: 'Pay' | 'Receive' | null;\n strategyReference: string | null;\n electronicReference: string | null;\n electronicAccount: string | null;\n farDate: string | null;\n nearDate: string | null;\n nearRate: number | null;\n farRate: number | null;\n spotDate: string | null;\n portfolio: string | null;\n updateTime: string;\n optionType: BlotterTradeOptionType | null;\n deliveryDate: string | null;\n premiumPaymentDate: string | null;\n deliveryType: string | null;\n cutOffPlace: string | null;\n counterpartyBdrId: number | null;\n}\n\nexport interface IBlotterOrderNotificationData extends BlotterNotificationMetaData {\n type: 'BLOTTER.ORDER';\n blotterType: BlotterOrderInstrument;\n status: BlotterOrderStatus | null;\n id: string;\n goodTillCancelled: boolean | null;\n expiryDay: string | null;\n expiryTime: string | null;\n orderType: string;\n currencyPair: string;\n yourWay: Side | null;\n notional: number | null;\n executionPrice: number | null;\n notionalCurrency: string | null;\n executedAmount: number | null;\n customerPrice: number | null;\n account: string;\n updateTime: string;\n limitPrice: number | null;\n rejectReason: string | null;\n startTime?: string | null;\n endTime?: string | null;\n maturityDate?: string | null;\n liquidityPool?: string | null;\n clippingMode?: ClippingMode | null;\n clipSize?: number | null;\n randomize?: boolean | null;\n swapPoints?: number | null;\n forwardPrice?: number | null;\n remainingAmount?: number | null;\n averagePrice?: number | null;\n noWorseThan?: number | null;\n spreadCapture?: boolean | null;\n alphaSeeker?: boolean | null;\n speed?: Speed | null;\n // TODO ABO, SGEFX-5010: check with Edouard if this shouold be in the blotter order list response (in UAT we don't get it)\n fixingTypes?: string[] | null;\n fixingBenchmark?: string | null;\n fixingPlace?: string | null;\n fixingTime?: string | null;\n fixingDateUtc?: string | null;\n fixingPriceType?: FixingPriceType | null;\n fixingMarginType?: FixingMarginType | null;\n marginInBps?: number | null;\n margin?: number | null;\n price?: number | null;\n}\n\nexport type IBlotterNotificationData = IBlotterTradeNotificationData | IBlotterOrderNotificationData;\nexport interface IBlotterNotificationStreamData extends IStreamingData {\n data: IBlotterNotificationData;\n}\n\nexport interface IDisconnectionNotificationData extends IStreamingData {\n data: { type: 'DISCONNECTION.NOTIFICATION' };\n reason: 'connected_twice' | 'force_logoff_time';\n}\n\n/** @todo Should be `{ RequestId: string } & something` instead of `any` */\nexport interface IRequestForStreamData extends IStreamingData {}\n\nexport interface IEspStreamData extends IStreamingData {\n data: ESPPrice | ESPHeartbeat;\n}\n\nexport interface Streams {\n session$: ConnectableObservable;\n dataStream$: Observable;\n disconnectionNotification$: Observable;\n esp$: Observable;\n rfs$: Observable;\n blotterNotification$: Observable;\n heartbeatMissed$: Observable;\n}\n","import { isDefined } from '@sgme/fp';\nimport type {\n IBlotterNotificationStreamData,\n IDisconnectionNotificationData,\n IEspStreamData,\n IRequestForStreamData,\n IStreamingData,\n} from './typings';\n\nconst blotterDataTypes = ['BLOTTER.TRADE', 'BLOTTER.ORDER'];\nexport function isBlotterLiveNotification(\n event: IStreamingData,\n): event is IBlotterNotificationStreamData {\n return blotterDataTypes.includes(event.data.type);\n}\n\nexport function isDisconnectionNotification(\n event: IStreamingData,\n): event is IDisconnectionNotificationData {\n return event.data.type === 'DISCONNECTION.NOTIFICATION';\n}\n\nconst streamingDataTypes = ['ESP.HEARTBEAT', 'ESP.CLIENT.PRICE', 'ESP.TRADER.PRICE'];\nexport function isEspStreamData(event: IStreamingData): event is IEspStreamData {\n return event.data.streamId !== undefined && streamingDataTypes.includes(event.data.priceType);\n}\n\nexport function isRequestForStreamData(event: IStreamingData): event is IRequestForStreamData {\n return isDefined(event.data.RequestId);\n}\n","import { logger } from 'logging/logger';\nimport type { StreamSource } from 'state/fxCashs/selectors/fxCashsSelectors';\nimport type { Instrument } from 'state/referenceData/referenceDataModel';\n\ntype LogLevelCode = 0 | 1 | 2;\n\ntype LogLevel = 'off' | 'info' | 'verbose';\n\n/* eslint-disable no-console */\n\nconst logLevelMap: Record = {\n off: 0,\n info: 1,\n verbose: 2,\n};\n\nfunction getLogLevelCode(level: string | null) {\n const log = level !== null ? (level as LogLevel) : 'off';\n return logLevelMap[log] ?? 0;\n}\n\nconst idLogger = {\n log: id,\n table: id,\n};\n\n// @TODO: remove this\nexport function loggerBuilder(query: URLSearchParams) {\n const queryLogLevel = getLogLevelCode(query.get('log'));\n return function withprefix(prefix: string) {\n return function atLevel(level: Exclude) {\n const logLevel = getLogLevelCode(level);\n return query.get('log-' + prefix) !== null || queryLogLevel >= logLevel\n ? {\n log: function log(...args: readonly any[]) {\n console.log(prefix, ...args);\n },\n table: function table(...args: any[]) {\n const title = typeof args[0] === 'string' ? `${prefix} ${args.shift()}` : prefix;\n console.groupCollapsed(title);\n console.table(...args);\n console.groupEnd();\n },\n }\n : idLogger;\n };\n };\n}\n\nfunction id(..._args: readonly any[]) {\n //\n}\n\nexport function timeoutedExecutionLogging(\n requestType: StreamSource,\n instrument: Instrument,\n message: string,\n) {\n logger.logWarning(\n '{instrument} {requestType} quote execution has being manually rejected by MultipassBridge because timeout',\n instrument,\n requestType,\n message,\n );\n}\n","import type {\n UpstreamPostMessageStreaming,\n DownstreamPostMessageStreaming,\n} from 'Workers/messages';\nimport type { ISignalRConfiguration } from '../../../configuration.signalr';\nimport { loggerBuilder } from 'utils/logger';\nimport { fromMessagePort } from 'utils/RX';\nimport { tap } from 'rxjs/operators';\nimport { noop } from 'rxjs';\n// @ts-ignore\nimport MyWorker from '../../Workers/index.js?worker&inline';\n\nconst params = new URLSearchParams(self?.location.search);\nconst logger = loggerBuilder(params)('[MAIN THREAD MESSAGE RECEIVED]')('verbose');\n\nconst worker = new MyWorker();\n\nexport const [fromWebworker$, toWebworker$] = fromMessagePort<\n UpstreamPostMessageStreaming,\n DownstreamPostMessageStreaming\n>(worker);\n\nfromWebworker$.pipe(tap(logger.log)).subscribe(noop);\n\nexport function startSignalR(config: ISignalRConfiguration) {\n logger.log('START SIGNALR');\n toWebworker$.next({ type: 'START_SIGNALR', config });\n}\n\nexport function startRemoteLogging(windowMs: number) {\n if (!Number.isNaN(windowMs) && windowMs >= 1000) {\n // eslint-disable-next-line no-console\n console.info('STARTING WEBWORKER LOGGING', windowMs);\n toWebworker$.next({ type: 'START_REMOTE_LOGGING', windowMs });\n } else {\n console.warn('WEBWORKER LOGGING IS DISABLED', windowMs);\n }\n}\n\nexport function startStreamingPing(intervalMs: number, maxEspStreamingMs: number) {\n if (!Number.isNaN(intervalMs) && intervalMs >= 1000) {\n // eslint-disable-next-line no-console\n console.info('STARTING WEBWORKER STREAMING PING', intervalMs);\n toWebworker$.next({\n type: 'START_STREAMING_PING',\n intervalMs,\n maxEspStreamingMs,\n });\n } else {\n console.warn('WEBWORKER STREAMING PING IS DISABLED', intervalMs);\n }\n}\n\nexport function setUserInfo(userInfo: { login: string; authorizationHeader: string }) {\n toWebworker$.next({ type: 'USER_INFO', userInfo });\n}\n\nexport function setConfig(baseUrl: string, loggingSessionId: string) {\n toWebworker$.next({ type: 'CONFIG', baseUrl, loggingSessionId });\n}\n\nexport function terminate(e: any) {\n // eslint-disable-next-line no-console\n console.info('TERMINATING WEB WORKER', e);\n worker.terminate();\n}\n","import { fromEvent } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\n\nexport function hidden(dom: Document) {\n return fromEvent(dom, 'visibilitychange').pipe(\n map(ev => (ev.currentTarget as Document).hidden),\n startWith(dom.hidden),\n );\n}\n","import type { SchedulerLike, Observable } from 'rxjs';\nimport { map, delay } from 'rxjs/operators';\n\nexport function measuredDelay(now: () => number, delayMs: number, scheduler?: SchedulerLike) {\n return function operator(source$: Observable): Observable {\n return source$.pipe(\n map(t => [t, now()] as const),\n delay(delayMs, scheduler),\n map(([t, start]) => [t, now() - start] as const),\n );\n };\n}\n","import type { ISessionStreamEvent } from 'Workers/streamingTypes';\nimport { ConnectableObservable, from } from 'rxjs';\nimport { filter, share, publish, mergeMap, map, startWith, withLatestFrom } from 'rxjs/operators';\nimport { datastreamIsRFSTimer, datastreamIsDataTimer } from 'utils/Timer/Timers';\nimport {\n isDisconnectionNotification,\n isBlotterLiveNotification,\n isRequestForStreamData,\n} from './typeGuards';\nimport { fromWebworker$, toWebworker$ } from './streamingWorker';\nimport { SubjectFactoryByProperty } from 'utils/RX';\nimport { hidden } from './visibility';\nimport { measuredDelay } from 'utils/RX/operators/measuredDelay';\nimport { type StreamingEvent, isStreamingData, type Streams } from './typings';\n\nconst pollingDelayMs = 50;\n\nconst hidden$ = hidden(document);\n\nconst messageType = new SubjectFactoryByProperty('type', fromWebworker$);\nconst legacy$ = messageType.create('DATASTREAM');\n\nconst heartbeatMissed$ = messageType.create('ESP_HEARTBEAT_MISSED').pipe(\n map(({ streamId }) => streamId),\n share(),\n);\n\nconst flush$ = messageType.create('FLUSH');\n\n/**\n * @todo type session message ASAP\n */\nconst session$ = legacy$.pipe(\n map(({ message }) => message),\n publish(),\n) as ConnectableObservable;\n\nconst dataStream$ = (session$ as unknown as ConnectableObservable).pipe(\n filter(datastreamIsDataTimer(isStreamingData)),\n share(),\n);\n\nconst disconnectionNotification$ = dataStream$.pipe(filter(isDisconnectionNotification), share());\n\nconst blotterNotification$ = dataStream$.pipe(filter(isBlotterLiveNotification), share());\n\n// Return polling loop\nflush$\n .pipe(\n startWith(null),\n withLatestFrom(hidden$),\n map(([_, hiddenBefore]) => ({ hiddenBefore })),\n measuredDelay(() => performance.now(), pollingDelayMs),\n map(([item, observedDelay]) => ({ ...item, observedDelay })),\n withLatestFrom(hidden$),\n map(([item, hiddenAfter]) => ({ ...item, hiddenAfter })),\n map(delayInfo => ({ type: 'FLUSH' as 'FLUSH', delayInfo })),\n )\n .subscribe(toWebworker$);\n\nconst esp$ = flush$.pipe(\n map(({ esp }) => esp),\n mergeMap(array => from(array)),\n share(),\n);\n\nconst rfs$ = dataStream$.pipe(filter(datastreamIsRFSTimer(isRequestForStreamData)), share());\n\nexport const getStreams = (): Streams => {\n if (session$ === undefined) {\n throw new Error(\n 'Streams are missing, ensure correct call to initStreams() before calling getStreams',\n );\n }\n return {\n session$,\n dataStream$,\n disconnectionNotification$,\n esp$,\n rfs$,\n blotterNotification$,\n heartbeatMissed$,\n };\n};\n","import { Observable } from 'rxjs';\nimport { logger } from '../logging/logger';\n\ntype CrashEventSub = (err: Error, ...rest: readonly any[]) => any;\n\nexport const createCircuitBreaker = function () {\n let fused: boolean = false;\n let error: Error;\n let subs: CrashEventSub[] = [];\n\n function crash(err: Error, ...rest: readonly any[]) {\n if (fused === false) {\n error = err;\n fused = true;\n subs.forEach(cb => cb(err, ...rest));\n // release scope of callbacks\n subs = [];\n }\n }\n\n function onCrash(cb: CrashEventSub) {\n if (fused === true) {\n // immediately call back with last error\n cb(error);\n } else {\n subs.push(cb);\n }\n }\n\n function crashStatus() {\n return fused;\n }\n\n const crash$ = new Observable(obs =>\n onCrash(e => {\n logger.logDebug('Application terminated');\n obs.next(e);\n obs.complete();\n }),\n );\n return { crash, onCrash, crashStatus, crash$ };\n};\n","import { createCircuitBreaker } from 'utils/createCircuitBreaker';\nexport const { crash, crash$, crashStatus, onCrash } = createCircuitBreaker();\n","import type { Category, Matomo, Action as MatomoAction } from 'utils/matomoUtils';\nimport type { Action } from 'state/actions';\nimport type { AppState } from 'state/model';\nimport type { OnActionNotifierCallback } from 'redux-middlewares/actionNotificationMiddleware';\nimport { getQuoteInstrument } from 'state/clientWorkspace/selectors';\nimport { getOptionIsStrategy } from 'state/fxOptions/selectors';\nimport { assertUnreachable, isDefined } from '@sgme/fp';\nimport type { OptionStrategyTypeChanged } from 'state/fxOptions/actions/optionProduct';\nimport type { IFxVanillaLegInputs } from '../../state/fxOptions/model/optionsLegs';\n\nconst actionsToCategories: Record = {\n CASH: 'Cash',\n ESP: 'Cash',\n SWAP: 'Swap',\n OPTION: 'Option',\n BULK: 'Bulk',\n ACCUMULATOR: 'Accumulator',\n ORDER: 'Order',\n};\n\nconst extractTypeRegex = /^([^_]+)_.*$/;\n/**\n * Extract category from action type\n *\n * This function uses a regex to get the beginning of the action type\n * @param action A redux action\n * @returns The matching category\n */\nfunction mapActionToCategory(action: Action): Category {\n return actionsToCategories[action.type.replace(extractTypeRegex, '$1')];\n}\n\nexport function matomoHandlerInitializer(matomo: Matomo): OnActionNotifierCallback {\n return (action: Action, state: AppState) => {\n switch (action.type) {\n case 'REFERENCE_DATA_RECEIVED':\n matomo.init(action.matomoLogin);\n break;\n case 'CLIENTWORKSPACE_TAB_ADDED':\n matomo.track('Workspace', 'Add tab');\n break;\n case 'CLIENTWORKSPACE_TAB_REMOVED':\n matomo.track('Workspace', 'Remove tab');\n break;\n case 'CLIENTWORKSPACE_CLIENT_CHANGED':\n matomo.track('Workspace', 'Change client');\n break;\n case 'CLIENTWORKSPACE_NEW_TILE_ADDED':\n matomo.track('Workspace', 'Add tile', action.instrument);\n break;\n case 'CLIENTWORKSPACE_TILE_DUPLICATED':\n matomo.track('Workspace', 'Duplicate tile', action.instrument);\n break;\n case 'CLIENTWORKSPACE_TILE_DELETED':\n if (!action.automatically) {\n matomo.track('Workspace', 'Remove tile');\n }\n break;\n case 'ORDER_TEMPLATE_SAVED':\n matomo.track('Workspace', 'Order template created');\n break;\n case 'ORDER_TEMPLATE_UPDATED':\n matomo.track('Workspace', 'Order template updated');\n break;\n case 'ORDER_TEMPLATE_APPLIED':\n matomo.track('Workspace', 'Order template applied');\n break;\n case 'ORDER_TEMPLATE_DELETED':\n matomo.track('Workspace', 'Order template deleted');\n break;\n case 'CLIENTWORKSPACE_TILE_INSTRUMENT_CHANGED':\n matomo.track(action.instrument, 'Change product');\n break;\n case 'CLIENTWORKSPACE_TILE_CLIENT_OVERRIDDEN':\n case 'CLIENTWORKSPACE_TILE_CLIENT_RESET':\n const instrument = getQuoteInstrument(state, action.quoteId);\n if (instrument !== 'BlotterOrder') {\n matomo.track(\n instrument,\n action.type === 'CLIENTWORKSPACE_TILE_CLIENT_OVERRIDDEN'\n ? 'Tile client changed'\n : 'Tile client reset',\n );\n }\n break;\n case 'USER_PREFERENCES_TOGGLE_MODAL':\n if (action.open) {\n matomo.track('Workspace', 'Open preferences');\n }\n break;\n case 'USER_PREFERENCES_DATA_CHANGED':\n matomo.track('Workspace', 'Preference changed', Object.keys(action.patch).join(','));\n break;\n case 'TOGGLE_MIFID2_PANEL':\n matomo.track('Mifid2', action.open ? 'Open MIFID2 panel' : 'Close MIFID2 panel');\n break;\n case 'RECORD_PRICE_SUCCEEDED':\n matomo.track('Mifid2', 'Price recorded');\n break;\n case 'BLOTTER_TOGGLE':\n matomo.track('Blotter', action.isOpen ? 'Open blotter' : 'Close blotter');\n break;\n case 'SAVE_WORKSPACE_DONE':\n matomo.track('Workspace', 'Save workspace');\n break;\n case 'TOGGLE_TRADING_DISABLED':\n matomo.track('Workspace', 'Workspace lock toggled');\n break;\n case 'CASH_PROPERTIES_CHANGED':\n case 'SWAP_PROPERTIES_CHANGED':\n case 'OPTION_PROPERTY_CHANGED':\n case 'BULK_PROPERTY_CHANGED':\n case 'ACCUMULATOR_PROPERTIES_CHANGED':\n case 'ORDER_PROPERTY_CHANGED':\n if (action.patch.currencyPair) {\n matomo.track(mapActionToCategory(action), 'Change currency pair');\n }\n if (action.type === 'OPTION_PROPERTY_CHANGED') {\n if (action.patch.amountReference) {\n matomo.track(mapActionToCategory(action), 'Amount ref overriden in option strategy');\n }\n if (action.patch.hedgeType === 'Forward') {\n matomo.track(mapActionToCategory(action), 'Hedge forward');\n }\n }\n if (action.type === 'ACCUMULATOR_PROPERTIES_CHANGED') {\n if (action.patch.ekiTrigger) {\n matomo.track(mapActionToCategory(action), 'Accumulator type changed to permanent');\n }\n }\n break;\n case 'OPTION_HEDGE_PROPERTY_CHANGED':\n matomo.track(mapActionToCategory(action), 'Custom hedge');\n break;\n case 'OPTION_LEG_PROPERTY_CHANGED':\n // tracked properties are only exposed on subLegs\n const patch = action.patch as Partial;\n if (patch.strike) {\n switch (patch.strike.toLowerCase()) {\n case 'atm':\n case 'atmf':\n case 'atms':\n matomo.track(mapActionToCategory(action), 'Strike shortcut used');\n break;\n }\n }\n if (isDefined(patch.volatilityAsk) || isDefined(patch.volatilityBid)) {\n matomo.track(mapActionToCategory(action), 'Volatility has been overriden');\n }\n break;\n case 'BULK_LEGS_EXCLUDED':\n matomo.track('Bulk', 'Exclude from bulk');\n break;\n case 'BULK_CREATED':\n matomo.track('Bulk', 'Create bulk');\n break;\n case 'BULK_IMPORTED':\n matomo.track('Bulk', 'Import bulk');\n break;\n case 'BULK_LEG_ADDED':\n matomo.track('Bulk', 'Add product to bulk');\n break;\n case 'BULK_LEGS_REMOVED':\n matomo.track('Bulk', 'Remove product(s) from bulk', `${action.legIds.length}`);\n break;\n case 'BULK_RESET':\n matomo.track('Bulk', 'Reset bulk');\n break;\n case 'OPTION_STREAM_STARTED':\n case 'ACCUMULATOR_RFS_REQUEST_EPIC':\n matomo.track(\n mapActionToCategory(action),\n action.forceTradeable ? 'Tradeable stream request' : 'Stream request',\n );\n break;\n case 'ACCUMULATOR_SCHEDULE_LEG_PROPERTIES_CHANGED':\n matomo.track('Accumulator', 'Calendar overridden');\n break;\n case 'CASH_RFS_STARTED':\n case 'SWAP_RFS_STARTED':\n case 'BULK_RFS_STARTED':\n matomo.track(mapActionToCategory(action), 'Stream request');\n break;\n case 'CASH_RFS_CANCEL':\n case 'SWAP_RFS_CANCEL':\n case 'OPTION_STREAM_CANCELED':\n case 'BULK_RFS_CANCEL':\n case 'ACCUMULATOR_RFS_CANCELED':\n matomo.track(mapActionToCategory(action), 'Stream cancel');\n break;\n case 'CASH_RFS_EXECUTION_REQUESTED':\n case 'CASH_ESP_EXECUTION_REQUESTED':\n case 'SWAP_RFS_EXECUTION_REQUESTED_EPIC':\n case 'OPTION_EXECUTION_REQUESTED':\n case 'BULK_EXECUTION_REQUESTED_EPIC':\n case 'ACCUMULATOR_EXECUTION_REQUESTED':\n matomo.track(mapActionToCategory(action), 'Execution request');\n break;\n case 'ORDER_SUBMISSION_EPIC':\n matomo.track('Order', 'Order submission request');\n break;\n case 'CASH_EXECUTION_RECEIVED':\n case 'SWAP_EXECUTION_RECEIVED':\n case 'OPTION_EXECUTION_RECEIVED':\n case 'BULK_EXECUTION_RECEIVED':\n case 'ACCUMULATOR_EXECUTION_RECEIVED':\n matomo.track(mapActionToCategory(action), 'Execution success');\n break;\n case 'ORDER_SUBMISSION_SUCCESS':\n matomo.track('Order', 'Order submission success');\n break;\n case 'CASH_EXECUTION_FAILED':\n case 'SWAP_EXECUTION_FAILED':\n case 'OPTION_EXECUTION_FAILED':\n case 'BULK_EXECUTION_FAILED':\n case 'ACCUMULATOR_EXECUTION_FAILED':\n matomo.track(mapActionToCategory(action), 'Execution failure');\n break;\n case 'ORDER_SUBMISSION_FAILED':\n matomo.track('Order', 'Order submission failure');\n break;\n case 'BLOTTER_ORDER_MODIFY_EPIC':\n matomo.track('Order', 'Order modify');\n break;\n case 'BLOTTER_ORDER_FILL_EPIC':\n matomo.track('Order', 'Order fill now');\n break;\n case 'BLOTTER_ORDER_PAUSE_EPIC':\n matomo.track('Order', 'Order pause');\n break;\n case 'BLOTTER_ORDER_RESUME_EPIC':\n matomo.track('Order', 'Order resume');\n break;\n case 'BLOTTER_ORDER_CANCELLATION_EPIC':\n matomo.track('Order', 'Order cancel');\n break;\n case 'BLOTTER_OPEN_TILE_FROM_TRADE':\n matomo.track('Blotter', 'Open tile from blotter');\n break;\n case 'OPTION_LEG_ADDED':\n matomo.track('Option', 'Add leg to option');\n break;\n case 'OPTION_LEG_DUPLICATED':\n matomo.track('Option', 'Duplicate option leg');\n break;\n case 'OPTION_LEG_REMOVED':\n matomo.track('Option', 'Remove leg from option');\n break;\n case 'OPTION_LEGS_IMPORTED':\n matomo.track('Option', 'Import option legs');\n break;\n case 'OPTION_LEG_CURRENCY_LINKED_TOGGLED':\n matomo.track('Option', 'Notional currency pairs link toggled');\n break;\n case 'OPTION_LEGS_PREMIUM_PIN_TOGGLED':\n matomo.track('Option', 'Legs premiums pin toggled');\n break;\n case 'OPTION_SOLVING_REQUESTED':\n const isStrategyView = getOptionIsStrategy(state, action.quoteId);\n if (isStrategyView) {\n matomo.track('Option', 'Solving requested in strategy view');\n } else {\n matomo.track('Option', 'Solving requested in compact view');\n }\n break;\n case 'ACCUMULATOR_SCHEDULE_IMPORTED':\n matomo.track('Accumulator', 'Import TA schedule');\n break;\n case 'CLIENTWORKSPACE_TILE_ZOOMED':\n matomo.track('Workspace', 'Zoom tile');\n break;\n case 'CLIENTWORKSPACE_TILE_MINIMIZED':\n matomo.track('Workspace', 'Reduce tile');\n break;\n case 'OPTION_ORIENTATION_TOGGLED':\n matomo.track(\n 'Option',\n action.orientation === 'horizontal'\n ? 'Switch to horizontal leg'\n : 'Switch to vertical leg',\n );\n break;\n case 'OPTION_TOGGLE_GROUP':\n matomo.track(\n 'Option',\n action.isGroup ? 'Group strategy legs by expiry' : 'Ungroup strategy legs',\n );\n break;\n case 'OPTION_COPY_PASTED':\n matomo.track('Option', 'Paste in option strategy');\n break;\n case 'PIN_CLIENT':\n matomo.track('Workspace', 'Pin client');\n break;\n case 'UNPIN_CLIENT':\n matomo.track('Workspace', 'Unpin client');\n break;\n case 'MOVE_UP_PINNED_CLIENT':\n matomo.track('Workspace', 'Move client up');\n break;\n case 'MOVE_DOWN_PINNED_CLIENT':\n matomo.track('Workspace', 'Move client down');\n break;\n case 'CASH_TILE_OPEN_FROM_BLOTTER_EPIC':\n case 'SWAP_TILE_OPEN_FROM_BLOTTER_EPIC':\n case 'OPTION_TILE_OPEN_FROM_BLOTTER_EPIC':\n break;\n case 'OPTION_STRATEGY_TYPE_CHANGED':\n const trackedOptionStrategyType = mapDisplayType(action.strategyType);\n matomo.track('Option', trackedOptionStrategyType);\n break;\n }\n };\n}\nfunction mapDisplayType(strategyType: OptionStrategyTypeChanged['strategyType']): MatomoAction {\n switch (strategyType) {\n case 'Vanilla':\n return 'Call / Put';\n case 'Straddle':\n return 'Straddle';\n case 'Strangle':\n return 'Strangle';\n case 'RiskReversal':\n return 'Risk Reversal';\n default:\n assertUnreachable(strategyType, 'Unhandled option strategy type');\n }\n}\n","import type { AppState } from 'state/model';\nimport { logger } from 'logging/logger';\nimport {\n type OnActionNotifierCallback,\n actionCreatorTypeExtractor,\n} from 'redux-middlewares/actionNotificationMiddleware';\nimport type { Action } from 'state/actions';\nimport type { AnyAction } from 'redux';\nimport { extract } from 'utils/object';\nimport { createAppCrashedAction } from 'state/globalError';\nimport { changeTileClientError } from 'state/clientWorkspace';\n\nconst errorActions: readonly string[] = [createAppCrashedAction, changeTileClientError].map(\n actionCreatorTypeExtractor,\n);\n\nconst sanitizeLoggedAction = (action: Action): AnyAction => {\n if (action.type === 'BLOTTER_INTRADAY_TRADES_RECEIVED') {\n const { trades, ...rest } = action;\n return {\n ...rest,\n trades: trades.map(extract('id')),\n };\n }\n return action;\n};\n\nexport const logActionCallback: OnActionNotifierCallback = (action: Action) => {\n if (errorActions.includes(action.type)) {\n logger.logError('error action {action}', JSON.stringify(action));\n } else {\n logger.logInformation('action {action}', JSON.stringify(sanitizeLoggedAction(action)));\n }\n};\n","import type { Action, AnyAction, Dispatch, Middleware, MiddlewareAPI } from 'redux';\nimport type { DispatchWithThunkExt } from 'state';\nimport { logger } from '../logging/logger';\n\nexport type OnCatchActionCreator = (err: Error, action: any, state: S) => Action;\n\nexport function tryCatchMiddleware(onCatchActionCreator?: OnCatchActionCreator) {\n return ((store: MiddlewareAPI) =>\n (next: Dispatch) =>\n (action: Action) => {\n try {\n return next(action);\n } catch (error: any) {\n logger.logError('Caught an unexpected error {message_m}', error.message);\n if (onCatchActionCreator === undefined) {\n return store.getState();\n }\n return next(onCatchActionCreator(error, action, store.getState()));\n }\n }) as Middleware>;\n}\n","import type { OnCatchActionCreator } from 'redux-middlewares/tryCatchMiddleware';\nimport type { AppState } from 'state/model';\nimport { createAppCrashedAction } from 'state/globalError/globalErrorActions';\nimport { logger } from '../../logging/logger';\n\nexport const crashHandler: OnCatchActionCreator = (err, action) => {\n let source: any;\n if (err.stack !== undefined) {\n source = err.stack;\n } else {\n try {\n source = JSON.stringify(err);\n } catch (e) {\n source = '';\n }\n }\n logger.logError('app crashed with {source}', JSON.stringify(source));\n return createAppCrashedAction(action.type || action.name, source);\n};\n","import {\n actionNotifier,\n actionCreatorTypeExtractor,\n} from 'redux-middlewares/actionNotificationMiddleware';\nimport type { Action } from 'state/actions';\nimport {\n createAppCrashedAction,\n authExpiredAction,\n type AppCrashedAction,\n} from 'state/globalError';\nimport { espPriceReceived } from 'state/esp/espStreamsActions';\nimport { notifyDisconnection } from 'state/session/sessionActions';\nimport {\n gridItemDragEnd,\n gridItemSizeChange,\n gridItemDrag,\n} from 'state/gridLayout/gridLayoutActions';\nimport { logActionCallback } from './logActionCallback';\nimport { crash } from 'circuitBreaker';\nimport { tryCatchMiddleware } from 'redux-middlewares/tryCatchMiddleware';\nimport { crashHandler } from './crashEventHandler';\nimport { sendHelpRequest } from 'api/help';\n\nexport const logActionMiddleware = actionNotifier({\n didNotMatch: logActionCallback,\n actionsList: [espPriceReceived, gridItemSizeChange, gridItemDrag, gridItemDragEnd].map(\n actionCreatorTypeExtractor,\n ),\n});\n\nexport const crashOnActionMiddleware = actionNotifier({\n didMatch: crash,\n actionsList: [createAppCrashedAction, authExpiredAction, notifyDisconnection].map(\n actionCreatorTypeExtractor,\n ),\n});\n\nexport const autosendHelpRequestMiddleware = (isDev: boolean) => {\n const actionsList = isDev ? [] : [actionCreatorTypeExtractor(createAppCrashedAction)];\n return actionNotifier({\n didMatch: (err: AppCrashedAction) => {\n const { error } = err;\n sendHelpRequest({\n config: 'appcrashed',\n details: `Automatic help request sent after APP_CRASHED${\n typeof error === 'object' && 'message' in error && error.message !== undefined\n ? ` (${error.message})`\n : ''\n }${\n typeof error === 'object' && 'stack' in error && error.stack !== undefined\n ? ':\\n' + error.stack\n : ''\n }`,\n includeLastActions: true,\n includeState: true,\n sendConfirmation: false,\n });\n },\n actionsList,\n });\n};\n\nexport const catchMiddleware = tryCatchMiddleware(crashHandler);\n\nexport const rememberLastActionsMiddleware = (actionsBuffer: Action[] = [], maxActions = 50) =>\n actionNotifier({\n didMatch: action => {\n actionsBuffer.unshift(action);\n actionsBuffer.splice(maxActions);\n },\n });\n","import type { Dispatch, Middleware, MiddlewareAPI, Action } from 'redux';\nimport type { DispatchWithThunkExt } from 'state';\n\n/**\n * @param shouldBreak should return true when circuit breaker middleware prevents state updates\n */\nexport function circuitBreakerMiddleware(shouldBreak: () => boolean) {\n return ((store: MiddlewareAPI) =>\n (next: Dispatch) =>\n (action: Action) => {\n if (shouldBreak() === true) {\n // stop propagation to other middlewares or reducer\n // state will be returned as is, no mutation from any dispatch\n return store.getState();\n } else {\n next(action);\n }\n }) as Middleware;\n}\n","import type { IReferenceDataApi } from 'epics/retrieveReferenceData';\nimport { correlationIdHeaderName, type ISgmeHttp } from 'utils/sgmeHttp';\nimport type { ClosedDates, EspLimits, User } from 'state/referenceData/referenceDataModel';\nimport { map } from 'rxjs/operators';\nimport { extract } from 'utils/object';\nimport { v4 as getNewGuid } from 'uuid';\nimport { logger } from 'logging/logger';\n\nexport const referenceDataApi = (\n http: ISgmeHttp,\n getGuid = getNewGuid,\n _logger = logger,\n): IReferenceDataApi => ({\n getUserData() {\n const correlationId = getGuid();\n const headers = { [correlationIdHeaderName]: correlationId };\n _logger.logInformation(\n 'Requesting user/current with {correlationId_s}',\n headers['X-Correlation-ID'],\n );\n return http.getJSON('api/user/current', headers).pipe(map(extract('payload')));\n },\n getClosedDates(currencyPairs: readonly string[]) {\n return http.post('api/dates/closed', currencyPairs).pipe(map(extract('payload')));\n },\n getEspLimits(currencies: readonly string[]) {\n return http.post('api/user/espLimits', currencies).pipe(map(extract('payload')));\n },\n timeout: 10_000,\n});\n","import type { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport type { FxOptionPatchWithTradeCaptureMetaData } from 'state/fxOptions/actions/optionProduct';\nimport { extract } from 'utils/object';\nimport type { ISgmeHttp } from 'utils/sgmeHttp';\nimport type {\n TradeCaptureOptionRequestWrapper,\n TradeCaptureOptionResponseWrapper,\n TradeCaptureStrippingRequest,\n} from './tradeCaptureOptionModel';\n\nexport interface TradeCaptureApiRequest {\n sessionId: string;\n tileId: string;\n request: TradeCaptureOptionRequestWrapper;\n}\nexport interface ITradeCaptureOptionApi {\n timeout: number;\n createNewVersions(request: TradeCaptureApiRequest[]): Observable;\n createNewVersionsMultiLegs(\n request: TradeCaptureApiRequest[],\n ): Observable;\n createStrip(\n sessionId: string,\n request: TradeCaptureStrippingRequest,\n ): Observable;\n createStripMultileg(\n sessionId: string,\n request: TradeCaptureStrippingRequest,\n ): Observable;\n}\n\nexport interface TradeCaptureBatchedResponses {\n [optionId: string]: TradeCaptureOptionResponseWrapper;\n}\n\nexport interface FxOptionPatchWithOptionId {\n optionId: string;\n patch: FxOptionPatchWithTradeCaptureMetaData | null;\n}\n\nexport function tradeCaptureApi(http: ISgmeHttp): ITradeCaptureOptionApi {\n return {\n createNewVersions(queries: TradeCaptureApiRequest[]) {\n const uri = 'api/tradeCaptureBatch/Vanilla';\n\n return http\n .post(uri, queries)\n .pipe(map(httpCall => httpCall.payload));\n },\n createNewVersionsMultiLegs(queries: TradeCaptureApiRequest[]) {\n const uri = 'api/tradeCaptureBatch/FxOptionMultileg';\n\n return http\n .post(uri, queries)\n .pipe(map(httpCall => httpCall.payload));\n },\n createStrip(sessionId: string, request: TradeCaptureStrippingRequest) {\n return http\n .post(\n `api/tradeCapture/Vanilla/${sessionId}/stripping`,\n request,\n )\n .pipe(map(extract('payload')));\n },\n createStripMultileg(sessionId: string, request: TradeCaptureStrippingRequest) {\n return http\n .post(\n `api/tradeCapture/FxOptionMultileg/${sessionId}/stripping`,\n request,\n )\n .pipe(map(extract('payload')));\n },\n timeout: 10_000,\n };\n}\n","import {\n CashLegId,\n type CashTradeCapturePatch,\n type CashTradeCaptureResponseLegProperties,\n type TradeCaptureCashResponseWrapper,\n} from './tradeCaptureModel';\nimport { fromTcError, getPreviousMap, mapAmount, previousValue } from 'api/tradeCapture/tradeCaptureMappingHelper';\nimport type { IFxCashValues } from 'state/fxCashs/fxCashsModel';\nimport { clearUndefined } from 'utils/clearUndefined';\n\n// Mapping XONE-TC => WEB APP\n\nfunction mapCashTCLegPropertiesToCashStoreLegProperties(\n responseCashLeg: Partial,\n): Partial {\n const amount = mapAmount(responseCashLeg.negotiatedCurrency, responseCashLeg.amount1, responseCashLeg.amount2);\n const mappedCashLegProperties: Partial = {\n productName: responseCashLeg.productName,\n amount,\n amountCurrency: responseCashLeg.negotiatedCurrency,\n maturityDate: responseCashLeg.maturityDate,\n maturityDateTenor: responseCashLeg.maturityDateTenor,\n isNonDeliverable: responseCashLeg.isNonDeliverable,\n fixingDate: responseCashLeg.fixingDate,\n fixingSource: responseCashLeg.fixingSource,\n fixingCurrency: responseCashLeg.fixingCurrency,\n possibleFixingCurrencies: responseCashLeg.possibleFixingCurrencies,\n possibleFixingSources: responseCashLeg.possibleFixingSources,\n isCrossed: responseCashLeg.isCrossed,\n possibleXCurrencies: responseCashLeg.possibleXCurrencies,\n possibleSndFixingSources: responseCashLeg.possibleSndFixingSources,\n xCurrency: responseCashLeg.xCurrency,\n sndFixingSource: responseCashLeg.sndFixingSource,\n };\n return clearUndefined(mappedCashLegProperties);\n}\n\nexport function mapTCCashResponseToCashPropertiesPatch({\n changedFields,\n errors,\n idVersion,\n}: TradeCaptureCashResponseWrapper): CashTradeCapturePatch {\n const { legs } = changedFields;\n const { legs: legsErrors } = errors || { legs: {} };\n const legProperties = legs[CashLegId] || {};\n const legErrors = (legsErrors && legsErrors[CashLegId]) || {};\n\n const isReadyToPrice = changedFields.legs[CashLegId].isReadyToPrice;\n\n const currencyProperties = clearUndefined({\n currencyPair: changedFields?.currencyPair ?? undefined,\n currency1: changedFields?.currency1 ?? undefined,\n currency2: changedFields?.currency2 ?? undefined,\n });\n\n return {\n idVersion,\n values: {\n ...clearUndefined({\n ...getPreviousMap(legErrors),\n amount1: undefined, // Prevent TC model leak cause by getPreviousMap\n amount2: undefined, // Prevent TC model leak cause by getPreviousMap\n amount: previousValue(legErrors.amount1 || legErrors.amount2),\n }),\n ...currencyProperties,\n ...mapCashTCLegPropertiesToCashStoreLegProperties(legProperties),\n },\n errors: {\n ...clearUndefined({\n productName: fromTcError(legErrors.productName),\n currencyPair: fromTcError(legErrors.currencyPair),\n currency1: fromTcError(legErrors.currency1),\n currency2: fromTcError(legErrors.currency2),\n amount: fromTcError(legErrors.amount1 || legErrors.amount2),\n amountCurrency: fromTcError(legErrors.negotiatedCurrency),\n maturityDate: fromTcError(legErrors.maturityDate),\n maturityDateTenor: fromTcError(legErrors.maturityDateTenor),\n }),\n },\n isReadyToPrice: isReadyToPrice ?? null,\n isPriceObsolete: changedFields.legs[CashLegId].isPriceObsolete ?? false,\n productName: changedFields.legs[CashLegId].productName!,\n } as CashTradeCapturePatch;\n}\n","import type { ISgmeHttp } from 'utils/sgmeHttp';\nimport type { Observable } from 'rxjs';\nimport type {\n CashTradeCapturePatch,\n TradeCaptureCashRequestWrapper,\n TradeCaptureCashResponseWrapper,\n} from './tradeCaptureModel';\nimport { mapTCCashResponseToCashPropertiesPatch } from './tradeCaptureMapping';\nimport { map, mergeAll } from 'rxjs/operators';\n\nexport interface TradeCaptureApiRequest {\n sessionId: string;\n tileId: string;\n request: TradeCaptureCashRequestWrapper;\n}\n\nexport interface ITradeCaptureCashApi {\n timeout: (nbOfRequest: number) => number;\n createNewVersion(\n requests: readonly TradeCaptureApiRequest[],\n ): Observable;\n}\n\nexport interface TradeCaptureBatchedResponses {\n [cashId: string]: TradeCaptureCashResponseWrapper;\n}\n\nexport interface TradeCaptureBatchedPatch {\n cashId: string;\n patch: CashTradeCapturePatch | null;\n}\n\nexport function tradeCaptureApi(http: ISgmeHttp): ITradeCaptureCashApi {\n return {\n createNewVersion(queries) {\n return http.post(`api/tradeCaptureBatch/FxSpot`, queries).pipe(\n map(httpCall => {\n const data = httpCall.payload;\n const patches = queries\n .filter(a => data[a.tileId] !== undefined)\n .map(query => {\n const response = data[query.tileId];\n\n const res: TradeCaptureBatchedPatch = {\n cashId: query.tileId,\n patch: response !== null ? mapTCCashResponseToCashPropertiesPatch(response) : null,\n };\n return res;\n });\n return patches;\n }),\n mergeAll(),\n );\n },\n timeout: (numberOfRequests: number) => {\n /* Increase timeout when sending a large number of queries to TC */\n const defaultTimeout = 10000;\n if (numberOfRequests === 1) {\n return defaultTimeout;\n }\n if (numberOfRequests <= 5) {\n return defaultTimeout * 2;\n }\n if (numberOfRequests <= 30) {\n return defaultTimeout * 3;\n }\n return defaultTimeout * 6;\n },\n };\n}\n","import type { ISgmeHttp } from 'utils/sgmeHttp';\nimport type { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport type {\n TradeCaptureSwapRequestWrapper,\n TradeCaptureSwapResponseWrapper,\n SwapTradeCapturePatch,\n} from './tradeCaptureModel';\nimport { extract } from 'utils/object';\n\nexport interface TradeCaptureApiRequest {\n sessionId: string;\n tileId: string;\n request: TradeCaptureSwapRequestWrapper;\n}\n\nexport interface TradeCaptureBatchedResponses {\n [swapId: string]: TradeCaptureSwapResponseWrapper;\n}\n\nexport interface TradeCaptureBatchedPatch {\n swapId: string;\n patch: SwapTradeCapturePatch | null;\n}\n\nexport interface ITradeCaptureSwapApi {\n timeout: number;\n createNewVersions(\n queries: readonly TradeCaptureApiRequest[],\n ): Observable;\n}\n\nexport function tradeCaptureApi(http: ISgmeHttp): ITradeCaptureSwapApi {\n return {\n createNewVersions(queries: TradeCaptureApiRequest[]) {\n return http\n .post(`api/tradeCaptureBatch/FxSwap`, queries)\n .pipe(map(extract('payload')));\n },\n timeout: 10_000,\n };\n}\n","import type { ISgmeHttp } from 'utils/sgmeHttp';\nimport type { Observable } from 'rxjs';\nimport type {\n TradeCaptureBulkResponseWrapper,\n TradeCaptureBulkRequestWrapper,\n} from './tradeCaptureModel';\nimport { map } from 'rxjs/operators';\nimport { extract } from 'utils/object';\n\nexport interface ITradeCaptureBulkApi {\n timeout: number;\n createNewVersion(\n sessionId: string,\n request: TradeCaptureBulkRequestWrapper,\n ): Observable;\n}\n\nexport function tradeCaptureApi(http: ISgmeHttp): ITradeCaptureBulkApi {\n return {\n createNewVersion(sessionId: string, request: TradeCaptureBulkRequestWrapper) {\n return http\n .post(`api/tradeCapture/Bulk/${sessionId}`, request)\n .pipe(map(extract('payload')));\n },\n timeout: 10_000,\n };\n}\n","import type {\n TradeCaptureAccumulatorRequestWrapper,\n TradeCaptureAccumulatorResponseWrapper,\n} from './tradeCaptureModel';\nimport type { Observable } from 'rxjs';\nimport type { ISgmeHttp } from 'utils/sgmeHttp';\nimport { map } from 'rxjs/operators';\nimport { extract } from 'utils/object';\nimport type { AccumulatorTradeCapturePatch } from 'epics/metaSelectors/accumulator/tradeCaptureFromBackend';\nimport type { AccumulatorProductName } from 'state/fxAccumulators/fxAccumulatorsModel';\n\nexport interface TradeCaptureApiRequest {\n productType: AccumulatorProductName;\n sessionId: string;\n tileId: string;\n request: TradeCaptureAccumulatorRequestWrapper;\n}\n\nexport interface TradeCaptureBatchedResponses {\n [accuId: string]: TradeCaptureAccumulatorResponseWrapper;\n}\n\nexport interface TradeCaptureBatchedPatch {\n accuId: string;\n patch: AccumulatorTradeCapturePatch | null;\n}\n\nexport interface ITradeCaptureAccumulatorApi {\n timeout: number;\n createNewBatchVersion(\n queries: readonly TradeCaptureApiRequest[],\n ): Observable;\n}\n\nexport function tradeCaptureApi(http: ISgmeHttp): ITradeCaptureAccumulatorApi {\n return {\n createNewBatchVersion(queries) {\n return http\n .post('api/tradeCaptureBatch/Accumulator', queries)\n .pipe(map(extract('payload')));\n },\n timeout: 10_000,\n };\n}\n","import type { ISgmeHttp } from 'utils/sgmeHttp';\nimport type { Observable } from 'rxjs';\nimport { ignoreElements } from 'rxjs/operators';\n\nexport interface IRfsQuoteCancelRequestApi {\n cancelQuoteRequest(rfsId: string): Observable;\n}\n\nexport function quoteCancelRequestApi(http: ISgmeHttp): IRfsQuoteCancelRequestApi {\n return {\n cancelQuoteRequest(rfsId) {\n return http\n .post('api/fxOption/rfs/cancel', { rfsId }, { 'X-Correlation-ID': rfsId })\n .pipe(ignoreElements());\n },\n };\n}\n","import type { ISgmeHttp } from 'utils/sgmeHttp';\nimport type { IOptionQuoteRequestApi } from 'epics/option';\nimport { ignoreElements } from 'rxjs/operators';\nexport function optionQuoteRequestApi(http: ISgmeHttp): IOptionQuoteRequestApi {\n return {\n createQuoteRequest(request) {\n return http\n .post('api/fxOption/rfs/request', request, { 'X-Correlation-ID': request.rfsId })\n .pipe(ignoreElements());\n },\n };\n}\n","import type { ISgmeHttp } from 'utils/sgmeHttp';\nimport type { IOptionQuoteUpdateApi } from 'epics/option';\nimport { ignoreElements } from 'rxjs/operators';\n\nexport function optionQuoteUpdateApi(http: ISgmeHttp): IOptionQuoteUpdateApi {\n return {\n updateQuoteRequest(request) {\n return http\n .post('api/fxOption/rfs/update', request, { 'X-Correlation-ID': request.rfsId })\n .pipe(ignoreElements());\n },\n };\n}\n","/* \n Typings became more complex than expected :D \n feel free to nuke that if you want\n*/\n\ntype FieldInNames =\n | 'emailNotificationList'\n | 'emails'\n | 'splitNotificationsEmailsCash'\n | 'splitNotificationsEmailsOrders'\n | 'splitNotificationsEmailsOptions';\ntype FieldOutNames =\n | 'email64NotificationList'\n | 'emails'\n | 'splitNotificationsEmailsCash'\n | 'splitNotificationsEmailsOrders'\n | 'splitNotificationsEmailsOptions';\ntype FieldValue = string | readonly string[];\n\ntype IWithEmail = {\n [name in FieldName]: FieldValue;\n};\n\ntype IWithBase64Email = {\n [name in FieldName]: FieldValue;\n};\n\ntype WithOptionalEmail = Omit &\n IWithBase64Email & { [k in IN]?: FieldValue };\n\ntype WithoutEmail = Omit &\n IWithBase64Email;\n\nexport function transformEmailsToBase64<\n T extends IWithEmail,\n IN extends FieldInNames,\n OUT extends FieldOutNames,\n>(payload: T, fieldIn: IN, fieldOut: OUT): WithoutEmail {\n const field: FieldValue = payload[fieldIn];\n\n const result: WithOptionalEmail = {\n ...payload,\n ...({\n [fieldOut]: typeof field === 'string' ? btoa(field) : field.map(btoa),\n } as IWithBase64Email),\n };\n if ((fieldIn as FieldInNames) !== fieldOut) {\n delete result[fieldIn];\n }\n\n return result;\n}\n","import type { Observable } from 'rxjs';\nimport type { Way } from 'state/share/productModel/litterals';\nimport type { HttpCall, ISgmeHttp } from 'utils/sgmeHttp';\nimport { transformEmailsToBase64 } from 'utils/base64';\n\nexport interface IOptionQuoteExecutePayload {\n replyToStream: string;\n rfsId: string;\n quoteId: string;\n way: Way;\n emailNotificationList: string;\n userLocalDateTime: string;\n lastQuoteFromBackTimestamp: number;\n lastQuoteReceivedByFrontTimestamp: number;\n executionClickByFrontTimestamp: number;\n}\n\nexport interface IOptionQuoteExecuteRequestApi {\n msApiTimeout: number;\n executeQuoteRequest(payload: IOptionQuoteExecutePayload): Observable>;\n}\n\nexport function optionQuoteExecuteRequestApi(http: ISgmeHttp): IOptionQuoteExecuteRequestApi {\n return {\n executeQuoteRequest(payload: IOptionQuoteExecutePayload) {\n return http.post(\n 'api/fxOption/rfs/execute',\n transformEmailsToBase64(payload, 'emailNotificationList', 'email64NotificationList'),\n { 'X-Correlation-ID': payload.rfsId },\n );\n },\n msApiTimeout: 60_000,\n };\n}\n","import type { Observable } from 'rxjs';\nimport type { Way } from 'state/share/productModel/litterals';\nimport type { HttpCall, ISgmeHttp } from 'utils/sgmeHttp';\nimport { transformEmailsToBase64 } from 'utils/base64';\n\nexport interface CashRfsExecutePayload {\n replyToStream: string;\n rfsId: string;\n quoteId: string;\n way: Way;\n spotWithoutMargin: number;\n spotWithMargin: number;\n forwardPoints: number;\n emailNotificationList: string;\n userLocalDateTime: string;\n lastQuoteFromBackTimestamp: number;\n lastQuoteReceivedByFrontTimestamp: number;\n executionClickByFrontTimestamp: number;\n}\n\nexport interface ICashRfsQuoteExecuteRequestApi {\n msApiTimeout: number;\n executeQuoteRequest(payload: CashRfsExecutePayload): Observable>;\n}\n\nexport function cashRfsQuoteExecuteRequestApi(http: ISgmeHttp): ICashRfsQuoteExecuteRequestApi {\n return {\n executeQuoteRequest({\n replyToStream,\n rfsId,\n quoteId,\n way,\n spotWithoutMargin,\n spotWithMargin,\n forwardPoints,\n emailNotificationList,\n userLocalDateTime,\n lastQuoteFromBackTimestamp,\n lastQuoteReceivedByFrontTimestamp,\n executionClickByFrontTimestamp,\n }) {\n const payload = {\n replyToStream,\n rfsId,\n quoteId,\n way,\n priceWithoutMargin: spotWithoutMargin,\n priceWithMargin: spotWithMargin,\n forwardPoints,\n emailNotificationList,\n userLocalDateTime,\n lastQuoteFromBackTimestamp,\n lastQuoteReceivedByFrontTimestamp,\n executionClickByFrontTimestamp,\n };\n return http.post(\n 'api/fxSpotFwd/rfs/execute',\n transformEmailsToBase64(payload, 'emailNotificationList', 'email64NotificationList'),\n { 'X-Correlation-ID': payload.rfsId },\n );\n },\n msApiTimeout: 60_000,\n };\n}\n","import type { Observable } from 'rxjs';\nimport type { HttpCall, ISgmeHttp } from 'utils/sgmeHttp';\nimport type { Way } from 'state/share/productModel/litterals';\nimport { transformEmailsToBase64 } from 'utils/base64';\n\nexport interface EspExecutePayload {\n executionId: string;\n multipassTargetInstance: string;\n dataStreamId: string;\n currency1: string;\n currency2: string;\n negotiatedCurrency: string;\n quoteId: string;\n counterPartyBdrId: number;\n way: Way;\n negotiatedAmount: number;\n valueDate: Date;\n streamDepth: number;\n clientSpotRate: number;\n emailNotificationList: string;\n userLocalDateTime: string;\n lastQuoteFromBackTimestamp: number;\n lastQuoteReceivedByFrontTimestamp: number;\n executionClickByFrontTimestamp: number;\n isNdf?: boolean;\n}\n\nexport interface ICashEspQuoteExecuteRequestApi {\n msApiTimeout: number;\n executeQuoteRequest(payload: EspExecutePayload): Observable>;\n}\n\nexport function cashEspQuoteExecuteRequestApi(http: ISgmeHttp): ICashEspQuoteExecuteRequestApi {\n return {\n executeQuoteRequest(payload: EspExecutePayload) {\n return http.post(\n 'api/fxSpotFwd/esp/execute',\n transformEmailsToBase64(payload, 'emailNotificationList', 'email64NotificationList'),\n { 'X-Correlation-ID': payload.executionId },\n );\n },\n msApiTimeout: 60_000,\n };\n}\n","import type { ISgmeHttp } from 'utils/sgmeHttp';\nimport type { ICashQuoteRequestApi } from 'epics/cash';\nimport { ignoreElements } from 'rxjs/operators';\n\nexport function cashRfsQuoteRequestApi(http: ISgmeHttp): ICashQuoteRequestApi {\n return {\n msToFirstHearbeat: 120_000,\n createQuoteRequest(request) {\n return http\n .post('api/fxSpotFwd/rfs/request', request, { 'X-Correlation-ID': request.rfsId })\n .pipe(ignoreElements());\n },\n };\n}\n","import type { ISgmeHttp } from 'utils/sgmeHttp';\nimport type { Observable } from 'rxjs';\nimport { map, ignoreElements } from 'rxjs/operators';\n\nexport interface ICashStreamCreateRequest {\n dataStreamId: string;\n bdrId: number;\n currencyPair: string;\n}\n\nexport interface ICashStreamDeleteRequest {\n dataStreamId: string;\n streamKey: string;\n}\n\nexport interface ICashStreamsRefreshRequest {\n dataStreamId: string;\n streamKeys: readonly string[];\n}\n\nexport interface EspSubscribeRequest {\n dataStreamId: string;\n streamKey: string;\n tileId: string;\n currencyPair: string;\n companyId: number;\n}\n\nexport interface EspSubscribeResponse {\n streamKey: string;\n tileId: string;\n espTiering: string;\n currencyPair: string;\n companyId: number;\n isSuccess: boolean;\n}\n\nexport type ICashStreamRequestApi = (\n request: EspSubscribeRequest,\n) => Observable;\n\nexport type ICashStreamsRefreshApi = (request: ICashStreamsRefreshRequest) => Observable;\n\nexport function cashStreamRequestApi(http: ISgmeHttp): ICashStreamRequestApi {\n return request =>\n http\n .post('api/fxSpotFwd/esp/request', [request])\n .pipe(map(res => res.payload[0]));\n}\n\nexport function cashStreamsRefreshApi(http: ISgmeHttp): ICashStreamsRefreshApi {\n return (request: ICashStreamsRefreshRequest) =>\n http.post('api/fxSpotFwd/esp/refresh', request).pipe(ignoreElements());\n}\n","import type { ISgmeHttp } from 'utils/sgmeHttp';\nimport type { Observable } from 'rxjs';\nimport type { ICashStreamDeleteRequest } from 'api/multipass/cash/esp/cashStreamRequest';\nimport { ignoreElements } from 'rxjs/operators';\nexport interface IUnsubscribeEspStreamRequestApi {\n unsubscribeEspStreamRequest(request: ICashStreamDeleteRequest): Observable;\n}\n\nexport function espStreamUnsubscribeRequestApi(http: ISgmeHttp): IUnsubscribeEspStreamRequestApi {\n return {\n unsubscribeEspStreamRequest(request) {\n return http.post('api/fxSpotFwd/esp/cancel', request).pipe(ignoreElements());\n },\n };\n}\n","import type { Observable } from 'rxjs';\nimport type { ISgmeHttp } from 'utils/sgmeHttp';\nimport { map } from 'rxjs/operators';\nimport type {\n OrderType,\n IFxOrderValues,\n ClippingMode,\n Speed,\n FixingMarginType,\n FixingPriceType,\n} from 'state/fxOrders/fxOrdersModel';\nimport { v4 } from 'uuid';\nimport { isDefined, isEmpty } from '@sgme/fp';\n\nexport interface IOrderApi {\n timeout: number;\n stillPendingTimeout: number;\n validateOrder(\n orderType: OrderType,\n payload: Partial,\n correlationId: string,\n ): Observable;\n submitOrder(\n orderType: OrderType,\n payload: Partial,\n correlationId: string,\n ): Observable;\n cancelOrder(request: OmsOrderSimpleRequest): Observable;\n modifyOrder(request: OmsOrderModifyRequest): Observable;\n pauseOrder(request: OmsOrderSimpleRequest): Observable;\n resumeOrder(request: OmsOrderSimpleRequest): Observable;\n fillOrder(request: OmsOrderSimpleRequest): Observable;\n}\n\nexport function omsApi(http: ISgmeHttp): IOrderApi {\n const sendRequest = sendRequestHOF(http);\n return {\n validateOrder(\n orderType: OrderType,\n payload: Partial,\n correlationId: string,\n ) {\n return sendRequest, OmsOrderValidationResponse>(\n 'validate',\n orderType,\n payload,\n correlationId,\n );\n },\n submitOrder(\n orderType: OrderType,\n payload: Partial,\n correlationId: string,\n ) {\n return sendRequest, string>(\n 'submit',\n orderType,\n payload,\n correlationId,\n );\n },\n cancelOrder({ orderType, payload }: OmsOrderSimpleRequest) {\n return sendRequest('cancel', orderType, payload, v4());\n },\n modifyOrder({ orderType, payload }: OmsOrderModifyRequest) {\n return sendRequest(\n 'update',\n orderType,\n payload,\n v4(),\n );\n },\n pauseOrder({ orderType, payload }: OmsOrderSimpleRequest) {\n return sendRequest('pause', orderType, payload, v4());\n },\n resumeOrder({ orderType, payload }: OmsOrderSimpleRequest) {\n return sendRequest('resume', orderType, payload, v4());\n },\n fillOrder({ orderType, payload }: OmsOrderSimpleRequest) {\n return sendRequest('fill-now', orderType, payload, v4());\n },\n timeout: 10_000,\n stillPendingTimeout: 5_000,\n };\n}\n\ntype ActionType = 'validate' | 'submit' | 'cancel' | 'update' | 'pause' | 'resume' | 'fill-now';\n\nfunction sendRequestHOF(http: ISgmeHttp) {\n return (\n action: ActionType,\n orderType: OrderType,\n payload: REQ,\n correlationId: string,\n ) => {\n const url = `api/oms/${action}/${orderType}`;\n return http\n .post(url, payload, { 'X-Correlation-ID': correlationId })\n .pipe(map(httpCall => httpCall.payload));\n };\n}\n\nexport interface OrderRequestPayload {\n orderType: OrderType;\n payload: Partial;\n correlationId: string;\n}\n\nexport type OmsOrderSubmissionResponse = OmsOrderValidationResponse | string;\n\nexport interface OmsOrderValidationResponse {\n message: string;\n validationResponseDetailContent: readonly OmsOrderValidationDetail[];\n isReadyToSubmit: boolean;\n expiryDay: string | null;\n maturityDay: string | null;\n defaultPrice: number | null;\n fixingTypes: string[] | null;\n isCcyForcedBidAsk: boolean | null;\n isStandardGroup: boolean | null;\n fixingTimesOfSelectedType: string[] | null;\n sourceNameOfSelectedType: string[] | null;\n marginInBps: number | null;\n margin: number | null;\n limitPrice: number | null;\n customerPrice: number | null;\n canModifyMarginInBps: boolean;\n fixingMarginType: FixingMarginType;\n ndfFixingDate: string | null;\n ndfFixingSource: string | null;\n backendTime: number | null;\n}\n\nexport interface OrderValidationDetail {\n code: string;\n field: Partial;\n description: string;\n}\n\nexport interface OrderValidationResponse {\n isReadyToSubmit: boolean;\n validationDetails: readonly OrderValidationDetail[];\n expiryDay: string | null | undefined;\n expiryTime: string | null | undefined;\n maturityDay: string | null | undefined;\n limitPrice: number | null | undefined;\n customerPrice?: number | null;\n fixingTypes: string[] | null;\n isCcyForcedBidAsk: boolean | null;\n isStandardGroup: boolean | null;\n fixingTimesOfSelectedType: string[] | null;\n sourceNameOfSelectedType: string[] | null;\n marginInBps: number | null;\n canModifyMarginInBps: boolean;\n fixingMarginType: FixingMarginType;\n ndfFixingDate: string | null;\n ndfFixingSource: string | null;\n margin: number | null | undefined;\n}\n\nexport function isOmsOrderValidationResponse(\n response: any | null,\n): response is OmsOrderValidationResponse {\n return (\n isDefined(response) &&\n response.validationResponseDetailContent !== undefined &&\n Array.isArray(response.validationResponseDetailContent) &&\n response.isReadyToSubmit !== undefined\n );\n}\n\nexport function isOmsOrderValidationResponseWithFieldError(\n response: any | null,\n): response is OmsOrderValidationResponse {\n return (\n isOmsOrderValidationResponse(response) && !isEmpty(response.validationResponseDetailContent)\n );\n}\n\nexport interface OmsOrderValidationDetail {\n field: string;\n errorDescription: string;\n errorCode: number;\n}\n\nexport interface OmsOrderSubmissionPayload {\n bdrId: string;\n bdrIni: string | undefined;\n ulysseLogin: string;\n owner: string;\n ccyPair: string;\n way: 'sell' | 'buy';\n limitPrice: string;\n customerPrice: string | undefined;\n expiryDay: string | undefined;\n expiryTime: string | undefined;\n triggerMode: 'Spot' | 'BidOffer' | 'RateOneTouch';\n base64Emails: string;\n amountInCcy1: number | undefined;\n amountInCcy2: number | undefined;\n isGtc: boolean;\n maturityDateString: string | undefined;\n startDateUtc: string | undefined;\n endDateUtc: string | undefined;\n liquidityPool: string | undefined;\n clippingMode: ClippingMode | undefined;\n clipSize: number | undefined;\n dodging: boolean | undefined;\n spreadCapture: boolean | undefined;\n speed: Speed | undefined;\n alphaSeeker: boolean | undefined;\n fixingBenchmark: string | undefined;\n fixingPriceType: FixingPriceType | undefined;\n fixingDateUtc: string | undefined;\n fixingTime: string | undefined;\n fixingPlace: string | undefined;\n marginInBps: number | undefined;\n margin: number | undefined;\n fixingMarginType: FixingMarginType | undefined;\n isNdf: boolean | undefined;\n localTimeWithOffSet : number;\n}\n\ninterface OrderRef {\n orderRef: string;\n}\nexport interface OmsOrderSimpleRequest {\n orderType: OrderType;\n payload: OrderRef;\n}\n\nexport interface OmsOrderModifyRequest {\n orderType: OrderType;\n payload: OrderModifyPayload | FixingOrderModifyPayload;\n}\n\ninterface OrderModifyPayload extends OrderRef {\n orderRef: string;\n ccyPair: string | null;\n limitPrice: string | undefined;\n customerPrice: string | undefined;\n amountInCcy1?: number | undefined;\n amountInCcy2?: number | undefined;\n startDateUtc: string | undefined;\n endDateUtc: string | undefined;\n liquidityPool: string | undefined;\n clippingMode: ClippingMode | undefined;\n clipSize: number | undefined;\n dodging: boolean | undefined;\n spreadCapture: boolean | undefined;\n speed: Speed | undefined;\n alphaSeeker: boolean | undefined;\n margin?: string | number | null | undefined;\n}\n\ninterface FixingOrderModifyPayload extends OrderRef {\n orderRef: string;\n ccyPair: string | null;\n amountInCcy1?: number | undefined;\n amountInCcy2?: number | undefined;\n fixingPriceType: FixingPriceType | undefined;\n fixingTime: string | undefined;\n fixingPlace: string | undefined;\n marginInBps: number | undefined;\n fixingMarginType: FixingMarginType | undefined;\n fixingDateUtc: string | undefined;\n fixingBenchmark: string | undefined;\n}\n","import type { HttpCall, ISgmeHttp } from 'utils/sgmeHttp';\nimport type { Observable } from 'rxjs';\n\nexport function recordPriceRequestApi(http: ISgmeHttp): IRecordPriceRequestApi {\n return {\n createRecordPriceRequest(request) {\n return http.post('api/mifid/recordPrice', request);\n },\n };\n}\n\nexport interface IRecordPriceRequestApi {\n createRecordPriceRequest(request: IRecordPriceRequestParams): Observable>;\n}\n\nexport interface IRecordPriceRequestParams {\n prices: readonly ILegRecordPrice[];\n rfsId: string;\n quoteId: string;\n}\n\nexport interface ILegRecordPrice {\n bid: number;\n ask: number;\n}\n","import type { ISgmeHttp, HttpCall } from 'utils/sgmeHttp';\nimport type { Observable } from 'rxjs';\n\nexport function sessionServiceApi(http: ISgmeHttp): ISessionServiceRequest {\n return {\n register(connectionId: string) {\n return http.post('api/register/user', { dataStreamId: connectionId });\n },\n };\n}\n\nexport interface ISessionServiceRequest {\n register(connectionId: string): Observable>;\n}\n","import type { ISgmeHttp } from 'utils/sgmeHttp';\nimport type { ISwapQuoteRequestApi } from 'epics/swap';\nimport { ignoreElements } from 'rxjs/operators';\n\nexport function swapRfsQuoteRequestApi(http: ISgmeHttp): ISwapQuoteRequestApi {\n return {\n msToFirstHearbeat: 120_000,\n createQuoteRequest(request) {\n return http\n .post('api/fxSwap/rfs/request', request, { 'X-Correlation-ID': request.rfsId })\n .pipe(ignoreElements());\n },\n };\n}\n","import type { Observable } from 'rxjs';\nimport type { Way } from 'state/share/productModel/litterals';\nimport type { HttpCall, ISgmeHttp } from 'utils/sgmeHttp';\nimport { transformEmailsToBase64 } from 'utils/base64';\n\nexport interface SwapRfsExecutePayload {\n replyToStream: string;\n rfsId: string;\n quoteId: string;\n way: Way;\n spot: number;\n nearPrice: number;\n farPrice: number;\n nearPoints: number;\n farPointsWithoutMargin: number;\n farPointsWithMargin: number;\n nearSalesAllInRate: number;\n farSalesAllInRate: number;\n emailNotificationList: string;\n userLocalDateTime: string;\n lastQuoteFromBackTimestamp: number;\n lastQuoteReceivedByFrontTimestamp: number;\n executionClickByFrontTimestamp: number;\n}\n\nexport interface ISwapRfsQuoteExecuteRequestApi {\n msApiTimeout: number;\n executeQuoteRequest(payload: SwapRfsExecutePayload): Observable>;\n}\n\nexport function swapRfsQuoteExecuteRequestApi(http: ISgmeHttp): ISwapRfsQuoteExecuteRequestApi {\n return {\n executeQuoteRequest({\n replyToStream,\n rfsId,\n quoteId,\n way,\n spot,\n nearPrice,\n farPrice,\n nearPoints,\n farPointsWithoutMargin,\n farPointsWithMargin,\n nearSalesAllInRate,\n farSalesAllInRate,\n emailNotificationList,\n userLocalDateTime,\n lastQuoteFromBackTimestamp,\n lastQuoteReceivedByFrontTimestamp,\n executionClickByFrontTimestamp,\n }) {\n const payload = {\n replyToStream,\n rfsId,\n quoteId,\n way,\n spot,\n nearPrice,\n farPrice,\n nearPoints,\n farPointsWithoutMargin,\n farPointsWithMargin,\n nearSalesAllInRate,\n farSalesAllInRate,\n emailNotificationList,\n userLocalDateTime,\n lastQuoteFromBackTimestamp,\n lastQuoteReceivedByFrontTimestamp,\n executionClickByFrontTimestamp,\n };\n\n return http.post(\n 'api/fxSwap/rfs/execute',\n transformEmailsToBase64(payload, 'emailNotificationList', 'email64NotificationList'),\n { 'X-Correlation-ID': payload.rfsId },\n );\n },\n msApiTimeout: 60_000,\n };\n}\n","import type { ISgmeHttp } from 'utils/sgmeHttp';\nimport type { Observable } from 'rxjs';\nimport { ignoreElements } from 'rxjs/operators';\n\nexport interface ISwapRfsCancelApi {\n cancelQuoteRequest(rfsId: string): Observable;\n}\n\nexport function swapRfsCancelApi(http: ISgmeHttp): ISwapRfsCancelApi {\n return {\n cancelQuoteRequest(rfsId) {\n return http\n .post('api/fxSwap/rfs/cancel', { rfsId }, { 'X-Correlation-ID': rfsId })\n .pipe(ignoreElements());\n },\n };\n}\n","import type { ISgmeHttp } from 'utils/sgmeHttp';\nimport type { Observable } from 'rxjs';\nimport { ignoreElements } from 'rxjs/operators';\n\nexport interface ICashRfsCancelApi {\n cancelQuoteRequest(rfsId: string): Observable;\n}\n\nexport function cashRfsCancelApi(http: ISgmeHttp): ICashRfsCancelApi {\n return {\n cancelQuoteRequest(rfsId) {\n return http\n .post('api/fxSpotFwd/rfs/cancel', { rfsId }, { 'X-Correlation-ID': rfsId })\n .pipe(ignoreElements());\n },\n };\n}\n","export const composeLeftFunction =\n (...args: ReadonlyArray<(arg: E) => E>) =>\n (input: E) =>\n args.reduce((intermediaryResult, func) => func(intermediaryResult), input);\n","import { extract } from 'utils/object';\n\nexport interface SavedBlotter {\n panelHeight: number;\n activeTab: BlotterTab;\n cashTab: SavedBlotterTab;\n optionTab: SavedBlotterTab;\n orderTab: SavedBlotterTab;\n}\n\nexport type BlotterTab = 'cash' | 'option' | 'order';\n\ninterface SavedBlotterTab {\n autoColumState: { width: number };\n columnsState: readonly FxColumnState[];\n sortModel: BlotterSortModel;\n}\n\ninterface FxColumnState {\n colId: ColumnId;\n width?: number;\n hide?: boolean;\n}\n\nconst columnIdArray = [\n 'id',\n 'xone',\n 'account',\n 'action',\n 'amountDone',\n 'currencyPair',\n 'date',\n 'expiry',\n 'farDate',\n 'farRate',\n 'gtc',\n 'inputDate',\n 'nearDate',\n 'nearRate',\n 'notional',\n 'notionalCurrency',\n 'dealtAmount',\n 'dealtCurrency',\n 'farDealtAmount',\n 'contraAmount',\n 'contraCurrency',\n 'farContraAmount',\n 'limitPrice',\n 'customerPrice',\n 'points',\n 'portfolio',\n 'premium',\n 'strategyReference',\n 'electronicReference',\n 'electronicAccount',\n 'product',\n 'salesFullName',\n 'spot',\n 'spotDate',\n 'status',\n 'strike',\n 'time',\n 'updateTime',\n 'venue',\n 'way',\n 'executionPrice',\n 'premiumCurrency',\n 'blotterType',\n 'optionType',\n] as const;\n\nexport type ColumnId = typeof columnIdArray[number];\n\ntype BlotterSortModel = readonly BlotterColSort[];\n\ninterface BlotterColSort {\n colId: string;\n sort: string;\n}\n\nconst defaultBlotterSortModel = [{ colId: 'updateTime', sort: 'desc' }];\n\nconst defaultAutoColumnState = {\n width: 100,\n};\n\nexport const columnsDefinition: Record = {\n id: { colId: 'id' },\n xone: { colId: 'xone' },\n account: { colId: 'account', width: 200 },\n action: { colId: 'action' },\n amountDone: { colId: 'amountDone' },\n currencyPair: { colId: 'currencyPair', width: 90 },\n date: { colId: 'date' },\n expiry: { colId: 'expiry', width: 100 },\n farDate: { colId: 'farDate', width: 100 },\n farRate: { colId: 'farRate', width: 100 },\n gtc: { colId: 'gtc' },\n inputDate: { colId: 'inputDate' },\n nearDate: { colId: 'nearDate', width: 100 },\n nearRate: { colId: 'nearRate', width: 100 },\n notional: { colId: 'notional', width: 150 },\n notionalCurrency: {\n colId: 'notionalCurrency',\n width: 120,\n },\n dealtAmount: { colId: 'dealtAmount', width: 150 },\n farDealtAmount: { colId: 'farDealtAmount', width: 150 },\n dealtCurrency: {\n colId: 'dealtCurrency',\n width: 120,\n },\n contraAmount: { colId: 'contraAmount', width: 150 },\n farContraAmount: { colId: 'farContraAmount', width: 150 },\n contraCurrency: {\n colId: 'contraCurrency',\n width: 120,\n },\n limitPrice: { colId: 'limitPrice' },\n customerPrice: { colId: 'customerPrice' },\n points: { colId: 'points', width: 80 },\n portfolio: { colId: 'portfolio' },\n premium: { colId: 'premium' },\n product: { colId: 'product', width: 80 },\n salesFullName: {\n colId: 'salesFullName',\n width: 140,\n },\n spot: { colId: 'spot', width: 80 },\n spotDate: { colId: 'spotDate', width: 100 },\n status: { colId: 'status', width: 120 },\n strike: { colId: 'strike', width: 120 },\n time: { colId: 'time', width: 100 },\n updateTime: { colId: 'updateTime', hide: true },\n venue: { colId: 'venue', width: 120 },\n way: { colId: 'way', width: 100 },\n executionPrice: { colId: 'executionPrice', width: 100 },\n premiumCurrency: { colId: 'premiumCurrency', width: 120 },\n optionType: { colId: 'optionType', width: 120 },\n electronicReference: { colId: 'electronicReference' },\n electronicAccount: { colId: 'electronicAccount' },\n strategyReference: { colId: 'strategyReference' },\n blotterType: { colId: 'blotterType' },\n};\n\nconst filterColumn = (columns: readonly ColumnId[]): readonly FxColumnState[] =>\n Object.entries(columnsDefinition)\n .filter(entry => columns.includes(entry[0] as ColumnId))\n .map(extract(1));\n\nexport const defaultCashTab: SavedBlotterTab = {\n autoColumState: defaultAutoColumnState,\n columnsState: filterColumn([\n 'xone',\n 'status',\n 'date',\n 'time',\n 'currencyPair',\n 'product',\n 'dealtAmount',\n 'farDealtAmount',\n 'dealtCurrency',\n 'contraAmount',\n 'farContraAmount',\n 'contraCurrency',\n 'way',\n 'spot',\n 'spotDate',\n 'nearRate',\n 'nearDate',\n 'farRate',\n 'farDate',\n 'points',\n 'venue',\n 'account',\n 'portfolio',\n 'salesFullName',\n 'updateTime',\n 'electronicAccount',\n ]),\n sortModel: defaultBlotterSortModel,\n};\n\nexport const defaultOptionTab: SavedBlotterTab = {\n autoColumState: defaultAutoColumnState,\n columnsState: filterColumn([\n 'status',\n 'product',\n 'optionType',\n 'currencyPair',\n 'way',\n 'dealtAmount',\n 'dealtCurrency',\n 'contraAmount',\n 'contraCurrency',\n 'strike',\n 'spot',\n 'expiry',\n 'premium',\n 'date',\n 'time',\n 'venue',\n 'account',\n 'portfolio',\n 'salesFullName',\n 'updateTime',\n 'premiumCurrency',\n 'electronicAccount',\n ]),\n sortModel: defaultBlotterSortModel,\n};\n\nexport const defaultOrderTab: SavedBlotterTab = {\n autoColumState: defaultAutoColumnState,\n columnsState: filterColumn([\n 'status',\n 'action',\n 'inputDate',\n 'gtc',\n 'product',\n 'currencyPair',\n 'way',\n 'notional',\n 'notionalCurrency',\n 'amountDone',\n 'limitPrice',\n 'customerPrice',\n 'account',\n 'updateTime',\n 'executionPrice',\n ]),\n sortModel: defaultBlotterSortModel,\n};\n\nexport const defaultSavedBlotter: SavedBlotter = {\n panelHeight: 300,\n activeTab: 'cash',\n cashTab: defaultCashTab,\n optionTab: defaultOptionTab,\n orderTab: defaultOrderTab,\n};\n","import { assertUnreachable } from '@sgme/fp';\nimport type { Updater } from '../typings';\nimport { composeLeftFunction } from 'utils/composer';\nimport type { SavedWorkspace } from './model/savedWorkspaceModel';\nimport {\n defaultSavedBlotter,\n columnsDefinition,\n type BlotterTab,\n type ColumnId,\n} from './model/blotterModel';\n\nconst currentVersion = 1;\n\nexport const updater1: Updater = {\n version: currentVersion,\n canUpdate(data: any) {\n return !('version' in data);\n },\n update: (previousWorkspace: any) => {\n const operations = composeLeftFunction(\n tryToUpdateFormat,\n discardIfOldFormat,\n defaultTabType,\n addBlotterColumn('portfolio', 'cash'),\n addBlotterColumn('portfolio', 'option'),\n addBlotterColumn('limitPrice', 'order'),\n addBlotterColumn('customerPrice', 'order'),\n removeBlotterColumn('orderRate', 'order'),\n removeBlotterColumn('proximityRate', 'order'),\n addBlotterColumn('executionPrice', 'order', 'amountDone'),\n addBlotterColumn('premiumCurrency', 'option', 'premium'),\n addBlotterColumn('xone', 'cash', 'id'),\n );\n\n const savedWorkspace: SavedWorkspace = operations(previousWorkspace);\n savedWorkspace.version = 1;\n\n return savedWorkspace;\n },\n};\n\nfunction tryToUpdateFormat(previousWorkspace: any): any | null {\n if (previousWorkspace === null) {\n return null;\n }\n if (Array.isArray(previousWorkspace)) {\n return {\n canTrade: true,\n tabs: previousWorkspace,\n blotter: defaultSavedBlotter,\n };\n }\n if (previousWorkspace.blotter === undefined) {\n const blotter = {\n ...defaultSavedBlotter,\n panelHeight: (previousWorkspace as any).blotterPanelHeight || defaultSavedBlotter.panelHeight,\n };\n\n return {\n canTrade: previousWorkspace.canTrade,\n tabs: previousWorkspace.tabs,\n blotter,\n };\n }\n\n return previousWorkspace;\n}\n\nfunction discardIfOldFormat(previousWorkspace: any | null): any | null {\n if (previousWorkspace === null) {\n return null;\n }\n if (!('tabs' in previousWorkspace)) {\n return null;\n }\n if (\n !previousWorkspace.tabs ||\n (previousWorkspace.tabs as readonly any[]).some(({ tiles }) =>\n (tiles as readonly any[]).some(tile => tile.size === undefined),\n )\n ) {\n return null;\n }\n return previousWorkspace;\n}\n\nfunction defaultTabType(savedWorkspace: any | null): any | null {\n if (savedWorkspace === null) {\n return null;\n }\n return {\n ...savedWorkspace,\n tabs: (savedWorkspace.tabs as readonly any[]).map(tab =>\n tab.tabType ? tab : { ...tab, tabType: 'tiles' },\n ),\n };\n}\n\nconst removeBlotterColumn =\n (columnId: string, blotterTab: BlotterTab): ((savedWorkspace: any | null) => any | null) =>\n savedWorkspace => {\n if (savedWorkspace === null) {\n return null;\n }\n\n const tabToModify = getSavedTab(blotterTab);\n\n const blotterStateToModify =\n savedWorkspace.blotter[tabToModify] || defaultSavedBlotter[tabToModify];\n\n const newWorkspace = {\n ...savedWorkspace,\n blotter: {\n ...savedWorkspace.blotter,\n [tabToModify]: {\n ...blotterStateToModify,\n columnsState: blotterStateToModify.columnsState.filter(\n (column: { colId: string }) => column.colId !== columnId,\n ),\n },\n },\n };\n\n return newWorkspace;\n };\n\nconst addBlotterColumn =\n (\n columnId: ColumnId,\n blotterTab: BlotterTab,\n after?: ColumnId,\n ): ((savedWorkspace: any | null) => any | null) =>\n savedWorkspace => {\n if (savedWorkspace === null) {\n return null;\n }\n\n const addColumn = ({ columnsState: legacyColumnState, ...other }: any): any => {\n if (legacyColumnState.some((col: { colId: string }) => col.colId === columnId)) {\n return { ...other, columnsState: legacyColumnState };\n }\n\n if (after === undefined) {\n return {\n ...other,\n columnsState: [...legacyColumnState, columnsDefinition[columnId]],\n };\n }\n\n const index = legacyColumnState.findIndex(\n (value: { colId: string }) => value.colId === after,\n );\n if (index === -1) {\n return {\n ...other,\n columnsState: [...legacyColumnState, columnsDefinition[columnId]],\n };\n } else {\n legacyColumnState.splice(index + 1, 0, columnsDefinition[columnId]);\n return { ...other, columnsState: legacyColumnState };\n }\n };\n\n const tabToModify = getSavedTab(blotterTab);\n\n return {\n ...savedWorkspace,\n blotter: {\n ...savedWorkspace.blotter,\n [tabToModify]: addColumn(\n savedWorkspace.blotter[tabToModify] || defaultSavedBlotter[tabToModify],\n ),\n },\n };\n };\n\nfunction getSavedTab(blotterTab: BlotterTab): 'cashTab' | 'optionTab' | 'orderTab' {\n switch (blotterTab) {\n case 'cash':\n return 'cashTab';\n case 'option':\n return 'optionTab';\n case 'order':\n return 'orderTab';\n default:\n assertUnreachable(blotterTab, 'One tab definition is missing');\n }\n}\n","export interface SavedBlotter {\n panelHeight: number;\n activeTab: BlotterTab;\n cashTab: SavedBlotterTab;\n optionTab: SavedBlotterTab;\n orderTab: SavedBlotterTab;\n}\n\nexport type BlotterTab = 'cash' | 'option' | 'order' | 'accumulator';\n\ninterface SavedBlotterTab {\n autoColumState: { width: number };\n columnsState: readonly FxColumnState[];\n sortModel: BlotterSortModel;\n}\n\ninterface FxColumnState {\n colId: ColumnId;\n width?: number;\n hide?: boolean;\n}\n\nconst columnIdArray = [\n 'id',\n 'xone',\n 'account',\n 'action',\n 'amountDone',\n 'currencyPair',\n 'date',\n 'expiry',\n 'farDate',\n 'farRate',\n 'gtc',\n 'inputDate',\n 'nearDate',\n 'nearRate',\n 'notional',\n 'notionalCurrency',\n 'dealtAmount',\n 'dealtCurrency',\n 'farDealtAmount',\n 'contraAmount',\n 'contraCurrency',\n 'farContraAmount',\n 'limitPrice',\n 'customerPrice',\n 'points',\n 'portfolio',\n 'premium',\n 'strategyReference',\n 'electronicReference',\n 'electronicAccount',\n 'product',\n 'salesFullName',\n 'spot',\n 'spotDate',\n 'status',\n 'strike',\n 'time',\n 'updateTime',\n 'venue',\n 'way',\n 'executionPrice',\n 'premiumCurrency',\n 'blotterType',\n 'optionType',\n] as const;\n\nexport type ColumnId = typeof columnIdArray[number];\n\ntype BlotterSortModel = readonly BlotterColSort[];\n\ninterface BlotterColSort {\n colId: string;\n sort: string;\n}\n\nconst defaultBlotterSortModel = [{ colId: 'updateTime', sort: 'desc' }];\n\nconst defaultAutoColumnState = {\n width: 100,\n};\n\nexport const columnsDefinition: Record = {\n id: { colId: 'id' },\n xone: { colId: 'xone' },\n account: { colId: 'account', width: 200 },\n action: { colId: 'action' },\n amountDone: { colId: 'amountDone' },\n currencyPair: { colId: 'currencyPair', width: 90 },\n date: { colId: 'date' },\n expiry: { colId: 'expiry', width: 100 },\n farDate: { colId: 'farDate', width: 100 },\n farRate: { colId: 'farRate', width: 100 },\n gtc: { colId: 'gtc' },\n inputDate: { colId: 'inputDate' },\n nearDate: { colId: 'nearDate', width: 100 },\n nearRate: { colId: 'nearRate', width: 100 },\n notional: { colId: 'notional', width: 150 },\n notionalCurrency: {\n colId: 'notionalCurrency',\n width: 120,\n },\n dealtAmount: { colId: 'dealtAmount', width: 150 },\n farDealtAmount: { colId: 'farDealtAmount', width: 150 },\n dealtCurrency: {\n colId: 'dealtCurrency',\n width: 120,\n },\n contraAmount: { colId: 'contraAmount', width: 150 },\n farContraAmount: { colId: 'farContraAmount', width: 150 },\n contraCurrency: {\n colId: 'contraCurrency',\n width: 120,\n },\n limitPrice: { colId: 'limitPrice' },\n customerPrice: { colId: 'customerPrice' },\n points: { colId: 'points', width: 80 },\n portfolio: { colId: 'portfolio' },\n premium: { colId: 'premium' },\n product: { colId: 'product', width: 80 },\n salesFullName: {\n colId: 'salesFullName',\n width: 140,\n },\n spot: { colId: 'spot', width: 80 },\n spotDate: { colId: 'spotDate', width: 100 },\n status: { colId: 'status', width: 120 },\n strike: { colId: 'strike', width: 120 },\n time: { colId: 'time', width: 100 },\n updateTime: { colId: 'updateTime', hide: true },\n venue: { colId: 'venue', width: 120 },\n way: { colId: 'way', width: 100 },\n executionPrice: { colId: 'executionPrice', width: 100 },\n premiumCurrency: { colId: 'premiumCurrency', width: 120 },\n optionType: { colId: 'optionType', width: 120 },\n electronicReference: { colId: 'electronicReference' },\n electronicAccount: { colId: 'electronicAccount' },\n strategyReference: { colId: 'strategyReference' },\n blotterType: { colId: 'blotterType' },\n};\n\nconst filterColumn = (columns: readonly ColumnId[]): readonly FxColumnState[] =>\n Object.entries(columnsDefinition)\n .filter(([key]) => columns.includes(key as ColumnId))\n .map(([, value]) => value);\n\nexport const defaultCashTab: SavedBlotterTab = {\n autoColumState: defaultAutoColumnState,\n columnsState: filterColumn([\n 'xone',\n 'status',\n 'date',\n 'time',\n 'currencyPair',\n 'product',\n 'dealtAmount',\n 'farDealtAmount',\n 'dealtCurrency',\n 'contraAmount',\n 'farContraAmount',\n 'contraCurrency',\n 'way',\n 'spot',\n 'spotDate',\n 'nearRate',\n 'nearDate',\n 'farRate',\n 'farDate',\n 'points',\n 'venue',\n 'account',\n 'portfolio',\n 'salesFullName',\n 'updateTime',\n 'electronicAccount',\n ]),\n sortModel: defaultBlotterSortModel,\n};\n\nexport const defaultOptionTab: SavedBlotterTab = {\n autoColumState: defaultAutoColumnState,\n columnsState: filterColumn([\n 'status',\n 'product',\n 'optionType',\n 'currencyPair',\n 'way',\n 'dealtAmount',\n 'dealtCurrency',\n 'contraAmount',\n 'contraCurrency',\n 'strike',\n 'spot',\n 'expiry',\n 'premium',\n 'date',\n 'time',\n 'venue',\n 'account',\n 'portfolio',\n 'salesFullName',\n 'updateTime',\n 'premiumCurrency',\n 'electronicAccount',\n ]),\n sortModel: defaultBlotterSortModel,\n};\n\nexport const defaultOrderTab: SavedBlotterTab = {\n autoColumState: defaultAutoColumnState,\n columnsState: filterColumn([\n 'status',\n 'action',\n 'inputDate',\n 'gtc',\n 'product',\n 'currencyPair',\n 'way',\n 'notional',\n 'notionalCurrency',\n 'amountDone',\n 'limitPrice',\n 'customerPrice',\n 'account',\n 'updateTime',\n 'executionPrice',\n ]),\n sortModel: defaultBlotterSortModel,\n};\n\nexport const defaultSavedBlotter: SavedBlotter = {\n panelHeight: 300,\n activeTab: 'cash',\n cashTab: defaultCashTab,\n optionTab: defaultOptionTab,\n orderTab: defaultOrderTab,\n};\n","import { columnsDefinition, type ColumnId } from './model/blotterModel';\nimport { assertUnreachable } from '@sgme/fp';\nimport { composeLeftFunction } from 'utils/composer';\nimport type { Updater } from '../typings';\nimport type { SavedWorkspace as SavedWorkspace1 } from '../updater1/model';\nimport type { SavedWorkspace as SavedWorkspace2 } from './model';\n\nconst currentVersion = 2;\n\nexport const updater2: Updater = {\n version: currentVersion,\n canUpdate(data: any) {\n return data.version === currentVersion - 1;\n },\n update: (previousWorkspace: SavedWorkspace1) => {\n const operations = composeLeftFunction(\n removeBlotterColumn('cash', ['notional', 'nearNotional', 'farNotional', 'notionalCurrency']),\n removeBlotterColumn('option', [\n 'notional',\n 'nearNotional',\n 'farNotional',\n 'notionalCurrency',\n ]),\n addBlotterColumn('cash', [\n 'electronicAccount',\n 'dealtAmount',\n 'farDealtAmount',\n 'dealtCurrency',\n 'contraAmount',\n 'farContraAmount',\n 'contraCurrency',\n ]),\n addBlotterColumn('option', [\n 'electronicAccount',\n 'dealtAmount',\n 'dealtCurrency',\n 'contraAmount',\n 'contraCurrency',\n 'optionType',\n ]),\n );\n\n const savedWorkspace: SavedWorkspace2 = operations(previousWorkspace);\n savedWorkspace.version = 2;\n\n return savedWorkspace;\n },\n};\n\nconst removeBlotterColumn =\n (blotterTab: BlotterTab, columnIds: readonly string[]): ((savedWorkspace: any) => any) =>\n savedWorkspace => {\n const tabToModify = getSavedTab(blotterTab);\n const blotterStateToModify = savedWorkspace.blotter[tabToModify];\n\n const newWorkspace = {\n ...savedWorkspace,\n blotter: {\n ...savedWorkspace.blotter,\n [tabToModify]: {\n ...blotterStateToModify,\n columnsState: blotterStateToModify.columnsState.filter(\n (column: { colId: string }) => !columnIds.includes(column.colId),\n ),\n },\n },\n };\n\n return newWorkspace;\n };\n\nconst addBlotterColumn =\n (blotterTab: BlotterTab, columnIds: readonly ColumnId[]): ((savedWorkspace: any) => any | null) =>\n savedWorkspace => {\n const tabToModify = getSavedTab(blotterTab);\n\n return {\n ...savedWorkspace,\n blotter: {\n ...savedWorkspace.blotter,\n [tabToModify]: {\n ...savedWorkspace.blotter[tabToModify],\n columnsState: columnIds.reduce(\n (previousColumnState, columnId) =>\n previousColumnState.some((col: { colId: string }) => col.colId === columnId)\n ? previousColumnState\n : [...previousColumnState, columnsDefinition[columnId]],\n savedWorkspace.blotter[tabToModify].columnsState,\n ),\n },\n },\n };\n };\n\ntype BlotterTab = 'cash' | 'option' | 'order' | 'accumulator';\n\nfunction getSavedTab(\n blotterTab: BlotterTab,\n): 'cashTab' | 'optionTab' | 'orderTab' | 'accumulatorTab' {\n switch (blotterTab) {\n case 'cash':\n return 'cashTab';\n case 'option':\n return 'optionTab';\n case 'order':\n return 'orderTab';\n case 'accumulator':\n return 'accumulatorTab';\n default:\n assertUnreachable(blotterTab, 'One tab definition is missing');\n }\n}\n","import { extract } from 'utils/object';\n\nexport interface SavedBlotter {\n panelHeight: number;\n activeTab: BlotterTab;\n cashTab: SavedBlotterTab;\n optionTab: SavedBlotterTab;\n orderTab: SavedBlotterTab;\n accumulatorTab: SavedBlotterTab;\n}\n\nexport type BlotterTab = 'cash' | 'option' | 'order' | 'accumulator';\n\nexport interface SavedBlotterTab {\n autoColumState: { width: number };\n columnsState: readonly FxColumnState[];\n sortModel: BlotterSortModel;\n}\n\ninterface FxColumnState {\n colId: string;\n width?: number;\n hide?: boolean;\n}\n\ntype BlotterSortModel = readonly BlotterColSort[];\n\ninterface BlotterColSort {\n colId: string;\n sort: string;\n}\n\nexport const defaultBlotterSortModel = [{ colId: 'updateTime', sort: 'desc' }];\n\nconst defaultAutoColumnState = {\n width: 100,\n};\n\nexport const columnsDefinition: Record = {\n id: { colId: 'id' },\n xone: { colId: 'xone' },\n account: { colId: 'account', width: 200 },\n action: { colId: 'action' },\n amountDone: { colId: 'amountDone' },\n currencyPair: { colId: 'currencyPair', width: 90 },\n date: { colId: 'date' },\n expiry: { colId: 'expiry', width: 100 },\n farDate: { colId: 'farDate', width: 100 },\n farRate: { colId: 'farRate', width: 100 },\n gtc: { colId: 'gtc' },\n inputDate: { colId: 'inputDate' },\n nearDate: { colId: 'nearDate', width: 100 },\n nearRate: { colId: 'nearRate', width: 100 },\n notional: { colId: 'notional', width: 150 },\n notionalCurrency: {\n colId: 'notionalCurrency',\n width: 120,\n },\n dealtAmount: { colId: 'dealtAmount', width: 150 },\n farDealtAmount: { colId: 'farDealtAmount', width: 150 },\n dealtCurrency: {\n colId: 'dealtCurrency',\n width: 120,\n },\n contraAmount: { colId: 'contraAmount', width: 150 },\n farContraAmount: { colId: 'farContraAmount', width: 150 },\n contraCurrency: {\n colId: 'contraCurrency',\n width: 120,\n },\n limitPrice: { colId: 'limitPrice' },\n customerPrice: { colId: 'customerPrice' },\n points: { colId: 'points', width: 80 },\n portfolio: { colId: 'portfolio' },\n premium: { colId: 'premium' },\n product: { colId: 'product', width: 80 },\n salesFullName: {\n colId: 'salesFullName',\n width: 140,\n },\n spot: { colId: 'spot', width: 80 },\n spotDate: { colId: 'spotDate', width: 100 },\n status: { colId: 'status', width: 120 },\n strike: { colId: 'strike', width: 120 },\n time: { colId: 'time', width: 100 },\n updateTime: { colId: 'updateTime', hide: true },\n venue: { colId: 'venue', width: 120 },\n way: { colId: 'way', width: 100 },\n executionPrice: { colId: 'executionPrice', width: 100 },\n premiumCurrency: { colId: 'premiumCurrency', width: 120 },\n optionType: { colId: 'optionType', width: 120 },\n fixingFrequency: { colId: 'fixingFrequency', width: 100 },\n settlementFrequency: { colId: 'settlementFrequency', width: 100 },\n koConventionType: { colId: 'koConventionType', width: 100 },\n koTime: { colId: 'koTime', width: 100 },\n electronicReference: { colId: 'electronicReference' },\n electronicAccount: { colId: 'electronicAccount' },\n strategyReference: { colId: 'strategyReference' },\n blotterType: { colId: 'blotterType' },\n};\n\nconst filterColumn = (columns: readonly string[]): readonly FxColumnState[] =>\n Object.entries(columnsDefinition)\n .filter(entry => columns.includes(entry[0]))\n .map(extract(1));\n\nexport const defaultCashTab: SavedBlotterTab = {\n autoColumState: defaultAutoColumnState,\n columnsState: filterColumn([\n 'xone',\n 'status',\n 'date',\n 'time',\n 'currencyPair',\n 'product',\n 'dealtAmount',\n 'farDealtAmount',\n 'dealtCurrency',\n 'contraAmount',\n 'farContraAmount',\n 'contraCurrency',\n 'way',\n 'spot',\n 'spotDate',\n 'nearRate',\n 'nearDate',\n 'farRate',\n 'farDate',\n 'points',\n 'venue',\n 'account',\n 'portfolio',\n 'salesFullName',\n 'updateTime',\n 'electronicAccount',\n ]),\n sortModel: defaultBlotterSortModel,\n};\n\nexport const defaultOptionTab: SavedBlotterTab = {\n autoColumState: defaultAutoColumnState,\n columnsState: filterColumn([\n 'status',\n 'product',\n 'optionType',\n 'currencyPair',\n 'way',\n 'dealtAmount',\n 'dealtCurrency',\n 'contraAmount',\n 'contraCurrency',\n 'strike',\n 'spot',\n 'expiry',\n 'premium',\n 'date',\n 'time',\n 'venue',\n 'account',\n 'portfolio',\n 'salesFullName',\n 'updateTime',\n 'premiumCurrency',\n 'electronicAccount',\n ]),\n sortModel: defaultBlotterSortModel,\n};\n\nexport const defaultOrderTab: SavedBlotterTab = {\n autoColumState: defaultAutoColumnState,\n columnsState: filterColumn([\n 'status',\n 'action',\n 'inputDate',\n 'gtc',\n 'product',\n 'currencyPair',\n 'way',\n 'notional',\n 'notionalCurrency',\n 'amountDone',\n 'limitPrice',\n 'customerPrice',\n 'account',\n 'updateTime',\n 'executionPrice',\n ]),\n sortModel: defaultBlotterSortModel,\n};\n\nexport const defaultAccumulatorTab: SavedBlotterTab = {\n autoColumState: defaultAutoColumnState,\n columnsState: filterColumn([\n 'status',\n 'product',\n 'currencyPair',\n 'way',\n // 'expiry',\n 'premium',\n 'premiumCurrency',\n 'date',\n 'time',\n 'venue',\n 'account',\n 'salesFullName',\n 'portfolio',\n ]),\n sortModel: defaultBlotterSortModel,\n};\n\nexport const defaultSavedBlotter: SavedBlotter = {\n panelHeight: 300,\n activeTab: 'cash',\n cashTab: defaultCashTab,\n optionTab: defaultOptionTab,\n orderTab: defaultOrderTab,\n accumulatorTab: defaultAccumulatorTab,\n};\n","import type { Updater } from '../typings';\nimport type { SavedWorkspace as SavedWorkspace2 } from '../updater2/model';\nimport type { SavedWorkspace as SavedWorkspace3 } from './model';\nimport { defaultAccumulatorTab } from './model/blotterModel';\n\nconst currentVersion = 3;\n\nexport const updater3: Updater = {\n version: currentVersion,\n canUpdate(data: any) {\n return data.version === currentVersion - 1;\n },\n update: (previousWorkspace: SavedWorkspace2) => {\n const savedWorkspace: SavedWorkspace3 = {\n ...previousWorkspace,\n blotter: {\n ...previousWorkspace.blotter,\n accumulatorTab: defaultAccumulatorTab,\n },\n version: 3,\n };\n\n return savedWorkspace;\n },\n};\n","import type { Updater } from '../typings';\nimport type { SavedWorkspace as SavedWorkspace3 } from '../updater3/model';\nimport type { SavedWorkspace as SavedWorkspace4 } from './model';\nimport { composeLeftFunction } from 'utils/composer';\n\nconst currentVersion = 4;\n\nexport const updater4: Updater = {\n version: currentVersion,\n canUpdate(data: any) {\n return data.version === currentVersion - 1;\n },\n update: (previousWorkspace: SavedWorkspace3): SavedWorkspace4 => {\n const operations = composeLeftFunction(\n renameBlotterTabColumn('orderTab', { action: 'orderAction' }),\n renameBlotterTabColumn('cashTab', { xone: 'defaultAction' }),\n renameBlotterTabColumn('optionTab', { xone: 'defaultAction' }),\n renameBlotterTabColumn('accumulatorTab', { xone: 'defaultAction' }),\n );\n\n const newWorkspace: SavedWorkspace4 = {\n ...operations(previousWorkspace),\n version: currentVersion,\n };\n return newWorkspace;\n },\n};\n\ntype BlotterTab = 'cashTab' | 'optionTab' | 'orderTab' | 'accumulatorTab';\n\nconst renameBlotterTabColumn =\n (blotterTab: BlotterTab, columnIds: Record): ((previousWorkspace: any) => any) =>\n previousWorkspace => {\n const previousblotter = previousWorkspace.blotter[blotterTab];\n const newWorkspace = {\n ...previousWorkspace,\n blotter: {\n ...previousWorkspace.blotter,\n [blotterTab]: {\n ...previousblotter,\n columnsState: previousblotter.columnsState.map((columnState: any) => {\n const colId = columnIds[columnState.colId] ?? columnState.colId;\n return { ...columnState, colId };\n }),\n },\n },\n };\n return newWorkspace;\n };\n","import type { Updater } from '../typings';\nimport type { SavedWorkspace as SavedWorkspace4 } from '../updater4/model';\nimport type { SavedWorkspace as SavedWorkspace5 } from './model';\n\nconst currentVersion = 5;\n\nexport const updater5: Updater = {\n version: currentVersion,\n canUpdate(data: any) {\n return data.version === currentVersion - 1;\n },\n update: (previousWorkspace: SavedWorkspace4): SavedWorkspace5 => {\n const savedWorkspace: SavedWorkspace5 = {\n ...previousWorkspace,\n version: currentVersion,\n };\n\n return savedWorkspace;\n },\n};\n","import type { Updater } from '../typings';\nimport type {\n OptionSavedTile as OptionSavedTile5,\n SavedWorkspace as SavedWorkspace5,\n} from '../updater5/model';\nimport type {\n OptionSavedTile as OptionSavedTile6,\n SavedWorkspace as SavedWorkspace6,\n} from './model';\n\nconst currentVersion = 6;\n\nexport const updater6: Updater = {\n version: currentVersion,\n canUpdate(data: any) {\n return data.version === currentVersion - 1;\n },\n update: (previousWorkspace: SavedWorkspace5): SavedWorkspace6 => {\n const savedWorkspace: SavedWorkspace6 = {\n ...previousWorkspace,\n version: currentVersion,\n tabs: updateOptionTiles(previousWorkspace.tabs),\n };\n\n return savedWorkspace;\n },\n};\n\nfunction updateOptionTiles(tabs: SavedWorkspace5['tabs']): SavedWorkspace6['tabs'] {\n return tabs.map(tab => ({\n ...tab,\n tiles: tab.tiles.map(tile =>\n tile.instrument === 'Option'\n ? {\n ...tile,\n legs: updateOptionTileLegs(tile.legs),\n }\n : tile,\n ),\n }));\n}\n\nfunction updateOptionTileLegs(legs: OptionSavedTile5['legs'] = []): OptionSavedTile6['legs'] {\n const firstLegProduct = legs[0]?.productName ?? 'Vanilla';\n // First leg is Vanilla or we don't have 2 legs, we transform the legs to Vanilla\n if (firstLegProduct === 'Vanilla' || legs.length !== 2) {\n return legs.map(leg => ({ ...leg, productName: 'Vanilla' }));\n }\n\n // Otherwise, we transform the typed strategy to the new format with sublegs\n return [\n {\n productName: firstLegProduct,\n subLegs: {\n call: {\n ...(legs.find(leg => leg.putOrCall === 'Call') ?? legs[0]),\n productName: 'Vanilla',\n },\n put: {\n ...(legs.find(leg => leg.putOrCall === 'Put') ?? legs[1]),\n productName: 'Vanilla',\n },\n },\n },\n ];\n}\n","import type { Updater } from '../typings';\nimport type { SavedWorkspace as SavedWorkspace6 } from '../updater6/model';\nimport type { SavedBlotter, SavedWorkspace as SavedWorkspace7 } from './model';\n\nconst currentVersion = 7;\n\nexport const updater7: Updater = {\n version: currentVersion,\n canUpdate(data: any) {\n return data.version === currentVersion - 1;\n },\n update: (previousWorkspace: SavedWorkspace6): SavedWorkspace7 => {\n const savedWorkspace: SavedWorkspace7 = {\n ...previousWorkspace,\n blotter: previousWorkspace.blotter as SavedBlotter,\n version: currentVersion,\n tabs: updateAccumulatorTiles(previousWorkspace.tabs),\n };\n\n return savedWorkspace;\n },\n};\n\nfunction updateAccumulatorTiles(tabs: SavedWorkspace6['tabs']): SavedWorkspace7['tabs'] {\n return tabs.map(tab => ({\n ...tab,\n tiles: tab.tiles.map(tile =>\n tile.instrument === 'TargetAccumulator'\n ? {\n ...tile,\n instrument: 'Accumulator',\n productName: 'FxTargetAccumulator',\n }\n : tile,\n ),\n }));\n}\n","import type { Updater } from '../typings';\nimport type {\n SavedWorkspace as SavedWorkspace7,\n OptionSavedTile as OptionSavedTile7,\n OptionVanillaLegSavedTile,\n OptionTypedStrategyLegSavedTile,\n} from '../updater7/model';\nimport type {\n SavedBlotter,\n SavedWorkspace as SavedWorkspace8,\n OptionSavedTile as OptionSavedTile8,\n} from './model';\nimport type { Collection } from '../../../../typings/utils';\n\nconst currentVersion = 8;\n\nexport const updater8: Updater = {\n version: currentVersion,\n canUpdate(data: any) {\n return data.version === currentVersion - 1;\n },\n update: (previousWorkspace: SavedWorkspace7): SavedWorkspace8 => {\n const savedWorkspace: SavedWorkspace8 = {\n ...previousWorkspace,\n blotter: previousWorkspace.blotter as SavedBlotter,\n version: currentVersion,\n tabs: updateOptionTiles(previousWorkspace.tabs),\n };\n\n return savedWorkspace;\n },\n};\n\nfunction updateOptionTiles(tabs: SavedWorkspace7['tabs']): SavedWorkspace8['tabs'] {\n return tabs.map(tab => ({\n ...tab,\n tiles: tab.tiles.map(tile =>\n tile.instrument === 'Option'\n ? {\n ...tile,\n legIds: ['0'],\n legs: updateOptionTileLegs(tile.legs),\n }\n : tile,\n ),\n }));\n}\nexport function isTypedLeg(\n leg: OptionVanillaLegSavedTile | OptionTypedStrategyLegSavedTile,\n): leg is OptionTypedStrategyLegSavedTile {\n return leg.productName !== 'Vanilla';\n}\n\nconst computeVanillaLegs = (\n subLegs: Record,\n parentKey: string,\n) =>\n Object.entries(subLegs).reduce((acc, [way, leg]) => {\n acc[`${parentKey}/${way}`] = leg;\n return acc;\n }, {} as Collection);\n\nfunction updateOptionTileLegs(legs: OptionSavedTile7['legs'] = []): OptionSavedTile8['legs'] {\n let updatedLegs = {};\n updatedLegs = {\n ['0']: {\n productName: 'FxOptionMultileg',\n legIds: isTypedLeg(legs[0]) ? ['0/0'] : legs.map((_leg, index) => `0/${index}`),\n },\n };\n\n if (isTypedLeg(legs[0])) {\n const typedLeg = {\n ['0/0']: {\n productName: legs[0].productName,\n legIds: ['0/0/call', '0/0/put'],\n },\n };\n\n const vanillaLegs = computeVanillaLegs(legs[0].subLegs, `0/0`);\n\n updatedLegs = {\n ...updatedLegs,\n ...typedLeg,\n ...vanillaLegs,\n };\n } else {\n const legsWithIndexKey = (legs as OptionVanillaLegSavedTile[]).reduce((acc, leg, index) => {\n acc[index] = leg;\n return acc;\n }, {} as Record);\n\n const vanillaLegs = computeVanillaLegs(legsWithIndexKey, `0`);\n\n updatedLegs = {\n ...updatedLegs,\n ...vanillaLegs,\n };\n }\n\n return updatedLegs;\n}\n","import type { Updater } from '../typings';\nimport type { SavedWorkspace as SavedWorkspace8 } from '../updater8/model';\nimport type {\n OptionHedgeSavedTile,\n SavedBlotter,\n SavedWorkspace as SavedWorkspace9,\n} from './model';\nimport type { Collection } from 'typings/utils';\n\nconst currentVersion = 9;\n\nexport const updater9: Updater = {\n version: currentVersion,\n canUpdate(data: any) {\n return data.version === currentVersion - 1;\n },\n update: (previousWorkspace: SavedWorkspace8): SavedWorkspace9 => ({\n ...previousWorkspace,\n blotter: previousWorkspace.blotter as SavedBlotter,\n version: currentVersion,\n tabs: updateOptionTiles(previousWorkspace.tabs),\n }),\n};\n\nfunction updateOptionTiles(tabs: SavedWorkspace8['tabs']): SavedWorkspace9['tabs'] {\n return tabs.map(tab => ({\n ...tab,\n tiles: tab.tiles.map(tile =>\n tile.instrument === 'Option'\n ? {\n ...tile,\n orientation: 'vertical',\n hedges: {} as Collection,\n }\n : tile,\n ),\n }));\n}\n","import { updater1 } from './updater1/updater1';\nimport { updater2 } from './updater2/updater2';\nimport { updater3 } from './updater3/updater3';\nimport { updater4 } from './updater4/updater4';\nimport { updater5 } from './updater5/updater5';\nimport { updater6 } from './updater6/updater6';\nimport { updater7 } from './updater7/updater7';\nimport { updater8 } from './updater8/updater8';\nimport { updater9 } from './updater9/updater9';\n\n/**\n * updaters holds an array of updaters sorted in increasing ordered based on the SavedWorkspace\n * version they can update. Each updater holds its own model, this ensure we can easily track the\n * changes in the model and that the typing of the saved workspace received is not couple to\n * the typing of our redux state. Updater models not being shared allows also to delete a whole\n * updater folder if every users updated\n */\n\nexport const updaters = [\n updater1,\n updater2,\n updater3,\n updater4,\n updater5,\n updater6,\n updater7,\n updater8,\n updater9,\n] as const;\n","import type { SavedWorkspace } from 'api/workspaceService/model';\nimport { updaters } from './updaters';\n\n/**\n * Updates the data to the most recent format. If ever you need to update to a new format,\n * please refers to the HowToUpdate.md file next to this file.\n * @param previousData the workspace data received from the server.\n */\nexport const updater = (previousData: any): SavedWorkspace | null =>\n updaters.reduce(\n (data, anUpdater) =>\n data === null ? null : anUpdater.canUpdate(data) ? anUpdater.update(data) : data,\n previousData,\n );\n","import type { ISgmeHttp, HttpCall } from 'utils/sgmeHttp';\nimport { Observable, of } from 'rxjs';\nimport type { SavedWorkspace } from 'api/workspaceService/model';\nimport { catchError, map } from 'rxjs/operators';\nimport { logger } from 'logging/logger';\nimport { updater } from './updater';\nimport { extract } from 'utils/object';\n\nexport const workspaceServiceEndPoint = 'api/userdata/workspace/';\n\nfunction endPoint(workspaceId: string | undefined) {\n return workspaceId !== undefined && !workspaceId.includes('@')\n ? `${workspaceServiceEndPoint}${workspaceId}`\n : workspaceServiceEndPoint;\n}\n\nexport interface IWorkspaceServiceApi {\n timeout: number;\n save(workspace: SavedWorkspace, workspaceId?: string): Observable>;\n get(workspaceId?: string): Observable;\n}\n\nexport function workspaceServiceApi(http: ISgmeHttp): IWorkspaceServiceApi {\n return {\n save(workspace: SavedWorkspace, workspaceId?: string) {\n return http.post(endPoint(workspaceId), workspace);\n },\n get(workspaceId?: string) {\n return http.getJSON(endPoint(workspaceId)).pipe(\n map(extract('payload')),\n map(updater),\n catchError(err => {\n logger.logError('Loading saved workspace failed {message_s}', err.message);\n return of(null);\n }),\n );\n },\n timeout: 10_000,\n };\n}\n","import type { ISgmeHttp, HttpCall } from 'utils/sgmeHttp';\nimport type { Observable } from 'rxjs';\nimport type { UserPreferencesData } from 'state/userPreferences/userPreferencesModel';\nimport { ignoreElements } from 'rxjs/operators';\nimport { transformEmailsToBase64 } from 'utils/base64';\n\nexport interface IUserPreferencesServiceApi {\n timeout: number;\n save(userPreferences: UserPreferencesData): Observable>;\n}\n\nexport function userPreferencesServiceApi(http: ISgmeHttp): IUserPreferencesServiceApi {\n const EmailsTransformed = (userPreferences: UserPreferencesData) => {\n const transformEmails = transformEmailsToBase64(userPreferences, 'emails', 'emails');\n const transformEmailsCash = transformEmailsToBase64(\n transformEmails,\n 'splitNotificationsEmailsCash',\n 'splitNotificationsEmailsCash',\n );\n const transformEmailsOrders = transformEmailsToBase64(\n transformEmailsCash,\n 'splitNotificationsEmailsOrders',\n 'splitNotificationsEmailsOrders',\n );\n const transformEmailsOptions = transformEmailsToBase64(\n transformEmailsOrders,\n 'splitNotificationsEmailsOptions',\n 'splitNotificationsEmailsOptions',\n );\n return transformEmailsOptions;\n };\n return {\n save(userPreferences: UserPreferencesData) {\n return http\n .post('api/userdata/userpref', EmailsTransformed(userPreferences))\n .pipe(ignoreElements());\n },\n timeout: 10_000,\n };\n}\n","import type { ISgmeHttp } from 'utils/sgmeHttp';\nimport type { Observable } from 'rxjs';\nimport { ignoreElements } from 'rxjs/operators';\nimport { logger } from 'logging/logger';\n\nexport interface IEventLogApi {\n send: (request: { type: LogLevel; data: EventLog }) => Observable;\n msApiTimeout: number;\n}\nexport const eventLogApi = (http: ISgmeHttp): IEventLogApi => {\n const api: IEventLogApi = {\n send: request => {\n let headers = {};\n // for cloud, we need sg-connect\n try {\n const bearer = window.sgwtConnect.getAuthorizationHeader();\n headers = { Authorization: bearer };\n } catch (error: any) {\n logger.logError('Error when retrieved authorization header {message_s}', error.message);\n }\n return http.post('api/eventLog', request, headers).pipe(ignoreElements());\n },\n msApiTimeout: 5000,\n };\n return api;\n};\n\nexport type LogActionType = 'Execution';\nexport type LogLevel = 'info' | 'warn' | 'error';\nexport interface PerformanceLog {\n login: string;\n userAction: 'Performance';\n pingHttpMs: number;\n pingStreamingMs: number;\n deltaHttpStreamingMs: number;\n busySinceLastMs: number;\n}\n\nexport interface HttpPerformanceLog {\n login: string;\n userAction: 'HttpPerformance';\n requestType: string;\n requestId: string;\n timeSpentInMs: number;\n}\n\nexport interface HistogramLog {\n userAction: 'Histogram';\n name: string;\n count: number;\n mean: number;\n p90: number;\n p99: number;\n p999: number;\n max: number;\n}\n\nexport interface FunctionalEventLog {\n login: string;\n instrument: LogInstrumentType;\n userAction: LogActionType;\n correlationId: string;\n dealInfo: LogDealInfo;\n actionOutcome: LogActionOutcomeType;\n additionalData?: { [key: string]: any };\n}\n\nexport interface MemoryLog {\n login: string;\n userAction: 'Memory';\n memoryUsage: number;\n}\n\nexport type EventLog =\n | FunctionalEventLog\n | PerformanceLog\n | HistogramLog\n | MemoryLog\n | HttpPerformanceLog;\n\nexport type LogInstrumentType =\n | 'Unknown'\n | 'Spot'\n | 'Forward'\n | 'Swap'\n | 'Option'\n | 'Bulk'\n | 'Order'\n | 'Accumulator';\n\nexport interface LogDealInfo {\n clientName: string;\n clientId: string;\n currency1: string;\n currency2: string;\n legs: readonly LogDealInfoLeg[];\n}\n\nexport interface LogDealInfoLeg {\n index: string;\n negotiatedAmount: number;\n negotiatedCurrency: string;\n}\n\nexport type LogActionOutcomeType = 'Success' | 'Failure' | 'Pending';\n","import type { ISgmeHttp } from 'utils/sgmeHttp';\nimport { ignoreElements } from 'rxjs/operators';\nimport type { IBulkQuoteRequestApi } from './multipassModel';\n\nexport function bulkQuoteRequestApi(http: ISgmeHttp): IBulkQuoteRequestApi {\n return {\n msToFirstHearbeat: 120_000,\n createQuoteRequest(request) {\n return http\n .post('api/fxBulk/rfs/request', request, { 'X-Correlation-ID': request.rfsId })\n .pipe(ignoreElements());\n },\n };\n}\n","import type { Observable } from 'rxjs';\nimport type { HttpCall, ISgmeHttp } from 'utils/sgmeHttp';\nimport type { Side } from 'state/share/productModel/litterals';\nimport { transformEmailsToBase64 } from 'utils/base64';\n\nexport interface IBulkQuoteExecutionPayload {\n rfsId: string;\n quoteId: string;\n replyToStream: string;\n emailNotificationList: string;\n userLocalDateTime: string;\n lastQuoteFromBackTimestamp: number;\n lastQuoteReceivedByFrontTimestamp: number;\n executionClickByFrontTimestamp: number;\n legs: readonly IBulkLegQuoteExecutionPayload[];\n}\n\nexport interface IBulkLegQuoteExecutionPayload {\n amount: number;\n customerWay: Side;\n valueDate: string;\n valueDateTenor: string;\n\n spotTrader?: number;\n spotClient: number;\n forwardPoints: number;\n}\n\nexport interface IBulkQuoteExecuteRequestApi {\n msApiTimeout: number;\n executeQuoteRequest(payload: IBulkQuoteExecutionPayload): Observable>;\n}\n\nexport function bulkQuoteExecuteApi(http: ISgmeHttp): IBulkQuoteExecuteRequestApi {\n return {\n executeQuoteRequest(payload) {\n return http.post(\n 'api/fxBulk/rfs/execute',\n transformEmailsToBase64(payload, 'emailNotificationList', 'email64NotificationList'),\n { 'X-Correlation-ID': payload.rfsId },\n );\n },\n msApiTimeout: 60_000,\n };\n}\n","import type { ISgmeHttp } from 'utils/sgmeHttp';\nimport type { Observable } from 'rxjs';\nimport { ignoreElements } from 'rxjs/operators';\n\nexport interface IBulkQuoteCancelApi {\n cancelQuoteRequest(rfsId: string): Observable;\n}\n\nexport function bulkQuoteCancelApi(http: ISgmeHttp): IBulkQuoteCancelApi {\n return {\n cancelQuoteRequest(rfsId) {\n return http\n .post('api/fxBulk/rfs/cancel', { rfsId }, { 'X-Correlation-ID': rfsId })\n .pipe(ignoreElements());\n },\n };\n}\n","import type { Observable } from 'rxjs';\nimport type { ISgmeHttp, HttpCall } from 'utils/sgmeHttp';\nimport { map } from 'rxjs/operators';\nimport type {\n IBlotterTradeNotificationData,\n IBlotterOrderNotificationData,\n} from 'bootstrap/streams';\nimport { extract } from 'utils/object';\n\nexport type TradeData = readonly IBlotterTradeNotificationData[];\n\nexport type OrderData = readonly IBlotterOrderNotificationData[];\n\nconst url = 'api/blotter';\n\nexport interface IBlotterServiceApi {\n timeout: number;\n delayToAllowRefetch: number;\n getActiveOrderList: (showMyMainDeals: boolean) => Observable;\n getIntradayTrades: (showMyMainDeals: boolean) => Observable;\n getHistoricalTrades: (\n showMyMainDeals: boolean,\n counterpartyBdrIds: readonly string[],\n fromDate: Date,\n toDate: Date,\n ) => Observable;\n register(connectionId: string, showMyMainDeals: boolean): Observable>;\n}\n\nexport function blotterServiceApi(http: ISgmeHttp): IBlotterServiceApi {\n return {\n getIntradayTrades(showMyMainDeals) {\n return http\n .post(`${url}/todayTradesList`, {\n showMyMainDeals,\n })\n .pipe(map(extract('payload')));\n },\n getHistoricalTrades(showMyMainDeals, counterpartyBdrInitials, fromDate, toDate) {\n return http\n .post(`${url}/historicalTradesList`, {\n showMyMainDeals,\n counterpartyBdrInitials,\n fromDate,\n toDate,\n })\n .pipe(map(extract('payload')));\n },\n getActiveOrderList(showMyMainDeals: boolean) {\n return http\n .post(`${url}/activeOrderList`, { showMyMainDeals })\n .pipe(map(extract('payload')));\n },\n register(connectionId, showMyMainDeals) {\n return http.post(`${url}/register`, {\n dataStreamId: connectionId,\n showMyMainDeals,\n });\n },\n\n timeout: 110 * 1000,\n delayToAllowRefetch: 3 * 1000,\n };\n}\n","import type { TieringRequest, ICashTieringRequestApi } from './model';\nimport type { ISgmeHttp } from 'utils/sgmeHttp';\nimport { map } from 'rxjs/operators';\nimport { format } from 'date-fns';\n\nconst NO_TIERING = 'Provided tiering is null';\n\nexport function cashTieringRequestApi(http: ISgmeHttp): ICashTieringRequestApi {\n return (req: TieringRequest) => {\n const maturityDate = format(req.maturityDate, 'yyyy-MM-dd');\n const url = `api/fxSpotFwd/esp/tieringV2/${req.clientBdrId}/${req.product}/${req.ccy1}/${req.ccy2}/${maturityDate}`;\n\n return http.getJSON(url).pipe(\n map(({ payload }) => {\n if (payload === null) {\n throw { status: NO_TIERING };\n }\n return payload;\n }),\n );\n };\n}\n","import type { Observable } from 'rxjs';\nimport type { ISgmeHttp } from 'utils/sgmeHttp';\nimport { map } from 'rxjs/operators';\n\nexport interface IOrderEmailsApi {\n timeout: number;\n getEmails(bdrId: string): Observable;\n}\n\nexport function orderEmailsApi(http: ISgmeHttp): IOrderEmailsApi {\n return {\n timeout: 2000,\n getEmails: bdrId => {\n const url = `api/oms/emails/${bdrId}`;\n return http.getJSON(url).pipe(map(httpCall => httpCall.payload));\n },\n };\n}\n","import type { ISgmeHttp, HttpCall } from 'utils/sgmeHttp';\nimport type { Observable } from 'rxjs';\n\nexport function xoneAutomationApi(http: ISgmeHttp): IXoneAutomation {\n return {\n openReference(reference: string) {\n return http.post('api/desktopAutomation/openReference', {\n reference,\n });\n },\n };\n}\n\nexport interface IXoneAutomation {\n openReference(reference: string): Observable>;\n}\n","import type { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport type { ISgmeHttp } from 'utils/sgmeHttp';\nimport { extract } from 'utils/object';\n\nconst url = 'api/PreTrade/Registrations';\n\nexport interface IPreTradeRegistrationsApi {\n startNewNegotiation(timestamp: string): Observable;\n continueExistingNegotiation(\n negociationId: string,\n timestamp: string,\n dealDone?: boolean,\n ): Observable;\n}\n\nexport const preTradeRegistrationApi = (http: ISgmeHttp): IPreTradeRegistrationsApi => ({\n startNewNegotiation: timestamp =>\n http\n .post(url, {\n timestamp,\n })\n .pipe(map(extract('payload')), map(String)),\n continueExistingNegotiation: (negotiationId, timestamp, dealDone) =>\n http\n .put(`${url}/${negotiationId}`, {\n timestamp,\n dealDone,\n })\n .pipe(map(extract('payload'))),\n});\n","import type { ISgmeHttp } from 'utils/sgmeHttp';\nimport type { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\ninterface BamSearchResult {\n status: string;\n comment: string;\n bookingId: string;\n}\nexport interface IBamSearchApi {\n findDeal: (dealId: string) => Observable;\n msApiTimeout: number;\n}\nexport const bamSearchApi = (http: ISgmeHttp): IBamSearchApi => ({\n findDeal: dealId =>\n http\n .getJSON(`api/bamSearch?dealId=${dealId}`)\n .pipe(map(res => res.payload)),\n msApiTimeout: 1000,\n});\n","import type { ISgmeHttp } from 'utils/sgmeHttp';\nimport { ignoreElements } from 'rxjs/operators';\nimport type { IAccumulatorRfsRequestApi } from 'epics/accumulator';\n\nexport function accumulatorRfsRequestApi(http: ISgmeHttp): IAccumulatorRfsRequestApi {\n return {\n msToFirstHearbeat: 120_000,\n createQuoteRequest(request) {\n return http\n .post('api/fxAccumulator/rfs/request', request, {\n 'X-Correlation-ID': request.rfsId,\n })\n .pipe(ignoreElements());\n },\n };\n}\n","import type { ISgmeHttp } from 'utils/sgmeHttp';\nimport { ignoreElements } from 'rxjs/operators';\nimport type { Observable } from 'rxjs';\n\nexport interface IAccumulatorRfsCancelRequestApi {\n cancelRfsRequest(rfsId: string): Observable;\n}\n\nexport function accumulatorRfsCancelApi(http: ISgmeHttp): IAccumulatorRfsCancelRequestApi {\n return {\n cancelRfsRequest(rfsId: string) {\n return http\n .post('api/fxAccumulator/rfs/cancel', { rfsId }, { 'X-Correlation-ID': rfsId })\n .pipe(ignoreElements());\n },\n };\n}\n","import type { ISgmeHttp } from 'utils/sgmeHttp';\n\nimport type { IAccumulatorRfsExecuteApi, ForexOptionExecuteRequestFrontDto } from './model';\nimport { transformEmailsToBase64 } from 'utils/base64';\n\nexport function accumulatorRfsExecuteApi(http: ISgmeHttp): IAccumulatorRfsExecuteApi {\n return {\n executeQuote(payload: ForexOptionExecuteRequestFrontDto) {\n return http.post(\n 'api/fxOption/rfs/execute',\n transformEmailsToBase64(payload, 'emailNotificationList', 'email64NotificationList'),\n { 'X-Correlation-ID': payload.rfsId },\n );\n },\n msApiTimeout: 60_000,\n };\n}\n","import type { ISgmeHttp, HttpCall } from 'utils/sgmeHttp';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { logger } from 'logging/logger';\n\nimport { extract } from 'utils/object';\nimport type { OrderTemplate } from 'state/fxOrders/fxOrdersModel';\nimport type { Collection } from 'typings/utils';\n\nexport const ordersTemplatesServiceEndPoint = 'api/userdata/order_templates/';\n\nfunction endPoint(workspaceId: string | undefined) {\n return workspaceId !== undefined && !workspaceId.includes('@')\n ? `${ordersTemplatesServiceEndPoint}${workspaceId}`\n : ordersTemplatesServiceEndPoint;\n}\n\nexport interface IOrdersTemplatesServiceApi {\n timeout: number;\n save(templates: Collection, workspaceId?: string): Observable>;\n get(workspace?: string, workspaceId?: string): Observable | null>;\n}\n\nexport function ordersTemplateServiceApi(http: ISgmeHttp): IOrdersTemplatesServiceApi {\n return {\n save(templates: Collection, workspaceId?: string) {\n return http.post(endPoint(workspaceId), templates);\n },\n get(workspaceId?: string) {\n return http.getJSON>(endPoint(workspaceId)).pipe(\n map(extract('payload')),\n catchError(err => {\n logger.logError('Loading saved orders teamplates failed {message_s}', err.message);\n return of(null);\n }),\n );\n },\n timeout: 10_000,\n };\n}\n","import type { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport type { ISgmeHttp } from 'utils/sgmeHttp';\nexport interface IDateApi {\n getDateFromTenor: (tenor: string, currencyPair: string) => Observable;\n}\n\nexport const dateApi = (http: ISgmeHttp): IDateApi => ({\n getDateFromTenor(tenor: string, currencyPair: string) {\n return http\n .getJSON(\n `api/dates/from-tenor/${tenor}?currencyPair=${encodeURIComponent(currencyPair)}`,\n {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n )\n .pipe(map(c => new Date(c.payload)));\n },\n});\n","import type { ISgmeHttp, HttpCall } from 'utils/sgmeHttp';\nimport type { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { extract } from 'utils/object';\n\nexport const pinnedCompaniesServiceEndPoint = 'api/userdata/pinned/';\n\nexport interface IPinnedCompaniesServiceApi {\n timeout: number;\n save(workspace: readonly number[], workspaceId?: number): Observable>;\n get(workspaceId?: number): Observable;\n}\ninterface PinnedCompaniesPayload {\n pinnedCompanies: readonly number[];\n}\nexport function pinnedCompaniesServiceApi(http: ISgmeHttp): IPinnedCompaniesServiceApi {\n return {\n save(pinnedCompanies: readonly number[]) {\n return http.post(pinnedCompaniesServiceEndPoint, { pinnedCompanies });\n },\n get() {\n return http.getJSON(pinnedCompaniesServiceEndPoint).pipe(\n map(extract('payload')),\n map(c => c?.pinnedCompanies),\n );\n },\n timeout: 10_000,\n };\n}\n","import type { ISgmeHttp } from 'utils/sgmeHttp';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { extract } from 'utils/object';\nimport { type TradeCaptureOptionResponseWrapper } from './tradeCapture/option/tradeCaptureOptionModel';\n\nexport interface ITradeCaptureSmartRfsApi {\n // todo-5153 do I need timeout ?\n timeout: number;\n create(sessionId: string, productStringRepresentation: string): Observable;\n}\n\nexport function smartRfsServiceApi(http: ISgmeHttp): ITradeCaptureSmartRfsApi {\n return {\n create(sessionId: string, productStringRepresentation: string) {\n // todo-5153 temp code to pass stringRepresentation because I'm a newbie with .net\n const endpoint = `api/tradeCapture/${sessionId}/chatMessage/${productStringRepresentation}`;\n return http\n .post(endpoint, { productStringRepresentation })\n .pipe(map(extract('payload')));\n },\n // todo-5153 need this timeout ?\n timeout: 10_000,\n };\n}\n","import { referenceDataApi } from './referenceData';\nimport { optionTradeCaptureApi } from './tradeCapture/option';\nimport { cashTradeCaptureApi } from './tradeCapture/cash';\nimport { swapTradeCaptureApi } from './tradeCapture/swap';\nimport { bulkTradeCaptureApi } from './tradeCapture/bulk';\nimport { accumulatorTradeCaptureApi } from './tradeCapture/accumulator';\nimport { quoteCancelRequestApi } from './multipass/option/rfsQuoteCancel';\nimport { optionQuoteRequestApi } from './multipass/option/optionQuoteRequest';\nimport { optionQuoteUpdateApi } from './multipass/option/optionRfsQuoteUpdate';\nimport type { ISgmeHttp } from 'utils/sgmeHttp';\nimport { optionQuoteExecuteRequestApi } from './multipass/option/optionQuoteExecution';\nimport { cashRfsQuoteExecuteRequestApi } from './multipass/cash/rfs/cashRfsQuoteExecution';\nimport { cashEspQuoteExecuteRequestApi } from './multipass/cash/esp/cashEspQuoteExecution';\nimport { cashRfsQuoteRequestApi } from './multipass/cash/rfs/cashRfsQuoteRequest';\nimport { cashStreamRequestApi, cashStreamsRefreshApi } from './multipass/cash/esp/cashStreamRequest';\nimport { espStreamUnsubscribeRequestApi } from './multipass/cash/esp/espStreamUnsubcribe';\nimport { omsApi } from './order/oms';\nimport { recordPriceRequestApi } from './multipass/recordPriceRequestApi';\nimport { sessionServiceApi } from './sessionService';\nimport { sendHelpRequestObservable } from './help';\nimport { swapRfsQuoteRequestApi } from './multipass/swap/swapRfsQuoteRequest';\nimport { swapRfsQuoteExecuteRequestApi } from 'api/multipass/swap/swapRfsQuoteExecution';\nimport { swapRfsCancelApi } from 'api/multipass/swap/swapRfsQuoteCancel';\nimport { cashRfsCancelApi } from 'api/multipass/cash/rfs/cashRfsQuoteCancel';\nimport { workspaceServiceApi } from './workspaceService/workspaceService';\nimport { userPreferencesServiceApi } from './userPreferencesService';\nimport { eventLogApi } from './eventLog';\nimport { bulkQuoteExecuteApi, bulkQuoteRequestApi } from './multipass/bulk';\nimport { bulkQuoteCancelApi } from './multipass/bulk/bulkQuoteCancel';\nimport { blotterServiceApi } from './blotter/blotterService';\nimport { cashTieringRequestApi } from './multipass/cash/esp/cashTieringRequest';\nimport type { FxApi } from './typings';\nimport { orderEmailsApi } from './order/orderEmails';\nimport { xoneAutomationApi } from './xoneAutomation';\nimport { preTradeRegistrationApi } from './preTradeRegistrations';\nimport { bamSearchApi } from './bamSearch';\nimport { accumulatorRfsRequestApi } from './multipass/accumulator/accumulatorRfsRequest';\nimport { accumulatorRfsCancelApi } from './multipass/accumulator/accumulatorRfsCancel';\nimport { accumulatorRfsExecuteApi } from './multipass/accumulator/accumulatorRfsExecute';\nimport { ordersTemplateServiceApi } from './ordersTemplatesService';\nimport { dateApi } from './dateApi';\nimport { pinnedCompaniesServiceApi } from './pinnedCompaniesService';\nimport { smartRfsServiceApi } from './smartRfsService';\n\nexport * from './referenceData';\nexport * from './tradeCapture/option';\nexport * from './tradeCapture/cash';\nexport * from './tradeCapture/swap';\nexport * from './multipass/option/optionQuoteRequest';\nexport * from './multipass/option/optionQuoteRequestBuilder';\nexport * from './multipass/bulk/bulkQuoteRequest';\n\nexport function createFxApi(http: ISgmeHttp): FxApi {\n return {\n orderApi: omsApi(http),\n orderEmailsApi: orderEmailsApi(http),\n referenceDataApi: referenceDataApi(http),\n blotterServiceApi: blotterServiceApi(http),\n optionTradeCaptureApi: optionTradeCaptureApi(http),\n cashTradeCaptureApi: cashTradeCaptureApi(http),\n swapTradeCaptureApi: swapTradeCaptureApi(http),\n bulkTradeCaptureApi: bulkTradeCaptureApi(http),\n accumulatorTradeCaptureApi: accumulatorTradeCaptureApi(http),\n accumulatorRfsRequestApi: accumulatorRfsRequestApi(http),\n accumulatorRfsExecuteApi: accumulatorRfsExecuteApi(http),\n accumulatorRfsCancelApi: accumulatorRfsCancelApi(http),\n optionQuoteRequestApi: optionQuoteRequestApi(http),\n optionQuoteUpdateApi: optionQuoteUpdateApi(http),\n optionRfsCancelApi: quoteCancelRequestApi(http),\n optionQuoteExecuteRequestApi: optionQuoteExecuteRequestApi(http),\n bulkQuoteRequestApi: bulkQuoteRequestApi(http),\n bulkRfsCancelApi: bulkQuoteCancelApi(http),\n cashRfsQuoteExecuteRequestApi: cashRfsQuoteExecuteRequestApi(http),\n cashEspQuoteExecuteRequestApi: cashEspQuoteExecuteRequestApi(http),\n cashRfsQuoteRequestApi: cashRfsQuoteRequestApi(http),\n cashRfsCancelApi: cashRfsCancelApi(http),\n cashTieringRequest: cashTieringRequestApi(http),\n cashStreamRequest: cashStreamRequestApi(http),\n cashStreamsRefresh: cashStreamsRefreshApi(http),\n espStreamUnsubscribeRequestApi: espStreamUnsubscribeRequestApi(http),\n swapRfsQuoteRequestApi: swapRfsQuoteRequestApi(http),\n swapRfsQuoteExecuteRequestApi: swapRfsQuoteExecuteRequestApi(http),\n swapRfsCancelApi: swapRfsCancelApi(http),\n recordPriceRequestApi: recordPriceRequestApi(http),\n sessionServiceApi: sessionServiceApi(http),\n sendHelpRequest: sendHelpRequestObservable,\n bulkQuoteExecuteRequestApi: bulkQuoteExecuteApi(http),\n workspaceServiceApi: workspaceServiceApi(http),\n orderTemplatesServiceApi: ordersTemplateServiceApi(http),\n userPreferencesServiceApi: userPreferencesServiceApi(http),\n eventLogApi: eventLogApi(http),\n xoneAutomationApi: xoneAutomationApi(http),\n preTradeRegistrations: preTradeRegistrationApi(http),\n bamSearch: bamSearchApi(http),\n dateApi: dateApi(http),\n pinnedApi: pinnedCompaniesServiceApi(http),\n // todo-5153 should I prefix the api by TC here ? implementation detail ? Important to know ?\n smartRfsTradeCaptureApi: smartRfsServiceApi(http),\n };\n}\n","// @ts-ignore\nconst devEnv: boolean = import.meta.env.VITE_FX_NODE_ENV === 'development';\n// @ts-ignore\nconst devServerBackend = import.meta.env.VITE_DEVSERVER_BACKEND;\n\nexport function getEnvironment() {\n const environment =\n typeof window !== 'undefined' ? window.sgmeConfiguration.env : devServerBackend;\n if (environment !== 'PROD') {\n return `${environment}${\n typeof window !== 'undefined' && window.location.href.includes('local') ? ' local' : ''\n }`;\n }\n}\n\nexport const isDev =\n devEnv ||\n (devServerBackend || '').toLowerCase().includes('dev') ||\n (typeof window !== 'undefined' && window.location.href.includes('dev'));\n\nexport const agGridLicenseKey =\n 'CompanyName=SOCIETE GENERALE,LicensedGroup=SG Markets FX,LicenseType=MultipleApplications,LicensedConcurrentDeveloperCount=2,LicensedProductionInstancesCount=2,AssetReference=AG-025632,ExpiryDate=2_April_2023_[v2]_MTY4MDM5MDAwMDAwMA==0ddb8fc70cf4cf2ae9d823aa6d8fad00';\n\nexport const producerCode = 'sgm_exec_fx';\n","import { getMatomo } from 'bootstrap/matomo';\n\ninterface ICookiesConsent {\n apiId: string;\n sdkId: string;\n name: string;\n category: 'web-analytics' | 'video' | 'technical' | 'other';\n type: 'vendor' | 'purpose';\n}\n\nexport interface IUserConsent extends ICookiesConsent {\n consent: boolean;\n}\n\nexport interface SgFooterWidget extends Element {\n getCurrentUserConsent(): IUserConsent[] | null;\n\n getCurrentUserConsentAsync(): Promise;\n\n getUserConsentOnMatomo(): Promise;\n}\n\nexport let _footerWidget: SgFooterWidget;\nexport const onFooterSetRef = (footerWidget: SgFooterWidget | null) => {\n if (footerWidget) {\n _footerWidget = footerWidget;\n _footerWidget.addEventListener('sgwt-mini-footer--current-user-consent', () => {\n _footerWidget\n .getUserConsentOnMatomo()\n .then(_userConsentAsyncResolve)\n .catch(_userConsentAsyncReject);\n });\n\n _footerWidget.addEventListener('sgwt-mini-footer--user-consent-changed', () => {\n _footerWidget.getUserConsentOnMatomo().then(consent => {\n if (consent) {\n getMatomo().setWithUserConsent();\n } else {\n getMatomo().setWithoutUserConsent();\n }\n });\n });\n }\n};\n\nlet _userConsentAsyncResolve: (value: boolean | PromiseLike) => void;\nlet _userConsentAsyncReject: (reason?: any) => void;\nexport const userConsentAsync = new Promise((resolve, reject) => {\n _userConsentAsyncResolve = resolve;\n _userConsentAsyncReject = reject;\n});\n","import { userConsentAsync } from './userConsent';\nimport { logger } from '../logging/logger';\n\ninterface MyWindow extends Window {\n // global variable to communicate with piwik tracking code\n _paq: any[];\n}\n\ndeclare let window: MyWindow;\n\nexport interface IMatomoConfig {\n piwikRootUrl: string;\n siteId: string;\n}\n\nexport type Category =\n | 'Workspace'\n | 'Mifid2'\n | 'Blotter'\n | 'Cash'\n | 'Swap'\n | 'Option'\n | 'Accumulator'\n | 'TargetAccumulator'\n | 'ForwardAccumulator'\n | 'Bulk'\n | 'Order';\n\nexport type Action =\n | 'Accumulator type changed to permanent'\n | 'Change product'\n | 'Change currency pair'\n | 'Create bulk'\n | 'Import bulk'\n | 'Exclude from bulk'\n | 'Add product to bulk'\n | 'Remove product(s) from bulk'\n | 'Reset bulk'\n | 'Stream request'\n | 'Tradeable stream request'\n | 'Stream cancel'\n | 'Execution request'\n | 'Execution failure'\n | 'Execution success'\n | 'Order creation cancelled'\n | 'Order submission request'\n | 'Order submission success'\n | 'Order submission failure'\n | 'Order cancel'\n | 'Order pause'\n | 'Order resume'\n | 'Order fill now'\n | 'Order modify'\n | 'Order view'\n | 'Order click'\n | 'Add tab'\n | 'Change client'\n | 'Remove tab'\n | 'Save workspace'\n | 'Workspace lock toggled'\n | 'Switch theme'\n | 'Add tile'\n | 'Duplicate tile'\n | 'Remove tile'\n | 'Tile client changed'\n | 'Tile client reset'\n | 'Zoom tile'\n | 'Switch to horizontal leg'\n | 'Switch to vertical leg'\n | 'Group strategy legs by expiry'\n | 'Ungroup strategy legs'\n | 'Notional currency pairs link toggled'\n | 'Legs premiums pin toggled'\n | 'Solving requested in compact view'\n | 'Solving requested in strategy view'\n | 'Reduce tile'\n | 'Open preferences'\n | 'Preference changed'\n | 'Open MIFID2 panel'\n | 'Close MIFID2 panel'\n | 'Price recorded'\n | 'Open blotter'\n | 'Close blotter'\n | 'Add leg to option'\n | 'Duplicate option leg'\n | 'Remove leg from option'\n | 'Import option legs'\n | 'Import TA schedule'\n | 'Paste in option strategy'\n | 'Option stripping request'\n | 'Strike shortcut used'\n | 'Order template created'\n | 'Order template updated'\n | 'Order template applied'\n | 'Order template deleted'\n | 'Open tile from blotter'\n | 'Open cambist calendar'\n | 'Pin client'\n | 'Unpin client'\n | 'Move client up'\n | 'Move client down'\n | 'Amount ref overriden in option strategy'\n | 'Hedge forward'\n | 'Custom hedge'\n | 'Call / Put'\n | 'Straddle'\n | 'Strangle'\n | 'Risk Reversal'\n | 'Volatility has been overriden'\n | 'Calendar overridden';\n\nexport interface Matomo {\n init(login: string): void;\n\n track(category: Category, event: Action, additionalData?: string): void;\n\n setWithUserConsent(): void;\n\n setWithoutUserConsent(): void;\n\n setCustomVariable(\n index: 1 | 2 | 3 | 4 | 5,\n name: 'locale' | 'theme',\n value: string,\n scope: 'visit' | 'page',\n ): void;\n\n trackPageView(): void;\n}\n\nexport class MatomoUtils implements Matomo {\n private _matomoSourceUrl: string;\n private _login: string | undefined;\n private _matomoScriptId = 'matomo-script-id';\n\n constructor(config: IMatomoConfig) {\n const currentDomain = window.location.hostname;\n window._paq = [];\n window._paq.push(['setDomains', [currentDomain]]);\n window._paq.push(['requireCookieConsent']);\n window._paq.push(['setTrackerUrl', config.piwikRootUrl + 'piwik.php']);\n window._paq.push(['setSiteId', config.siteId]);\n this._matomoSourceUrl = config.piwikRootUrl + 'piwik.js';\n }\n\n private appendMatomoScript(): void {\n const matomoScript = document.createElement('script');\n matomoScript.type = 'text/javascript';\n matomoScript.async = true;\n matomoScript.defer = true;\n matomoScript.src = this._matomoSourceUrl;\n matomoScript.id = this._matomoScriptId;\n\n const firstDocumentScriptNode = document.getElementsByTagName('script')[0];\n if (firstDocumentScriptNode === null || firstDocumentScriptNode.parentNode === null) {\n logger.logError('Can not inject piwik source code into document');\n return;\n }\n firstDocumentScriptNode.parentNode.insertBefore(matomoScript, firstDocumentScriptNode);\n }\n\n public init(login: string) {\n this._login = login;\n window._paq.push(['setUserId', this._login]);\n\n userConsentAsync.then(isOk => {\n if (isOk) {\n this.setWithUserConsent();\n } else {\n this.setWithoutUserConsent();\n }\n window._paq.push(['trackPageView']);\n window._paq.push(['enableLinkTracking']);\n this.appendMatomoScript();\n });\n }\n\n public setWithUserConsent() {\n window._paq.push(['rememberCookieConsentGiven', 4320]);\n window._paq.push(['setCustomDimension', 10, true]);\n }\n\n public setWithoutUserConsent() {\n window._paq.push(['forgetCookieConsentGiven']);\n window._paq.push(['setCustomDimension', 10, false]);\n }\n\n private trackEvent(category: Category, eventName: string, additionalData?: string) {\n const data = ['trackEvent', category, eventName];\n if (additionalData !== undefined) {\n data.push(additionalData);\n }\n window._paq.push(data);\n return;\n }\n\n public track(category: Category, event: Action, additionalData?: string): void {\n this.trackEvent(category, event, additionalData);\n }\n\n public setCustomVariable(\n index: 1 | 2 | 3 | 4 | 5,\n name: 'locale' | 'theme',\n value: string,\n scope: 'visit' | 'page',\n ): void {\n window._paq.push(['setCustomVariable', index, name, value, scope]);\n }\n public trackPageView() {\n window._paq.push(['trackPageView']);\n }\n}\n","import { noop } from '@sgme/fp';\nimport { type Matomo, MatomoUtils } from 'utils';\n\nlet _matomo: Matomo;\n\nexport function getMatomo(): Matomo {\n if (_matomo === undefined) {\n if (window.sgmeConfiguration.piwik) {\n _matomo = new MatomoUtils(window.sgmeConfiguration.piwik);\n } else {\n _matomo = {\n init: noop,\n track: noop,\n setWithUserConsent: noop,\n setWithoutUserConsent: noop,\n setCustomVariable: noop,\n trackPageView: noop,\n };\n }\n }\n return _matomo;\n}\n","import thunk from 'redux-thunk';\nimport type { ExtraArgument, DispatchExt } from 'state';\nimport { selectors } from 'state/selectors';\nimport { type Action, actionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\nimport { makeEpicMiddleware } from 'epics/makeMiddleware';\nimport { sgmeHttp } from './http';\nimport { type Store, applyMiddleware, compose, createStore } from 'redux';\nimport { rootReducer } from 'state/rootReducer';\nimport { getStreams } from './streams';\nimport { crashStatus } from 'circuitBreaker';\nimport { actionNotifier } from 'redux-middlewares/actionNotificationMiddleware';\nimport { matomoHandlerInitializer } from './reduxMiddlewares/matomoHandler';\nimport {\n logActionMiddleware,\n crashOnActionMiddleware,\n catchMiddleware,\n rememberLastActionsMiddleware,\n autosendHelpRequestMiddleware,\n} from './reduxMiddlewares';\nimport { circuitBreakerMiddleware } from 'redux-middlewares/circuitBreakerMiddleware';\nimport { v4 as getNewGuid } from 'uuid';\nimport { metaSelectors } from 'epics/metaSelectors';\nimport { createFxApi } from 'api';\nimport { isDev } from '../../configuration';\nimport { circuitBreakerTimer } from 'utils/Timer/Timers';\nimport { getMatomo } from './matomo';\nimport { appBootstrapped } from 'state/globalActions';\n\nlet _store: Store & DispatchExt;\n\nconst thunkExtraArgument: ExtraArgument = {\n selectors,\n metaSelectors,\n actionCreators,\n getNewGuid,\n};\n\nconst lastActions: Action[] = [];\nexport function getLastActions(): readonly Action[] {\n return [...lastActions].reverse();\n}\n\nexport function getStore() {\n if (_store === undefined) {\n // think twice before changing order\n const fxApi = createFxApi(sgmeHttp);\n const epicMiddleware = makeEpicMiddleware(fxApi);\n const middlewares = [\n circuitBreakerMiddleware(circuitBreakerTimer(crashStatus)),\n catchMiddleware,\n thunk.withExtraArgument(thunkExtraArgument),\n epicMiddleware,\n logActionMiddleware,\n rememberLastActionsMiddleware(lastActions),\n autosendHelpRequestMiddleware(isDev),\n crashOnActionMiddleware,\n ];\n\n if (window.sgmeConfiguration.piwik !== null) {\n const utils = getMatomo();\n middlewares.push(actionNotifier({ didMatch: matomoHandlerInitializer(utils) }));\n }\n\n const _compose =\n import.meta.env.DEBUG === 'profiling'\n ? compose\n : (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ?? compose;\n const enhancer = _compose(applyMiddleware(...middlewares));\n\n _store = createStore(rootReducer, enhancer);\n\n import('epics').then(({ makeRootEpic }) => {\n epicMiddleware.run(makeRootEpic(getStreams()));\n _store?.dispatch(appBootstrapped());\n });\n }\n return _store;\n}\n","import type { AppState } from 'state/model';\nimport type { Store } from 'redux';\nimport type { SGWTConnectCore } from '@sgwt/connect-core';\nimport type { ISgmeHttp } from 'utils/sgmeHttp';\nimport { catchError, timeout } from 'rxjs/operators';\nimport { logger } from 'logging/logger';\nimport { throwError } from 'rxjs';\nimport { isDefined } from '@sgme/fp';\n\nexport type HelpRequestConfig =\n | 'general'\n | 'access'\n | 'appcrashed'\n | 'dealpending'\n | 'timeouteddeal'\n | 'orderpending';\n\nexport function cleanUpSensitiveInformations(key: string, value: any) {\n if (key === 'headers' && isDefined(value) && value.Authorization !== undefined) {\n value.Authorization = '*** HIDDEN ***';\n }\n return value;\n}\n\nexport interface IHelpRequestAdditionalParams extends HelpRequestIdParam {\n config?: HelpRequestConfig;\n screenshot?: string;\n details?: string;\n includeLastActions?: boolean;\n includeState?: boolean;\n sendConfirmation?: boolean;\n data?: Record;\n}\n\nexport interface HelpRequestIdParam {\n rfsIdsErrors?: TileError[];\n executionIdsErrors?: TileError[];\n rfsIdsNoPrice?: string[];\n espIdsNoPrice?: string[];\n}\n\nexport interface TileError {\n id: string;\n message: string;\n}\n\nexport const sendHelpRequestHOF =\n (\n sgmeHttpParam: ISgmeHttp,\n sgwtConnectParam: SGWTConnectCore,\n store: Store,\n lastActionsGetter: () => readonly unknown[],\n isProbablyUsingRemoteDesktop: () => boolean,\n ) =>\n ({\n config = 'general',\n screenshot,\n details,\n includeLastActions = false,\n includeState = false,\n sendConfirmation = true,\n executionIdsErrors,\n espIdsNoPrice,\n rfsIdsErrors,\n rfsIdsNoPrice,\n data,\n }: IHelpRequestAdditionalParams) => {\n const { userAgent } = navigator;\n const probableConnection = isProbablyUsingRemoteDesktop() ? 'Remote desktop' : 'Direct';\n const state = includeState === true ? JSON.stringify(store.getState()) : undefined;\n const lastActions =\n includeLastActions === true\n ? JSON.stringify(lastActionsGetter(), cleanUpSensitiveInformations)\n : undefined;\n // user info is extracted from sgwtConnect\n const login = sgwtConnectParam.getIdTokenClaims()!.sub as string;\n const payload = {\n application: 'SGME-FX',\n config,\n login,\n userAgent,\n probableConnection,\n details,\n state,\n screenshot,\n lastActions,\n sendConfirmation,\n data,\n executionIdsErrors,\n espIdsNoPrice,\n rfsIdsErrors,\n rfsIdsNoPrice,\n };\n\n const httpPost = (_payload: typeof payload) =>\n sgmeHttpParam\n .post('api/help/request', JSON.stringify(_payload), {\n 'Content-Type': 'application/json',\n })\n .pipe(timeout(30000));\n\n logger.logInformation('Sending help request {@helpRequestBody}', {\n application: 'SGME-FX',\n config,\n login,\n userAgent,\n probableConnection,\n details,\n stateLength: state?.length,\n screenshotLength: screenshot?.length,\n lastActions,\n sendConfirmation,\n data,\n executionIdsErrors,\n espIdsNoPrice,\n rfsIdsErrors,\n rfsIdsNoPrice,\n });\n\n return httpPost(payload).pipe(\n catchError(err => {\n logger.logError('Error while sending help request {message_s}', err.message);\n if (err.status === 413) {\n delete payload.state;\n payload.details =\n `[state missing because of error 413, state size was ${state?.length}]\\n\\n` +\n (details || '');\n return httpPost(payload);\n } else {\n return throwError(err);\n }\n }),\n catchError(err => {\n logger.logError('Error while sending help request {message_s}', err.message);\n if (err.status === 413) {\n delete payload.screenshot;\n payload.details =\n `[state and screenshot missing because of error 413, state size was ${state?.length} and screenshot size was ${screenshot?.length}]\\n\\n` +\n (details || '');\n return httpPost(payload);\n } else {\n return throwError(err);\n }\n }),\n );\n };\n","import type { HttpCall } from 'utils/sgmeHttp';\nimport { sgwtConnect } from 'api/connect';\nimport { getStore, getLastActions } from 'bootstrap/store';\nimport { sgmeHttp } from 'bootstrap/http';\nimport type { Observable } from 'rxjs';\nimport { type IHelpRequestAdditionalParams, sendHelpRequestHOF } from './sendHelpRequest';\n\nexport type { HelpRequestConfig, IHelpRequestAdditionalParams } from './sendHelpRequest';\n\nlet _sendHelpRequest: (params: IHelpRequestAdditionalParams) => Observable>;\n\nexport const sendHelpRequest = (additionalParams: IHelpRequestAdditionalParams) =>\n sendHelpRequestObservable(additionalParams).toPromise();\n\nexport const sendHelpRequestObservable = (additionalParams: IHelpRequestAdditionalParams) => {\n if (_sendHelpRequest === undefined) {\n _sendHelpRequest = sendHelpRequestHOF(\n sgmeHttp,\n sgwtConnect,\n getStore(),\n getLastActions,\n () => matchMedia('(prefers-reduced-motion: reduce)').matches,\n );\n }\n return _sendHelpRequest(additionalParams);\n};\n","import type { SendHelpStatus } from 'state/globalError/globalErrorModel';\nimport { FormattedMessage } from 'react-intl';\nimport { sendHelpRequest, type HelpRequestConfig } from 'api/help';\nimport { assertUnreachable } from '@sgme/fp';\nimport { logger } from 'logging/logger';\nimport { Component } from 'react';\n\ninterface IHelpButtonOwnProps {\n labelId?: string;\n config?: HelpRequestConfig;\n includeLastActions?: boolean;\n includeState?: boolean;\n screenshot?: string;\n details(): any;\n statusUpdateCallBack?(status: SendHelpStatus | null): void;\n}\n\ninterface IHelpButtonState {\n sendHelpStatus: SendHelpStatus | null;\n}\n\nexport class HelpButton extends Component {\n constructor(props: IHelpButtonOwnProps) {\n super(props);\n this.state = { sendHelpStatus: null };\n }\n\n private sendHelp = () => {\n this.updateStatus('sending');\n sendHelpRequest({\n config: this.props.config || 'general',\n details: stringifyIfNeeded(this.props.details()),\n screenshot: this.props.screenshot,\n includeLastActions: this.props.includeLastActions,\n includeState: this.props.includeState,\n })\n .then(() => this.updateStatus('success'))\n .catch(reason => {\n logger.logError('Could not send help request : {reason_s}', JSON.stringify(reason));\n this.updateStatus('failed');\n });\n };\n\n private updateStatus = (sendHelpStatus: SendHelpStatus | null) => {\n this.setState({ sendHelpStatus });\n if (this.props.statusUpdateCallBack) {\n this.props.statusUpdateCallBack(sendHelpStatus);\n }\n };\n\n public render() {\n switch (this.state.sendHelpStatus) {\n case null:\n return (\n \n );\n case 'failed':\n return (\n <>\n \n sgmarketsfx@sgcib.com,\n }}\n />\n \n \n \n );\n case 'sending':\n return (\n \n );\n case 'success':\n return (\n \n check\n \n \n );\n default:\n assertUnreachable(this.state.sendHelpStatus, 'Unhandled state for HelpButton');\n }\n }\n}\n\nconst stringifyIfNeeded = (value: any): string => {\n if (typeof value === 'string') {\n return value;\n }\n return JSON.stringify(value, null, 2);\n};\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"sourceMappedStackTrace\"] = factory();\n\telse\n\t\troot[\"sourceMappedStackTrace\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\n\t * sourcemapped-stacktrace.js\n\t * created by James Salter (2014)\n\t *\n\t * https://github.com/novocaine/sourcemapped-stacktrace\n\t *\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\n\t/*global define */\n\n\t// note we only include source-map-consumer, not the whole source-map library,\n\t// which includes gear for generating source maps that we don't need\n\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1)], __WEBPACK_AMD_DEFINE_RESULT__ = function(source_map_consumer) {\n\n\t var global_mapForUri = {};\n\n\t /**\n\t * Re-map entries in a stacktrace using sourcemaps if available.\n\t *\n\t * @param {str} stack - The stacktrace from the browser.\n\t * @param {function} done - Callback invoked with the transformed stacktrace\n\t * (an Array of Strings) passed as the first\n\t * argument\n\t * @param {Object} [opts] - Optional options object.\n\t * @param {Function} [opts.filter] - Filter function applied to each stackTrace line.\n\t * Lines which do not pass the filter won't be processesd.\n\t * @param {boolean} [opts.cacheGlobally] - Whether to cache sourcemaps globally across multiple calls.\n\t * @param {boolean} [opts.sync] - Whether to use synchronous ajax to load the sourcemaps.\n\t * @param {string} [opts.traceFormat] - If `error.stack` is formatted according to chrome or\n\t * Firefox's style. Can be either `\"chrome\"`, `\"firefox\"`\n\t * or `undefined` (default). If `undefined`, this library\n\t * will guess based on `navigator.userAgent`.\n\t */\n\t var mapStackTrace = function(stack, done, opts) {\n\t var lines;\n\t var line;\n\t var mapForUri = {};\n\t var rows = {};\n\t var fields;\n\t var uri;\n\t var expected_fields;\n\t var regex;\n\t var skip_lines;\n\n\t var fetcher = new Fetcher(opts);\n\n\t var traceFormat = opts && opts.traceFormat;\n\t if (traceFormat !== \"chrome\" && traceFormat !== \"firefox\") {\n\t if (traceFormat) {\n\t throw new Error(\"unknown traceFormat \\\"\" + traceFormat + \"\\\" :(\");\n\t } else if (isChromeOrEdge() || isIE11Plus()) {\n\t traceFormat = \"chrome\";\n\t } else if (isFirefox() || isSafari()) {\n\t traceFormat = \"firefox\";\n\t } else {\n\t throw new Error(\"unknown browser :(\");\n\t }\n\t }\n\n\t if (traceFormat === \"chrome\") {\n\t regex = /^ +at.+\\((.*):([0-9]+):([0-9]+)/;\n\t expected_fields = 4;\n\t // (skip first line containing exception message)\n\t skip_lines = 1;\n\t } else {\n\t regex = /@(.*):([0-9]+):([0-9]+)/;\n\t expected_fields = 4;\n\t skip_lines = 0;\n\t }\n\n\t lines = stack.split(\"\\n\").slice(skip_lines);\n\n\t for (var i=0; i < lines.length; i++) {\n\t line = lines[i];\n\t if ( opts && opts.filter && !opts.filter(line) ) continue;\n\t \n\t fields = line.match(regex);\n\t if (fields && fields.length === expected_fields) {\n\t rows[i] = fields;\n\t uri = fields[1];\n\t if (!uri.match(//)) {\n\t fetcher.fetchScript(uri);\n\t }\n\t }\n\t }\n\n\t fetcher.sem.whenReady(function() {\n\t var result = processSourceMaps(lines, rows, fetcher.mapForUri, traceFormat);\n\t done(result);\n\t });\n\t };\n\n\t var isChromeOrEdge = function() {\n\t return navigator.userAgent.toLowerCase().indexOf('chrome') > -1;\n\t };\n\n\t var isFirefox = function() {\n\t return navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n\t }; \n\n\t var isSafari = function() {\n\t return navigator.userAgent.toLowerCase().indexOf('safari') > -1;\n\t };\n\t\t\t\n\t var isIE11Plus = function() {\n\t \treturn document.documentMode && document.documentMode >= 11;\n\t };\n\n\n\t var Semaphore = function() {\n\t this.count = 0;\n\t this.pending = [];\n\t };\n\n\t Semaphore.prototype.incr = function() {\n\t this.count++;\n\t };\n\n\t Semaphore.prototype.decr = function() {\n\t this.count--;\n\t this.flush();\n\t };\n\n\t Semaphore.prototype.whenReady = function(fn) {\n\t this.pending.push(fn);\n\t this.flush();\n\t };\n\n\t Semaphore.prototype.flush = function() {\n\t if (this.count === 0) {\n\t this.pending.forEach(function(fn) { fn(); });\n\t this.pending = [];\n\t }\n\t };\n\n\n\t var Fetcher = function(opts) {\n\t this.sem = new Semaphore();\n\t this.sync = opts && opts.sync;\n\t this.mapForUri = opts && opts.cacheGlobally ? global_mapForUri : {};\n\t };\n\n\t Fetcher.prototype.ajax = function(uri, callback) {\n\t var xhr = createXMLHTTPObject();\n\t var that = this;\n\t xhr.onreadystatechange = function() {\n\t if (xhr.readyState == 4) {\n\t callback.call(that, xhr, uri);\n\t }\n\t };\n\t xhr.open(\"GET\", uri, !this.sync);\n\t xhr.send();\n\t }\n\n\t Fetcher.prototype.fetchScript = function(uri) {\n\t if (!(uri in this.mapForUri)) {\n\t this.sem.incr();\n\t this.mapForUri[uri] = null;\n\t } else {\n\t return;\n\t }\n\n\t this.ajax(uri, this.onScriptLoad);\n\t };\n\n\t var absUrlRegex = new RegExp('^(?:[a-z]+:)?//', 'i');\n\n\t Fetcher.prototype.onScriptLoad = function(xhr, uri) {\n\t if (xhr.status === 200 || (uri.slice(0, 7) === \"file://\" && xhr.status === 0)) {\n\t // find .map in file.\n\t //\n\t // attempt to find it at the very end of the file, but tolerate trailing\n\t // whitespace inserted by some packers.\n\t var match = xhr.responseText.match(\"//# [s]ourceMappingURL=(.*)[\\\\s]*$\", \"m\");\n\t if (match && match.length === 2) {\n\t // get the map\n\t var mapUri = match[1];\n\n\t var embeddedSourceMap = mapUri.match(\"data:application/json;(charset=[^;]+;)?base64,(.*)\");\n\n\t if (embeddedSourceMap && embeddedSourceMap[2]) {\n\t this.mapForUri[uri] = new source_map_consumer.SourceMapConsumer(atob(embeddedSourceMap[2]));\n\t this.sem.decr();\n\t } else {\n\t if (!absUrlRegex.test(mapUri)) {\n\t // relative url; according to sourcemaps spec is 'source origin'\n\t var origin;\n\t var lastSlash = uri.lastIndexOf('/');\n\t if (lastSlash !== -1) {\n\t origin = uri.slice(0, lastSlash + 1);\n\t mapUri = origin + mapUri;\n\t // note if lastSlash === -1, actual script uri has no slash\n\t // somehow, so no way to use it as a prefix... we give up and try\n\t // as absolute\n\t }\n\t }\n\n\t this.ajax(mapUri, function(xhr) {\n\t if (xhr.status === 200 || (mapUri.slice(0, 7) === \"file://\" && xhr.status === 0)) {\n\t this.mapForUri[uri] = new source_map_consumer.SourceMapConsumer(xhr.responseText);\n\t }\n\t this.sem.decr();\n\t });\n\t }\n\t } else {\n\t // no map\n\t this.sem.decr();\n\t }\n\t } else {\n\t // HTTP error fetching uri of the script\n\t this.sem.decr();\n\t }\n\t };\n\n\t var processSourceMaps = function(lines, rows, mapForUri, traceFormat) {\n\t var result = [];\n\t var map;\n\t var origName = traceFormat === \"chrome\" ? origNameChrome : origNameFirefox;\n\t for (var i=0; i < lines.length; i++) {\n\t var row = rows[i];\n\t if (row) {\n\t var uri = row[1];\n\t var line = parseInt(row[2], 10);\n\t var column = parseInt(row[3], 10);\n\t map = mapForUri[uri];\n\n\t if (map) {\n\t // we think we have a map for that uri. call source-map library\n\t var origPos = map.originalPositionFor(\n\t { line: line, column: column });\n\t result.push(formatOriginalPosition(origPos.source,\n\t origPos.line, origPos.column, origPos.name || origName(lines[i])));\n\t } else {\n\t // we can't find a map for that url, but we parsed the row.\n\t // reformat unchanged line for consistency with the sourcemapped\n\t // lines.\n\t result.push(formatOriginalPosition(uri, line, column, origName(lines[i])));\n\t }\n\t } else {\n\t // we weren't able to parse the row, push back what we were given\n\t result.push(lines[i]);\n\t }\n\t }\n\n\t return result;\n\t };\n\n\t function origNameChrome(origLine) {\n\t var match = / +at +([^ ]*).*/.exec(origLine);\n\t return match && match[1];\n\t }\n\n\t function origNameFirefox(origLine) {\n\t var match = /([^@]*)@.*/.exec(origLine);\n\t return match && match[1];\n\t }\n\n\t var formatOriginalPosition = function(source, line, column, name) {\n\t // mimic chrome's format\n\t return \" at \" + (name ? name : \"(unknown)\") +\n\t \" (\" + source + \":\" + line + \":\" + column + \")\";\n\t };\n\n\t // xmlhttprequest boilerplate\n\t var XMLHttpFactories = [\n\t\tfunction () {return new XMLHttpRequest();},\n\t\tfunction () {return new ActiveXObject(\"Msxml2.XMLHTTP\");},\n\t\tfunction () {return new ActiveXObject(\"Msxml3.XMLHTTP\");},\n\t\tfunction () {return new ActiveXObject(\"Microsoft.XMLHTTP\");}\n\t ];\n\n\t function createXMLHTTPObject() {\n\t var xmlhttp = false;\n\t for (var i=0;i= 0) {\n\t var mapping = this._originalMappings[index];\n\n\t if (aArgs.column === undefined) {\n\t var originalLine = mapping.originalLine;\n\n\t // Iterate until either we run out of mappings, or we run into\n\t // a mapping for a different line than the one we found. Since\n\t // mappings are sorted, this is guaranteed to find all mappings for\n\t // the line we found.\n\t while (mapping && mapping.originalLine === originalLine) {\n\t mappings.push({\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t });\n\n\t mapping = this._originalMappings[++index];\n\t }\n\t } else {\n\t var originalColumn = mapping.originalColumn;\n\n\t // Iterate until either we run out of mappings, or we run into\n\t // a mapping for a different line than the one we were searching for.\n\t // Since mappings are sorted, this is guaranteed to find all mappings for\n\t // the line we are searching for.\n\t while (mapping &&\n\t mapping.originalLine === line &&\n\t mapping.originalColumn == originalColumn) {\n\t mappings.push({\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t });\n\n\t mapping = this._originalMappings[++index];\n\t }\n\t }\n\t }\n\n\t return mappings;\n\t };\n\n\texports.SourceMapConsumer = SourceMapConsumer;\n\n\t/**\n\t * A BasicSourceMapConsumer instance represents a parsed source map which we can\n\t * query for information about the original file positions by giving it a file\n\t * position in the generated source.\n\t *\n\t * The only parameter is the raw source map (either as a JSON string, or\n\t * already parsed to an object). According to the spec, source maps have the\n\t * following attributes:\n\t *\n\t * - version: Which version of the source map spec this map is following.\n\t * - sources: An array of URLs to the original source files.\n\t * - names: An array of identifiers which can be referrenced by individual mappings.\n\t * - sourceRoot: Optional. The URL root from which all sources are relative.\n\t * - sourcesContent: Optional. An array of contents of the original source files.\n\t * - mappings: A string of base64 VLQs which contain the actual mappings.\n\t * - file: Optional. The generated file this source map is associated with.\n\t *\n\t * Here is an example source map, taken from the source map spec[0]:\n\t *\n\t * {\n\t * version : 3,\n\t * file: \"out.js\",\n\t * sourceRoot : \"\",\n\t * sources: [\"foo.js\", \"bar.js\"],\n\t * names: [\"src\", \"maps\", \"are\", \"fun\"],\n\t * mappings: \"AA,AB;;ABCDE;\"\n\t * }\n\t *\n\t * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n\t */\n\tfunction BasicSourceMapConsumer(aSourceMap) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n\t }\n\n\t var version = util.getArg(sourceMap, 'version');\n\t var sources = util.getArg(sourceMap, 'sources');\n\t // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n\t // requires the array) to play nice here.\n\t var names = util.getArg(sourceMap, 'names', []);\n\t var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n\t var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n\t var mappings = util.getArg(sourceMap, 'mappings');\n\t var file = util.getArg(sourceMap, 'file', null);\n\n\t // Once again, Sass deviates from the spec and supplies the version as a\n\t // string rather than a number, so we use loose equality checking here.\n\t if (version != this._version) {\n\t throw new Error('Unsupported version: ' + version);\n\t }\n\n\t sources = sources\n\t .map(String)\n\t // Some source maps produce relative source paths like \"./foo.js\" instead of\n\t // \"foo.js\". Normalize these first so that future comparisons will succeed.\n\t // See bugzil.la/1090768.\n\t .map(util.normalize)\n\t // Always ensure that absolute sources are internally stored relative to\n\t // the source root, if the source root is absolute. Not doing this would\n\t // be particularly problematic when the source root is a prefix of the\n\t // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n\t .map(function (source) {\n\t return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n\t ? util.relative(sourceRoot, source)\n\t : source;\n\t });\n\n\t // Pass `true` below to allow duplicate names and sources. While source maps\n\t // are intended to be compressed and deduplicated, the TypeScript compiler\n\t // sometimes generates source maps with duplicates in them. See Github issue\n\t // #72 and bugzil.la/889492.\n\t this._names = ArraySet.fromArray(names.map(String), true);\n\t this._sources = ArraySet.fromArray(sources, true);\n\n\t this.sourceRoot = sourceRoot;\n\t this.sourcesContent = sourcesContent;\n\t this._mappings = mappings;\n\t this.file = file;\n\t}\n\n\tBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\n\tBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n\t/**\n\t * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n\t *\n\t * @param SourceMapGenerator aSourceMap\n\t * The source map that will be consumed.\n\t * @returns BasicSourceMapConsumer\n\t */\n\tBasicSourceMapConsumer.fromSourceMap =\n\t function SourceMapConsumer_fromSourceMap(aSourceMap) {\n\t var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n\t var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n\t var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n\t smc.sourceRoot = aSourceMap._sourceRoot;\n\t smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n\t smc.sourceRoot);\n\t smc.file = aSourceMap._file;\n\n\t // Because we are modifying the entries (by converting string sources and\n\t // names to indices into the sources and names ArraySets), we have to make\n\t // a copy of the entry or else bad things happen. Shared mutable state\n\t // strikes again! See github issue #191.\n\n\t var generatedMappings = aSourceMap._mappings.toArray().slice();\n\t var destGeneratedMappings = smc.__generatedMappings = [];\n\t var destOriginalMappings = smc.__originalMappings = [];\n\n\t for (var i = 0, length = generatedMappings.length; i < length; i++) {\n\t var srcMapping = generatedMappings[i];\n\t var destMapping = new Mapping;\n\t destMapping.generatedLine = srcMapping.generatedLine;\n\t destMapping.generatedColumn = srcMapping.generatedColumn;\n\n\t if (srcMapping.source) {\n\t destMapping.source = sources.indexOf(srcMapping.source);\n\t destMapping.originalLine = srcMapping.originalLine;\n\t destMapping.originalColumn = srcMapping.originalColumn;\n\n\t if (srcMapping.name) {\n\t destMapping.name = names.indexOf(srcMapping.name);\n\t }\n\n\t destOriginalMappings.push(destMapping);\n\t }\n\n\t destGeneratedMappings.push(destMapping);\n\t }\n\n\t quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n\t return smc;\n\t };\n\n\t/**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\tBasicSourceMapConsumer.prototype._version = 3;\n\n\t/**\n\t * The list of original sources.\n\t */\n\tObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n\t get: function () {\n\t return this._sources.toArray().map(function (s) {\n\t return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;\n\t }, this);\n\t }\n\t});\n\n\t/**\n\t * Provide the JIT with a nice shape / hidden class.\n\t */\n\tfunction Mapping() {\n\t this.generatedLine = 0;\n\t this.generatedColumn = 0;\n\t this.source = null;\n\t this.originalLine = null;\n\t this.originalColumn = null;\n\t this.name = null;\n\t}\n\n\t/**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\tBasicSourceMapConsumer.prototype._parseMappings =\n\t function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t var generatedLine = 1;\n\t var previousGeneratedColumn = 0;\n\t var previousOriginalLine = 0;\n\t var previousOriginalColumn = 0;\n\t var previousSource = 0;\n\t var previousName = 0;\n\t var length = aStr.length;\n\t var index = 0;\n\t var cachedSegments = {};\n\t var temp = {};\n\t var originalMappings = [];\n\t var generatedMappings = [];\n\t var mapping, str, segment, end, value;\n\n\t while (index < length) {\n\t if (aStr.charAt(index) === ';') {\n\t generatedLine++;\n\t index++;\n\t previousGeneratedColumn = 0;\n\t }\n\t else if (aStr.charAt(index) === ',') {\n\t index++;\n\t }\n\t else {\n\t mapping = new Mapping();\n\t mapping.generatedLine = generatedLine;\n\n\t // Because each offset is encoded relative to the previous one,\n\t // many segments often have the same encoding. We can exploit this\n\t // fact by caching the parsed variable length fields of each segment,\n\t // allowing us to avoid a second parse if we encounter the same\n\t // segment again.\n\t for (end = index; end < length; end++) {\n\t if (this._charIsMappingSeparator(aStr, end)) {\n\t break;\n\t }\n\t }\n\t str = aStr.slice(index, end);\n\n\t segment = cachedSegments[str];\n\t if (segment) {\n\t index += str.length;\n\t } else {\n\t segment = [];\n\t while (index < end) {\n\t base64VLQ.decode(aStr, index, temp);\n\t value = temp.value;\n\t index = temp.rest;\n\t segment.push(value);\n\t }\n\n\t if (segment.length === 2) {\n\t throw new Error('Found a source, but no line and column');\n\t }\n\n\t if (segment.length === 3) {\n\t throw new Error('Found a source and line, but no column');\n\t }\n\n\t cachedSegments[str] = segment;\n\t }\n\n\t // Generated column.\n\t mapping.generatedColumn = previousGeneratedColumn + segment[0];\n\t previousGeneratedColumn = mapping.generatedColumn;\n\n\t if (segment.length > 1) {\n\t // Original source.\n\t mapping.source = previousSource + segment[1];\n\t previousSource += segment[1];\n\n\t // Original line.\n\t mapping.originalLine = previousOriginalLine + segment[2];\n\t previousOriginalLine = mapping.originalLine;\n\t // Lines are stored 0-based\n\t mapping.originalLine += 1;\n\n\t // Original column.\n\t mapping.originalColumn = previousOriginalColumn + segment[3];\n\t previousOriginalColumn = mapping.originalColumn;\n\n\t if (segment.length > 4) {\n\t // Original name.\n\t mapping.name = previousName + segment[4];\n\t previousName += segment[4];\n\t }\n\t }\n\n\t generatedMappings.push(mapping);\n\t if (typeof mapping.originalLine === 'number') {\n\t originalMappings.push(mapping);\n\t }\n\t }\n\t }\n\n\t quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n\t this.__generatedMappings = generatedMappings;\n\n\t quickSort(originalMappings, util.compareByOriginalPositions);\n\t this.__originalMappings = originalMappings;\n\t };\n\n\t/**\n\t * Find the mapping that best matches the hypothetical \"needle\" mapping that\n\t * we are searching for in the given \"haystack\" of mappings.\n\t */\n\tBasicSourceMapConsumer.prototype._findMapping =\n\t function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n\t aColumnName, aComparator, aBias) {\n\t // To return the position we are searching for, we must first find the\n\t // mapping for the given position and then return the opposite position it\n\t // points to. Because the mappings are sorted, we can use binary search to\n\t // find the best mapping.\n\n\t if (aNeedle[aLineName] <= 0) {\n\t throw new TypeError('Line must be greater than or equal to 1, got '\n\t + aNeedle[aLineName]);\n\t }\n\t if (aNeedle[aColumnName] < 0) {\n\t throw new TypeError('Column must be greater than or equal to 0, got '\n\t + aNeedle[aColumnName]);\n\t }\n\n\t return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n\t };\n\n\t/**\n\t * Compute the last column for each generated mapping. The last column is\n\t * inclusive.\n\t */\n\tBasicSourceMapConsumer.prototype.computeColumnSpans =\n\t function SourceMapConsumer_computeColumnSpans() {\n\t for (var index = 0; index < this._generatedMappings.length; ++index) {\n\t var mapping = this._generatedMappings[index];\n\n\t // Mappings do not contain a field for the last generated columnt. We\n\t // can come up with an optimistic estimate, however, by assuming that\n\t // mappings are contiguous (i.e. given two consecutive mappings, the\n\t // first mapping ends where the second one starts).\n\t if (index + 1 < this._generatedMappings.length) {\n\t var nextMapping = this._generatedMappings[index + 1];\n\n\t if (mapping.generatedLine === nextMapping.generatedLine) {\n\t mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n\t continue;\n\t }\n\t }\n\n\t // The last mapping for each line spans the entire line.\n\t mapping.lastGeneratedColumn = Infinity;\n\t }\n\t };\n\n\t/**\n\t * Returns the original source, line, and column information for the generated\n\t * source's line and column positions provided. The only argument is an object\n\t * with the following properties:\n\t *\n\t * - line: The line number in the generated source.\n\t * - column: The column number in the generated source.\n\t * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n\t * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - source: The original source file, or null.\n\t * - line: The line number in the original source, or null.\n\t * - column: The column number in the original source, or null.\n\t * - name: The original identifier, or null.\n\t */\n\tBasicSourceMapConsumer.prototype.originalPositionFor =\n\t function SourceMapConsumer_originalPositionFor(aArgs) {\n\t var needle = {\n\t generatedLine: util.getArg(aArgs, 'line'),\n\t generatedColumn: util.getArg(aArgs, 'column')\n\t };\n\n\t var index = this._findMapping(\n\t needle,\n\t this._generatedMappings,\n\t \"generatedLine\",\n\t \"generatedColumn\",\n\t util.compareByGeneratedPositionsDeflated,\n\t util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n\t );\n\n\t if (index >= 0) {\n\t var mapping = this._generatedMappings[index];\n\n\t if (mapping.generatedLine === needle.generatedLine) {\n\t var source = util.getArg(mapping, 'source', null);\n\t if (source !== null) {\n\t source = this._sources.at(source);\n\t if (this.sourceRoot != null) {\n\t source = util.join(this.sourceRoot, source);\n\t }\n\t }\n\t var name = util.getArg(mapping, 'name', null);\n\t if (name !== null) {\n\t name = this._names.at(name);\n\t }\n\t return {\n\t source: source,\n\t line: util.getArg(mapping, 'originalLine', null),\n\t column: util.getArg(mapping, 'originalColumn', null),\n\t name: name\n\t };\n\t }\n\t }\n\n\t return {\n\t source: null,\n\t line: null,\n\t column: null,\n\t name: null\n\t };\n\t };\n\n\t/**\n\t * Return true if we have the source content for every source in the source\n\t * map, false otherwise.\n\t */\n\tBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n\t function BasicSourceMapConsumer_hasContentsOfAllSources() {\n\t if (!this.sourcesContent) {\n\t return false;\n\t }\n\t return this.sourcesContent.length >= this._sources.size() &&\n\t !this.sourcesContent.some(function (sc) { return sc == null; });\n\t };\n\n\t/**\n\t * Returns the original source content. The only argument is the url of the\n\t * original source file. Returns null if no original source content is\n\t * available.\n\t */\n\tBasicSourceMapConsumer.prototype.sourceContentFor =\n\t function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n\t if (!this.sourcesContent) {\n\t return null;\n\t }\n\n\t if (this.sourceRoot != null) {\n\t aSource = util.relative(this.sourceRoot, aSource);\n\t }\n\n\t if (this._sources.has(aSource)) {\n\t return this.sourcesContent[this._sources.indexOf(aSource)];\n\t }\n\n\t var url;\n\t if (this.sourceRoot != null\n\t && (url = util.urlParse(this.sourceRoot))) {\n\t // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n\t // many users. We can help them out when they expect file:// URIs to\n\t // behave like it would if they were running a local HTTP server. See\n\t // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n\t var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n\t if (url.scheme == \"file\"\n\t && this._sources.has(fileUriAbsPath)) {\n\t return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n\t }\n\n\t if ((!url.path || url.path == \"/\")\n\t && this._sources.has(\"/\" + aSource)) {\n\t return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n\t }\n\t }\n\n\t // This function is used recursively from\n\t // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n\t // don't want to throw if we can't find the source - we just want to\n\t // return null, so we provide a flag to exit gracefully.\n\t if (nullOnMissing) {\n\t return null;\n\t }\n\t else {\n\t throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n\t }\n\t };\n\n\t/**\n\t * Returns the generated line and column information for the original source,\n\t * line, and column positions provided. The only argument is an object with\n\t * the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source.\n\t * - column: The column number in the original source.\n\t * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n\t * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null.\n\t * - column: The column number in the generated source, or null.\n\t */\n\tBasicSourceMapConsumer.prototype.generatedPositionFor =\n\t function SourceMapConsumer_generatedPositionFor(aArgs) {\n\t var source = util.getArg(aArgs, 'source');\n\t if (this.sourceRoot != null) {\n\t source = util.relative(this.sourceRoot, source);\n\t }\n\t if (!this._sources.has(source)) {\n\t return {\n\t line: null,\n\t column: null,\n\t lastColumn: null\n\t };\n\t }\n\t source = this._sources.indexOf(source);\n\n\t var needle = {\n\t source: source,\n\t originalLine: util.getArg(aArgs, 'line'),\n\t originalColumn: util.getArg(aArgs, 'column')\n\t };\n\n\t var index = this._findMapping(\n\t needle,\n\t this._originalMappings,\n\t \"originalLine\",\n\t \"originalColumn\",\n\t util.compareByOriginalPositions,\n\t util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n\t );\n\n\t if (index >= 0) {\n\t var mapping = this._originalMappings[index];\n\n\t if (mapping.source === needle.source) {\n\t return {\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t };\n\t }\n\t }\n\n\t return {\n\t line: null,\n\t column: null,\n\t lastColumn: null\n\t };\n\t };\n\n\texports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n\t/**\n\t * An IndexedSourceMapConsumer instance represents a parsed source map which\n\t * we can query for information. It differs from BasicSourceMapConsumer in\n\t * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n\t * input.\n\t *\n\t * The only parameter is a raw source map (either as a JSON string, or already\n\t * parsed to an object). According to the spec for indexed source maps, they\n\t * have the following attributes:\n\t *\n\t * - version: Which version of the source map spec this map is following.\n\t * - file: Optional. The generated file this source map is associated with.\n\t * - sections: A list of section definitions.\n\t *\n\t * Each value under the \"sections\" field has two fields:\n\t * - offset: The offset into the original specified at which this section\n\t * begins to apply, defined as an object with a \"line\" and \"column\"\n\t * field.\n\t * - map: A source map definition. This source map could also be indexed,\n\t * but doesn't have to be.\n\t *\n\t * Instead of the \"map\" field, it's also possible to have a \"url\" field\n\t * specifying a URL to retrieve a source map from, but that's currently\n\t * unsupported.\n\t *\n\t * Here's an example source map, taken from the source map spec[0], but\n\t * modified to omit a section which uses the \"url\" field.\n\t *\n\t * {\n\t * version : 3,\n\t * file: \"app.js\",\n\t * sections: [{\n\t * offset: {line:100, column:10},\n\t * map: {\n\t * version : 3,\n\t * file: \"section.js\",\n\t * sources: [\"foo.js\", \"bar.js\"],\n\t * names: [\"src\", \"maps\", \"are\", \"fun\"],\n\t * mappings: \"AAAA,E;;ABCDE;\"\n\t * }\n\t * }],\n\t * }\n\t *\n\t * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n\t */\n\tfunction IndexedSourceMapConsumer(aSourceMap) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n\t }\n\n\t var version = util.getArg(sourceMap, 'version');\n\t var sections = util.getArg(sourceMap, 'sections');\n\n\t if (version != this._version) {\n\t throw new Error('Unsupported version: ' + version);\n\t }\n\n\t this._sources = new ArraySet();\n\t this._names = new ArraySet();\n\n\t var lastOffset = {\n\t line: -1,\n\t column: 0\n\t };\n\t this._sections = sections.map(function (s) {\n\t if (s.url) {\n\t // The url field will require support for asynchronicity.\n\t // See https://github.com/mozilla/source-map/issues/16\n\t throw new Error('Support for url field in sections not implemented.');\n\t }\n\t var offset = util.getArg(s, 'offset');\n\t var offsetLine = util.getArg(offset, 'line');\n\t var offsetColumn = util.getArg(offset, 'column');\n\n\t if (offsetLine < lastOffset.line ||\n\t (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n\t throw new Error('Section offsets must be ordered and non-overlapping.');\n\t }\n\t lastOffset = offset;\n\n\t return {\n\t generatedOffset: {\n\t // The offset fields are 0-based, but we use 1-based indices when\n\t // encoding/decoding from VLQ.\n\t generatedLine: offsetLine + 1,\n\t generatedColumn: offsetColumn + 1\n\t },\n\t consumer: new SourceMapConsumer(util.getArg(s, 'map'))\n\t }\n\t });\n\t}\n\n\tIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\n\tIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n\t/**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\tIndexedSourceMapConsumer.prototype._version = 3;\n\n\t/**\n\t * The list of original sources.\n\t */\n\tObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n\t get: function () {\n\t var sources = [];\n\t for (var i = 0; i < this._sections.length; i++) {\n\t for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n\t sources.push(this._sections[i].consumer.sources[j]);\n\t }\n\t }\n\t return sources;\n\t }\n\t});\n\n\t/**\n\t * Returns the original source, line, and column information for the generated\n\t * source's line and column positions provided. The only argument is an object\n\t * with the following properties:\n\t *\n\t * - line: The line number in the generated source.\n\t * - column: The column number in the generated source.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - source: The original source file, or null.\n\t * - line: The line number in the original source, or null.\n\t * - column: The column number in the original source, or null.\n\t * - name: The original identifier, or null.\n\t */\n\tIndexedSourceMapConsumer.prototype.originalPositionFor =\n\t function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n\t var needle = {\n\t generatedLine: util.getArg(aArgs, 'line'),\n\t generatedColumn: util.getArg(aArgs, 'column')\n\t };\n\n\t // Find the section containing the generated position we're trying to map\n\t // to an original position.\n\t var sectionIndex = binarySearch.search(needle, this._sections,\n\t function(needle, section) {\n\t var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n\t if (cmp) {\n\t return cmp;\n\t }\n\n\t return (needle.generatedColumn -\n\t section.generatedOffset.generatedColumn);\n\t });\n\t var section = this._sections[sectionIndex];\n\n\t if (!section) {\n\t return {\n\t source: null,\n\t line: null,\n\t column: null,\n\t name: null\n\t };\n\t }\n\n\t return section.consumer.originalPositionFor({\n\t line: needle.generatedLine -\n\t (section.generatedOffset.generatedLine - 1),\n\t column: needle.generatedColumn -\n\t (section.generatedOffset.generatedLine === needle.generatedLine\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0),\n\t bias: aArgs.bias\n\t });\n\t };\n\n\t/**\n\t * Return true if we have the source content for every source in the source\n\t * map, false otherwise.\n\t */\n\tIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n\t function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n\t return this._sections.every(function (s) {\n\t return s.consumer.hasContentsOfAllSources();\n\t });\n\t };\n\n\t/**\n\t * Returns the original source content. The only argument is the url of the\n\t * original source file. Returns null if no original source content is\n\t * available.\n\t */\n\tIndexedSourceMapConsumer.prototype.sourceContentFor =\n\t function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\n\t var content = section.consumer.sourceContentFor(aSource, true);\n\t if (content) {\n\t return content;\n\t }\n\t }\n\t if (nullOnMissing) {\n\t return null;\n\t }\n\t else {\n\t throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n\t }\n\t };\n\n\t/**\n\t * Returns the generated line and column information for the original source,\n\t * line, and column positions provided. The only argument is an object with\n\t * the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source.\n\t * - column: The column number in the original source.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null.\n\t * - column: The column number in the generated source, or null.\n\t */\n\tIndexedSourceMapConsumer.prototype.generatedPositionFor =\n\t function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\n\t // Only consider this section if the requested source is in the list of\n\t // sources of the consumer.\n\t if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {\n\t continue;\n\t }\n\t var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n\t if (generatedPosition) {\n\t var ret = {\n\t line: generatedPosition.line +\n\t (section.generatedOffset.generatedLine - 1),\n\t column: generatedPosition.column +\n\t (section.generatedOffset.generatedLine === generatedPosition.line\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0)\n\t };\n\t return ret;\n\t }\n\t }\n\n\t return {\n\t line: null,\n\t column: null\n\t };\n\t };\n\n\t/**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\tIndexedSourceMapConsumer.prototype._parseMappings =\n\t function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t this.__generatedMappings = [];\n\t this.__originalMappings = [];\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t var sectionMappings = section.consumer._generatedMappings;\n\t for (var j = 0; j < sectionMappings.length; j++) {\n\t var mapping = sectionMappings[j];\n\n\t var source = section.consumer._sources.at(mapping.source);\n\t if (section.consumer.sourceRoot !== null) {\n\t source = util.join(section.consumer.sourceRoot, source);\n\t }\n\t this._sources.add(source);\n\t source = this._sources.indexOf(source);\n\n\t var name = section.consumer._names.at(mapping.name);\n\t this._names.add(name);\n\t name = this._names.indexOf(name);\n\n\t // The mappings coming from the consumer for the section have\n\t // generated positions relative to the start of the section, so we\n\t // need to offset them to be relative to the start of the concatenated\n\t // generated file.\n\t var adjustedMapping = {\n\t source: source,\n\t generatedLine: mapping.generatedLine +\n\t (section.generatedOffset.generatedLine - 1),\n\t generatedColumn: mapping.generatedColumn +\n\t (section.generatedOffset.generatedLine === mapping.generatedLine\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0),\n\t originalLine: mapping.originalLine,\n\t originalColumn: mapping.originalColumn,\n\t name: name\n\t };\n\n\t this.__generatedMappings.push(adjustedMapping);\n\t if (typeof adjustedMapping.originalLine === 'number') {\n\t this.__originalMappings.push(adjustedMapping);\n\t }\n\t }\n\t }\n\n\t quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n\t quickSort(this.__originalMappings, util.compareByOriginalPositions);\n\t };\n\n\texports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\n\t/**\n\t * This is a helper function for getting values from parameter/options\n\t * objects.\n\t *\n\t * @param args The object we are extracting values from\n\t * @param name The name of the property we are getting.\n\t * @param defaultValue An optional value to return if the property is missing\n\t * from the object. If this is not specified and the property is missing, an\n\t * error will be thrown.\n\t */\n\tfunction getArg(aArgs, aName, aDefaultValue) {\n\t if (aName in aArgs) {\n\t return aArgs[aName];\n\t } else if (arguments.length === 3) {\n\t return aDefaultValue;\n\t } else {\n\t throw new Error('\"' + aName + '\" is a required argument.');\n\t }\n\t}\n\texports.getArg = getArg;\n\n\tvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.]*)(?::(\\d+))?(\\S*)$/;\n\tvar dataUrlRegexp = /^data:.+\\,.+$/;\n\n\tfunction urlParse(aUrl) {\n\t var match = aUrl.match(urlRegexp);\n\t if (!match) {\n\t return null;\n\t }\n\t return {\n\t scheme: match[1],\n\t auth: match[2],\n\t host: match[3],\n\t port: match[4],\n\t path: match[5]\n\t };\n\t}\n\texports.urlParse = urlParse;\n\n\tfunction urlGenerate(aParsedUrl) {\n\t var url = '';\n\t if (aParsedUrl.scheme) {\n\t url += aParsedUrl.scheme + ':';\n\t }\n\t url += '//';\n\t if (aParsedUrl.auth) {\n\t url += aParsedUrl.auth + '@';\n\t }\n\t if (aParsedUrl.host) {\n\t url += aParsedUrl.host;\n\t }\n\t if (aParsedUrl.port) {\n\t url += \":\" + aParsedUrl.port\n\t }\n\t if (aParsedUrl.path) {\n\t url += aParsedUrl.path;\n\t }\n\t return url;\n\t}\n\texports.urlGenerate = urlGenerate;\n\n\t/**\n\t * Normalizes a path, or the path portion of a URL:\n\t *\n\t * - Replaces consecutive slashes with one slash.\n\t * - Removes unnecessary '.' parts.\n\t * - Removes unnecessary '/..' parts.\n\t *\n\t * Based on code in the Node.js 'path' core module.\n\t *\n\t * @param aPath The path or url to normalize.\n\t */\n\tfunction normalize(aPath) {\n\t var path = aPath;\n\t var url = urlParse(aPath);\n\t if (url) {\n\t if (!url.path) {\n\t return aPath;\n\t }\n\t path = url.path;\n\t }\n\t var isAbsolute = exports.isAbsolute(path);\n\n\t var parts = path.split(/\\/+/);\n\t for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n\t part = parts[i];\n\t if (part === '.') {\n\t parts.splice(i, 1);\n\t } else if (part === '..') {\n\t up++;\n\t } else if (up > 0) {\n\t if (part === '') {\n\t // The first part is blank if the path is absolute. Trying to go\n\t // above the root is a no-op. Therefore we can remove all '..' parts\n\t // directly after the root.\n\t parts.splice(i + 1, up);\n\t up = 0;\n\t } else {\n\t parts.splice(i, 2);\n\t up--;\n\t }\n\t }\n\t }\n\t path = parts.join('/');\n\n\t if (path === '') {\n\t path = isAbsolute ? '/' : '.';\n\t }\n\n\t if (url) {\n\t url.path = path;\n\t return urlGenerate(url);\n\t }\n\t return path;\n\t}\n\texports.normalize = normalize;\n\n\t/**\n\t * Joins two paths/URLs.\n\t *\n\t * @param aRoot The root path or URL.\n\t * @param aPath The path or URL to be joined with the root.\n\t *\n\t * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n\t * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n\t * first.\n\t * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n\t * is updated with the result and aRoot is returned. Otherwise the result\n\t * is returned.\n\t * - If aPath is absolute, the result is aPath.\n\t * - Otherwise the two paths are joined with a slash.\n\t * - Joining for example 'http://' and 'www.example.com' is also supported.\n\t */\n\tfunction join(aRoot, aPath) {\n\t if (aRoot === \"\") {\n\t aRoot = \".\";\n\t }\n\t if (aPath === \"\") {\n\t aPath = \".\";\n\t }\n\t var aPathUrl = urlParse(aPath);\n\t var aRootUrl = urlParse(aRoot);\n\t if (aRootUrl) {\n\t aRoot = aRootUrl.path || '/';\n\t }\n\n\t // `join(foo, '//www.example.org')`\n\t if (aPathUrl && !aPathUrl.scheme) {\n\t if (aRootUrl) {\n\t aPathUrl.scheme = aRootUrl.scheme;\n\t }\n\t return urlGenerate(aPathUrl);\n\t }\n\n\t if (aPathUrl || aPath.match(dataUrlRegexp)) {\n\t return aPath;\n\t }\n\n\t // `join('http://', 'www.example.com')`\n\t if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n\t aRootUrl.host = aPath;\n\t return urlGenerate(aRootUrl);\n\t }\n\n\t var joined = aPath.charAt(0) === '/'\n\t ? aPath\n\t : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n\t if (aRootUrl) {\n\t aRootUrl.path = joined;\n\t return urlGenerate(aRootUrl);\n\t }\n\t return joined;\n\t}\n\texports.join = join;\n\n\texports.isAbsolute = function (aPath) {\n\t return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);\n\t};\n\n\t/**\n\t * Make a path relative to a URL or another path.\n\t *\n\t * @param aRoot The root path or URL.\n\t * @param aPath The path or URL to be made relative to aRoot.\n\t */\n\tfunction relative(aRoot, aPath) {\n\t if (aRoot === \"\") {\n\t aRoot = \".\";\n\t }\n\n\t aRoot = aRoot.replace(/\\/$/, '');\n\n\t // It is possible for the path to be above the root. In this case, simply\n\t // checking whether the root is a prefix of the path won't work. Instead, we\n\t // need to remove components from the root one by one, until either we find\n\t // a prefix that fits, or we run out of components to remove.\n\t var level = 0;\n\t while (aPath.indexOf(aRoot + '/') !== 0) {\n\t var index = aRoot.lastIndexOf(\"/\");\n\t if (index < 0) {\n\t return aPath;\n\t }\n\n\t // If the only part of the root that is left is the scheme (i.e. http://,\n\t // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n\t // have exhausted all components, so the path is not relative to the root.\n\t aRoot = aRoot.slice(0, index);\n\t if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n\t return aPath;\n\t }\n\n\t ++level;\n\t }\n\n\t // Make sure we add a \"../\" for each component we removed from the root.\n\t return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n\t}\n\texports.relative = relative;\n\n\tvar supportsNullProto = (function () {\n\t var obj = Object.create(null);\n\t return !('__proto__' in obj);\n\t}());\n\n\tfunction identity (s) {\n\t return s;\n\t}\n\n\t/**\n\t * Because behavior goes wacky when you set `__proto__` on objects, we\n\t * have to prefix all the strings in our set with an arbitrary character.\n\t *\n\t * See https://github.com/mozilla/source-map/pull/31 and\n\t * https://github.com/mozilla/source-map/issues/30\n\t *\n\t * @param String aStr\n\t */\n\tfunction toSetString(aStr) {\n\t if (isProtoString(aStr)) {\n\t return '$' + aStr;\n\t }\n\n\t return aStr;\n\t}\n\texports.toSetString = supportsNullProto ? identity : toSetString;\n\n\tfunction fromSetString(aStr) {\n\t if (isProtoString(aStr)) {\n\t return aStr.slice(1);\n\t }\n\n\t return aStr;\n\t}\n\texports.fromSetString = supportsNullProto ? identity : fromSetString;\n\n\tfunction isProtoString(s) {\n\t if (!s) {\n\t return false;\n\t }\n\n\t var length = s.length;\n\n\t if (length < 9 /* \"__proto__\".length */) {\n\t return false;\n\t }\n\n\t if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n\t s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n\t s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n\t s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n\t s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n\t s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n\t s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n\t s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n\t s.charCodeAt(length - 9) !== 95 /* '_' */) {\n\t return false;\n\t }\n\n\t for (var i = length - 10; i >= 0; i--) {\n\t if (s.charCodeAt(i) !== 36 /* '$' */) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t}\n\n\t/**\n\t * Comparator between two mappings where the original positions are compared.\n\t *\n\t * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n\t * mappings with the same original source/line/column, but different generated\n\t * line and column the same. Useful when searching for a mapping with a\n\t * stubbed out mapping.\n\t */\n\tfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n\t var cmp = mappingA.source - mappingB.source;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0 || onlyCompareOriginal) {\n\t return cmp;\n\t }\n\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\n\t cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\n\t return mappingA.name - mappingB.name;\n\t}\n\texports.compareByOriginalPositions = compareByOriginalPositions;\n\n\t/**\n\t * Comparator between two mappings with deflated source and name indices where\n\t * the generated positions are compared.\n\t *\n\t * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n\t * mappings with the same generated line and column, but different\n\t * source/name/original line and column the same. Useful when searching for a\n\t * mapping with a stubbed out mapping.\n\t */\n\tfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n\t var cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0 || onlyCompareGenerated) {\n\t return cmp;\n\t }\n\n\t cmp = mappingA.source - mappingB.source;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\n\t return mappingA.name - mappingB.name;\n\t}\n\texports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\n\tfunction strcmp(aStr1, aStr2) {\n\t if (aStr1 === aStr2) {\n\t return 0;\n\t }\n\n\t if (aStr1 > aStr2) {\n\t return 1;\n\t }\n\n\t return -1;\n\t}\n\n\t/**\n\t * Comparator between two mappings with inflated source and name strings where\n\t * the generated positions are compared.\n\t */\n\tfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n\t var cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\n\t cmp = strcmp(mappingA.source, mappingB.source);\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\n\t return strcmp(mappingA.name, mappingB.name);\n\t}\n\texports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\n\texports.GREATEST_LOWER_BOUND = 1;\n\texports.LEAST_UPPER_BOUND = 2;\n\n\t/**\n\t * Recursive implementation of binary search.\n\t *\n\t * @param aLow Indices here and lower do not contain the needle.\n\t * @param aHigh Indices here and higher do not contain the needle.\n\t * @param aNeedle The element being searched for.\n\t * @param aHaystack The non-empty array being searched.\n\t * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n\t * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n\t * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t */\n\tfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n\t // This function terminates when one of the following is true:\n\t //\n\t // 1. We find the exact element we are looking for.\n\t //\n\t // 2. We did not find the exact element, but we can return the index of\n\t // the next-closest element.\n\t //\n\t // 3. We did not find the exact element, and there is no next-closest\n\t // element than the one we are searching for, so we return -1.\n\t var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n\t var cmp = aCompare(aNeedle, aHaystack[mid], true);\n\t if (cmp === 0) {\n\t // Found the element we are looking for.\n\t return mid;\n\t }\n\t else if (cmp > 0) {\n\t // Our needle is greater than aHaystack[mid].\n\t if (aHigh - mid > 1) {\n\t // The element is in the upper half.\n\t return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n\t }\n\n\t // The exact needle element was not found in this haystack. Determine if\n\t // we are in termination case (3) or (2) and return the appropriate thing.\n\t if (aBias == exports.LEAST_UPPER_BOUND) {\n\t return aHigh < aHaystack.length ? aHigh : -1;\n\t } else {\n\t return mid;\n\t }\n\t }\n\t else {\n\t // Our needle is less than aHaystack[mid].\n\t if (mid - aLow > 1) {\n\t // The element is in the lower half.\n\t return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n\t }\n\n\t // we are in termination case (3) or (2) and return the appropriate thing.\n\t if (aBias == exports.LEAST_UPPER_BOUND) {\n\t return mid;\n\t } else {\n\t return aLow < 0 ? -1 : aLow;\n\t }\n\t }\n\t}\n\n\t/**\n\t * This is an implementation of binary search which will always try and return\n\t * the index of the closest element if there is no exact hit. This is because\n\t * mappings between original and generated line/col pairs are single points,\n\t * and there is an implicit region between each of them, so a miss just means\n\t * that you aren't on the very start of a region.\n\t *\n\t * @param aNeedle The element you are looking for.\n\t * @param aHaystack The array that is being searched.\n\t * @param aCompare A function which takes the needle and an element in the\n\t * array and returns -1, 0, or 1 depending on whether the needle is less\n\t * than, equal to, or greater than the element, respectively.\n\t * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n\t * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n\t */\n\texports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n\t if (aHaystack.length === 0) {\n\t return -1;\n\t }\n\n\t var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n\t aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n\t if (index < 0) {\n\t return -1;\n\t }\n\n\t // We have found either the exact element, or the next-closest element than\n\t // the one we are searching for. However, there may be more than one such\n\t // element. Make sure we always return the smallest of these.\n\t while (index - 1 >= 0) {\n\t if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n\t break;\n\t }\n\t --index;\n\t }\n\n\t return index;\n\t};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\n\tvar util = __webpack_require__(2);\n\tvar has = Object.prototype.hasOwnProperty;\n\n\t/**\n\t * A data structure which is a combination of an array and a set. Adding a new\n\t * member is O(1), testing for membership is O(1), and finding the index of an\n\t * element is O(1). Removing elements from the set is not supported. Only\n\t * strings are supported for membership.\n\t */\n\tfunction ArraySet() {\n\t this._array = [];\n\t this._set = Object.create(null);\n\t}\n\n\t/**\n\t * Static method for creating ArraySet instances from an existing array.\n\t */\n\tArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n\t var set = new ArraySet();\n\t for (var i = 0, len = aArray.length; i < len; i++) {\n\t set.add(aArray[i], aAllowDuplicates);\n\t }\n\t return set;\n\t};\n\n\t/**\n\t * Return how many unique items are in this ArraySet. If duplicates have been\n\t * added, than those do not count towards the size.\n\t *\n\t * @returns Number\n\t */\n\tArraySet.prototype.size = function ArraySet_size() {\n\t return Object.getOwnPropertyNames(this._set).length;\n\t};\n\n\t/**\n\t * Add the given string to this set.\n\t *\n\t * @param String aStr\n\t */\n\tArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n\t var sStr = util.toSetString(aStr);\n\t var isDuplicate = has.call(this._set, sStr);\n\t var idx = this._array.length;\n\t if (!isDuplicate || aAllowDuplicates) {\n\t this._array.push(aStr);\n\t }\n\t if (!isDuplicate) {\n\t this._set[sStr] = idx;\n\t }\n\t};\n\n\t/**\n\t * Is the given string a member of this set?\n\t *\n\t * @param String aStr\n\t */\n\tArraySet.prototype.has = function ArraySet_has(aStr) {\n\t var sStr = util.toSetString(aStr);\n\t return has.call(this._set, sStr);\n\t};\n\n\t/**\n\t * What is the index of the given string in the array?\n\t *\n\t * @param String aStr\n\t */\n\tArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n\t var sStr = util.toSetString(aStr);\n\t if (has.call(this._set, sStr)) {\n\t return this._set[sStr];\n\t }\n\t throw new Error('\"' + aStr + '\" is not in the set.');\n\t};\n\n\t/**\n\t * What is the element at the given index?\n\t *\n\t * @param Number aIdx\n\t */\n\tArraySet.prototype.at = function ArraySet_at(aIdx) {\n\t if (aIdx >= 0 && aIdx < this._array.length) {\n\t return this._array[aIdx];\n\t }\n\t throw new Error('No element indexed by ' + aIdx);\n\t};\n\n\t/**\n\t * Returns the array representation of this set (which has the proper indices\n\t * indicated by indexOf). Note that this is a copy of the internal array used\n\t * for storing the members so that no one can mess with internal state.\n\t */\n\tArraySet.prototype.toArray = function ArraySet_toArray() {\n\t return this._array.slice();\n\t};\n\n\texports.ArraySet = ArraySet;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t *\n\t * Based on the Base 64 VLQ implementation in Closure Compiler:\n\t * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n\t *\n\t * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n\t * Redistribution and use in source and binary forms, with or without\n\t * modification, are permitted provided that the following conditions are\n\t * met:\n\t *\n\t * * Redistributions of source code must retain the above copyright\n\t * notice, this list of conditions and the following disclaimer.\n\t * * Redistributions in binary form must reproduce the above\n\t * copyright notice, this list of conditions and the following\n\t * disclaimer in the documentation and/or other materials provided\n\t * with the distribution.\n\t * * Neither the name of Google Inc. nor the names of its\n\t * contributors may be used to endorse or promote products derived\n\t * from this software without specific prior written permission.\n\t *\n\t * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\t * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n\t * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n\t * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n\t * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n\t * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n\t * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n\t * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n\t * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n\t * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t */\n\n\tvar base64 = __webpack_require__(6);\n\n\t// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n\t// length quantities we use in the source map spec, the first bit is the sign,\n\t// the next four bits are the actual value, and the 6th bit is the\n\t// continuation bit. The continuation bit tells us whether there are more\n\t// digits in this value following this digit.\n\t//\n\t// Continuation\n\t// | Sign\n\t// | |\n\t// V V\n\t// 101011\n\n\tvar VLQ_BASE_SHIFT = 5;\n\n\t// binary: 100000\n\tvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n\t// binary: 011111\n\tvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n\t// binary: 100000\n\tvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n\t/**\n\t * Converts from a two-complement value to a value where the sign bit is\n\t * placed in the least significant bit. For example, as decimals:\n\t * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n\t * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n\t */\n\tfunction toVLQSigned(aValue) {\n\t return aValue < 0\n\t ? ((-aValue) << 1) + 1\n\t : (aValue << 1) + 0;\n\t}\n\n\t/**\n\t * Converts to a two-complement value from a value where the sign bit is\n\t * placed in the least significant bit. For example, as decimals:\n\t * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n\t * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n\t */\n\tfunction fromVLQSigned(aValue) {\n\t var isNegative = (aValue & 1) === 1;\n\t var shifted = aValue >> 1;\n\t return isNegative\n\t ? -shifted\n\t : shifted;\n\t}\n\n\t/**\n\t * Returns the base 64 VLQ encoded value.\n\t */\n\texports.encode = function base64VLQ_encode(aValue) {\n\t var encoded = \"\";\n\t var digit;\n\n\t var vlq = toVLQSigned(aValue);\n\n\t do {\n\t digit = vlq & VLQ_BASE_MASK;\n\t vlq >>>= VLQ_BASE_SHIFT;\n\t if (vlq > 0) {\n\t // There are still more digits in this value, so we must make sure the\n\t // continuation bit is marked.\n\t digit |= VLQ_CONTINUATION_BIT;\n\t }\n\t encoded += base64.encode(digit);\n\t } while (vlq > 0);\n\n\t return encoded;\n\t};\n\n\t/**\n\t * Decodes the next base 64 VLQ value from the given string and returns the\n\t * value and the rest of the string via the out parameter.\n\t */\n\texports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n\t var strLen = aStr.length;\n\t var result = 0;\n\t var shift = 0;\n\t var continuation, digit;\n\n\t do {\n\t if (aIndex >= strLen) {\n\t throw new Error(\"Expected more digits in base 64 VLQ value.\");\n\t }\n\n\t digit = base64.decode(aStr.charCodeAt(aIndex++));\n\t if (digit === -1) {\n\t throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n\t }\n\n\t continuation = !!(digit & VLQ_CONTINUATION_BIT);\n\t digit &= VLQ_BASE_MASK;\n\t result = result + (digit << shift);\n\t shift += VLQ_BASE_SHIFT;\n\t } while (continuation);\n\n\t aOutParam.value = fromVLQSigned(result);\n\t aOutParam.rest = aIndex;\n\t};\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\n\tvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n\t/**\n\t * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n\t */\n\texports.encode = function (number) {\n\t if (0 <= number && number < intToCharMap.length) {\n\t return intToCharMap[number];\n\t }\n\t throw new TypeError(\"Must be between 0 and 63: \" + number);\n\t};\n\n\t/**\n\t * Decode a single base 64 character code digit to an integer. Returns -1 on\n\t * failure.\n\t */\n\texports.decode = function (charCode) {\n\t var bigA = 65; // 'A'\n\t var bigZ = 90; // 'Z'\n\n\t var littleA = 97; // 'a'\n\t var littleZ = 122; // 'z'\n\n\t var zero = 48; // '0'\n\t var nine = 57; // '9'\n\n\t var plus = 43; // '+'\n\t var slash = 47; // '/'\n\n\t var littleOffset = 26;\n\t var numberOffset = 52;\n\n\t // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n\t if (bigA <= charCode && charCode <= bigZ) {\n\t return (charCode - bigA);\n\t }\n\n\t // 26 - 51: abcdefghijklmnopqrstuvwxyz\n\t if (littleA <= charCode && charCode <= littleZ) {\n\t return (charCode - littleA + littleOffset);\n\t }\n\n\t // 52 - 61: 0123456789\n\t if (zero <= charCode && charCode <= nine) {\n\t return (charCode - zero + numberOffset);\n\t }\n\n\t // 62: +\n\t if (charCode == plus) {\n\t return 62;\n\t }\n\n\t // 63: /\n\t if (charCode == slash) {\n\t return 63;\n\t }\n\n\t // Invalid base64 digit.\n\t return -1;\n\t};\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\n\t// It turns out that some (most?) JavaScript engines don't self-host\n\t// `Array.prototype.sort`. This makes sense because C++ will likely remain\n\t// faster than JS when doing raw CPU-intensive sorting. However, when using a\n\t// custom comparator function, calling back and forth between the VM's C++ and\n\t// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n\t// worse generated code for the comparator function than would be optimal. In\n\t// fact, when sorting with a comparator, these costs outweigh the benefits of\n\t// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n\t// a ~3500ms mean speed-up in `bench/bench.html`.\n\n\t/**\n\t * Swap the elements indexed by `x` and `y` in the array `ary`.\n\t *\n\t * @param {Array} ary\n\t * The array.\n\t * @param {Number} x\n\t * The index of the first item.\n\t * @param {Number} y\n\t * The index of the second item.\n\t */\n\tfunction swap(ary, x, y) {\n\t var temp = ary[x];\n\t ary[x] = ary[y];\n\t ary[y] = temp;\n\t}\n\n\t/**\n\t * Returns a random integer within the range `low .. high` inclusive.\n\t *\n\t * @param {Number} low\n\t * The lower bound on the range.\n\t * @param {Number} high\n\t * The upper bound on the range.\n\t */\n\tfunction randomIntInRange(low, high) {\n\t return Math.round(low + (Math.random() * (high - low)));\n\t}\n\n\t/**\n\t * The Quick Sort algorithm.\n\t *\n\t * @param {Array} ary\n\t * An array to sort.\n\t * @param {function} comparator\n\t * Function to use to compare two items.\n\t * @param {Number} p\n\t * Start index of the array\n\t * @param {Number} r\n\t * End index of the array\n\t */\n\tfunction doQuickSort(ary, comparator, p, r) {\n\t // If our lower bound is less than our upper bound, we (1) partition the\n\t // array into two pieces and (2) recurse on each half. If it is not, this is\n\t // the empty array and our base case.\n\n\t if (p < r) {\n\t // (1) Partitioning.\n\t //\n\t // The partitioning chooses a pivot between `p` and `r` and moves all\n\t // elements that are less than or equal to the pivot to the before it, and\n\t // all the elements that are greater than it after it. The effect is that\n\t // once partition is done, the pivot is in the exact place it will be when\n\t // the array is put in sorted order, and it will not need to be moved\n\t // again. This runs in O(n) time.\n\n\t // Always choose a random pivot so that an input array which is reverse\n\t // sorted does not cause O(n^2) running time.\n\t var pivotIndex = randomIntInRange(p, r);\n\t var i = p - 1;\n\n\t swap(ary, pivotIndex, r);\n\t var pivot = ary[r];\n\n\t // Immediately after `j` is incremented in this loop, the following hold\n\t // true:\n\t //\n\t // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n\t //\n\t // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n\t for (var j = p; j < r; j++) {\n\t if (comparator(ary[j], pivot) <= 0) {\n\t i += 1;\n\t swap(ary, i, j);\n\t }\n\t }\n\n\t swap(ary, i + 1, j);\n\t var q = i + 1;\n\n\t // (2) Recurse on each half.\n\n\t doQuickSort(ary, comparator, p, q - 1);\n\t doQuickSort(ary, comparator, q + 1, r);\n\t }\n\t}\n\n\t/**\n\t * Sort the given array in-place with the given comparator function.\n\t *\n\t * @param {Array} ary\n\t * An array to sort.\n\t * @param {function} comparator\n\t * Function to use to compare two items.\n\t */\n\texports.quickSort = function (ary, comparator) {\n\t doQuickSort(ary, comparator, 0, ary.length - 1);\n\t};\n\n\n/***/ })\n/******/ ])\n});\n;","import type { MapStateToPropsHOF, MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\nimport type { CollapsableKey } from 'state/clientWorkspace/clientWorkspaceModel';\n\nexport interface CollapsableConnectOwnProps {\n quoteId: string;\n keyName: CollapsableKey;\n}\n\nexport interface CollapsableConnectStateProps {\n isCollapsed: boolean;\n}\n\nexport interface CollapsableConnectDispatchProps {\n toggleCollapsed(): void;\n}\n\nexport type CollapsableConnectSelectorsKeys = 'isKeyCollapsedInTile';\nexport type CollapsableConnectSelectors = Pick;\n\nexport const mapStateToPropsCollapsable: MapStateToPropsHOF<\n CollapsableConnectStateProps,\n CollapsableConnectOwnProps,\n AppState,\n CollapsableConnectSelectors\n> =\n sl =>\n (state, { quoteId, keyName }) => ({\n isCollapsed: sl.isKeyCollapsedInTile(state, quoteId, keyName),\n });\n\nexport type CollapsableConnectActionCreatorsKeys = 'toggleCollapsed';\nexport type CollapsableConnectActionCreators = Pick<\n ActionCreators,\n CollapsableConnectActionCreatorsKeys\n>;\n\nexport const mapDispatchToPropsCollapsable: MapDispatchToPropsHOF<\n CollapsableConnectDispatchProps,\n CollapsableConnectOwnProps,\n CollapsableConnectActionCreators\n> =\n ac =>\n (dispatch, { quoteId, keyName }) => ({\n toggleCollapsed() {\n dispatch(ac.toggleCollapsed(quoteId, keyName));\n },\n });\n","import { createContext, useContext, type ComponentType } from 'react';\nimport type { StrictOmit } from 'utils/object';\n\nexport function genericContext(key: K, defaultValue: T) {\n const pascalCasedKey = key.charAt(0).toUpperCase() + key.slice(1);\n const withDisplayName = `With${pascalCasedKey}`;\n\n const GenericContext = createContext(defaultValue);\n GenericContext.displayName = `${pascalCasedKey}Context`;\n\n type ComponentWithoutContextValue

> = ComponentType>;\n\n const withValue =

>(Component: ComponentType

) => {\n const WithValue: ComponentWithoutContextValue

= props => {\n const value = useContext(GenericContext);\n const genericProp = { [key]: value };\n return ;\n };\n WithValue.displayName = withDisplayName;\n return WithValue;\n };\n\n return [GenericContext, GenericContext.Provider, withValue] as const;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createSafeContextWithHoC = exports.createSafeContext = void 0;\nconst jsx_runtime_1 = require(\"react/jsx-runtime\");\nconst react_1 = require(\"react\");\nconst uninitializedValue = Symbol('Uninitialized context value');\n/**\n * Create a tuple containing a React context provider and a hook to access its value\n * @param identifier a camel case identifier which will be used for the context `displayName`\n * @param initialValue a non null value which will be passed to `React.createContext` if present\n * @returns A tuple containing a React context provider and a value accessor hook\n * @throws The value accessor hook will throw if no `initialValue` was provided and there is no context provider in its parents\n * @example const [ValueProvider, useValue] = createSafeContext('value');\n * const [ValueProvider, useValue] = createSafeContext('value', 'default');\n * @description For these 2 examples, `ValueProvider.displayName === 'ValueContext.Provider'`\n */\nfunction createSafeContext(identifier, initialValue) {\n const pascalCasedIdentifier = identifier.charAt(0).toUpperCase() + identifier.slice(1);\n const GenericContext = (0, react_1.createContext)(initialValue !== null && initialValue !== void 0 ? initialValue : uninitializedValue);\n GenericContext.displayName = `${pascalCasedIdentifier}Context`;\n function useGenericContext() {\n const value = (0, react_1.useContext)(GenericContext);\n if (value === uninitializedValue) {\n throw new Error(`use${pascalCasedIdentifier} needs a ${pascalCasedIdentifier}Provider in its ancestors`);\n }\n return value;\n }\n return [GenericContext.Provider, useGenericContext];\n}\nexports.createSafeContext = createSafeContext;\n/**\n * @see {@link createSafeContext} for parameters explanation\n * @returns A tuple containing a React context provider, a value accessor hook and a higher-order component which will pass the context value as a prop to the wrapped component\n * @deprecated Use {@link createSafeContext} when you don't need a higher-order component for this context\n */\nfunction createSafeContextWithHoC(key, initialValue) {\n const [SafeContextProvider, useSafeContextValue] = createSafeContext(key, initialValue);\n const withValue = makeWithContextValue(useSafeContextValue, key);\n return [SafeContextProvider, useSafeContextValue, withValue];\n}\nexports.createSafeContextWithHoC = createSafeContextWithHoC;\nfunction makeWithContextValue(contextValueGetter, key) {\n const pascalCasedKey = key.charAt(0).toUpperCase() + key.slice(1);\n const withDisplayName = `With${pascalCasedKey}`;\n return function withValue(Component) {\n const WithValue = (props) => {\n const value = contextValueGetter();\n const genericProp = { [key]: value };\n return (0, jsx_runtime_1.jsx)(Component, Object.assign({}, props, genericProp));\n };\n WithValue.displayName = withDisplayName;\n return WithValue;\n };\n}\n//# sourceMappingURL=context.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lazyWithRetry = exports.retryLazy = void 0;\nconst react_1 = require(\"react\");\n/**\n * Retry loading import once on failure\n * @param factory Factory that returns the import promise\n * @returns the import promise\n */\nfunction retryLazy(factory) {\n return factory().catch((e) => {\n lazyWithRetry.logCallback('Could not load component, retrying once {error}', e);\n return factory();\n });\n}\nexports.retryLazy = retryLazy;\n/**\n * Wrapper on `React.lazy` which will retry the import exactly once after it has failed\n * @param factory The same factory accepted by `React.lazy`\n * @throws When the 2 attempts of loading the component have failed\n * @returns The exotic component returned by `React.lazy`\n */\nfunction lazyWithRetry(factory) {\n return (0, react_1.lazy)(() => retryLazy(factory));\n}\nexports.lazyWithRetry = lazyWithRetry;\n/**\n * Default logCallback\n * @param message {string} the error message\n * @param error the error returned when trying to load the component\n */\nlazyWithRetry.logCallback = console.warn;\n//# sourceMappingURL=lazy.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lazyWithRetry = void 0;\n__exportStar(require(\"./context\"), exports);\nvar lazy_1 = require(\"./lazy\");\nObject.defineProperty(exports, \"lazyWithRetry\", { enumerable: true, get: function () { return lazy_1.lazyWithRetry; } });\n//# sourceMappingURL=index.js.map","import { createSafeContext } from '@sgme/react';\nimport { useContext } from 'react';\nimport { genericContext } from './GenericContext';\n\nexport interface StrategyCommonOwnProps {\n quoteId: string;\n legId?: string;\n}\n\n// ██████╗ ██╗ ██╗ ██████╗ ████████╗███████╗\n// ██╔═══██╗██║ ██║██╔═══██╗╚══██╔══╝██╔════╝\n// ██║ ██║██║ ██║██║ ██║ ██║ █████╗\n// ██║▄▄ ██║██║ ██║██║ ██║ ██║ ██╔══╝\n// ╚██████╔╝╚██████╔╝╚██████╔╝ ██║ ███████╗\n// ╚══▀▀═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚══════╝\n\nexport const [QuoteIdContext, QuoteIdProvider, withQuoteId] = genericContext(\n 'quoteId',\n '@@_MISSING_QUOTEID_PROVIDER',\n);\n\n// ██╗ ███████╗ ██████╗\n// ██║ ██╔════╝██╔════╝\n// ██║ █████╗ ██║ ███╗\n// ██║ ██╔══╝ ██║ ██║\n// ███████╗███████╗╚██████╔╝\n// ╚══════╝╚══════╝ ╚═════╝\n\nexport const [LegIdContext, LegIdProvider, withLegId] = genericContext(\n 'legId',\n '@@_MISSING_LEGID_PROVIDER',\n);\n\nexport const withQuoteAndLegIds =

(\n Component: React.ComponentType

,\n) => {\n const WithQuoteAndLegIds: React.ComponentType> = props => {\n const quoteId = useContext(QuoteIdContext);\n const legId = useContext(LegIdContext);\n\n return ;\n };\n\n WithQuoteAndLegIds.displayName = 'ComponentWithQuoteAndLegIds';\n\n return WithQuoteAndLegIds;\n};\n\n// ██╗ ██╗███████╗██████╗ ██████╗ ███████╗\n// ██║ ██║██╔════╝██╔══██╗██╔════╝ ██╔════╝\n// ███████║█████╗ ██║ ██║██║ ███╗█████╗\n// ██╔══██║██╔══╝ ██║ ██║██║ ██║██╔══╝\n// ██║ ██║███████╗██████╔╝╚██████╔╝███████╗\n// ╚═╝ ╚═╝╚══════╝╚═════╝ ╚═════╝ ╚══════╝\n\nexport const [HedgeIdContext, HedgeIdProvider, withHedgeId] = genericContext<\n 'hedgeId',\n string | undefined\n>('hedgeId', '@@_MISSING_HEDGEID_PROVIDER');\n\nexport const [GroupIdProvider, useGroupId] = createSafeContext('groupId');\n\nexport const withQuoteAndHedgeIds =

(\n Component: React.ComponentType

,\n) => {\n const WithQuoteAndHedgeIds: React.ComponentType> = props => {\n const quoteId = useContext(QuoteIdContext);\n const hedgeId = useContext(HedgeIdContext);\n\n return ;\n };\n\n WithQuoteAndHedgeIds.displayName = 'ComponentWithQuoteAndHedgeIds';\n\n return WithQuoteAndHedgeIds;\n};\n","import type { FormDomain } from 'state/referenceData';\nimport { genericContext } from './GenericContext';\n\nexport {\n withQuoteAndLegIds,\n QuoteIdContext,\n QuoteIdProvider,\n withQuoteId,\n LegIdContext,\n LegIdProvider,\n withLegId,\n} from './QuoteAndLegIdsContext';\n\nexport const [IndexContext, IndexProvider, withIndex] = genericContext('index', -1);\n\nexport const [WorkspaceIdContext, WorkspaceIdProvider, withWorkspaceId] = genericContext(\n 'workspaceId',\n '@@_MISSING_WORKSPACEID_PROVIDER',\n);\n\nconst defaultLegIds: readonly string[] = [];\nexport const [LegIdsContext, LegIdsProvider, withLegIds] = genericContext('legIds', defaultLegIds);\n\nexport const [InstrumentContext, InstrumentProvider, withInstrument] = genericContext<\n 'instrument',\n FormDomain | undefined\n>('instrument', undefined);\n\nexport const [GrowlIdContext, GrowlIdProvider, withGrowlId] = genericContext(\n 'growlId',\n '@@_MISSING_GROWLID_PROVIDER',\n);\n\nexport const [IsZoomedContext, IsZoomedProvider, withIsZoomed] = genericContext<\n 'isZoomed',\n boolean\n>('isZoomed', false);\n\nexport const [IsCollapsedContext, IsCollapsedProvider, withIsCollapsed] = genericContext<\n 'isCollapsed',\n boolean\n>('isCollapsed', false);\n","import type * as React from 'react';\nimport { connect, type MapStateToPropsParam, type MapDispatchToProps } from 'react-redux';\nimport type { Dispatch } from 'redux';\nimport type { RenderPropChildren } from 'typings/utils';\n\ntype RenderPropFunctionComponent = React.FunctionComponent & P>;\n\ninterface DispatchProps {\n dispatch: Dispatch;\n}\n\nfunction _renderPropsConnect(\n mapStateToProps: MapStateToPropsParam,\n mapDispatchToProps: MapDispatchToProps,\n): RenderPropFunctionComponent {\n return connect(\n mapStateToProps,\n mapDispatchToProps,\n )(({ children, ...rest }: any) => children(rest)) as any;\n}\n\nexport interface RenderPropsConnect {\n (): RenderPropFunctionComponent<{}, DispatchProps>;\n\n (\n mapStateToProps: MapStateToPropsParam,\n ): RenderPropFunctionComponent;\n\n (\n mapStateToProps: null | undefined,\n mapDispatchToProps: MapDispatchToProps,\n ): RenderPropFunctionComponent;\n\n (\n mapStateToProps: MapStateToPropsParam,\n mapDispatchToProps: MapDispatchToProps,\n ): RenderPropFunctionComponent<\n TOwnProps,\n TStateProps & TDispatchProps & TOwnProps & DispatchProps\n >;\n}\n\nexport const renderPropsConnect: RenderPropsConnect = _renderPropsConnect as any;\n","import type { AlertLevel, VisualEmphasis } from './typings';\n\n/**\n * @todo\n * expose this file at the root of the repo\n * for shared access to a single source of truth\n * from e2e and application\n */\nfunction stringOrUndefined(\n fn: (a: string) => string,\n): (a: string | undefined) => string | undefined {\n return a => (a === undefined ? undefined : fn(a));\n}\n\nexport const tile = stringOrUndefined((e2e: string) => `${e2e}-tile`);\nexport const growl = stringOrUndefined((e2e: string) => `${e2e}-growl`);\nexport const tileWrapper = () => `tile`;\nexport const overlay = stringOrUndefined((e2e: string) => `${e2e}-overlay`);\nexport const errorPanel = stringOrUndefined((e2e: string) => `${e2e}-errorPanel`);\nexport const collapsable = stringOrUndefined((e2e: string) => `${e2e}-collapsable`);\nexport const rate = stringOrUndefined((e2e: string) => `${e2e.toLowerCase()}-rate`);\nexport const input = stringOrUndefined((e2e: string) => `${e2e}Input`);\nexport const checkBox = stringOrUndefined((e2e: string) => `${e2e}-checkbox`);\nexport const button = stringOrUndefined((e2e: string) => `${e2e}-btn`);\nexport const tenor = stringOrUndefined((e2e: string) => `${e2e}-tenor`);\nexport const selector = stringOrUndefined((e2e: string) => `${e2e}-selector`);\nexport const itemSelector = stringOrUndefined((e2e: string) => `${e2e}-item-selector`);\nexport const label = stringOrUndefined((e2e: string) => `${e2e}-label`);\nexport const price = stringOrUndefined((e2e: string) => `${e2e}-price`);\nexport const field = stringOrUndefined((e2e: string) => `${e2e}-field`);\nexport const message = stringOrUndefined((e2e: string) => `${e2e}-message`);\nexport const text = stringOrUndefined((e2e: string) => `${e2e}-text`);\nexport const item = stringOrUndefined((e2e: string) => `${e2e}-item`);\nexport const chip = stringOrUndefined((e2e: string) => `${e2e}-chip`);\nexport const container = stringOrUndefined((e2e: string) => `${e2e}-container`);\nexport const margin = stringOrUndefined((e2e: string) => `${e2e}-margin`);\nexport const tab = stringOrUndefined((e2e: string) => `${e2e}-tab`);\nexport const menu = stringOrUndefined((e2e: string) => `${e2e}-menu`);\nexport const menuItem = stringOrUndefined((e2e: string) => `${e2e}-menu-item`);\n\nconst inputLevelE2eHandle: Record = {\n warning: 'warning',\n invalid: 'error',\n valid: 'valid',\n};\nexport const inputErrorLevel = (alertLevel?: AlertLevel) =>\n alertLevel === undefined ? '' : inputLevelE2eHandle[alertLevel];\nconst buttonLevelE2eHandle: Record = {\n none: undefined,\n table: undefined,\n default: undefined,\n readonly: undefined,\n warning: 'warning',\n error: 'error',\n info: 'info',\n success: 'success',\n};\nexport const buttonErrorLevel = (emphasis: VisualEmphasis = 'none') =>\n buttonLevelE2eHandle[emphasis];\n\nexport const cancelPricing = button('cancel-pricing');\nexport const spotMid = text('spot-mid');\n\nexport const currenciesErrorLevel = (hasError: boolean, hasWarning: boolean) => {\n if (hasError === true) {\n return inputErrorLevel('invalid');\n }\n if (hasWarning === true) {\n return inputErrorLevel('warning');\n }\n return '';\n};\n\nexport const isModifiedHandleValue = (isModified?: boolean) => isModified ?? false;\n","import { useState, useCallback, useEffect, useRef } from 'react';\n\ntype Timeout = ReturnType;\ntype ToggleTuple = [isOpen: boolean, toggle: () => void, close: (delay?: number) => void];\n\n/**\n * Returns a stateful boolean, a function to toggle it, and a function to set it to false after an optional delay\n */\nexport const useToggle = (initial = false): ToggleTuple => {\n const [state, setState] = useState(initial ?? undefined);\n const handle = useRef();\n\n const toggle = useCallback(() => setState(s => !s), []);\n const close = useCallback((delay?: number) => {\n clean();\n // eslint-disable-next-line no-unused-expressions\n delay === undefined ? closeNow() : (handle.current = setTimeout(closeNow, delay));\n }, []);\n\n const closeNow = () => setState(false);\n const clean = () => clearTimeout(handle.current as Timeout);\n useEffect(() => clean, []);\n\n return [state, toggle, close];\n};\n","import type { CollapsableProps } from './typings';\nimport { noop } from '@sgme/fp';\nimport { collapsable } from 'components/Form/Inputs/e2e';\nimport { useToggle } from 'components/share/hooks/useToggle';\n\nexport const CollapsableComponent: React.ComponentType = ({\n isCollapsed,\n toggleCollapsed,\n disabled = false,\n title,\n children,\n e2eHandle,\n}) => (\n <>\n

\n
\n
\n \n {title}\n {disabled === false && keyboard_arrow_down}\n \n
\n
\n
\n {isCollapsed === true || disabled === true ? null : children}\n \n);\n\nexport const UncontrolledCollapsable: React.FunctionComponent<\n Omit & {\n collapsed?: boolean;\n }\n> = ({ collapsed, ...props }) => {\n const [isCollapsed, toggleCollapsed] = useToggle(collapsed);\n return (\n \n );\n};\n","interface AccumulatorCollapseButtonProps {\n isCollapsed: boolean;\n}\n\nexport function AccumulatorCollapseButton({ isCollapsed }: AccumulatorCollapseButtonProps) {\n return (\n \n );\n}\n","function stylis_min (W) {\n function M(d, c, e, h, a) {\n for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n g = e.charCodeAt(l);\n l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n if (0 === b + n + v + m) {\n if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n switch (g) {\n case 32:\n case 9:\n case 59:\n case 13:\n case 10:\n break;\n\n default:\n f += e.charAt(l);\n }\n\n g = 59;\n }\n\n switch (g) {\n case 123:\n f = f.trim();\n q = f.charCodeAt(0);\n k = 1;\n\n for (t = ++l; l < B;) {\n switch (g = e.charCodeAt(l)) {\n case 123:\n k++;\n break;\n\n case 125:\n k--;\n break;\n\n case 47:\n switch (g = e.charCodeAt(l + 1)) {\n case 42:\n case 47:\n a: {\n for (u = l + 1; u < J; ++u) {\n switch (e.charCodeAt(u)) {\n case 47:\n if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n l = u + 1;\n break a;\n }\n\n break;\n\n case 10:\n if (47 === g) {\n l = u + 1;\n break a;\n }\n\n }\n }\n\n l = u;\n }\n\n }\n\n break;\n\n case 91:\n g++;\n\n case 40:\n g++;\n\n case 34:\n case 39:\n for (; l++ < J && e.charCodeAt(l) !== g;) {\n }\n\n }\n\n if (0 === k) break;\n l++;\n }\n\n k = e.substring(t, l);\n 0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n switch (q) {\n case 64:\n 0 < r && (f = f.replace(N, ''));\n g = f.charCodeAt(1);\n\n switch (g) {\n case 100:\n case 109:\n case 115:\n case 45:\n r = c;\n break;\n\n default:\n r = O;\n }\n\n k = M(c, r, k, g, a + 1);\n t = k.length;\n 0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n if (0 < t) switch (g) {\n case 115:\n f = f.replace(da, ea);\n\n case 100:\n case 109:\n case 45:\n k = f + '{' + k + '}';\n break;\n\n case 107:\n f = f.replace(fa, '$1 $2');\n k = f + '{' + k + '}';\n k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n break;\n\n default:\n k = f + k, 112 === h && (k = (p += k, ''));\n } else k = '';\n break;\n\n default:\n k = M(c, X(c, f, I), k, h, a + 1);\n }\n\n F += k;\n k = I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n break;\n\n case 125:\n case 59:\n f = (0 < r ? f.replace(N, '') : f).trim();\n if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n case 0:\n break;\n\n case 64:\n if (105 === g || 99 === g) {\n G += f + e.charAt(l);\n break;\n }\n\n default:\n 58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n }\n I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n }\n }\n\n switch (g) {\n case 13:\n case 10:\n 47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n 0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n z = 1;\n D++;\n break;\n\n case 59:\n case 125:\n if (0 === b + n + v + m) {\n z++;\n break;\n }\n\n default:\n z++;\n y = e.charAt(l);\n\n switch (g) {\n case 9:\n case 32:\n if (0 === n + m + b) switch (x) {\n case 44:\n case 58:\n case 9:\n case 32:\n y = '';\n break;\n\n default:\n 32 !== g && (y = ' ');\n }\n break;\n\n case 0:\n y = '\\\\0';\n break;\n\n case 12:\n y = '\\\\f';\n break;\n\n case 11:\n y = '\\\\v';\n break;\n\n case 38:\n 0 === n + b + m && (r = I = 1, y = '\\f' + y);\n break;\n\n case 108:\n if (0 === n + b + m + E && 0 < u) switch (l - u) {\n case 2:\n 112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n case 8:\n 111 === K && (E = K);\n }\n break;\n\n case 58:\n 0 === n + b + m && (u = l);\n break;\n\n case 44:\n 0 === b + v + n + m && (r = 1, y += '\\r');\n break;\n\n case 34:\n case 39:\n 0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n break;\n\n case 91:\n 0 === n + b + v && m++;\n break;\n\n case 93:\n 0 === n + b + v && m--;\n break;\n\n case 41:\n 0 === n + b + m && v--;\n break;\n\n case 40:\n if (0 === n + b + m) {\n if (0 === q) switch (2 * x + 3 * K) {\n case 533:\n break;\n\n default:\n q = 1;\n }\n v++;\n }\n\n break;\n\n case 64:\n 0 === b + v + n + m + u + k && (k = 1);\n break;\n\n case 42:\n case 47:\n if (!(0 < n + m + v)) switch (b) {\n case 0:\n switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n case 235:\n b = 47;\n break;\n\n case 220:\n t = l, b = 42;\n }\n\n break;\n\n case 42:\n 47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n }\n }\n\n 0 === b && (f += y);\n }\n\n K = x;\n x = g;\n l++;\n }\n\n t = p.length;\n\n if (0 < t) {\n r = c;\n if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n p = r.join(',') + '{' + p + '}';\n\n if (0 !== w * E) {\n 2 !== w || L(p, 2) || (E = 0);\n\n switch (E) {\n case 111:\n p = p.replace(ha, ':-moz-$1') + p;\n break;\n\n case 112:\n p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n }\n\n E = 0;\n }\n }\n\n return G + p + F;\n }\n\n function X(d, c, e) {\n var h = c.trim().split(ia);\n c = h;\n var a = h.length,\n m = d.length;\n\n switch (m) {\n case 0:\n case 1:\n var b = 0;\n\n for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n c[b] = Z(d, c[b], e).trim();\n }\n\n break;\n\n default:\n var v = b = 0;\n\n for (c = []; b < a; ++b) {\n for (var n = 0; n < m; ++n) {\n c[v++] = Z(d[n] + ' ', h[b], e).trim();\n }\n }\n\n }\n\n return c;\n }\n\n function Z(d, c, e) {\n var h = c.charCodeAt(0);\n 33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n switch (h) {\n case 38:\n return c.replace(F, '$1' + d.trim());\n\n case 58:\n return d.trim() + c.replace(F, '$1' + d.trim());\n\n default:\n if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n }\n\n return d + c;\n }\n\n function P(d, c, e, h) {\n var a = d + ';',\n m = 2 * c + 3 * e + 4 * h;\n\n if (944 === m) {\n d = a.indexOf(':', 9) + 1;\n var b = a.substring(d, a.length - 1).trim();\n b = a.substring(0, d).trim() + b + ';';\n return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n }\n\n if (0 === w || 2 === w && !L(a, 1)) return a;\n\n switch (m) {\n case 1015:\n return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n case 951:\n return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n case 963:\n return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n case 1009:\n if (100 !== a.charCodeAt(4)) break;\n\n case 969:\n case 942:\n return '-webkit-' + a + a;\n\n case 978:\n return '-webkit-' + a + '-moz-' + a + a;\n\n case 1019:\n case 983:\n return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n case 883:\n if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n break;\n\n case 932:\n if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n case 103:\n return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n case 115:\n return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n case 98:\n return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n }\n return '-webkit-' + a + '-ms-' + a + a;\n\n case 964:\n return '-webkit-' + a + '-ms-flex-' + a + a;\n\n case 1023:\n if (99 !== a.charCodeAt(8)) break;\n b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n case 1005:\n return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n case 1e3:\n b = a.substring(13).trim();\n c = b.indexOf('-') + 1;\n\n switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n case 226:\n b = a.replace(G, 'tb');\n break;\n\n case 232:\n b = a.replace(G, 'tb-rl');\n break;\n\n case 220:\n b = a.replace(G, 'lr');\n break;\n\n default:\n return a;\n }\n\n return '-webkit-' + a + '-ms-' + b + a;\n\n case 1017:\n if (-1 === a.indexOf('sticky', 9)) break;\n\n case 975:\n c = (a = d).length - 10;\n b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n case 203:\n if (111 > b.charCodeAt(8)) break;\n\n case 115:\n a = a.replace(b, '-webkit-' + b) + ';' + a;\n break;\n\n case 207:\n case 102:\n a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n }\n\n return a + ';';\n\n case 938:\n if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n case 105:\n return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n case 115:\n return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n default:\n return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n }\n break;\n\n case 973:\n case 989:\n if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n case 931:\n case 953:\n if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n break;\n\n case 962:\n if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n }\n\n return a;\n }\n\n function L(d, c) {\n var e = d.indexOf(1 === c ? ':' : '{'),\n h = d.substring(0, 3 !== c ? e : 10);\n e = d.substring(e + 1, d.length - 1);\n return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n }\n\n function ea(d, c) {\n var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n }\n\n function H(d, c, e, h, a, m, b, v, n, q) {\n for (var g = 0, x = c, w; g < A; ++g) {\n switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n case void 0:\n case !1:\n case !0:\n case null:\n break;\n\n default:\n x = w;\n }\n }\n\n if (x !== c) return x;\n }\n\n function T(d) {\n switch (d) {\n case void 0:\n case null:\n A = S.length = 0;\n break;\n\n default:\n if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n T(d[c]);\n } else Y = !!d | 0;\n }\n\n return T;\n }\n\n function U(d) {\n d = d.prefix;\n void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n return U;\n }\n\n function B(d, c) {\n var e = d;\n 33 > e.charCodeAt(0) && (e = e.trim());\n V = e;\n e = [V];\n\n if (0 < A) {\n var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n void 0 !== h && 'string' === typeof h && (c = h);\n }\n\n var a = M(O, e, c, 0, 0);\n 0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n V = '';\n E = 0;\n z = D = 1;\n return a;\n }\n\n var ca = /^\\0+/g,\n N = /[\\0\\r\\f]/g,\n aa = /: */g,\n ka = /zoo|gra/,\n ma = /([,: ])(transform)/g,\n ia = /,\\r+?/g,\n F = /([\\t\\r\\n ])*\\f?&/g,\n fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n Q = /::(place)/g,\n ha = /:(read-only)/g,\n G = /[svh]\\w+-[tblr]{2}/,\n da = /\\(\\s*(.*)\\s*\\)/g,\n oa = /([\\s\\S]*?);/g,\n ba = /-self|flex-/g,\n na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n ja = /([^-])(image-set\\()/,\n z = 1,\n D = 1,\n E = 0,\n w = 1,\n O = [],\n S = [],\n A = 0,\n R = null,\n Y = 0,\n V = '';\n B.use = T;\n B.set = U;\n void 0 !== W && U(W);\n return B;\n}\n\nexport default stylis_min;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport default isPropValid;\n","import{typeOf as e,isElement as t,isValidElementType as n}from\"react-is\";import r,{useState as o,useContext as s,useMemo as i,useEffect as a,useRef as c,createElement as u,useDebugValue as l,useLayoutEffect as d}from\"react\";import h from\"shallowequal\";import p from\"@emotion/stylis\";import f from\"@emotion/unitless\";import m from\"@emotion/is-prop-valid\";import y from\"hoist-non-react-statics\";function v(){return(v=Object.assign||function(e){for(var t=1;t ({})}\\n```\\n\\n',8:'ThemeProvider: Please make your \"theme\" prop an object.\\n\\n',9:\"Missing document ``\\n\\n\",10:\"Cannot find a StyleSheet instance. Usually this happens if there are multiple copies of styled-components loaded at once. Check out this issue for how to troubleshoot and fix the common cases where this situation can happen: https://github.com/styled-components/styled-components/issues/1941#issuecomment-417862021\\n\\n\",11:\"_This error was replaced with a dev-time warning, it will be deleted for v4 final._ [createGlobalStyle] received children which will not be rendered. Please use the component without passing children elements.\\n\\n\",12:\"It seems you are interpolating a keyframe declaration (%s) into an untagged string. This was supported in styled-components v3, but is not longer supported in v4 as keyframes are now injected on-demand. Please wrap your string in the css\\\\`\\\\` helper which ensures the styles are injected correctly. See https://www.styled-components.com/docs/api#css\\n\\n\",13:\"%s is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.\\n\\n\",14:'ThemeProvider: \"theme\" prop is required.\\n\\n',15:\"A stylis plugin has been supplied that is not named. We need a name for each plugin to be able to prevent styling collisions between different stylis configurations within the same app. Before you pass your plugin to ``, please make sure each plugin is uniquely-named, e.g.\\n\\n```js\\nObject.defineProperty(importedPlugin, 'name', { value: 'some-unique-name' });\\n```\\n\\n\",16:\"Reached the limit of how many styled components may be created at group %s.\\nYou may only create up to 1,073,741,824 components. If you're creating components dynamically,\\nas for instance in your render method then you may be running into this limitation.\\n\\n\",17:\"CSSStyleSheet could not be found on HTMLStyleElement.\\nHas styled-components' style tag been unmounted or altered by another script?\\n\"}:{};function D(){for(var e=arguments.length<=0?void 0:arguments[0],t=[],n=1,r=arguments.length;n1?t-1:0),r=1;r0?\" Args: \"+n.join(\", \"):\"\")):new Error(D.apply(void 0,[R[e]].concat(n)).trim())}var T=function(){function e(e){this.groupSizes=new Uint32Array(512),this.length=512,this.tag=e}var t=e.prototype;return t.indexOfGroup=function(e){for(var t=0,n=0;n=this.groupSizes.length){for(var n=this.groupSizes,r=n.length,o=r;e>=o;)(o<<=1)<0&&j(16,\"\"+e);this.groupSizes=new Uint32Array(o),this.groupSizes.set(n),this.length=o;for(var s=r;s=this.length||0===this.groupSizes[e])return t;for(var n=this.groupSizes[e],r=this.indexOfGroup(e),o=r+n,s=r;s1<<30)&&j(16,\"\"+t),x.set(e,t),k.set(t,e),t},z=function(e){return k.get(e)},M=function(e,t){t>=V&&(V=t+1),x.set(e,t),k.set(t,e)},G=\"style[\"+A+'][data-styled-version=\"5.3.9\"]',L=new RegExp(\"^\"+A+'\\\\.g(\\\\d+)\\\\[id=\"([\\\\w\\\\d-]+)\"\\\\].*?\"([^\"]*)'),F=function(e,t,n){for(var r,o=n.split(\",\"),s=0,i=o.length;s=0;n--){var r=t[n];if(r&&1===r.nodeType&&r.hasAttribute(A))return r}}(n),s=void 0!==o?o.nextSibling:null;r.setAttribute(A,\"active\"),r.setAttribute(\"data-styled-version\",\"5.3.9\");var i=q();return i&&r.setAttribute(\"nonce\",i),n.insertBefore(r,s),r},$=function(){function e(e){var t=this.element=H(e);t.appendChild(document.createTextNode(\"\")),this.sheet=function(e){if(e.sheet)return e.sheet;for(var t=document.styleSheets,n=0,r=t.length;n=0){var n=document.createTextNode(t),r=this.nodes[e];return this.element.insertBefore(n,r||null),this.length++,!0}return!1},t.deleteRule=function(e){this.element.removeChild(this.nodes[e]),this.length--},t.getRule=function(e){return e0&&(u+=e+\",\")})),r+=\"\"+a+c+'{content:\"'+u+'\"}/*!sc*/\\n'}}}return r}(this)},e}(),K=/(a)(d)/gi,Q=function(e){return String.fromCharCode(e+(e>25?39:97))};function ee(e){var t,n=\"\";for(t=Math.abs(e);t>52;t=t/52|0)n=Q(t%52)+n;return(Q(t%52)+n).replace(K,\"$1-$2\")}var te=function(e,t){for(var n=t.length;n;)e=33*e^t.charCodeAt(--n);return e},ne=function(e){return te(5381,e)};function re(e){for(var t=0;t>>0);if(!t.hasNameForId(r,i)){var a=n(s,\".\"+i,void 0,r);t.insertRules(r,i,a)}o.push(i),this.staticRulesId=i}else{for(var c=this.rules.length,u=te(this.baseHash,n.hash),l=\"\",d=0;d>>0);if(!t.hasNameForId(r,m)){var y=n(l,\".\"+m,void 0,r);t.insertRules(r,m,y)}o.push(m)}}return o.join(\" \")},e}(),ie=/^\\s*\\/\\/.*$/gm,ae=[\":\",\"[\",\".\",\"#\"];function ce(e){var t,n,r,o,s=void 0===e?E:e,i=s.options,a=void 0===i?E:i,c=s.plugins,u=void 0===c?w:c,l=new p(a),d=[],h=function(e){function t(t){if(t)try{e(t+\"}\")}catch(e){}}return function(n,r,o,s,i,a,c,u,l,d){switch(n){case 1:if(0===l&&64===r.charCodeAt(0))return e(r+\";\"),\"\";break;case 2:if(0===u)return r+\"/*|*/\";break;case 3:switch(u){case 102:case 112:return e(o[0]+r),\"\";default:return r+(0===d?\"/*|*/\":\"\")}case-2:r.split(\"/*|*/}\").forEach(t)}}}((function(e){d.push(e)})),f=function(e,r,s){return 0===r&&-1!==ae.indexOf(s[n.length])||s.match(o)?e:\".\"+t};function m(e,s,i,a){void 0===a&&(a=\"&\");var c=e.replace(ie,\"\"),u=s&&i?i+\" \"+s+\" { \"+c+\" }\":c;return t=a,n=s,r=new RegExp(\"\\\\\"+n+\"\\\\b\",\"g\"),o=new RegExp(\"(\\\\\"+n+\"\\\\b){2,}\"),l(i||!s?\"\":s,u)}return l.use([].concat(u,[function(e,t,o){2===e&&o.length&&o[0].lastIndexOf(n)>0&&(o[0]=o[0].replace(r,f))},h,function(e){if(-2===e){var t=d;return d=[],t}}])),m.hash=u.length?u.reduce((function(e,t){return t.name||j(15),te(e,t.name)}),5381).toString():\"\",m}var ue=r.createContext(),le=ue.Consumer,de=r.createContext(),he=(de.Consumer,new Z),pe=ce();function fe(){return s(ue)||he}function me(){return s(de)||pe}function ye(e){var t=o(e.stylisPlugins),n=t[0],s=t[1],c=fe(),u=i((function(){var t=c;return e.sheet?t=e.sheet:e.target&&(t=t.reconstructWithOptions({target:e.target},!1)),e.disableCSSOMInjection&&(t=t.reconstructWithOptions({useCSSOMInjection:!1})),t}),[e.disableCSSOMInjection,e.sheet,e.target]),l=i((function(){return ce({options:{prefix:!e.disableVendorPrefixes},plugins:n})}),[e.disableVendorPrefixes,n]);return a((function(){h(n,e.stylisPlugins)||s(e.stylisPlugins)}),[e.stylisPlugins]),r.createElement(ue.Provider,{value:u},r.createElement(de.Provider,{value:l},\"production\"!==process.env.NODE_ENV?r.Children.only(e.children):e.children))}var ve=function(){function e(e,t){var n=this;this.inject=function(e,t){void 0===t&&(t=pe);var r=n.name+t.hash;e.hasNameForId(n.id,r)||e.insertRules(n.id,r,t(n.rules,r,\"@keyframes\"))},this.toString=function(){return j(12,String(n.name))},this.name=e,this.id=\"sc-keyframes-\"+e,this.rules=t}return e.prototype.getName=function(e){return void 0===e&&(e=pe),this.name+e.hash},e}(),ge=/([A-Z])/,Se=/([A-Z])/g,we=/^ms-/,Ee=function(e){return\"-\"+e.toLowerCase()};function be(e){return ge.test(e)?e.replace(Se,Ee).replace(we,\"-ms-\"):e}var _e=function(e){return null==e||!1===e||\"\"===e};function Ne(e,n,r,o){if(Array.isArray(e)){for(var s,i=[],a=0,c=e.length;a1?t-1:0),r=1;r1?t-1:0),i=1;i?@[\\\\\\]^`{|}~-]+/g,je=/(^-|-$)/g;function Te(e){return e.replace(De,\"-\").replace(je,\"\")}var xe=function(e){return ee(ne(e)>>>0)};function ke(e){return\"string\"==typeof e&&(\"production\"===process.env.NODE_ENV||e.charAt(0)===e.charAt(0).toLowerCase())}var Ve=function(e){return\"function\"==typeof e||\"object\"==typeof e&&null!==e&&!Array.isArray(e)},Be=function(e){return\"__proto__\"!==e&&\"constructor\"!==e&&\"prototype\"!==e};function ze(e,t,n){var r=e[n];Ve(t)&&Ve(r)?Me(r,t):e[n]=t}function Me(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r=0||(o[n]=e[n]);return o}(t,[\"componentId\"]),s=r&&r+\"-\"+(ke(e)?e:Te(_(e)));return qe(e,v({},o,{attrs:S,componentId:s}),n)},Object.defineProperty(C,\"defaultProps\",{get:function(){return this._foldedDefaultProps},set:function(t){this._foldedDefaultProps=o?Me({},e.defaultProps,t):t}}),\"production\"!==process.env.NODE_ENV&&(Oe(f,g),C.warnTooManyClasses=function(e,t){var n={},r=!1;return function(o){if(!r&&(n[o]=!0,Object.keys(n).length>=200)){var s=t?' with the id of \"'+t+'\"':\"\";console.warn(\"Over 200 classes were generated for component \"+e+s+\".\\nConsider using the attrs method, together with a style object for frequently changed styles.\\nExample:\\n const Component = styled.div.attrs(props => ({\\n style: {\\n background: props.background,\\n },\\n }))`width: 100%;`\\n\\n \"),r=!0,n={}}}}(f,g)),Object.defineProperty(C,\"toString\",{value:function(){return\".\"+C.styledComponentId}}),i&&y(C,e,{attrs:!0,componentStyle:!0,displayName:!0,foldedComponentIds:!0,shouldForwardProp:!0,styledComponentId:!0,target:!0,withComponent:!0}),C}var He=function(e){return function e(t,r,o){if(void 0===o&&(o=E),!n(r))return j(1,String(r));var s=function(){return t(r,o,Ce.apply(void 0,arguments))};return s.withConfig=function(n){return e(t,r,v({},o,{},n))},s.attrs=function(n){return e(t,r,v({},o,{attrs:Array.prototype.concat(o.attrs,n).filter(Boolean)}))},s}(qe,e)};[\"a\",\"abbr\",\"address\",\"area\",\"article\",\"aside\",\"audio\",\"b\",\"base\",\"bdi\",\"bdo\",\"big\",\"blockquote\",\"body\",\"br\",\"button\",\"canvas\",\"caption\",\"cite\",\"code\",\"col\",\"colgroup\",\"data\",\"datalist\",\"dd\",\"del\",\"details\",\"dfn\",\"dialog\",\"div\",\"dl\",\"dt\",\"em\",\"embed\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"i\",\"iframe\",\"img\",\"input\",\"ins\",\"kbd\",\"keygen\",\"label\",\"legend\",\"li\",\"link\",\"main\",\"map\",\"mark\",\"marquee\",\"menu\",\"menuitem\",\"meta\",\"meter\",\"nav\",\"noscript\",\"object\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"param\",\"picture\",\"pre\",\"progress\",\"q\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"script\",\"section\",\"select\",\"small\",\"source\",\"span\",\"strong\",\"style\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"title\",\"tr\",\"track\",\"u\",\"ul\",\"var\",\"video\",\"wbr\",\"circle\",\"clipPath\",\"defs\",\"ellipse\",\"foreignObject\",\"g\",\"image\",\"line\",\"linearGradient\",\"marker\",\"mask\",\"path\",\"pattern\",\"polygon\",\"polyline\",\"radialGradient\",\"rect\",\"stop\",\"svg\",\"text\",\"textPath\",\"tspan\"].forEach((function(e){He[e]=He(e)}));var $e=function(){function e(e,t){this.rules=e,this.componentId=t,this.isStatic=re(e),Z.registerId(this.componentId+1)}var t=e.prototype;return t.createStyles=function(e,t,n,r){var o=r(Ne(this.rules,t,n,r).join(\"\"),\"\"),s=this.componentId+e;n.insertRules(s,s,o)},t.removeStyles=function(e,t){t.clearRules(this.componentId+e)},t.renderStyles=function(e,t,n,r){e>2&&Z.registerId(this.componentId+e),this.removeStyles(e,n),this.createStyles(e,t,n,r)},e}();function We(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o meta tag to the stylesheet, or simply embedding it manually in your index.html section for a simpler app.\"),t.server&&h(l,e,t,o,n),d((function(){if(!t.server)return h(l,e,t,o,n),function(){return u.removeStyles(l,t)}}),[l,e,t,o,n]),null}function h(e,t,n,r,o){if(u.isStatic)u.renderStyles(e,O,n,o);else{var s=v({},t,{theme:Re(t,r,l.defaultProps)});u.renderStyles(e,s,n,o)}}return\"production\"!==process.env.NODE_ENV&&Oe(a),r.memo(l)}function Ue(e){\"production\"!==process.env.NODE_ENV&&\"undefined\"!=typeof navigator&&\"ReactNative\"===navigator.product&&console.warn(\"`keyframes` cannot be used on ReactNative, only on the web. To do animation in ReactNative please use Animated.\");for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r\"+t+\"\"},this.getStyleTags=function(){return e.sealed?j(2):e._emitSheetCSS()},this.getStyleElement=function(){var t;if(e.sealed)return j(2);var n=((t={})[A]=\"\",t[\"data-styled-version\"]=\"5.3.9\",t.dangerouslySetInnerHTML={__html:e.instance.toString()},t),o=q();return o&&(n.nonce=o),[r.createElement(\"style\",v({},n,{key:\"sc-0-0\"}))]},this.seal=function(){e.sealed=!0},this.instance=new Z({isServer:!0}),this.sealed=!1}var t=e.prototype;return t.collectStyles=function(e){return this.sealed?j(2):r.createElement(ye,{sheet:this.instance},e)},t.interleaveWithNodeStream=function(e){return j(3)},e}(),Xe=function(e){var t=r.forwardRef((function(t,n){var o=s(Ge),i=e.defaultProps,a=Re(t,o,i);return\"production\"!==process.env.NODE_ENV&&void 0===a&&console.warn('[withTheme] You are not using a ThemeProvider nor passing a theme prop or a theme in defaultProps in component class \"'+_(e)+'\"'),r.createElement(e,v({},t,{theme:a,ref:n}))}));return y(t,e),t.displayName=\"WithTheme(\"+_(e)+\")\",t},Ze=function(){return s(Ge)},Ke={StyleSheet:Z,masterSheet:he};\"production\"!==process.env.NODE_ENV&&\"undefined\"!=typeof navigator&&\"ReactNative\"===navigator.product&&console.warn(\"It looks like you've imported 'styled-components' on React Native.\\nPerhaps you're looking to import 'styled-components/native'?\\nRead more about this at https://www.styled-components.com/docs/basics#react-native\"),\"production\"!==process.env.NODE_ENV&&\"test\"!==process.env.NODE_ENV&&\"undefined\"!=typeof window&&(window[\"__styled-components-init__\"]=window[\"__styled-components-init__\"]||0,1===window[\"__styled-components-init__\"]&&console.warn(\"It looks like there are several instances of 'styled-components' initialized in this application. This may cause dynamic styles to not render properly, errors during the rehydration process, a missing theme prop, and makes your application bigger without good reason.\\n\\nSee https://s-c.sh/2BAXzed for more info.\"),window[\"__styled-components-init__\"]+=1);export default He;export{Je as ServerStyleSheet,le as StyleSheetConsumer,ue as StyleSheetContext,ye as StyleSheetManager,Le as ThemeConsumer,Ge as ThemeContext,Fe as ThemeProvider,Ke as __PRIVATE__,We as createGlobalStyle,Ce as css,N as isStyledComponent,Ue as keyframes,Ze as useTheme,C as version,Xe as withTheme};\n//# sourceMappingURL=styled-components.browser.esm.js.map\n","import { AccumulatorCollapseButton } from '../../../FxAccumulatorTile/Extension/AccumulatorCollapseButton';\nimport styled from 'styled-components';\n\ninterface CollapseBlockProps {\n isCollapsed: boolean;\n children: JSX.Element;\n title: JSX.Element;\n toggleCollapsed: React.MouseEventHandler;\n}\n\nconst SummaryWIthoutBefore = styled.summary`\n &::before {\n display: none;\n }\n`;\n\nexport function CollapsableBlockComponent({\n isCollapsed,\n children,\n title,\n toggleCollapsed,\n}: CollapseBlockProps) {\n return (\n
\n \n {title}\n
\n \n
\n \n
{children}
\n
\n );\n}\n","import { connect } from 'react-redux';\nimport { mapDispatchToPropsCollapsable, mapStateToPropsCollapsable } from './connectCollapsable';\nimport { selectors } from 'state/selectors';\nimport { actionCreators } from 'state/actions';\nimport { withQuoteId } from 'components/contexts';\nimport { renderPropsConnect } from 'components/share/renderPropsConnect';\nimport { CollapsableComponent } from './Collapsables';\nimport { CollapsableBlockComponent } from './CollapsableBlock';\n\nexport const connectCollapsable = connect(\n mapStateToPropsCollapsable(selectors),\n mapDispatchToPropsCollapsable(actionCreators),\n);\n\nexport const Collapsable = withQuoteId(connectCollapsable(CollapsableComponent));\n\nexport { UncontrolledCollapsable } from './Collapsables';\n\nexport const CollapsedRenderProps = withQuoteId(\n renderPropsConnect(\n mapStateToPropsCollapsable(selectors),\n mapDispatchToPropsCollapsable(actionCreators),\n ),\n);\n\nexport const CollapsableBlock = CollapsableBlockComponent;\n","import { Component, type ChangeEvent } from 'react';\nimport { connect } from 'react-redux';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from 'reactstrap';\nimport {\n FormattedMessage,\n type WrappedComponentProps as InjectedIntlProps,\n injectIntl,\n} from 'react-intl';\nimport { isCrashError } from 'state/globalError/globalErrorSelectors';\nimport type { AppState } from 'state/model';\nimport { HelpButton } from './HelpButton';\nimport { mapStackTrace } from 'sourcemapped-stacktrace';\nimport { noop } from '@sgme/fp';\nimport { UncontrolledCollapsable } from 'components/share/formElements/Collapsable';\nimport styled from 'styled-components';\nimport type { SendHelpStatus } from 'state/globalError/globalErrorModel';\nimport { logger } from '../../logging/logger';\n\ninterface CrashModalProps {\n error: string | null;\n}\n\ninterface CrashModalInternalState {\n userDetails: string;\n stackTrace: string | null;\n}\n\nconst reload = () => window.location.reload();\n\nconst TechnicalDetails = styled.pre`\n min-height: 100px;\n max-height: 500px;\n overflow: auto;\n`;\n\nclass CrashModalRaw extends Component<\n CrashModalProps & InjectedIntlProps,\n CrashModalInternalState\n> {\n public state = {\n userDetails: '',\n stackTrace: null,\n };\n\n public componentDidMount() {\n if (this.props.error === null) {\n return;\n }\n try {\n mapStackTrace(this.props.error, stack => {\n const stackTrace = stack.reduce((acc, curr) => `${acc}\\n${curr}`, this.props.error ?? '');\n this.setState(() => ({\n stackTrace,\n }));\n });\n } catch (e: any) {\n logger.logError('Unable to translate stack trace {message_s}', e.message);\n }\n }\n\n private setUserDetails = (event: ChangeEvent) =>\n this.setState({ userDetails: event.currentTarget.value });\n\n private details = () =>\n this.state.userDetails !== ''\n ? `${this.state.userDetails}\\nTechnical error: ${this.props.error}`\n : null;\n\n private sendHelpRequestCallback = (status: SendHelpStatus) => {\n if (status === 'success') {\n reload();\n }\n };\n\n public render() {\n const { error, intl } = this.props;\n const { userDetails, stackTrace } = this.state;\n if (error === null) {\n return null;\n }\n return (\n \n \n \n \n \n \n \n \n \n \n {stackTrace === null\n ? error.startsWith('{') // Potentially json object\n ? JSON.stringify(JSON.parse(error), null, 4)\n : error\n : `${error.substring(0, error.indexOf('\\n'))}\\n` + stackTrace}\n \n \n \n \n \n {this.state.userDetails !== '' ? (\n \n ) : (\n \n )}\n \n \n );\n }\n}\n\nconst mapStateToProps = (state: AppState): CrashModalProps => ({\n error: isCrashError(state) ? state.globalError.error : null,\n});\n\nexport const CrashModal = connect(mapStateToProps)(injectIntl(CrashModalRaw));\n","import { connect } from 'react-redux';\nimport { FormattedMessage } from 'react-intl';\nimport { Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\nimport type { AppState } from 'state/model';\nimport type { SendHelpStatus } from 'state/globalError/globalErrorModel';\nimport type { Action } from 'state/actions';\nimport { closeErrorDetail } from 'state/clientWorkspace/clientWorkspaceActions';\nimport { HelpButton } from './HelpButton';\nimport type { Dispatch } from 'redux';\nimport { getTilePropertiesRequestError } from 'state/tile/selectors';\n\ninterface IErrorDetailStateProps {\n quoteId: string | null;\n propertiesRequestError: string | null;\n}\n\ninterface IErrorDetailDispatchProps {\n close(): void;\n}\n\ntype ErrorDetailProps = IErrorDetailStateProps & IErrorDetailDispatchProps;\n\nconst mapStateToProps = (state: AppState): IErrorDetailStateProps => ({\n quoteId: state.globalError.tileId,\n propertiesRequestError:\n state.globalError.tileId !== null\n ? getTilePropertiesRequestError(state, state.globalError.tileId)\n : null,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch): IErrorDetailDispatchProps => ({\n close: () => dispatch(closeErrorDetail()),\n});\n\ninterface IErrorLineProps {\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nconst ErrorLine: React.FunctionComponent = ({ title, message }) => (\n
\n
{title}
\n
\n {message}\n
\n
\n);\n\nconst sentCallback = (close: () => void) => (status: SendHelpStatus | null) => {\n // eslint-disable-next-line no-unused-expressions\n status === 'success' && setTimeout(close, 1000);\n};\n\nconst formatDetails = (quoteId: string | null, error: string | null) => () => ({\n quoteId,\n error,\n});\n\nexport const ErrorDetail: React.FunctionComponent = ({\n quoteId,\n propertiesRequestError,\n close,\n}) => (\n \n \n \n \n {propertiesRequestError !== null && (\n \n
\n }\n message={propertiesRequestError}\n />\n }\n message={quoteId}\n />\n
\n
\n )}\n \n \n \n \n \n);\n\nexport const PropertiesErrorDetailsModal = connect(\n mapStateToProps,\n mapDispatchToProps,\n)(ErrorDetail);\n\nexport default PropertiesErrorDetailsModal;\n","import { connect } from 'react-redux';\nimport { FormattedMessage } from 'react-intl';\nimport { Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\nimport type { AppState } from 'state/model';\nimport type { IStreamError, SendHelpStatus } from 'state/globalError/globalErrorModel';\nimport type { Action } from 'state/actions';\nimport { closeErrorDetail } from 'state/clientWorkspace/clientWorkspaceActions';\nimport { HelpButton } from './HelpButton';\nimport type { Dispatch } from 'redux';\nimport { getStreamError } from 'state/globalError/globalErrorSelectors';\nimport { isDefined } from '@sgme/fp';\n\ninterface IErrorDetailStateProps {\n streamError: IStreamError | null;\n}\n\ninterface IErrorDetailDispatchProps {\n close(): void;\n}\n\ntype ErrorDetailProps = IErrorDetailStateProps & IErrorDetailDispatchProps;\n\nconst mapStateToProps = (state: AppState): IErrorDetailStateProps => ({\n streamError: getStreamError(state),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch): IErrorDetailDispatchProps => ({\n close: () => dispatch(closeErrorDetail()),\n});\n\ninterface IErrorLineProps {\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nconst ErrorLine: React.FunctionComponent = ({ title, message }) => (\n
\n
{title}
\n
\n {message}\n
\n
\n);\n\nconst sentCallback = (close: () => void) => (status: SendHelpStatus | null) => {\n // eslint-disable-next-line no-unused-expressions\n status === 'success' && setTimeout(close, 1000);\n};\n\nconst formatDetails = (streamError: IStreamError | null) => () => streamError;\n\nexport function ErrorDetail({ streamError, close }: ErrorDetailProps): JSX.Element {\n const isOpen = isDefined(streamError);\n return (\n \n \n \n \n {isOpen && (\n \n
\n }\n message={streamError!.code}\n />\n }\n message={streamError!.message}\n />\n }\n message={streamError!.multipassSessionId}\n />\n }\n message={streamError!.multipassErrorCode}\n />\n
\n
\n )}\n \n \n \n \n
\n );\n}\n\nexport const ErrorDetailsModal = connect(mapStateToProps, mapDispatchToProps)(ErrorDetail);\n\nexport default ErrorDetailsModal;\n","import { Component, type ChangeEvent } from 'react';\nimport { connect } from 'react-redux';\nimport { FormattedMessage } from 'react-intl';\nimport { Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\nimport type { AppState } from 'state/model';\nimport { isNoClients, isNoProducts } from 'state/globalError/globalErrorSelectors';\nimport { sgwtConnect } from 'api/connect';\nimport { HelpButton } from './HelpButton';\n\nconst email = 'sgmarketsfx@sgcib.com';\n\nexport type ErrorType = 'NO_CLIENTS' | 'NO_PRODUCTS';\n\nfunction accessRequestError(errorType: ErrorType) {\n switch (errorType) {\n case 'NO_CLIENTS':\n return 'client set-up error';\n case 'NO_PRODUCTS':\n return 'product set-up error';\n }\n}\n\ninterface IRequestAccessProps {\n accessError: ErrorType | undefined;\n}\n\ninterface IRequestAccessState {\n userMail: string;\n}\n\ninterface IMessages {\n details: string;\n title: string;\n reason: string;\n assistance: string;\n submitButton: string;\n}\n\nclass RequestAccessModalRaw extends Component {\n constructor(props: IRequestAccessProps) {\n super(props);\n this.state = {\n userMail: sgwtConnect.getIdTokenClaims()!.sub,\n };\n }\n\n private onMailChange = (event: ChangeEvent) =>\n this.setState({ userMail: event.currentTarget.value });\n\n private details = () =>\n this.msg.details + '\\n' + 'Email provided by user: ' + this.state.userMail;\n\n private get msg() {\n return messages[this.props.accessError!];\n }\n\n public render() {\n return this.props.accessError ? (\n \n \n \n \n \n \n {email} }}\n />\n \n \n \n \n \n \n ) : (\n <>\n );\n }\n}\n\nconst noClientsMessages: IMessages = {\n details: 'No client displayed for the user',\n title: 'modals.noclients.title',\n reason: 'modals.noclients.body.reason',\n assistance: 'modals.noclients.body.assistance',\n submitButton: 'modals.noclients.footer.submitButton',\n};\n\nconst noProductsMessages: IMessages = {\n details: 'No products displayed for the user',\n title: 'modals.noproducts.title',\n reason: 'modals.noproducts.body.reason',\n assistance: 'modals.noproducts.body.assistance',\n submitButton: 'modals.noproducts.footer.submitButton',\n};\n\nconst messages: { [no in ErrorType]: IMessages } = {\n NO_CLIENTS: noClientsMessages,\n NO_PRODUCTS: noProductsMessages,\n};\n\nconst mapStateToProps = (state: AppState): IRequestAccessProps => {\n if (isNoClients(state)) {\n return { accessError: 'NO_CLIENTS' };\n }\n\n if (isNoProducts(state)) {\n return { accessError: 'NO_PRODUCTS' };\n }\n\n return { accessError: undefined };\n};\n\nexport const RequestAccessModal = connect(mapStateToProps)(RequestAccessModalRaw);\n\nexport default RequestAccessModal;\n","import { connect } from 'react-redux';\nimport { Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\nimport { FormattedMessage } from 'react-intl';\n\nimport type { AppState } from 'state/model';\nimport { getSessionState } from 'state/session/sessionSelectors';\n\nconst reload = () => window.location.reload();\nconst email = 'sg-markets@sgcib.com';\n\ninterface ISessionDisconnectedStateProps {\n errorMsg: string | null;\n}\n\nconst SessionDisconnectedModalRaw: React.FunctionComponent = ({\n errorMsg,\n}) => (\n \n \n \n power_off \n
\n \n \n

\n \n

\n

\n \n

\n

\n {email}, br:
}}\n />\n

\n
\n \n \n \n \n);\n\nfunction mapStateToProps(state: AppState): ISessionDisconnectedStateProps {\n const session = getSessionState(state);\n if (session.isValid === true) {\n return { errorMsg: null };\n }\n return { errorMsg: session.logoffReason };\n}\n\nexport const SessionDisconnectedModal = connect(mapStateToProps)(SessionDisconnectedModalRaw);\n\nexport default SessionDisconnectedModal;\n","import { connect } from 'react-redux';\nimport { Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\nimport { FormattedMessage } from 'react-intl';\n\nimport type { AppState } from 'state/model';\nimport { isAuthExpired } from 'state/globalError/globalErrorSelectors';\n\nconst reload = () => window.location.reload();\n\ninterface ISessionTimeoutStateProps {\n sessionTimeout: boolean;\n}\n\ntype SessionTimeoutProps = ISessionTimeoutStateProps;\n\nconst SessionTimeoutModalRaw: React.FunctionComponent = ({\n sessionTimeout,\n}) => (\n \n \n \n power_off \n
\n \n \n

\n \n

\n

\n \n

\n

\n \n

\n
\n \n \n \n \n);\n\nconst mapStateToProps = (state: AppState): ISessionTimeoutStateProps => ({\n sessionTimeout: isAuthExpired(state),\n});\n\nexport const SessionTimeoutModal = connect(mapStateToProps)(SessionTimeoutModalRaw);\n\nexport default SessionTimeoutModal;\n","import { isEmpty } from '@sgme/fp';\nimport type React from 'react';\n\nexport const crudeEmailRegex = /(?:[^\\<]* \\<)?([^@\\s;,]+@[^\\.]+\\.[^\\>\\s;,]+)\\>?/g;\n\nexport const onKeyDownWith =\n (onAddEmail: (email: string) => void) => (e: React.KeyboardEvent) => {\n switch (e.key) {\n case 'Escape':\n e.preventDefault();\n e.currentTarget.value = '';\n break;\n case 'Enter':\n case 'Tab':\n case ' ':\n case ',':\n case ';':\n const userInput = e.currentTarget.value;\n if (userInput.match(crudeEmailRegex)) {\n e.preventDefault();\n onAddEmail(userInput.replace(crudeEmailRegex, '$1'));\n e.currentTarget.value = '';\n }\n }\n };\n\nexport const onPasteWith =\n (addEmails: (emails: readonly string[]) => void) =>\n (e: React.ClipboardEvent) => {\n const pastedText = e.clipboardData.getData('text');\n let possibleMatch = crudeEmailRegex.exec(pastedText);\n const possibleEmails: string[] = [];\n while (possibleMatch !== null) {\n possibleEmails.push(possibleMatch[1]);\n possibleMatch = crudeEmailRegex.exec(pastedText);\n }\n if (isEmpty(possibleEmails)) {\n return;\n }\n e.preventDefault();\n addEmails(possibleEmails);\n };\n","import { createContext } from 'react';\nimport type { Size } from './typings';\n\nexport const SizeContext = createContext('default');\nSizeContext.displayName = 'FormSizeContext';\n\nexport const { Provider: FormSizeProvider, Consumer: FormSizeConsumer } = SizeContext;\n","import type { AlertLevel, Size, VisualEmphasis } from './typings';\n\n/**\n * bs4 lookalike semantic\n */\nconst sizeClass: Record = {\n default: '',\n sm: ' input-group-sm',\n lg: ' input-group-lg',\n};\n/**\n * @todo\n * remove nowrap if sgbs fixed table form input group at next release\n */\nexport const inputGroupClassName = (size: Size = 'default') =>\n `flex-nowrap input-group${sizeClass[size]}`;\n\nconst formControlClassBySize: Record = {\n default: 'form-control',\n sm: 'form-control form-control-sm',\n lg: 'form-control form-control-lg',\n};\nexport const formControlClassName = (size: Size = 'default') => formControlClassBySize[size];\n/**\n * bs4 lookalike semantic\n */\nconst levelClass: Record = {\n warning: ' is-warning',\n invalid: ' is-invalid',\n valid: ' is-valid',\n};\n\nexport const inputClassName = (alertLevel?: AlertLevel, size?: Size) =>\n `pr-1 ${formControlClassName(size)}${alertLevel === undefined ? '' : levelClass[alertLevel]}`;\n\n/**\n * update if several button styles are required\n */\nconst buttonEmphasisClass: Record = {\n none: 'btn btn-discreet-primary',\n table: 'btn btn-flat-primary',\n readonly: 'btn form-control border-0 h-100 py-0 text-secondary',\n default: 'btn form-control border-0 h-100 py-0',\n warning: 'btn btn-warning',\n error: 'btn btn-discreet-danger',\n success: 'btn btn-discreet-success',\n info: 'btn btn-discreet-info',\n};\n\nexport const buttonClassName = (emphasis: VisualEmphasis = 'none') =>\n `px-1 ${buttonEmphasisClass[emphasis]}`;\nexport const buttonIconClassName = `icon-btn d-flex align-items-center justify-content-center`;\n","import type {\n AddEmail,\n AddEmails,\n RemoveEmail,\n TypeOfEmail,\n ActionTypeOfEmail,\n} from './emailsInputModels';\n\nexport function add(email: string, typeOfState: TypeOfEmail, type: ActionTypeOfEmail): AddEmail {\n return { type: type.add, [typeOfState]: email };\n}\n\nexport function adds(\n emails: readonly string[],\n typeOfState: TypeOfEmail,\n type: ActionTypeOfEmail,\n): AddEmails {\n return { type: type.adds, [typeOfState]: emails };\n}\n\nexport function remove(\n email: string,\n typeOfState: TypeOfEmail,\n type: ActionTypeOfEmail,\n): RemoveEmail {\n return { type: type.remove, [typeOfState]: email };\n}\n","import { useCallback, useContext, useMemo, useRef } from 'react';\nimport styled from 'styled-components';\nimport { onKeyDownWith, onPasteWith } from './emailsInputHandlers';\nimport { useIntl } from 'react-intl';\nimport * as e2e from 'components/Form/Inputs/e2e';\nimport { SizeContext } from 'components/Form/Inputs/SizeContext';\nimport { formControlClassName } from 'components/Form/Inputs/className';\nimport { add, adds, remove } from './emailsInputActions';\nimport type { EmailsInputProps, MappingValues } from './emailsInputModels';\nimport { assertUnreachable } from '@sgme/fp';\n\nconst EmailsDisplayContainer = styled.div.attrs({\n className: 'text-small overflow-auto',\n 'data-nodrag': true,\n})`\n max-height: 15vh;\n scroll-behavior: smooth;\n`;\n\nconst IconButton: React.FunctionComponent<{\n icon: string;\n e2eHandle: string;\n onClick(): void;\n}> = ({ icon, e2eHandle, onClick }) => (\n \n {icon}\n \n);\n\nconst scrollToBottom = (ref: React.RefObject) => {\n const element = ref.current!;\n setImmediate(() => {\n element.scrollTop = element.scrollHeight;\n });\n};\n\nexport const EmailsInput: React.FunctionComponent = ({\n ref,\n live,\n e2eHandle,\n notificationsType,\n emails,\n dispatch,\n onSubmit,\n onsubmitWithSplit,\n}) => {\n const size = useContext(SizeContext);\n const formControlClass = `${formControlClassName(size)} p-1 h-auto`;\n const badgeClass = `badge${size === 'sm' ? '' : ' badge-lg'} sgbs-badge-default pl-1 mr-1 mb-1`;\n\n const { formatMessage } = useIntl();\n const placeholder = useMemo(() => formatMessage({ id: 'emails.placeholder' }), [formatMessage]);\n\n const inputRef = useRef(null);\n const emailsContainerRef = useRef(null);\n\n const mappingValues: MappingValues = useMemo(() => {\n switch (notificationsType) {\n case 'orders':\n return {\n actionType: { add: 'addOrder', adds: 'addsOrder', remove: 'removeOrder' },\n typeOfEmail: 'emailsOrder',\n };\n case 'options':\n return {\n actionType: { add: 'addOptions', adds: 'addsOptions', remove: 'removeOptions' },\n typeOfEmail: 'emailsOptions',\n };\n case 'default':\n return {\n actionType: { add: 'add', adds: 'adds', remove: 'remove' },\n typeOfEmail: 'emailsDefault',\n };\n case 'cash':\n return {\n actionType: { add: 'addCash', adds: 'addsCash', remove: 'removeCash' },\n typeOfEmail: 'emailsCash',\n };\n default:\n assertUnreachable(notificationsType, 'one email type is not handled');\n }\n }, [notificationsType]);\n\n const onKeyPress = useCallback(\n onKeyDownWith(email => {\n if (live) {\n if (notificationsType === 'default') {\n onSubmit([...emails, email]);\n } else {\n onsubmitWithSplit!([...emails, email], mappingValues?.typeOfEmail);\n }\n }\n dispatch(add(email, mappingValues?.typeOfEmail, mappingValues?.actionType));\n scrollToBottom(emailsContainerRef);\n }),\n [emails],\n );\n\n const onPaste = useCallback(\n onPasteWith(newEmails => {\n if (live) {\n if (notificationsType === 'default') {\n onSubmit([...emails, ...newEmails.filter(mail => !emails.includes(mail))]);\n } else {\n onsubmitWithSplit!(\n [...emails, ...newEmails.filter(mail => !emails.includes(mail))],\n mappingValues?.typeOfEmail,\n );\n }\n }\n dispatch(adds(newEmails, mappingValues?.typeOfEmail, mappingValues?.actionType));\n scrollToBottom(emailsContainerRef);\n }),\n [emails],\n );\n\n const onEditEmail = useCallback((e: React.MouseEvent) => {\n const input = inputRef.current!;\n if (input.value !== '') {\n return;\n }\n const emailToEdit = e.currentTarget.parentElement!.dataset.value!;\n dispatch(remove(emailToEdit, mappingValues?.typeOfEmail, mappingValues?.actionType));\n input.value = emailToEdit;\n input.focus();\n }, []);\n\n const onRemoveEmail = useCallback(\n (e: React.MouseEvent) => {\n const emailToRemove = e.currentTarget.parentElement!.dataset.value!;\n if (live) {\n if (notificationsType === 'default') {\n onSubmit(emails.filter(email => email !== emailToRemove));\n } else {\n onsubmitWithSplit!(\n emails.filter(email => email !== emailToRemove),\n mappingValues?.typeOfEmail,\n );\n }\n }\n dispatch(remove(emailToRemove, mappingValues?.typeOfEmail, mappingValues?.actionType));\n },\n [dispatch, emails, live, notificationsType, mappingValues, onSubmit, onsubmitWithSplit],\n );\n\n const onCancelChanges = useCallback(() => {\n if (notificationsType === 'default') {\n onSubmit(null);\n } else {\n onsubmitWithSplit!(null, mappingValues?.typeOfEmail);\n }\n }, [notificationsType, mappingValues?.typeOfEmail, onSubmit, onsubmitWithSplit]);\n\n const onSubmitChanges = useCallback(() => {\n const input = inputRef.current;\n const submittedEmails =\n input === null || input.value === '' ? emails : [...emails, input.value];\n if (notificationsType === 'default') {\n onSubmit(submittedEmails);\n } else {\n onsubmitWithSplit!(submittedEmails, mappingValues?.typeOfEmail);\n }\n }, [emails, notificationsType, mappingValues?.typeOfEmail, onSubmit, onsubmitWithSplit]);\n\n return (\n <>\n \n {live ? null : (\n
\n \n \n
\n )}\n \n );\n};\n","import type { EmailAction } from './emailsInputModels';\n\nexport function emailsReducerDefault(state: readonly string[], action: EmailAction) {\n switch (action.type) {\n case 'add':\n if (state.includes(action.emailsDefault!)) {\n return state;\n }\n return [...state, action.emailsDefault!];\n case 'adds':\n return [...state, ...action.emailsDefault!.filter(m => !state.includes(m))];\n case 'remove':\n return state.filter(mail => mail !== action.emailsDefault);\n default:\n return state;\n }\n}\nexport function emailsReducerCash(state: readonly string[], action: EmailAction) {\n switch (action.type) {\n case 'addCash':\n if (state.includes(action.emailsCash!)) {\n return state;\n }\n return [...state, action.emailsCash!];\n case 'addsCash':\n return [...state, ...action.emailsCash!.filter(m => !state.includes(m))];\n case 'removeCash':\n return state.filter(mail => mail !== action.emailsCash);\n default:\n return state;\n }\n}\nexport function emailsReducerOrders(\n state: readonly string[],\n action: EmailAction,\n): readonly string[] {\n switch (action.type) {\n case 'addOrder':\n if (state.includes(action.emailsOrder!)) {\n return state;\n }\n return [...state, action.emailsOrder!];\n case 'addsOrder':\n return [...state, ...action.emailsOrder!.filter(m => !state.includes(m))];\n case 'removeOrder':\n return state.filter(mail => mail !== action.emailsOrder);\n default:\n return state;\n }\n}\nexport function emailsReducerOptions(\n state: readonly string[],\n action: EmailAction,\n): readonly string[] {\n switch (action.type) {\n case 'addOptions':\n if (state.includes(action.emailsOptions!)) {\n return state;\n }\n return [...state, action.emailsOptions!];\n case 'addsOptions':\n return [...state, ...action.emailsOptions!.filter(m => !state.includes(m))];\n case 'removeOptions':\n return state.filter(mail => mail !== action.emailsOptions);\n default:\n return state;\n }\n}\n","import { useSelector } from 'react-redux';\nimport type { UserPreferencesData } from 'state/userPreferences';\nimport { getUserPreferenceData } from 'state/userPreferences/selectors';\n\n/**\n * Hook that returns the user preferences present in the application state\n */\nexport const usePreferences = (): UserPreferencesData => useSelector(getUserPreferenceData);\n","import type { MapStateToPropsHOF, MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\nimport type { UserPreferencesData } from 'state/userPreferences';\nimport type {\n NotificationsType,\n TypeOfEmail,\n} from 'components/share/EmailsInput/emailsInputModels';\n\nexport type UserPrefConnectOwnProps = UserPrefConnect;\n\nexport interface UserPrefConnectStateProps {\n userPrefValue: UserPreferencesData[K];\n splitNotificationsEmails: splitNotificationsEmails;\n}\ninterface splitNotificationsEmails {\n cash: readonly string[];\n orders: readonly string[];\n options: readonly string[];\n}\nexport interface UserPrefConnect {\n tooltipId?: string;\n notificationsType?: NotificationsType;\n live?: true;\n}\n\nexport interface UserPrefConnectDispatchProps {\n onChangeUserPref(\n value: UserPreferencesData[K] extends string ? string : UserPreferencesData[K],\n ): void;\n onChangeUserPrefWithSplit(value: readonly string[] | null, typeofEmail: TypeOfEmail): void;\n}\n\nexport type UserPrefConnectProps =\n UserPrefConnectStateProps & UserPrefConnectDispatchProps & UserPrefConnect;\n\nexport type UserPrefConnectSelectorsKeys = 'getUserPreferenceData';\nexport type UserPrefConnectSelectors = Pick;\n\nexport const mapStateToPropsUserPref =\n (\n key: K,\n ): MapStateToPropsHOF<\n UserPrefConnectStateProps,\n UserPrefConnectOwnProps,\n AppState,\n UserPrefConnectSelectors\n > =>\n sl =>\n (state, _ownProps) => {\n const splitNotificationsEmails = {\n cash: sl.getUserPreferenceData(state).splitNotificationsEmailsCash,\n orders: sl.getUserPreferenceData(state).splitNotificationsEmailsOrders,\n options: sl.getUserPreferenceData(state).splitNotificationsEmailsOptions,\n };\n\n return {\n userPrefValue: sl.getUserPreferenceData(state)[key],\n splitNotificationsEmails,\n };\n };\n\nexport type UserPrefConnectActionCreatorsKeys = 'userPreferenceDataChanged';\nexport type UserPrefConnectActionCreators = Pick;\n\nexport const mapDispatchToPropsUserPref =\n (\n key: K,\n ): MapDispatchToPropsHOF<\n UserPrefConnectDispatchProps,\n UserPrefConnectOwnProps,\n UserPrefConnectActionCreators\n > =>\n ac =>\n (dispatch, _ownProps) => ({\n onChangeUserPref(value) {\n dispatch(ac.userPreferenceDataChanged({ [key]: value as UserPreferencesData[K] }));\n },\n onChangeUserPrefWithSplit(\n value: readonly string[],\n typeofEmail: 'emailsCash' | 'emailsOrder' | 'emailsOptions',\n ) {\n switch (typeofEmail) {\n case 'emailsCash':\n dispatch(\n ac.userPreferenceDataChanged({\n splitNotificationsEmailsCash: value,\n }),\n );\n break;\n case 'emailsOrder':\n dispatch(\n ac.userPreferenceDataChanged({\n splitNotificationsEmailsOrders: value,\n }),\n );\n break;\n case 'emailsOptions':\n dispatch(\n ac.userPreferenceDataChanged({\n splitNotificationsEmailsOptions: value,\n }),\n );\n break;\n }\n },\n });\n","import { connect } from 'react-redux';\nimport { selectors } from 'state/selectors';\nimport { actionCreators } from 'state/actions';\nimport type { UserPreferencesData } from 'state/userPreferences';\nimport { mapStateToPropsUserPref, mapDispatchToPropsUserPref } from './connectUserPref';\nimport {\n mapStateToPropsDefaultHedgeType,\n mapDispatchToPropsDefaultHedgeType,\n} from './connectDefaultHedgeType';\nimport {\n mapStateToPropsDefaultPriceType,\n mapDispatchToPropsDefaultPriceType,\n} from './connectDefaultPriceType';\n\nexport const connectUserPref = (key: K) =>\n connect(mapStateToPropsUserPref(key)(selectors), mapDispatchToPropsUserPref(key)(actionCreators));\n\nexport const connectDefaultHedgeType = connect(\n mapStateToPropsDefaultHedgeType(selectors),\n mapDispatchToPropsDefaultHedgeType(actionCreators),\n);\n\nexport const connectDefaultPriceType = connect(\n mapStateToPropsDefaultPriceType(selectors),\n mapDispatchToPropsDefaultPriceType(actionCreators),\n);\n","import { EmailsInput } from 'components/share/EmailsInput/EmailsInput';\nimport {\n emailsReducerCash,\n emailsReducerDefault,\n emailsReducerOptions,\n emailsReducerOrders,\n} from 'components/share/EmailsInput/emailsLocalReducer';\nimport { usePreferences } from 'components/share/hooks/usePreferences';\nimport { useMemo, useReducer } from 'react';\nimport { connectUserPref } from './connect';\nimport type { UserPrefConnectProps } from './connect/connectUserPref';\n\nconst EmailComponent: React.FunctionComponent> = ({\n userPrefValue: emails,\n onChangeUserPrefWithSplit: onEmailsChangeWithSplit,\n splitNotificationsEmails: splitEmails,\n notificationsType,\n onChangeUserPref: onEmailsChange,\n}) => {\n const [emailsDefault, dispatchDefault] = useReducer(emailsReducerDefault, emails);\n const [emailsCash, dispatchCash] = useReducer(emailsReducerCash, splitEmails.cash);\n const [emailsOrders, dispatchOrders] = useReducer(emailsReducerOrders, splitEmails.orders);\n const [emailsOptions, dispatchOptions] = useReducer(emailsReducerOptions, splitEmails.options);\n const { splitNotifications } = usePreferences();\n\n const splitedEmails = useMemo(() => {\n if (!splitNotifications) {\n return { emails: emailsDefault, dispatch: dispatchDefault };\n } else {\n switch (notificationsType) {\n case 'orders':\n return { emails: emailsOrders, dispatch: dispatchOrders };\n case 'cash':\n return { emails: emailsCash, dispatch: dispatchCash };\n case 'options':\n return { emails: emailsOptions, dispatch: dispatchOptions };\n default:\n return { emails: [], dispatch: dispatchDefault };\n }\n }\n }, [\n emailsCash,\n emailsDefault,\n emailsOptions,\n emailsOrders,\n notificationsType,\n splitNotifications,\n ]);\n\n return (\n
\n \n
\n );\n};\nexport const NotificationEmails = connectUserPref('emails')(EmailComponent);\n","import { FormattedMessage } from 'react-intl';\nimport type { UserPreferencesData } from 'state/userPreferences';\n\ninterface UserPrefLabelProps {\n label: keyof UserPreferencesData | 'theme';\n children: React.ReactNode;\n}\n\nexport const UserPrefLabel: React.FunctionComponent = ({ label, children }) => (\n
\n \n {children}\n
\n);\n","import { useCallback } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { autoCloseGrowlAfterChoices, type AutoCloseGrowlAfter } from 'state/userPreferences';\nimport { connectUserPref } from './connect';\nimport type { UserPrefConnectProps } from './connect/connectUserPref';\nimport * as e2e from 'components/Form/Inputs/e2e';\nimport { UserPrefLabel } from './UserPrefLabel';\n\nconst NEVER = 'never';\n\nconst options = autoCloseGrowlAfterChoices.map((choice, index) => (\n \n {label => (\n \n {label}\n \n )}\n
\n \n {emails.map((mail, index) => (\n \n \n close\n \n \n {mail}\n \n \n ))}\n \n \n
\n));\n\nconst AutoCloseGrowlAfterSelect: React.FunctionComponent<\n UserPrefConnectProps<'autoCloseGrowlAfter'>\n> = ({ userPrefValue, onChangeUserPref }) => {\n const onChangeAutoCloseAfter = useCallback(\n (e: React.ChangeEvent) => {\n const { value } = e.currentTarget;\n onChangeUserPref(value === NEVER ? null : (Number(value) as AutoCloseGrowlAfter));\n },\n [onChangeUserPref],\n );\n return (\n \n \n {options}\n \n \n );\n};\n\nexport const AutoCloseGrowlAfterPref =\n connectUserPref('autoCloseGrowlAfter')(AutoCloseGrowlAfterSelect);\n","import { type ReactNode, useId } from 'react';\nimport { label, checkBox } from 'components/Form/Inputs/e2e';\nimport styled from 'styled-components';\nimport { FormattedMessage } from 'react-intl';\n\ninterface SwitchInputProps {\n value: boolean;\n disabled?: boolean;\n e2eHandle: string;\n children: ReactNode;\n onChange: (value: boolean) => void;\n}\n\nconst StatusLabel = styled.label.attrs({ className: 'custom-control-label mb-0 cursor-pointer' })`\n width: 2em;\n`;\n\nexport function SwitchInput({\n value,\n disabled = false,\n e2eHandle,\n children,\n onChange,\n}: SwitchInputProps): JSX.Element {\n const id = useId();\n const onSwitchChange = (e: React.ChangeEvent) => onChange(e.target.checked);\n return (\n <>\n \n
\n \n \n \n \n
\n \n );\n}\n","import type { UserPrefConnectProps } from './connect/connectUserPref';\nimport { SwitchInput } from 'components/share/formElements/SwitchInput';\nimport { FormattedMessage } from 'react-intl';\nimport type { UserPreferencesData } from 'state/userPreferences';\nimport { connectUserPref } from './connect';\nimport type { GetKeysExtending } from 'utils/object';\nimport { isDefined } from '@sgme/fp';\nimport { UncontrolledTooltip } from 'reactstrap';\n\ntype BooleanUserPreferencesKeys = GetKeysExtending;\n\nconst CheckboxUserPrefInput =\n (userPrefKey: K) =>\n ({ userPrefValue, onChangeUserPref, tooltipId }: UserPrefConnectProps): JSX.Element => {\n const tooltipTargetId = tooltipId?.replaceAll('.', '_');\n\n return (\n
\n void}\n e2eHandle={userPrefKey}\n >\n \n\n {isDefined(tooltipId) && isDefined(tooltipTargetId) && (\n <>\n \n info_outline\n \n\n \n \n \n \n )}\n \n
\n );\n };\n\nexport const CheckboxUserPref = (userPrefKey: K) =>\n connectUserPref(userPrefKey)(CheckboxUserPrefInput(userPrefKey));\n","import { CheckboxUserPref } from './CheckboxUserPref';\n\n// export const OneClickExecPref = CheckboxUserPref('oneClickExecution');\nexport const ShowSwapPointsPref = CheckboxUserPref('showSwapPoints');\nexport const SplitNotificationsPref = CheckboxUserPref('splitNotifications');\nexport const ResetTileToSpotOnQuoteExecutionPref = CheckboxUserPref(\n 'resetTileOnSuccessfulExecution',\n);\nexport const ShowDeltaStrikePref = CheckboxUserPref('showDeltaStrike');\nexport const OptionOneWayQuotationPref = CheckboxUserPref('optionOneWayQuotation');\nexport const OptionExpandGreekAndMktPref = CheckboxUserPref('optionExpandGreekAndMkt');\nexport const OptionDisplayMidVolatilityPref = CheckboxUserPref('optionDisplayMidVolatility');\nexport const OptionStrategyGroupLegsPref = CheckboxUserPref('optionStrategyGroupLegs');\nexport const OptionAlignCurrenciesPref = CheckboxUserPref('optionAlignCurrencies');\nexport const OrderQuickLimitPref = CheckboxUserPref('orderQuickLimit');\n","export interface ISeparators {\n localeThousandSeparator: string;\n localeDecimalSeparator: string;\n}\n\nconst localeSeparators: { [key: string]: ISeparators } = {\n en: {\n localeThousandSeparator: ',',\n localeDecimalSeparator: '.',\n },\n fr: {\n localeThousandSeparator: ' ',\n localeDecimalSeparator: ',',\n },\n};\n\nexport function getSeparatorByLocale(locale?: string): ISeparators {\n return locale === undefined\n ? localeSeparators.en\n : localeSeparators[locale.toLowerCase()] || localeSeparators.en;\n}\n\nexport function isAccelerator(keyReceived: string) {\n const key = keyReceived.toLowerCase();\n return key === 'k' || key === 'm' || key === 'g' || key === 'b';\n}\n\nexport function acceleratorOffset(keyReceived: string) {\n const key = keyReceived.toLowerCase();\n switch (key) {\n case 'k':\n return 3;\n case 'm':\n return 6;\n case 'g':\n case 'b':\n return 9;\n }\n return 0;\n}\n","import { isDefinedAndNonEmpty, isEmpty } from '@sgme/fp';\nimport { acceleratorOffset } from './numberInputConstants';\nimport {\n getCursorOffsetFromSelectionToValue,\n formatNumberAsStringToLocale,\n getCursorOffsetFromValueToSelection,\n} from './numberInputFormats';\n\ninterface Separators {\n localeThousandSeparator: string;\n localeDecimalSeparator: string;\n}\n\ninterface Boundaries {\n selectionStart: number;\n selectionEnd: number;\n}\n\nexport interface INumberInputDigitEdit extends Separators, Boundaries {\n value: string;\n valueLocale: string;\n key: string;\n}\n\nexport interface INumberInputChangeSign extends Boundaries {\n value: string;\n valueLocale: string;\n}\n\nexport interface INumberInputMultiplierEdit extends Separators {\n value: string;\n key: string;\n}\n\nexport interface ICopy extends Separators, Boundaries {\n value: string;\n valueLocale: string;\n}\n/**\n * given locale separators and the state of the input field before key press\n * returns the new number, localized number and cursor position\n */\nexport function insertDigitKey({\n value,\n valueLocale,\n key,\n selectionStart,\n selectionEnd,\n localeThousandSeparator,\n localeDecimalSeparator,\n}: INumberInputDigitEdit) {\n // given the localized value and the thousand separator,\n // what is the offset between the input field cursor position\n // and the inner non formatted value position\n const valueStartOffset = getCursorOffsetFromSelectionToValue(\n selectionStart,\n valueLocale,\n localeThousandSeparator,\n );\n const valueEndOffset = getCursorOffsetFromSelectionToValue(\n selectionEnd,\n valueLocale,\n localeThousandSeparator,\n );\n const valueCursorPositionStart = selectionStart - valueStartOffset;\n const valueCursorPositionEnd = selectionEnd - valueEndOffset;\n\n // a priori, a key is added and cursor moves one to the right\n let valueCursorDelta = key.length;\n\n // if key is a dot, remove all other dots\n let leftHandString = value.substr(0, valueCursorPositionStart);\n if (key === '.' && leftHandString.split('.').length > 1) {\n leftHandString = leftHandString.split('.').join('');\n // left hand side dots implies cursor remains in position\n valueCursorDelta = 0;\n }\n let rightHandString = value.substr(valueCursorPositionEnd);\n if (key === '.' && rightHandString.split('.').length > 1) {\n rightHandString = rightHandString.split('.').join('');\n }\n\n const newValue = [leftHandString, key, rightHandString].join('');\n const newValueLocale = formatNumberAsStringToLocale(\n newValue,\n localeThousandSeparator,\n localeDecimalSeparator,\n );\n\n // update the inner cursor position\n const newValuePosition = valueCursorPositionStart + valueCursorDelta;\n\n // calculate corresponding cursor position in the input field\n const newSelectionOffset = getCursorOffsetFromValueToSelection(\n newValuePosition,\n newValueLocale,\n localeThousandSeparator,\n );\n const cursorPosition = newValuePosition + newSelectionOffset;\n\n return {\n cursorPosition,\n state: { value: newValue, valueLocale: newValueLocale },\n };\n}\n/**\n * insert or remove '-' sign and offset cursor position acordingly\n */\nexport function changeSign({ value, valueLocale, selectionEnd }: INumberInputChangeSign) {\n const negative = value[0] === '-';\n const sign = negative ? -1 : 1;\n const cursorPosition = selectionEnd + sign;\n const state = {\n value: negative ? value.slice(1) : '-'.concat(value),\n valueLocale: negative ? valueLocale.slice(1) : '-'.concat(valueLocale),\n };\n return { cursorPosition, state };\n}\n\n/**\n * given locale separators and the state of the input field before key press\n * returns the new number and localized number\n */\nexport function insertAcceleratorKey({\n value,\n key,\n localeThousandSeparator,\n localeDecimalSeparator,\n}: INumberInputMultiplierEdit) {\n // map each key to a multiplier (power of ten)\n const multiplier = acceleratorOffset(key);\n\n // split value in integer and decimal parts\n let [integer, decimal] = value.split('.') as [string, string | undefined];\n // if the decimal part has no number, ignore it\n decimal = isDefinedAndNonEmpty(decimal) ? decimal : undefined;\n // if there is no integer and there is no decimal part, ignore key press\n if (isEmpty(integer) && decimal === undefined) {\n return null;\n }\n\n // string multiplication\n for (let index = 0; index < multiplier; index++) {\n if (decimal === undefined) {\n // add zero if there is no decimal digit\n integer = integer.concat('0');\n } else {\n // add most significant decimal digit\n integer = integer.concat(decimal[0]);\n // strip it from the decimal part, if its length reaches 0, explicitly remove decimal reference\n decimal = decimal.length > 1 ? decimal.slice(1) : undefined;\n }\n }\n\n const newValue = decimal === undefined ? integer : [integer, decimal].join('.');\n const newValueLocale = formatNumberAsStringToLocale(\n newValue,\n localeThousandSeparator,\n localeDecimalSeparator,\n );\n return { value: newValue, valueLocale: newValueLocale };\n}\n\nexport function copy({\n value,\n valueLocale,\n selectionStart,\n selectionEnd,\n localeThousandSeparator,\n localeDecimalSeparator,\n}: ICopy) {\n const start =\n selectionStart -\n getCursorOffsetFromSelectionToValue(selectionStart, valueLocale, localeThousandSeparator);\n const end =\n selectionEnd -\n getCursorOffsetFromSelectionToValue(selectionEnd, valueLocale, localeThousandSeparator);\n return value\n .substr(start, end - start)\n .split('.')\n .join(localeDecimalSeparator);\n}\n","import { shallowEqual } from './shallowEqual';\n\n/**\n * This unique key should not be exported.\n * It enforces that only code in the scope of this\n * module can access previous props from state\n */\nconst props = Symbol('previous props');\n\nexport interface PreviousProps {\n [props]?: T;\n}\n\nfunction getPreviousProps(state: PreviousProps): T | undefined {\n return state[props];\n}\n\nfunction addNextPropsToState(state: PreviousProps | null, nextProps: T) {\n const nextState = { [props]: nextProps };\n return state === null ? nextState : { ...(state as any), ...nextState };\n}\n\nexport function deriveStateOnChangedProps>(\n getDerivedStateFromProps: React.GetDerivedStateFromProps,\n): React.GetDerivedStateFromProps {\n return (nextProps, previousState) =>\n previousState !== null && shallowEqual(nextProps, getPreviousProps(previousState))\n ? null\n : addNextPropsToState(getDerivedStateFromProps(nextProps, previousState), nextProps);\n}\n","import { Component } from 'react';\nimport { noop } from '@sgme/fp';\nimport type { RenderPropChildren } from 'typings/utils';\nimport { getSeparatorByLocale, isAccelerator } from 'utils/numberInputConstants';\nimport { formatNumberAsStringToLocale } from 'utils/numberInputFormats';\nimport {\n insertDigitKey,\n insertAcceleratorKey,\n copy,\n changeSign,\n} from 'utils/numberInputKeyHandlers';\nimport { deriveStateOnChangedProps, type PreviousProps } from 'utils/stateProps';\n\ntype Copy = (selectionStart: number, selectionEnd: number) => string;\ntype Cut = (\n selectionStart: number,\n selectionEnd: number,\n done: (position: number | null, isDirty: boolean) => void,\n) => string;\n\ntype KeyPress = (\n key: string,\n selectionStart: number,\n selectionEnd: number,\n done: (position: number | null, isDirty: boolean) => void,\n) => void;\n\ntype Paste = (\n keys: readonly string[],\n selectionStart: number,\n selectionEnd: number,\n done: (position: number | null, isDirty: boolean) => void,\n) => void;\n\ninterface DecimalKeyProps {\n decimal: string;\n withAccelerators?: boolean;\n allowNegative?: boolean;\n integerOnly?: boolean;\n locale?: string;\n autofocus?: boolean;\n}\ninterface DecimalKeyState extends PreviousProps {\n value: string;\n valueLocale: string;\n}\nexport interface DecimalKeyChildrenProps {\n currentValue: string;\n valueLocale: string;\n onKeyDown: KeyPress;\n onPaste: Paste;\n onCopy: Copy;\n onCut: Cut;\n reset(cb?: (v: string) => void): void;\n}\n\nexport class DecimalKey extends Component<\n RenderPropChildren & DecimalKeyProps,\n DecimalKeyState\n> {\n public static getDerivedStateFromProps = deriveStateOnChangedProps(nextDecimalKeyState);\n public state = decimalKeyStateFromProps(this.props);\n private get dirty() {\n return this.state.value !== this.props.decimal;\n }\n private onCopy: Copy = (selectionStart, selectionEnd) => {\n const sep = getSeparatorByLocale(this.props.locale);\n const edit = { ...this.state, ...sep, selectionStart, selectionEnd };\n const clipboard = copy(edit);\n return clipboard;\n };\n private onCut: Cut = (selectionStart, selectionEnd, done) => {\n const sep = getSeparatorByLocale(this.props.locale);\n const edit = { ...this.state, ...sep, selectionStart, selectionEnd };\n const clipboard = copy(edit);\n const { cursorPosition, state } = insertDigitKey({ ...edit, key: '' });\n this.setState(\n () => state,\n () => done(cursorPosition, this.dirty),\n );\n return clipboard;\n };\n private onPaste: Paste = (keys, selectionStart, selectionEnd, done) => {\n const sep = getSeparatorByLocale(this.props.locale);\n const {\n value,\n valueLocale,\n selectionStart: position,\n } = keys\n .filter(key => key === sep.localeDecimalSeparator || isDecimal(key))\n .reduce(\n (edit, key) => {\n const { cursorPosition, state } = insertDigitKey({\n ...edit,\n key: isDecimalSeparator(key) ? '.' : key,\n });\n return {\n ...edit,\n selectionEnd: cursorPosition,\n selectionStart: cursorPosition,\n ...state,\n };\n },\n { selectionStart, selectionEnd, ...this.state, ...sep },\n );\n this.setState(\n () => ({ value, valueLocale }),\n () => done(position, this.dirty),\n );\n };\n private onKeyDown: KeyPress = (key, selectionStart, selectionEnd, done) => {\n const edit = {\n key,\n selectionStart,\n selectionEnd,\n value: this.state.value,\n valueLocale: this.state.valueLocale,\n ...getSeparatorByLocale(this.props.locale),\n };\n if (isDecimal(key)) {\n const { cursorPosition, state } = insertDigitKey(edit);\n this.setState(\n () => state,\n () => done(cursorPosition, this.dirty),\n );\n } else if (isDecimalSeparator(key) && this.props.integerOnly !== true) {\n const { cursorPosition, state } = insertDigitKey({ ...edit, key: '.' });\n this.setState(\n () => state,\n () => done(cursorPosition, this.dirty),\n );\n } else if (isMinus(key) && this.props.allowNegative === true) {\n const { cursorPosition, state } = changeSign({ ...edit });\n this.setState(\n () => state,\n () => done(cursorPosition, this.dirty),\n );\n } else if (isAccelerator(key) && this.props.withAccelerators !== false) {\n const state = insertAcceleratorKey({\n key,\n value: this.state.value,\n ...getSeparatorByLocale(this.props.locale),\n });\n if (state !== null) {\n this.setState(() => state);\n }\n } else if (key === 'Backspace') {\n const start =\n selectionStart === selectionEnd && selectionStart !== 0 ? selectionEnd - 1 : selectionStart;\n const { cursorPosition, state } = insertDigitKey({\n ...edit,\n selectionStart: start,\n key: '',\n });\n this.setState(\n () => state,\n () => done(cursorPosition, this.dirty),\n );\n } else if (key === 'Delete') {\n const end = selectionStart === selectionEnd ? selectionEnd + 1 : selectionEnd;\n const { cursorPosition, state } = insertDigitKey({\n ...edit,\n selectionEnd: end,\n key: '',\n });\n this.setState(\n () => state,\n () => done(cursorPosition, this.dirty),\n );\n }\n };\n private reset = (cb: (v: string) => void = noop) => {\n this.setState(\n (_, props) => decimalKeyStateFromProps(props),\n () => cb(this.state.value),\n );\n };\n private get renderProps(): DecimalKeyChildrenProps {\n const { value: currentValue, valueLocale } = this.state;\n const { onKeyDown, onPaste, onCopy, onCut, reset } = this;\n const callbacks = { onKeyDown, onPaste, onCopy, onCut, reset };\n return { currentValue, valueLocale, ...callbacks };\n }\n public render() {\n return this.props.children(this.renderProps);\n }\n}\n\nfunction isDecimalSeparator(key: string) {\n return key === '.' || key === 'Decimal' || key === ',';\n}\n\nfunction isDecimal(key: string) {\n return key.length === 1 && key <= '9' && key >= '0';\n}\n\nfunction isMinus(key: string) {\n return key === '-';\n}\n\nfunction decimalKeyStateFromProps(props: Readonly): DecimalKeyState {\n const { locale, decimal } = props;\n const { localeDecimalSeparator, localeThousandSeparator } = getSeparatorByLocale(locale);\n const valueLocale = formatNumberAsStringToLocale(\n decimal,\n localeThousandSeparator,\n localeDecimalSeparator,\n );\n return { value: decimal, valueLocale };\n}\n\nfunction nextDecimalKeyState(\n props: Readonly,\n state: Readonly,\n): DecimalKeyState {\n if (props.autofocus === true) {\n return state;\n }\n return decimalKeyStateFromProps(props);\n}\n","import React from 'react';\nimport type { RenderPropChildren } from 'typings/utils';\n\ntype ScopedEventHandler> = (value: V) => ReactHandlers[K];\n\nexport type ScopedEventHandlers> = {\n [P in K]: ScopedEventHandler;\n};\n\ninterface EventHandlersProps {\n value: V;\n}\n\nexport type HandlersChildrenProps> = Pick, K>;\n\nexport function createEventHandler>(\n scopedEventHandlers: ScopedEventHandlers,\n): React.ComponentClass<\n EventHandlersProps & RenderPropChildren>,\n Record\n> {\n return class EventHandlerRenderProps extends React.Component<\n EventHandlersProps & RenderPropChildren>,\n Record\n > {\n private eventHandlers = ((scopedHandlers: ScopedEventHandlers) => {\n const handlers = {} as HandlersChildrenProps;\n const keys = Object.keys(scopedHandlers) as K[];\n keys.forEach(cb => {\n if (scopedHandlers.hasOwnProperty(cb)) {\n handlers[cb] = (event: any) => {\n scopedHandlers[cb](this.props.value)(event);\n };\n }\n });\n return handlers;\n })(scopedEventHandlers);\n public render() {\n return this.props.children(this.eventHandlers);\n }\n };\n}\n\ntype ReactHandlers = ClipboardHandlers &\n CompositionHandlers &\n FocusHandlers &\n FormHandlers &\n ImageHandlers &\n KeyboardHandlers &\n MediaHandlers &\n MouseHandlers &\n SelectionHandlers &\n TouchHandlers &\n UIHandlers &\n WheelHandlers &\n AnimationHandlers &\n TransitionHandlers;\n\ninterface ClipboardHandlers {\n onCopy: React.ClipboardEventHandler;\n onCopyCapture: React.ClipboardEventHandler;\n onCut: React.ClipboardEventHandler;\n onCutCapture: React.ClipboardEventHandler;\n onPaste: React.ClipboardEventHandler;\n onPasteCapture: React.ClipboardEventHandler;\n}\ninterface CompositionHandlers {\n onCompositionEnd: React.CompositionEventHandler;\n onCompositionEndCapture: React.CompositionEventHandler;\n onCompositionStart: React.CompositionEventHandler;\n onCompositionStartCapture: React.CompositionEventHandler;\n onCompositionUpdate: React.CompositionEventHandler;\n onCompositionUpdateCapture: React.CompositionEventHandler;\n}\n\ninterface FocusHandlers {\n onFocus: React.FocusEventHandler;\n onFocusCapture: React.FocusEventHandler;\n onBlur: React.FocusEventHandler;\n onBlurCapture: React.FocusEventHandler;\n}\n\ninterface FormHandlers {\n onChange: React.FormEventHandler;\n onChangeCapture: React.FormEventHandler;\n onInput: React.FormEventHandler;\n onInputCapture: React.FormEventHandler;\n onReset: React.FormEventHandler;\n onResetCapture: React.FormEventHandler;\n onSubmit: React.FormEventHandler;\n onSubmitCapture: React.FormEventHandler;\n onInvalid: React.FormEventHandler;\n onInvalidCapture: React.FormEventHandler;\n}\n\ninterface ImageHandlers {\n onLoad: React.ReactEventHandler;\n onLoadCapture: React.ReactEventHandler;\n onError: React.ReactEventHandler; // also a Media Event\n onErrorCapture: React.ReactEventHandler; // also a Media Event\n}\n\ninterface KeyboardHandlers {\n onKeyDown: React.KeyboardEventHandler;\n onKeyDownCapture: React.KeyboardEventHandler;\n onKeyPress: React.KeyboardEventHandler;\n onKeyPressCapture: React.KeyboardEventHandler;\n onKeyUp: React.KeyboardEventHandler;\n onKeyUpCapture: React.KeyboardEventHandler;\n}\n\ninterface MediaHandlers {\n onAbort: React.ReactEventHandler;\n onAbortCapture: React.ReactEventHandler;\n onCanPlay: React.ReactEventHandler;\n onCanPlayCapture: React.ReactEventHandler;\n onCanPlayThrough: React.ReactEventHandler;\n onCanPlayThroughCapture: React.ReactEventHandler;\n onDurationChange: React.ReactEventHandler;\n onDurationChangeCapture: React.ReactEventHandler;\n onEmptied: React.ReactEventHandler;\n onEmptiedCapture: React.ReactEventHandler;\n onEncrypted: React.ReactEventHandler;\n onEncryptedCapture: React.ReactEventHandler;\n onEnded: React.ReactEventHandler;\n onEndedCapture: React.ReactEventHandler;\n onLoadedData: React.ReactEventHandler;\n onLoadedDataCapture: React.ReactEventHandler;\n onLoadedMetadata: React.ReactEventHandler;\n onLoadedMetadataCapture: React.ReactEventHandler;\n onLoadStart: React.ReactEventHandler;\n onLoadStartCapture: React.ReactEventHandler;\n onPause: React.ReactEventHandler;\n onPauseCapture: React.ReactEventHandler;\n onPlay: React.ReactEventHandler;\n onPlayCapture: React.ReactEventHandler;\n onPlaying: React.ReactEventHandler;\n onPlayingCapture: React.ReactEventHandler;\n onProgress: React.ReactEventHandler;\n onProgressCapture: React.ReactEventHandler;\n onRateChange: React.ReactEventHandler;\n onRateChangeCapture: React.ReactEventHandler;\n onSeeked: React.ReactEventHandler;\n onSeekedCapture: React.ReactEventHandler;\n onSeeking: React.ReactEventHandler;\n onSeekingCapture: React.ReactEventHandler;\n onStalled: React.ReactEventHandler;\n onStalledCapture: React.ReactEventHandler;\n onSuspend: React.ReactEventHandler;\n onSuspendCapture: React.ReactEventHandler;\n onTimeUpdate: React.ReactEventHandler;\n onTimeUpdateCapture: React.ReactEventHandler;\n onVolumeChange: React.ReactEventHandler;\n onVolumeChangeCapture: React.ReactEventHandler;\n onWaiting: React.ReactEventHandler;\n onWaitingCapture: React.ReactEventHandler;\n}\n\ninterface MouseHandlers {\n onClick: React.MouseEventHandler;\n onClickCapture: React.MouseEventHandler;\n onContextMenu: React.MouseEventHandler;\n onContextMenuCapture: React.MouseEventHandler;\n onDoubleClick: React.MouseEventHandler;\n onDoubleClickCapture: React.MouseEventHandler;\n onDrag: React.DragEventHandler;\n onDragCapture: React.DragEventHandler;\n onDragEnd: React.DragEventHandler;\n onDragEndCapture: React.DragEventHandler;\n onDragEnter: React.DragEventHandler;\n onDragEnterCapture: React.DragEventHandler;\n onDragExit: React.DragEventHandler;\n onDragExitCapture: React.DragEventHandler;\n onDragLeave: React.DragEventHandler;\n onDragLeaveCapture: React.DragEventHandler;\n onDragOver: React.DragEventHandler;\n onDragOverCapture: React.DragEventHandler;\n onDragStart: React.DragEventHandler;\n onDragStartCapture: React.DragEventHandler;\n onDrop: React.DragEventHandler;\n onDropCapture: React.DragEventHandler;\n onMouseDown: React.MouseEventHandler;\n onMouseDownCapture: React.MouseEventHandler;\n onMouseEnter: React.MouseEventHandler;\n onMouseLeave: React.MouseEventHandler;\n onMouseMove: React.MouseEventHandler;\n onMouseMoveCapture: React.MouseEventHandler;\n onMouseOut: React.MouseEventHandler;\n onMouseOutCapture: React.MouseEventHandler;\n onMouseOver: React.MouseEventHandler;\n onMouseOverCapture: React.MouseEventHandler;\n onMouseUp: React.MouseEventHandler;\n onMouseUpCapture: React.MouseEventHandler;\n}\n\ninterface SelectionHandlers {\n onSelect: React.ReactEventHandler;\n onSelectCapture: React.ReactEventHandler;\n}\n\ninterface TouchHandlers {\n onTouchCancel: React.TouchEventHandler;\n onTouchCancelCapture: React.TouchEventHandler;\n onTouchEnd: React.TouchEventHandler;\n onTouchEndCapture: React.TouchEventHandler;\n onTouchMove: React.TouchEventHandler;\n onTouchMoveCapture: React.TouchEventHandler;\n onTouchStart: React.TouchEventHandler;\n onTouchStartCapture: React.TouchEventHandler;\n}\n\ninterface UIHandlers {\n onScroll: React.UIEventHandler;\n onScrollCapture: React.UIEventHandler;\n}\ninterface WheelHandlers {\n onWheel: React.WheelEventHandler;\n onWheelCapture: React.WheelEventHandler;\n}\ninterface AnimationHandlers {\n onAnimationStart: React.AnimationEventHandler;\n onAnimationStartCapture: React.AnimationEventHandler;\n onAnimationEnd: React.AnimationEventHandler;\n onAnimationEndCapture: React.AnimationEventHandler;\n onAnimationIteration: React.AnimationEventHandler;\n onAnimationIterationCapture: React.AnimationEventHandler;\n}\ninterface TransitionHandlers {\n onTransitionEnd: React.TransitionEventHandler;\n onTransitionEndCapture: React.TransitionEventHandler;\n}\n","import { useState } from 'react';\nimport type { RenderPropChildren } from 'typings/utils';\nimport { noop } from '@sgme/fp';\nimport { DecimalKey, type DecimalKeyChildrenProps } from './DecimalKey';\nimport { createEventHandler } from 'components/share/createEventHandler';\nimport { type ObjectPick, pick } from 'utils/object';\n\nexport interface NumberInputProps {\n value: string;\n locale: string;\n withAccelerators?: boolean;\n /**\n * @default false\n */\n allowNegative?: boolean;\n /**\n * @default false\n */\n integerOnly?: boolean;\n autofocus?: boolean;\n onSubmit(value: string): void;\n onBlurPristine?(): void;\n onFocus?(event: React.FocusEvent): void;\n onBlur?(): void;\n onDirty?(isDirty: boolean): void;\n}\nexport interface NumberInputChildrenProps {\n value: string;\n onChange: React.ChangeEventHandler;\n onBlur: React.FocusEventHandler;\n onFocus: React.FocusEventHandler;\n onKeyDown: React.KeyboardEventHandler;\n onPaste: React.ClipboardEventHandler;\n onCopy: React.ClipboardEventHandler;\n onCut: React.ClipboardEventHandler;\n}\nexport const NumberInputRenderProps: React.FunctionComponent<\n RenderPropChildren & NumberInputProps\n> = ({ children, ...props }) => {\n const [frozenValue, setFrozenValue] = useState();\n return (\n \n {decimalKey => (\n \n {events =>\n children({\n value: decimalKey.valueLocale,\n onChange: noop,\n ...events,\n })\n }\n \n )}\n \n );\n};\n\n/**\n * handlers\n */\nconst valueFromDecimalKey = [\n 'onKeyDown',\n 'onPaste',\n 'onCopy',\n 'onCut',\n 'reset',\n 'currentValue',\n] as const;\ntype ScopedHandlersValueFromDecimalkey = ObjectPick<\n DecimalKeyChildrenProps,\n (typeof valueFromDecimalKey)[number]\n>;\nexport const getNumberInputHandlerValueFromDecimalKey = pick(...valueFromDecimalKey);\nconst valueFromProp = [\n 'onFocus',\n 'value',\n 'onDirty',\n 'onSubmit',\n 'onBlur',\n 'onBlurPristine',\n] as const;\ntype ScopedHandlersValueFromProps = ObjectPick;\nexport const getNumberInputHandlerValueFromProps = pick(...valueFromProp);\ntype ScopedHandlersValue = ScopedHandlersValueFromDecimalkey &\n ScopedHandlersValueFromProps & {\n frozenValue: string | undefined;\n setFrozenValue: (value?: string) => void;\n };\n\nexport const NumberInputHandler = createEventHandler<\n ScopedHandlersValue,\n HTMLInputElement,\n 'onFocus' | 'onKeyDown' | 'onBlur' | 'onPaste' | 'onCopy' | 'onCut'\n>({\n onCut:\n ({ onCut, onDirty = noop }) =>\n event => {\n const { selectionStart, selectionEnd } = event.currentTarget;\n if (selectionStart === null || selectionEnd === null) {\n return;\n }\n const setSelectionRange = eventSetSelectionRange(event);\n const clip = onCut(selectionStart, selectionEnd, (position, dirty) => {\n setSelectionRange(position);\n onDirty(dirty);\n });\n\n event.clipboardData.setData('text', clip);\n event.preventDefault();\n },\n onCopy:\n ({ onCopy }) =>\n event => {\n const { selectionStart, selectionEnd } = event.currentTarget;\n if (selectionStart === null || selectionEnd === null) {\n return;\n }\n const clip = onCopy(selectionStart, selectionEnd);\n event.clipboardData.setData('text', clip);\n event.preventDefault();\n },\n onPaste:\n ({ onPaste, onDirty = noop }) =>\n event => {\n const clipboardData = event.clipboardData;\n if (clipboardData) {\n const clipboard = clipboardData\n .getData('text')\n .trim()\n .split(/[\\r\\n\\t]+/, 1)[0]\n .trim()\n .split('');\n const { selectionStart, selectionEnd } = event.currentTarget;\n if (selectionStart !== null && selectionEnd !== null) {\n const setSelectionRange = eventSetSelectionRange(event);\n onPaste(clipboard, selectionStart, selectionEnd, (position, dirty) => {\n setSelectionRange(position);\n onDirty(dirty);\n });\n }\n }\n },\n onFocus:\n ({ onFocus = noop, value, setFrozenValue }) =>\n event => {\n event.currentTarget.select();\n setFrozenValue(value);\n onFocus(event);\n },\n onKeyDown:\n ({ value, onDirty = noop, reset, onKeyDown }) =>\n event => {\n switch (event.key) {\n case 'Enter':\n case 'Tab':\n return;\n case 'Escape':\n reset(c => {\n onDirty(c !== value);\n });\n return;\n }\n const { selectionStart, selectionEnd } = event.currentTarget;\n if (selectionStart !== null && selectionEnd !== null) {\n const setSelectionRange = eventSetSelectionRange(event);\n onKeyDown(event.key, selectionStart, selectionEnd, (position, dirty) => {\n setSelectionRange(position);\n onDirty(dirty);\n });\n }\n },\n onBlur:\n ({\n currentValue,\n onSubmit,\n onBlurPristine = noop,\n onBlur = noop,\n setFrozenValue,\n frozenValue,\n }) =>\n () => {\n if (frozenValue !== currentValue) {\n onSubmit(currentValue);\n } else {\n onBlurPristine();\n }\n onBlur();\n setFrozenValue();\n },\n});\n\nfunction eventSetSelectionRange(event: React.SyntheticEvent) {\n event.persist();\n const { currentTarget } = event;\n const setSelectionRange = currentTarget.setSelectionRange.bind(currentTarget);\n return (position: number | null) => {\n if (position === null) {\n return;\n }\n event.preventDefault();\n setSelectionRange(position, position);\n };\n}\n","import { createContext } from 'react';\nimport type { FormType } from './typings';\n\nexport const FormTypeContext = createContext('form');\nFormTypeContext.displayName = 'FormTypeContext';\n\nexport const { Provider: FormTypeProvider, Consumer: FormTypeConsumer } = FormTypeContext;\n","import { forwardRef, useContext, type ReactNode, type Ref } from 'react';\nimport { SizeContext } from './SizeContext';\nimport { FormTypeContext } from './formTypeContext';\nimport { inputGroupClassName } from './className';\n\nexport const InputGroup = forwardRef(\n ({ className = '', children }, ref: Ref) => {\n const size = useContext(SizeContext);\n const formType = useContext(FormTypeContext);\n return formType === 'form' ? (\n
\n ) : (\n \n
\n \n );\n },\n);\n\nInputGroup.displayName = 'InputGroup';\n","import { createContext, useContext } from 'react';\n\nconst tabContext = createContext(undefined);\ntabContext.displayName = 'TabContext';\nexport const { Provider: TabContextProvider, Consumer: TabContextConsumer } = tabContext;\n\nexport const useTabContext = () => useContext(tabContext);\n","import { memo } from 'react';\nimport { useIntl } from 'react-intl';\nimport { noop } from '@sgme/fp';\nimport { NumberInputRenderProps } from 'components/share/NumberInput/NumberInputRenderProps';\nimport * as e2e from './e2e';\nimport type { NumberInputProps } from './typings';\nimport { inputClassName } from './className';\nimport { InputGroup } from './InputGroup';\nimport { useTabContext } from 'components/contexts/tabContext';\n\nexport const BareNumberInput = memo((props: NumberInputProps) => {\n const { locale } = useIntl();\n const tabIndex = useTabContext();\n return (\n \n {({ value, ...renderProps }) => (\n \n )}\n \n );\n});\n\nexport const NumberInput = (props: NumberInputProps) => (\n \n \n \n);\n","export const coerceDefaultNotional = (value: string): string | null =>\n value === '' || parseFloat(value) === 0 ? null : value;\n","import { useCallback } from 'react';\nimport { BareNumberInput } from 'components/Form/Inputs/NumberInput';\nimport type { UserPrefConnectProps } from './connect/connectUserPref';\nimport { connectUserPref } from './connect';\nimport { coerceDefaultNotional } from './coerceDefaultNotional';\nimport { noop } from '@sgme/fp';\nimport { UserPrefLabel } from './UserPrefLabel';\n\nconst DefaultNotionalInput: React.FunctionComponent> = ({\n userPrefValue: defaultNotional,\n onChangeUserPref,\n}) => {\n const onDefaultNotional = useCallback(\n (value: string) => {\n onChangeUserPref(coerceDefaultNotional(value));\n },\n [onChangeUserPref],\n );\n return (\n \n \n \n );\n};\n\nexport const DefaultNotionalPref = connectUserPref('defaultNotional')(DefaultNotionalInput);\n","import { createSelector } from 'reselect';\nimport type { ActionCreators } from 'state/actions';\nimport type { BlotterEntry } from 'state/blotter/blotterEntryModel';\nimport type {\n BlotterHistoricalError,\n BlotterTab,\n BlotterTabMetadata,\n FxColumnState,\n} from 'state/blotter/blotterModel';\nimport type { AppState } from 'state/model';\nimport type { ClientMap } from 'state/referenceData/referenceDataModel';\nimport type { Selectors } from 'state/selectors';\nimport type { AccountLengthOption } from 'state/userPreferences/userPreferencesModel';\nimport type { MapDispatchToPropsHOF, MapStateToPropsFactoryHOF } from 'typings/redux-utils';\nimport { assertUnreachable } from '@sgme/fp';\nimport type { EnhancedBlotterEntry } from '../LiveBlotter/liveBlotterType';\n\nexport interface LiveBlotterConnectOwnProps {}\n\nexport interface LiveBlotterConnectStateProps {\n isOpen: boolean;\n error: BlotterHistoricalError;\n tableHasError?: true;\n blotterData: readonly EnhancedBlotterEntry[];\n activeTab: BlotterTab;\n activeTabMetadata: BlotterTabMetadata;\n selectedId: string | null;\n}\n\nexport interface LiveBlotterConnectDispatchProps {\n onBlotterTabMetadataChanged(tab: BlotterTab, tabMetadata: Partial): void;\n onBlotterClickAction(selectedId: string, childrenIds: readonly string[] | null): void;\n onBlotterTableCrash(): void;\n}\n\nexport type LiveBlotterConnectSelectors = Selectors;\n\nconst emptyArray: readonly EnhancedBlotterEntry[] = [];\n\nconst makeGetTrades = (sl: Selectors) => (state: AppState) => {\n const mode = sl.getBlotterMode(state);\n const activeTab = sl.getBlotterActiveTab(state);\n switch (activeTab) {\n case 'cash':\n return mode === 'intraday'\n ? sl.getBlotterIntradayCashTrades(state)\n : sl.getBlotterHistoricalCashTrades(state);\n case 'option':\n return mode === 'intraday'\n ? sl.getBlotterIntradayOptionTrades(state)\n : sl.getBlotterHistoricalOptionTrades(state);\n case 'order':\n return sl.getBlotterOrders(state);\n case 'accumulator':\n return mode === 'intraday'\n ? sl.getBlotterIntradayAccumulatorTrades(state)\n : sl.getBlotterHistoricalAccumulatorTrades(state);\n default:\n assertUnreachable(activeTab, 'Unhandled blotter active tab type');\n }\n};\n\nconst getAccountDisplayNameHoF =\n (userClients: Readonly, accountNameLength: AccountLengthOption) =>\n (entry: BlotterEntry): string | null => {\n if (entry.instrument === 'Order') {\n const client =\n entry.values.account !== null ? userClients[entry.values.account] : userClients[0];\n if (client) {\n return accountNameLength === 'Short' && client.externalCompanyName\n ? client.externalCompanyName\n : client.companyName;\n } else {\n return entry.values.account;\n }\n } else {\n return accountNameLength === 'Long' && entry.values.accountLongName\n ? entry.values.accountLongName\n : entry.values.account;\n }\n };\n\nconst blotterEntryEnhancer = (\n userClients: Readonly,\n accountNameLength: AccountLengthOption,\n) => {\n const getDisplayAccountName = getAccountDisplayNameHoF(userClients, accountNameLength);\n return (entry: BlotterEntry): EnhancedBlotterEntry => ({\n ...entry,\n values: {\n ...(entry.values as any), // Sorry but Typescript doesn't handle well the discriminated union spread here\n accountDisplayName: getDisplayAccountName(entry),\n },\n });\n};\n\nexport const mapStateToPropsLiveBlotter: MapStateToPropsFactoryHOF<\n LiveBlotterConnectStateProps,\n LiveBlotterConnectOwnProps,\n AppState,\n LiveBlotterConnectSelectors\n> = sl => () => {\n const getTrades = makeGetTrades(sl);\n const getEnhancedTrades = createSelector(\n [getTrades, sl.getAllUserClients, sl.getAccountNameLength],\n (trades, clients, accountNameLength) =>\n trades.map(blotterEntryEnhancer(clients, accountNameLength)),\n );\n return state => {\n const activeTab = sl.getBlotterActiveTab(state);\n const activeTabMetadata = sl.getBlotterTabMetadata(state, activeTab);\n const selectedId = sl.getBlotterDetailsPanelSelectedId(state);\n if (!sl.isInternalUser(state)) {\n activeTabMetadata.columnsState = getColumnsForExternalUser(activeTabMetadata.columnsState);\n }\n const error = sl.getBlotterHistoricalError(state);\n const isOpen = sl.getBlotterIsOpen(state);\n\n const blotterData = isOpen ? getEnhancedTrades(state) : emptyArray;\n\n return {\n isOpen,\n activeTab,\n error,\n blotterData,\n activeTabMetadata,\n selectedId,\n tableHasError: sl.getBlotterErrors(state).includes('tableCrash') || undefined,\n userType: sl.getUserInfoUserType(state),\n };\n };\n};\n\n// you can whitelist action creators after implementation\nexport type LiveBlotterConnectActionCreators = ActionCreators;\n/*\nexport type LiveBlotterConnectActionCreatorsKeys = 'optionLegPropertyChanged';\nexport type LiveBlotterConnectActionCreators = Pick;\n*/\n\nexport const mapDispatchToPropsLiveBlotter: MapDispatchToPropsHOF<\n LiveBlotterConnectDispatchProps,\n LiveBlotterConnectOwnProps,\n LiveBlotterConnectActionCreators\n> = ac => dispatch => ({\n onBlotterTabMetadataChanged(tab, tabMetadata) {\n dispatch(ac.blotterTabMetadataChanged(tab, tabMetadata));\n },\n onBlotterClickAction(selectedId, childrenIds) {\n dispatch(ac.blotterClickActionThunk(selectedId, 'Display', childrenIds));\n },\n onBlotterTableCrash() {\n dispatch(ac.blotterTableCrashed());\n },\n});\n\nfunction getColumnsForExternalUser(columnsStates: readonly FxColumnState[]) {\n return columnsStates.filter(\n columnsState => columnsState.colId !== 'portfolio' && columnsState.colId !== 'salesFullName',\n );\n}\n","import type { MapDispatchToPropsHOF, MapStateToPropsFactoryHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\nimport {\n type BlotterTab,\n type BlotterCountByTab,\n type BlotterMode,\n blotterTabs,\n} from 'state/blotter/blotterModel';\nimport { createSelector } from 'reselect';\n\nexport interface LiveBlotterTabConnectOwnProps {}\n\nexport interface LiveBlotterTabConnectStateProps {\n tabs: readonly BlotterTab[];\n activeTab: BlotterTab;\n countByTab: BlotterCountByTab;\n}\n\nexport interface LiveBlotterTabConnectDispatchProps {\n onTabClicked: (event: React.MouseEvent) => void;\n}\n\n// you can whitelist selectors after implementation\n\nexport type LiveBlotterTabConnectSelectorsKeys =\n | 'getBlotterActiveTab'\n | 'getProductsAccess'\n | 'getBlotterMode'\n | 'getBlotterIntradayCashTrades'\n | 'getBlotterHistoricalCashTrades'\n | 'getBlotterIntradayOptionTrades'\n | 'getBlotterHistoricalOptionTrades'\n | 'getBlotterIntradayAccumulatorTrades'\n | 'getBlotterHistoricalAccumulatorTrades'\n | 'getBlotterOrders';\nexport type LiveBlotterTabConnectSelectors = Pick;\n\ntype BlotterCountGetter = (state: AppState, mode: BlotterMode) => number;\n\nexport const mapStateToPropsLiveBlotterTab: MapStateToPropsFactoryHOF<\n LiveBlotterTabConnectStateProps,\n LiveBlotterTabConnectOwnProps,\n AppState,\n LiveBlotterTabConnectSelectors\n> = sl => () => {\n const getTabs = createSelector([sl.getProductsAccess], ({ targetAccu }) =>\n blotterTabs.filter(tab => {\n switch (tab) {\n case 'accumulator':\n return targetAccu;\n default:\n return true;\n }\n }),\n );\n const cashs: BlotterCountGetter = (state, mode = 'intraday') =>\n (mode === 'intraday'\n ? sl.getBlotterIntradayCashTrades(state)\n : sl.getBlotterHistoricalCashTrades(state)\n ).length;\n const options: BlotterCountGetter = (state, mode = 'intraday') =>\n (mode === 'intraday'\n ? sl.getBlotterIntradayOptionTrades(state)\n : sl.getBlotterHistoricalOptionTrades(state)\n ).length;\n const accumulators: BlotterCountGetter = (state, mode = 'intraday') =>\n (mode === 'intraday'\n ? sl.getBlotterIntradayAccumulatorTrades(state)\n : sl.getBlotterHistoricalAccumulatorTrades(state)\n ).length;\n const orders: BlotterCountGetter = state => sl.getBlotterOrders(state).length;\n const getCountByTab = createSelector(\n [cashs, options, accumulators, orders],\n (cash, option, accumulator, order) => ({\n cash,\n option,\n accumulator,\n order,\n }),\n );\n return state => ({\n tabs: getTabs(state),\n activeTab: sl.getBlotterActiveTab(state),\n countByTab: getCountByTab(state, sl.getBlotterMode(state)),\n });\n};\n\nexport type LiveBlotterTabConnectActionCreatorsKeys = 'blotterTabChanged';\nexport type LiveBlotterTabConnectActionCreators = Pick<\n ActionCreators,\n LiveBlotterTabConnectActionCreatorsKeys\n>;\n\nexport const mapDispatchToPropsLiveBlotterTab: MapDispatchToPropsHOF<\n LiveBlotterTabConnectDispatchProps,\n LiveBlotterTabConnectOwnProps,\n LiveBlotterTabConnectActionCreators\n> = ac => (dispatch, _ownProps) => ({\n onTabClicked: (event: React.MouseEvent) => {\n dispatch(ac.blotterTabChanged(event.currentTarget.id as BlotterTab));\n },\n});\n","import type { BlotterTab } from 'state/blotter/blotterModel';\nimport type { MapDispatchToPropsHOF, MapStateToPropsFactoryHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\n\nexport interface LiveBlotterPanelConnectOwnProps {}\n\nexport interface LiveBlotterPanelConnectStateProps {\n isOpen: boolean;\n height: number;\n activeTab: BlotterTab;\n}\n\nexport interface LiveBlotterPanelConnectDispatchProps {\n onPanelHeightChanged(height: number): void;\n}\n\nexport type LiveBlotterPanelConnectSelectorsKeys =\n | 'getBlotterIsOpen'\n | 'getBlotterPanelHeight'\n | 'getBlotterErrors'\n | 'getBlotterActiveTab';\nexport type LiveBlotterPanelConnectSelectors = Pick<\n Selectors,\n LiveBlotterPanelConnectSelectorsKeys\n>;\n\nexport const mapStateToPropsLiveBlotterPanel: MapStateToPropsFactoryHOF<\n LiveBlotterPanelConnectStateProps,\n LiveBlotterPanelConnectOwnProps,\n AppState,\n LiveBlotterPanelConnectSelectors\n> = sl => _ownProps => state => ({\n isOpen: sl.getBlotterIsOpen(state),\n height: sl.getBlotterPanelHeight(state),\n activeTab: sl.getBlotterActiveTab(state),\n});\n\nexport type LiveBlotterPanelConnectActionCreatorsKeys =\n | 'blotterToggle'\n | 'blotterPanelHeightChanged';\nexport type LiveBlotterPanelConnectActionCreators = Pick<\n ActionCreators,\n LiveBlotterPanelConnectActionCreatorsKeys\n>;\n\nexport const mapDispatchToPropsLiveBlotterPanel: MapDispatchToPropsHOF<\n LiveBlotterPanelConnectDispatchProps,\n LiveBlotterPanelConnectOwnProps,\n LiveBlotterPanelConnectActionCreators\n> = ac => (dispatch, _ownProps) => ({\n onPanelHeightChanged: (height: number) => {\n dispatch(ac.blotterPanelHeightChanged(height));\n },\n});\n","import type { MapStateToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\n\nexport interface BlotterContentConnectOwnProps {}\n\nexport interface BlotterContentConnectStateProps {\n isReadonly: boolean;\n}\n\nexport interface BlotterContentConnectDispatchProps {}\n\nexport type BlotterContentConnectSelectors = Selectors;\n\nexport const mapStateToPropsReadonly: MapStateToPropsHOF<\n BlotterContentConnectStateProps,\n BlotterContentConnectOwnProps,\n AppState,\n BlotterContentConnectSelectors\n> = sl => (state, _ownProps) => ({\n isReadonly: !sl.userCanTrade(state),\n});\n\nexport type BlotterContentConnectActionCreators = ActionCreators;\n","import type { MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { ActionCreators } from 'state/actions';\n\nexport interface MinimizeButtonConnectOwnProps {}\n\nexport interface MinimizeButtonConnectDispatchProps {\n onMinimize(): void;\n}\n\n// you can whitelist action creators after implementation\nexport type MinimizeButtonConnectActionCreators = ActionCreators;\n/*\nexport type MinimizeButtonConnectActionCreatorsKeys = 'optionLegPropertyChanged';\nexport type MinimizeButtonConnectActionCreators = Pick;\n*/\n\nexport const mapDispatchToPropsMinimizeButton: MapDispatchToPropsHOF<\n MinimizeButtonConnectDispatchProps,\n MinimizeButtonConnectOwnProps,\n MinimizeButtonConnectActionCreators\n> = ac => (dispatch, _ownProps) => ({\n onMinimize() {\n dispatch(ac.blotterToggle(false));\n },\n});\n","import type { MapStateToPropsHOF, MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\nimport type { BlotterMode } from 'state/blotter/blotterModel';\n\nexport interface HistoricalToggleConnectOwnProps {}\n\nexport interface HistoricalToggleConnectStateProps {\n mode: BlotterMode;\n}\n\nexport interface HistoricalToggleConnectDispatchProps {\n switchMode(mode: BlotterMode): void;\n}\n\n// you can whitelist selectors after implementation\nexport type HistoricalToggleConnectSelectors = Selectors;\n/*\nexport type HistoricalToggleConnectSelectorsKeys = 'aSelector'; // example\nexport type HistoricalToggleConnectSelectors = Pick;\n*/\n\nexport const mapStateToPropsHistoricalToggle: MapStateToPropsHOF<\n HistoricalToggleConnectStateProps,\n HistoricalToggleConnectOwnProps,\n AppState,\n HistoricalToggleConnectSelectors\n> = sl => (state, _ownProps) => ({\n mode: sl.getBlotterMode(state),\n});\n\n// you can whitelist action creators after implementation\nexport type HistoricalToggleConnectActionCreators = ActionCreators;\n/*\nexport type HistoricalToggleConnectActionCreatorsKeys = 'optionLegPropertyChanged';\nexport type HistoricalToggleConnectActionCreators = Pick;\n*/\n\nexport const mapDispatchToPropsHistoricalToggle: MapDispatchToPropsHOF<\n HistoricalToggleConnectDispatchProps,\n HistoricalToggleConnectOwnProps,\n HistoricalToggleConnectActionCreators\n> = ac => (dispatch, _ownProps) => ({\n switchMode(mode) {\n dispatch(ac.blotterChangeMode(mode));\n },\n});\n","import type { MapStateToPropsHOF, MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\nimport type { DateRange } from 'state/blotter/blotterModel';\nimport type { DateInputCultureInfo } from 'state/userPreferences/userPreferencesModel';\n\nexport interface HistoricalDateRangeConnectOwnProps {}\n\nexport interface HistoricalDateRangeConnectStateProps {\n selectedRange: DateRange;\n startDate: Date | null;\n endDate: Date | null;\n cultureInfo: DateInputCultureInfo;\n}\n\nexport interface HistoricalDateRangeConnectDispatchProps {\n setCustomDateRange(startDate: Date | null, endDate: Date | null): void;\n}\n\nexport type HistoricalDateRangeConnectSelectorsKeys =\n | 'getBlotterHistoricalDateRange'\n | 'getBlotterHistoricalStartDate'\n | 'getBlotterHistoricalEndDate'\n | 'getUserPreferenceData';\nexport type HistoricalDateRangeConnectSelectors = Pick<\n Selectors,\n HistoricalDateRangeConnectSelectorsKeys\n>;\n\nexport const mapStateToPropsHistoricalDateRange: MapStateToPropsHOF<\n HistoricalDateRangeConnectStateProps,\n HistoricalDateRangeConnectOwnProps,\n AppState,\n HistoricalDateRangeConnectSelectors\n> = sl => (state, _ownProps) => ({\n selectedRange: sl.getBlotterHistoricalDateRange(state),\n startDate: sl.getBlotterHistoricalStartDate(state),\n endDate: sl.getBlotterHistoricalEndDate(state),\n cultureInfo: sl.getUserPreferenceData(state).dateInputCultureInfo,\n});\n\n// you can whitelist action creators after implementation\nexport type HistoricalDateRangeConnectActionCreators = ActionCreators;\n/*\nexport type HistoricalDateRangeConnectActionCreatorsKeys = 'optionLegPropertyChanged';\nexport type HistoricalDateRangeConnectActionCreators = Pick;\n*/\n\nexport const mapDispatchToPropsHistoricalDateRange: MapDispatchToPropsHOF<\n HistoricalDateRangeConnectDispatchProps,\n HistoricalDateRangeConnectOwnProps,\n HistoricalDateRangeConnectActionCreators\n> = ac => (dispatch, _ownProps) => ({\n setCustomDateRange(startDate, endDate) {\n dispatch(ac.blotterChangeCustomDateRange(startDate, endDate));\n },\n});\n","import type { MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { ActionCreators } from 'state/actions';\nimport type { DateRange } from 'state/blotter/blotterModel';\n\nexport interface HistoricalDateRangeOptionConnectOwnProps {\n range: DateRange;\n additionalAction?(): void;\n}\n\nexport interface HistoricalDateRangeOptionConnectDispatchProps {\n onSelect(): void;\n}\n\nexport type HistoricalDateRangeOptionConnectActionCreatorsKeys = 'blotterChangeDateRange';\nexport type HistoricalDateRangeOptionConnectActionCreators = Pick<\n ActionCreators,\n HistoricalDateRangeOptionConnectActionCreatorsKeys\n>;\n\nexport const mapDispatchToPropsHistoricalDateRangeOption: MapDispatchToPropsHOF<\n HistoricalDateRangeOptionConnectDispatchProps,\n HistoricalDateRangeOptionConnectOwnProps,\n HistoricalDateRangeOptionConnectActionCreators\n> =\n ac =>\n (dispatch, { range, additionalAction }) => ({\n onSelect() {\n dispatch(ac.blotterChangeDateRange(range));\n if (additionalAction !== undefined) {\n additionalAction();\n }\n },\n });\n","import type { MapStateToPropsHOF, MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\nimport type { BlotterHistoricalError } from 'state/blotter/blotterModel';\n\nexport interface BlotterErrorConnectOwnProps {}\n\nexport interface BlotterErrorConnectStateProps {\n error: BlotterHistoricalError;\n}\n\nexport interface BlotterErrorConnectDispatchProps {}\n\n// you can whitelist selectors after implementation\nexport type BlotterErrorConnectSelectors = Selectors;\n/*\nexport type BlotterErrorConnectSelectorsKeys = 'aSelector'; // example\nexport type BlotterErrorConnectSelectors = Pick;\n*/\n\nexport const mapStateToPropsBlotterError: MapStateToPropsHOF<\n BlotterErrorConnectStateProps,\n BlotterErrorConnectOwnProps,\n AppState,\n BlotterErrorConnectSelectors\n> = sl => (state, _ownProps) => ({\n error: sl.getBlotterActiveTab(state) === 'order' ? null : sl.getBlotterHistoricalError(state),\n});\n\n// you can whitelist action creators after implementation\nexport type BlotterErrorConnectActionCreators = ActionCreators;\n/*\nexport type BlotterErrorConnectActionCreatorsKeys = 'optionLegPropertyChanged';\nexport type BlotterErrorConnectActionCreators = Pick;\n*/\n\nexport const mapDispatchToPropsBlotterError: MapDispatchToPropsHOF<\n BlotterErrorConnectDispatchProps,\n BlotterErrorConnectOwnProps,\n BlotterErrorConnectActionCreators\n> = _ac => (_dispatch, _ownProps) => ({});\n","import type { MapStateToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type { BlotterMode } from 'state/blotter/blotterModel';\n\nexport interface BlotterLoadingConnectOwnProps {}\n\nexport interface BlotterLoadingConnectStateProps {\n fetching: BlotterMode | null;\n canRefetch: boolean;\n mode: BlotterMode;\n}\n\n// you can whitelist selectors after implementation\nexport type BlotterLoadingConnectSelectors = Selectors;\n/*\nexport type BlotterLoadingConnectSelectorsKeys = 'aSelector'; // example\nexport type BlotterLoadingConnectSelectors = Pick;\n*/\n\nexport const mapStateToPropsBlotterLoading: MapStateToPropsHOF<\n BlotterLoadingConnectStateProps,\n BlotterLoadingConnectOwnProps,\n AppState,\n BlotterLoadingConnectSelectors\n> = sl => (state, _ownProps) => ({\n fetching: sl.getBlotterFetching(state),\n canRefetch: sl.getBlotterCanRefetch(state),\n mode: sl.getBlotterMode(state),\n});\n","import type { MapStateToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type { IBlotterErrorType } from 'state/blotter/blotterModel';\n\nexport interface BlotterErrorsConnectOwnProps {}\n\nexport interface BlotterErrorsConnectStateProps {\n errors: readonly IBlotterErrorType[];\n}\n\n// you can whitelist selectors after implementation\nexport type BlotterErrorsConnectSelectors = Selectors;\n/*\nexport type BlotterErrorsConnectSelectorsKeys = 'aSelector'; // example\nexport type BlotterErrorsConnectSelectors = Pick;\n*/\n\nexport const mapStateToPropsBlotterErrors: MapStateToPropsHOF<\n BlotterErrorsConnectStateProps,\n BlotterErrorsConnectOwnProps,\n AppState,\n BlotterErrorsConnectSelectors\n> = sl => (state, _ownProps) => ({\n errors: sl.getBlotterErrors(state),\n});\n","import type { MapStateToPropsHOF, MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\n\nexport interface QuickBlotterButtonConnectOwnProps {}\n\nexport interface QuickBlotterButtonConnectStateProps {\n isVisible: boolean;\n}\n\nexport interface QuickBlotterButtonConnectDispatchProps {\n onShowBlotter(): void;\n}\n\n// you can whitelist selectors after implementation\nexport type QuickBlotterButtonConnectSelectors = Selectors;\n/*\nexport type QuickBlotterButtonConnectSelectorsKeys = 'aSelector'; // example\nexport type QuickBlotterButtonConnectSelectors = Pick;\n*/\n\nexport const mapStateToPropsQuickBlotterButton: MapStateToPropsHOF<\n QuickBlotterButtonConnectStateProps,\n QuickBlotterButtonConnectOwnProps,\n AppState,\n QuickBlotterButtonConnectSelectors\n> = sl => (state, _ownProps) => ({\n isVisible: !sl.getBlotterIsOpen(state),\n});\n\n// you can whitelist action creators after implementation\nexport type QuickBlotterButtonConnectActionCreators = ActionCreators;\n/*\nexport type QuickBlotterButtonConnectActionCreatorsKeys = 'optionLegPropertyChanged';\nexport type QuickBlotterButtonConnectActionCreators = Pick;\n*/\n\nexport const mapDispatchToPropsQuickBlotterButton: MapDispatchToPropsHOF<\n QuickBlotterButtonConnectDispatchProps,\n QuickBlotterButtonConnectOwnProps,\n QuickBlotterButtonConnectActionCreators\n> = ac => (dispatch, _ownProps) => ({\n onShowBlotter() {\n dispatch(ac.blotterToggle(true));\n },\n});\n","import { connect } from 'react-redux';\nimport { mapStateToPropsLiveBlotter, mapDispatchToPropsLiveBlotter } from './connectLiveBlotter';\nimport { selectors } from 'state/selectors';\nimport { actionCreators } from 'state/actions';\nimport {\n mapStateToPropsLiveBlotterTab,\n mapDispatchToPropsLiveBlotterTab,\n} from './connectLiveBlotterTab';\nimport {\n mapDispatchToPropsLiveBlotterPanel,\n mapStateToPropsLiveBlotterPanel,\n} from './connectLiveBlotterPanel';\nimport { mapStateToPropsReadonly } from 'components/share/connect/connectReadonly';\nimport { mapStateToPropsEditReadonly } from 'components/share/connect/connectEditReadonly';\nimport { mapDispatchToPropsMinimizeButton } from './connectMinimizeButton';\nimport {\n mapStateToPropsHistoricalToggle,\n mapDispatchToPropsHistoricalToggle,\n} from './connectHistoricalToggle';\nimport {\n mapStateToPropsHistoricalDateRange,\n mapDispatchToPropsHistoricalDateRange,\n} from './connectHistoricalDateRange';\nimport { mapDispatchToPropsHistoricalDateRangeOption } from './connectHistoricalDateRangeOption';\nimport { mapStateToPropsBlotterError } from './connectBlotterError';\nimport { mapStateToPropsBlotterLoading } from './connectBlotterLoading';\nimport { mapStateToPropsBlotterErrors } from './connectBlotterErrors';\nimport {\n mapStateToPropsQuickBlotterButton,\n mapDispatchToPropsQuickBlotterButton,\n} from './connectQuickBlotterButton';\n\nexport const connectReadonly = connect(mapStateToPropsReadonly(selectors));\n\nexport const connectEditReadonly = connect(mapStateToPropsEditReadonly(selectors));\n\nexport const connectMinimizeButton = connect(\n null,\n mapDispatchToPropsMinimizeButton(actionCreators),\n);\n\nexport const connectBlotterMode = connect(mapStateToPropsHistoricalToggle(selectors));\n\nexport const connectToggleMode = connect(null, mapDispatchToPropsHistoricalToggle(actionCreators));\n\nexport const connectHistoricalDateRange = connect(\n mapStateToPropsHistoricalDateRange(selectors),\n mapDispatchToPropsHistoricalDateRange(actionCreators),\n);\n\nexport const connectHistoricalDateRangeOption = connect(\n null,\n mapDispatchToPropsHistoricalDateRangeOption(actionCreators),\n);\n\nexport const connectLiveBlotter = connect(\n mapStateToPropsLiveBlotter(selectors),\n mapDispatchToPropsLiveBlotter(actionCreators),\n);\n\nexport const connectLiveBlotterTab = connect(\n mapStateToPropsLiveBlotterTab(selectors),\n mapDispatchToPropsLiveBlotterTab(actionCreators),\n);\n\nexport const connectLiveBlotterPanel = connect(\n mapStateToPropsLiveBlotterPanel(selectors),\n mapDispatchToPropsLiveBlotterPanel(actionCreators),\n);\n\nexport const connectBlotterError = connect(mapStateToPropsBlotterError(selectors));\n\nexport const connectBlotterLoading = connect(mapStateToPropsBlotterLoading(selectors));\n\nexport const connectBlotterErrors = connect(mapStateToPropsBlotterErrors(selectors));\n\nexport const connectQuickBlotterButton = connect(\n mapStateToPropsQuickBlotterButton(selectors),\n mapDispatchToPropsQuickBlotterButton(actionCreators),\n);\n","import type { UserPrefConnectProps } from './connect/connectUserPref';\nimport { SwitchInput } from 'components/share/formElements/SwitchInput';\nimport { FormattedMessage } from 'react-intl';\nimport { connectUserPref } from './connect';\nimport { connectBlotterLoading } from 'components/Blotter/connect';\nimport type { BlotterMode } from 'state/blotter/blotterModel';\n\nconst ShowMyMainDeals: React.FunctionComponent<\n UserPrefConnectProps<'showMyMainDeals'> & {\n fetching: BlotterMode | null;\n canRefetch: boolean;\n }\n> = ({\n userPrefValue: showMyMainDeals,\n fetching,\n canRefetch,\n onChangeUserPref: onShowMyMainDealsChange,\n}) => (\n
\n \n \n {fetching &&
}\n \n
\n);\n\nexport const ShowMyMainDealsPref = connectBlotterLoading(\n connectUserPref('showMyMainDeals')(ShowMyMainDeals),\n);\n","import type React from 'react';\n\ntype SwitchChildrenProps = Record;\n\nexport type ChildrenMap = Record;\n\nexport function createSwitchChildren<\n K extends Exclude,\n S extends string,\n>(key: K, displayName: string, childrenMap: ChildrenMap) {\n function SwitchChildren(props: SwitchChildrenProps) {\n const request = props[key];\n const child = childrenMap[request];\n return child as React.ReactElement;\n }\n SwitchChildren.displayName = displayName;\n return SwitchChildren;\n}\n\nexport function defaultSwitch(keys: readonly K[], obj: T): Record {\n const ret = {} as Record;\n keys.forEach(key => {\n ret[key] = obj;\n });\n return ret;\n}\n","import type { MapStateToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type { UserType } from 'state/referenceData/referenceDataModel';\n\nexport interface UserTypeConnectOwnProps {}\n\nexport interface UserTypeConnectStateProps {\n userType: UserType;\n}\n\nexport type UserTypeConnectSelectors = Selectors;\n\nexport const mapStateToPropsUserType: MapStateToPropsHOF<\n UserTypeConnectStateProps,\n UserTypeConnectOwnProps,\n AppState,\n UserTypeConnectSelectors\n> = sl => (state, _ownProps) => ({\n userType: sl.getUserInfo(state).userType,\n});\n","import { useSelector } from 'react-redux';\nimport { getUserInfoUserType } from 'state/referenceData/referenceDataSelectors';\n\nexport const useUserType = () => useSelector(getUserInfoUserType);\n","import { useUserType } from '../hooks/useUserType';\n\nexport function IsInternal({ children }: { children: React.ReactNode }): JSX.Element | null {\n const userType = useUserType();\n\n if (['Internal Sales', 'Internal Trader'].includes(userType || '')) {\n return <>{children};\n }\n return null;\n}\n","import { UserType } from '.';\n\ninterface IsInternalSalesProps {\n children: React.ReactNode;\n}\n\nexport function IsInternalSales({ children }: IsInternalSalesProps) {\n return (\n \n {({ userType }) =>\n userType === 'Internal Sales' ? (children as React.ReactElement) : null\n }\n \n );\n}\n","import { mapStateToPropsUserType } from './connectUserType';\nimport { selectors } from 'state/selectors';\nimport { renderPropsConnect } from '../renderPropsConnect';\n\nexport { IsInternal } from './IsInternal';\nexport { IsInternalSales } from './IsInternalSales';\n\nexport const UserType = renderPropsConnect(mapStateToPropsUserType(selectors));\n","import { type ChangeEventHandler, Component, type ReactNode } from 'react';\nimport styled from 'styled-components';\nimport type { FunctionChildren, RenderPropChildren } from 'typings/utils';\nimport * as e2e from 'components/Form/Inputs/e2e';\nimport type { StrictOmit } from 'utils/object';\nimport type { E2E } from 'typings/e2e';\n\ninterface SelectState {}\n\ninterface SelectHighlightProps {\n highlight?: 'primary' | 'warning' | 'danger' | 'info' | 'success';\n}\n\ninterface BaseSelectProps extends RenderPropChildren> {\n value: T;\n onChange(value: T): void;\n}\n\ninterface SimpleSelectProps {\n options: readonly T[];\n}\n\ninterface GroupSelectProps {\n groupOptions: ReadonlyArray<[string, readonly T[]]>;\n groupRender: FunctionChildren<{ groupName: string; children: ReactNode }>;\n}\n\ntype SelectProps = StrictOmit<\n JSX.IntrinsicElements['select'],\n 'onChange' | 'value' | 'ref' | 'children'\n> &\n BaseSelectProps &\n (SimpleSelectProps | GroupSelectProps) &\n SelectHighlightProps &\n E2E;\n\nexport interface SelectChildrenProps {\n value: string;\n key: number;\n option: T;\n}\n\nconst SelectColored = styled.select`\n ${({ highlight }) =>\n highlight === undefined\n ? ''\n : `color: var(--${highlight}) !important;\n option {\n color: var(--primary);\n }`}\n`;\n\n// TODO ABO SGEFX-4435 convert Select to functional component\n// const SelectTest = (props: PropsWithChildren>) => {return
}\n// function SelectTest(props: PropsWithChildren>) {return
}\n\nexport class Select extends Component, SelectState> {\n public onChange: ChangeEventHandler = event => {\n this.props.onChange(JSON.parse(event.target.value));\n };\n\n public render() {\n const { children, value, onChange: _, e2eHandle, e2eIsModified, ...selectProps } = this.props;\n return (\n \n {'options' in this.props\n ? this.props.options.map((option, index) =>\n children({\n value: JSON.stringify(option),\n key: index,\n option,\n }),\n )\n : 'groupOptions' in this.props\n ? this.props.groupOptions.map(([groupName, options]) =>\n (this.props as GroupSelectProps).groupRender({\n groupName,\n children: options.map((option, index) =>\n children({\n value: JSON.stringify(option),\n key: index,\n option,\n }),\n ),\n }),\n )\n : null}\n \n );\n }\n}\n","import { getMatomo } from 'bootstrap/matomo';\nimport { logger } from 'logging/logger';\n\nexport const themeKey = 'sgmeFxTheme';\n\nexport type Theme = 'DARK' | 'LIGHT';\n\nconst cdnUrl = `https://sgwt-cdn-sgbs.sgmarkets.com/sg-bootstrap/${window.sgbsVersion}/`;\n\nfunction variableSgbsUrls(theme: string | null) {\n const variation = theme === 'DARK' ? 'dark' : 'standard';\n return {\n sgbs: `${cdnUrl}core/sg-bootstrap-${variation}.min.css`,\n aggrid: `${cdnUrl}ag-grid-theme/27-${variation}.min.css`,\n };\n}\n\nfunction updateThemeUrls(theme: 'DARK' | 'LIGHT') {\n Object.entries(variableSgbsUrls(theme)).forEach(([id, url]) => {\n const linkElement = document.querySelector(`link[id=\"${id}\"]`);\n const newLinkElement = document.createElement('link');\n newLinkElement.rel = 'stylesheet';\n newLinkElement.id = id;\n newLinkElement.href = url;\n if (linkElement !== null) {\n newLinkElement.onload = () => {\n document.head.removeChild(linkElement);\n };\n }\n document.head.appendChild(newLinkElement);\n });\n}\n\nexport function setTheme(theme: Theme) {\n updateThemeUrls(theme);\n logger.logInformation('User switched theme: {theme_s}', theme);\n getMatomo().track('Workspace', 'Switch theme', theme);\n if (localStorage) {\n try {\n localStorage.setItem(themeKey, theme);\n } catch {\n logger.logError('Unable to store theme, localStorage might be full');\n }\n }\n}\n\nexport function getTheme(): Theme {\n const params = new URLSearchParams(self?.location.search);\n const savedTheme = typeof localStorage !== 'undefined' ? localStorage.getItem(themeKey) : 'LIGHT';\n const selectedTheme = params.get('theme') ?? savedTheme;\n const isDark = selectedTheme?.toUpperCase() === 'DARK';\n\n return isDark ? 'DARK' : 'LIGHT';\n}\n","import { getTheme, type Theme } from 'utils/theme';\nimport { noop } from '@sgme/fp';\nimport { createContext } from 'react';\n\ninterface ThemeProps {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n toggleTheme: () => void;\n}\n\nexport const ThemeContext = createContext({\n theme: getTheme(),\n toggleTheme: noop,\n setTheme: noop,\n});\nThemeContext.displayName = 'ThemeContext';\nexport const { Provider: ThemeProvider } = ThemeContext; // Only expose provider to force using hooks API\n","import { useContext } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Select } from 'components/share/Select';\nimport { UserPrefLabel } from './UserPrefLabel';\nimport { ThemeContext } from 'components/contexts/ThemeContext';\nimport type { Theme } from 'utils/theme';\n\nexport const ChangeThemeComponent: React.FunctionComponent = () => {\n const { theme, setTheme } = useContext(ThemeContext);\n return (\n \n \n value={theme}\n onChange={setTheme}\n e2eHandle=\"changeTheme\"\n options={['LIGHT', 'DARK']}\n className=\"form-control w-auto\"\n >\n {({ option, value }) => (\n \n {label => }\n \n )}\n \n \n );\n};\n","import type { UserPrefConnectProps } from './connect/connectUserPref';\nimport { FormattedMessage } from 'react-intl';\nimport type { UserPreferencesData } from 'state/userPreferences';\nimport { connectUserPref } from './connect';\nimport { Select } from 'components/share/Select';\nimport { UserPrefLabel } from './UserPrefLabel';\n\ntype ListUserPreferencesKeys = keyof Pick<\n UserPreferencesData,\n | 'accountNameLength'\n | 'dateInputCultureInfo'\n | 'defaultHedgeType'\n | 'defaultPriceType'\n | 'oneClickExecution'\n>;\n\nconst ListUserPrefInput =\n (\n userPrefKey: K,\n options: ReadonlyArray,\n intlLabelsPrefix?: string,\n ) =>\n ({ userPrefValue, onChangeUserPref }: UserPrefConnectProps): JSX.Element =>\n (\n \n \n value={userPrefValue}\n onChange={onChangeUserPref as (value: UserPreferencesData[K]) => void}\n e2eHandle={userPrefKey}\n options={options}\n className=\"form-control w-auto\"\n >\n {({ option, value }) => (\n \n {label => }\n \n )}\n \n \n );\n\nexport const ListUserPref = (\n userPrefKey: K,\n options: ReadonlyArray,\n intlLabelsPrefix?: string,\n) => connectUserPref(userPrefKey)(ListUserPrefInput(userPrefKey, options, intlLabelsPrefix));\n","import { ListUserPref } from './ListUserPref';\nimport { accountLengthOptions, dateInputCultureInfoOptions } from 'state/userPreferences';\nimport { hedgeTypes } from 'state/share/productModel/litterals';\nimport { allPriceTypes } from 'state/fxOptions/fxOptionsModel';\n\nexport const AccountNameLengthPref = ListUserPref('accountNameLength', accountLengthOptions);\nexport const DateInputFormatPref = ListUserPref(\n 'dateInputCultureInfo',\n dateInputCultureInfoOptions,\n);\nexport const DefaultHedgeTypePref = ListUserPref(\n 'defaultHedgeType',\n hedgeTypes,\n 'optiontile.form.hedge',\n);\nexport const DefaultPriceTypePref = ListUserPref(\n 'defaultPriceType',\n allPriceTypes,\n 'optiontile.priceType',\n);\nexport const OneClickExecPref = ListUserPref('oneClickExecution', [true, false]);\n","import { useCallback, useState } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { IntlComponentBoundary, type MessagesMap } from 'utils/i18n/IntlComponentBoundary';\nimport { ListGroup, ListGroupItem } from 'reactstrap';\nimport { strictEntries } from 'utils/object/entries';\nimport { NotificationEmails } from './NotificationEmails';\nimport { AutoCloseGrowlAfterPref } from './AutoCloseGrowlAfter';\nimport {\n ShowSwapPointsPref,\n ResetTileToSpotOnQuoteExecutionPref,\n OrderQuickLimitPref,\n ShowDeltaStrikePref,\n OptionOneWayQuotationPref,\n OptionDisplayMidVolatilityPref,\n OptionStrategyGroupLegsPref,\n OptionAlignCurrenciesPref,\n OptionExpandGreekAndMktPref,\n SplitNotificationsPref,\n} from './simpleCheckboxUserPrefs';\nimport { DefaultNotionalPref } from './DefaultNotional';\nimport { ShowMyMainDealsPref } from './ShowMyMainDeals';\nimport { createSwitchChildren } from 'components/share/SwitchChildren';\nimport { IsInternal } from 'components/share/UserType';\nimport { ChangeThemeComponent } from './ChangeTheme';\nimport * as e2e from 'components/Form/Inputs/e2e';\nimport {\n AccountNameLengthPref,\n DateInputFormatPref,\n DefaultHedgeTypePref,\n DefaultPriceTypePref,\n OneClickExecPref,\n} from './selectPreferences';\nimport styled from 'styled-components';\nimport en from './locales/en.json';\nimport fr from './locales/fr.json';\nimport { usePreferences } from 'components/share/hooks/usePreferences';\n\nconst messagesMap: MessagesMap = { en, fr };\n\nconst userPrefTabs = ['general', 'notifications', 'cash', 'option', 'blotter'] as const;\ntype UserPrefTab = (typeof userPrefTabs)[number];\n\nconst menuItems: Record = {\n general: ,\n cash: ,\n option: ,\n blotter: ,\n notifications: ,\n};\n\nfunction UserPrefsByTab(): Record {\n const { splitNotifications } = usePreferences();\n const userPrefsByTabConst = {\n general: (\n <>\n

\n \n

\n
\n \n \n \n
\n

\n \n

\n
\n \n \n
\n \n ),\n notifications: (\n <>\n
\n \n
\n {!splitNotifications ? (\n
\n

\n \n

\n \n
\n ) : (\n
\n

\n \n

\n \n

\n \n

\n \n

\n \n

\n \n
\n )}\n \n ),\n cash: (\n <>\n

\n \n

\n
\n \n \n
\n

\n \n

\n
\n \n \n
\n \n ),\n option: (\n <>\n

\n \n

\n
\n \n \n \n \n \n \n
\n

\n \n

\n
\n \n \n \n
\n

\n \n

\n
\n \n
\n \n ),\n blotter: (\n
\n \n
\n ),\n };\n return userPrefsByTabConst as Record;\n}\n\nconst LeftColumn = styled.div.attrs({ className: 'border-right' })`\n min-width: 26%;\n`;\nconst Body = styled.div.attrs({ className: 'd-flex border shadow-max p-0' })`\n max-height: 80vh;\n`;\n\nexport function UserPreferencesContents(): JSX.Element {\n const SelectedTabContent = createSwitchChildren(\n 'activeTab',\n 'UserPrefsSelectedTabContent',\n UserPrefsByTab(),\n );\n const [activeTab, setActiveTab] = useState('general');\n const changeTab = useCallback(\n (tab: UserPrefTab) => (e: React.MouseEvent) => {\n e.preventDefault();\n setActiveTab(tab);\n },\n [setActiveTab],\n );\n return (\n \n \n \n

\n \n

\n \n {strictEntries(menuItems).map(([key, label]) => (\n \n {label}\n \n ))}\n \n
\n
\n
{menuItems[activeTab]}
\n
\n \n
\n
\n \n
\n );\n}\n","import { connect } from 'react-redux';\nimport { Modal } from 'reactstrap';\nimport type { DispatchWithThunkExt } from 'state';\nimport type { AppState } from 'state/model';\n\nimport { isUserPreferenceOpened } from 'state/userPreferences/selectors/userPreferenceSelectors';\nimport { userPreferenceToggleModal } from 'state/userPreferences';\nimport { UserPreferencesContents } from 'components/UserPreferences';\nimport * as e2e from 'components/Form/Inputs/e2e';\nimport styled from 'styled-components';\n\ninterface UserPreferencesModalStateProps {\n open: boolean;\n}\n\ninterface UserPreferencesModalDispatchProps {\n close: () => void;\n}\n\nconst CloseButton = styled.button.attrs({\n type: 'button',\n className: 'close position-absolute p-2 m-2',\n})`\n top: 0;\n right: 0;\n`;\n\nconst UserPreferencesModalRaw: React.FunctionComponent<\n UserPreferencesModalStateProps & UserPreferencesModalDispatchProps\n> = ({ open, close }) => (\n \n \n \n close\n \n \n \n \n);\n\nconst mapStateToProps = (state: AppState): UserPreferencesModalStateProps => ({\n open: isUserPreferenceOpened(state),\n});\n\nconst mapDispatchToProps = (dispatch: DispatchWithThunkExt): UserPreferencesModalDispatchProps => ({\n close: () => dispatch(userPreferenceToggleModal(false)),\n});\n\nexport const UserPreferencesModal = connect(\n mapStateToProps,\n mapDispatchToProps,\n)(UserPreferencesModalRaw);\n\nexport default UserPreferencesModal;\n","import { type ComponentType, lazy, type LazyExoticComponent } from 'react';\nimport { logger } from 'logging/logger';\n\n/**\n * Retry loading import once on failure\n * @param factory Factory that returns the import promise\n * @returns the import promise\n */\nexport function retryLazy>(factory: () => Promise<{ default: T }>) {\n return factory().catch(e => {\n logger.logError('Could not load component, retrying once {error}', e);\n return factory();\n });\n}\n\n/**\n * Wrapper on `React.lazy` which will retry the import exactly once after it has failed\n * @param factory The same factory accepted by `React.lazy`\n * @returns The exotic component returned by `React.lazy`\n */\nexport function lazyWithRetry>(\n factory: () => Promise<{ default: T }>,\n): LazyExoticComponent {\n return lazy(() => retryLazy(factory));\n}\n","import { useIntl } from 'react-intl';\nimport { onFooterSetRef, type SgFooterWidget } from 'utils/userConsent';\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n 'sgwt-mini-footer':\n | SgFooterWidget\n | FooterHTMLAttributes\n | React.RefAttributes;\n }\n }\n}\n\ninterface FooterHTMLAttributes {\n id: string;\n mode?: 'sg-markets';\n 'contact-us': string;\n language: string;\n type: 'compact' | 'medium' | 'micro';\n container?: string;\n 'cookies-consent'?: boolean;\n 'legal-notices'?: string;\n 'accessibility-compliance'?: 'none' | 'partial' | 'full';\n 'accessibility-link'?: string;\n}\n\nexport function Footer(): JSX.Element {\n const { locale } = useIntl();\n return (\n \n );\n}\n","import { createContext } from 'react';\nexport const DraggingContext = createContext(false);\nDraggingContext.displayName = 'DraggingContext';\nexport const { Provider: DraggingProvider, Consumer: DraggingConsumer } = DraggingContext;\n","import type { MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { ActionCreators } from 'state/actions';\n\nexport interface CatchTileConnectOwnProps {\n quoteId: string;\n}\n\nexport interface CatchTileConnectDispatchProps {\n onCatch(...any: readonly any[]): void;\n}\n\n// you can whitelist action creators after implementation\nexport type CatchTileConnectActionCreators = ActionCreators;\n/*\nexport type CatchTileConnectActionCreatorsKeys = 'optionLegPropertyChanged';\nexport type CatchTileConnectActionCreators = Pick;\n*/\n\nexport const mapDispatchToPropsCatchTile: MapDispatchToPropsHOF<\n CatchTileConnectDispatchProps,\n CatchTileConnectOwnProps,\n CatchTileConnectActionCreators\n> =\n ac =>\n (dispatch, { quoteId }) => ({\n onCatch() {\n dispatch(ac.changeTileClientError(quoteId, true));\n },\n });\n","import type { MapStateToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport { pick } from 'utils/object';\nimport { isSwitchableInstrument } from 'state/referenceData/referenceDataModel';\nimport { defaultOrderHeight, orderTileWidth } from 'styles/constants';\n\nconst getSize = pick('width', 'height');\n\nexport interface TileSizeConnectOwnProps {\n workspaceId: string;\n quoteId: string;\n}\n\nexport interface TileSizeConnectStateProps {\n height: number;\n width: number;\n}\n\nexport interface TileSizeConnectDispatchProps {}\n\n// you can whitelist selectors after implementation\nexport type TileSizeConnectSelectors = Selectors;\n\n/*\nexport type TileSizeConnectSelectorsKeys = 'aSelector'; // example\nexport type TileSizeConnectSelectors = Pick;\n*/\n\nexport const mapStateToPropsTileSize: MapStateToPropsHOF<\n TileSizeConnectStateProps,\n TileSizeConnectOwnProps,\n AppState,\n TileSizeConnectSelectors\n> =\n sl =>\n (state, { workspaceId, quoteId }) => {\n const instrument = sl.getQuoteInstrument(state, quoteId);\n return isSwitchableInstrument(instrument)\n ? getSize(sl.getGridItemSize(state, workspaceId, quoteId))\n : { height: defaultOrderHeight, width: orderTileWidth };\n };\n","import type { MapStateToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\n\nexport interface QuoteHasErrorConnectOwnProps {\n quoteId: string;\n}\n\nexport interface QuoteHasErrorConnectStateProps {\n hasError: boolean;\n}\n\n// you can whitelist selectors after implementation\nexport type QuoteHasErrorConnectSelectors = Selectors;\n/*\nexport type QuoteHasErrorConnectSelectorsKeys = 'aSelector'; // example\nexport type QuoteHasErrorConnectSelectors = Pick;\n*/\n\nexport const mapStateToPropsQuoteHasError: MapStateToPropsHOF<\n QuoteHasErrorConnectStateProps,\n QuoteHasErrorConnectOwnProps,\n AppState,\n QuoteHasErrorConnectSelectors\n> =\n sl =>\n (state, { quoteId }) => ({\n hasError:\n sl.isTilePresent(state, quoteId) &&\n (sl.getTilePropertiesRequestError(state, quoteId) !== null ||\n (sl.getTileState(state, quoteId).clientError ?? false)),\n });\n","import type { MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { ActionCreators } from 'state/actions';\n\nexport interface QuoteErrorConnectOwnProps {\n quoteId: string;\n close?: boolean;\n}\n\nexport interface QuoteErrorConnectDispatchProps {\n showErrorDetails(): void;\n reset(): void;\n}\n\n// you can whitelist action creators after implementation\nexport type QuoteErrorConnectActionCreators = ActionCreators;\n/*\nexport type QuoteErrorConnectActionCreatorsKeys = 'optionLegPropertyChanged';\nexport type QuoteErrorConnectActionCreators = Pick;\n*/\n\nexport const mapDispatchToPropsQuoteError: MapDispatchToPropsHOF<\n QuoteErrorConnectDispatchProps,\n QuoteErrorConnectOwnProps,\n QuoteErrorConnectActionCreators\n> =\n ac =>\n (dispatch, { quoteId, close = false }) => ({\n showErrorDetails() {\n dispatch(ac.displayPropertiesErrorDetail(quoteId));\n },\n reset() {\n dispatch(close ? ac.tileClosedThunk(quoteId) : ac.resetTileThunk(quoteId));\n },\n });\n","import type { MapStateToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport { type TileInstrument, isTileInstrument } from 'state/referenceData/referenceDataModel';\n\nexport interface TileInstrumentConnectOwnProps {\n quoteId: string;\n}\n\nexport interface TileInstrumentConnectStateProps {\n instrument: TileInstrument;\n}\n\nexport interface TileInstrumentConnectDispatchProps {}\n\n// you can whitelist selectors after implementation\nexport type TileInstrumentConnectSelectors = Selectors;\n/*\nexport type TileInstrumentConnectSelectorsKeys = 'aSelector'; // example\nexport type TileInstrumentConnectSelectors = Pick;\n*/\nexport const mapStateToPropsTileInstrument: MapStateToPropsHOF<\n TileInstrumentConnectStateProps,\n TileInstrumentConnectOwnProps,\n AppState,\n TileInstrumentConnectSelectors\n> =\n sl =>\n (state, { quoteId }) => {\n const { instrument } = sl.getTileState(state, quoteId);\n if (isTileInstrument(instrument)) {\n return { instrument };\n }\n throw new Error(`invalid tile instrument : ${instrument}`);\n };\n","import type { MapStateToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport { fieldData } from 'utils/fieldSelectors';\nimport { isDefined } from '@sgme/fp';\n\nexport interface TileStatusConnectOwnProps {\n quoteId: string;\n}\n\nexport interface TileStatusConnectStateProps {\n hasError: boolean;\n isEmpty: boolean;\n}\n\nexport interface TileStatusConnectDispatchProps {}\n\n// you can whitelist selectors after implementation\nexport type TileStatusConnectSelectors = Selectors;\n/*\nexport type TileStatusConnectSelectorsKeys = 'aSelector'; // example\nexport type TileStatusConnectSelectors = Pick;\n*/\n\nfunction hasTileError(state: AppState, sl: TileStatusConnectSelectors, quoteId: string) {\n const requestError = sl.getTilePropertiesRequestError(state, quoteId);\n const clientError = sl.getTileState(state, quoteId).clientError;\n\n return isDefined(requestError) || Boolean(clientError);\n}\n\nexport const mapStateToPropsTileStatus: MapStateToPropsHOF<\n TileStatusConnectStateProps,\n TileStatusConnectOwnProps,\n AppState,\n TileStatusConnectSelectors\n> =\n sl =>\n (state, { quoteId }) => {\n const hasError =\n sl.isTilePresent(state, quoteId) &&\n hasTileError(state, sl, quoteId);\n\n const isEmpty = fieldData(sl.getTileCurrencyPair(state, quoteId)).data === null;\n\n return {\n hasError,\n isEmpty,\n };\n };\n","import { connect } from 'react-redux';\nimport { selectors } from 'state/selectors';\nimport { actionCreators } from 'state/actions';\nimport { mapDispatchToPropsCatchTile } from './connectCatchTile';\nimport { mapStateToPropsTileSize } from './connectTileSize';\nimport { mapStateToPropsQuoteHasError } from './connectQuoteHasError';\nimport { mapDispatchToPropsQuoteError } from './connectQuoteError';\nimport { mapStateToPropsTileInstrument } from './connectTileInstrument';\nimport { mapStateToPropsTileStatus } from './connectTileStatus';\n\nexport const connectCatchTile = connect(null, mapDispatchToPropsCatchTile(actionCreators));\n\nexport const connectTileSize = connect(mapStateToPropsTileSize(selectors));\n\nexport const connectQuoteHasError = connect(mapStateToPropsQuoteHasError(selectors));\n\nexport const connectQuoteError = connect(null, mapDispatchToPropsQuoteError(actionCreators));\n\nexport const connectTileInstrument = connect(mapStateToPropsTileInstrument(selectors));\n\nexport const connectTileStatus = connect(mapStateToPropsTileStatus(selectors));\n","import type { CloseTileProps } from './typings';\nimport { button } from 'components/Form/Inputs/e2e';\nimport styled from 'styled-components';\n\nconst CloseButton = styled.button.attrs({ type: 'button' })`\n z-index: 9;\n`;\n\nexport const CloseTile: React.FunctionComponent = ({ closeTile }) => (\n
\n \n close\n \n
\n);\n","import type { MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { ActionCreators } from 'state/actions';\n\nexport interface CloseTileConnectOwnProps {\n quoteId: string;\n}\n\nexport interface CloseTileConnectDispatchProps {\n closeTile(): void;\n}\n\nexport type CloseTileConnectActionCreatorsKeys = 'tileClosedThunk';\nexport type CloseTileConnectActionCreators = Pick<\n ActionCreators,\n CloseTileConnectActionCreatorsKeys\n>;\n\nexport const mapDispatchToPropsCloseTile: MapDispatchToPropsHOF<\n CloseTileConnectDispatchProps,\n CloseTileConnectOwnProps,\n CloseTileConnectActionCreators\n> =\n ac =>\n (dispatch, { quoteId }) => ({\n closeTile: () => {\n dispatch(ac.tileClosedThunk(quoteId));\n },\n });\n","import { connect } from 'react-redux';\nimport { actionCreators } from 'state/actions';\nimport { withQuoteId } from 'components/contexts';\nimport { CloseTile as CloseTileRaw } from './CloseTile';\nimport { mapDispatchToPropsCloseTile } from './connectCloseTile';\n\nconst connectCloseTile = connect(null, mapDispatchToPropsCloseTile(actionCreators));\n\nexport const CloseTile = withQuoteId(connectCloseTile(CloseTileRaw));\n","import { useCallback } from 'react';\nimport { Dropdown, DropdownToggle, DropdownMenu, DropdownItem } from 'reactstrap';\nimport { FormattedMessage } from 'react-intl';\nimport type { InstrumentChooserProps } from './typings';\nimport { selector, button, itemSelector } from 'components/Form/Inputs/e2e';\nimport { useToggle } from 'components/share/hooks/useToggle';\n\nexport const InstrumentChooserRaw: React.FunctionComponent = ({\n instrument,\n availableInstruments,\n ...onInstrumentChange\n}) => {\n const [isOpen, toggle] = useToggle();\n return (\n \n \n \n \n \n {availableInstruments.map(instrumentItem => (\n \n ))}\n \n \n );\n};\n\nconst InstrumentChoice: React.FunctionComponent<\n Pick\n> = ({ instrument, onInstrumentChange }) => {\n const onClick = useCallback(\n () => onInstrumentChange(instrument),\n [instrument, onInstrumentChange],\n );\n return (\n \n \n \n );\n};\n","import type { MapStateToPropsFactoryHOF, MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\nimport { isInstrumentChoice, type InstrumentChoice } from 'state/referenceData/referenceDataModel';\nimport { createSelector } from 'reselect';\nimport { assertUnhandled } from 'utils/error';\nimport { assertUnreachable } from '@sgme/fp';\n\nexport interface InstrumentChooserConnectOwnProps {\n quoteId: string;\n}\n\nexport interface InstrumentChooserConnectStateProps {\n instrument: InstrumentChoice;\n availableInstruments: readonly InstrumentChoice[];\n}\n\nexport interface InstrumentChooserConnectDispatchProps {\n onInstrumentChange(instrument: InstrumentChoice): void;\n}\n\n// you can whitelist selectors after implementation\nexport type InstrumentChooserConnectSelectors = Selectors;\n/*\nexport type InstrumentChooserConnectSelectorsKeys = 'aSelector'; // example\nexport type InstrumentChooserConnectSelectors = Pick;\n*/\n\nconst filterTileInstruments = (instruments: readonly InstrumentChoice[]) =>\n instruments.filter(isInstrumentChoice);\n\nexport const mapStateToPropsInstrumentChooser: MapStateToPropsFactoryHOF<\n InstrumentChooserConnectStateProps,\n InstrumentChooserConnectOwnProps,\n AppState,\n InstrumentChooserConnectSelectors\n> = sl => () => {\n const getFilteredInstruments = createSelector(sl.getAvailableInstruments, filterTileInstruments);\n const getAvailableInstruments = createSelector(\n [getFilteredInstruments, sl.getProductsAccess],\n (filteredInstruments, productAccess) =>\n productAccess.forwardAccu\n ? filteredInstruments\n : filteredInstruments.filter(instrument => instrument !== 'ForwardAccumulator'),\n );\n const getInstrumentChoiceForTile = getInstrumentChoiceForTileWith(sl);\n return (state, { quoteId }) => {\n const instrument = getInstrumentChoiceForTile(state, quoteId);\n return {\n availableInstruments: getAvailableInstruments(state),\n instrument,\n };\n };\n};\n\nconst getInstrumentChoiceForTileWith =\n (sl: Selectors) =>\n (state: AppState, quoteId: string): InstrumentChoice => {\n const { instrument } = sl.getTileState(state, quoteId);\n switch (instrument) {\n case 'Accumulator':\n const productName = sl.getAccumulatorProductName(state, quoteId);\n switch (productName) {\n case 'FxTargetAccumulator':\n return 'TargetAccumulator';\n case 'FxForwardAccumulator':\n return 'ForwardAccumulator';\n default:\n assertUnreachable(productName, 'this product name is not handled');\n }\n break;\n case 'Cash':\n case 'Swap':\n case 'Option':\n return instrument;\n case 'Order':\n case 'BlotterOrder':\n case 'Bulk':\n return assertUnhandled('orders and bulk should not have instrument chooser', instrument);\n }\n };\n\n// you can whitelist action creators after implementation\nexport type InstrumentChooserConnectActionCreators = ActionCreators;\n/*\nexport type InstrumentChooserConnectActionCreatorsKeys = 'optionLegPropertyChanged';\nexport type InstrumentChooserConnectActionCreators = Pick;\n*/\n\nexport const mapDispatchToPropsInstrumentChooser: MapDispatchToPropsHOF<\n InstrumentChooserConnectDispatchProps,\n InstrumentChooserConnectOwnProps,\n InstrumentChooserConnectActionCreators\n> =\n ac =>\n (dispatch, { quoteId }) => ({\n onInstrumentChange: instrument => {\n dispatch(ac.tileInstrumentChangedThunk(quoteId, instrument));\n },\n });\n","import { connect } from 'react-redux';\nimport { selectors } from 'state/selectors';\nimport { actionCreators } from 'state/actions';\nimport { withQuoteId } from 'components/contexts';\nimport { InstrumentChooserRaw } from './InstrumentChooser';\nimport {\n mapStateToPropsInstrumentChooser,\n mapDispatchToPropsInstrumentChooser,\n} from './connectInstrumentChooser';\n\nconst connectInstrumentChooser = connect(\n mapStateToPropsInstrumentChooser(selectors),\n mapDispatchToPropsInstrumentChooser(actionCreators),\n);\n\nexport const InstrumentChooser = withQuoteId(connectInstrumentChooser(InstrumentChooserRaw));\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.getScrollbarWidth = getScrollbarWidth;\nexports.setScrollbarWidth = setScrollbarWidth;\nexports.isBodyOverflowing = isBodyOverflowing;\nexports.getOriginalBodyPadding = getOriginalBodyPadding;\nexports.conditionallyUpdateScrollbar = conditionallyUpdateScrollbar;\nexports.setGlobalCssModule = setGlobalCssModule;\nexports.mapToCssModules = mapToCssModules;\nexports.omit = omit;\nexports.pick = pick;\nexports.warnOnce = warnOnce;\nexports.deprecated = deprecated;\nexports.DOMElement = DOMElement;\nexports.isReactRefObj = isReactRefObj;\nexports.toNumber = toNumber;\nexports.isObject = isObject;\nexports.isFunction = isFunction;\nexports.findDOMElements = findDOMElements;\nexports.isArrayOrNodeList = isArrayOrNodeList;\nexports.getTarget = getTarget;\nexports.addMultipleEventListeners = addMultipleEventListeners;\nexports.focusableElements = exports.defaultToggleEvents = exports.canUseDOM = exports.PopperPlacements = exports.keyCodes = exports.TransitionStatuses = exports.TransitionPropTypeKeys = exports.TransitionTimeouts = exports.tagPropType = exports.targetPropType = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\n// https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/js/src/modal.js#L436-L443\nfunction getScrollbarWidth() {\n var scrollDiv = document.createElement('div'); // .modal-scrollbar-measure styles // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/scss/_modal.scss#L106-L113\n\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n}\n\nfunction setScrollbarWidth(padding) {\n document.body.style.paddingRight = padding > 0 ? padding + \"px\" : null;\n}\n\nfunction isBodyOverflowing() {\n return document.body.clientWidth < window.innerWidth;\n}\n\nfunction getOriginalBodyPadding() {\n var style = window.getComputedStyle(document.body, null);\n return parseInt(style && style.getPropertyValue('padding-right') || 0, 10);\n}\n\nfunction conditionallyUpdateScrollbar() {\n var scrollbarWidth = getScrollbarWidth(); // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.6/js/src/modal.js#L433\n\n var fixedContent = document.querySelectorAll('.fixed-top, .fixed-bottom, .is-fixed, .sticky-top')[0];\n var bodyPadding = fixedContent ? parseInt(fixedContent.style.paddingRight || 0, 10) : 0;\n\n if (isBodyOverflowing()) {\n setScrollbarWidth(bodyPadding + scrollbarWidth);\n }\n}\n\nvar globalCssModule;\n\nfunction setGlobalCssModule(cssModule) {\n globalCssModule = cssModule;\n}\n\nfunction mapToCssModules(className, cssModule) {\n if (className === void 0) {\n className = '';\n }\n\n if (cssModule === void 0) {\n cssModule = globalCssModule;\n }\n\n if (!cssModule) return className;\n return className.split(' ').map(function (c) {\n return cssModule[c] || c;\n }).join(' ');\n}\n/**\n * Returns a new object with the key/value pairs from `obj` that are not in the array `omitKeys`.\n */\n\n\nfunction omit(obj, omitKeys) {\n var result = {};\n Object.keys(obj).forEach(function (key) {\n if (omitKeys.indexOf(key) === -1) {\n result[key] = obj[key];\n }\n });\n return result;\n}\n/**\n * Returns a filtered copy of an object with only the specified keys.\n */\n\n\nfunction pick(obj, keys) {\n var pickKeys = Array.isArray(keys) ? keys : [keys];\n var length = pickKeys.length;\n var key;\n var result = {};\n\n while (length > 0) {\n length -= 1;\n key = pickKeys[length];\n result[key] = obj[key];\n }\n\n return result;\n}\n\nvar warned = {};\n\nfunction warnOnce(message) {\n if (!warned[message]) {\n /* istanbul ignore else */\n if (typeof console !== 'undefined') {\n console.error(message); // eslint-disable-line no-console\n }\n\n warned[message] = true;\n }\n}\n\nfunction deprecated(propType, explanation) {\n return function validate(props, propName, componentName) {\n if (props[propName] !== null && typeof props[propName] !== 'undefined') {\n warnOnce(\"\\\"\" + propName + \"\\\" property of \\\"\" + componentName + \"\\\" has been deprecated.\\n\" + explanation);\n }\n\n for (var _len = arguments.length, rest = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n rest[_key - 3] = arguments[_key];\n }\n\n return propType.apply(void 0, [props, propName, componentName].concat(rest));\n };\n} // Shim Element if needed (e.g. in Node environment)\n\n\nvar Element = typeof window === 'object' && window.Element || function () {};\n\nfunction DOMElement(props, propName, componentName) {\n if (!(props[propName] instanceof Element)) {\n return new Error('Invalid prop `' + propName + '` supplied to `' + componentName + '`. Expected prop to be an instance of Element. Validation failed.');\n }\n}\n\nvar targetPropType = _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func, DOMElement, _propTypes.default.shape({\n current: _propTypes.default.any\n})]);\n\nexports.targetPropType = targetPropType;\n\nvar tagPropType = _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.string, _propTypes.default.shape({\n $$typeof: _propTypes.default.symbol,\n render: _propTypes.default.func\n}), _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.string, _propTypes.default.shape({\n $$typeof: _propTypes.default.symbol,\n render: _propTypes.default.func\n})]))]);\n/* eslint key-spacing: [\"error\", { afterColon: true, align: \"value\" }] */\n// These are all setup to match what is in the bootstrap _variables.scss\n// https://github.com/twbs/bootstrap/blob/v4-dev/scss/_variables.scss\n\n\nexports.tagPropType = tagPropType;\nvar TransitionTimeouts = {\n Fade: 150,\n // $transition-fade\n Collapse: 350,\n // $transition-collapse\n Modal: 300,\n // $modal-transition\n Carousel: 600 // $carousel-transition\n\n}; // Duplicated Transition.propType keys to ensure that Reactstrap builds\n// for distribution properly exclude these keys for nested child HTML attributes\n// since `react-transition-group` removes propTypes in production builds.\n\nexports.TransitionTimeouts = TransitionTimeouts;\nvar TransitionPropTypeKeys = ['in', 'mountOnEnter', 'unmountOnExit', 'appear', 'enter', 'exit', 'timeout', 'onEnter', 'onEntering', 'onEntered', 'onExit', 'onExiting', 'onExited'];\nexports.TransitionPropTypeKeys = TransitionPropTypeKeys;\nvar TransitionStatuses = {\n ENTERING: 'entering',\n ENTERED: 'entered',\n EXITING: 'exiting',\n EXITED: 'exited'\n};\nexports.TransitionStatuses = TransitionStatuses;\nvar keyCodes = {\n esc: 27,\n space: 32,\n enter: 13,\n tab: 9,\n up: 38,\n down: 40,\n home: 36,\n end: 35,\n n: 78,\n p: 80\n};\nexports.keyCodes = keyCodes;\nvar PopperPlacements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\nexports.PopperPlacements = PopperPlacements;\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexports.canUseDOM = canUseDOM;\n\nfunction isReactRefObj(target) {\n if (target && typeof target === 'object') {\n return 'current' in target;\n }\n\n return false;\n}\n\nfunction getTag(value) {\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n\n return Object.prototype.toString.call(value);\n}\n\nfunction toNumber(value) {\n var type = typeof value;\n var NAN = 0 / 0;\n\n if (type === 'number') {\n return value;\n }\n\n if (type === 'symbol' || type === 'object' && getTag(value) === '[object Symbol]') {\n return NAN;\n }\n\n if (isObject(value)) {\n var other = typeof value.valueOf === 'function' ? value.valueOf() : value;\n value = isObject(other) ? \"\" + other : other;\n }\n\n if (type !== 'string') {\n return value === 0 ? value : +value;\n }\n\n value = value.replace(/^\\s+|\\s+$/g, '');\n var isBinary = /^0b[01]+$/i.test(value);\n return isBinary || /^0o[0-7]+$/i.test(value) ? parseInt(value.slice(2), isBinary ? 2 : 8) : /^[-+]0x[0-9a-f]+$/i.test(value) ? NAN : +value;\n}\n\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n\n var tag = getTag(value);\n return tag === '[object Function]' || tag === '[object AsyncFunction]' || tag === '[object GeneratorFunction]' || tag === '[object Proxy]';\n}\n\nfunction findDOMElements(target) {\n if (isReactRefObj(target)) {\n return target.current;\n }\n\n if (isFunction(target)) {\n return target();\n }\n\n if (typeof target === 'string' && canUseDOM) {\n var selection = document.querySelectorAll(target);\n\n if (!selection.length) {\n selection = document.querySelectorAll(\"#\" + target);\n }\n\n if (!selection.length) {\n throw new Error(\"The target '\" + target + \"' could not be identified in the dom, tip: check spelling\");\n }\n\n return selection;\n }\n\n return target;\n}\n\nfunction isArrayOrNodeList(els) {\n if (els === null) {\n return false;\n }\n\n return Array.isArray(els) || canUseDOM && typeof els.length === 'number';\n}\n\nfunction getTarget(target, allElements) {\n var els = findDOMElements(target);\n\n if (allElements) {\n if (isArrayOrNodeList(els)) {\n return els;\n }\n\n if (els === null) {\n return [];\n }\n\n return [els];\n } else {\n if (isArrayOrNodeList(els)) {\n return els[0];\n }\n\n return els;\n }\n}\n\nvar defaultToggleEvents = ['touchstart', 'click'];\nexports.defaultToggleEvents = defaultToggleEvents;\n\nfunction addMultipleEventListeners(_els, handler, _events, useCapture) {\n var els = _els;\n\n if (!isArrayOrNodeList(els)) {\n els = [els];\n }\n\n var events = _events;\n\n if (typeof events === 'string') {\n events = events.split(/\\s+/);\n }\n\n if (!isArrayOrNodeList(els) || typeof handler !== 'function' || !Array.isArray(events)) {\n throw new Error(\"\\n The first argument of this function must be DOM node or an array on DOM nodes or NodeList.\\n The second must be a function.\\n The third is a string or an array of strings that represents DOM events\\n \");\n }\n\n Array.prototype.forEach.call(events, function (event) {\n Array.prototype.forEach.call(els, function (el) {\n el.addEventListener(event, handler, useCapture);\n });\n });\n return function removeEvents() {\n Array.prototype.forEach.call(events, function (event) {\n Array.prototype.forEach.call(els, function (el) {\n el.removeEventListener(event, handler, useCapture);\n });\n });\n };\n}\n\nvar focusableElements = ['a[href]', 'area[href]', 'input:not([disabled]):not([type=hidden])', 'select:not([disabled])', 'textarea:not([disabled])', 'button:not([disabled])', 'object', 'embed', '[tabindex]:not(.modal)', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])'];\nexports.focusableElements = focusableElements;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _reactTransitionGroup = require(\"react-transition-group\");\n\nvar _utils = require(\"./utils\");\n\nvar _excluded = [\"tag\", \"baseClass\", \"baseClassActive\", \"className\", \"cssModule\", \"children\", \"innerRef\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar propTypes = _objectSpread(_objectSpread({}, _reactTransitionGroup.Transition.propTypes), {}, {\n children: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.node), _propTypes.default.node]),\n tag: _utils.tagPropType,\n baseClass: _propTypes.default.string,\n baseClassActive: _propTypes.default.string,\n className: _propTypes.default.string,\n cssModule: _propTypes.default.object,\n innerRef: _propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.string, _propTypes.default.func])\n});\n\nvar defaultProps = _objectSpread(_objectSpread({}, _reactTransitionGroup.Transition.defaultProps), {}, {\n tag: 'div',\n baseClass: 'fade',\n baseClassActive: 'show',\n timeout: _utils.TransitionTimeouts.Fade,\n appear: true,\n enter: true,\n exit: true,\n in: true\n});\n\nfunction Fade(props) {\n var Tag = props.tag,\n baseClass = props.baseClass,\n baseClassActive = props.baseClassActive,\n className = props.className,\n cssModule = props.cssModule,\n children = props.children,\n innerRef = props.innerRef,\n otherProps = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);\n var transitionProps = (0, _utils.pick)(otherProps, _utils.TransitionPropTypeKeys);\n var childProps = (0, _utils.omit)(otherProps, _utils.TransitionPropTypeKeys);\n return /*#__PURE__*/_react.default.createElement(_reactTransitionGroup.Transition, transitionProps, function (status) {\n var isActive = status === 'entered';\n var classes = (0, _utils.mapToCssModules)((0, _classnames.default)(className, baseClass, isActive && baseClassActive), cssModule);\n return /*#__PURE__*/_react.default.createElement(Tag, (0, _extends2.default)({\n className: classes\n }, childProps, {\n ref: innerRef\n }), children);\n });\n}\n\nFade.propTypes = propTypes;\nFade.defaultProps = defaultProps;\nvar _default = Fade;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _reactPopper = require(\"react-popper\");\n\nvar _utils = require(\"./utils\");\n\nvar _Fade = _interopRequireDefault(require(\"./Fade\"));\n\nvar _excluded = [\"cssModule\", \"children\", \"isOpen\", \"flip\", \"target\", \"offset\", \"fallbackPlacement\", \"placementPrefix\", \"arrowClassName\", \"hideArrow\", \"popperClassName\", \"tag\", \"container\", \"modifiers\", \"positionFixed\", \"boundariesElement\", \"onClosed\", \"fade\", \"transition\", \"placement\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction noop() {}\n\nvar propTypes = {\n children: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.func]).isRequired,\n popperClassName: _propTypes.default.string,\n placement: _propTypes.default.string,\n placementPrefix: _propTypes.default.string,\n arrowClassName: _propTypes.default.string,\n hideArrow: _propTypes.default.bool,\n tag: _utils.tagPropType,\n isOpen: _propTypes.default.bool.isRequired,\n cssModule: _propTypes.default.object,\n offset: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),\n fallbackPlacement: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.array]),\n flip: _propTypes.default.bool,\n container: _utils.targetPropType,\n target: _utils.targetPropType.isRequired,\n modifiers: _propTypes.default.object,\n positionFixed: _propTypes.default.bool,\n boundariesElement: _propTypes.default.oneOfType([_propTypes.default.string, _utils.DOMElement]),\n onClosed: _propTypes.default.func,\n fade: _propTypes.default.bool,\n transition: _propTypes.default.shape(_Fade.default.propTypes)\n};\nvar defaultProps = {\n boundariesElement: 'scrollParent',\n placement: 'auto',\n hideArrow: false,\n isOpen: false,\n offset: 0,\n fallbackPlacement: 'flip',\n flip: true,\n container: 'body',\n modifiers: {},\n onClosed: noop,\n fade: true,\n transition: _objectSpread({}, _Fade.default.defaultProps)\n};\n\nvar PopperContent = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(PopperContent, _React$Component);\n\n function PopperContent(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.setTargetNode = _this.setTargetNode.bind((0, _assertThisInitialized2.default)(_this));\n _this.getTargetNode = _this.getTargetNode.bind((0, _assertThisInitialized2.default)(_this));\n _this.getRef = _this.getRef.bind((0, _assertThisInitialized2.default)(_this));\n _this.onClosed = _this.onClosed.bind((0, _assertThisInitialized2.default)(_this));\n _this.state = {\n isOpen: props.isOpen\n };\n return _this;\n }\n\n PopperContent.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n if (props.isOpen && !state.isOpen) {\n return {\n isOpen: props.isOpen\n };\n } else return null;\n };\n\n var _proto = PopperContent.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n if (this._element && this._element.childNodes && this._element.childNodes[0] && this._element.childNodes[0].focus) {\n this._element.childNodes[0].focus();\n }\n };\n\n _proto.setTargetNode = function setTargetNode(node) {\n this.targetNode = typeof node === 'string' ? (0, _utils.getTarget)(node) : node;\n };\n\n _proto.getTargetNode = function getTargetNode() {\n return this.targetNode;\n };\n\n _proto.getContainerNode = function getContainerNode() {\n return (0, _utils.getTarget)(this.props.container);\n };\n\n _proto.getRef = function getRef(ref) {\n this._element = ref;\n };\n\n _proto.onClosed = function onClosed() {\n this.props.onClosed();\n this.setState({\n isOpen: false\n });\n };\n\n _proto.renderChildren = function renderChildren() {\n var _this$props = this.props,\n cssModule = _this$props.cssModule,\n children = _this$props.children,\n isOpen = _this$props.isOpen,\n flip = _this$props.flip,\n target = _this$props.target,\n offset = _this$props.offset,\n fallbackPlacement = _this$props.fallbackPlacement,\n placementPrefix = _this$props.placementPrefix,\n _arrowClassName = _this$props.arrowClassName,\n hideArrow = _this$props.hideArrow,\n _popperClassName = _this$props.popperClassName,\n tag = _this$props.tag,\n container = _this$props.container,\n modifiers = _this$props.modifiers,\n positionFixed = _this$props.positionFixed,\n boundariesElement = _this$props.boundariesElement,\n onClosed = _this$props.onClosed,\n fade = _this$props.fade,\n transition = _this$props.transition,\n placement = _this$props.placement,\n attrs = (0, _objectWithoutPropertiesLoose2.default)(_this$props, _excluded);\n var arrowClassName = (0, _utils.mapToCssModules)((0, _classnames.default)('arrow', _arrowClassName), cssModule);\n var popperClassName = (0, _utils.mapToCssModules)((0, _classnames.default)(_popperClassName, placementPrefix ? placementPrefix + \"-auto\" : ''), this.props.cssModule);\n\n var extendedModifiers = _objectSpread({\n offset: {\n offset: offset\n },\n flip: {\n enabled: flip,\n behavior: fallbackPlacement\n },\n preventOverflow: {\n boundariesElement: boundariesElement\n }\n }, modifiers);\n\n var popperTransition = _objectSpread(_objectSpread(_objectSpread({}, _Fade.default.defaultProps), transition), {}, {\n baseClass: fade ? transition.baseClass : '',\n timeout: fade ? transition.timeout : 0\n });\n\n return /*#__PURE__*/_react.default.createElement(_Fade.default, (0, _extends2.default)({}, popperTransition, attrs, {\n in: isOpen,\n onExited: this.onClosed,\n tag: tag\n }), /*#__PURE__*/_react.default.createElement(_reactPopper.Popper, {\n referenceElement: this.targetNode,\n modifiers: extendedModifiers,\n placement: placement,\n positionFixed: positionFixed\n }, function (_ref) {\n var ref = _ref.ref,\n style = _ref.style,\n placement = _ref.placement,\n outOfBoundaries = _ref.outOfBoundaries,\n arrowProps = _ref.arrowProps,\n scheduleUpdate = _ref.scheduleUpdate;\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n ref: ref,\n style: style,\n className: popperClassName,\n \"x-placement\": placement,\n \"x-out-of-boundaries\": outOfBoundaries ? 'true' : undefined\n }, typeof children === 'function' ? children({\n scheduleUpdate: scheduleUpdate\n }) : children, !hideArrow && /*#__PURE__*/_react.default.createElement(\"span\", {\n ref: arrowProps.ref,\n className: arrowClassName,\n style: arrowProps.style\n }));\n }));\n };\n\n _proto.render = function render() {\n this.setTargetNode(this.props.target);\n\n if (this.state.isOpen) {\n return this.props.container === 'inline' ? this.renderChildren() : /*#__PURE__*/_reactDom.default.createPortal( /*#__PURE__*/_react.default.createElement(\"div\", {\n ref: this.getRef\n }, this.renderChildren()), this.getContainerNode());\n }\n\n return null;\n };\n\n return PopperContent;\n}(_react.default.Component);\n\nPopperContent.propTypes = propTypes;\nPopperContent.defaultProps = defaultProps;\nvar _default = PopperContent;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = exports.propTypes = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _PopperContent = _interopRequireDefault(require(\"./PopperContent\"));\n\nvar _utils = require(\"./utils\");\n\nvar propTypes = {\n children: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.func]),\n placement: _propTypes.default.oneOf(_utils.PopperPlacements),\n target: _utils.targetPropType.isRequired,\n container: _utils.targetPropType,\n isOpen: _propTypes.default.bool,\n disabled: _propTypes.default.bool,\n hideArrow: _propTypes.default.bool,\n boundariesElement: _propTypes.default.oneOfType([_propTypes.default.string, _utils.DOMElement]),\n className: _propTypes.default.string,\n innerClassName: _propTypes.default.string,\n arrowClassName: _propTypes.default.string,\n popperClassName: _propTypes.default.string,\n cssModule: _propTypes.default.object,\n toggle: _propTypes.default.func,\n autohide: _propTypes.default.bool,\n placementPrefix: _propTypes.default.string,\n delay: _propTypes.default.oneOfType([_propTypes.default.shape({\n show: _propTypes.default.number,\n hide: _propTypes.default.number\n }), _propTypes.default.number]),\n modifiers: _propTypes.default.object,\n positionFixed: _propTypes.default.bool,\n offset: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),\n innerRef: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.string, _propTypes.default.object]),\n trigger: _propTypes.default.string,\n fade: _propTypes.default.bool,\n flip: _propTypes.default.bool\n};\nexports.propTypes = propTypes;\nvar DEFAULT_DELAYS = {\n show: 0,\n hide: 50\n};\nvar defaultProps = {\n isOpen: false,\n hideArrow: false,\n autohide: false,\n delay: DEFAULT_DELAYS,\n toggle: function toggle() {},\n trigger: 'click',\n fade: true\n};\n\nfunction isInDOMSubtree(element, subtreeRoot) {\n return subtreeRoot && (element === subtreeRoot || subtreeRoot.contains(element));\n}\n\nfunction isInDOMSubtrees(element, subtreeRoots) {\n if (subtreeRoots === void 0) {\n subtreeRoots = [];\n }\n\n return subtreeRoots && subtreeRoots.length && subtreeRoots.filter(function (subTreeRoot) {\n return isInDOMSubtree(element, subTreeRoot);\n })[0];\n}\n\nvar TooltipPopoverWrapper = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(TooltipPopoverWrapper, _React$Component);\n\n function TooltipPopoverWrapper(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this._targets = [];\n _this.currentTargetElement = null;\n _this.addTargetEvents = _this.addTargetEvents.bind((0, _assertThisInitialized2.default)(_this));\n _this.handleDocumentClick = _this.handleDocumentClick.bind((0, _assertThisInitialized2.default)(_this));\n _this.removeTargetEvents = _this.removeTargetEvents.bind((0, _assertThisInitialized2.default)(_this));\n _this.toggle = _this.toggle.bind((0, _assertThisInitialized2.default)(_this));\n _this.showWithDelay = _this.showWithDelay.bind((0, _assertThisInitialized2.default)(_this));\n _this.hideWithDelay = _this.hideWithDelay.bind((0, _assertThisInitialized2.default)(_this));\n _this.onMouseOverTooltipContent = _this.onMouseOverTooltipContent.bind((0, _assertThisInitialized2.default)(_this));\n _this.onMouseLeaveTooltipContent = _this.onMouseLeaveTooltipContent.bind((0, _assertThisInitialized2.default)(_this));\n _this.show = _this.show.bind((0, _assertThisInitialized2.default)(_this));\n _this.hide = _this.hide.bind((0, _assertThisInitialized2.default)(_this));\n _this.onEscKeyDown = _this.onEscKeyDown.bind((0, _assertThisInitialized2.default)(_this));\n _this.getRef = _this.getRef.bind((0, _assertThisInitialized2.default)(_this));\n _this.state = {\n isOpen: props.isOpen\n };\n _this._isMounted = false;\n return _this;\n }\n\n var _proto = TooltipPopoverWrapper.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n this.updateTarget();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this._isMounted = false;\n this.removeTargetEvents();\n this._targets = null;\n this.clearShowTimeout();\n this.clearHideTimeout();\n };\n\n TooltipPopoverWrapper.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n if (props.isOpen && !state.isOpen) {\n return {\n isOpen: props.isOpen\n };\n } else return null;\n };\n\n _proto.onMouseOverTooltipContent = function onMouseOverTooltipContent() {\n if (this.props.trigger.indexOf('hover') > -1 && !this.props.autohide) {\n if (this._hideTimeout) {\n this.clearHideTimeout();\n }\n\n if (this.state.isOpen && !this.props.isOpen) {\n this.toggle();\n }\n }\n };\n\n _proto.onMouseLeaveTooltipContent = function onMouseLeaveTooltipContent(e) {\n if (this.props.trigger.indexOf('hover') > -1 && !this.props.autohide) {\n if (this._showTimeout) {\n this.clearShowTimeout();\n }\n\n e.persist();\n this._hideTimeout = setTimeout(this.hide.bind(this, e), this.getDelay('hide'));\n }\n };\n\n _proto.onEscKeyDown = function onEscKeyDown(e) {\n if (e.key === 'Escape') {\n this.hide(e);\n }\n };\n\n _proto.getRef = function getRef(ref) {\n var innerRef = this.props.innerRef;\n\n if (innerRef) {\n if (typeof innerRef === 'function') {\n innerRef(ref);\n } else if (typeof innerRef === 'object') {\n innerRef.current = ref;\n }\n }\n\n this._popover = ref;\n };\n\n _proto.getDelay = function getDelay(key) {\n var delay = this.props.delay;\n\n if (typeof delay === 'object') {\n return isNaN(delay[key]) ? DEFAULT_DELAYS[key] : delay[key];\n }\n\n return delay;\n };\n\n _proto.getCurrentTarget = function getCurrentTarget(target) {\n if (!target) return null;\n\n var index = this._targets.indexOf(target);\n\n if (index >= 0) return this._targets[index];\n return this.getCurrentTarget(target.parentElement);\n };\n\n _proto.show = function show(e) {\n if (!this.props.isOpen) {\n this.clearShowTimeout();\n this.currentTargetElement = e ? e.currentTarget || this.getCurrentTarget(e.target) : null;\n\n if (e && e.composedPath && typeof e.composedPath === 'function') {\n var path = e.composedPath();\n this.currentTargetElement = path && path[0] || this.currentTargetElement;\n }\n\n this.toggle(e);\n }\n };\n\n _proto.showWithDelay = function showWithDelay(e) {\n if (this._hideTimeout) {\n this.clearHideTimeout();\n }\n\n this._showTimeout = setTimeout(this.show.bind(this, e), this.getDelay('show'));\n };\n\n _proto.hide = function hide(e) {\n if (this.props.isOpen) {\n this.clearHideTimeout();\n this.currentTargetElement = null;\n this.toggle(e);\n }\n };\n\n _proto.hideWithDelay = function hideWithDelay(e) {\n if (this._showTimeout) {\n this.clearShowTimeout();\n }\n\n this._hideTimeout = setTimeout(this.hide.bind(this, e), this.getDelay('hide'));\n };\n\n _proto.clearShowTimeout = function clearShowTimeout() {\n clearTimeout(this._showTimeout);\n this._showTimeout = undefined;\n };\n\n _proto.clearHideTimeout = function clearHideTimeout() {\n clearTimeout(this._hideTimeout);\n this._hideTimeout = undefined;\n };\n\n _proto.handleDocumentClick = function handleDocumentClick(e) {\n var triggers = this.props.trigger.split(' ');\n\n if (triggers.indexOf('legacy') > -1 && (this.props.isOpen || isInDOMSubtrees(e.target, this._targets))) {\n if (this._hideTimeout) {\n this.clearHideTimeout();\n }\n\n if (this.props.isOpen && !isInDOMSubtree(e.target, this._popover)) {\n this.hideWithDelay(e);\n } else if (!this.props.isOpen) {\n this.showWithDelay(e);\n }\n } else if (triggers.indexOf('click') > -1 && isInDOMSubtrees(e.target, this._targets)) {\n if (this._hideTimeout) {\n this.clearHideTimeout();\n }\n\n if (!this.props.isOpen) {\n this.showWithDelay(e);\n } else {\n this.hideWithDelay(e);\n }\n }\n };\n\n _proto.addEventOnTargets = function addEventOnTargets(type, handler, isBubble) {\n this._targets.forEach(function (target) {\n target.addEventListener(type, handler, isBubble);\n });\n };\n\n _proto.removeEventOnTargets = function removeEventOnTargets(type, handler, isBubble) {\n this._targets.forEach(function (target) {\n target.removeEventListener(type, handler, isBubble);\n });\n };\n\n _proto.addTargetEvents = function addTargetEvents() {\n if (this.props.trigger) {\n var triggers = this.props.trigger.split(' ');\n\n if (triggers.indexOf('manual') === -1) {\n if (triggers.indexOf('click') > -1 || triggers.indexOf('legacy') > -1) {\n document.addEventListener('click', this.handleDocumentClick, true);\n }\n\n if (this._targets && this._targets.length) {\n if (triggers.indexOf('hover') > -1) {\n this.addEventOnTargets('mouseover', this.showWithDelay, true);\n this.addEventOnTargets('mouseout', this.hideWithDelay, true);\n }\n\n if (triggers.indexOf('focus') > -1) {\n this.addEventOnTargets('focusin', this.show, true);\n this.addEventOnTargets('focusout', this.hide, true);\n }\n\n this.addEventOnTargets('keydown', this.onEscKeyDown, true);\n }\n }\n }\n };\n\n _proto.removeTargetEvents = function removeTargetEvents() {\n if (this._targets) {\n this.removeEventOnTargets('mouseover', this.showWithDelay, true);\n this.removeEventOnTargets('mouseout', this.hideWithDelay, true);\n this.removeEventOnTargets('keydown', this.onEscKeyDown, true);\n this.removeEventOnTargets('focusin', this.show, true);\n this.removeEventOnTargets('focusout', this.hide, true);\n }\n\n document.removeEventListener('click', this.handleDocumentClick, true);\n };\n\n _proto.updateTarget = function updateTarget() {\n var newTarget = (0, _utils.getTarget)(this.props.target, true);\n\n if (newTarget !== this._targets) {\n this.removeTargetEvents();\n this._targets = newTarget ? Array.from(newTarget) : [];\n this.currentTargetElement = this.currentTargetElement || this._targets[0];\n this.addTargetEvents();\n }\n };\n\n _proto.toggle = function toggle(e) {\n if (this.props.disabled || !this._isMounted) {\n return e && e.preventDefault();\n }\n\n return this.props.toggle(e);\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n if (this.props.isOpen) {\n this.updateTarget();\n }\n\n var target = this.currentTargetElement || this._targets[0];\n\n if (!target) {\n return null;\n }\n\n var _this$props = this.props,\n className = _this$props.className,\n cssModule = _this$props.cssModule,\n innerClassName = _this$props.innerClassName,\n isOpen = _this$props.isOpen,\n hideArrow = _this$props.hideArrow,\n boundariesElement = _this$props.boundariesElement,\n placement = _this$props.placement,\n placementPrefix = _this$props.placementPrefix,\n arrowClassName = _this$props.arrowClassName,\n popperClassName = _this$props.popperClassName,\n container = _this$props.container,\n modifiers = _this$props.modifiers,\n positionFixed = _this$props.positionFixed,\n offset = _this$props.offset,\n fade = _this$props.fade,\n flip = _this$props.flip,\n children = _this$props.children;\n var attributes = (0, _utils.omit)(this.props, Object.keys(propTypes));\n var popperClasses = (0, _utils.mapToCssModules)(popperClassName, cssModule);\n var classes = (0, _utils.mapToCssModules)(innerClassName, cssModule);\n return /*#__PURE__*/_react.default.createElement(_PopperContent.default, {\n className: className,\n target: target,\n isOpen: isOpen,\n hideArrow: hideArrow,\n boundariesElement: boundariesElement,\n placement: placement,\n placementPrefix: placementPrefix,\n arrowClassName: arrowClassName,\n popperClassName: popperClasses,\n container: container,\n modifiers: modifiers,\n positionFixed: positionFixed,\n offset: offset,\n cssModule: cssModule,\n fade: fade,\n flip: flip\n }, function (_ref) {\n var scheduleUpdate = _ref.scheduleUpdate;\n return /*#__PURE__*/_react.default.createElement(\"div\", (0, _extends2.default)({}, attributes, {\n ref: _this2.getRef,\n className: classes,\n role: \"tooltip\",\n onMouseOver: _this2.onMouseOverTooltipContent,\n onMouseLeave: _this2.onMouseLeaveTooltipContent,\n onKeyDown: _this2.onEscKeyDown\n }), typeof children === 'function' ? children({\n scheduleUpdate: scheduleUpdate\n }) : children);\n });\n };\n\n return TooltipPopoverWrapper;\n}(_react.default.Component);\n\nTooltipPopoverWrapper.propTypes = propTypes;\nTooltipPopoverWrapper.defaultProps = defaultProps;\nvar _default = TooltipPopoverWrapper;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _TooltipPopoverWrapper = _interopRequireWildcard(require(\"./TooltipPopoverWrapper\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar defaultProps = {\n placement: 'right',\n placementPrefix: 'bs-popover',\n trigger: 'click'\n};\n\nvar Popover = function Popover(props) {\n var popperClasses = (0, _classnames.default)('popover', 'show', props.popperClassName);\n var classes = (0, _classnames.default)('popover-inner', props.innerClassName);\n return /*#__PURE__*/_react.default.createElement(_TooltipPopoverWrapper.default, (0, _extends2.default)({}, props, {\n popperClassName: popperClasses,\n innerClassName: classes\n }));\n};\n\nPopover.propTypes = _TooltipPopoverWrapper.propTypes;\nPopover.defaultProps = defaultProps;\nvar _default = Popover;\nexports.default = _default;","import { PureComponent } from 'react';\nimport type { RenderPropChildren } from 'typings/utils';\n\ninterface RefToggleState {\n isOpen: boolean;\n target: E | null;\n propIsOpen?: boolean;\n}\ninterface RefToggleProps {\n isOpen?: boolean;\n toggle?(): void;\n}\nexport interface RefToggleChildrenProps {\n isOpen: boolean;\n target: E | null;\n ref(target: E | null): void;\n toggle(): void;\n close(): void;\n open(): void;\n}\n\nexport class RefToggle extends PureComponent<\n RenderPropChildren> & RefToggleProps,\n RefToggleState\n> {\n public state = {\n propIsOpen: this.props.isOpen,\n isOpen: this.props.isOpen === true,\n target: null,\n };\n public static getDerivedStateFromProps(\n { isOpen }: RefToggleProps,\n { propIsOpen }: RefToggleState,\n ) {\n if (isOpen !== propIsOpen) {\n return { isOpen, propIsOpen: isOpen };\n }\n return null;\n }\n private toggle = () => {\n this.setState(({ isOpen }) => ({ isOpen: !isOpen }));\n if (this.props.toggle !== undefined) {\n this.props.toggle();\n }\n };\n private close = () => this.setState(() => ({ isOpen: false }));\n private open = () => this.setState(() => ({ isOpen: true }));\n private ref = (target: E | null): void => {\n this.setState(() => ({ target }));\n };\n private get childrenProps(): RefToggleChildrenProps {\n return {\n target: this.state.target,\n isOpen: this.state.isOpen,\n toggle: this.toggle.bind(this),\n close: this.close.bind(this),\n open: this.open.bind(this),\n ref: this.ref.bind(this),\n };\n }\n public render() {\n return this.props.children(this.childrenProps);\n }\n}\n","import { connect } from 'react-redux';\nimport type { AppState } from 'state/model';\nimport type { PredealCheck, PredealCheckStatusHealth } from 'state/share/predealChecksModel';\nimport { isUserInternalSales } from 'state/referenceData/referenceDataSelectors';\nimport { getTilePredealChecks } from 'state/sharedSelectors';\n\nexport interface IPredealChecksOwnProps {\n quoteId: string;\n}\n\nexport interface IPredealChecksStateProps {\n predealChecks: readonly PredealCheck[];\n globalStatus: PredealCheckStatusHealth;\n isVisible: boolean;\n}\n\nfunction mapStateToProps(\n state: AppState,\n { quoteId }: IPredealChecksOwnProps,\n): IPredealChecksStateProps {\n const isInternalSales = isUserInternalSales(state);\n const { predealChecks, globalStatus } = getTilePredealChecks(state, quoteId);\n\n return {\n predealChecks,\n globalStatus,\n isVisible: isInternalSales && !!predealChecks.length,\n };\n}\n\nexport const connectPredealChecks = connect(mapStateToProps);\n","import { FormattedMessage } from 'react-intl';\nimport Popover from 'reactstrap/lib/Popover';\nimport { withQuoteId } from 'components/contexts';\nimport { RefToggle } from 'components/share/RefToggle';\nimport type { IPredealChecksOwnProps, IPredealChecksStateProps } from './PredealChecksConnect';\nimport type { PredealCheck, PredealCheckStatusHealth } from 'state/share/predealChecksModel';\nimport { connectPredealChecks } from './PredealChecksConnect';\nimport styled from 'styled-components';\n\ntype PredealChecksProps = IPredealChecksOwnProps & IPredealChecksStateProps;\n\ntype Icon = 'lens' | 'close';\nexport type ClassName = 'text-muted' | 'text-success' | 'text-warning' | 'text-danger';\n\nconst statusToIcon: Record = {\n Unknown: ['lens', 'text-muted'],\n Ok: ['lens', 'text-success'],\n Nok: ['lens', 'text-danger'],\n Warning: ['lens', 'text-warning'],\n Missing: ['close', 'text-muted'],\n};\n\nconst statusToStylename = (predealCheckStatusHealth: PredealCheckStatusHealth): [Icon, ClassName] =>\n statusToIcon[predealCheckStatusHealth];\n\nconst PredealCheckLine: React.FunctionComponent<{\n predealCheck: PredealCheck;\n}> = ({ predealCheck }) => {\n switch (predealCheck.type) {\n case 'Icon':\n const [icon, color] = statusToStylename(predealCheck.statusHealth);\n return (\n <>\n {predealCheck.label}{' '}\n \n {icon}\n
\n \n );\n case 'Label':\n return (\n <>\n
{predealCheck.label}
{' '}\n
{predealCheck.statusValue}
\n \n );\n }\n};\n\nconst PdcIcon = styled.i`\n top: 0;\n right: 0;\n`;\n\nexport function PredealChecksRaw({ predealChecks, globalStatus, isVisible }: PredealChecksProps) {\n const [, color] = statusToStylename(globalStatus);\n return (\n >\n {popover =>\n isVisible && (\n <>\n \n lens\n \n {popover.target !== null && (\n \n
\n
\n \n {(predealChecks || []).map(predealCheck => (\n \n \n
\n ))}\n
\n
\n \n )}\n \n )\n }\n \n );\n}\n\nexport const PredealChecks = withQuoteId(connectPredealChecks(PredealChecksRaw));\n","import type { MapStateToPropsHOF, MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\nimport { fieldData } from 'utils/fieldSelectors';\nimport { isAlgoOrder } from 'state/fxOrders/fxOrdersModel';\n\nexport interface NDCheckboxConnectOwnProps {\n quoteId: string;\n}\n\nexport interface NDCheckboxConnectStateProps {\n value: boolean;\n show: boolean;\n disabled: boolean;\n label: string;\n}\n\nexport interface NDCheckboxConnectDispatchProps {\n onChange: (value: boolean) => void;\n}\n\nexport type NDCheckboxConnectSelectorsKeys =\n | 'getQuoteInstrument'\n | 'getTileCurrencyPair'\n | 'getCashIsNonDeliverable'\n | 'getSwapIsNonDeliverable'\n | 'getCurrencyPairDetails'\n | 'getProductsAccess'\n | 'getOrderType';\n\nexport type NDCheckboxConnectSelectors = Pick;\n\nexport const mapStateToPropsNDCheckbox: MapStateToPropsHOF<\n NDCheckboxConnectStateProps,\n NDCheckboxConnectOwnProps,\n AppState,\n NDCheckboxConnectSelectors\n> =\n sl =>\n (state, { quoteId }) => {\n const instrument = sl.getQuoteInstrument(state, quoteId);\n const currencyPair = fieldData(sl.getTileCurrencyPair(state, quoteId)).data;\n\n const extCcyPair =\n currencyPair !== null ? sl.getCurrencyPairDetails(state, currencyPair) : null;\n\n const { nonDeliverable: canDealND } = sl.getProductsAccess(state);\n\n switch (instrument) {\n case 'Cash':\n const isNonDeliverableCash = fieldData(sl.getCashIsNonDeliverable(state, quoteId)).data;\n\n return {\n value: !!isNonDeliverableCash,\n label: 'NDF',\n show:\n extCcyPair !== null &&\n canDealND &&\n (extCcyPair.notDeliverable || extCcyPair.isCashDeliverable),\n disabled: extCcyPair !== null && !extCcyPair.canBeDelivered,\n };\n case 'Swap':\n const isNonDeliverableSwap = fieldData(sl.getSwapIsNonDeliverable(state, quoteId)).data;\n\n return {\n value: !!isNonDeliverableSwap,\n label: 'NDS',\n show: extCcyPair !== null && canDealND && extCcyPair.notDeliverable,\n disabled: extCcyPair !== null && !extCcyPair.canBeDelivered,\n };\n case 'Order':\n const orderType = sl.getOrderType(state, quoteId).value;\n return {\n value: !!extCcyPair?.notDeliverable,\n label: 'NDF',\n show: isAlgoOrder(orderType),\n disabled: true,\n };\n default:\n return {\n value: false,\n label: '',\n show: false,\n disabled: true,\n };\n }\n };\n\nexport type NDCheckboxConnectActionCreatorsKeys = 'nonDeliverableFlagChangeThunk';\nexport type NDCheckboxConnectActionCreators = Pick<\n ActionCreators,\n NDCheckboxConnectActionCreatorsKeys\n>;\n\nexport const mapDispatchToPropsNDCheckbox: MapDispatchToPropsHOF<\n NDCheckboxConnectDispatchProps,\n NDCheckboxConnectOwnProps,\n NDCheckboxConnectActionCreators\n> =\n ac =>\n (dispatch, { quoteId }) => ({\n onChange: (value: boolean) => {\n dispatch(ac.nonDeliverableFlagChangeThunk(quoteId, value));\n },\n });\n","import { connect } from 'react-redux';\nimport { selectors } from 'state/selectors';\nimport { actionCreators } from 'state/actions';\nimport { mapStateToPropsNDCheckbox, mapDispatchToPropsNDCheckbox } from './connectNDCheckbox';\n\nexport const connectNDCheckbox = connect(\n mapStateToPropsNDCheckbox(selectors),\n mapDispatchToPropsNDCheckbox(actionCreators),\n);\n","import { type PropsWithChildren, useEffect, useId, useRef } from 'react';\nimport { label, checkBox } from 'components/Form/Inputs/e2e';\n\ninterface CheckboxInputProps {\n value: boolean;\n disabled?: boolean;\n e2eHandle: string;\n className?: string;\n indeterminate?: true;\n onChange: (value: boolean) => void;\n}\n\nexport const CheckboxInput: React.FunctionComponent> = ({\n value,\n disabled = false,\n className = '',\n indeterminate = false,\n e2eHandle,\n children,\n onChange,\n}) => {\n const onCheckBoxChange = (e: React.ChangeEvent) => onChange(e.target.checked);\n const ref = useRef(null);\n const id = useId();\n useEffect(() => {\n if (ref.current !== null) {\n ref.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n return (\n
\n \n \n
\n );\n};\n","import { connectNDCheckbox } from './connect';\nimport { withQuoteId } from 'components/contexts';\nimport { CheckboxInput } from 'components/share/formElements/CheckboxInput';\n\ninterface NDCheckboxProps {\n quoteId: string;\n value: boolean;\n show: boolean;\n disabled: boolean;\n label: string;\n className?: string;\n onChange: (value: boolean) => void;\n}\n\nconst NDCheckboxRaw: React.FunctionComponent = ({\n show,\n disabled,\n onChange,\n value,\n label,\n className,\n}) =>\n show ? (\n \n {label}\n \n ) : (\n
\n );\nexport const NDCheckbox = withQuoteId(connectNDCheckbox(NDCheckboxRaw));\n","import { createElement, PureComponent } from 'react';\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\n/**\n * Detect Element Resize.\n * https://github.com/sdecima/javascript-detect-element-resize\n * Sebastian Decima\n *\n * Forked from version 0.5.3; includes the following modifications:\n * 1) Guard against unsafe 'window' and 'document' references (to support SSR).\n * 2) Defer initialization code via a top-level function wrapper (to support SSR).\n * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.\n * 4) Add nonce for style element.\n **/\n\n// Check `document` and `window` in case of server-side rendering\nvar windowObject = void 0;\nif (typeof window !== 'undefined') {\n windowObject = window;\n\n // eslint-disable-next-line no-restricted-globals\n} else if (typeof self !== 'undefined') {\n // eslint-disable-next-line no-restricted-globals\n windowObject = self;\n} else {\n windowObject = global;\n}\n\nvar cancelFrame = null;\nvar requestFrame = null;\n\nvar TIMEOUT_DURATION = 20;\n\nvar clearTimeoutFn = windowObject.clearTimeout;\nvar setTimeoutFn = windowObject.setTimeout;\n\nvar cancelAnimationFrameFn = windowObject.cancelAnimationFrame || windowObject.mozCancelAnimationFrame || windowObject.webkitCancelAnimationFrame;\n\nvar requestAnimationFrameFn = windowObject.requestAnimationFrame || windowObject.mozRequestAnimationFrame || windowObject.webkitRequestAnimationFrame;\n\nif (cancelAnimationFrameFn == null || requestAnimationFrameFn == null) {\n // For environments that don't support animation frame,\n // fallback to a setTimeout based approach.\n cancelFrame = clearTimeoutFn;\n requestFrame = function requestAnimationFrameViaSetTimeout(callback) {\n return setTimeoutFn(callback, TIMEOUT_DURATION);\n };\n} else {\n // Counter intuitively, environments that support animation frames can be trickier.\n // Chrome's \"Throttle non-visible cross-origin iframes\" flag can prevent rAFs from being called.\n // In this case, we should fallback to a setTimeout() implementation.\n cancelFrame = function cancelFrame(_ref) {\n var _ref2 = slicedToArray(_ref, 2),\n animationFrameID = _ref2[0],\n timeoutID = _ref2[1];\n\n cancelAnimationFrameFn(animationFrameID);\n clearTimeoutFn(timeoutID);\n };\n requestFrame = function requestAnimationFrameWithSetTimeoutFallback(callback) {\n var animationFrameID = requestAnimationFrameFn(function animationFrameCallback() {\n clearTimeoutFn(timeoutID);\n callback();\n });\n\n var timeoutID = setTimeoutFn(function timeoutCallback() {\n cancelAnimationFrameFn(animationFrameID);\n callback();\n }, TIMEOUT_DURATION);\n\n return [animationFrameID, timeoutID];\n };\n}\n\nfunction createDetectElementResize(nonce) {\n var animationKeyframes = void 0;\n var animationName = void 0;\n var animationStartEvent = void 0;\n var animationStyle = void 0;\n var checkTriggers = void 0;\n var resetTriggers = void 0;\n var scrollListener = void 0;\n\n var attachEvent = typeof document !== 'undefined' && document.attachEvent;\n if (!attachEvent) {\n resetTriggers = function resetTriggers(element) {\n var triggers = element.__resizeTriggers__,\n expand = triggers.firstElementChild,\n contract = triggers.lastElementChild,\n expandChild = expand.firstElementChild;\n contract.scrollLeft = contract.scrollWidth;\n contract.scrollTop = contract.scrollHeight;\n expandChild.style.width = expand.offsetWidth + 1 + 'px';\n expandChild.style.height = expand.offsetHeight + 1 + 'px';\n expand.scrollLeft = expand.scrollWidth;\n expand.scrollTop = expand.scrollHeight;\n };\n\n checkTriggers = function checkTriggers(element) {\n return element.offsetWidth !== element.__resizeLast__.width || element.offsetHeight !== element.__resizeLast__.height;\n };\n\n scrollListener = function scrollListener(e) {\n // Don't measure (which forces) reflow for scrolls that happen inside of children!\n if (e.target.className && typeof e.target.className.indexOf === 'function' && e.target.className.indexOf('contract-trigger') < 0 && e.target.className.indexOf('expand-trigger') < 0) {\n return;\n }\n\n var element = this;\n resetTriggers(this);\n if (this.__resizeRAF__) {\n cancelFrame(this.__resizeRAF__);\n }\n this.__resizeRAF__ = requestFrame(function animationFrame() {\n if (checkTriggers(element)) {\n element.__resizeLast__.width = element.offsetWidth;\n element.__resizeLast__.height = element.offsetHeight;\n element.__resizeListeners__.forEach(function forEachResizeListener(fn) {\n fn.call(element, e);\n });\n }\n });\n };\n\n /* Detect CSS Animations support to detect element display/re-attach */\n var animation = false;\n var keyframeprefix = '';\n animationStartEvent = 'animationstart';\n var domPrefixes = 'Webkit Moz O ms'.split(' ');\n var startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' ');\n var pfx = '';\n {\n var elm = document.createElement('fakeelement');\n if (elm.style.animationName !== undefined) {\n animation = true;\n }\n\n if (animation === false) {\n for (var i = 0; i < domPrefixes.length; i++) {\n if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {\n pfx = domPrefixes[i];\n keyframeprefix = '-' + pfx.toLowerCase() + '-';\n animationStartEvent = startEvents[i];\n animation = true;\n break;\n }\n }\n }\n }\n\n animationName = 'resizeanim';\n animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';\n animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';\n }\n\n var createStyles = function createStyles(doc) {\n if (!doc.getElementById('detectElementResize')) {\n //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\n var css = (animationKeyframes ? animationKeyframes : '') + '.resize-triggers { ' + (animationStyle ? animationStyle : '') + 'visibility: hidden; opacity: 0; } ' + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',\n head = doc.head || doc.getElementsByTagName('head')[0],\n style = doc.createElement('style');\n\n style.id = 'detectElementResize';\n style.type = 'text/css';\n\n if (nonce != null) {\n style.setAttribute('nonce', nonce);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(doc.createTextNode(css));\n }\n\n head.appendChild(style);\n }\n };\n\n var addResizeListener = function addResizeListener(element, fn) {\n if (attachEvent) {\n element.attachEvent('onresize', fn);\n } else {\n if (!element.__resizeTriggers__) {\n var doc = element.ownerDocument;\n var elementStyle = windowObject.getComputedStyle(element);\n if (elementStyle && elementStyle.position === 'static') {\n element.style.position = 'relative';\n }\n createStyles(doc);\n element.__resizeLast__ = {};\n element.__resizeListeners__ = [];\n (element.__resizeTriggers__ = doc.createElement('div')).className = 'resize-triggers';\n var expandTrigger = doc.createElement('div');\n expandTrigger.className = 'expand-trigger';\n expandTrigger.appendChild(doc.createElement('div'));\n var contractTrigger = doc.createElement('div');\n contractTrigger.className = 'contract-trigger';\n element.__resizeTriggers__.appendChild(expandTrigger);\n element.__resizeTriggers__.appendChild(contractTrigger);\n element.appendChild(element.__resizeTriggers__);\n resetTriggers(element);\n element.addEventListener('scroll', scrollListener, true);\n\n /* Listen for a css animation to detect element display/re-attach */\n if (animationStartEvent) {\n element.__resizeTriggers__.__animationListener__ = function animationListener(e) {\n if (e.animationName === animationName) {\n resetTriggers(element);\n }\n };\n element.__resizeTriggers__.addEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);\n }\n }\n element.__resizeListeners__.push(fn);\n }\n };\n\n var removeResizeListener = function removeResizeListener(element, fn) {\n if (attachEvent) {\n element.detachEvent('onresize', fn);\n } else {\n element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n if (!element.__resizeListeners__.length) {\n element.removeEventListener('scroll', scrollListener, true);\n if (element.__resizeTriggers__.__animationListener__) {\n element.__resizeTriggers__.removeEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);\n element.__resizeTriggers__.__animationListener__ = null;\n }\n try {\n element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);\n } catch (e) {\n // Preact compat; see developit/preact-compat/issues/228\n }\n }\n }\n };\n\n return {\n addResizeListener: addResizeListener,\n removeResizeListener: removeResizeListener\n };\n}\n\nvar AutoSizer = function (_React$PureComponent) {\n inherits(AutoSizer, _React$PureComponent);\n\n function AutoSizer() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, AutoSizer);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = AutoSizer.__proto__ || Object.getPrototypeOf(AutoSizer)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n height: _this.props.defaultHeight || 0,\n width: _this.props.defaultWidth || 0\n }, _this._onResize = function () {\n var _this$props = _this.props,\n disableHeight = _this$props.disableHeight,\n disableWidth = _this$props.disableWidth,\n onResize = _this$props.onResize;\n\n\n if (_this._parentNode) {\n // Guard against AutoSizer component being removed from the DOM immediately after being added.\n // This can result in invalid style values which can result in NaN values if we don't handle them.\n // See issue #150 for more context.\n\n var _height = _this._parentNode.offsetHeight || 0;\n var _width = _this._parentNode.offsetWidth || 0;\n\n var _style = window.getComputedStyle(_this._parentNode) || {};\n var paddingLeft = parseInt(_style.paddingLeft, 10) || 0;\n var paddingRight = parseInt(_style.paddingRight, 10) || 0;\n var paddingTop = parseInt(_style.paddingTop, 10) || 0;\n var paddingBottom = parseInt(_style.paddingBottom, 10) || 0;\n\n var newHeight = _height - paddingTop - paddingBottom;\n var newWidth = _width - paddingLeft - paddingRight;\n\n if (!disableHeight && _this.state.height !== newHeight || !disableWidth && _this.state.width !== newWidth) {\n _this.setState({\n height: _height - paddingTop - paddingBottom,\n width: _width - paddingLeft - paddingRight\n });\n\n onResize({ height: _height, width: _width });\n }\n }\n }, _this._setRef = function (autoSizer) {\n _this._autoSizer = autoSizer;\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n createClass(AutoSizer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var nonce = this.props.nonce;\n\n if (this._autoSizer && this._autoSizer.parentNode && this._autoSizer.parentNode.ownerDocument && this._autoSizer.parentNode.ownerDocument.defaultView && this._autoSizer.parentNode instanceof this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement) {\n // Delay access of parentNode until mount.\n // This handles edge-cases where the component has already been unmounted before its ref has been set,\n // As well as libraries like react-lite which have a slightly different lifecycle.\n this._parentNode = this._autoSizer.parentNode;\n\n // Defer requiring resize handler in order to support server-side rendering.\n // See issue #41\n this._detectElementResize = createDetectElementResize(nonce);\n this._detectElementResize.addResizeListener(this._parentNode, this._onResize);\n\n this._onResize();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this._detectElementResize && this._parentNode) {\n this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n className = _props.className,\n disableHeight = _props.disableHeight,\n disableWidth = _props.disableWidth,\n style = _props.style;\n var _state = this.state,\n height = _state.height,\n width = _state.width;\n\n // Outer div should not force width/height since that may prevent containers from shrinking.\n // Inner component should overflow and use calculated width/height.\n // See issue #68 for more information.\n\n var outerStyle = { overflow: 'visible' };\n var childParams = {};\n\n // Avoid rendering children before the initial measurements have been collected.\n // At best this would just be wasting cycles.\n var bailoutOnChildren = false;\n\n if (!disableHeight) {\n if (height === 0) {\n bailoutOnChildren = true;\n }\n outerStyle.height = 0;\n childParams.height = height;\n }\n\n if (!disableWidth) {\n if (width === 0) {\n bailoutOnChildren = true;\n }\n outerStyle.width = 0;\n childParams.width = width;\n }\n\n return createElement(\n 'div',\n {\n className: className,\n ref: this._setRef,\n style: _extends({}, outerStyle, style)\n },\n !bailoutOnChildren && children(childParams)\n );\n }\n }]);\n return AutoSizer;\n}(PureComponent);\n\nAutoSizer.defaultProps = {\n onResize: function onResize() {},\n disableHeight: false,\n disableWidth: false,\n style: {}\n};\n\nexport default AutoSizer;\n","var safeIsNaN = Number.isNaN ||\n function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n };\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\n\nexport default memoizeOne;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport memoizeOne from 'memoize-one';\nimport { createElement, PureComponent } from 'react';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\n\n// Animation frame based implementation of setTimeout.\n// Inspired by Joe Lambert, https://gist.github.com/joelambert/1002116#file-requesttimeout-js\nvar hasNativePerformanceNow = typeof performance === 'object' && typeof performance.now === 'function';\nvar now = hasNativePerformanceNow ? function () {\n return performance.now();\n} : function () {\n return Date.now();\n};\nfunction cancelTimeout(timeoutID) {\n cancelAnimationFrame(timeoutID.id);\n}\nfunction requestTimeout(callback, delay) {\n var start = now();\n\n function tick() {\n if (now() - start >= delay) {\n callback.call(null);\n } else {\n timeoutID.id = requestAnimationFrame(tick);\n }\n }\n\n var timeoutID = {\n id: requestAnimationFrame(tick)\n };\n return timeoutID;\n}\n\nvar size = -1; // This utility copied from \"dom-helpers\" package.\n\nfunction getScrollbarSize(recalculate) {\n if (recalculate === void 0) {\n recalculate = false;\n }\n\n if (size === -1 || recalculate) {\n var div = document.createElement('div');\n var style = div.style;\n style.width = '50px';\n style.height = '50px';\n style.overflow = 'scroll';\n document.body.appendChild(div);\n size = div.offsetWidth - div.clientWidth;\n document.body.removeChild(div);\n }\n\n return size;\n}\nvar cachedRTLResult = null; // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n// Chrome does not seem to adhere; its scrollLeft values are positive (measured relative to the left).\n// Safari's elastic bounce makes detecting this even more complicated wrt potential false positives.\n// The safest way to check this is to intentionally set a negative offset,\n// and then verify that the subsequent \"scroll\" event matches the negative offset.\n// If it does not match, then we can assume a non-standard RTL scroll implementation.\n\nfunction getRTLOffsetType(recalculate) {\n if (recalculate === void 0) {\n recalculate = false;\n }\n\n if (cachedRTLResult === null || recalculate) {\n var outerDiv = document.createElement('div');\n var outerStyle = outerDiv.style;\n outerStyle.width = '50px';\n outerStyle.height = '50px';\n outerStyle.overflow = 'scroll';\n outerStyle.direction = 'rtl';\n var innerDiv = document.createElement('div');\n var innerStyle = innerDiv.style;\n innerStyle.width = '100px';\n innerStyle.height = '100px';\n outerDiv.appendChild(innerDiv);\n document.body.appendChild(outerDiv);\n\n if (outerDiv.scrollLeft > 0) {\n cachedRTLResult = 'positive-descending';\n } else {\n outerDiv.scrollLeft = 1;\n\n if (outerDiv.scrollLeft === 0) {\n cachedRTLResult = 'negative';\n } else {\n cachedRTLResult = 'positive-ascending';\n }\n }\n\n document.body.removeChild(outerDiv);\n return cachedRTLResult;\n }\n\n return cachedRTLResult;\n}\n\nvar IS_SCROLLING_DEBOUNCE_INTERVAL = 150;\n\nvar defaultItemKey = function defaultItemKey(_ref) {\n var columnIndex = _ref.columnIndex,\n data = _ref.data,\n rowIndex = _ref.rowIndex;\n return rowIndex + \":\" + columnIndex;\n}; // In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\n\n\nvar devWarningsOverscanCount = null;\nvar devWarningsOverscanRowsColumnsCount = null;\nvar devWarningsTagName = null;\n\nif (process.env.NODE_ENV !== 'production') {\n if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n devWarningsOverscanCount = /*#__PURE__*/new WeakSet();\n devWarningsOverscanRowsColumnsCount = /*#__PURE__*/new WeakSet();\n devWarningsTagName = /*#__PURE__*/new WeakSet();\n }\n}\n\nfunction createGridComponent(_ref2) {\n var _class;\n\n var getColumnOffset = _ref2.getColumnOffset,\n getColumnStartIndexForOffset = _ref2.getColumnStartIndexForOffset,\n getColumnStopIndexForStartIndex = _ref2.getColumnStopIndexForStartIndex,\n getColumnWidth = _ref2.getColumnWidth,\n getEstimatedTotalHeight = _ref2.getEstimatedTotalHeight,\n getEstimatedTotalWidth = _ref2.getEstimatedTotalWidth,\n getOffsetForColumnAndAlignment = _ref2.getOffsetForColumnAndAlignment,\n getOffsetForRowAndAlignment = _ref2.getOffsetForRowAndAlignment,\n getRowHeight = _ref2.getRowHeight,\n getRowOffset = _ref2.getRowOffset,\n getRowStartIndexForOffset = _ref2.getRowStartIndexForOffset,\n getRowStopIndexForStartIndex = _ref2.getRowStopIndexForStartIndex,\n initInstanceProps = _ref2.initInstanceProps,\n shouldResetStyleCacheOnItemSizeChange = _ref2.shouldResetStyleCacheOnItemSizeChange,\n validateProps = _ref2.validateProps;\n return _class = /*#__PURE__*/function (_PureComponent) {\n _inheritsLoose(Grid, _PureComponent);\n\n // Always use explicit constructor for React components.\n // It produces less code after transpilation. (#26)\n // eslint-disable-next-line no-useless-constructor\n function Grid(props) {\n var _this;\n\n _this = _PureComponent.call(this, props) || this;\n _this._instanceProps = initInstanceProps(_this.props, _assertThisInitialized(_this));\n _this._resetIsScrollingTimeoutId = null;\n _this._outerRef = void 0;\n _this.state = {\n instance: _assertThisInitialized(_this),\n isScrolling: false,\n horizontalScrollDirection: 'forward',\n scrollLeft: typeof _this.props.initialScrollLeft === 'number' ? _this.props.initialScrollLeft : 0,\n scrollTop: typeof _this.props.initialScrollTop === 'number' ? _this.props.initialScrollTop : 0,\n scrollUpdateWasRequested: false,\n verticalScrollDirection: 'forward'\n };\n _this._callOnItemsRendered = void 0;\n _this._callOnItemsRendered = memoizeOne(function (overscanColumnStartIndex, overscanColumnStopIndex, overscanRowStartIndex, overscanRowStopIndex, visibleColumnStartIndex, visibleColumnStopIndex, visibleRowStartIndex, visibleRowStopIndex) {\n return _this.props.onItemsRendered({\n overscanColumnStartIndex: overscanColumnStartIndex,\n overscanColumnStopIndex: overscanColumnStopIndex,\n overscanRowStartIndex: overscanRowStartIndex,\n overscanRowStopIndex: overscanRowStopIndex,\n visibleColumnStartIndex: visibleColumnStartIndex,\n visibleColumnStopIndex: visibleColumnStopIndex,\n visibleRowStartIndex: visibleRowStartIndex,\n visibleRowStopIndex: visibleRowStopIndex\n });\n });\n _this._callOnScroll = void 0;\n _this._callOnScroll = memoizeOne(function (scrollLeft, scrollTop, horizontalScrollDirection, verticalScrollDirection, scrollUpdateWasRequested) {\n return _this.props.onScroll({\n horizontalScrollDirection: horizontalScrollDirection,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n verticalScrollDirection: verticalScrollDirection,\n scrollUpdateWasRequested: scrollUpdateWasRequested\n });\n });\n _this._getItemStyle = void 0;\n\n _this._getItemStyle = function (rowIndex, columnIndex) {\n var _this$props = _this.props,\n columnWidth = _this$props.columnWidth,\n direction = _this$props.direction,\n rowHeight = _this$props.rowHeight;\n\n var itemStyleCache = _this._getItemStyleCache(shouldResetStyleCacheOnItemSizeChange && columnWidth, shouldResetStyleCacheOnItemSizeChange && direction, shouldResetStyleCacheOnItemSizeChange && rowHeight);\n\n var key = rowIndex + \":\" + columnIndex;\n var style;\n\n if (itemStyleCache.hasOwnProperty(key)) {\n style = itemStyleCache[key];\n } else {\n var _offset = getColumnOffset(_this.props, columnIndex, _this._instanceProps);\n\n var isRtl = direction === 'rtl';\n itemStyleCache[key] = style = {\n position: 'absolute',\n left: isRtl ? undefined : _offset,\n right: isRtl ? _offset : undefined,\n top: getRowOffset(_this.props, rowIndex, _this._instanceProps),\n height: getRowHeight(_this.props, rowIndex, _this._instanceProps),\n width: getColumnWidth(_this.props, columnIndex, _this._instanceProps)\n };\n }\n\n return style;\n };\n\n _this._getItemStyleCache = void 0;\n _this._getItemStyleCache = memoizeOne(function (_, __, ___) {\n return {};\n });\n\n _this._onScroll = function (event) {\n var _event$currentTarget = event.currentTarget,\n clientHeight = _event$currentTarget.clientHeight,\n clientWidth = _event$currentTarget.clientWidth,\n scrollLeft = _event$currentTarget.scrollLeft,\n scrollTop = _event$currentTarget.scrollTop,\n scrollHeight = _event$currentTarget.scrollHeight,\n scrollWidth = _event$currentTarget.scrollWidth;\n\n _this.setState(function (prevState) {\n if (prevState.scrollLeft === scrollLeft && prevState.scrollTop === scrollTop) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n\n var direction = _this.props.direction; // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n\n var calculatedScrollLeft = scrollLeft;\n\n if (direction === 'rtl') {\n switch (getRTLOffsetType()) {\n case 'negative':\n calculatedScrollLeft = -scrollLeft;\n break;\n\n case 'positive-descending':\n calculatedScrollLeft = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n } // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n\n\n calculatedScrollLeft = Math.max(0, Math.min(calculatedScrollLeft, scrollWidth - clientWidth));\n var calculatedScrollTop = Math.max(0, Math.min(scrollTop, scrollHeight - clientHeight));\n return {\n isScrolling: true,\n horizontalScrollDirection: prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n scrollLeft: calculatedScrollLeft,\n scrollTop: calculatedScrollTop,\n verticalScrollDirection: prevState.scrollTop < scrollTop ? 'forward' : 'backward',\n scrollUpdateWasRequested: false\n };\n }, _this._resetIsScrollingDebounced);\n };\n\n _this._outerRefSetter = function (ref) {\n var outerRef = _this.props.outerRef;\n _this._outerRef = ref;\n\n if (typeof outerRef === 'function') {\n outerRef(ref);\n } else if (outerRef != null && typeof outerRef === 'object' && outerRef.hasOwnProperty('current')) {\n outerRef.current = ref;\n }\n };\n\n _this._resetIsScrollingDebounced = function () {\n if (_this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(_this._resetIsScrollingTimeoutId);\n }\n\n _this._resetIsScrollingTimeoutId = requestTimeout(_this._resetIsScrolling, IS_SCROLLING_DEBOUNCE_INTERVAL);\n };\n\n _this._resetIsScrolling = function () {\n _this._resetIsScrollingTimeoutId = null;\n\n _this.setState({\n isScrolling: false\n }, function () {\n // Clear style cache after state update has been committed.\n // This way we don't break pure sCU for items that don't use isScrolling param.\n _this._getItemStyleCache(-1);\n });\n };\n\n return _this;\n }\n\n Grid.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n validateSharedProps(nextProps, prevState);\n validateProps(nextProps);\n return null;\n };\n\n var _proto = Grid.prototype;\n\n _proto.scrollTo = function scrollTo(_ref3) {\n var scrollLeft = _ref3.scrollLeft,\n scrollTop = _ref3.scrollTop;\n\n if (scrollLeft !== undefined) {\n scrollLeft = Math.max(0, scrollLeft);\n }\n\n if (scrollTop !== undefined) {\n scrollTop = Math.max(0, scrollTop);\n }\n\n this.setState(function (prevState) {\n if (scrollLeft === undefined) {\n scrollLeft = prevState.scrollLeft;\n }\n\n if (scrollTop === undefined) {\n scrollTop = prevState.scrollTop;\n }\n\n if (prevState.scrollLeft === scrollLeft && prevState.scrollTop === scrollTop) {\n return null;\n }\n\n return {\n horizontalScrollDirection: prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollUpdateWasRequested: true,\n verticalScrollDirection: prevState.scrollTop < scrollTop ? 'forward' : 'backward'\n };\n }, this._resetIsScrollingDebounced);\n };\n\n _proto.scrollToItem = function scrollToItem(_ref4) {\n var _ref4$align = _ref4.align,\n align = _ref4$align === void 0 ? 'auto' : _ref4$align,\n columnIndex = _ref4.columnIndex,\n rowIndex = _ref4.rowIndex;\n var _this$props2 = this.props,\n columnCount = _this$props2.columnCount,\n height = _this$props2.height,\n rowCount = _this$props2.rowCount,\n width = _this$props2.width;\n var _this$state = this.state,\n scrollLeft = _this$state.scrollLeft,\n scrollTop = _this$state.scrollTop;\n var scrollbarSize = getScrollbarSize();\n\n if (columnIndex !== undefined) {\n columnIndex = Math.max(0, Math.min(columnIndex, columnCount - 1));\n }\n\n if (rowIndex !== undefined) {\n rowIndex = Math.max(0, Math.min(rowIndex, rowCount - 1));\n }\n\n var estimatedTotalHeight = getEstimatedTotalHeight(this.props, this._instanceProps);\n var estimatedTotalWidth = getEstimatedTotalWidth(this.props, this._instanceProps); // The scrollbar size should be considered when scrolling an item into view,\n // to ensure it's fully visible.\n // But we only need to account for its size when it's actually visible.\n\n var horizontalScrollbarSize = estimatedTotalWidth > width ? scrollbarSize : 0;\n var verticalScrollbarSize = estimatedTotalHeight > height ? scrollbarSize : 0;\n this.scrollTo({\n scrollLeft: columnIndex !== undefined ? getOffsetForColumnAndAlignment(this.props, columnIndex, align, scrollLeft, this._instanceProps, verticalScrollbarSize) : scrollLeft,\n scrollTop: rowIndex !== undefined ? getOffsetForRowAndAlignment(this.props, rowIndex, align, scrollTop, this._instanceProps, horizontalScrollbarSize) : scrollTop\n });\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var _this$props3 = this.props,\n initialScrollLeft = _this$props3.initialScrollLeft,\n initialScrollTop = _this$props3.initialScrollTop;\n\n if (this._outerRef != null) {\n var outerRef = this._outerRef;\n\n if (typeof initialScrollLeft === 'number') {\n outerRef.scrollLeft = initialScrollLeft;\n }\n\n if (typeof initialScrollTop === 'number') {\n outerRef.scrollTop = initialScrollTop;\n }\n }\n\n this._callPropsCallbacks();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n var direction = this.props.direction;\n var _this$state2 = this.state,\n scrollLeft = _this$state2.scrollLeft,\n scrollTop = _this$state2.scrollTop,\n scrollUpdateWasRequested = _this$state2.scrollUpdateWasRequested;\n\n if (scrollUpdateWasRequested && this._outerRef != null) {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // So we need to determine which browser behavior we're dealing with, and mimic it.\n var outerRef = this._outerRef;\n\n if (direction === 'rtl') {\n switch (getRTLOffsetType()) {\n case 'negative':\n outerRef.scrollLeft = -scrollLeft;\n break;\n\n case 'positive-ascending':\n outerRef.scrollLeft = scrollLeft;\n break;\n\n default:\n var clientWidth = outerRef.clientWidth,\n scrollWidth = outerRef.scrollWidth;\n outerRef.scrollLeft = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n } else {\n outerRef.scrollLeft = Math.max(0, scrollLeft);\n }\n\n outerRef.scrollTop = Math.max(0, scrollTop);\n }\n\n this._callPropsCallbacks();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n };\n\n _proto.render = function render() {\n var _this$props4 = this.props,\n children = _this$props4.children,\n className = _this$props4.className,\n columnCount = _this$props4.columnCount,\n direction = _this$props4.direction,\n height = _this$props4.height,\n innerRef = _this$props4.innerRef,\n innerElementType = _this$props4.innerElementType,\n innerTagName = _this$props4.innerTagName,\n itemData = _this$props4.itemData,\n _this$props4$itemKey = _this$props4.itemKey,\n itemKey = _this$props4$itemKey === void 0 ? defaultItemKey : _this$props4$itemKey,\n outerElementType = _this$props4.outerElementType,\n outerTagName = _this$props4.outerTagName,\n rowCount = _this$props4.rowCount,\n style = _this$props4.style,\n useIsScrolling = _this$props4.useIsScrolling,\n width = _this$props4.width;\n var isScrolling = this.state.isScrolling;\n\n var _this$_getHorizontalR = this._getHorizontalRangeToRender(),\n columnStartIndex = _this$_getHorizontalR[0],\n columnStopIndex = _this$_getHorizontalR[1];\n\n var _this$_getVerticalRan = this._getVerticalRangeToRender(),\n rowStartIndex = _this$_getVerticalRan[0],\n rowStopIndex = _this$_getVerticalRan[1];\n\n var items = [];\n\n if (columnCount > 0 && rowCount) {\n for (var _rowIndex = rowStartIndex; _rowIndex <= rowStopIndex; _rowIndex++) {\n for (var _columnIndex = columnStartIndex; _columnIndex <= columnStopIndex; _columnIndex++) {\n items.push(createElement(children, {\n columnIndex: _columnIndex,\n data: itemData,\n isScrolling: useIsScrolling ? isScrolling : undefined,\n key: itemKey({\n columnIndex: _columnIndex,\n data: itemData,\n rowIndex: _rowIndex\n }),\n rowIndex: _rowIndex,\n style: this._getItemStyle(_rowIndex, _columnIndex)\n }));\n }\n }\n } // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n\n\n var estimatedTotalHeight = getEstimatedTotalHeight(this.props, this._instanceProps);\n var estimatedTotalWidth = getEstimatedTotalWidth(this.props, this._instanceProps);\n return createElement(outerElementType || outerTagName || 'div', {\n className: className,\n onScroll: this._onScroll,\n ref: this._outerRefSetter,\n style: _extends({\n position: 'relative',\n height: height,\n width: width,\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n direction: direction\n }, style)\n }, createElement(innerElementType || innerTagName || 'div', {\n children: items,\n ref: innerRef,\n style: {\n height: estimatedTotalHeight,\n pointerEvents: isScrolling ? 'none' : undefined,\n width: estimatedTotalWidth\n }\n }));\n };\n\n _proto._callPropsCallbacks = function _callPropsCallbacks() {\n var _this$props5 = this.props,\n columnCount = _this$props5.columnCount,\n onItemsRendered = _this$props5.onItemsRendered,\n onScroll = _this$props5.onScroll,\n rowCount = _this$props5.rowCount;\n\n if (typeof onItemsRendered === 'function') {\n if (columnCount > 0 && rowCount > 0) {\n var _this$_getHorizontalR2 = this._getHorizontalRangeToRender(),\n _overscanColumnStartIndex = _this$_getHorizontalR2[0],\n _overscanColumnStopIndex = _this$_getHorizontalR2[1],\n _visibleColumnStartIndex = _this$_getHorizontalR2[2],\n _visibleColumnStopIndex = _this$_getHorizontalR2[3];\n\n var _this$_getVerticalRan2 = this._getVerticalRangeToRender(),\n _overscanRowStartIndex = _this$_getVerticalRan2[0],\n _overscanRowStopIndex = _this$_getVerticalRan2[1],\n _visibleRowStartIndex = _this$_getVerticalRan2[2],\n _visibleRowStopIndex = _this$_getVerticalRan2[3];\n\n this._callOnItemsRendered(_overscanColumnStartIndex, _overscanColumnStopIndex, _overscanRowStartIndex, _overscanRowStopIndex, _visibleColumnStartIndex, _visibleColumnStopIndex, _visibleRowStartIndex, _visibleRowStopIndex);\n }\n }\n\n if (typeof onScroll === 'function') {\n var _this$state3 = this.state,\n _horizontalScrollDirection = _this$state3.horizontalScrollDirection,\n _scrollLeft = _this$state3.scrollLeft,\n _scrollTop = _this$state3.scrollTop,\n _scrollUpdateWasRequested = _this$state3.scrollUpdateWasRequested,\n _verticalScrollDirection = _this$state3.verticalScrollDirection;\n\n this._callOnScroll(_scrollLeft, _scrollTop, _horizontalScrollDirection, _verticalScrollDirection, _scrollUpdateWasRequested);\n }\n } // Lazily create and cache item styles while scrolling,\n // So that pure component sCU will prevent re-renders.\n // We maintain this cache, and pass a style prop rather than index,\n // So that List can clear cached styles and force item re-render if necessary.\n ;\n\n _proto._getHorizontalRangeToRender = function _getHorizontalRangeToRender() {\n var _this$props6 = this.props,\n columnCount = _this$props6.columnCount,\n overscanColumnCount = _this$props6.overscanColumnCount,\n overscanColumnsCount = _this$props6.overscanColumnsCount,\n overscanCount = _this$props6.overscanCount,\n rowCount = _this$props6.rowCount;\n var _this$state4 = this.state,\n horizontalScrollDirection = _this$state4.horizontalScrollDirection,\n isScrolling = _this$state4.isScrolling,\n scrollLeft = _this$state4.scrollLeft;\n var overscanCountResolved = overscanColumnCount || overscanColumnsCount || overscanCount || 1;\n\n if (columnCount === 0 || rowCount === 0) {\n return [0, 0, 0, 0];\n }\n\n var startIndex = getColumnStartIndexForOffset(this.props, scrollLeft, this._instanceProps);\n var stopIndex = getColumnStopIndexForStartIndex(this.props, startIndex, scrollLeft, this._instanceProps); // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n\n var overscanBackward = !isScrolling || horizontalScrollDirection === 'backward' ? Math.max(1, overscanCountResolved) : 1;\n var overscanForward = !isScrolling || horizontalScrollDirection === 'forward' ? Math.max(1, overscanCountResolved) : 1;\n return [Math.max(0, startIndex - overscanBackward), Math.max(0, Math.min(columnCount - 1, stopIndex + overscanForward)), startIndex, stopIndex];\n };\n\n _proto._getVerticalRangeToRender = function _getVerticalRangeToRender() {\n var _this$props7 = this.props,\n columnCount = _this$props7.columnCount,\n overscanCount = _this$props7.overscanCount,\n overscanRowCount = _this$props7.overscanRowCount,\n overscanRowsCount = _this$props7.overscanRowsCount,\n rowCount = _this$props7.rowCount;\n var _this$state5 = this.state,\n isScrolling = _this$state5.isScrolling,\n verticalScrollDirection = _this$state5.verticalScrollDirection,\n scrollTop = _this$state5.scrollTop;\n var overscanCountResolved = overscanRowCount || overscanRowsCount || overscanCount || 1;\n\n if (columnCount === 0 || rowCount === 0) {\n return [0, 0, 0, 0];\n }\n\n var startIndex = getRowStartIndexForOffset(this.props, scrollTop, this._instanceProps);\n var stopIndex = getRowStopIndexForStartIndex(this.props, startIndex, scrollTop, this._instanceProps); // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n\n var overscanBackward = !isScrolling || verticalScrollDirection === 'backward' ? Math.max(1, overscanCountResolved) : 1;\n var overscanForward = !isScrolling || verticalScrollDirection === 'forward' ? Math.max(1, overscanCountResolved) : 1;\n return [Math.max(0, startIndex - overscanBackward), Math.max(0, Math.min(rowCount - 1, stopIndex + overscanForward)), startIndex, stopIndex];\n };\n\n return Grid;\n }(PureComponent), _class.defaultProps = {\n direction: 'ltr',\n itemData: undefined,\n useIsScrolling: false\n }, _class;\n}\n\nvar validateSharedProps = function validateSharedProps(_ref5, _ref6) {\n var children = _ref5.children,\n direction = _ref5.direction,\n height = _ref5.height,\n innerTagName = _ref5.innerTagName,\n outerTagName = _ref5.outerTagName,\n overscanColumnsCount = _ref5.overscanColumnsCount,\n overscanCount = _ref5.overscanCount,\n overscanRowsCount = _ref5.overscanRowsCount,\n width = _ref5.width;\n var instance = _ref6.instance;\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof overscanCount === 'number') {\n if (devWarningsOverscanCount && !devWarningsOverscanCount.has(instance)) {\n devWarningsOverscanCount.add(instance);\n console.warn('The overscanCount prop has been deprecated. ' + 'Please use the overscanColumnCount and overscanRowCount props instead.');\n }\n }\n\n if (typeof overscanColumnsCount === 'number' || typeof overscanRowsCount === 'number') {\n if (devWarningsOverscanRowsColumnsCount && !devWarningsOverscanRowsColumnsCount.has(instance)) {\n devWarningsOverscanRowsColumnsCount.add(instance);\n console.warn('The overscanColumnsCount and overscanRowsCount props have been deprecated. ' + 'Please use the overscanColumnCount and overscanRowCount props instead.');\n }\n }\n\n if (innerTagName != null || outerTagName != null) {\n if (devWarningsTagName && !devWarningsTagName.has(instance)) {\n devWarningsTagName.add(instance);\n console.warn('The innerTagName and outerTagName props have been deprecated. ' + 'Please use the innerElementType and outerElementType props instead.');\n }\n }\n\n if (children == null) {\n throw Error('An invalid \"children\" prop has been specified. ' + 'Value should be a React component. ' + (\"\\\"\" + (children === null ? 'null' : typeof children) + \"\\\" was specified.\"));\n }\n\n switch (direction) {\n case 'ltr':\n case 'rtl':\n // Valid values\n break;\n\n default:\n throw Error('An invalid \"direction\" prop has been specified. ' + 'Value should be either \"ltr\" or \"rtl\". ' + (\"\\\"\" + direction + \"\\\" was specified.\"));\n }\n\n if (typeof width !== 'number') {\n throw Error('An invalid \"width\" prop has been specified. ' + 'Grids must specify a number for width. ' + (\"\\\"\" + (width === null ? 'null' : typeof width) + \"\\\" was specified.\"));\n }\n\n if (typeof height !== 'number') {\n throw Error('An invalid \"height\" prop has been specified. ' + 'Grids must specify a number for height. ' + (\"\\\"\" + (height === null ? 'null' : typeof height) + \"\\\" was specified.\"));\n }\n }\n};\n\nvar DEFAULT_ESTIMATED_ITEM_SIZE = 50;\n\nvar getEstimatedTotalHeight = function getEstimatedTotalHeight(_ref, _ref2) {\n var rowCount = _ref.rowCount;\n var rowMetadataMap = _ref2.rowMetadataMap,\n estimatedRowHeight = _ref2.estimatedRowHeight,\n lastMeasuredRowIndex = _ref2.lastMeasuredRowIndex;\n var totalSizeOfMeasuredRows = 0; // Edge case check for when the number of items decreases while a scroll is in progress.\n // https://github.com/bvaughn/react-window/pull/138\n\n if (lastMeasuredRowIndex >= rowCount) {\n lastMeasuredRowIndex = rowCount - 1;\n }\n\n if (lastMeasuredRowIndex >= 0) {\n var itemMetadata = rowMetadataMap[lastMeasuredRowIndex];\n totalSizeOfMeasuredRows = itemMetadata.offset + itemMetadata.size;\n }\n\n var numUnmeasuredItems = rowCount - lastMeasuredRowIndex - 1;\n var totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedRowHeight;\n return totalSizeOfMeasuredRows + totalSizeOfUnmeasuredItems;\n};\n\nvar getEstimatedTotalWidth = function getEstimatedTotalWidth(_ref3, _ref4) {\n var columnCount = _ref3.columnCount;\n var columnMetadataMap = _ref4.columnMetadataMap,\n estimatedColumnWidth = _ref4.estimatedColumnWidth,\n lastMeasuredColumnIndex = _ref4.lastMeasuredColumnIndex;\n var totalSizeOfMeasuredRows = 0; // Edge case check for when the number of items decreases while a scroll is in progress.\n // https://github.com/bvaughn/react-window/pull/138\n\n if (lastMeasuredColumnIndex >= columnCount) {\n lastMeasuredColumnIndex = columnCount - 1;\n }\n\n if (lastMeasuredColumnIndex >= 0) {\n var itemMetadata = columnMetadataMap[lastMeasuredColumnIndex];\n totalSizeOfMeasuredRows = itemMetadata.offset + itemMetadata.size;\n }\n\n var numUnmeasuredItems = columnCount - lastMeasuredColumnIndex - 1;\n var totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedColumnWidth;\n return totalSizeOfMeasuredRows + totalSizeOfUnmeasuredItems;\n};\n\nvar getItemMetadata = function getItemMetadata(itemType, props, index, instanceProps) {\n var itemMetadataMap, itemSize, lastMeasuredIndex;\n\n if (itemType === 'column') {\n itemMetadataMap = instanceProps.columnMetadataMap;\n itemSize = props.columnWidth;\n lastMeasuredIndex = instanceProps.lastMeasuredColumnIndex;\n } else {\n itemMetadataMap = instanceProps.rowMetadataMap;\n itemSize = props.rowHeight;\n lastMeasuredIndex = instanceProps.lastMeasuredRowIndex;\n }\n\n if (index > lastMeasuredIndex) {\n var offset = 0;\n\n if (lastMeasuredIndex >= 0) {\n var itemMetadata = itemMetadataMap[lastMeasuredIndex];\n offset = itemMetadata.offset + itemMetadata.size;\n }\n\n for (var i = lastMeasuredIndex + 1; i <= index; i++) {\n var size = itemSize(i);\n itemMetadataMap[i] = {\n offset: offset,\n size: size\n };\n offset += size;\n }\n\n if (itemType === 'column') {\n instanceProps.lastMeasuredColumnIndex = index;\n } else {\n instanceProps.lastMeasuredRowIndex = index;\n }\n }\n\n return itemMetadataMap[index];\n};\n\nvar findNearestItem = function findNearestItem(itemType, props, instanceProps, offset) {\n var itemMetadataMap, lastMeasuredIndex;\n\n if (itemType === 'column') {\n itemMetadataMap = instanceProps.columnMetadataMap;\n lastMeasuredIndex = instanceProps.lastMeasuredColumnIndex;\n } else {\n itemMetadataMap = instanceProps.rowMetadataMap;\n lastMeasuredIndex = instanceProps.lastMeasuredRowIndex;\n }\n\n var lastMeasuredItemOffset = lastMeasuredIndex > 0 ? itemMetadataMap[lastMeasuredIndex].offset : 0;\n\n if (lastMeasuredItemOffset >= offset) {\n // If we've already measured items within this range just use a binary search as it's faster.\n return findNearestItemBinarySearch(itemType, props, instanceProps, lastMeasuredIndex, 0, offset);\n } else {\n // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n // The exponential search avoids pre-computing sizes for the full set of items as a binary search would.\n // The overall complexity for this approach is O(log n).\n return findNearestItemExponentialSearch(itemType, props, instanceProps, Math.max(0, lastMeasuredIndex), offset);\n }\n};\n\nvar findNearestItemBinarySearch = function findNearestItemBinarySearch(itemType, props, instanceProps, high, low, offset) {\n while (low <= high) {\n var middle = low + Math.floor((high - low) / 2);\n var currentOffset = getItemMetadata(itemType, props, middle, instanceProps).offset;\n\n if (currentOffset === offset) {\n return middle;\n } else if (currentOffset < offset) {\n low = middle + 1;\n } else if (currentOffset > offset) {\n high = middle - 1;\n }\n }\n\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n};\n\nvar findNearestItemExponentialSearch = function findNearestItemExponentialSearch(itemType, props, instanceProps, index, offset) {\n var itemCount = itemType === 'column' ? props.columnCount : props.rowCount;\n var interval = 1;\n\n while (index < itemCount && getItemMetadata(itemType, props, index, instanceProps).offset < offset) {\n index += interval;\n interval *= 2;\n }\n\n return findNearestItemBinarySearch(itemType, props, instanceProps, Math.min(index, itemCount - 1), Math.floor(index / 2), offset);\n};\n\nvar getOffsetForIndexAndAlignment = function getOffsetForIndexAndAlignment(itemType, props, index, align, scrollOffset, instanceProps, scrollbarSize) {\n var size = itemType === 'column' ? props.width : props.height;\n var itemMetadata = getItemMetadata(itemType, props, index, instanceProps); // Get estimated total size after ItemMetadata is computed,\n // To ensure it reflects actual measurements instead of just estimates.\n\n var estimatedTotalSize = itemType === 'column' ? getEstimatedTotalWidth(props, instanceProps) : getEstimatedTotalHeight(props, instanceProps);\n var maxOffset = Math.max(0, Math.min(estimatedTotalSize - size, itemMetadata.offset));\n var minOffset = Math.max(0, itemMetadata.offset - size + scrollbarSize + itemMetadata.size);\n\n if (align === 'smart') {\n if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n return Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n case 'auto':\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (minOffset > maxOffset) {\n // Because we only take into account the scrollbar size when calculating minOffset\n // this value can be larger than maxOffset when at the end of the list\n return minOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n\n }\n};\n\nvar VariableSizeGrid = /*#__PURE__*/createGridComponent({\n getColumnOffset: function getColumnOffset(props, index, instanceProps) {\n return getItemMetadata('column', props, index, instanceProps).offset;\n },\n getColumnStartIndexForOffset: function getColumnStartIndexForOffset(props, scrollLeft, instanceProps) {\n return findNearestItem('column', props, instanceProps, scrollLeft);\n },\n getColumnStopIndexForStartIndex: function getColumnStopIndexForStartIndex(props, startIndex, scrollLeft, instanceProps) {\n var columnCount = props.columnCount,\n width = props.width;\n var itemMetadata = getItemMetadata('column', props, startIndex, instanceProps);\n var maxOffset = scrollLeft + width;\n var offset = itemMetadata.offset + itemMetadata.size;\n var stopIndex = startIndex;\n\n while (stopIndex < columnCount - 1 && offset < maxOffset) {\n stopIndex++;\n offset += getItemMetadata('column', props, stopIndex, instanceProps).size;\n }\n\n return stopIndex;\n },\n getColumnWidth: function getColumnWidth(props, index, instanceProps) {\n return instanceProps.columnMetadataMap[index].size;\n },\n getEstimatedTotalHeight: getEstimatedTotalHeight,\n getEstimatedTotalWidth: getEstimatedTotalWidth,\n getOffsetForColumnAndAlignment: function getOffsetForColumnAndAlignment(props, index, align, scrollOffset, instanceProps, scrollbarSize) {\n return getOffsetForIndexAndAlignment('column', props, index, align, scrollOffset, instanceProps, scrollbarSize);\n },\n getOffsetForRowAndAlignment: function getOffsetForRowAndAlignment(props, index, align, scrollOffset, instanceProps, scrollbarSize) {\n return getOffsetForIndexAndAlignment('row', props, index, align, scrollOffset, instanceProps, scrollbarSize);\n },\n getRowOffset: function getRowOffset(props, index, instanceProps) {\n return getItemMetadata('row', props, index, instanceProps).offset;\n },\n getRowHeight: function getRowHeight(props, index, instanceProps) {\n return instanceProps.rowMetadataMap[index].size;\n },\n getRowStartIndexForOffset: function getRowStartIndexForOffset(props, scrollTop, instanceProps) {\n return findNearestItem('row', props, instanceProps, scrollTop);\n },\n getRowStopIndexForStartIndex: function getRowStopIndexForStartIndex(props, startIndex, scrollTop, instanceProps) {\n var rowCount = props.rowCount,\n height = props.height;\n var itemMetadata = getItemMetadata('row', props, startIndex, instanceProps);\n var maxOffset = scrollTop + height;\n var offset = itemMetadata.offset + itemMetadata.size;\n var stopIndex = startIndex;\n\n while (stopIndex < rowCount - 1 && offset < maxOffset) {\n stopIndex++;\n offset += getItemMetadata('row', props, stopIndex, instanceProps).size;\n }\n\n return stopIndex;\n },\n initInstanceProps: function initInstanceProps(props, instance) {\n var _ref5 = props,\n estimatedColumnWidth = _ref5.estimatedColumnWidth,\n estimatedRowHeight = _ref5.estimatedRowHeight;\n var instanceProps = {\n columnMetadataMap: {},\n estimatedColumnWidth: estimatedColumnWidth || DEFAULT_ESTIMATED_ITEM_SIZE,\n estimatedRowHeight: estimatedRowHeight || DEFAULT_ESTIMATED_ITEM_SIZE,\n lastMeasuredColumnIndex: -1,\n lastMeasuredRowIndex: -1,\n rowMetadataMap: {}\n };\n\n instance.resetAfterColumnIndex = function (columnIndex, shouldForceUpdate) {\n if (shouldForceUpdate === void 0) {\n shouldForceUpdate = true;\n }\n\n instance.resetAfterIndices({\n columnIndex: columnIndex,\n shouldForceUpdate: shouldForceUpdate\n });\n };\n\n instance.resetAfterRowIndex = function (rowIndex, shouldForceUpdate) {\n if (shouldForceUpdate === void 0) {\n shouldForceUpdate = true;\n }\n\n instance.resetAfterIndices({\n rowIndex: rowIndex,\n shouldForceUpdate: shouldForceUpdate\n });\n };\n\n instance.resetAfterIndices = function (_ref6) {\n var columnIndex = _ref6.columnIndex,\n rowIndex = _ref6.rowIndex,\n _ref6$shouldForceUpda = _ref6.shouldForceUpdate,\n shouldForceUpdate = _ref6$shouldForceUpda === void 0 ? true : _ref6$shouldForceUpda;\n\n if (typeof columnIndex === 'number') {\n instanceProps.lastMeasuredColumnIndex = Math.min(instanceProps.lastMeasuredColumnIndex, columnIndex - 1);\n }\n\n if (typeof rowIndex === 'number') {\n instanceProps.lastMeasuredRowIndex = Math.min(instanceProps.lastMeasuredRowIndex, rowIndex - 1);\n } // We could potentially optimize further by only evicting styles after this index,\n // But since styles are only cached while scrolling is in progress-\n // It seems an unnecessary optimization.\n // It's unlikely that resetAfterIndex() will be called while a user is scrolling.\n\n\n instance._getItemStyleCache(-1);\n\n if (shouldForceUpdate) {\n instance.forceUpdate();\n }\n };\n\n return instanceProps;\n },\n shouldResetStyleCacheOnItemSizeChange: false,\n validateProps: function validateProps(_ref7) {\n var columnWidth = _ref7.columnWidth,\n rowHeight = _ref7.rowHeight;\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof columnWidth !== 'function') {\n throw Error('An invalid \"columnWidth\" prop has been specified. ' + 'Value should be a function. ' + (\"\\\"\" + (columnWidth === null ? 'null' : typeof columnWidth) + \"\\\" was specified.\"));\n } else if (typeof rowHeight !== 'function') {\n throw Error('An invalid \"rowHeight\" prop has been specified. ' + 'Value should be a function. ' + (\"\\\"\" + (rowHeight === null ? 'null' : typeof rowHeight) + \"\\\" was specified.\"));\n }\n }\n }\n});\n\nvar IS_SCROLLING_DEBOUNCE_INTERVAL$1 = 150;\n\nvar defaultItemKey$1 = function defaultItemKey(index, data) {\n return index;\n}; // In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\n\n\nvar devWarningsDirection = null;\nvar devWarningsTagName$1 = null;\n\nif (process.env.NODE_ENV !== 'production') {\n if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n devWarningsDirection = /*#__PURE__*/new WeakSet();\n devWarningsTagName$1 = /*#__PURE__*/new WeakSet();\n }\n}\n\nfunction createListComponent(_ref) {\n var _class;\n\n var getItemOffset = _ref.getItemOffset,\n getEstimatedTotalSize = _ref.getEstimatedTotalSize,\n getItemSize = _ref.getItemSize,\n getOffsetForIndexAndAlignment = _ref.getOffsetForIndexAndAlignment,\n getStartIndexForOffset = _ref.getStartIndexForOffset,\n getStopIndexForStartIndex = _ref.getStopIndexForStartIndex,\n initInstanceProps = _ref.initInstanceProps,\n shouldResetStyleCacheOnItemSizeChange = _ref.shouldResetStyleCacheOnItemSizeChange,\n validateProps = _ref.validateProps;\n return _class = /*#__PURE__*/function (_PureComponent) {\n _inheritsLoose(List, _PureComponent);\n\n // Always use explicit constructor for React components.\n // It produces less code after transpilation. (#26)\n // eslint-disable-next-line no-useless-constructor\n function List(props) {\n var _this;\n\n _this = _PureComponent.call(this, props) || this;\n _this._instanceProps = initInstanceProps(_this.props, _assertThisInitialized(_this));\n _this._outerRef = void 0;\n _this._resetIsScrollingTimeoutId = null;\n _this.state = {\n instance: _assertThisInitialized(_this),\n isScrolling: false,\n scrollDirection: 'forward',\n scrollOffset: typeof _this.props.initialScrollOffset === 'number' ? _this.props.initialScrollOffset : 0,\n scrollUpdateWasRequested: false\n };\n _this._callOnItemsRendered = void 0;\n _this._callOnItemsRendered = memoizeOne(function (overscanStartIndex, overscanStopIndex, visibleStartIndex, visibleStopIndex) {\n return _this.props.onItemsRendered({\n overscanStartIndex: overscanStartIndex,\n overscanStopIndex: overscanStopIndex,\n visibleStartIndex: visibleStartIndex,\n visibleStopIndex: visibleStopIndex\n });\n });\n _this._callOnScroll = void 0;\n _this._callOnScroll = memoizeOne(function (scrollDirection, scrollOffset, scrollUpdateWasRequested) {\n return _this.props.onScroll({\n scrollDirection: scrollDirection,\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: scrollUpdateWasRequested\n });\n });\n _this._getItemStyle = void 0;\n\n _this._getItemStyle = function (index) {\n var _this$props = _this.props,\n direction = _this$props.direction,\n itemSize = _this$props.itemSize,\n layout = _this$props.layout;\n\n var itemStyleCache = _this._getItemStyleCache(shouldResetStyleCacheOnItemSizeChange && itemSize, shouldResetStyleCacheOnItemSizeChange && layout, shouldResetStyleCacheOnItemSizeChange && direction);\n\n var style;\n\n if (itemStyleCache.hasOwnProperty(index)) {\n style = itemStyleCache[index];\n } else {\n var _offset = getItemOffset(_this.props, index, _this._instanceProps);\n\n var size = getItemSize(_this.props, index, _this._instanceProps); // TODO Deprecate direction \"horizontal\"\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var isRtl = direction === 'rtl';\n var offsetHorizontal = isHorizontal ? _offset : 0;\n itemStyleCache[index] = style = {\n position: 'absolute',\n left: isRtl ? undefined : offsetHorizontal,\n right: isRtl ? offsetHorizontal : undefined,\n top: !isHorizontal ? _offset : 0,\n height: !isHorizontal ? size : '100%',\n width: isHorizontal ? size : '100%'\n };\n }\n\n return style;\n };\n\n _this._getItemStyleCache = void 0;\n _this._getItemStyleCache = memoizeOne(function (_, __, ___) {\n return {};\n });\n\n _this._onScrollHorizontal = function (event) {\n var _event$currentTarget = event.currentTarget,\n clientWidth = _event$currentTarget.clientWidth,\n scrollLeft = _event$currentTarget.scrollLeft,\n scrollWidth = _event$currentTarget.scrollWidth;\n\n _this.setState(function (prevState) {\n if (prevState.scrollOffset === scrollLeft) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n\n var direction = _this.props.direction;\n var scrollOffset = scrollLeft;\n\n if (direction === 'rtl') {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n switch (getRTLOffsetType()) {\n case 'negative':\n scrollOffset = -scrollLeft;\n break;\n\n case 'positive-descending':\n scrollOffset = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n } // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n\n\n scrollOffset = Math.max(0, Math.min(scrollOffset, scrollWidth - clientWidth));\n return {\n isScrolling: true,\n scrollDirection: prevState.scrollOffset < scrollLeft ? 'forward' : 'backward',\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: false\n };\n }, _this._resetIsScrollingDebounced);\n };\n\n _this._onScrollVertical = function (event) {\n var _event$currentTarget2 = event.currentTarget,\n clientHeight = _event$currentTarget2.clientHeight,\n scrollHeight = _event$currentTarget2.scrollHeight,\n scrollTop = _event$currentTarget2.scrollTop;\n\n _this.setState(function (prevState) {\n if (prevState.scrollOffset === scrollTop) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n } // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n\n\n var scrollOffset = Math.max(0, Math.min(scrollTop, scrollHeight - clientHeight));\n return {\n isScrolling: true,\n scrollDirection: prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: false\n };\n }, _this._resetIsScrollingDebounced);\n };\n\n _this._outerRefSetter = function (ref) {\n var outerRef = _this.props.outerRef;\n _this._outerRef = ref;\n\n if (typeof outerRef === 'function') {\n outerRef(ref);\n } else if (outerRef != null && typeof outerRef === 'object' && outerRef.hasOwnProperty('current')) {\n outerRef.current = ref;\n }\n };\n\n _this._resetIsScrollingDebounced = function () {\n if (_this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(_this._resetIsScrollingTimeoutId);\n }\n\n _this._resetIsScrollingTimeoutId = requestTimeout(_this._resetIsScrolling, IS_SCROLLING_DEBOUNCE_INTERVAL$1);\n };\n\n _this._resetIsScrolling = function () {\n _this._resetIsScrollingTimeoutId = null;\n\n _this.setState({\n isScrolling: false\n }, function () {\n // Clear style cache after state update has been committed.\n // This way we don't break pure sCU for items that don't use isScrolling param.\n _this._getItemStyleCache(-1, null);\n });\n };\n\n return _this;\n }\n\n List.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n validateSharedProps$1(nextProps, prevState);\n validateProps(nextProps);\n return null;\n };\n\n var _proto = List.prototype;\n\n _proto.scrollTo = function scrollTo(scrollOffset) {\n scrollOffset = Math.max(0, scrollOffset);\n this.setState(function (prevState) {\n if (prevState.scrollOffset === scrollOffset) {\n return null;\n }\n\n return {\n scrollDirection: prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: true\n };\n }, this._resetIsScrollingDebounced);\n };\n\n _proto.scrollToItem = function scrollToItem(index, align) {\n if (align === void 0) {\n align = 'auto';\n }\n\n var _this$props2 = this.props,\n itemCount = _this$props2.itemCount,\n layout = _this$props2.layout;\n var scrollOffset = this.state.scrollOffset;\n index = Math.max(0, Math.min(index, itemCount - 1)); // The scrollbar size should be considered when scrolling an item into view, to ensure it's fully visible.\n // But we only need to account for its size when it's actually visible.\n // This is an edge case for lists; normally they only scroll in the dominant direction.\n\n var scrollbarSize = 0;\n\n if (this._outerRef) {\n var outerRef = this._outerRef;\n\n if (layout === 'vertical') {\n scrollbarSize = outerRef.scrollWidth > outerRef.clientWidth ? getScrollbarSize() : 0;\n } else {\n scrollbarSize = outerRef.scrollHeight > outerRef.clientHeight ? getScrollbarSize() : 0;\n }\n }\n\n this.scrollTo(getOffsetForIndexAndAlignment(this.props, index, align, scrollOffset, this._instanceProps, scrollbarSize));\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var _this$props3 = this.props,\n direction = _this$props3.direction,\n initialScrollOffset = _this$props3.initialScrollOffset,\n layout = _this$props3.layout;\n\n if (typeof initialScrollOffset === 'number' && this._outerRef != null) {\n var outerRef = this._outerRef; // TODO Deprecate direction \"horizontal\"\n\n if (direction === 'horizontal' || layout === 'horizontal') {\n outerRef.scrollLeft = initialScrollOffset;\n } else {\n outerRef.scrollTop = initialScrollOffset;\n }\n }\n\n this._callPropsCallbacks();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n var _this$props4 = this.props,\n direction = _this$props4.direction,\n layout = _this$props4.layout;\n var _this$state = this.state,\n scrollOffset = _this$state.scrollOffset,\n scrollUpdateWasRequested = _this$state.scrollUpdateWasRequested;\n\n if (scrollUpdateWasRequested && this._outerRef != null) {\n var outerRef = this._outerRef; // TODO Deprecate direction \"horizontal\"\n\n if (direction === 'horizontal' || layout === 'horizontal') {\n if (direction === 'rtl') {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // So we need to determine which browser behavior we're dealing with, and mimic it.\n switch (getRTLOffsetType()) {\n case 'negative':\n outerRef.scrollLeft = -scrollOffset;\n break;\n\n case 'positive-ascending':\n outerRef.scrollLeft = scrollOffset;\n break;\n\n default:\n var clientWidth = outerRef.clientWidth,\n scrollWidth = outerRef.scrollWidth;\n outerRef.scrollLeft = scrollWidth - clientWidth - scrollOffset;\n break;\n }\n } else {\n outerRef.scrollLeft = scrollOffset;\n }\n } else {\n outerRef.scrollTop = scrollOffset;\n }\n }\n\n this._callPropsCallbacks();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n };\n\n _proto.render = function render() {\n var _this$props5 = this.props,\n children = _this$props5.children,\n className = _this$props5.className,\n direction = _this$props5.direction,\n height = _this$props5.height,\n innerRef = _this$props5.innerRef,\n innerElementType = _this$props5.innerElementType,\n innerTagName = _this$props5.innerTagName,\n itemCount = _this$props5.itemCount,\n itemData = _this$props5.itemData,\n _this$props5$itemKey = _this$props5.itemKey,\n itemKey = _this$props5$itemKey === void 0 ? defaultItemKey$1 : _this$props5$itemKey,\n layout = _this$props5.layout,\n outerElementType = _this$props5.outerElementType,\n outerTagName = _this$props5.outerTagName,\n style = _this$props5.style,\n useIsScrolling = _this$props5.useIsScrolling,\n width = _this$props5.width;\n var isScrolling = this.state.isScrolling; // TODO Deprecate direction \"horizontal\"\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var onScroll = isHorizontal ? this._onScrollHorizontal : this._onScrollVertical;\n\n var _this$_getRangeToRend = this._getRangeToRender(),\n startIndex = _this$_getRangeToRend[0],\n stopIndex = _this$_getRangeToRend[1];\n\n var items = [];\n\n if (itemCount > 0) {\n for (var _index = startIndex; _index <= stopIndex; _index++) {\n items.push(createElement(children, {\n data: itemData,\n key: itemKey(_index, itemData),\n index: _index,\n isScrolling: useIsScrolling ? isScrolling : undefined,\n style: this._getItemStyle(_index)\n }));\n }\n } // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n\n\n var estimatedTotalSize = getEstimatedTotalSize(this.props, this._instanceProps);\n return createElement(outerElementType || outerTagName || 'div', {\n className: className,\n onScroll: onScroll,\n ref: this._outerRefSetter,\n style: _extends({\n position: 'relative',\n height: height,\n width: width,\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n direction: direction\n }, style)\n }, createElement(innerElementType || innerTagName || 'div', {\n children: items,\n ref: innerRef,\n style: {\n height: isHorizontal ? '100%' : estimatedTotalSize,\n pointerEvents: isScrolling ? 'none' : undefined,\n width: isHorizontal ? estimatedTotalSize : '100%'\n }\n }));\n };\n\n _proto._callPropsCallbacks = function _callPropsCallbacks() {\n if (typeof this.props.onItemsRendered === 'function') {\n var itemCount = this.props.itemCount;\n\n if (itemCount > 0) {\n var _this$_getRangeToRend2 = this._getRangeToRender(),\n _overscanStartIndex = _this$_getRangeToRend2[0],\n _overscanStopIndex = _this$_getRangeToRend2[1],\n _visibleStartIndex = _this$_getRangeToRend2[2],\n _visibleStopIndex = _this$_getRangeToRend2[3];\n\n this._callOnItemsRendered(_overscanStartIndex, _overscanStopIndex, _visibleStartIndex, _visibleStopIndex);\n }\n }\n\n if (typeof this.props.onScroll === 'function') {\n var _this$state2 = this.state,\n _scrollDirection = _this$state2.scrollDirection,\n _scrollOffset = _this$state2.scrollOffset,\n _scrollUpdateWasRequested = _this$state2.scrollUpdateWasRequested;\n\n this._callOnScroll(_scrollDirection, _scrollOffset, _scrollUpdateWasRequested);\n }\n } // Lazily create and cache item styles while scrolling,\n // So that pure component sCU will prevent re-renders.\n // We maintain this cache, and pass a style prop rather than index,\n // So that List can clear cached styles and force item re-render if necessary.\n ;\n\n _proto._getRangeToRender = function _getRangeToRender() {\n var _this$props6 = this.props,\n itemCount = _this$props6.itemCount,\n overscanCount = _this$props6.overscanCount;\n var _this$state3 = this.state,\n isScrolling = _this$state3.isScrolling,\n scrollDirection = _this$state3.scrollDirection,\n scrollOffset = _this$state3.scrollOffset;\n\n if (itemCount === 0) {\n return [0, 0, 0, 0];\n }\n\n var startIndex = getStartIndexForOffset(this.props, scrollOffset, this._instanceProps);\n var stopIndex = getStopIndexForStartIndex(this.props, startIndex, scrollOffset, this._instanceProps); // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n\n var overscanBackward = !isScrolling || scrollDirection === 'backward' ? Math.max(1, overscanCount) : 1;\n var overscanForward = !isScrolling || scrollDirection === 'forward' ? Math.max(1, overscanCount) : 1;\n return [Math.max(0, startIndex - overscanBackward), Math.max(0, Math.min(itemCount - 1, stopIndex + overscanForward)), startIndex, stopIndex];\n };\n\n return List;\n }(PureComponent), _class.defaultProps = {\n direction: 'ltr',\n itemData: undefined,\n layout: 'vertical',\n overscanCount: 2,\n useIsScrolling: false\n }, _class;\n} // NOTE: I considered further wrapping individual items with a pure ListItem component.\n// This would avoid ever calling the render function for the same index more than once,\n// But it would also add the overhead of a lot of components/fibers.\n// I assume people already do this (render function returning a class component),\n// So my doing it would just unnecessarily double the wrappers.\n\nvar validateSharedProps$1 = function validateSharedProps(_ref2, _ref3) {\n var children = _ref2.children,\n direction = _ref2.direction,\n height = _ref2.height,\n layout = _ref2.layout,\n innerTagName = _ref2.innerTagName,\n outerTagName = _ref2.outerTagName,\n width = _ref2.width;\n var instance = _ref3.instance;\n\n if (process.env.NODE_ENV !== 'production') {\n if (innerTagName != null || outerTagName != null) {\n if (devWarningsTagName$1 && !devWarningsTagName$1.has(instance)) {\n devWarningsTagName$1.add(instance);\n console.warn('The innerTagName and outerTagName props have been deprecated. ' + 'Please use the innerElementType and outerElementType props instead.');\n }\n } // TODO Deprecate direction \"horizontal\"\n\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n\n switch (direction) {\n case 'horizontal':\n case 'vertical':\n if (devWarningsDirection && !devWarningsDirection.has(instance)) {\n devWarningsDirection.add(instance);\n console.warn('The direction prop should be either \"ltr\" (default) or \"rtl\". ' + 'Please use the layout prop to specify \"vertical\" (default) or \"horizontal\" orientation.');\n }\n\n break;\n\n case 'ltr':\n case 'rtl':\n // Valid values\n break;\n\n default:\n throw Error('An invalid \"direction\" prop has been specified. ' + 'Value should be either \"ltr\" or \"rtl\". ' + (\"\\\"\" + direction + \"\\\" was specified.\"));\n }\n\n switch (layout) {\n case 'horizontal':\n case 'vertical':\n // Valid values\n break;\n\n default:\n throw Error('An invalid \"layout\" prop has been specified. ' + 'Value should be either \"horizontal\" or \"vertical\". ' + (\"\\\"\" + layout + \"\\\" was specified.\"));\n }\n\n if (children == null) {\n throw Error('An invalid \"children\" prop has been specified. ' + 'Value should be a React component. ' + (\"\\\"\" + (children === null ? 'null' : typeof children) + \"\\\" was specified.\"));\n }\n\n if (isHorizontal && typeof width !== 'number') {\n throw Error('An invalid \"width\" prop has been specified. ' + 'Horizontal lists must specify a number for width. ' + (\"\\\"\" + (width === null ? 'null' : typeof width) + \"\\\" was specified.\"));\n } else if (!isHorizontal && typeof height !== 'number') {\n throw Error('An invalid \"height\" prop has been specified. ' + 'Vertical lists must specify a number for height. ' + (\"\\\"\" + (height === null ? 'null' : typeof height) + \"\\\" was specified.\"));\n }\n }\n};\n\nvar DEFAULT_ESTIMATED_ITEM_SIZE$1 = 50;\n\nvar getItemMetadata$1 = function getItemMetadata(props, index, instanceProps) {\n var _ref = props,\n itemSize = _ref.itemSize;\n var itemMetadataMap = instanceProps.itemMetadataMap,\n lastMeasuredIndex = instanceProps.lastMeasuredIndex;\n\n if (index > lastMeasuredIndex) {\n var offset = 0;\n\n if (lastMeasuredIndex >= 0) {\n var itemMetadata = itemMetadataMap[lastMeasuredIndex];\n offset = itemMetadata.offset + itemMetadata.size;\n }\n\n for (var i = lastMeasuredIndex + 1; i <= index; i++) {\n var size = itemSize(i);\n itemMetadataMap[i] = {\n offset: offset,\n size: size\n };\n offset += size;\n }\n\n instanceProps.lastMeasuredIndex = index;\n }\n\n return itemMetadataMap[index];\n};\n\nvar findNearestItem$1 = function findNearestItem(props, instanceProps, offset) {\n var itemMetadataMap = instanceProps.itemMetadataMap,\n lastMeasuredIndex = instanceProps.lastMeasuredIndex;\n var lastMeasuredItemOffset = lastMeasuredIndex > 0 ? itemMetadataMap[lastMeasuredIndex].offset : 0;\n\n if (lastMeasuredItemOffset >= offset) {\n // If we've already measured items within this range just use a binary search as it's faster.\n return findNearestItemBinarySearch$1(props, instanceProps, lastMeasuredIndex, 0, offset);\n } else {\n // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n // The exponential search avoids pre-computing sizes for the full set of items as a binary search would.\n // The overall complexity for this approach is O(log n).\n return findNearestItemExponentialSearch$1(props, instanceProps, Math.max(0, lastMeasuredIndex), offset);\n }\n};\n\nvar findNearestItemBinarySearch$1 = function findNearestItemBinarySearch(props, instanceProps, high, low, offset) {\n while (low <= high) {\n var middle = low + Math.floor((high - low) / 2);\n var currentOffset = getItemMetadata$1(props, middle, instanceProps).offset;\n\n if (currentOffset === offset) {\n return middle;\n } else if (currentOffset < offset) {\n low = middle + 1;\n } else if (currentOffset > offset) {\n high = middle - 1;\n }\n }\n\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n};\n\nvar findNearestItemExponentialSearch$1 = function findNearestItemExponentialSearch(props, instanceProps, index, offset) {\n var itemCount = props.itemCount;\n var interval = 1;\n\n while (index < itemCount && getItemMetadata$1(props, index, instanceProps).offset < offset) {\n index += interval;\n interval *= 2;\n }\n\n return findNearestItemBinarySearch$1(props, instanceProps, Math.min(index, itemCount - 1), Math.floor(index / 2), offset);\n};\n\nvar getEstimatedTotalSize = function getEstimatedTotalSize(_ref2, _ref3) {\n var itemCount = _ref2.itemCount;\n var itemMetadataMap = _ref3.itemMetadataMap,\n estimatedItemSize = _ref3.estimatedItemSize,\n lastMeasuredIndex = _ref3.lastMeasuredIndex;\n var totalSizeOfMeasuredItems = 0; // Edge case check for when the number of items decreases while a scroll is in progress.\n // https://github.com/bvaughn/react-window/pull/138\n\n if (lastMeasuredIndex >= itemCount) {\n lastMeasuredIndex = itemCount - 1;\n }\n\n if (lastMeasuredIndex >= 0) {\n var itemMetadata = itemMetadataMap[lastMeasuredIndex];\n totalSizeOfMeasuredItems = itemMetadata.offset + itemMetadata.size;\n }\n\n var numUnmeasuredItems = itemCount - lastMeasuredIndex - 1;\n var totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedItemSize;\n return totalSizeOfMeasuredItems + totalSizeOfUnmeasuredItems;\n};\n\nvar VariableSizeList = /*#__PURE__*/createListComponent({\n getItemOffset: function getItemOffset(props, index, instanceProps) {\n return getItemMetadata$1(props, index, instanceProps).offset;\n },\n getItemSize: function getItemSize(props, index, instanceProps) {\n return instanceProps.itemMetadataMap[index].size;\n },\n getEstimatedTotalSize: getEstimatedTotalSize,\n getOffsetForIndexAndAlignment: function getOffsetForIndexAndAlignment(props, index, align, scrollOffset, instanceProps, scrollbarSize) {\n var direction = props.direction,\n height = props.height,\n layout = props.layout,\n width = props.width; // TODO Deprecate direction \"horizontal\"\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var size = isHorizontal ? width : height;\n var itemMetadata = getItemMetadata$1(props, index, instanceProps); // Get estimated total size after ItemMetadata is computed,\n // To ensure it reflects actual measurements instead of just estimates.\n\n var estimatedTotalSize = getEstimatedTotalSize(props, instanceProps);\n var maxOffset = Math.max(0, Math.min(estimatedTotalSize - size, itemMetadata.offset));\n var minOffset = Math.max(0, itemMetadata.offset - size + itemMetadata.size + scrollbarSize);\n\n if (align === 'smart') {\n if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n return Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n case 'auto':\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n\n }\n },\n getStartIndexForOffset: function getStartIndexForOffset(props, offset, instanceProps) {\n return findNearestItem$1(props, instanceProps, offset);\n },\n getStopIndexForStartIndex: function getStopIndexForStartIndex(props, startIndex, scrollOffset, instanceProps) {\n var direction = props.direction,\n height = props.height,\n itemCount = props.itemCount,\n layout = props.layout,\n width = props.width; // TODO Deprecate direction \"horizontal\"\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var size = isHorizontal ? width : height;\n var itemMetadata = getItemMetadata$1(props, startIndex, instanceProps);\n var maxOffset = scrollOffset + size;\n var offset = itemMetadata.offset + itemMetadata.size;\n var stopIndex = startIndex;\n\n while (stopIndex < itemCount - 1 && offset < maxOffset) {\n stopIndex++;\n offset += getItemMetadata$1(props, stopIndex, instanceProps).size;\n }\n\n return stopIndex;\n },\n initInstanceProps: function initInstanceProps(props, instance) {\n var _ref4 = props,\n estimatedItemSize = _ref4.estimatedItemSize;\n var instanceProps = {\n itemMetadataMap: {},\n estimatedItemSize: estimatedItemSize || DEFAULT_ESTIMATED_ITEM_SIZE$1,\n lastMeasuredIndex: -1\n };\n\n instance.resetAfterIndex = function (index, shouldForceUpdate) {\n if (shouldForceUpdate === void 0) {\n shouldForceUpdate = true;\n }\n\n instanceProps.lastMeasuredIndex = Math.min(instanceProps.lastMeasuredIndex, index - 1); // We could potentially optimize further by only evicting styles after this index,\n // But since styles are only cached while scrolling is in progress-\n // It seems an unnecessary optimization.\n // It's unlikely that resetAfterIndex() will be called while a user is scrolling.\n\n instance._getItemStyleCache(-1);\n\n if (shouldForceUpdate) {\n instance.forceUpdate();\n }\n };\n\n return instanceProps;\n },\n shouldResetStyleCacheOnItemSizeChange: false,\n validateProps: function validateProps(_ref5) {\n var itemSize = _ref5.itemSize;\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof itemSize !== 'function') {\n throw Error('An invalid \"itemSize\" prop has been specified. ' + 'Value should be a function. ' + (\"\\\"\" + (itemSize === null ? 'null' : typeof itemSize) + \"\\\" was specified.\"));\n }\n }\n }\n});\n\nvar FixedSizeGrid = /*#__PURE__*/createGridComponent({\n getColumnOffset: function getColumnOffset(_ref, index) {\n var columnWidth = _ref.columnWidth;\n return index * columnWidth;\n },\n getColumnWidth: function getColumnWidth(_ref2, index) {\n var columnWidth = _ref2.columnWidth;\n return columnWidth;\n },\n getRowOffset: function getRowOffset(_ref3, index) {\n var rowHeight = _ref3.rowHeight;\n return index * rowHeight;\n },\n getRowHeight: function getRowHeight(_ref4, index) {\n var rowHeight = _ref4.rowHeight;\n return rowHeight;\n },\n getEstimatedTotalHeight: function getEstimatedTotalHeight(_ref5) {\n var rowCount = _ref5.rowCount,\n rowHeight = _ref5.rowHeight;\n return rowHeight * rowCount;\n },\n getEstimatedTotalWidth: function getEstimatedTotalWidth(_ref6) {\n var columnCount = _ref6.columnCount,\n columnWidth = _ref6.columnWidth;\n return columnWidth * columnCount;\n },\n getOffsetForColumnAndAlignment: function getOffsetForColumnAndAlignment(_ref7, columnIndex, align, scrollLeft, instanceProps, scrollbarSize) {\n var columnCount = _ref7.columnCount,\n columnWidth = _ref7.columnWidth,\n width = _ref7.width;\n var lastColumnOffset = Math.max(0, columnCount * columnWidth - width);\n var maxOffset = Math.min(lastColumnOffset, columnIndex * columnWidth);\n var minOffset = Math.max(0, columnIndex * columnWidth - width + scrollbarSize + columnWidth);\n\n if (align === 'smart') {\n if (scrollLeft >= minOffset - width && scrollLeft <= maxOffset + width) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n // \"Centered\" offset is usually the average of the min and max.\n // But near the edges of the list, this doesn't hold true.\n var middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n if (middleOffset < Math.ceil(width / 2)) {\n return 0; // near the beginning\n } else if (middleOffset > lastColumnOffset + Math.floor(width / 2)) {\n return lastColumnOffset; // near the end\n } else {\n return middleOffset;\n }\n\n case 'auto':\n default:\n if (scrollLeft >= minOffset && scrollLeft <= maxOffset) {\n return scrollLeft;\n } else if (minOffset > maxOffset) {\n // Because we only take into account the scrollbar size when calculating minOffset\n // this value can be larger than maxOffset when at the end of the list\n return minOffset;\n } else if (scrollLeft < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n\n }\n },\n getOffsetForRowAndAlignment: function getOffsetForRowAndAlignment(_ref8, rowIndex, align, scrollTop, instanceProps, scrollbarSize) {\n var rowHeight = _ref8.rowHeight,\n height = _ref8.height,\n rowCount = _ref8.rowCount;\n var lastRowOffset = Math.max(0, rowCount * rowHeight - height);\n var maxOffset = Math.min(lastRowOffset, rowIndex * rowHeight);\n var minOffset = Math.max(0, rowIndex * rowHeight - height + scrollbarSize + rowHeight);\n\n if (align === 'smart') {\n if (scrollTop >= minOffset - height && scrollTop <= maxOffset + height) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n // \"Centered\" offset is usually the average of the min and max.\n // But near the edges of the list, this doesn't hold true.\n var middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n if (middleOffset < Math.ceil(height / 2)) {\n return 0; // near the beginning\n } else if (middleOffset > lastRowOffset + Math.floor(height / 2)) {\n return lastRowOffset; // near the end\n } else {\n return middleOffset;\n }\n\n case 'auto':\n default:\n if (scrollTop >= minOffset && scrollTop <= maxOffset) {\n return scrollTop;\n } else if (minOffset > maxOffset) {\n // Because we only take into account the scrollbar size when calculating minOffset\n // this value can be larger than maxOffset when at the end of the list\n return minOffset;\n } else if (scrollTop < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n\n }\n },\n getColumnStartIndexForOffset: function getColumnStartIndexForOffset(_ref9, scrollLeft) {\n var columnWidth = _ref9.columnWidth,\n columnCount = _ref9.columnCount;\n return Math.max(0, Math.min(columnCount - 1, Math.floor(scrollLeft / columnWidth)));\n },\n getColumnStopIndexForStartIndex: function getColumnStopIndexForStartIndex(_ref10, startIndex, scrollLeft) {\n var columnWidth = _ref10.columnWidth,\n columnCount = _ref10.columnCount,\n width = _ref10.width;\n var left = startIndex * columnWidth;\n var numVisibleColumns = Math.ceil((width + scrollLeft - left) / columnWidth);\n return Math.max(0, Math.min(columnCount - 1, startIndex + numVisibleColumns - 1 // -1 is because stop index is inclusive\n ));\n },\n getRowStartIndexForOffset: function getRowStartIndexForOffset(_ref11, scrollTop) {\n var rowHeight = _ref11.rowHeight,\n rowCount = _ref11.rowCount;\n return Math.max(0, Math.min(rowCount - 1, Math.floor(scrollTop / rowHeight)));\n },\n getRowStopIndexForStartIndex: function getRowStopIndexForStartIndex(_ref12, startIndex, scrollTop) {\n var rowHeight = _ref12.rowHeight,\n rowCount = _ref12.rowCount,\n height = _ref12.height;\n var top = startIndex * rowHeight;\n var numVisibleRows = Math.ceil((height + scrollTop - top) / rowHeight);\n return Math.max(0, Math.min(rowCount - 1, startIndex + numVisibleRows - 1 // -1 is because stop index is inclusive\n ));\n },\n initInstanceProps: function initInstanceProps(props) {// Noop\n },\n shouldResetStyleCacheOnItemSizeChange: true,\n validateProps: function validateProps(_ref13) {\n var columnWidth = _ref13.columnWidth,\n rowHeight = _ref13.rowHeight;\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof columnWidth !== 'number') {\n throw Error('An invalid \"columnWidth\" prop has been specified. ' + 'Value should be a number. ' + (\"\\\"\" + (columnWidth === null ? 'null' : typeof columnWidth) + \"\\\" was specified.\"));\n }\n\n if (typeof rowHeight !== 'number') {\n throw Error('An invalid \"rowHeight\" prop has been specified. ' + 'Value should be a number. ' + (\"\\\"\" + (rowHeight === null ? 'null' : typeof rowHeight) + \"\\\" was specified.\"));\n }\n }\n }\n});\n\nvar FixedSizeList = /*#__PURE__*/createListComponent({\n getItemOffset: function getItemOffset(_ref, index) {\n var itemSize = _ref.itemSize;\n return index * itemSize;\n },\n getItemSize: function getItemSize(_ref2, index) {\n var itemSize = _ref2.itemSize;\n return itemSize;\n },\n getEstimatedTotalSize: function getEstimatedTotalSize(_ref3) {\n var itemCount = _ref3.itemCount,\n itemSize = _ref3.itemSize;\n return itemSize * itemCount;\n },\n getOffsetForIndexAndAlignment: function getOffsetForIndexAndAlignment(_ref4, index, align, scrollOffset, instanceProps, scrollbarSize) {\n var direction = _ref4.direction,\n height = _ref4.height,\n itemCount = _ref4.itemCount,\n itemSize = _ref4.itemSize,\n layout = _ref4.layout,\n width = _ref4.width;\n // TODO Deprecate direction \"horizontal\"\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var size = isHorizontal ? width : height;\n var lastItemOffset = Math.max(0, itemCount * itemSize - size);\n var maxOffset = Math.min(lastItemOffset, index * itemSize);\n var minOffset = Math.max(0, index * itemSize - size + itemSize + scrollbarSize);\n\n if (align === 'smart') {\n if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n {\n // \"Centered\" offset is usually the average of the min and max.\n // But near the edges of the list, this doesn't hold true.\n var middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n if (middleOffset < Math.ceil(size / 2)) {\n return 0; // near the beginning\n } else if (middleOffset > lastItemOffset + Math.floor(size / 2)) {\n return lastItemOffset; // near the end\n } else {\n return middleOffset;\n }\n }\n\n case 'auto':\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n\n }\n },\n getStartIndexForOffset: function getStartIndexForOffset(_ref5, offset) {\n var itemCount = _ref5.itemCount,\n itemSize = _ref5.itemSize;\n return Math.max(0, Math.min(itemCount - 1, Math.floor(offset / itemSize)));\n },\n getStopIndexForStartIndex: function getStopIndexForStartIndex(_ref6, startIndex, scrollOffset) {\n var direction = _ref6.direction,\n height = _ref6.height,\n itemCount = _ref6.itemCount,\n itemSize = _ref6.itemSize,\n layout = _ref6.layout,\n width = _ref6.width;\n // TODO Deprecate direction \"horizontal\"\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var offset = startIndex * itemSize;\n var size = isHorizontal ? width : height;\n var numVisibleItems = Math.ceil((size + scrollOffset - offset) / itemSize);\n return Math.max(0, Math.min(itemCount - 1, startIndex + numVisibleItems - 1 // -1 is because stop index is inclusive\n ));\n },\n initInstanceProps: function initInstanceProps(props) {// Noop\n },\n shouldResetStyleCacheOnItemSizeChange: true,\n validateProps: function validateProps(_ref7) {\n var itemSize = _ref7.itemSize;\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof itemSize !== 'number') {\n throw Error('An invalid \"itemSize\" prop has been specified. ' + 'Value should be a number. ' + (\"\\\"\" + (itemSize === null ? 'null' : typeof itemSize) + \"\\\" was specified.\"));\n }\n }\n }\n});\n\n// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(prev, next) {\n for (var attribute in prev) {\n if (!(attribute in next)) {\n return true;\n }\n }\n\n for (var _attribute in next) {\n if (prev[_attribute] !== next[_attribute]) {\n return true;\n }\n }\n\n return false;\n}\n\nvar _excluded = [\"style\"],\n _excluded2 = [\"style\"];\n// It knows to compare individual style props and ignore the wrapper object.\n// See https://reactjs.org/docs/react-api.html#reactmemo\n\nfunction areEqual(prevProps, nextProps) {\n var prevStyle = prevProps.style,\n prevRest = _objectWithoutPropertiesLoose(prevProps, _excluded);\n\n var nextStyle = nextProps.style,\n nextRest = _objectWithoutPropertiesLoose(nextProps, _excluded2);\n\n return !shallowDiffers(prevStyle, nextStyle) && !shallowDiffers(prevRest, nextRest);\n}\n\n// It knows to compare individual style props and ignore the wrapper object.\n// See https://reactjs.org/docs/react-component.html#shouldcomponentupdate\n\nfunction shouldComponentUpdate(nextProps, nextState) {\n return !areEqual(this.props, nextProps) || shallowDiffers(this.state, nextState);\n}\n\nexport { FixedSizeGrid, FixedSizeList, VariableSizeGrid, VariableSizeList, areEqual, shouldComponentUpdate };\n//# sourceMappingURL=index.esm.js.map\n","import type { CurrencyPairData } from 'state/referenceData/referenceDataModel';\n\nconst normalizeInput = (input: string): string[] => {\n if (input === '') {\n return [];\n }\n if (/^[A-Z]{4,}$/i.test(input)) {\n return [input.substr(0, 3), input.substr(3)];\n }\n return input.replace('/', ' ').split(' ');\n};\n\nconst createFindStartRegexp = (s: string) => new RegExp(`^${s}`, 'i');\n\nexport const currencyPairFilter = (input: string) => {\n const [re1, re2] = normalizeInput(input).map(createFindStartRegexp);\n\n return ({ ccy1, ccy2 }: CurrencyPairData): boolean => {\n if (re1 === undefined) {\n return false;\n } else if (re2 === undefined) {\n return re1.test(ccy1) || re1.test(ccy2);\n } else {\n return (re1.test(ccy1) && re2.test(ccy2)) || (re2.test(ccy1) && re1.test(ccy2));\n }\n };\n};\n\nexport const currencyPairEmphasize = (input: string) => {\n const regexps = normalizeInput(input)\n .sort((a, b) => b.length - a.length)\n .map(createFindStartRegexp);\n\n return ({ ccy1, ccy2 }: CurrencyPairData): string =>\n [ccy1, ccy2]\n .map(ccy => regexps.reduce((acc, regexp) => acc.replace(regexp, '$&'), ccy))\n .join('/');\n};\n","import { QuoteIdContext } from 'components/contexts';\nimport { createContext, type MutableRefObject, useContext, useEffect, useRef } from 'react';\nimport { useSelector } from 'react-redux';\nimport type { AppState } from 'state/model';\nimport { getTileCurrencyPair } from 'state/tile/selectors';\nimport { fieldData } from 'utils/fieldSelectors';\n\ninterface CurrencyPickerContext {\n currencyPair: string | null;\n inputRef: MutableRefObject;\n}\n\nexport const CurrencyPickerContext = createContext({\n currencyPair: null,\n inputRef: { current: null },\n});\n\ninterface CurrencyPickerProviderProps {}\n\nfunction CurrencyPickerProviderRaw({\n children,\n}: React.PropsWithChildren): JSX.Element {\n const quoteId = useContext(QuoteIdContext);\n const currencyPair = useSelector(\n (state: AppState) => fieldData(getTileCurrencyPair(state, quoteId)).data,\n );\n\n const inputRef = useRef(null);\n useEffect(() => {\n const currentInputRef = inputRef.current;\n if (currentInputRef !== null) {\n const escHandler = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n currentInputRef.value = currencyPair ?? '';\n currentInputRef.blur();\n }\n };\n currentInputRef.addEventListener('keydown', escHandler);\n return () => currentInputRef.removeEventListener('keydown', escHandler);\n }\n }, [inputRef, currencyPair]);\n\n const context: CurrencyPickerContext = {\n currencyPair,\n inputRef,\n };\n\n return (\n {children}\n );\n}\n\nexport const CurrencyPickerProvider = CurrencyPickerProviderRaw;\n","import { useSelector } from 'react-redux';\nimport { getProductsAccess } from 'state/referenceData/referenceDataSelectors';\n\nexport function useProductsAccess() {\n return useSelector(getProductsAccess);\n}\n","import type { CurrencyPairData } from '../state/referenceData/referenceDataModel';\n\nexport function sortCurrencies(a: CurrencyPairData, b: CurrencyPairData) {\n if (a.isInverted && !b.isInverted) {\n return 1;\n } else if (!a.isInverted && b.isInverted) {\n return -1;\n } else {\n if (a.pair < b.pair) {\n return -1;\n }\n\n if (a.pair > b.pair) {\n return 1;\n }\n }\n\n return 0;\n}\n","import { createContext, useContext } from 'react';\nimport type { OrderType } from 'state/fxOrders/fxOrdersModel';\n\nconst orderTypeContext = createContext(null);\norderTypeContext.displayName = 'OrderTypeContext';\nexport const { Provider: OrderTypeContextProvider, Consumer: OrderTypeContextConsumer } =\n orderTypeContext;\n\nexport const useOrderTypeContext = () => useContext(orderTypeContext);\n","import {\n type MutableRefObject,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport Autosizer from 'react-virtualized-auto-sizer';\nimport { FixedSizeList as List, type ListChildComponentProps as ListRowProps } from 'react-window';\nimport styled from 'styled-components';\nimport { currencyPairEmphasize, currencyPairFilter } from 'utils/filter';\nimport { CurrencyPickerContext } from './CurrencyPickerContext';\nimport { pick } from 'utils/object';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { getAllCcyPairs } from 'state/referenceData/referenceDataSelectors';\nimport type {\n CurrencyPair,\n IndexedCurrencyPairs,\n Instrument,\n} from 'state/referenceData/referenceDataModel';\nimport { currencyPairChangeThunk } from 'state/tile/tileThunks';\nimport { InstrumentContext, QuoteIdContext } from '../contexts';\nimport { localFieldValidationSet } from 'state/globalActions';\nimport { useProductsAccess } from 'components/share/hooks/useProductAccess';\nimport type { Predicate } from 'utils/predicates';\nimport { sortCurrencies } from 'utils/sortCurrencies';\nimport { assertUnhandled } from 'utils/error';\nimport { useOrderTypeContext } from 'components/contexts/OrderTypeContext';\nimport { allowedNdfCurrencies, isAlgoOrder } from 'state/fxOrders/fxOrdersModel';\nimport { assertUnreachable } from '@sgme/fp';\nimport type { DispatchWithThunkExt } from 'state';\n\nconst selectClass = 'active';\nconst invertedClass = 'text-secondary';\n\nconst ccyListContainerClass = 'w-100 p-0 overflow-x-hidden overflow-y-hidden text-center';\n\nexport interface CurrencyListProps {\n className?: string;\n}\n\nconst rowHeight = 24;\n\nfunction filterCcy(input: string, all: readonly CurrencyPair[]) {\n const filterFn = currencyPairFilter(input);\n return input === '' ? all : all.filter(filterFn);\n}\n\nfunction useEventHandler(\n target: MutableRefObject,\n type: K,\n handler: (this: HTMLInputElement, ev: HTMLElementEventMap[K]) => void,\n) {\n useEffect(() => {\n const currentTarget = target.current;\n if (currentTarget !== null) {\n currentTarget.addEventListener(type, handler);\n return () => currentTarget.removeEventListener(type, handler);\n }\n }, [handler, target, type]);\n}\n\nfunction filterCcyPairs(\n allCurrencyPairs: Readonly,\n predicate: Predicate,\n) {\n return Object.values(allCurrencyPairs).filter(predicate).sort(sortCurrencies);\n}\n\nfunction makeFilterCcyPairsForInstrument(\n instrument: Instrument,\n canTradeNonDeliverable: boolean,\n orderType: string | null,\n): Predicate {\n switch (instrument) {\n case 'Cash':\n case 'Swap':\n return ccyPair => canTradeNonDeliverable || ccyPair.canBeDelivered;\n case 'Order':\n return ccyPair =>\n (canTradeNonDeliverable && isAlgoOrderNdfAllowed(orderType, ccyPair.pair)) ||\n ccyPair.canBeDelivered;\n\n case 'Accumulator':\n case 'Option':\n return ccyPair => ccyPair.isOptionCurrency;\n case 'Bulk':\n return ccyPair => ccyPair.canBeDelivered;\n case 'BlotterOrder':\n assertUnhandled('Blotter order currency pair cannot be changed', instrument);\n break;\n default:\n assertUnreachable(instrument, 'Unhandled instrument');\n }\n}\n\nexport function isAlgoOrderNdfAllowed(orderType: string | null, currencyPair: string): boolean {\n return isAlgoOrder(orderType) && allowedNdfCurrencies.some(a => a === currencyPair);\n}\n\nfunction useCurrencyPairs(): readonly CurrencyPair[] {\n const instrument = useContext(InstrumentContext) as Instrument;\n const allCurrencyPairs = useSelector(getAllCcyPairs);\n const { nonDeliverable } = useProductsAccess();\n const orderType = useOrderTypeContext();\n\n const ccyPairsForInstrument = useMemo(\n () =>\n instrument === undefined\n ? []\n : filterCcyPairs(\n allCurrencyPairs,\n makeFilterCcyPairsForInstrument(instrument, nonDeliverable, orderType),\n ),\n [allCurrencyPairs, instrument, nonDeliverable, orderType],\n );\n return ccyPairsForInstrument;\n}\n\nexport const CurrencyList: React.FunctionComponent = ({ className }) => {\n const { currencyPair, inputRef } = useContext(CurrencyPickerContext);\n const quoteId = useContext(QuoteIdContext);\n const instrument = useContext(InstrumentContext);\n\n const dispatch: DispatchWithThunkExt = useDispatch();\n\n const allCurrencyPairs = useSelector(getAllCcyPairs);\n const availableCcyPairs = useCurrencyPairs();\n\n const [inputValue, setInputValue] = useState(currencyPair ?? '');\n\n useEventHandler(inputRef, 'keyup', () => {\n setInputValue(inputRef.current?.value ?? '');\n });\n\n const filteredCurrencyPairs = useMemo(\n () => filterCcy(inputValue, availableCcyPairs),\n [availableCcyPairs, inputValue],\n );\n\n const [selectedIndex, setSelectedIndex] = useState(0);\n\n const selectCcyPair = useCallback(\n (ccyPair: string) => {\n dispatch(currencyPairChangeThunk(quoteId, ccyPair));\n },\n [dispatch, quoteId],\n );\n\n const triggerError = useCallback(() => {\n dispatch(\n localFieldValidationSet(\n instrument!,\n quoteId,\n 'currencyPair',\n 'invalid',\n 'currency.invalidCurrencyPair',\n ),\n );\n }, [dispatch, instrument, quoteId]);\n\n const onKeyDown = useCallback(\n (event: KeyboardEvent) => {\n switch (event.key) {\n case 'ArrowUp':\n event.preventDefault();\n setSelectedIndex(index => Math.max(0, index - 1));\n break;\n case 'ArrowDown':\n event.preventDefault();\n setSelectedIndex(index => Math.min(filteredCurrencyPairs.length - 1, index + 1));\n break;\n case 'Enter':\n case 'Tab':\n const selectedCurrencyPair = filteredCurrencyPairs[selectedIndex];\n if (inputRef.current !== null && selectedCurrencyPair !== undefined) {\n inputRef.current.value = selectedCurrencyPair.pair;\n }\n break;\n }\n },\n [filteredCurrencyPairs, inputRef, selectedIndex],\n );\n\n useEffect(() => {\n setSelectedIndex(0);\n }, [inputValue]);\n\n const onClickListItem: React.MouseEventHandler = useCallback(\n event => {\n const ccyPair = event.currentTarget.getAttribute('data-value');\n if (inputRef.current !== null) {\n inputRef.current.value = ccyPair ?? '';\n }\n },\n [inputRef],\n );\n\n const [shouldAppear, setShouldAppear] = useState(false);\n\n useEventHandler(inputRef, 'focus', () => {\n const currentInput = inputRef.current?.value;\n setShouldAppear(currentInput !== currencyPair);\n });\n\n useEventHandler(inputRef, 'keydown', e => {\n setShouldAppear(true);\n onKeyDown(e);\n });\n\n useEventHandler(inputRef, 'blur', () => {\n setShouldAppear(false);\n if (inputRef.current !== null) {\n const ccyPair = inputRef.current?.value;\n if (allCurrencyPairs[ccyPair] === undefined) {\n triggerError();\n inputRef.current.value = currencyPair ?? '';\n setInputValue(currencyPair ?? '');\n } else if (currencyPair !== ccyPair) {\n selectCcyPair(ccyPair);\n setInputValue(ccyPair);\n }\n }\n });\n\n const listRef = useRef(null);\n\n useEffect(() => {\n listRef.current?.scrollToItem(selectedIndex);\n }, [selectedIndex]);\n\n return shouldAppear ? (\n \n \n {({ width, height }) => {\n const rowRenderer = (props: ListRowProps) => (\n \n );\n\n // width and heigth casted as per https://github.com/bvaughn/react-virtualized-auto-sizer/issues/45\n return (\n \n {rowRenderer}\n \n );\n }}\n \n \n ) : null;\n};\n\ninterface CurrencyListItemProps {\n ccyInputValue: string;\n filteredCcyPairs: readonly CurrencyPair[];\n selectedIndex: number | null;\n onCcyPairMouseDown: React.MouseEventHandler;\n}\n\nconst getListRowProps = pick('key', 'style');\n\nconst CurrencyListItem: React.FunctionComponent = ({\n ccyInputValue,\n filteredCcyPairs,\n index,\n selectedIndex,\n ...props\n}) => (\n \n \n \n);\n\nconst CurrencyListContainerUl = styled.ul`\n z-index: 1000;\n\n /* hide the checkmark */\n\n & .dropdown-item.active::after {\n display: none;\n }\n`;\n\ninterface CurrencyListContainerProps {\n className?: string;\n children: React.ReactNode;\n}\n\nconst CurrencyListContainer: React.FunctionComponent = ({\n className = '',\n children,\n}) => (\n \n {children}\n \n);\n","import type { CurrencyPair } from 'state/referenceData/referenceDataModel';\n\nexport function ccyPairExtendedMessageValues(ccyPairExtended?: CurrencyPair) {\n return ccyPairExtended !== undefined\n ? {\n ccy1: ccyPairExtended.ccy1,\n ccy2: ccyPairExtended.ccy2,\n }\n : undefined;\n}\n","import type { MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\nimport type { FormDomain } from 'state/referenceData/referenceDataModel';\nimport type { ValueKeys } from 'state/share/productModel';\nimport type { AlertLevel, ValidationResult } from 'components/Form/Inputs/typings';\n\nexport interface FieldTooltipConnectOwnProps {\n quoteId: string;\n instrument: I;\n field: ValueKeys;\n}\n\nexport interface FieldNoTooltipConnectStateProps {\n alertLevel: undefined;\n}\n\nexport interface FieldTooltipConnectStateProps {\n alertLevel: AlertLevel;\n messageId: string;\n seen: boolean;\n}\n\nexport interface FieldTooltipConnectDispatchProps {\n setValidationState(result: ValidationResult): void;\n onSeen(): void;\n}\n\nexport type FieldTooltipConnectSelectorsKeys = 'getFieldValidationState';\nexport type FieldTooltipConnectSelectors = Pick;\n\nexport const mapStateToPropsFieldTooltip =\n (sl: FieldTooltipConnectSelectors) =>\n (\n state: AppState,\n { instrument, field, quoteId }: FieldTooltipConnectOwnProps,\n ): FieldTooltipConnectStateProps | FieldNoTooltipConnectStateProps =>\n sl.getFieldValidationState(state, instrument, field, quoteId);\n\nexport type FieldTooltipConnectActionCreatorsKeys =\n | 'fieldTooltipSeen'\n | 'localFieldValidationSet'\n | 'localFieldValidationClear';\nexport type FieldTooltipConnectActionCreators = Pick<\n ActionCreators,\n FieldTooltipConnectActionCreatorsKeys\n>;\n\nexport const mapDispatchToPropsFieldTooltip: MapDispatchToPropsHOF<\n FieldTooltipConnectDispatchProps,\n FieldTooltipConnectOwnProps,\n FieldTooltipConnectActionCreators\n> =\n ac =>\n (dispatch, { instrument, field, quoteId }): FieldTooltipConnectDispatchProps => ({\n onSeen: () => dispatch(ac.fieldTooltipSeen(instrument, field, quoteId)),\n setValidationState(result) {\n dispatch(\n result.status === 'valid'\n ? ac.localFieldValidationClear(instrument, quoteId, field)\n : ac.localFieldValidationSet(instrument, quoteId, field, result.status, result.messageId),\n );\n },\n });\n","import type { MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\nimport type { LeggedInstrument } from 'state/referenceData/referenceDataModel';\nimport type { LegValueKeys } from 'state/share/productModel';\nimport type { AlertLevel, ValidationResult } from 'components/Form/Inputs/typings';\n\nexport interface LegFieldTooltipConnectOwnProps {\n instrument: I;\n field: LegValueKeys;\n quoteId: string;\n legId: string;\n}\n\ninterface LegFieldNoTooltipConnectStateProps {\n alertLevel: undefined;\n}\n\nexport interface LegFieldTooltipConnectStateProps {\n alertLevel: AlertLevel;\n messageId: string;\n seen: boolean;\n}\n\nexport interface LegFieldTooltipConnectDispatchProps {\n setValidationState(result: ValidationResult): void;\n onSeen(): void;\n}\n\nexport type LegFieldTooltipConnectSelectorsKeys = 'getLegFieldValidationState';\nexport type LegFieldTooltipConnectSelectors = Pick;\n\nexport const mapStateToPropsLegFieldTooltip =\n (sl: LegFieldTooltipConnectSelectors) =>\n (\n state: AppState,\n { instrument, field, quoteId, legId }: LegFieldTooltipConnectOwnProps,\n ): LegFieldNoTooltipConnectStateProps | LegFieldTooltipConnectStateProps =>\n sl.getLegFieldValidationState(state, instrument, field, quoteId, legId);\n\nexport type LegFieldTooltipConnectActionCreatorsKeys =\n | 'legFieldTooltipSeen'\n | 'localLegFieldValidationSet'\n | 'localLegFieldValidationClear';\nexport type LegFieldTooltipConnectActionCreators = Pick<\n ActionCreators,\n LegFieldTooltipConnectActionCreatorsKeys\n>;\n\nexport const mapDispatchToPropsLegFieldTooltip: MapDispatchToPropsHOF<\n LegFieldTooltipConnectDispatchProps,\n LegFieldTooltipConnectOwnProps,\n LegFieldTooltipConnectActionCreators\n> =\n ac =>\n (dispatch, { instrument, field, quoteId, legId }): LegFieldTooltipConnectDispatchProps => ({\n onSeen: () => dispatch(ac.legFieldTooltipSeen(instrument, field, quoteId, legId)),\n setValidationState(result) {\n dispatch(\n result.status === 'valid'\n ? ac.localLegFieldValidationClear(instrument, quoteId, legId, field)\n : ac.localLegFieldValidationSet(\n instrument,\n quoteId,\n legId,\n field,\n result.status,\n result.messageId,\n ),\n );\n },\n });\n","import { useCallback } from 'react';\n\nexport function useConditionalCallback(\n condition: boolean,\n callback?: (...args: T) => void,\n) {\n return useCallback(\n (...args: T) => {\n if (condition === true && callback !== undefined) {\n callback(...args);\n }\n },\n [condition, callback],\n );\n}\n","import { createContext, Component, type Ref } from 'react';\nimport type { RenderPropChildren } from 'typings/utils';\n\ntype RefContextChildrenProps = Ref;\ninterface RefContextState {\n element: E | null;\n}\n\nexport function createRefContext(contextDisplayName?: string) {\n const RefContext = createContext(null);\n RefContext.displayName = contextDisplayName;\n\n class RefProvider extends Component<\n RenderPropChildren>,\n RefContextState\n > {\n public state = { element: null };\n private ref: Ref = element => this.setState(() => ({ element }));\n public render() {\n return (\n \n {this.props.children(this.ref)}\n \n );\n }\n }\n return { RefContext, RefProvider };\n}\n","import { createRefContext } from './RefContext';\n\nexport const { RefContext: TooltipContainerContext, RefProvider: TooltipContainerRef } =\n createRefContext('TooltipContainerContext');\n","import { useCallback, useContext, useEffect, useState } from 'react';\nimport { Tooltip, type TooltipProps } from 'reactstrap';\nimport { FormattedMessage } from 'react-intl';\nimport { IntlComponentBoundary } from 'utils/i18n/IntlComponentBoundary';\nimport type { RenderPropChildren } from 'typings/utils';\nimport { useConditionalCallback } from 'components/share/hooks/useConditionalCallback';\nimport { TooltipContainerContext } from 'components/contexts/TooltipContainer';\nimport { noop } from '@sgme/fp';\nimport type { AlertLevel, ValidationResult } from 'components/Form/Inputs/typings';\nimport en from './locales/en.json';\nimport fr from './locales/fr.json';\n\nconst messagesMap = { en, fr };\n\ninterface ITradeCaptureMessageValues {\n messageValues?: any;\n}\n\ntype ValidationEvent = 'blur' | 'keypress';\ninterface ValidationArgs {\n value?: string;\n event: ValidationEvent;\n}\n\nexport type LocalValidator = (args: ValidationArgs) => ValidationResult | undefined;\n\ninterface LocalValidationCallbacks {\n /** Set validation error/warning/valid or keep it with `undefined` */\n setValidationState(validationResult?: ValidationResult): void;\n localValidate?: LocalValidator;\n}\n\ninterface ITradeCaptureNoTooltip {\n alertLevel: undefined;\n}\n\ninterface ITradeCaptureTooltip {\n alertLevel: AlertLevel;\n messageId: string;\n seen?: boolean;\n onSeen?(): void;\n}\n\ntype TradeCaptureTooltipProps = (ITradeCaptureNoTooltip | ITradeCaptureTooltip) &\n LocalValidationCallbacks &\n Pick;\n\nfunction hasError(\n props: ITradeCaptureNoTooltip | ITradeCaptureTooltip,\n): props is ITradeCaptureTooltip {\n return props.alertLevel !== undefined;\n}\n\nexport interface TradeCaptureTooltipChildrenProps {\n alertLevel?: AlertLevel;\n ref(instance: any | null): void;\n}\n\nconst tooltipSuffix: Record = {\n invalid: 'danger',\n warning: 'warning',\n valid: 'success',\n};\n\nconst tooltipClassName = (alertLevel: AlertLevel) => `tooltip-${tooltipSuffix[alertLevel]}`;\n\nconst style = { minWidth: 200 };\n\nfunction callbackOnEventHelper(\n target: HTMLElement | null,\n eventName: 'focus' | 'blur',\n callback: () => void,\n) {\n if (target !== null) {\n target.addEventListener(eventName, callback);\n return () => target.removeEventListener('focus', callback);\n }\n}\n\ntype DisplayTooltipProps = RenderPropChildren &\n TradeCaptureTooltipProps &\n ITradeCaptureMessageValues;\n\nexport function DisplayTooltip({\n children,\n placement = 'right',\n localValidate,\n setValidationState,\n ...props\n}: DisplayTooltipProps): JSX.Element {\n const containerRef = useContext(TooltipContainerContext) ?? undefined;\n\n const {\n seen = true,\n onSeen = noop,\n alertLevel = undefined,\n messageId = undefined,\n } = hasError(props) ? props : {};\n\n const onSeenCallback = useConditionalCallback(seen === false, onSeen);\n const [target, setTarget] = useState(null);\n const [isOpen, setOpen] = useState(seen === false);\n const [isFocus, setFocus] = useState(false);\n\n const toggle = useCallback(() => {\n setOpen(!isOpen);\n onSeenCallback();\n }, [isOpen, onSeenCallback]);\n\n useEffect(() => {\n const focus = () => {\n setFocus(true);\n };\n return callbackOnEventHelper(target, 'focus', focus);\n }, [target]);\n\n useEffect(() => {\n const blur = () => {\n setFocus(false);\n };\n return callbackOnEventHelper(target, 'blur', blur);\n }, [target]);\n\n useEffect(() => {\n setOpen(seen === false);\n }, [seen]);\n\n useEffect(() => {\n if (localValidate === undefined || messageId?.startsWith('error-tc-')) {\n return;\n }\n const newValidationResult = localValidate({\n value: target?.value,\n event: isFocus ? 'keypress' : 'blur',\n });\n if (newValidationResult === undefined || alertLevel === newValidationResult.status) {\n return;\n }\n setValidationState(newValidationResult);\n }, [localValidate, setValidationState, alertLevel, messageId, isFocus, target?.value]);\n return (\n <>\n {children({\n ref: setTarget,\n alertLevel,\n })}\n {target !== null && alertLevel !== undefined && (\n \n \n \n \n \n )}\n \n );\n}\n","import type { MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\nimport type { HedgedInstrument } from 'state/referenceData/referenceDataModel';\nimport type { HedgeValueKeys } from 'state/share/productModel';\nimport type { AlertLevel, ValidationResult } from 'components/Form/Inputs/typings';\n\nexport interface HedgeFieldTooltipConnectOwnProps {\n instrument: I;\n field: HedgeValueKeys;\n quoteId: string;\n hedgeId: string;\n}\n\ninterface HedgeFieldNoTooltipConnectStateProps {\n alertLevel: undefined;\n}\n\nexport interface HedgeFieldTooltipConnectStateProps {\n alertLevel: AlertLevel;\n messageId: string;\n seen: boolean;\n}\n\nexport interface HedgeFieldTooltipConnectDispatchProps {\n setValidationState(result: ValidationResult): void;\n onSeen(): void;\n}\n\nexport type HedgeFieldTooltipConnectSelectorsKeys = 'getHedgeFieldValidationState';\nexport type HedgeFieldTooltipConnectSelectors = Pick<\n Selectors,\n HedgeFieldTooltipConnectSelectorsKeys\n>;\n\nexport const mapStateToPropsHedgeFieldTooltip =\n (sl: HedgeFieldTooltipConnectSelectors) =>\n (\n state: AppState,\n { instrument, field, quoteId, hedgeId }: HedgeFieldTooltipConnectOwnProps,\n ): HedgeFieldNoTooltipConnectStateProps | HedgeFieldTooltipConnectStateProps =>\n sl.getHedgeFieldValidationState(state, instrument, field, quoteId, hedgeId);\n\nexport type HedgeFieldTooltipConnectActionCreatorsKeys =\n | 'hedgeFieldTooltipSeen'\n | 'localHedgeFieldValidationSet'\n | 'localHedgeFieldValidationClear';\n\nexport type HedgeFieldTooltipConnectActionCreators = Pick<\n ActionCreators,\n HedgeFieldTooltipConnectActionCreatorsKeys\n>;\n\nexport const mapDispatchToPropsHedgeFieldTooltip: MapDispatchToPropsHOF<\n HedgeFieldTooltipConnectDispatchProps,\n HedgeFieldTooltipConnectOwnProps,\n HedgeFieldTooltipConnectActionCreators\n> =\n ac =>\n (dispatch, { instrument, field, quoteId, hedgeId }): HedgeFieldTooltipConnectDispatchProps => ({\n onSeen: () => dispatch(ac.hedgeFieldTooltipSeen(instrument, field, quoteId, hedgeId)),\n setValidationState(result) {\n dispatch(\n result.status === 'valid'\n ? ac.localHedgeFieldValidationClear(instrument, quoteId, hedgeId, field)\n : ac.localHedgeFieldValidationSet(\n instrument,\n quoteId,\n hedgeId,\n field,\n result.status,\n result.messageId,\n ),\n );\n },\n });\n","import { connect } from 'react-redux';\nimport { mapStateToPropsFieldTooltip, mapDispatchToPropsFieldTooltip } from './connectFieldTooltip';\nimport {\n mapStateToPropsLegFieldTooltip,\n mapDispatchToPropsLegFieldTooltip,\n} from './connectLegFieldTooltip';\nimport { selectors } from 'state/selectors';\nimport { actionCreators } from 'state/actions';\nimport { withQuoteId, withQuoteAndLegIds } from 'components/contexts';\nimport { DisplayTooltip } from './DisplayTooltip';\nimport {\n mapDispatchToPropsHedgeFieldTooltip,\n mapStateToPropsHedgeFieldTooltip,\n} from './connectHedgeFieldTooltip';\nimport { withQuoteAndHedgeIds } from '../contexts/QuoteAndLegIdsContext';\n\nexport * from './DisplayTooltip';\n\nexport const connectFieldTooltip = connect(\n mapStateToPropsFieldTooltip(selectors),\n mapDispatchToPropsFieldTooltip(actionCreators),\n);\n\nexport const connectLegFieldTooltip = connect(\n mapStateToPropsLegFieldTooltip(selectors),\n mapDispatchToPropsLegFieldTooltip(actionCreators),\n);\n\nexport const connectHedgeFieldTooltip = connect(\n mapStateToPropsHedgeFieldTooltip(selectors),\n mapDispatchToPropsHedgeFieldTooltip(actionCreators),\n);\n\n/**\n * Automagically display warning/error tooltip for a field on the product\n * @see TooltipContainerContext.Provider should be present in the tree for proper z-index positioning\n */\nexport const FieldTooltip = withQuoteId(connectFieldTooltip(DisplayTooltip));\n\n/**\n * Automagically display warning/error tooltip for a field on a leg of the product\n * @see TooltipContainerContext.Provider should be present in the tree for proper z-index positioning\n */\nexport const LegFieldTooltip = withQuoteAndLegIds(connectLegFieldTooltip(DisplayTooltip));\n\n/**\n * Automagically display warning/error tooltip for a field on a hedge of the product\n * @see TooltipContainerContext.Provider should be present in the tree for proper z-index positioning\n */\nexport const HedgeFieldTooltip = withQuoteAndHedgeIds(connectHedgeFieldTooltip(DisplayTooltip));\n","import type { AppState } from 'state/model';\nimport type { CurrencyPair } from 'state/referenceData/referenceDataModel';\nimport { type Selectors, selectors } from 'state/selectors';\nimport type { MapStateToPropsHOF } from 'typings/redux-utils';\nimport { fieldData } from '../../utils/fieldSelectors';\nimport { connect } from 'react-redux';\nimport type { Size } from 'components/Form/Inputs/typings';\n\nexport interface CurrencyPickerConnectOwnProps {\n quoteId: string;\n size?: Size;\n}\n\nexport interface CurrencyPickerConnectStateProps {\n currencyPair?: CurrencyPair;\n}\n\nexport interface CurrencyPickerConnectDispatchProps {\n changeCurrencyPair(ccyPair: string): void;\n}\n\n// you can whitelist selectors after implementation\nexport type CurrencyPickerConnectSelectors = Selectors;\n/*\nexport type CurrencyPickerConnectSelectorsKeys = 'aSelector'; // example\nexport type CurrencyPickerConnectSelectors = Pick;\n*/\nexport const mapStateToPropsCurrencyPicker: MapStateToPropsHOF<\n CurrencyPickerConnectStateProps,\n CurrencyPickerConnectOwnProps,\n AppState,\n CurrencyPickerConnectSelectors\n> =\n sl =>\n (state, { quoteId }) => {\n const currencyPair = fieldData(sl.getTileCurrencyPair(state, quoteId)).data;\n const allCcyPairs = sl.getAllCcyPairs(state);\n return {\n currencyPair: currencyPair === null ? undefined : allCcyPairs[currencyPair],\n };\n };\n\nexport const connectCurrencyPicker = connect(mapStateToPropsCurrencyPicker(selectors));\n","import {\n useCallback,\n useContext,\n useEffect,\n type FocusEvent,\n type MutableRefObject,\n type RefCallback,\n} from 'react';\nimport { FieldTooltip } from 'components/Tooltip';\nimport { CurrencyPickerContext } from './CurrencyPickerContext';\nimport { ccyPairExtendedMessageValues } from './extendedCurrencyWarning';\nimport * as e2e from 'components/Form/Inputs/e2e';\nimport { InstrumentContext, QuoteIdContext, withQuoteId } from 'components/contexts';\nimport type { AlertLevel, Size } from 'components/Form/Inputs/typings';\nimport { inputClassName } from 'components/Form/Inputs/className';\nimport type { CurrencyPair } from 'state/referenceData';\nimport { connectCurrencyPicker } from './connectCurrencyPicker';\nimport { useDispatch } from 'react-redux';\nimport { localFieldValidationClear } from 'state/globalActions';\n\nexport interface CurrencyPickerProps {\n currencyPair?: CurrencyPair;\n size?: Size;\n}\n\nfunction CurrencyPickerRaw({ currencyPair, size }: CurrencyPickerProps): JSX.Element | null {\n const instrument = useContext(InstrumentContext);\n const { inputRef } = useContext(CurrencyPickerContext);\n\n // the currency field is uncontrolled => its internal state is managed by the DOM\n // when the currencyPair changes, React will not always re-render the \n // the only way to change the internal value is to use the inputRef 🥺\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.value = currencyPair?.pair ?? '';\n }\n }, [inputRef, currencyPair]);\n\n return instrument === undefined ? null : (\n \n {({ ref, alertLevel }) => (\n \n )}\n \n );\n}\n\nexport const CurrencyPicker = withQuoteId(connectCurrencyPicker(CurrencyPickerRaw));\n\nCurrencyPicker.displayName = 'CurrencyPicker';\n\ninterface CcyInputProps {\n initialValue: string;\n alertLevel?: AlertLevel;\n size?: Size;\n setTooltipTargetRef: RefCallback;\n inputRef: MutableRefObject;\n}\n\nfunction CcyInput({\n initialValue,\n alertLevel,\n size,\n inputRef,\n setTooltipTargetRef,\n}: CcyInputProps): JSX.Element {\n const combinedRef = useCallback(\n (input: HTMLInputElement) => {\n setTooltipTargetRef(input);\n inputRef.current = input;\n },\n [setTooltipTargetRef, inputRef],\n );\n\n const instrument = useContext(InstrumentContext);\n const quoteId = useContext(QuoteIdContext);\n const dispatch = useDispatch();\n\n const onInputFocus = (event: FocusEvent) => {\n event.currentTarget.select();\n };\n\n const onInputBlur = (event: FocusEvent) => {\n if (initialValue !== event.currentTarget.value) {\n dispatch(localFieldValidationClear(instrument!, quoteId, 'currencyPair'));\n }\n };\n\n return (\n \n );\n}\n","import type { MapStateToPropsFactoryHOF, MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\nimport type { Client } from 'state/referenceData';\nimport { strictValues } from 'utils/object';\nimport { createSelector } from 'reselect';\n\nexport interface TileClientPickerConnectOwnProps {\n quoteId: string;\n}\n\nexport interface TileClientPickerConnectStateProps {\n clients: readonly Client[];\n pinned: readonly number[];\n isClientOverridden: boolean;\n}\n\nexport interface TileClientPickerConnectDispatchProps {\n onClientChange(clientId: string): void;\n onReset(): void;\n}\n\nexport type TileClientPickerConnectSelectorsKeys = 'getAllUserClients' | 'isTileClientIdOverridden';\nexport type TileClientPickerConnectSelectors = Pick<\n Selectors,\n TileClientPickerConnectSelectorsKeys\n>;\n\nexport const mapStateToPropsTileClientPicker: MapStateToPropsFactoryHOF<\n TileClientPickerConnectStateProps,\n TileClientPickerConnectOwnProps,\n AppState,\n TileClientPickerConnectSelectors\n> = sl => () => {\n const getAllClients = createSelector([sl.getAllUserClients], strictValues);\n return (state, { quoteId }) => ({\n clients: getAllClients(state),\n pinned: state.referenceData.pinnedCompanies,\n isClientOverridden: sl.isTileClientIdOverridden(state, quoteId),\n });\n};\n\nexport type TileClientPickerConnectActionCreatorsKeys =\n | 'tileClientOverridenThunk'\n | 'tileClientResetThunk'\n | 'orderRequestEmailsEpic';\nexport type TileClientPickerConnectActionCreators = Pick<\n ActionCreators,\n TileClientPickerConnectActionCreatorsKeys\n>;\n\nexport const mapDispatchToPropsTileClientPicker: MapDispatchToPropsHOF<\n TileClientPickerConnectDispatchProps,\n TileClientPickerConnectOwnProps,\n TileClientPickerConnectActionCreators\n> =\n ac =>\n (dispatch, { quoteId }) => ({\n onClientChange: clientId => dispatch(ac.tileClientOverridenThunk(quoteId, clientId)),\n onReset: () => dispatch(ac.tileClientResetThunk(quoteId)),\n });\n","import { PureComponent } from 'react';\nimport type { RenderPropChildren } from 'typings/utils';\n\nexport type ListFilter = (\n query: string,\n) => (item: T, index: number, array: readonly T[]) => boolean;\n\ninterface FilterListState {\n list: readonly T[];\n query: string;\n filteredList: readonly T[];\n selectionIndex: number;\n}\ninterface FilterListProps {\n list: readonly T[];\n query: string;\n}\nexport interface FilterListChildrenProps {\n query: string;\n filteredList: readonly T[];\n selectionIndex: number;\n goto(index: number): void;\n next(): void;\n previous(): void;\n onQueryChange(query: string): void;\n}\n\nexport function createFilterList(filter: ListFilter) {\n class FilterList extends PureComponent<\n RenderPropChildren> & FilterListProps,\n FilterListState\n > {\n // create memoizing filter\n private filter = filterByQuery(filter);\n // initial state\n public state: FilterListState = (() => {\n const { query, list } = this.props;\n const filteredList = this.filter(list, query);\n const selectionIndex = Math.min(0, filteredList.length - 1);\n return { query, list, filteredList, selectionIndex };\n })();\n private previous = () =>\n this.setState(({ selectionIndex }) => ({\n selectionIndex: Math.max(0, selectionIndex - 1),\n }));\n\n private next = () =>\n this.setState(({ filteredList, selectionIndex }) => ({\n selectionIndex: Math.min(filteredList.length - 1, selectionIndex + 1),\n }));\n\n private onQueryChange = (query: string) =>\n this.setState(previousState => {\n if (previousState.query === query) {\n return null;\n }\n const filteredList = this.filter(this.props.list, query);\n const selectionIndex =\n filteredList === previousState.filteredList\n ? previousState.selectionIndex\n : Math.min(0, filteredList.length - 1);\n return { query, filteredList, selectionIndex };\n });\n\n private goto = (i: number) =>\n this.setState(({ filteredList: { length: l } }) => ({\n selectionIndex: l === 0 ? -1 : i >= l ? l - 1 : i < 0 ? 0 : i,\n }));\n\n private get childrenProps(): FilterListChildrenProps {\n const { query, filteredList, selectionIndex } = this.state;\n const { next, previous, onQueryChange, goto } = this;\n return {\n query,\n filteredList,\n selectionIndex,\n next,\n previous,\n onQueryChange,\n goto,\n };\n }\n public render() {\n return this.props.children(this.childrenProps);\n }\n }\n return FilterList;\n}\n\nfunction filterByQuery(filter: ListFilter) {\n let memList: readonly T[] | null = null;\n let memQuery: string | null = null;\n let memFilteredList: readonly T[] = [];\n return (list: readonly T[], query: string) => {\n if (list !== memList || memQuery !== query) {\n memList = list;\n memQuery = query;\n memFilteredList = list.filter(filter(query));\n }\n return memFilteredList;\n };\n}\n","export const normalize = (value: string) => trimAll(cleanDiacritics(value.toLowerCase()));\n\nexport const trimAll = (value: string) => value.replace(/\\s+/g, ' ').trim();\n\n/**\n * Cleans diacritics from given value (e.g. \"Crème brulée\" => \"Creme brulee\")\n * @param value\n */\nexport const cleanDiacritics = (value: string) =>\n value.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n","import type { Client } from 'state/referenceData/referenceDataModel';\nimport { cleanDiacritics } from './string';\n\nconst collator = new Intl.Collator();\n\nexport const compareCompaniesPuttingTheseFirst = (...specialValues: readonly string[]) => {\n const normalizedSpecials = specialValues\n .filter(s => !s.match(/^\\s+$/))\n .map(s => cleanDiacritics(s.toLowerCase()));\n\n return (a: Client, b: Client) => {\n const indexA = getIndex(normalizedSpecials, a);\n const indexB = getIndex(normalizedSpecials, b);\n\n if (indexA === -1 && indexB === -1) {\n return collator.compare(a.companyName, b.companyName);\n }\n if (indexA === -1) {\n return 1;\n }\n if (indexB === -1) {\n return -1;\n }\n return indexA - indexB;\n };\n};\n\nfunction getIndex(specials: readonly string[], client: Client) {\n const companyName = cleanDiacritics(client.companyName.toLowerCase());\n const i = specials.indexOf(companyName);\n if (i === -1) {\n return specials.indexOf(`${client.companyId}`);\n }\n return i;\n}\n","import type { Client } from 'state/referenceData/referenceDataModel';\nimport { normalize } from './string';\n\nexport const filterClientsBy = (searchString: string) => {\n const normalizedSearch = normalize(searchString);\n return ({ companyName, companyId, externalCompanyName }: Client) =>\n `${companyId}`.includes(searchString) ||\n normalize(companyName).includes(normalizedSearch) ||\n normalize(externalCompanyName ?? '').includes(normalizedSearch);\n};\n","import { isEmpty } from '@sgme/fp';\nimport { cleanDiacritics, trimAll } from './string';\n\nconst toLowerWithoutAccents = (value: string) => cleanDiacritics(value.toLowerCase());\n\ninterface TextPart {\n highlight: boolean;\n text: string;\n}\n\nexport const textPart = (text: string, highlight: boolean = false) => ({\n highlight,\n text,\n});\n\nexport const emphasizeWithAccentsIgnored = (\n text: string,\n searchString: string,\n): readonly TextPart[] => {\n const trimmedSearchString = trimAll(searchString);\n // /!\\ if this test is removed, the while loop will be infinite\n if (isEmpty(trimmedSearchString)) {\n return [textPart(text)];\n }\n\n const trimmedText = trimAll(text);\n\n const normalizedText = toLowerWithoutAccents(trimmedText);\n const normalizedSearchString = toLowerWithoutAccents(trimmedSearchString);\n\n const ret: TextPart[] = [];\n\n let lastIndex = 0;\n\n while (true) {\n const currIndex = normalizedText.indexOf(normalizedSearchString, lastIndex);\n if (currIndex === -1) {\n break;\n }\n ret.push(textPart(trimmedText.substring(lastIndex, currIndex)));\n ret.push(textPart(trimmedText.substr(currIndex, trimmedSearchString.length), true));\n\n lastIndex = currIndex + trimmedSearchString.length;\n }\n\n if (lastIndex < trimmedText.length) {\n ret.push(textPart(trimmedText.substr(lastIndex)));\n }\n\n return ret;\n};\n","import { emphasizeWithAccentsIgnored } from './emphasize';\n\nexport const HighlightMatches: React.FunctionComponent<{\n value: string;\n match: string;\n}> = ({ value, match }) => (\n <>\n {emphasizeWithAccentsIgnored(value, match).map(({ highlight, text }, index) =>\n highlight ? {text} : text,\n )}\n \n);\n","import { useMemo } from 'react';\nimport type { RenderPropChildren } from 'typings/utils';\nimport type { Client } from 'state/referenceData/referenceDataModel';\n\ninterface ClientRowProps {\n companyId: Client['companyId'];\n index: number;\n onClientChange(companyId: string): void;\n gotoClient(index: number): void;\n close(): void;\n}\n\ninterface ClientRowChildrenProps {\n onMouseEnter: React.MouseEventHandler;\n onClick: React.MouseEventHandler;\n}\n\nexport const ClientRow: React.FunctionComponent<\n RenderPropChildren & ClientRowProps\n> = ({ children, companyId, index, onClientChange, close, gotoClient }) => {\n const handlers = useMemo(\n () => ({\n onClick: () => {\n onClientChange(companyId.toString());\n close();\n },\n onMouseEnter: () => gotoClient(index),\n }),\n [close, companyId, gotoClient, index, onClientChange],\n );\n return <>{children(handlers)};\n};\n","import { Tooltip } from 'reactstrap';\nimport { FormattedMessage } from 'react-intl';\nimport { isEmptyOrNotDefined } from '@sgme/fp';\nimport { RefToggle } from 'components/share/RefToggle';\nimport { IsInternalSales } from 'components/share/UserType';\nimport { label } from 'components/Form/Inputs/e2e';\n\nexport interface PrimeBrokerBadgeProps {\n primeBroker: string | null;\n emphasis?: boolean;\n showTooltip: boolean;\n}\n\nexport const PrimeBrokerBadge: React.FunctionComponent = ({\n primeBroker,\n emphasis,\n showTooltip,\n}) =>\n isEmptyOrNotDefined(primeBroker) ? null : (\n \n >\n {({ ref, target, isOpen, toggle }) => (\n <>\n \n \n \n {target != null && showTooltip && (\n \n {primeBroker}\n \n )}\n \n )}\n \n \n );\n","import { button, menuItem } from 'components/Form/Inputs/e2e';\n\nimport { FormattedMessage } from 'react-intl';\nimport { connect, type MapDispatchToPropsParam } from 'react-redux';\nimport { DropdownItem, DropdownMenu, DropdownToggle, UncontrolledDropdown } from 'reactstrap';\nimport {\n moveDownPinnedClientAction,\n moveUpPinnedClientAction,\n pinClientAction,\n unpinClientAction,\n} from 'state/referenceData';\nexport type PinnedStatus = undefined | 'pinned' | 'first' | 'last' | 'only';\ninterface ClientListRowMenuOwnProps {\n companyId: number;\n pinnedStatus: PinnedStatus;\n}\ninterface ClientListRowMenuDispatchProps {\n pinClient: () => void;\n unpinClient: () => void;\n moveUpClient: () => void;\n moveDownClient: () => void;\n}\n\ntype ClientListRowMenuProps = ClientListRowMenuOwnProps & ClientListRowMenuDispatchProps;\n\nexport const ClientListRowMenu = ({\n pinClient,\n unpinClient,\n moveUpClient,\n moveDownClient,\n pinnedStatus,\n}: ClientListRowMenuProps) => (\n \n e.stopPropagation()}\n >\n more_horiz\n \n \n {pinnedStatus === undefined && (\n {\n pinClient();\n e.stopPropagation();\n }}\n data-e2e={menuItem('pin')}\n >\n \n \n )}\n {canMoveUp(pinnedStatus) && (\n {\n moveUpClient();\n e.stopPropagation();\n }}\n data-e2e={menuItem('pin')}\n >\n \n \n )}\n {canMoveDown(pinnedStatus) && (\n {\n moveDownClient();\n e.stopPropagation();\n }}\n data-e2e={menuItem('pin')}\n >\n \n \n )}\n {pinnedStatus && (\n {\n unpinClient();\n e.stopPropagation();\n }}\n data-e2e={menuItem('pin')}\n >\n \n \n )}\n \n \n);\n\nfunction canMoveUp(pinnedStatus: PinnedStatus) {\n return pinnedStatus !== undefined && pinnedStatus !== 'first' && pinnedStatus !== 'only';\n}\n\nfunction canMoveDown(pinnedStatus: PinnedStatus) {\n return pinnedStatus !== undefined && pinnedStatus !== 'last' && pinnedStatus !== 'only';\n}\n\nconst mapDispatchToProps: MapDispatchToPropsParam<\n ClientListRowMenuDispatchProps,\n ClientListRowMenuOwnProps\n> = (dispatch, ownProps): ClientListRowMenuDispatchProps => ({\n pinClient: () => dispatch(pinClientAction(ownProps.companyId)),\n unpinClient: () => dispatch(unpinClientAction(ownProps.companyId)),\n moveUpClient: () => dispatch(moveUpPinnedClientAction(ownProps.companyId)),\n moveDownClient: () => dispatch(moveDownPinnedClientAction(ownProps.companyId)),\n});\n\nexport const ClientListRowMenuConnected = connect(undefined, mapDispatchToProps)(ClientListRowMenu);\n","import { FormattedMessage } from 'react-intl';\nimport styled from 'styled-components';\nimport type { Client } from 'state/referenceData/referenceDataModel';\nimport { HighlightMatches, compareCompaniesPuttingTheseFirst, normalize } from './utils';\nimport { ClientRow } from './ClientRow';\nimport { PrimeBrokerBadge } from 'components/NavMenu/PrimeBrokerBadge';\nimport { IsInternal } from 'components/share/UserType';\nimport { ClientListRowMenuConnected, type PinnedStatus } from './ClientListRowMenu';\n\nconst maxClients = 15;\n\ninterface ClientListProps {\n foundClients: readonly Client[];\n highlight: string;\n selected: number;\n onClientChange(companyId: string): void;\n gotoClient(index: number): void;\n close(): void;\n pinned: readonly number[];\n}\n\nconst widths = {\n table: 600,\n account: 300,\n bdr: 120,\n name: 180,\n};\n\nconst Table = styled.table.attrs({ className: 'table table-sm table-hover' })`\n width: ${widths.table}px;\n`;\n\nconst AccountContainer = styled.div.attrs({ className: 'd-flex' })`\n width: ${widths.account}px;\n`;\n\nconst BdrContainer = styled.div.attrs({ className: 'text-truncate' })`\n width: ${widths.bdr}px;\n`;\n\nconst NameContainer = styled.div.attrs({ className: 'text-truncate' })`\n width: ${widths.name}px;\n`;\n\nexport const ClientList: React.FunctionComponent = ({\n foundClients,\n highlight,\n selected,\n onClientChange,\n gotoClient,\n close,\n pinned = [],\n}) => (\n \n \n \n \n \n \n \n \n \n \n \n \n {foundClients\n .slice(0) // make a copy because sort mutates array\n .sort(\n compareCompaniesPuttingTheseFirst(\n 'WAITSTATE',\n normalize(highlight),\n ...pinned\n .map(c => foundClients.find(f => f.companyId === c)?.companyName)\n .filter((c): c is string => c !== undefined),\n ),\n )\n .slice(0, maxClients)\n .map(({ companyId, companyName, externalCompanyName, primeBroker }, index) => (\n \n {handlers => (\n \n \n \n \n \n \n \n \n )}\n \n ))}\n \n
\n \n \n \n \n \n
\n \n <>\n
\n \n
\n \n \n
\n
\n \n \n \n \n \n \n \n \n {companyName !== 'WAITSTATE' && (\n \n )}\n
\n);\n\nfunction getPinnedStatus(pinned: readonly number[], companyId: number): PinnedStatus {\n const i = pinned.indexOf(companyId);\n if (i === -1) {\n return undefined;\n }\n if (pinned.length === 1) {\n return 'only';\n }\n if (i === 0) {\n return 'first';\n }\n if (pinned.length - 1 === i) {\n return 'last';\n }\n\n return 'pinned';\n}\n","import { useEffect, useRef } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport type { Client } from 'state/referenceData/referenceDataModel';\nimport {\n createFilterList,\n type FilterListChildrenProps,\n} from 'components/share/FilterList/FilterList';\nimport { filterClientsBy } from './utils';\nimport { createEventHandler } from 'components/share/createEventHandler';\nimport { ClientList } from './ClientList';\nimport { input } from 'components/Form/Inputs/e2e';\nimport { IntlComponentBoundary } from 'utils/i18n/IntlComponentBoundary';\nimport en from './locales/en.json';\nimport fr from './locales/fr.json';\n\nconst messagesMap = { en, fr };\n\nexport interface ClientPickerProps {\n clients: readonly Client[];\n query?: string;\n banner?: React.ReactNode;\n button?: React.ReactNode;\n onClientChange(companyId: string): void;\n close(): void;\n pinned: readonly number[];\n}\n\nexport function ClientPicker(props: ClientPickerProps): JSX.Element {\n const inputRef = useRef(null);\n useEffect(() => {\n if (inputRef.current !== null) {\n inputRef.current.select();\n }\n }, [inputRef]);\n return (\n
\n \n {clientFilter => (\n \n {handlers => (\n <>\n
\n {props.banner}\n
\n \n {placeholder => (\n \n )}\n \n {props.button}\n
\n
\n
\n \n \n \n
\n \n )}\n
\n )}\n
\n
\n );\n}\n\nconst ClientFilterList = createFilterList(filterClientsBy);\nconst ClientSelectEventHandler = createEventHandler<\n FilterListChildrenProps & ClientPickerProps,\n HTMLInputElement,\n 'onChange' | 'onKeyDown'\n>({\n onChange:\n ({ onQueryChange }) =>\n event => {\n onQueryChange(event.currentTarget.value);\n },\n onKeyDown: props => event => {\n switch (event.key) {\n case 'ArrowUp':\n event.preventDefault();\n props.previous();\n return;\n case 'ArrowDown':\n event.preventDefault();\n props.next();\n return;\n case 'Escape':\n props.close();\n return;\n case 'Enter':\n const client = props.filteredList[props.selectionIndex];\n if (client !== undefined) {\n props.onClientChange(client.companyId.toString());\n props.close();\n }\n return;\n }\n },\n});\n","import { FormattedMessage } from 'react-intl';\nimport { ClientPicker, type ClientPickerProps } from 'components/ClientPicker';\nimport { button } from 'components/Form/Inputs/e2e';\nimport styled from 'styled-components';\n\nexport interface TileClientPickerProps extends Omit {\n isClientOverridden: boolean;\n onReset(): void;\n}\n\nconst Banner = styled.div.attrs(() => ({\n className:\n 'alert alert-outline-warning p-2 font-weight-bold d-flex align-items-center justify-content-between',\n}))`\n width: calc(0.375rem * 6 + 600px);\n`;\n\nexport const TileClientPicker: React.FunctionComponent = props => {\n const handleReset = () => {\n props.onReset();\n props.close();\n };\n return (\n \n \n \n \n {props.isClientOverridden && (\n \n \n \n )}\n \n }\n {...props}\n />\n );\n};\n","import { connect } from 'react-redux';\nimport { selectors } from 'state/selectors';\nimport { actionCreators } from 'state/actions';\nimport { withQuoteId } from 'components/contexts';\nimport {\n mapStateToPropsTileClientPicker,\n mapDispatchToPropsTileClientPicker,\n} from './connectTileClientPicker';\nimport { TileClientPicker as TileClientPickerRaw } from './TileClientPicker';\n\nconst connectTileClientPicker = connect(\n mapStateToPropsTileClientPicker(selectors),\n mapDispatchToPropsTileClientPicker(actionCreators),\n);\n\nexport const TileClientPicker = withQuoteId(connectTileClientPicker(TileClientPickerRaw));\n","import { useSelector } from 'react-redux';\nimport { getQuoteInstrument } from 'state/clientWorkspace/selectors';\nimport type { AppState } from 'state/model';\n\nexport const useQuoteType = (quoteId: string) =>\n useSelector((state: AppState) => getQuoteInstrument(state, quoteId));\n","import { type IntlFormatters } from 'react-intl';\nimport type {\n CopyToClipBoardAccumulatorRawData,\n CopyToClipBoardOptionRawData,\n CopyToClipBoardSwapRawData,\n} from './types';\nimport { type IQuote } from 'state/fxOptions/model/optionsStreams';\nimport { type IFxVanillaLegValues } from 'state/fxOptions/model/optionsLegs';\nimport type { FxAccumulatorState, FxTargetAccumulatorState } from 'state/fxAccumulators/fxAccumulatorsModel';\nimport { isArray } from 'utils/immutableReferenceUpdate';\n\n/* ################## OPTIONS #################### */\n\ninterface PriceType {\n firstTypeOfSell: string;\n firstTypeOfBuy: string;\n secondTypeOfSell: string;\n secondTypeOfBuy: string;\n}\n\nconst countPercentage = (n: number | undefined, currency: string | null): string =>\n `${n !== undefined ? `${(n * 100).toFixed(4)}% ${currency}` : ''}`;\n\nconst computePriceType = (\n quote: Readonly | null,\n legValues: IFxVanillaLegValues,\n displayPriceCurrency: number,\n numberFormatter: (value: number) => string,\n): PriceType => {\n let price;\n\n if (quote) {\n const isPriceCurrency1 = displayPriceCurrency === 1;\n const currentCurrency = isPriceCurrency1 ? quote.ccy1 : quote.ccy2;\n const displayedCurrency = isPriceCurrency1 ? legValues?.currency1 : legValues?.currency2;\n\n switch (legValues?.premiumTypeString) {\n case 'AMOUNT':\n price = {\n firstTypeOfBuy: `${numberFormatter(currentCurrency.askAmount)} ${\n currentCurrency && displayedCurrency ? displayedCurrency : ''\n }`,\n firstTypeOfSell: `${numberFormatter(currentCurrency.bidAmount)} ${\n currentCurrency && displayedCurrency ? displayedCurrency : ''\n }`,\n secondTypeOfBuy: countPercentage(currentCurrency.askPercent, displayedCurrency),\n secondTypeOfSell: countPercentage(currentCurrency.bidPercent, displayedCurrency),\n };\n break;\n case 'VOLATILITY':\n price = {\n firstTypeOfBuy: quote.volatility?.ask ? (quote.volatility?.ask * 100).toFixed(3) : '',\n firstTypeOfSell: quote.volatility?.bid ? (quote.volatility?.bid * 100).toFixed(3) : '',\n secondTypeOfBuy: countPercentage(currentCurrency.askPercent, displayedCurrency),\n secondTypeOfSell: countPercentage(currentCurrency.bidPercent, displayedCurrency),\n };\n break;\n case 'PERCENT':\n price = {\n firstTypeOfBuy: countPercentage(currentCurrency.askPercent, displayedCurrency),\n firstTypeOfSell: countPercentage(currentCurrency.bidPercent, displayedCurrency),\n secondTypeOfBuy: `${numberFormatter(currentCurrency.askAmount) ?? ''} ${\n currentCurrency.askAmount && displayedCurrency ? displayedCurrency : ''\n }`,\n secondTypeOfSell: `${numberFormatter(currentCurrency.bidAmount) ?? ''} ${\n currentCurrency.bidAmount && displayedCurrency ? displayedCurrency : ''\n }`,\n };\n break;\n case 'PPS':\n price = {\n firstTypeOfBuy: currentCurrency.askPps ? (currentCurrency.askPps * 10000).toFixed(4) : '',\n firstTypeOfSell: currentCurrency.bidPps ? (currentCurrency.bidPps * 10000).toFixed(4) : '',\n secondTypeOfBuy: `${numberFormatter(currentCurrency.askAmount) ?? ''} ${\n currentCurrency.askAmount && displayedCurrency ? displayedCurrency : ''\n }`,\n secondTypeOfSell: `${numberFormatter(currentCurrency.bidAmount) ?? ''} ${\n currentCurrency.bidAmount && displayedCurrency ? displayedCurrency : ''\n }`,\n };\n break;\n default:\n const quoteAskAmount = currentCurrency.askAmount;\n const quoteBidAmount = currentCurrency.bidAmount;\n price = {\n firstTypeOfBuy: quoteAskAmount\n ? `${numberFormatter(quoteAskAmount) ?? ''} ${quoteAskAmount && displayedCurrency ? displayedCurrency : ''}`\n : '',\n firstTypeOfSell: quoteBidAmount\n ? `${numberFormatter(quoteBidAmount) ?? ''} ${quoteBidAmount && displayedCurrency ? displayedCurrency : ''}`\n : '',\n secondTypeOfBuy: countPercentage(currentCurrency.askPercent, displayedCurrency),\n secondTypeOfSell: countPercentage(currentCurrency.bidPercent, displayedCurrency),\n };\n }\n } else {\n price = {\n firstTypeOfBuy: '',\n firstTypeOfSell: '',\n secondTypeOfBuy: '',\n secondTypeOfSell: '',\n };\n }\n\n return price;\n};\n\nconst computeTypedStrategyStrikeInfo = (\n legValues: IFxVanillaLegValues[],\n quote: Readonly | null,\n vanillaLegsId: readonly string[],\n) => {\n let putStrike = 'Put Strike: ';\n let callStrike = 'Call Strike: ';\n const callLegValue = legValues.find(leg => leg.optionType === 'Call');\n const putLegValue = legValues.find(leg => leg.optionType === 'Put');\n\n // we know that in case of typeStrategy we have call and put legs\n const callLegId = vanillaLegsId.find(legId => legId.includes('call'))!;\n const putLegId = vanillaLegsId.find(legId => legId.includes('put'))!;\n\n if (quote === null) {\n callStrike += callLegValue?.strike;\n putStrike += putLegValue?.strike;\n } else {\n const callStrikeData = quote.legsData[callLegId].strikeData;\n const putStrikeData = quote.legsData[putLegId].strikeData;\n\n callStrike += `${callStrikeData.absoluteStrikePrice} (${callStrikeData.deltaStrikePrice})`;\n putStrike += `${putStrikeData.absoluteStrikePrice} (${putStrikeData.deltaStrikePrice})`;\n }\n\n // indentation is specific for the content to be aligned in copyclipboard\n return `${putStrike}\n${callStrike}`;\n};\n\nexport const formatOptionRawData = (\n optionRawData: CopyToClipBoardOptionRawData,\n formatNumber: IntlFormatters['formatNumber'],\n): string => {\n const { legValues, quote, vanillaLegsId, greeks, displayPriceCurrency } = optionRawData;\n const { optionType = '', currency1 = '', currency2 = '' } = optionRawData.legValues[0];\n const notionalCurrency = optionRawData.legValues[0]?.notionalCurrency === 1 ? currency1 : currency2;\n const formatNumberWithDecimal = (value: number) =>\n formatNumber(value, { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n\n const isTypedStrategy = legValues.length > 1;\n const firstVanillaLegValues = legValues[0];\n const firstVanillaLegId = isTypedStrategy ? vanillaLegsId[1] : vanillaLegsId[0];\n\n const priceType = computePriceType(quote, firstVanillaLegValues, displayPriceCurrency, formatNumberWithDecimal);\n const strike =\n quote === null\n ? firstVanillaLegValues?.strike\n : `${quote?.legsData[firstVanillaLegId].strikeData.absoluteStrikePrice} (${quote?.legsData[firstVanillaLegId].strikeData.deltaStrikePrice})`;\n\n const firstTypeOfSell = priceType.firstTypeOfSell;\n const isFirstTypeOfSellExist = firstTypeOfSell ?? false;\n const firstTypeOfBuy = priceType.firstTypeOfBuy;\n const isFirstTypeOfBuyExist = firstTypeOfBuy ?? false;\n\n const currencyPair = currency1 ? currency1 + '/' + currency2 : '';\n const marketData = quote?.legsData[vanillaLegsId[0]].marketData;\n\n const expiryTenorDateFormatted = `${\n firstVanillaLegValues?.expiryDateTenor ? `(${firstVanillaLegValues?.expiryDateTenor})` : ''\n }`;\n\n const optionLabel = isTypedStrategy ? optionRawData.productName : `European ${optionType ?? ''}`;\n const strikeInfo =\n optionRawData.productName === 'Strangle' || optionRawData.productName === 'RiskReversal'\n ? computeTypedStrategyStrikeInfo(legValues, quote, vanillaLegsId)\n : `Strike: ${strike ?? ''}`;\n\n // the formatting/indentation below is done on purpose\n const stringToCopy = `${optionLabel} ${currencyPair}\nSpot: ${quote?.spot.bid ?? ''}${quote?.spot.ask || quote?.spot.bid ? '/' : ''}${quote?.spot.ask ?? ''}\nForwardRef: ${marketData?.forward ? `${marketData?.forward.bid} / ${marketData?.forward.ask}` : ''}\n${strikeInfo}\nNotional: ${\n firstVanillaLegValues?.notionalAmount ? formatNumberWithDecimal(firstVanillaLegValues?.notionalAmount) : ''\n } ${firstVanillaLegValues?.notionalAmount && notionalCurrency ? notionalCurrency : ''}\nExpiry Date: ${\n firstVanillaLegValues?.expiryDate ? `${firstVanillaLegValues?.expiryDate} ${expiryTenorDateFormatted}` : ''\n }\nSettlement: ${firstVanillaLegValues?.settlementType}\nCut-Off: ${firstVanillaLegValues?.marketPlace}\nSell: ${isFirstTypeOfSellExist ? `${firstTypeOfSell} (${priceType.secondTypeOfSell})` : ''}\nBuy: ${isFirstTypeOfBuyExist ? `${firstTypeOfBuy} (${priceType.secondTypeOfBuy})` : ''}\nVolatility: ${marketData?.volatility.bid} / ${marketData?.volatility.ask}\nVega: ${greeks?.vegaCcy ? formatNumberWithDecimal(greeks?.vegaCcy) : ''} ${notionalCurrency}\nGamma: ${greeks?.gammaCcy ? formatNumberWithDecimal(greeks?.gammaCcy) : ''} ${notionalCurrency}\nTheta: ${greeks?.vegaCcy ? formatNumberWithDecimal(greeks?.thetaCcy) : ''} ${notionalCurrency}`;\n\n return stringToCopy;\n};\n\n/* ################## SWAP #################### */\n\nfunction formatPointsValue(value: number | string): string {\n if (value === '') {\n return '';\n }\n const sign = +value > 0 ? '+' : '';\n return ` (${sign}${value})`;\n}\n\nexport function formatSwapRawData(swapDataToCopy: CopyToClipBoardSwapRawData): string {\n const swapStateData = swapDataToCopy.swapStateData;\n const isAmountCurrency1 = swapStateData.amountCurrency === 1;\n const way = isAmountCurrency1 ? ['Buy', 'Sell'] : ['Sell', 'Buy'];\n\n const swapQuoteData = swapDataToCopy.swapQuoteData;\n const dealtCurrency = isAmountCurrency1 ? swapStateData.currency1 : swapStateData.currency2;\n\n const { bid: bidSpot, ask: askSpot } = swapQuoteData.spot;\n const spot = bidSpot === '' && askSpot === '' ? '' : `${bidSpot}/${askSpot}`;\n\n const { bid: bidNearPriceValue, ask: askNearPriceValue } = swapQuoteData.nearPrice;\n const bidNearPrice = bidNearPriceValue === '' ? '' : ` @${bidNearPriceValue}`;\n const askNearPrice = askNearPriceValue === '' ? '' : ` @${askNearPriceValue}`;\n\n const { bid: bidNearPointsValue, ask: askNearPointsValue } = swapQuoteData.nearPoints;\n const bidNearPoints = formatPointsValue(bidNearPointsValue);\n const askNearPoints = formatPointsValue(askNearPointsValue);\n\n const { bid: bidFarPriceValue, ask: askFarPriceValue } = swapQuoteData.farPrice;\n const bidFarPrice = bidFarPriceValue === '' ? '' : ` @${bidFarPriceValue}`;\n const askFarPrice = askFarPriceValue === '' ? '' : ` @${askFarPriceValue}`;\n\n const { bid: bidFarPointsValue, ask: askFarPointsValue } = swapQuoteData.farPoints;\n const bidFarPoints = formatPointsValue(bidFarPointsValue);\n const askFarPoints = formatPointsValue(askFarPointsValue);\n\n const { bid: bidSwapPointsValue, ask: askSwapPointsValue } = swapQuoteData.swapPoints;\n const bidSwapPoints = formatPointsValue(bidSwapPointsValue);\n const askSwapPoints = formatPointsValue(askSwapPointsValue);\n\n const stringToCopy =\n `Swap ${swapStateData.currencyPair}\\n` +\n `Spot ref: ${spot}, Dodd Frank mid pts: ${swapQuoteData.midPoints}\\n` +\n `-------${way[0]} & ${way[1]} ${dealtCurrency} (BID)-------\\n` +\n `Near leg: ${way[0]} ${swapStateData.nearNotional} ${dealtCurrency}${bidNearPrice}${bidNearPoints}, value date ${swapStateData.nearDate} (${swapStateData.nearTenor})\\n` +\n `Far leg: ${way[1]} ${swapStateData.farNotional} ${dealtCurrency}${bidFarPrice}${bidFarPoints}, value date ${swapStateData.farDate} (${swapStateData.farTenor})\\n` +\n `ALL-IN points : ${bidSwapPoints}\\n` +\n `-------${way[1]} & ${way[0]} ${dealtCurrency} (OFFER)-------\\n` +\n `Near leg: ${way[1]} ${swapStateData.nearNotional} ${dealtCurrency}${askNearPrice}${askNearPoints}, value date ${swapStateData.nearDate} (${swapStateData.nearTenor})\\n` +\n `Far leg: ${way[0]} ${swapStateData.farNotional} ${dealtCurrency}${askFarPrice}${askFarPoints}, value date ${swapStateData.farDate} (${swapStateData.farTenor})\\n` +\n `ALL-IN points : ${askSwapPoints}`;\n\n return stringToCopy;\n}\n\n/* ################## ACCUMULATOR #################### */\nexport function formatAccumulatorRawData(\n { accumulatorStateData, accumulatorQuoteData }: CopyToClipBoardAccumulatorRawData,\n formatNumber: IntlFormatters['formatNumber'],\n): string {\n const formatNumberWithDecimal = (value: number) =>\n formatNumber(value, { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n\n const {\n amountSplitType,\n currencyPair,\n way,\n fixingFrequency,\n fixingReference1,\n leverage,\n leverageAmount,\n firstFixingDate,\n firstFixingDateTenor,\n hedgeType,\n expiryDate,\n expiryTenor,\n strike,\n priceCurrency,\n numberOfFixings,\n amount,\n } = accumulatorStateData.values;\n\n let premium;\n let premiumPercent;\n\n const currency = currencyPair?.split('/')[priceCurrency - 1];\n\n if (accumulatorQuoteData) {\n const { premiumCcy1, premiumCcy2, premiumPctCcy1, premiumPctCcy2 } = accumulatorQuoteData;\n premium = [premiumCcy1, premiumCcy2][priceCurrency - 1].ask;\n premiumPercent = [premiumPctCcy1, premiumPctCcy2][priceCurrency - 1];\n }\n\n const underlyingField = `Underlying: ${currencyPair} (${way} ${currency})\\n`;\n const fixingFrequencyField = `Fixing Frequency: ${numberOfFixings} ${fixingFrequency} (${fixingReference1})\\n`;\n const settlementFrequencyField = `Settlement Frequency: ${numberOfFixings} ${fixingFrequency}\\n`;\n const leverageField = `Leverage: ${leverage}\\n`;\n\n const amountMode = amountSplitType === 'Total' || firstFixingDate === expiryDate ? 'Total Amount' : 'Per Fixing';\n const notionalField = `Notional: ${formatNumberWithDecimal(Number(amount))} ${currency} (${amountMode})\\n`;\n const leveragedNotionalField = `Leveraged Notional: ${formatNumberWithDecimal(Number(leverageAmount))} ${currency}\\n`;\n\n const firstFixingField = `First Fixing: ${firstFixingDate} ${\n firstFixingDateTenor ? '(' + firstFixingDateTenor + ')' : ''\n }\\n`;\n const lastDateField =\n expiryDate !== null ? `Last Date: ${expiryDate} ${expiryTenor ? '(' + expiryTenor + ')' : ''}\\n` : '';\n const strikeField = strike !== null ? `Strike: ${strike}\\n` : '';\n\n const hedge = isArray(accumulatorQuoteData?.hedge) ? accumulatorQuoteData?.hedge[0] : accumulatorQuoteData?.hedge;\n\n const spotRef = hedgeType === 'Spot' ? `Spot Ref: ${accumulatorQuoteData ? `${hedge?.rateMid}` : ''}\\n` : '';\n\n const clientPaysOrReceives = premium ? (premium >= 0 ? 'pays' : 'receives') : '';\n\n const clientPremium = accumulatorQuoteData\n ? `Client ${clientPaysOrReceives} ${formatNumberWithDecimal(\n Math.abs(Number(premium)),\n )} ${currency} (${premiumPercent}%)`\n : '';\n const premiumField = clientPremium ? `Premium: ${clientPremium}` : '';\n\n if (isTargetAccumulator(accumulatorStateData)) {\n // TARF\n const { accuType, targetProfitType, target, strikeDown, pivot, strikeUp, ekiDown, ekiUp, eki } =\n accumulatorStateData.values;\n\n const accuTypeVariant = accuType !== 'TargetAccu' ? accuType : '';\n const ekiValueField = accuType === 'EKI' ? `EKI Trigger: ${eki}\\n` : '';\n\n let accuTypeAdditionalData = '';\n\n if (accuType === 'PIVOT') {\n accuTypeAdditionalData = `Strike down: ${strikeDown}\\n` + `Pivot: ${pivot}\\n` + `Strike up: ${strikeUp}\\n`;\n } else if (accuType === 'PIVOTEKI') {\n accuTypeAdditionalData =\n `EKI down: ${ekiDown}\\n` +\n `Strike down: ${strikeDown}\\n` +\n `Pivot: ${pivot}\\n` +\n `Strike up: ${strikeUp}\\n` +\n `EKI up: ${ekiUp}\\n`;\n }\n\n return (\n `Product: TARF ${accuTypeVariant}\\n` +\n `${underlyingField}` +\n `${fixingFrequencyField}` +\n `${settlementFrequencyField}` +\n `${leverageField}` +\n `${notionalField}` +\n `${leveragedNotionalField}` +\n `${firstFixingField}` +\n `${lastDateField}` +\n `${spotRef}` +\n `${accuTypeAdditionalData}` +\n `${ekiValueField}` +\n `${strikeField}` +\n `Profit Target: ${target} (${targetProfitType ?? ''})\\n` +\n `${premiumField}`\n );\n } else {\n // FWAC\n const { akoTrigger, ekiTrigger } = accumulatorStateData.values;\n\n const ekiValueField = ekiTrigger ? `EKI trigger: ${ekiTrigger}\\n` : '';\n const akoValueField = akoTrigger ? `AKO trigger: ${akoTrigger}\\n` : '';\n\n return (\n `Product: FWAC\\n` +\n `${underlyingField}` +\n `${fixingFrequencyField}` +\n `${settlementFrequencyField}` +\n `${leverageField}` +\n `${notionalField}` +\n `${leveragedNotionalField}` +\n `${firstFixingField}` +\n `${lastDateField}` +\n `${spotRef}` +\n `${strikeField}` +\n `${akoValueField}` +\n `${ekiValueField}` +\n `${premiumField}`\n );\n }\n}\n\nconst isTargetAccumulator = (accumulatorState: FxAccumulatorState): accumulatorState is FxTargetAccumulatorState =>\n accumulatorState.values.productName === 'FxTargetAccumulator';\n","import {\n getDisplayFarPoints,\n getDisplayFarPrice,\n getDisplayMidRateAndMidPts,\n getDisplayNearPoints,\n getDisplayNearPrice,\n getDisplaySwapPointsAllIn,\n getSwapCurrentStreamId,\n getSwapRfsStreamQuote,\n getSwapStreamStatus,\n} from '../../../../state/fxSwaps/selectors';\nimport type { AppState } from '../../../../state/model';\nimport type { SwapQuoteData, SwapStateData } from './types';\nimport type { FxSwapState } from 'state/fxSwaps/fxSwapsModel';\n\nexport function getSwapStateData(swapState: FxSwapState | null): SwapStateData {\n const swapData = swapState?.values;\n\n return {\n currencyPair: swapData?.currencyPair ?? '',\n currency1: swapData?.currency1 ?? '',\n currency2: swapData?.currency2 ?? '',\n amountCurrency: swapData?.amountCurrency ?? '',\n nearNotional: swapData?.nearAmount ?? '',\n farNotional: swapData?.farAmount ?? '',\n nearDate: swapData?.nearPaymentDate ?? '',\n nearTenor: swapData?.nearPaymentDateTenor ?? '',\n farDate: swapData?.farPaymentDate ?? '',\n farTenor: swapData?.farPaymentDateTenor ?? '',\n };\n}\n\nexport function getSwapQuoteData(state: AppState, quoteId: string): SwapQuoteData {\n const streamStatus = getSwapStreamStatus(state, quoteId);\n\n const emptyBidAskObject = { bid: '', ask: '' };\n\n if (streamStatus === 'PRICING') {\n const streamId = getSwapCurrentStreamId(state, quoteId);\n const isStreamId = streamId !== null;\n\n const spot = !isStreamId ? emptyBidAskObject : getSwapRfsStreamQuote(state, streamId).spot;\n const midPoints = getDisplayMidRateAndMidPts(state, quoteId)?.midPts ?? '';\n const nearPrice = getDisplayNearPrice(state, quoteId).value ?? emptyBidAskObject;\n const nearPoints = !isStreamId\n ? emptyBidAskObject\n : getDisplayNearPoints(state, quoteId).points;\n const farPrice = getDisplayFarPrice(state, quoteId).value ?? emptyBidAskObject;\n const farPoints = !isStreamId ? emptyBidAskObject : getDisplayFarPoints(state, quoteId).points;\n const swapPoints = !isStreamId\n ? emptyBidAskObject\n : getDisplaySwapPointsAllIn(state, quoteId).points;\n\n return {\n spot,\n midPoints,\n nearPrice,\n nearPoints,\n farPrice,\n farPoints,\n swapPoints,\n };\n }\n\n return {\n spot: emptyBidAskObject,\n midPoints: '',\n nearPrice: emptyBidAskObject,\n nearPoints: emptyBidAskObject,\n farPrice: emptyBidAskObject,\n farPoints: emptyBidAskObject,\n swapPoints: emptyBidAskObject,\n };\n}\n","import { useContext } from 'react';\nimport { useSelector } from 'react-redux';\nimport { type AppState } from 'state/model';\nimport { QuoteIdContext } from '../../../contexts';\nimport { getQuoteInstrument } from 'state/clientWorkspace/selectors';\nimport {\n getAllVanillaLegIdsOfOption,\n getAllVanillaLegsOfOption,\n getFirstLegOfMultilegOfOption,\n getGreeksFromStream,\n getOptionActiveRfsId,\n getOptionDisplayPriceType,\n getOptionQuote,\n} from 'state/fxOptions/selectors';\nimport { getSwapState } from 'state/fxSwaps/selectors';\nimport type { IGreeks } from 'state/fxOptions/fxOptionsModel';\nimport { DropdownItem } from 'reactstrap';\nimport { menuItem } from '../../../Form/Inputs/e2e';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { useQuoteType } from '../../../share/hooks/useQuoteType';\nimport type { Instrument } from 'state/referenceData';\nimport type { CopyToClipBoardRawData } from './types';\nimport { formatAccumulatorRawData, formatOptionRawData, formatSwapRawData } from './formatRawData';\nimport { getSwapQuoteData, getSwapStateData } from './swapData';\nimport { getAccumulatorRfsQuoteByQuoteId, getAccumulatorState } from 'state/fxAccumulators/selectors';\n\nconst selectCopyToClipBoardRawData = (state: AppState, quoteId: string): CopyToClipBoardRawData => {\n const instrument = getQuoteInstrument(state, quoteId);\n\n if (instrument === 'Option') {\n let greeks: Readonly | null = null;\n const productName = getFirstLegOfMultilegOfOption(state, quoteId).productName;\n const vanillaLegs = getAllVanillaLegsOfOption(state, quoteId);\n const legValues = vanillaLegs.map(vanillaLeg => vanillaLeg.values);\n const vanillaLegsId = getAllVanillaLegIdsOfOption(state, quoteId);\n\n const quote = getOptionQuote(state, quoteId);\n const [displayPriceCurrency] = getOptionDisplayPriceType(state, quoteId);\n\n if (quote) {\n const optionId = vanillaLegsId[0].split('/')[0];\n const currentStreamId = getOptionActiveRfsId(state, optionId);\n\n if (currentStreamId) {\n greeks = getGreeksFromStream(state, currentStreamId, legValues[0]?.notionalCurrency);\n }\n }\n\n return {\n vanillaLegsId,\n greeks,\n quote,\n legValues,\n productName,\n displayPriceCurrency,\n instrument,\n };\n }\n\n if (instrument === 'Swap') {\n const swapState = getSwapState(state, quoteId);\n const swapStateData = getSwapStateData(swapState);\n const swapQuoteData = getSwapQuoteData(state, quoteId);\n\n return {\n instrument,\n swapStateData,\n swapQuoteData,\n };\n }\n\n if (instrument === 'Accumulator') {\n const accumulatorQuoteData = getAccumulatorRfsQuoteByQuoteId(state, quoteId);\n const accumulatorStateData = getAccumulatorState(state, quoteId);\n\n return { accumulatorQuoteData, accumulatorStateData, instrument };\n }\n\n throw Error(`instrument ${instrument} is not supported`);\n};\n\nconst useGetFormattedDataToCopy = (rawData: CopyToClipBoardRawData) => {\n const { formatNumber } = useIntl();\n\n switch (rawData.instrument) {\n case 'Option':\n return () => navigator.clipboard.writeText(formatOptionRawData(rawData, formatNumber));\n case 'Swap':\n return () => navigator.clipboard.writeText(formatSwapRawData(rawData));\n case 'Accumulator':\n return () => navigator.clipboard.writeText(formatAccumulatorRawData(rawData, formatNumber));\n }\n};\n\nconst CopyToClipBoardDropDown = () => {\n const quoteId = useContext(QuoteIdContext);\n const rawData = useSelector((state: AppState) => selectCopyToClipBoardRawData(state, quoteId));\n\n let hideClipBoard = false;\n\n if (rawData?.instrument === 'Option') {\n hideClipBoard = rawData.vanillaLegsId.length > 1 && rawData.productName === 'Vanilla';\n }\n\n const onCopyDataTileToClipboard = useGetFormattedDataToCopy(rawData);\n\n return hideClipBoard ? null : (\n \n \n \n );\n};\n\nconst CopyToClipBoard = () => {\n const quoteId = useContext(QuoteIdContext);\n const instrument = useQuoteType(quoteId);\n const supportedInstruments: Instrument[] = ['Option', 'Swap', 'Accumulator'];\n\n return supportedInstruments.includes(instrument) ? : null;\n};\n\nexport default CopyToClipBoard;\n","import React, { useCallback, useContext } from 'react';\nimport {\n DropdownItem,\n DropdownMenu,\n DropdownToggle,\n Popover,\n UncontrolledDropdown,\n} from 'reactstrap';\nimport { FormattedMessage } from 'react-intl';\nimport { button, menuItem } from 'components/Form/Inputs/e2e';\nimport { RefToggle } from 'components/share/RefToggle';\nimport { TileClientPicker } from '../TileClientPicker';\nimport { CurrencyPickerContext } from 'components/CurrencyPicker';\nimport CopyToClipBoard from './CopyToClipBoard';\n\ninterface TileMenuProps {\n closeTile(): void;\n duplicateTile(): void;\n resetTile(): void;\n}\n\nexport const TileMenu: React.FunctionComponent = ({\n closeTile,\n duplicateTile,\n resetTile,\n}) => {\n const { inputRef } = useContext(CurrencyPickerContext);\n\n const onReset = useCallback(() => {\n resetTile();\n inputRef.current?.focus();\n }, [resetTile, inputRef]);\n\n return (\n \n {clientPicker => (\n
\n \n \n more_vert\n \n \n \n \n \n arrow_right\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {clientPicker.target !== null && (\n \n \n \n )}\n
\n )}\n
\n );\n};\n","import type { MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { ActionCreators } from 'state/actions';\nimport type { Selectors } from 'state/selectors';\n\nexport interface TileMenuConnectOwnProps {\n quoteId: string;\n}\n\nexport type TileMenuConnectSelectorsKeys =\n | 'getQuoteInstrument'\n | 'getOptionLeg'\n | 'getOptionQuote'\n | 'getLegIdsOfMultilegOfOption'\n | 'getOptionDisplayPriceType'\n | 'getSwapStreamStatus'\n | 'getSwapState'\n | 'getSwapRfsStreamQuote'\n | 'getDisplayNearPrice'\n | 'getDisplayFarPrice'\n | 'getDisplayNearPoints'\n | 'getDisplayFarPoints'\n | 'getDisplaySwapPointsAllIn'\n | 'getDisplayMidRateAndMidPts';\n\nexport type TileMenuConnectSelectors = Pick;\n\nexport interface TileMenuConnectDispatchProps {\n closeTile(): void;\n\n duplicateTile(): void;\n\n resetTile(): void;\n}\n\nexport type TileMenuConnectActionCreatorsKeys =\n | 'tileClosedThunk'\n | 'tileDuplicateThunk'\n | 'partialResetTileThunk';\n\nexport type TileMenuConnectActionCreators = Pick;\n\nexport const mapDispatchToPropsTileMenu: MapDispatchToPropsHOF<\n TileMenuConnectDispatchProps,\n TileMenuConnectOwnProps,\n TileMenuConnectActionCreators\n> =\n ac =>\n (dispatch, { quoteId }) => ({\n closeTile: () => {\n dispatch(ac.tileClosedThunk(quoteId));\n },\n duplicateTile() {\n dispatch(ac.tileDuplicateThunk(quoteId));\n },\n resetTile() {\n dispatch(ac.partialResetTileThunk(quoteId));\n },\n });\n","import { connect } from 'react-redux';\nimport { withQuoteId } from 'components/contexts';\nimport { actionCreators } from 'state/actions';\nimport { TileMenu as TileMenuRaw } from './TileMenu';\nimport { mapDispatchToPropsTileMenu } from './connectTileMenu';\n\nconst connectTileMenu = connect(undefined, mapDispatchToPropsTileMenu(actionCreators));\n\nexport const TileMenu = withQuoteId(connectTileMenu(TileMenuRaw));\n","import { FormattedMessage } from 'react-intl';\nimport { Popover } from 'reactstrap';\nimport { RefToggle } from 'components/share/RefToggle';\nimport { TileClientPicker } from '../TileClientPicker';\nimport * as e2e from 'components/Form/Inputs/e2e';\n\nexport interface AccountChangedProps {\n accountName: string | null;\n disabled?: true;\n}\n\nexport const AccountChanged: React.FunctionComponent = ({\n accountName,\n disabled = false,\n}) =>\n accountName === null ? null : (\n \n {({ ref, target, isOpen, open, close, toggle }) => (\n
\n
\n \n {accountName}\n \n {disabled ? null : (\n <>\n \n \n \n {target != null && (\n \n \n \n )}\n \n )}\n
\n
\n )}\n
\n );\n","import type { MapStateToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\n\nexport interface AccountChangedConnectOwnProps {\n quoteId: string;\n}\n\nexport interface AccountChangedConnectStateProps {\n accountName: string | null;\n}\n\nexport type AccountChangedConnectSelectorsKeys =\n | 'getTileOverriddenClientId'\n | 'getUserClientById'\n | 'getClientName';\nexport type AccountChangedConnectSelectors = Pick;\n\nexport const mapStateToPropsAccountChanged: MapStateToPropsHOF<\n AccountChangedConnectStateProps,\n AccountChangedConnectOwnProps,\n AppState,\n AccountChangedConnectSelectors\n> =\n sl =>\n (state, { quoteId }) => {\n const accountId = sl.getTileOverriddenClientId(state, quoteId);\n if (accountId === null) {\n return {\n accountName: null,\n };\n }\n\n const client = sl.getUserClientById(state, accountId);\n const accountName = client ? sl.getClientName(state, client) : accountId;\n return {\n accountName,\n };\n };\n","import { connect } from 'react-redux';\nimport { selectors } from 'state/selectors';\nimport { withQuoteId } from 'components/contexts';\nimport { AccountChanged as AccountChangedRaw } from './AccountChanged';\nimport { mapStateToPropsAccountChanged } from './connectAccountChanged';\n\nexport const AccountChanged = withQuoteId(\n connect(mapStateToPropsAccountChanged(selectors))(AccountChangedRaw),\n);\n","import { InstrumentChooser } from './InstrumentChooser';\nimport { PredealChecks } from './PredealChecks';\nimport { NDCheckbox } from './NDCheckbox';\nimport { CurrencyPicker } from '../CurrencyPicker';\nimport { TileMenu } from './TileMenu';\nimport { AccountChanged } from './AccountChanged';\nimport styled from 'styled-components';\nimport { IntlComponentBoundary } from 'utils/i18n/IntlComponentBoundary';\nimport en from './locales/en.json';\nimport fr from './locales/fr.json';\n\nconst messagesMap = { en, fr };\n\nconst CurrencyContainer = styled.div`\n width: 28%;\n`;\n\nexport function TileHeader(): JSX.Element {\n return (\n \n \n
\n
\n \n \n
\n \n \n \n
\n \n \n
\n
\n
\n );\n}\n","import type { MapStateToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type { Instrument } from 'state/referenceData/referenceDataModel';\n\nexport interface TestUtilConnectOwnProps {\n quoteId: string;\n}\n\nexport interface TestUtilConnectStateProps {\n instrument: Instrument;\n rfsId: string | null;\n streamKey: string | null;\n lastExecutedQuoteId: string | null;\n}\n\nexport type TestUtilConnectSelectorsKeys =\n | 'getQuoteInstrument'\n | 'getTileCurrentStreamId'\n | 'getTileEspStreamId'\n | 'getTileLastExecutedQuoteId';\nexport type TestUtilConnectSelectors = Pick;\n\nexport const mapStateToPropsTestUtil: MapStateToPropsHOF<\n TestUtilConnectStateProps,\n TestUtilConnectOwnProps,\n AppState,\n TestUtilConnectSelectors\n> =\n sl =>\n (state, { quoteId }) => ({\n instrument: sl.getQuoteInstrument(state, quoteId),\n rfsId: sl.getTileCurrentStreamId(state, quoteId),\n streamKey: sl.getTileEspStreamId(state, quoteId),\n lastExecutedQuoteId: sl.getTileLastExecutedQuoteId(state, quoteId),\n });\n","import { connect } from 'react-redux';\nimport { selectors } from 'state/selectors';\nimport { mapStateToPropsTestUtil } from './connectTestUtil';\n\nexport const connectTestUtil = connect(mapStateToPropsTestUtil(selectors));\n","import type { Instrument } from 'state/referenceData/referenceDataModel';\nimport { withQuoteId } from 'components/contexts';\nimport { connectTestUtil } from './connect';\n\nexport interface TestUtilSpanProps {\n quoteId: string;\n instrument: Instrument;\n rfsId: string | null;\n streamKey: string | null;\n lastExecutedQuoteId: string | null;\n}\n\nexport const TestUtilSpanRaw: React.FunctionComponent = ({\n quoteId,\n instrument,\n rfsId,\n streamKey,\n lastExecutedQuoteId,\n}) => (\n \n);\n\nexport const TestUtilSpan = withQuoteId(connectTestUtil(TestUtilSpanRaw));\n","export const getNextFocus = (\n groupElement: HTMLElement,\n currentElement: HTMLElement,\n backwards?: boolean,\n) => {\n const elements = Array.from(\n groupElement.querySelectorAll('input, select, [data-input]'),\n )\n .filter(\n el =>\n !el.hasAttribute('readonly') &&\n !el.hasAttribute('disabled') &&\n !el.hasAttribute('data-skip-tab') &&\n el.tabIndex !== -1,\n )\n .map((el, i) => [el, i] as const)\n .sort(([el1, i1], [el2, i2]) => el1.tabIndex - el2.tabIndex || i1 - i2)\n .map(([el]) => el);\n const index = elements.indexOf(currentElement);\n const next =\n elements[\n backwards\n ? index - 1 === -1\n ? elements.length - 1\n : index - 1\n : (index + 1) % elements.length\n ];\n\n return next !== currentElement ? next : undefined;\n};\n","import { getNextFocus } from 'utils/getNextFocus';\n\nexport const changeFocusOnKeyDown: React.KeyboardEventHandler = ev => {\n if (ev.key !== 'Tab' && ev.key !== 'Enter') {\n return;\n }\n ev.preventDefault();\n\n const next = getNextFocus(ev.currentTarget, ev.target as HTMLElement, ev.shiftKey);\n if (next !== undefined) {\n next.focus();\n } else {\n (ev.target as HTMLElement).blur();\n }\n};\n","import { tileWrapper } from 'components/Form/Inputs/e2e';\nimport { TestUtilSpan } from 'components/share/TestUtilSpan';\nimport { changeFocusOnKeyDown } from 'components/share/changeFocusOnKeyDown';\n\nfunction onSubmitPreventDefault(e: React.FormEvent) {\n e.preventDefault();\n}\n\ninterface TileWrapperProps {\n children: React.ReactNode;\n}\n\nexport function TileWrapper({ children }: TileWrapperProps): JSX.Element {\n return (\n
\n \n
\n {children}\n
\n
\n );\n}\n","import { type ReactNode, useContext, useState } from 'react';\nimport { colWidth, tileContainerPadding as padding } from 'styles/constants';\nimport { DraggingContext } from '../contexts/Dragging';\nimport { SizeContext } from 'components/Form/Inputs/SizeContext';\nimport { TileWrapper } from './TileWrapper';\nimport { TooltipContainerContext } from 'components/contexts/TooltipContainer';\n\nconst colsStyles = [0, 1, 2, 3].map(cols => cols * colWidth).map(width => ({ width, padding }));\n\ninterface TileContainerColsProps {\n fixedColNumber: true;\n cols: number;\n}\n\ninterface TileContainerSizeProps {\n fixedColNumber: false;\n width: number;\n height?: number;\n}\n\ninterface ChildrenProp {\n children: ReactNode;\n}\n\nexport type TileContainerProps = TileContainerColsProps | TileContainerSizeProps;\n\nexport function TileContainer({\n children,\n ...props\n}: ChildrenProp & TileContainerProps): JSX.Element {\n const [container, setContainer] = useState(null);\n const dragging = useContext(DraggingContext);\n return (\n \n \n \n \n {children}\n \n
\n \n \n );\n}\n","import { TileHeader } from 'components/FxTileHeader';\nimport { CurrencyList } from 'components/CurrencyPicker';\nimport type { TileLayoutProps } from './typings';\nimport { TileContainer } from './TileContainer';\nimport { colWidth, tileContainerPadding } from 'styles/constants';\n\nexport const TileLayout: React.FunctionComponent = ({\n header = ,\n currencyList = ,\n ...props\n}) => {\n switch (props.layout) {\n case 'single-column':\n return (\n \n
\n {header}\n
\n {currencyList}\n {props.col1}\n
\n
\n
\n );\n\n case 'free-width':\n return (\n \n
\n {header}\n
\n {currencyList}\n {props.children}\n
\n
\n
\n );\n\n case 'two-columns':\n return (\n \n
\n \n {header}\n
\n {currencyList}\n {props.col1}\n
\n
\n
{props.col2}
\n
\n
\n );\n\n case 'three-columns':\n return (\n \n
\n
\n {header}\n
\n {currencyList}\n {props.col1}\n
\n
\n
{props.col2}
\n
{props.col3}
\n
\n
\n );\n\n case 'three-columns-double-extension':\n return (\n \n
\n \n {header}\n
\n {currencyList}\n {props.col1}\n
\n
\n {props.col2}\n
\n
\n );\n }\n};\n\nconst leftColWidth = colWidth - 2 * tileContainerPadding;\n\nconst leftColStyle = { minWidth: leftColWidth, width: leftColWidth };\n\ninterface ChildrenProp {\n children: React.ReactNode;\n}\n\nfunction LeftCol({ children }: ChildrenProp): JSX.Element {\n return (\n
\n {children}\n
\n );\n}\n\nconst doubleExtensionWidth = 3 * colWidth - leftColWidth - 2 * tileContainerPadding;\nconst doubleExtensionStyle = { width: doubleExtensionWidth };\n\nfunction Extension({ children }: ChildrenProp): JSX.Element {\n return (\n
\n {children}\n
\n );\n}\n","import { type ReactNode, createElement, Fragment } from 'react';\nimport type { ElementProps } from 'typings/utils';\n\nexport const tagWithProps =\n (tag: K) =>\n (constantProps: ElementProps = {}) =>\n (...nodes: readonly ReactNode[]) =>\n createElement(\n tag,\n constantProps,\n nodes.map((node, key) => createElement(Fragment, { key }, node)),\n );\n","import { FormattedMessage } from 'react-intl';\nimport styled from 'styled-components';\nimport { withQuoteId, withWorkspaceId } from 'components/contexts';\nimport { connectQuoteError, connectTileSize } from './connect';\nimport { CloseTile } from 'components/FxTileHeader/CloseTile';\nimport { TileLayout } from 'components/FxTileLayout';\nimport { tagWithProps } from 'components/share/tagWithProps';\nimport { IsInternal } from 'components/share/UserType';\nimport * as e2e from 'components/Form/Inputs/e2e';\n\nconst errorClass = 'd-flex flex-column my-auto align-items-center text-center';\n\nconst titleClass = 'font-weight-bold text-danger';\n\nconst span = tagWithProps('span');\nconst Danger = span({ className: 'text-danger' });\nconst DangerTitle = span({ className: titleClass });\n\nconst CloseTileContainer = styled.div`\n top: 0;\n right: 0;\n`;\n\nexport interface TileErrorProps {\n height: number;\n width: number;\n close?: boolean;\n reset(): void;\n showErrorDetails(): void;\n}\n\nconst br = { br:
};\nexport function TileErrorRaw({\n reset,\n close = false,\n showErrorDetails,\n height,\n width,\n}: TileErrorProps) {\n return (\n \n \n \n \n
\n error_outline\n \n {DangerTitle}\n \n \n {Danger}\n \n \n \n \n \n \n \n \n View SG log\n \n \n
\n
\n );\n}\n\nexport const TileError = withWorkspaceId(\n withQuoteId(connectTileSize(connectQuoteError(TileErrorRaw))),\n);\n","import type { MapStateToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport { assertUnreachable } from '@sgme/fp';\n\nexport interface SpinnerConnectOwnProps {\n quoteId: string;\n}\n\nexport interface SpinnerConnectStateProps {\n waiting: boolean;\n}\n\nexport type SpinnerConnectSelectorsKeys =\n | 'getTileState'\n | 'getCashPropertiesRequested'\n | 'getOptionPropertiesRequested'\n | 'getSwapPropertiesRequested'\n | 'getBulkPropertiesRequested'\n | 'getAccumulatorPropertiesRequested'\n | 'getOrderPropertiesRequested';\nexport type SpinnerConnectSelectors = Pick;\n\nexport const mapStateToPropsSpinner: MapStateToPropsHOF<\n SpinnerConnectStateProps,\n SpinnerConnectOwnProps,\n AppState,\n SpinnerConnectSelectors\n> =\n sl =>\n (state, { quoteId }) => {\n const { instrument } = sl.getTileState(state, quoteId);\n /**\n * @todo tile selector\n */\n switch (instrument) {\n case 'Cash':\n return { waiting: sl.getCashPropertiesRequested(state, quoteId) };\n case 'Option':\n return { waiting: sl.getOptionPropertiesRequested(state, quoteId) };\n case 'Swap':\n return { waiting: sl.getSwapPropertiesRequested(state, quoteId) };\n case 'Bulk':\n return { waiting: sl.getBulkPropertiesRequested(state, quoteId) };\n case 'Accumulator':\n return {\n waiting: sl.getAccumulatorPropertiesRequested(state, quoteId),\n };\n case 'Order':\n return { waiting: sl.getOrderPropertiesRequested(state, quoteId) };\n case 'BlotterOrder':\n /** @todo probably change this */\n return { waiting: false };\n default:\n assertUnreachable(instrument, `Unknown instrument reached in spinner map state to props`);\n }\n };\n","import styled from 'styled-components';\n\ninterface SpinnerProps {\n waiting: boolean;\n}\n\nconst SpinnerContainer = styled.div.attrs(({ waiting }) => ({\n className: `d-flex justify-content-center align-items-center position-absolute text-secondary ${\n waiting ? 'bg-primary-alt-alpha-xxl text-primary' : ''\n }`,\n}))`\n top: 6px;\n left: 6px;\n right: 6px;\n bottom: 6px;\n ${({ waiting }: SpinnerProps) =>\n waiting\n ? `z-index: 150;\n transition: opacity 1s ease-in 300ms, z-index 0ms linear 300ms;\n opacity: 1;`\n : `z-index: -10;\n opacity: 0;`}\n`;\n\nexport const SpinnerOverlay: React.FunctionComponent = ({ waiting }) => (\n \n
\n
\n);\n","import { connect } from 'react-redux';\nimport { selectors } from 'state/selectors';\nimport { mapStateToPropsSpinner } from './connectSpinner';\nimport { SpinnerOverlay } from './Spinner';\nimport { withQuoteId } from 'components/contexts';\n\nexport const TradeCaptureSpinner = withQuoteId(\n connect(mapStateToPropsSpinner(selectors))(SpinnerOverlay),\n);\n","import { FormattedMessage } from 'react-intl';\nimport { TradeCaptureSpinner } from 'components/share/TradeCaptureSpinner';\nimport { withQuoteId, withWorkspaceId } from 'components/contexts';\nimport { connectTileSize } from './connect';\nimport { TileLayout } from 'components/FxTileLayout';\n\nconst emptyTileClass =\n 'd-flex flex-grow-1 justify-content-center align-items-center text-center text-secondary';\n\nexport interface TileEmptyProps {\n height: number;\n width: number;\n children?: React.ReactNode;\n}\n\nconst br = { br:
};\nexport function TileEmptyRaw({ height, width, children }: TileEmptyProps) {\n return (\n \n {children ?? (\n <>\n \n
\n \n
\n \n )}\n
\n );\n}\n\nexport const TileEmpty = withWorkspaceId(withQuoteId(connectTileSize(TileEmptyRaw)));\n","import { type ReactNode, type ErrorInfo, PureComponent } from 'react';\n\ninterface CatchState {\n hasError: boolean;\n}\n\ninterface CatchProps {\n children: ReactNode;\n onCatch(error: Error, errorInfo: ErrorInfo): void;\n}\n\nexport class Catch extends PureComponent {\n public state = { hasError: false };\n public static getDerivedStateFromError() {\n return { hasError: true };\n }\n public componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n this.props.onCatch(error, errorInfo);\n }\n public render() {\n return this.state.hasError ? null : this.props.children;\n }\n}\n","import { connectCatchTile } from './connect';\nimport { Catch } from 'components/share/Catch';\nimport { withQuoteId } from 'components/contexts';\n\nexport const TileCatchError = withQuoteId(connectCatchTile(Catch));\n","import { type RefObject, useEffect, useRef } from 'react';\n\nexport function useElementSize(\n elementRef: RefObject,\n onSize: (size: DOMRectReadOnly) => void,\n) {\n const observer = useRef(\n new ResizeObserver(([{ contentRect }]) => {\n onSize(contentRect);\n }),\n );\n\n useEffect(() => {\n const currentObserver = observer.current;\n const currentElement = elementRef.current;\n\n if (currentElement) {\n currentObserver.observe(currentElement);\n }\n\n return () => {\n if (currentElement !== null) {\n currentObserver.unobserve(currentElement);\n }\n };\n }, [elementRef, observer]);\n}\n","import { useCallback, useContext, useRef } from 'react';\nimport { QuoteIdContext } from 'components/contexts';\nimport { useDispatch } from 'react-redux';\nimport { useElementSize } from './useElementSize';\nimport { gridItemSizeChangeThunk } from 'state/gridLayout/gridLayoutThunks';\nimport type { DispatchWithThunkExt } from 'state';\n\nexport function TileSizeMonitor({ children }: React.PropsWithChildren) {\n const quoteId = useContext(QuoteIdContext);\n const dispatch: DispatchWithThunkExt = useDispatch();\n const containerRef = useRef(null);\n const onResize = useCallback(\n (size: DOMRectReadOnly) => dispatch(gridItemSizeChangeThunk(quoteId, size)),\n [dispatch, quoteId],\n );\n useElementSize(containerRef, onResize);\n return
{children}
;\n}\nTileSizeMonitor.displayName = 'TileSizeMonitor';\n","import type { ReactNode } from 'react';\nimport { lazyWithRetry } from '../share/lazy';\nimport type { TileInstrument as StateTileInstrument } from 'state/referenceData/referenceDataModel';\nimport { createSwitchChildren } from 'components/share/SwitchChildren';\nimport { withQuoteId } from 'components/contexts';\nimport { connectTileInstrument } from './connect';\n\nconst FxCashTile = lazyWithRetry(() => import('components/FxCashTile'));\nconst FxSwapTile = lazyWithRetry(() => import('components/FxSwapTile'));\nconst FxOptionTile = lazyWithRetry(() => import('components/FxOptionTile/FxOptionTile'));\nconst FxAccumulatorTile = lazyWithRetry(() => import('components/FxAccumulatorTile'));\nconst FxOrderTile = lazyWithRetry(() => import('components/FxOrderTile'));\nconst OrderResultTileContent = lazyWithRetry(\n () => import('components/FxOrderTile/OrderResult/OrderResultTileContent'),\n);\n\nconst instrumentChildren: Record = {\n Cash: ,\n Swap: ,\n Option: ,\n Accumulator: ,\n Order: ,\n BlotterOrder: ,\n};\n\nexport const TileInstrumentRaw = createSwitchChildren(\n 'instrument',\n 'TileInstrument',\n instrumentChildren,\n);\n\nexport const TileInstrument = withQuoteId(connectTileInstrument(TileInstrumentRaw));\n\nconst FxOptionTileZoomed = lazyWithRetry(\n () => import('components/FxOptionTile/FxOptionTileZoomed'),\n);\nconst FxAccumulatorTileZoomed = lazyWithRetry(\n () => import('components/FxAccumulatorTile/FxAccumulatorTileZoomed'),\n);\n\nconst zoomedInstrumentChildren: Record<'Option' | 'Accumulator', ReactNode> = {\n Option: ,\n Accumulator: ,\n};\n\nexport const ZoomedTileInstrumentRaw = createSwitchChildren(\n 'instrument',\n 'ZoomedTileInstrument',\n zoomedInstrumentChildren,\n);\n\nexport const ZoomedTileInstrument = withQuoteId(connectTileInstrument(ZoomedTileInstrumentRaw));\n","import { withQuoteId } from 'components/contexts';\nimport { connectTileStatus } from './connect';\nimport { TileError, TileEmpty } from 'components/GenericTile';\n\ninterface TileStatusCommonProps {\n hasError: boolean;\n isEmpty: boolean;\n children: React.ReactNode;\n}\n\ninterface TileStatusError {\n error: true;\n empty?: false;\n close?: true;\n}\n\ninterface TileStatusEmpty {\n error?: false;\n empty: true;\n close?: false;\n}\n\nexport type TileStatusProps = TileStatusCommonProps & (TileStatusError | TileStatusEmpty);\n\nexport function TileStatusRaw({\n hasError,\n isEmpty,\n children,\n error = false,\n empty = false,\n close = false,\n}: TileStatusProps) {\n if (hasError && error) {\n return ;\n }\n\n if (isEmpty && empty) {\n return ;\n }\n\n return children as React.ReactElement;\n}\n\nexport const TileStatus = withQuoteId(connectTileStatus(TileStatusRaw));\n","import type React from 'react';\nimport { connectTileStatus } from './connect';\nimport { withQuoteId } from 'components/contexts';\n\ninterface QuoteStatusProps {\n hasError: boolean;\n isEmpty: boolean;\n error?: React.ReactElement;\n empty?: React.ReactElement;\n children: React.ReactNode;\n}\n\nexport const QuoteStatusRaw: React.FunctionComponent = ({\n hasError,\n isEmpty,\n error,\n empty,\n children,\n}) =>\n hasError && error ? error : isEmpty && empty ? empty : (children as React.ReactElement);\n\nexport const QuoteStatus = withQuoteId(connectTileStatus(QuoteStatusRaw));\n","import { FormattedMessage } from 'react-intl';\nimport { IsInternal } from 'components/share/UserType';\nimport { withQuoteId } from 'components/contexts';\nimport { connectQuoteError } from './connect';\nimport * as e2e from 'components/Form/Inputs/e2e';\n\nexport interface QuoteErrorProps {\n resetLabelId?: string;\n showErrorDetails(): void;\n reset(): void;\n}\n\nconst br = { br:
};\nconst QuoteErrorRaw: React.FunctionComponent = ({\n resetLabelId = 'tradecapture.error.resetView',\n reset,\n showErrorDetails,\n}) => (\n \n error_outline\n
\n \n
\n \n \n \n \n
\n \n \n View SG log\n \n \n \n);\n\nexport const QuoteError = withQuoteId(connectQuoteError(QuoteErrorRaw));\n","import styled from 'styled-components';\n\nconst Backdrop = styled.div`\n width: 3rem;\n height: 3rem;\n`;\n\nexport interface EmphasizedIconProps {\n icon: string;\n color: 'info' | 'success' | 'warning' | 'danger';\n}\n\nexport const EmphasizedIcon: React.FunctionComponent = ({ icon, color }) => (\n \n {icon}\n \n);\n","import type { MapStateToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type { Instrument } from 'state/referenceData/referenceDataModel';\n\nexport interface InstrumentConnectOwnProps {\n quoteId: string;\n}\n\nexport interface InstrumentConnectStateProps {\n instrument: Instrument;\n}\n\nexport type InstrumentConnectSelectorKeys = 'getTileState';\nexport type InstrumentConnectSelectors = Pick;\n\nexport const mapStateToPropsInstrument: MapStateToPropsHOF<\n InstrumentConnectStateProps,\n InstrumentConnectOwnProps,\n AppState,\n InstrumentConnectSelectors\n> =\n sl =>\n (state, { quoteId }) => ({\n instrument: sl.getTileState(state, quoteId).instrument,\n });\n","import type { MapStateToPropsHOF, MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\n\nexport interface ViewSgLogExecutionErrorConnectOwnProps {\n executionId: string | null;\n}\n\nexport interface ViewSgLogExecutionErrorConnectStateProps {\n hasError: boolean;\n}\n\nexport interface ViewSgLogExecutionErrorConnectDispatchProps {\n onShowErrorDetail: () => void;\n}\n\nexport type ViewSgLogExecutionErrorConnectSelectors = Selectors;\n\nexport const mapStateToPropsViewSgLogExecutionError: MapStateToPropsHOF<\n ViewSgLogExecutionErrorConnectStateProps,\n ViewSgLogExecutionErrorConnectOwnProps,\n AppState,\n ViewSgLogExecutionErrorConnectSelectors\n> =\n sl =>\n (state, { executionId }) => {\n if (executionId === null || !sl.hasExecution(state, executionId)) {\n return { hasError: false };\n }\n const executionState = sl.getExecutionById(state, executionId);\n return { hasError: executionState.status === 'Error' };\n };\n\nexport type ViewSgLogExecutionErrorConnectActionCreators = ActionCreators;\n\nexport const mapDispatchToPropsViewSgLogExecutionError: MapDispatchToPropsHOF<\n ViewSgLogExecutionErrorConnectDispatchProps,\n ViewSgLogExecutionErrorConnectOwnProps,\n ViewSgLogExecutionErrorConnectActionCreators\n> =\n ac =>\n (dispatch, { executionId }) => ({\n onShowErrorDetail() {\n dispatch(ac.displayExecutionErrorDetail(executionId!));\n },\n });\n","import type { MapStateToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport { fieldData } from 'utils/fieldSelectors';\n\nexport interface CurrencyPairConnectOwnProps {\n quoteId: string;\n}\n\nexport interface CurrencyPairConnectStateProps {\n ccy1: string;\n ccy2: string;\n}\n\n// you can whitelist selectors after implementation\nexport type CurrencyPairConnectSelectors = Selectors;\n/*\nexport type CurrencyPairConnectSelectorsKeys = 'aSelector'; // example\nexport type CurrencyPairConnectSelectors = Pick;\n*/\n\nexport const mapStateToPropsCurrencyPair: MapStateToPropsHOF<\n CurrencyPairConnectStateProps,\n CurrencyPairConnectOwnProps,\n AppState,\n CurrencyPairConnectSelectors\n> =\n sl =>\n (state, { quoteId }) => {\n const currencyPair = fieldData(sl.getTileCurrencyPair(state, quoteId)).data;\n if (currencyPair === null) {\n throw new Error(`Missing currency pair in tile ${quoteId}`);\n }\n const [ccy1, ccy2] = currencyPair.split('/');\n return { ccy1, ccy2 };\n };\n","import type { AppState } from 'state/model';\nimport type { ExecutionStatus } from 'state/executions/executionsStateModel';\nimport type { Instrument } from 'state/referenceData';\nimport type { Selectors } from 'state/selectors';\nimport type { MapDispatchToPropsHOF, MapStateToPropsHOF } from 'typings/redux-utils';\nimport type { ActionCreators } from 'state/actions';\n\ninterface ExecutionOverlayOwnProps {\n quoteId: string;\n overlay?: boolean;\n}\n\ninterface ExecutionOverlayStateCommonProps {\n overlay?: boolean;\n}\n\ninterface ExecutionOverlayStateWithExecutionProps {\n executionId: string;\n executionStatus: ExecutionStatus;\n instrument: Instrument;\n}\n\ninterface ExecutionOverlayStateWithoutExecutionProps {\n executionId: null;\n executionStatus: null;\n}\n\ninterface ExecutionOverlayDispatchProps {\n onDismiss: (executionId: string | null) => void;\n onViewLog: (executionId: string) => void;\n onClose: (executionId: string) => void;\n}\n\ntype ExecutionOverlayStateProps = ExecutionOverlayStateCommonProps &\n (ExecutionOverlayStateWithExecutionProps | ExecutionOverlayStateWithoutExecutionProps);\n\nexport const mapStateToPropsExecStatus: MapStateToPropsHOF<\n ExecutionOverlayStateProps,\n ExecutionOverlayOwnProps,\n AppState,\n Selectors\n> =\n sl =>\n (state: AppState, { quoteId }) => {\n if (quoteId === null) {\n return {\n executionId: null,\n executionStatus: null,\n };\n }\n const currentExecutionId = sl.getTileCurrentExecutionId(state, quoteId);\n\n if (currentExecutionId === null || !sl.hasExecution(state, currentExecutionId)) {\n return {\n executionId: null,\n executionStatus: null,\n };\n }\n\n const { status, instrument } = sl.getExecutionById(state, currentExecutionId);\n return {\n instrument,\n executionId: currentExecutionId,\n executionStatus: status === 'BackOfficeValidated' || status === 'NotIntegrated' ? 'Success' : status,\n };\n };\n\nexport const mapDispatchToPropsExecStatus: MapDispatchToPropsHOF<\n ExecutionOverlayDispatchProps,\n ExecutionOverlayOwnProps,\n ActionCreators\n> =\n ac =>\n (dispatch, { quoteId }) => ({\n onDismiss(executionId: string | null) {\n dispatch(\n executionId\n ? ac.orderErrorDismissedThunk(executionId, quoteId)\n : ac.blotterOrderToggleModeThunk(quoteId, 'Edit'),\n );\n },\n onViewLog(executionId) {\n dispatch(ac.displayExecutionErrorDetail(executionId));\n },\n onClose(executionId: string) {\n dispatch(ac.orderErrorDismissedThunk(executionId, quoteId));\n dispatch(ac.tileClosedThunk(quoteId));\n },\n });\n","import type { MapStateToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type { QuoteContributionType } from 'state/share/productModel/litterals';\n\ninterface TraderInfosConnectOwnProps {\n quoteId: string;\n}\n\ninterface TraderInfosConnectStateProps {\n traderId: string | null;\n contribution: QuoteContributionType | null;\n summary: string | null;\n}\n\n// export type TraderIdConnectSelectors = Pick<\n// Selectors,\n// 'getTileTraderId' | 'getOptionState' | 'getClientForTile'\n// >;\n\nexport const mapStateToPropsTraderInfos: MapStateToPropsHOF<\n TraderInfosConnectStateProps,\n TraderInfosConnectOwnProps,\n AppState,\n Selectors\n> =\n sl =>\n (state, { quoteId }) => {\n const traderId = sl.getTileTraderId(state, quoteId);\n if (traderId) {\n const ccyPair = sl.getTileCurrencyPair(state, quoteId);\n const client = sl.getClientForTile(state, quoteId);\n const instrument = sl.getQuoteInstrument(state, quoteId);\n const contribution = sl.getTileContribution(state, quoteId);\n\n return {\n traderId,\n contribution,\n summary: `${instrument} ${ccyPair.value} ${client.companyName}`, // + legs ?\n };\n } else {\n return noTrader;\n }\n };\n\nconst noTrader: TraderInfosConnectStateProps = {\n traderId: null,\n contribution: null,\n summary: null,\n};\n","import type { MapStateToPropsHOF, MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\nimport { isDefinedAndNonEmpty } from '@sgme/fp';\n\nexport interface MifidButtonConnectOwnProps {\n quoteId: string;\n}\n\nexport interface MifidButtonConnectStateProps {\n isDisabled: boolean;\n hasBeenUsed: boolean;\n}\n\nexport interface MifidButtonConnectDispatchProps {\n onRecordPrice(): void;\n}\n\n// you can whitelist selectors after implementation\nexport type MifidButtonConnectSelectors = Selectors;\n/*\nexport type MifidButtonConnectSelectorsKeys = 'aSelector'; // example\nexport type MifidButtonConnectSelectors = Pick;\n*/\n\nexport const mapStateToPropsMifidButton: MapStateToPropsHOF<\n MifidButtonConnectStateProps,\n MifidButtonConnectOwnProps,\n AppState,\n MifidButtonConnectSelectors\n> =\n sl =>\n (state, { quoteId }) => {\n const stream = sl.getTileRfsStream(state, quoteId);\n const isDisabled = stream === null || stream.status !== 'PRICING';\n\n const priceRecords = sl.getTilePriceRecords(state, quoteId);\n return {\n isDisabled,\n hasBeenUsed: isDefinedAndNonEmpty(priceRecords),\n };\n };\n\n// you can whitelist action creators after implementation\nexport type MifidButtonConnectActionCreators = ActionCreators;\n/*\nexport type MifidButtonConnectActionCreatorsKeys = 'optionLegPropertyChanged';\nexport type MifidButtonConnectActionCreators = Pick;\n*/\n\nexport const mapDispatchToPropsMifidButton: MapDispatchToPropsHOF<\n MifidButtonConnectDispatchProps,\n MifidButtonConnectOwnProps,\n MifidButtonConnectActionCreators\n> =\n ac =>\n (dispatch, { quoteId }) => ({\n onRecordPrice() {\n dispatch(ac.recordPriceEpic(quoteId));\n },\n });\n","import type { MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { ActionCreators } from 'state/actions';\nimport type { FormDomain } from 'state/referenceData';\nimport type { ValueKeys } from 'state/share/productModel';\n\nexport interface FieldErrorTooltipConnectOwnProps {\n quoteId: string;\n}\n\nexport interface FieldErrorTooltipConnectDispatchProps {\n setFieldError(instrument: I, field: ValueKeys, error: string): void;\n}\n\nexport type FieldErrorTooltipConnectActionCreators = ActionCreators;\n\n/** @todo use localValidate */\nexport const mapDispatchToPropsFieldError: MapDispatchToPropsHOF<\n FieldErrorTooltipConnectDispatchProps,\n FieldErrorTooltipConnectOwnProps,\n FieldErrorTooltipConnectActionCreators\n> =\n ac =>\n (dispatch, { quoteId }) => ({\n setFieldError(instrument, field, messageId) {\n dispatch(ac.localFieldValidationSet(instrument, quoteId, field, 'invalid', messageId));\n },\n });\n","import type { ActionCreators } from 'state/actions';\nimport type { ModeStatus, OrderResultMode } from 'state/blotter/blotterEntryModel';\nimport type { OrderStatus } from 'state/fxOrders/fxOrdersModel';\nimport type { AppState } from 'state/model';\nimport type { Selectors } from 'state/selectors';\nimport type { MapDispatchToPropsHOF, MapStateToPropsHOF } from 'typings/redux-utils';\n\ninterface ExecutionOverlayOwnProps {\n quoteId: string;\n}\n\ninterface ExecutionOverlayStateProps {\n modeStatus: ModeStatus;\n mode: OrderResultMode;\n}\n\ninterface ExecutionOverlayDispatchProps {\n onDismiss(): void;\n onViewLog(): void;\n onClose(): void;\n}\n\nfunction toModeStatus(orderStatus: OrderStatus): ModeStatus {\n switch (orderStatus) {\n case 'Pending':\n return 'Pending';\n case 'StillPending':\n return 'StillPending';\n case 'Timeouted':\n return 'StillPending';\n case 'Failed':\n return 'Error';\n case 'Success':\n return 'Success';\n default:\n return 'Idle';\n }\n}\n\nexport const mapStateToPropsOrderResultOverlay: MapStateToPropsHOF<\n ExecutionOverlayStateProps,\n ExecutionOverlayOwnProps,\n AppState,\n Selectors\n> =\n sl =>\n (state, { quoteId }) => {\n if (!sl.isInBlotterIntraday(state, quoteId)) {\n return {\n mode: 'Display',\n modeStatus: toModeStatus(sl.getOrderStatus(state, quoteId)),\n };\n }\n const order = sl.getBlotterOrderById(state, quoteId);\n return {\n mode: order.mode,\n modeStatus: order.modeStatus,\n };\n };\n\nexport const mapDispatchToPropsOrderResultOverlay: MapDispatchToPropsHOF<\n ExecutionOverlayDispatchProps,\n ExecutionOverlayOwnProps,\n ActionCreators\n> =\n ac =>\n (dispatch, { quoteId }) => ({\n onDismiss() {\n dispatch(ac.orderErrorDismissed(quoteId));\n dispatch(ac.blotterOrderToggleMode(quoteId, 'Edit'));\n },\n onViewLog() {\n dispatch(ac.displayPropertiesErrorDetail(quoteId));\n },\n onClose() {\n dispatch(ac.tileClosedThunk(quoteId));\n },\n });\n","import { connect } from 'react-redux';\nimport { selectors } from 'state/selectors';\nimport { actionCreators } from 'state/actions';\nimport {\n mapDispatchToPropsViewSgLogExecutionError,\n mapStateToPropsViewSgLogExecutionError,\n} from './connectViewSgLogExecutionError';\nimport { mapStateToPropsCurrencyPair } from './connectCurrencyPair';\nimport { mapStateToPropsExecStatus, mapDispatchToPropsExecStatus } from './connectExecutionStatus';\nimport { mapStateToPropsInstrument } from './connectInstrument';\nimport { mapStateToPropsTraderInfos } from './connectTraderInfos';\nimport { renderPropsConnect } from 'components/share/renderPropsConnect';\nimport { withQuoteId } from 'components/contexts';\nimport { mapDispatchToPropsMifidButton, mapStateToPropsMifidButton } from './connectMifidButton';\nimport { mapDispatchToPropsFieldError } from './connectFieldError';\nimport {\n mapStateToPropsOrderResultOverlay,\n mapDispatchToPropsOrderResultOverlay,\n} from './connectOrderResultOverlay';\n\nexport const connectViewSgLogExecutionError = connect(\n mapStateToPropsViewSgLogExecutionError(selectors),\n mapDispatchToPropsViewSgLogExecutionError(actionCreators),\n);\n\nexport const connectCurrencyPair = connect(mapStateToPropsCurrencyPair(selectors));\n\nexport const CurrencyPairRenderProps = withQuoteId(\n renderPropsConnect(mapStateToPropsCurrencyPair(selectors)),\n);\n\nexport const connectTileExecutionStatus = connect(\n mapStateToPropsExecStatus(selectors),\n mapDispatchToPropsExecStatus(actionCreators),\n);\n\nexport const connectInstrument = connect(mapStateToPropsInstrument(selectors));\n\nexport const connectTraderInfos = connect(mapStateToPropsTraderInfos(selectors));\n\nexport const connectMifidButton = connect(\n mapStateToPropsMifidButton(selectors),\n mapDispatchToPropsMifidButton(actionCreators),\n);\n\nexport const connectFieldError = connect(null, mapDispatchToPropsFieldError(actionCreators));\n\nexport const connectOrderOverlay = connect(\n mapStateToPropsOrderResultOverlay(selectors),\n mapDispatchToPropsOrderResultOverlay(actionCreators),\n);\n","import { connect } from 'react-redux';\nimport { FormattedMessage } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { assertUnreachable } from '@sgme/fp';\nimport { selectors } from 'state/selectors';\nimport type { ExecutionStatus as ExecutionStatusModel } from 'state/executions/executionsStateModel';\nimport { tileContainerPadding } from 'styles/constants';\n\nimport { withQuoteId } from '../contexts';\nimport { EmphasizedIcon } from './EmphasizedIcon';\nimport { createSwitchChildren, defaultSwitch } from './SwitchChildren';\nimport { mapStateToPropsInstrument } from './connect/connectInstrument';\nimport { connectTileExecutionStatus } from './connect';\nimport { tileInstruments, type Instrument } from 'state/referenceData/referenceDataModel';\nimport * as e2e from 'components/Form/Inputs/e2e';\n\nconst Overlay = styled.div`\n top: ${tileContainerPadding}px;\n bottom: ${tileContainerPadding}px;\n left: ${tileContainerPadding}px;\n right: ${tileContainerPadding}px;\n z-index: 8;\n`;\n\ninterface ExecutionOverlayProps {\n executionStatus: ExecutionStatusModel | null;\n overlay?: boolean;\n instrument?: Instrument;\n}\n\nconst ExecutionOverlay: React.FunctionComponent = ({\n executionStatus,\n overlay,\n instrument,\n}) => {\n if (executionStatus === null) {\n return null;\n }\n\n const color = getColorForStatus(executionStatus, instrument);\n const instrumentMessage =\n instrument === 'Order' || instrument === 'BlotterOrder'\n ? 'orderSubmission'\n : 'executionOverlay';\n return color !== undefined ? (\n \n
\n \n
\n

\n \n

\n

\n \n

\n \n ) : null;\n};\n\nconst getColorForStatus = (status: ExecutionStatusModel, instrument: Instrument | undefined) => {\n switch (status) {\n case 'Pending':\n case 'StillPending':\n return 'warning';\n case 'Success':\n return instrument === 'Order' ? 'info' : 'success';\n case 'BackOfficeValidated':\n case 'NotIntegrated':\n return 'success';\n case 'Error':\n case 'TimeoutedDeal':\n return 'danger';\n default:\n assertUnreachable(status, 'Execution status not handled');\n }\n};\n\nconst getSymbolForStatus = (status: ExecutionStatusModel) => {\n switch (status) {\n case 'Pending':\n case 'StillPending':\n return 'hourglass_empty';\n case 'Success':\n case 'BackOfficeValidated':\n case 'NotIntegrated':\n return 'check';\n case 'TimeoutedDeal':\n case 'Error':\n return 'warning';\n default:\n assertUnreachable(status, 'Execution status not handled');\n }\n};\n\nconst TileExecutionStatus = withQuoteId(connectTileExecutionStatus(ExecutionOverlay));\n\nconst InstrumentedOverlay = createSwitchChildren<'instrument', Instrument>(\n 'instrument',\n 'ExecutionStatusOverlay',\n {\n ...defaultSwitch(tileInstruments, ),\n Bulk: ,\n },\n);\n\nexport const ExecutionStatus = withQuoteId(\n connect(mapStateToPropsInstrument(selectors))(InstrumentedOverlay),\n);\n","import type { ReactNode } from 'react';\nimport { connectInstrument } from 'components/share/connect';\nimport type { Instrument } from 'state/referenceData/referenceDataModel';\nimport { InstrumentContext, withQuoteId } from '.';\n\ninterface AutoInstrumentProviderProps {\n instrument: Instrument;\n children: ReactNode;\n}\n\nconst AutoInstrumentProviderRaw: React.FunctionComponent = ({\n instrument,\n children,\n}) => {children};\n\nexport const AutoInstrumentProvider = withQuoteId(connectInstrument(AutoInstrumentProviderRaw));\n","import { Suspense } from 'react';\nimport { CurrencyPickerProvider } from 'components/CurrencyPicker';\nimport {\n TileSizeMonitor,\n TileCatchError,\n TileInstrument,\n TileStatus,\n TileEmpty,\n} from 'components/GenericTile';\nimport { TradeCaptureSpinner } from 'components/share/TradeCaptureSpinner';\nimport { ExecutionStatus } from 'components/share/ExecutionStatus';\nimport { AutoInstrumentProvider } from 'components/contexts/AutoInstrumentProvider';\n\nexport function TileRoot() {\n return (\n \n \n \n \n \n
\n
\n
\n
\n }\n >\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nTileRoot.displayName = 'TileRoot';\n","import { connect } from 'react-redux';\nimport type { AppState } from 'state/model';\nimport { getGridItemSize, getGridItemPosition } from 'state/gridLayout/selectors';\n\ninterface IGridDraggingPlaceholderOwnProps {\n gridItemId: string;\n gridId: string;\n}\n\ninterface IGridDraggingPlaceholderStateProps {\n top: number;\n left: number;\n height: number;\n width: number;\n}\n\ntype GridDraggingPlaceholderProps = IGridDraggingPlaceholderOwnProps &\n IGridDraggingPlaceholderStateProps;\n\nconst GridDraggingPlaceholderRaw: React.FunctionComponent = props => (\n
\n);\n\nfunction mapStateToProps(\n state: AppState,\n { gridItemId, gridId }: IGridDraggingPlaceholderOwnProps,\n): IGridDraggingPlaceholderStateProps {\n return {\n ...getGridItemSize(state, gridId, gridItemId),\n ...getGridItemPosition(state, gridId, gridItemId),\n };\n}\n\nexport const GridDraggingPlaceholder = connect(mapStateToProps)(GridDraggingPlaceholderRaw);\n","import type { GridItemPosition } from './gridLayoutModels';\n\nexport function positiveOrZeroPosition(position: GridItemPosition): GridItemPosition {\n return {\n top: position.top > 0 ? position.top : 0,\n left: position.left > 0 ? position.left : 0,\n };\n}\n","import {\n PureComponent,\n type GetDerivedStateFromProps,\n type ReactNode,\n type MouseEvent as ReactMouseEvent,\n} from 'react';\nimport styled, { type CSSProperties } from 'styled-components';\nimport type { GridItemPosition, GridItemSize } from 'state/gridLayout/gridLayoutModels';\nimport { colWidth } from 'styles/constants';\nimport { positiveOrZeroPosition } from 'state/gridLayout/positivePositions';\nimport { logger } from '../../logging/logger';\n\nexport const gridItemContainerClassName = 'position-absolute d-flex flex-column align-items-center';\n\nconst GridItemContainer = styled.div.attrs({\n className: gridItemContainerClassName,\n})`\n ${({ isDragging }: { isDragging?: boolean }) =>\n isDragging === true ? '' : 'transition: all 120ms ease-in-out;'}\n`;\n\ninterface GridItemProps {\n gridItemId: string;\n position: GridItemPosition;\n size: GridItemSize;\n zIndex?: number;\n noDragSelector?: string;\n children: ReactNode;\n\n onDrag(gridItemId: string, position: GridItemPosition): void;\n\n onDragEnd(): void;\n}\n\ninterface GridItemState {\n position: GridItemPosition;\n isDragging: boolean;\n originalPosition: GridItemPosition;\n originalCenterOfMass: GridItemPosition;\n}\n\nconst sensitivityThresholdPixel = 20;\ntype Events = 'mousemove' | 'mouseup';\n\nexport class GridItem extends PureComponent {\n // static window event listener collection\n private static windowEventListeners: Record = {\n mouseup: null,\n mousemove: null,\n };\n private isMouseDown = false;\n private offsetPosition: GridItemPosition | undefined;\n\n private static removeWindowEventListeners(warnOnLeak: boolean = false) {\n Object.entries(GridItem.windowEventListeners).forEach(([event, eventListener]) => {\n if (eventListener !== null) {\n if (warnOnLeak === true) {\n logger.logWarning(`GridItem: unexpected {event_s} event bound to window`, event);\n }\n window.removeEventListener(event, eventListener, true);\n GridItem.windowEventListeners[event as Events] = null;\n }\n });\n }\n\n private static addWindowEventListeners(listeners: Record) {\n // avoid leak between component instances or after dragend, should be noop\n GridItem.removeWindowEventListeners(true);\n Object.entries(listeners).forEach(([event, eventListener]) => {\n // store event listeners before attaching them to the window\n GridItem.windowEventListeners[event as Events] = eventListener;\n window.addEventListener(event, eventListener, { capture: true });\n });\n }\n\n private addWindowEventListeners = () =>\n GridItem.addWindowEventListeners({\n mouseup: this.dragEnd,\n mousemove: this.onMouseMove as EventListener,\n });\n\n private onMouseDown = (event: ReactMouseEvent) => {\n // ignore click if left button is not pressed\n if (event.buttons % 2 === 0) {\n return;\n }\n // ignore mousedown event if mousedown is pending\n // most likely to happen if other button is pressed during move\n if (this.isMouseDown === true) {\n return;\n }\n\n if (this.props.noDragSelector !== undefined) {\n // from target dom node (lowest dom node at mousedown coordinates)\n // to current target dom node (this component dom node)\n // depending on node tag and class, mousedown may not trigger drag\n let target = event.target as HTMLElement | null;\n while (target !== null && target !== event.currentTarget) {\n if (target.matches(this.props.noDragSelector)) {\n return;\n }\n target = target.parentElement;\n }\n }\n // consider mousedown a valid drag start\n this.dragStart(event);\n };\n\n private onMouseMove = (event: MouseEvent) => {\n // bound mousemove with incoherent state safety\n // might be deleted if warn is never fired\n if (this.isMouseDown === false) {\n GridItem.removeWindowEventListeners();\n logger.logWarning('mousemove bound on window without corresponding toggle registered');\n return;\n }\n // bound mousemove with incoherent button press\n // if left click is not pressed\n // mouseup event have been missed\n // happens when alt-tabing out of the browser during drag and drop\n if (event.buttons % 2 === 0) {\n return this.dragEnd(event);\n }\n return this.drag(event);\n };\n\n private dragStart = (event: ReactMouseEvent) => {\n // avoid event beeing propagated to children nodes\n event.stopPropagation();\n // bind all events\n this.addWindowEventListeners();\n // registers initial position as offset\n this.offsetPosition = { top: event.clientY, left: event.clientX };\n // don't update draggingStatus to true yet, it's better UX\n this.isMouseDown = true;\n };\n\n private drag = (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n if (this.offsetPosition === undefined) {\n logger.logWarning('[GridItem] offsetPosition should be set on mousedown event');\n this.offsetPosition = { top: 0, left: 0 };\n }\n const deltaPosition: GridItemPosition = {\n top: event.clientY - this.offsetPosition.top,\n left: event.clientX - this.offsetPosition.left,\n };\n // if component is not considered dragging, should we update draggingStatus\n if (this.state.isDragging === false) {\n // if Manhattan distance is below threshold, don't consider component as dragging\n if (Math.abs(deltaPosition.top) + Math.abs(deltaPosition.left) <= sensitivityThresholdPixel) {\n return;\n }\n }\n // update positions\n const centerOfMass = {\n top: this.state.originalCenterOfMass.top + deltaPosition.top,\n left: this.state.originalCenterOfMass.left + deltaPosition.left,\n };\n const position = {\n top: this.state.originalPosition.top + deltaPosition.top,\n left: this.state.originalPosition.left + deltaPosition.left,\n };\n this.setState(() => ({ position, isDragging: true }));\n\n // forward update to prop callback\n this.props.onDrag(this.props.gridItemId, positiveOrZeroPosition(centerOfMass));\n };\n\n private dragEnd = (event: Event) => {\n if (event !== undefined) {\n event.preventDefault();\n event.stopPropagation();\n }\n GridItem.removeWindowEventListeners();\n this.isMouseDown = false;\n if (this.state.isDragging === true) {\n this.setState(() => ({ isDragging: false }));\n this.props.onDragEnd();\n }\n };\n\n public static getDerivedStateFromProps: GetDerivedStateFromProps = (\n { position, size },\n prevState,\n ) => {\n // ignore props during drag\n if (prevState.isDragging === true) {\n return null;\n }\n\n // reset positions for next drag event\n const originalPosition = position;\n const calculatedOriginalCenterOfMass = {\n top: position.top + Math.floor(size.height / 2),\n left: position.left + Math.floor(colWidth / 2),\n };\n const originalCenterOfMass =\n prevState.originalCenterOfMass !== undefined &&\n (prevState.originalCenterOfMass.top !== calculatedOriginalCenterOfMass.top ||\n prevState.originalCenterOfMass.left !== calculatedOriginalCenterOfMass.left)\n ? calculatedOriginalCenterOfMass\n : prevState.originalCenterOfMass;\n // redraw with new position\n return { position, originalPosition, originalCenterOfMass };\n };\n\n constructor(props: GridItemProps) {\n super(props);\n const centerOfMass: GridItemPosition = {\n top: props.position.top + Math.floor(props.size.height / 2),\n left: props.position.left + Math.floor(colWidth / 2),\n };\n const originalPosition = props.position;\n const originalCenterOfMass = centerOfMass;\n this.state = {\n isDragging: false,\n position: props.position,\n originalPosition,\n originalCenterOfMass,\n };\n }\n\n public componentWillUnmount() {\n // clean in case the component is removed from the dom during drag\n GridItem.removeWindowEventListeners();\n }\n\n public render() {\n const { zIndex = 0 } = this.props;\n const { position, isDragging } = this.state;\n const style: CSSProperties = {\n ...positiveOrZeroPosition(position),\n zIndex: isDragging === true ? 500 + zIndex : undefined,\n };\n return (\n \n {this.props.children}\n \n );\n }\n}\n","import { connect } from 'react-redux';\nimport styled from 'styled-components';\nimport { v4 } from 'uuid';\nimport type { DispatchWithThunkExt } from 'state';\nimport { clientWorkspaceNewDefaultTileAddedThunk } from 'state/clientWorkspace/clientWorkspaceThunks';\nimport type { GridItemPosition } from 'state/gridLayout/gridLayoutModels';\nimport { defaultCashHeight, colWidth } from 'styles/constants';\nimport { gridItemContainerClassName } from './GridItem';\nimport { button } from 'components/Form/Inputs/e2e';\n\ninterface INewTileOwnProps {\n position: GridItemPosition;\n gridId: string;\n}\n\ninterface INewTileDispatchProps {\n addTile: () => void;\n}\n\ntype NewTileProps = INewTileOwnProps & INewTileDispatchProps;\n\nconst AddTileButton = styled.button`\n opacity: 0;\n\n &:hover {\n opacity: 1;\n }\n`;\n\nconst AddTileContainer = styled.div.attrs({\n className: `${gridItemContainerClassName} p-1 btn-group`,\n})`\n height: ${defaultCashHeight}px;\n width: ${colWidth}px;\n`;\n\nexport const NewTileRaw: React.FunctionComponent = ({ position, addTile }) => (\n \n \n add_circle_outline\n \n \n);\n\n// ///////////////////////////////////////////\n\nfunction mapDispatchToProps(\n dispatch: DispatchWithThunkExt,\n { position, gridId }: INewTileOwnProps,\n): INewTileDispatchProps {\n return {\n addTile: () => {\n dispatch(clientWorkspaceNewDefaultTileAddedThunk(gridId, v4(), position));\n },\n };\n}\n\nexport const NewTile = connect(null, mapDispatchToProps)(NewTileRaw);\n","import type { MapStateToPropsHOF, MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\nimport type { Collection } from 'typings/utils';\nimport type { GridItemPosition } from 'state/gridLayout/gridLayoutModels';\nimport type { ItemPosition } from 'state/freeLayout/freeLayoutModel';\n\nexport interface FreeLayoutContainerConnectOwnProps {\n tabId: string;\n}\n\nexport interface FreeLayoutContainerConnectStateProps {\n itemPositions: Collection;\n}\n\nexport interface FreeLayoutContainerConnectDispatchProps {\n onPositionChanged: (itemId: string, position: ItemPosition) => void;\n}\n\nexport type FreeLayoutContainerConnectSelectorsKeys = 'getItemPositionsByLayoutId';\nexport type FreeLayoutContainerConnectSelectors = Pick<\n Selectors,\n FreeLayoutContainerConnectSelectorsKeys\n>;\n\nexport const mapStateToPropsFreeLayoutContainer: MapStateToPropsHOF<\n FreeLayoutContainerConnectStateProps,\n FreeLayoutContainerConnectOwnProps,\n AppState,\n FreeLayoutContainerConnectSelectors\n> =\n sl =>\n (state, { tabId }) => ({\n itemPositions: sl.getItemPositionsByLayoutId(state, tabId),\n });\n\n// you can whitelist action creators after implementation\nexport type FreeLayoutContainerConnectActionCreators = ActionCreators;\n/*\nexport type FreeLayoutContainerConnectActionCreatorsKeys = 'optionLegPropertyChanged';\nexport type FreeLayoutContainerConnectActionCreators = Pick;\n*/\n\nexport const mapDispatchToPropsFreeLayoutContainer: MapDispatchToPropsHOF<\n FreeLayoutContainerConnectDispatchProps,\n FreeLayoutContainerConnectOwnProps,\n FreeLayoutContainerConnectActionCreators\n> =\n ac =>\n (dispatch, { tabId }) => ({\n onPositionChanged: (itemId: string, position: ItemPosition) => {\n dispatch(ac.freeLayoutItemPositionChanged(tabId, itemId, position));\n },\n });\n","import type { MapStateToPropsFactoryHOF, MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\nimport type { Collection } from 'typings/utils';\nimport type { GridItemPosition, GridItemSize, Columns } from 'state/gridLayout/gridLayoutModels';\nimport { colWidth } from 'styles/constants';\nimport { createSelector } from 'reselect';\n\nexport interface GridContainerConnectOwnProps {\n tabId: string;\n}\ninterface IGridContainerStateProps {\n gridItemPositions: Collection;\n gridItemSizes: Collection;\n style: { width: number };\n}\n\ninterface IGridContainerIdleStateProps {\n draggingStatus: 'IDLE';\n addTilePositions: readonly GridItemPosition[];\n}\n\ninterface IGridContainerDraggingStateProps {\n draggingStatus: 'DRAGGING';\n gridItemPositions: Collection;\n draggingGridItemId: string;\n}\n\ntype GridContainerConnectStateProps = IGridContainerStateProps &\n (IGridContainerIdleStateProps | IGridContainerDraggingStateProps);\n\nexport interface GridContainerConnectDispatchProps {\n onDrag(gridItemId: string, newPostion: GridItemPosition): void;\n onDragEnd(): void;\n}\n\n// you can whitelist selectors after implementation\nexport type GridContainerConnectSelectors = Selectors;\n/*\nexport type GridContainerConnectSelectorsKeys = 'aSelector'; // example\nexport type GridContainerConnectSelectors = Pick;\n*/\n\nfunction getColumnsNumber(columns: Columns) {\n return columns.length;\n}\n\nexport const mapStateToPropsGridContainer: MapStateToPropsFactoryHOF<\n GridContainerConnectStateProps,\n GridContainerConnectOwnProps,\n AppState,\n GridContainerConnectSelectors\n> = sl => () => {\n const getStyle = createSelector(getColumnsNumber, columnsNumber => ({\n width: (columnsNumber + 2) * colWidth,\n }));\n return (state, { tabId }) => {\n const gridState = sl.getGridById(state, tabId);\n if (gridState.draggingStatus === 'IDLE') {\n return {\n style: getStyle(gridState.gridLayout.columns),\n draggingStatus: gridState.draggingStatus,\n gridItemPositions: gridState.gridLayout.gridItemPositions,\n gridItemSizes: gridState.gridLayout.gridItemSizes,\n addTilePositions: gridState.addTilePositions,\n };\n } else if (gridState.draggingStatus === 'DRAGGING') {\n return {\n style: getStyle(gridState.gridLayout.columns),\n draggingStatus: gridState.draggingStatus,\n gridItemPositions: gridState.draggingGridLayout.gridItemPositions,\n gridItemSizes: gridState.draggingGridLayout.gridItemSizes,\n draggingGridItemId: gridState.draggingGridItemId,\n };\n } else {\n throw Error('Unknow dragging status');\n }\n };\n};\n\n// you can whitelist action creators after implementation\nexport type GridContainerConnectActionCreators = ActionCreators;\n/*\nexport type GridContainerConnectActionCreatorsKeys = 'optionLegPropertyChanged';\nexport type GridContainerConnectActionCreators = Pick;\n*/\n\nexport const mapDispatchToPropsGridContainer: MapDispatchToPropsHOF<\n GridContainerConnectDispatchProps,\n GridContainerConnectOwnProps,\n GridContainerConnectActionCreators\n> =\n ac =>\n (dispatch, { tabId }) => ({\n onDrag(gridItemId: string, newPostion: GridItemPosition) {\n dispatch(ac.gridItemDragThunk(tabId, gridItemId, newPostion));\n },\n onDragEnd() {\n dispatch(ac.gridItemDragEnd(tabId));\n },\n });\n","import type { MapStateToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type { TabType } from 'state/clientWorkspace';\n\nexport interface TabContentsConnectOwnProps {\n tabId: string;\n}\n\nexport interface TabContentsConnectStateProps {\n tabType: TabType;\n zoomedTile: string | null;\n}\n\n// export interface TabContentsConnectDispatchProps {\n// }\n\n// you can whitelist selectors after implementation\nexport type TabContentsConnectSelectors = Selectors;\n/*\nexport type TabContentsConnectSelectorsKeys = 'aSelector'; // example\nexport type TabContentsConnectSelectors = Pick;\n*/\n\nexport const mapStateToPropsTabContents: MapStateToPropsHOF<\n TabContentsConnectStateProps,\n TabContentsConnectOwnProps,\n AppState,\n TabContentsConnectSelectors\n> =\n sl =>\n (state, { tabId }) => ({\n tabType: sl.getTabType(state, tabId),\n zoomedTile: sl.getTabZoomedTile(state, tabId),\n });\n\n// you can whitelist action creators after implementation\n// export type TabContentsConnectActionCreators = ActionCreators;\n// /*\n// export type TabContentsConnectActionCreatorsKeys = 'optionLegPropertyChanged';\n// export type TabContentsConnectActionCreators = Pick;\n// */\n\n// export const mapDispatchToPropsTabContents: MapDispatchToPropsHOF<\n// TabContentsConnectDispatchProps,\n// TabContentsConnectOwnProps,\n// TabContentsConnectActionCreators\n// > = _ac => (_dispatch, _ownProps) => ({\n// });\n","import { connect } from 'react-redux';\nimport { selectors } from 'state/selectors';\nimport { actionCreators } from 'state/actions';\nimport {\n mapStateToPropsFreeLayoutContainer,\n mapDispatchToPropsFreeLayoutContainer,\n} from './connectFreeLayoutContainer';\nimport {\n mapStateToPropsGridContainer,\n mapDispatchToPropsGridContainer,\n} from './connectGridContainer';\nimport { mapStateToPropsTabContents } from './connectTabContents';\n\nexport const connectFreeLayoutContainer = connect(\n mapStateToPropsFreeLayoutContainer(selectors),\n mapDispatchToPropsFreeLayoutContainer(actionCreators),\n);\n\nexport const connectGridContainer = connect(\n mapStateToPropsGridContainer(selectors),\n mapDispatchToPropsGridContainer(actionCreators),\n);\n\nexport const connectTabContents = connect(mapStateToPropsTabContents(selectors));\n","import type { Collection } from 'typings/utils';\nimport type { GridItemPosition, GridItemSize } from 'state/gridLayout/gridLayoutModels';\nimport { WorkspaceIdProvider, QuoteIdProvider } from 'components/contexts';\nimport { DraggingProvider } from 'components/contexts/Dragging';\nimport { TileRoot } from 'components/GenericTile';\nimport { GridDraggingPlaceholder } from './GridDraggingPlaceholder';\nimport { NewTile } from './NewTile';\nimport { GridItem } from './GridItem';\nimport { connectGridContainer } from './connect';\n\ninterface GridContainerOwnProps {\n tabId: string;\n}\n\ninterface IGridContainerStateProps {\n gridItemPositions: Collection;\n gridItemSizes: Collection;\n style: { width: number };\n}\n\ninterface IGridContainerIdleStateProps {\n draggingStatus: 'IDLE';\n addTilePositions: readonly GridItemPosition[];\n}\n\ninterface IGridContainerDraggingStateProps {\n draggingStatus: 'DRAGGING';\n gridItemPositions: Collection;\n draggingGridItemId: string;\n}\n\ntype GridContainerStateProps = IGridContainerStateProps &\n (IGridContainerIdleStateProps | IGridContainerDraggingStateProps);\n\ninterface IGridContainerDispatchProps {\n onDrag(gridItemId: string, newPosition: GridItemPosition): void;\n onDragEnd(): void;\n}\n\ntype GridContainerProps = GridContainerOwnProps &\n GridContainerStateProps &\n IGridContainerDispatchProps;\n\nconst GridContainerRaw: React.FunctionComponent = ({\n tabId,\n gridItemPositions,\n gridItemSizes,\n onDrag,\n onDragEnd,\n ...props\n}) => (\n \n
\n {Object.entries(gridItemPositions).map(([quoteId, position]) => {\n const size = gridItemSizes[quoteId];\n if (position === undefined || size === undefined) {\n throw new Error(`Position and size for tile ${quoteId} should exist at this stage`);\n }\n return (\n \n \n \n \n \n \n \n );\n })}\n {props.draggingStatus === 'IDLE' ? (\n props.addTilePositions.map(position => (\n \n ))\n ) : (\n \n )}\n
\n
\n);\n\nexport const GridContainer = connectGridContainer(GridContainerRaw);\n","import { FormattedMessage } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { assertUnreachable } from '@sgme/fp';\nimport { tileContainerPadding } from 'styles/constants';\n\nimport { withQuoteId } from '../contexts';\nimport { EmphasizedIcon } from './EmphasizedIcon';\nimport * as e2e from 'components/Form/Inputs/e2e';\nimport { IsInternal } from './UserType/IsInternal';\nimport type { ModeStatus, OrderResultMode } from 'state/blotter/blotterEntryModel';\nimport { connectOrderOverlay } from './connect';\n\nconst Overlay = styled.div`\n top: ${tileContainerPadding}px;\n bottom: ${tileContainerPadding}px;\n left: ${tileContainerPadding}px;\n right: ${tileContainerPadding}px;\n z-index: 8;\n`;\n\ninterface ExecutionOverlayProps {\n modeStatus: ModeStatus;\n mode: OrderResultMode;\n quoteId: string;\n onDismiss(): void;\n onViewLog(): void;\n onClose(): void;\n}\n\nconst OrderResultOverlayRaw: React.FunctionComponent = ({\n mode,\n modeStatus,\n onDismiss,\n onViewLog,\n onClose,\n}) => {\n if (modeStatus === 'Idle') {\n return null;\n }\n\n const color = modeStatus === 'Error' ? 'danger' : modeStatus === 'Success' ? 'info' : 'warning';\n return (\n \n
\n \n
\n

\n \n

\n

\n \n

\n {modeStatus === 'Success' && (\n <>\n

\n {}\n

\n \n \n )}\n {modeStatus === 'Error' && (\n
\n \n \n \n \n
\n )}\n \n );\n};\n\nconst getSymbolForStatus = (status: Exclude) => {\n switch (status) {\n case 'Pending':\n case 'StillPending':\n return 'hourglass_empty';\n case 'Error':\n case 'Timeouted':\n return 'warning';\n case 'Success':\n return 'check';\n default:\n assertUnreachable(status, 'Execution status not handled');\n }\n};\n\nexport const OrderResultOverlay = withQuoteId(connectOrderOverlay(OrderResultOverlayRaw));\n","import { Component, Suspense } from 'react';\nimport { connectFreeLayoutContainer } from './connect';\nimport type { ItemPosition } from 'state/freeLayout/freeLayoutModel';\nimport { WorkspaceIdProvider, QuoteIdProvider } from '../contexts';\nimport type { Collection } from 'typings/utils';\nimport { GridItem } from './GridItem';\nimport { CurrencyPickerProvider } from '../CurrencyPicker';\nimport { TileCatchError, TileInstrument, TileStatus } from 'components/GenericTile';\nimport { colWidth, defaultOrderHeight, orderTileWidth } from 'styles/constants';\nimport { DraggingProvider } from '../contexts/Dragging';\nimport styled from 'styled-components';\nimport { OrderResultOverlay } from 'components/share/OrderResultOverlay';\nimport { TileLayout } from 'components/FxTileLayout';\n\nexport interface FreeLayoutContainerProps {\n tabId: string;\n itemPositions: Collection;\n onPositionChanged(itemId: string, position: ItemPosition): void;\n}\n\nexport interface FreeLayoutContainerState {\n dragState: Dragging | Idle;\n}\n\ninterface Dragging {\n isDragging: true;\n draggingItemId: string;\n positionDraggingItem: ItemPosition;\n}\ninterface Idle {\n isDragging: false;\n}\n\nconst defaultSize = { width: 0, height: 0 };\n\nconst GridItemsContainer = styled.div.attrs({ className: 'position-relative' })`\n z-index: 10;\n`;\n\nexport class FreeLayoutContainerRaw extends Component<\n FreeLayoutContainerProps,\n FreeLayoutContainerState\n> {\n public state: FreeLayoutContainerState = {\n dragState: { isDragging: false },\n };\n\n public onDrag = (itemId: string, position: ItemPosition) => {\n this.setState({\n dragState: {\n isDragging: true,\n draggingItemId: itemId,\n positionDraggingItem: {\n top: position.top,\n left: position.left - Math.floor(colWidth / 2),\n },\n },\n });\n };\n\n public onDragEnd = () => {\n if (this.state.dragState.isDragging) {\n this.props.onPositionChanged(\n this.state.dragState.draggingItemId,\n this.state.dragState.positionDraggingItem,\n );\n\n this.setState({ dragState: { isDragging: false } });\n }\n };\n\n public render() {\n const { itemPositions, tabId } = this.props;\n return (\n \n \n \n {Object.entries(itemPositions).map(([orderId, position], index) => {\n if (position === undefined) {\n throw new Error(`Position for item ${orderId} should exist at this stage`);\n }\n return (\n \n \n \n
\n \n \n \n \n
\n
\n
\n \n }\n >\n \n \n
\n
\n
\n
\n
\n \n );\n })}\n
\n
\n
\n );\n }\n}\n\nexport const FreeLayoutContainer = connectFreeLayoutContainer(FreeLayoutContainerRaw);\n","import { Suspense } from 'react';\nimport { connect } from 'react-redux';\nimport styled from 'styled-components';\nimport { lazyWithRetry } from 'components/share/lazy';\nimport { GridContainer } from './GridContainer';\nimport { getClientWorkspaceActiveTab } from 'state/clientWorkspace/selectors';\nimport type { AppState } from 'state/model';\nimport type { TabType } from 'state/clientWorkspace';\nimport { assertUnreachable } from '@sgme/fp';\nimport { FreeLayoutContainer } from './FreeLayoutContainer';\nimport { connectTabContents } from './connect';\nimport { ZoomedTileInstrument } from 'components/GenericTile/TileInstrument';\nimport { QuoteIdContext, WorkspaceIdContext } from 'components/contexts';\nimport { AutoInstrumentProvider } from 'components/contexts/AutoInstrumentProvider';\n\nconst Growls = lazyWithRetry(() => import('components/Growl/Growls'));\nconst BulkPricer = lazyWithRetry(() => import('components/BulkTrade'));\n\ninterface IClientWorkspaceStateProps {\n activeTabId: string | null;\n}\n\n// delegates scroll to GPU, avoids stutters during scrolls\nconst Workspace = styled.div`\n transform: translateZ(0);\n z-index: 0;\n`;\n\nfunction ClientWorkspaceRaw({ activeTabId }: IClientWorkspaceStateProps) {\n return (\n \n
\n
\n }\n >\n \n {activeTabId && }\n \n );\n}\n\ninterface TabContentsProps {\n tabId: string | null;\n tabType: TabType;\n zoomedTile: string | null;\n}\n\nconst TabContentsRaw: React.FunctionComponent = ({\n tabId,\n tabType,\n zoomedTile,\n}) => {\n if (tabId === null || tabType === null) {\n return null;\n }\n switch (tabType) {\n case 'tiles':\n if (zoomedTile !== null) {\n return (\n \n \n \n \n \n \n \n );\n }\n return (\n \n \n \n \n );\n case 'bulkTrade':\n return ;\n default:\n assertUnreachable(tabType, 'Tab type not handled');\n }\n};\n\nconst TabContents = connectTabContents(TabContentsRaw);\n\nconst mapStateToProps = (state: AppState): IClientWorkspaceStateProps => ({\n activeTabId: getClientWorkspaceActiveTab(state),\n});\n\nexport const ClientWorkspace = connect(mapStateToProps)(ClientWorkspaceRaw);\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _TooltipPopoverWrapper = _interopRequireWildcard(require(\"./TooltipPopoverWrapper\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar defaultProps = {\n placement: 'top',\n autohide: true,\n placementPrefix: 'bs-tooltip',\n trigger: 'hover focus'\n};\n\nvar Tooltip = function Tooltip(props) {\n var popperClasses = (0, _classnames.default)('tooltip', 'show', props.popperClassName);\n var classes = (0, _classnames.default)('tooltip-inner', props.innerClassName);\n return /*#__PURE__*/_react.default.createElement(_TooltipPopoverWrapper.default, (0, _extends2.default)({}, props, {\n popperClassName: popperClasses,\n innerClassName: classes\n }));\n};\n\nTooltip.propTypes = _TooltipPopoverWrapper.propTypes;\nTooltip.defaultProps = defaultProps;\nvar _default = Tooltip;\nexports.default = _default;","import { FormattedMessage } from 'react-intl';\nimport Tooltip from 'reactstrap/lib/Tooltip';\nimport { IntlComponentBoundary } from 'utils/i18n/IntlComponentBoundary';\nimport type { IBlotterErrorType } from 'state/blotter/blotterModel';\nimport { RefToggle } from 'components/share/RefToggle';\nimport { connectBlotterErrors } from './connect';\nimport en from './locales/en.json';\nimport fr from './locales/fr.json';\nimport { isEmpty } from '@sgme/fp';\n\nconst messagesMap = { en, fr };\n\nexport interface BlotterErrorProps {\n errors: readonly IBlotterErrorType[];\n}\n\nexport function BlotterErrorIndicatorRaw({ errors }: BlotterErrorProps) {\n if (isEmpty(errors)) {\n return null;\n }\n\n return (\n \n >\n {({ ref, isOpen, target, toggle }) => (\n \n error_outline{' '}\n \n {target !== null && (\n \n {errors.map((error, index) => (\n
\n \n
\n ))}\n
\n \n
\n \n )}\n
\n )}\n \n
\n );\n}\n\nexport const BlotterErrorIndicator = connectBlotterErrors(BlotterErrorIndicatorRaw);\n","import { Suspense, useCallback, useLayoutEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { lazyWithRetry } from '../share/lazy';\nimport { IntlComponentBoundary } from 'utils/i18n/IntlComponentBoundary';\nimport { connectLiveBlotterPanel } from './connect';\nimport { BlotterErrorIndicator } from './LiveBlotterErrorIndicator';\nimport type { BlotterTab } from 'state/blotter/blotterModel';\nimport { TooltipContainerRef } from 'components/contexts/TooltipContainer';\nimport en from './locales/en.json';\nimport fr from './locales/fr.json';\n\nconst messagesMap = { en, fr };\n\nexport interface LiveBlotterPanelProps {\n isOpen: boolean;\n height: number;\n activeTab: BlotterTab;\n onPanelHeightChanged(height: number): void;\n}\n\nconst BlotterContent = lazyWithRetry(() => import('./BlotterContent'));\nconst LiveBlotterTab = lazyWithRetry(() => import('./LiveBlotterTab'));\n\ninterface BlotterPanelContentProps {\n isOpen: boolean;\n}\n\nconst BlotterContainer = styled.div.attrs({\n className: 'd-flex flex-column bg-primary-alt',\n})`\n z-index: 10;\n`;\n\nconst BlotterHeader = styled.div.attrs({\n className: 'text-center border-top',\n})`\n min-height: 10px;\n cursor: row-resize;\n`;\n\nconst BlotterPanelContent = styled.div`\n ${props => (props.isOpen ? 'flex-grow: 1;' : '')}\n height: ${props => (props.isOpen ? 'inherit' : 0)};\n`;\n\nconst DragHandle = styled.i.attrs({\n className: 'icon icon-sm',\n children: 'drag_handle',\n})`\n cursor: row-resize !important;\n`;\n\nfunction LiveBlotterPanelRaw({\n isOpen,\n activeTab,\n height: initialHeight,\n onPanelHeightChanged,\n}: LiveBlotterPanelProps) {\n const [offsetPosition, setOffsetPosition] = useState(0);\n const [height, setHeight] = useState(initialHeight);\n const [isResizing, setIsResizing] = useState(false);\n\n const onMouseUp = useCallback(\n (event: MouseEvent) => {\n if (isResizing) {\n event.stopPropagation();\n event.preventDefault();\n setIsResizing(false);\n onPanelHeightChanged(height);\n }\n },\n [height, isResizing, onPanelHeightChanged],\n );\n\n const onMouseMove = useCallback(\n (event: MouseEvent) => {\n if (isResizing) {\n event.stopPropagation();\n event.preventDefault();\n if (event.buttons !== 1) {\n onMouseUp(event);\n return;\n }\n const delta = offsetPosition - event.clientY;\n const maxHeight = window.innerHeight - 200;\n setOffsetPosition(event.clientY);\n setHeight(Math.max(Math.min(height + delta, maxHeight), 200));\n }\n },\n [height, isResizing, offsetPosition, onMouseUp],\n );\n\n const onMouseDown = useCallback(\n (event: React.MouseEvent) => {\n if (isEventOnMatchingTarget(event, '[data-no-resize]')) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n setOffsetPosition(event.clientY);\n setIsResizing(true);\n },\n [setIsResizing, setOffsetPosition],\n );\n\n useLayoutEffect(() => {\n window.addEventListener('mousemove', onMouseMove, { capture: true });\n window.addEventListener('mouseup', onMouseUp, { capture: true });\n return () => {\n window.removeEventListener('mousemove', onMouseMove, { capture: true });\n window.removeEventListener('mouseup', onMouseUp, { capture: true });\n };\n }, [onMouseMove, onMouseUp, isResizing]);\n\n return (\n \n \n {ref => (\n \n {isOpen && (\n \n \n \n \n \n )}\n \n \n
\n \n }\n >\n {isOpen && (\n <>\n \n {/* key property added to blotter content to ensure ag grid component is\n regenerated when switching tabs and ag grid autoGroupColumnDef property\n is correctly set */}\n \n \n )}\n \n
\n
\n )}\n
\n
\n );\n}\n\nfunction isEventOnMatchingTarget(event: React.SyntheticEvent, selector: string) {\n let target = event.target as HTMLElement | null;\n while (target !== null && target !== event.currentTarget) {\n if (target.matches(selector)) {\n return true;\n }\n target = target.parentElement;\n }\n return false;\n}\n\nconst getContainerStyle = (isOpen: boolean, height: number): React.CSSProperties => ({\n height: isOpen ? `${height}px` : undefined,\n});\n\nexport const LiveBlotterPanel = connectLiveBlotterPanel(LiveBlotterPanelRaw);\n","import { FormattedMessage } from 'react-intl';\nimport * as e2e from 'components/Form/Inputs/e2e';\nimport { BlotterErrorIndicator } from './LiveBlotterErrorIndicator';\nimport { connectQuickBlotterButton } from './connect';\nimport styled from 'styled-components';\n\nconst liveBlotterCollapseIcon = {\n icon: expand_less,\n};\n\ninterface QuickBlotterButtonProps {\n isVisible: boolean;\n onShowBlotter(): void;\n}\n\nconst CenteredFloatingButton = styled.button.attrs({\n type: 'button',\n className:\n 'btn btn-primary-alt py-1 position-absolute text-nowrap mx-auto border border-bottom-0',\n})`\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n z-index: 10;\n`;\n\nconst QuickBlotterButtonRaw: React.FunctionComponent = ({\n isVisible,\n onShowBlotter,\n}) =>\n isVisible ? (\n \n {' '}\n \n \n ) : null;\n\nexport const QuickBlotterButton = connectQuickBlotterButton(QuickBlotterButtonRaw);\n","interface ChildrenProp {\n children: React.ReactNode;\n}\n\nexport type RenderWhenProps

= {\n [p in P]: boolean;\n};\n\nexport function renderWhen

(prop: P, whenTrue = true) {\n return function RenderWhenComp({\n [prop]: condition,\n children,\n }: RenderWhenProps

& ChildrenProp) {\n return condition === whenTrue ? (children as React.ReactElement) : null;\n };\n}\n\nexport const RenderWhen = renderWhen('condition');\n","import type { MapStateToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type { RenderWhenProps } from '../RenderWhen';\n\nexport interface UserHasAccessConnectOwnProps {}\n\ntype UserHasAccessConnectStateProps = RenderWhenProps;\n\nexport type UserHasAccessConnectSelectorsKeys = 'getUserHasAccess';\nexport type UserHasAccessConnectSelectors = Pick;\n\nexport const mapStateToPropsUserHasAccess: MapStateToPropsHOF<\n UserHasAccessConnectStateProps,\n UserHasAccessConnectOwnProps,\n AppState,\n UserHasAccessConnectSelectors\n> = sl => (state, _ownProps) => ({\n condition: sl.getUserHasAccess(state),\n});\n","import type { MapStateToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type { ProductAccessKeys } from 'state/referenceData/referenceDataModel';\nimport type { RenderWhenProps } from '../RenderWhen';\n\nexport interface UserHasProductsConnectOwnProps {\n products: readonly ProductAccessKeys[];\n}\n\ntype UserHasProductsConnectStateProps = RenderWhenProps;\n\nexport type UserHasProductsConnectSelectorsKeys = 'getProductsAccess';\nexport type UserHasProductsConnectSelectors = Pick;\n\nexport const mapStateToPropsUserHasProducts: MapStateToPropsHOF<\n UserHasProductsConnectStateProps,\n UserHasProductsConnectOwnProps,\n AppState,\n UserHasProductsConnectSelectors\n> =\n sl =>\n (state, { products }) => {\n const condition = Object.entries(sl.getProductsAccess(state)).every(\n ([product, access]) => hasAccessOrUnneeded(products, product, access),\n true,\n );\n return {\n condition,\n };\n };\n\nconst hasAccessOrUnneeded = (\n products: readonly string[],\n product: string,\n access: boolean,\n): boolean => (products.includes(product) ? access : true);\n","import type { MapStateToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport { type FeatureToggles, featureTogglesKeys } from 'state/referenceData/referenceDataModel';\nimport type { RenderWhenProps } from '../RenderWhen';\n\ntype FeatureToggleConnectOwnProps = Partial;\n\ntype FeatureToggleConnectStateProps = RenderWhenProps;\n\nexport type FeatureToggleConnectSelectorsKeys = 'getFeatureToggles';\nexport type FeatureToggleConnectSelectors = Pick;\n\nexport const mapStateToPropsFeatureToggle: MapStateToPropsHOF<\n FeatureToggleConnectStateProps,\n FeatureToggleConnectOwnProps,\n AppState,\n FeatureToggleConnectSelectors\n> = sl => (state, options) => {\n const toggles = sl.getFeatureToggles(state);\n let toggle: keyof FeatureToggles;\n for (toggle of featureTogglesKeys) {\n if (options[toggle] !== undefined && options[toggle] !== toggles[toggle]) {\n return { condition: false };\n }\n }\n return { condition: true };\n};\n\nexport const mapStateToPropsAtLeastFeatureToggle: MapStateToPropsHOF<\n FeatureToggleConnectStateProps,\n FeatureToggleConnectOwnProps,\n AppState,\n FeatureToggleConnectSelectors\n> = sl => (state, options) => {\n const toggles = sl.getFeatureToggles(state);\n let toggle: keyof FeatureToggles;\n for (toggle of featureTogglesKeys) {\n if (options[toggle] !== undefined && options[toggle] === toggles[toggle]) {\n return { condition: true };\n }\n }\n return { condition: false };\n};\n","import type { MapStateToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type { ProductName } from 'state/share/productModel';\n\nexport interface IsProductNameConnectOwnProps {\n quoteId: string;\n not?: true;\n products: readonly ProductName[];\n}\n\nexport interface IsProductNameConnectStateProps {\n condition: boolean;\n}\n\nexport interface IsProductNameConnectDispatchProps {}\n\n// you can whitelist selectors after implementation\nexport type IsProductNameConnectSelectors = Selectors;\n/*\nexport type IsProductNameConnectSelectorsKeys = 'aSelector'; // example\nexport type IsProductNameConnectSelectors = Pick;\n*/\n\nexport const mapStateToPropsIsProductName: MapStateToPropsHOF<\n IsProductNameConnectStateProps,\n IsProductNameConnectOwnProps,\n AppState,\n IsProductNameConnectSelectors\n> =\n sl =>\n (state, { quoteId, products, not = false }) => ({\n condition: products.includes(sl.getProductName(state, quoteId)!) !== not,\n });\n","import { connect } from 'react-redux';\nimport { mapStateToPropsUserHasAccess } from './connectUserHasAccess';\nimport { selectors } from 'state/selectors';\nimport { mapStateToPropsUserHasProducts } from './connectUserHasProducts';\nimport {\n mapStateToPropsFeatureToggle,\n mapStateToPropsAtLeastFeatureToggle,\n} from './connectFeatureToggle';\nimport { mapStateToPropsIsProductName } from './connectIsProductName';\n\nexport const connectUserHasAccess = connect(mapStateToPropsUserHasAccess(selectors));\n\nexport const connectUserHasProducts = connect(mapStateToPropsUserHasProducts(selectors));\n\nexport const connectFeatureToggle = connect(mapStateToPropsFeatureToggle(selectors));\n\nexport const connectAtLeastFeatureToggle = connect(mapStateToPropsAtLeastFeatureToggle(selectors));\n\nexport const connectIsProductName = connect(mapStateToPropsIsProductName(selectors));\n","import { RenderWhen } from './RenderWhen';\nimport {\n connectFeatureToggle,\n connectAtLeastFeatureToggle,\n connectUserHasAccess,\n connectUserHasProducts,\n connectIsProductName,\n} from './connect';\nimport { renderPropsConnect } from '../renderPropsConnect';\nimport { selectors } from 'state/selectors';\nimport { mapStateToPropsFeatureToggle } from './connect/connectFeatureToggle';\nimport { withQuoteId } from 'components/contexts';\n\n/**\n * Renders children only if the user has access to the application\n */\nexport const UserHasAccess = connectUserHasAccess(RenderWhen);\nUserHasAccess.displayName = 'UserHasAccess';\n\n/**\n * Renders children only all the passed feature toggles are active for the user\n */\nexport const FeatureToggle = connectFeatureToggle(RenderWhen);\n\n/**\n * Renders children if at least one of the passed feature toggles is active for the user\n */\nexport const FeatureToggleAtLeast = connectAtLeastFeatureToggle(RenderWhen);\n\n/**\n * Children is a render props children receiving `{ condition }` which is true if the feature toggle is active and false otherwise\n */\nexport const FeatureToggleRenderProp = renderPropsConnect(mapStateToPropsFeatureToggle(selectors));\n\n/**\n * Children will render only if user has access to all the products passed\n */\nexport const UserHasProducts = connectUserHasProducts(RenderWhen);\n\n/**\n * Children will be rendered only when product name is among the listed products (or not)\n */\nexport const IsProductName = withQuoteId(connectIsProductName(RenderWhen));\n","import { useContext } from 'react';\nimport { ThemeContext } from 'components/contexts/ThemeContext';\n\nexport const useTheme = () => {\n const { theme } = useContext(ThemeContext);\n return theme;\n};\n","import { useTheme } from 'components/share/hooks/useTheme';\nimport { getEnvironment } from '../../../configuration';\nimport { useIntl } from 'react-intl';\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n ['sgwt-help-center']: any;\n }\n }\n}\n\nexport const HelpCenterId = 'my-help-center';\n\nconst defaultSendTo = btoa(window.sgmeConfiguration.helpCenterSendMailto);\nexport function HelpCenter(): JSX.Element {\n const theme = useTheme();\n const { locale } = useIntl();\n return (\n

\n );\n}\n\nexport interface HelpCenterApi extends Element {\n open: () => void;\n category: (categoryId: string) => void;\n topic: (topicId: string) => void;\n search: (value: string, categoryId?: string) => void;\n form: () => void;\n chat: () => void;\n close: () => void;\n setIntroductionTour: (introductionTour: boolean) => void;\n setEmailEndpoint: (emailEndpoint: string) => void;\n setDefaultSendTo: (sendTo: string) => void;\n setAdditionalMessageInformation: (additionalMessageInformation?: { [key: string]: any }) => void;\n setMessageTopics: (messageTopics: object[]) => void;\n setLanguage: (language: string) => void;\n setI18n: (i18n: object) => void;\n setUser: (user: object) => void;\n setKnowledge: (knowledge: object) => void;\n setKnowledgeUrls: (knowledgeUrls: string[]) => void;\n setApplicationId: (applicationId: string) => void;\n setMessageOnly: (messageOnly: boolean) => void;\n setHandleVisible: (handleVisible: boolean) => void;\n setMailSubject: (mailSubject: string | null) => void;\n}\n\nconst helpCenterQuery = `#${HelpCenterId}`;\nexport const getHelpCenter = () => document.querySelector(helpCenterQuery)!;\n","import { connect } from 'react-redux';\nimport type { MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport { type ActionCreators, actionCreators } from 'state/actions';\nimport { Catch } from './share/Catch';\n\nexport interface AppCrashConnectOwnProps {}\n\nexport interface AppCrashConnectDispatchProps {\n onCatch(error: Error, errorInfo: React.ErrorInfo): void;\n}\n\nexport type AppCrashConnectActionCreators = ActionCreators;\n/*\nexport type AppCrashConnectActionCreatorsKeys = 'optionLegPropertyChanged';\nexport type AppCrashConnectActionCreators = Pick;\n*/\n\nexport const mapDispatchToPropsAppCrash: MapDispatchToPropsHOF<\n AppCrashConnectDispatchProps,\n AppCrashConnectOwnProps,\n AppCrashConnectActionCreators\n> = ac => dispatch => ({\n onCatch(_error: Error, errorInfo: React.ErrorInfo) {\n dispatch(ac.createAppCrashedAction('React AppCrash', errorInfo.componentStack + _error.stack));\n },\n});\n\nexport const AppCrash = connect(null, mapDispatchToPropsAppCrash(actionCreators))(Catch);\n","import { createContext, useContext, type ComponentType, type FunctionComponent } from 'react';\nconst defaultValue = '@@_MISSING_TABID_PROVIDER';\nconst TabIdContext = createContext(defaultValue);\nTabIdContext.displayName = 'TabIdContext';\nexport const { Provider: TabIdProvider, Consumer: TabIdConsumer } = TabIdContext;\n\nexport function withTabId<\n P extends {\n tabId: string;\n },\n>(Component: ComponentType

) {\n const WithTabId: FunctionComponent> = props => {\n const tabId = useContext(TabIdContext);\n return ;\n };\n return WithTabId;\n}\n","import { createSelector } from 'reselect';\nimport type { MapStateToPropsFactoryHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport { isEmpty } from '@sgme/fp';\n\nexport interface TabListConnectOwnProps {}\n\nexport interface TabListConnectStateProps {\n tabIds: readonly string[];\n activeTab: string | null;\n hasClients: boolean;\n}\n\nexport type TabListConnectSelectorsKeys =\n | 'getClientWorkspaceTabs'\n | 'getClientWorkspaceActiveTab'\n | 'getAllUserClients';\nexport type TabBarConnectSelectors = Pick;\n\nexport const mapStateToPropsTabList: MapStateToPropsFactoryHOF<\n TabListConnectStateProps,\n TabListConnectOwnProps,\n AppState,\n TabBarConnectSelectors\n> = sl => () => {\n const getTabIds = createSelector(sl.getClientWorkspaceTabs, Object.keys);\n const getClientsIds = createSelector(sl.getAllUserClients, Object.keys);\n return state => ({\n tabIds: getTabIds(state),\n activeTab: sl.getClientWorkspaceActiveTab(state),\n hasClients: !isEmpty(getClientsIds(state)),\n });\n};\n","import type { MapStateToPropsHOF, MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\nimport { getClientName } from 'state/share/clientSelectors';\n\nexport interface TabItemConnectOwnProps {\n tabId: string;\n}\n\nexport interface TabItemConnectStateProps {\n active: boolean;\n clientName: string;\n primeBroker: string | null;\n}\n\nexport interface TabItemConnectDispatchProps {\n selectTab(): void;\n}\n\nexport type TabItemConnectSelectorsKeys = 'getClientWorkspaceActiveTab';\nexport type TabItemConnectSelectors = Pick;\n\nexport const mapStateToPropsTabItem: MapStateToPropsHOF<\n TabItemConnectStateProps,\n TabItemConnectOwnProps,\n AppState,\n Selectors\n> =\n sl =>\n (state, { tabId }) => {\n const clientId = sl.getClientWorkspaceTab(state, tabId).clientId;\n const client = sl.getClient(state, clientId);\n return {\n clientName: getClientName(state, client),\n primeBroker: client.primeBroker,\n active: sl.getClientWorkspaceActiveTab(state) === tabId,\n };\n };\n\nexport type TabItemConnectActionCreatorsKeys = 'clientWorkspaceTabSwitched';\nexport type TabItemConnectActionCreators = Pick;\n\nexport const mapDispatchToPropsTabItem: MapDispatchToPropsHOF<\n TabItemConnectDispatchProps,\n TabItemConnectOwnProps,\n TabItemConnectActionCreators\n> =\n ac =>\n (dispatch, { tabId }) => ({\n selectTab: () => dispatch(ac.clientWorkspaceTabSwitched(tabId)),\n });\n","import type { MapStateToPropsHOF, MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\n\nexport interface TabNameConnectOwnProps {\n tabId: string;\n}\n\nexport interface TabNameConnectStateProps {\n name: string;\n}\n\nexport interface TabNameConnectDispatchProps {\n rename(name: string): void;\n}\n\n// you can whitelist selectors after implementation\nexport type TabNameConnectSelectors = Selectors;\n/*\nexport type TabNameConnectSelectorsKeys = 'aSelector'; // example\nexport type TabNameConnectSelectors = Pick;\n*/\n\nexport const mapStateToPropsTabName: MapStateToPropsHOF<\n TabNameConnectStateProps,\n TabNameConnectOwnProps,\n AppState,\n TabNameConnectSelectors\n> =\n sl =>\n (state, { tabId }) => ({\n name: sl.getClientWorkspaceTab(state, tabId).name,\n });\n\n// you can whitelist action creators after implementation\nexport type TabNameConnectActionCreators = ActionCreators;\n/*\nexport type TabNameConnectActionCreatorsKeys = 'optionLegPropertyChanged';\nexport type TabNameConnectActionCreators = Pick;\n*/\n\nexport const mapDispatchToPropsTabName: MapDispatchToPropsHOF<\n TabNameConnectDispatchProps,\n TabNameConnectOwnProps,\n TabNameConnectActionCreators\n> =\n ac =>\n (dispatch, { tabId }) => ({\n rename: name => dispatch(ac.clientWorkspaceTabRenamed(tabId, name)),\n });\n","import type { MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { ActionCreators } from 'state/actions';\n\nexport interface CloseTabButtonConnectOwnProps {\n tabId: string;\n}\n\nexport interface CloseTabButtonConnectDispatchProps {\n close(): void;\n}\n\nexport type CloseTabButtonConnectActionCreatorsKeys = 'clientWorkspaceTabClosedThunk';\nexport type CloseTabButtonConnectActionCreators = Pick<\n ActionCreators,\n CloseTabButtonConnectActionCreatorsKeys\n>;\n\nexport const mapDispatchToPropsCloseTabButton: MapDispatchToPropsHOF<\n CloseTabButtonConnectDispatchProps,\n CloseTabButtonConnectOwnProps,\n CloseTabButtonConnectActionCreators\n> =\n ac =>\n (dispatch, { tabId }) => ({\n close: () => dispatch(ac.clientWorkspaceTabClosedThunk(tabId)),\n });\n","import { connect } from 'react-redux';\nimport { selectors } from 'state/selectors';\nimport { actionCreators } from 'state/actions';\nimport { mapStateToPropsTabList } from './connectTabList';\nimport { mapStateToPropsTabItem, mapDispatchToPropsTabItem } from './connectTabItem';\nimport { mapStateToPropsTabName, mapDispatchToPropsTabName } from './connectTabName';\nimport { mapDispatchToPropsCloseTabButton } from './connectCloseTabButton';\n\nexport const connectTabList = connect(mapStateToPropsTabList(selectors));\n\nexport const connectTabItem = connect(\n mapStateToPropsTabItem(selectors),\n mapDispatchToPropsTabItem(actionCreators),\n);\n\nexport const connectTabName = connect(\n mapStateToPropsTabName(selectors),\n mapDispatchToPropsTabName(actionCreators),\n);\n\nexport const connectCloseTabButton = connect(\n null,\n mapDispatchToPropsCloseTabButton(actionCreators),\n);\n","import type { MapStateToPropsHOF, MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\n\nexport interface ChangeTabTypeButtonConnectOwnProps {\n tabId: string;\n}\n\nexport interface ChangeTabTypeButtonConnectStateProps {\n tabType: string;\n}\n\nexport interface ChangeTabTypeButtonConnectDispatchProps {\n toggleTabType(): void;\n}\n\nexport type ChangeTabTypeButtonConnectSelectorsKeys = 'getClientWorkspaceTab';\nexport type ChangeTabTypeButtonConnectSelectors = Pick<\n Selectors,\n ChangeTabTypeButtonConnectSelectorsKeys\n>;\n\nexport const mapStateToPropsChangeTabTypeButton: MapStateToPropsHOF<\n ChangeTabTypeButtonConnectStateProps,\n ChangeTabTypeButtonConnectOwnProps,\n AppState,\n ChangeTabTypeButtonConnectSelectors\n> =\n sl =>\n (state, { tabId }) => ({\n tabType: sl.getClientWorkspaceTab(state, tabId).type,\n });\n\nexport type ChangeTabTypeButtonConnectActionCreatorsKeys = 'clientWorkspaceTabTypeToggleThunk';\nexport type ChangeTabTypeButtonConnectActionCreators = Pick<\n ActionCreators,\n ChangeTabTypeButtonConnectActionCreatorsKeys\n>;\n\nexport const mapDispatchToPropsChangeTabTypeButton: MapDispatchToPropsHOF<\n ChangeTabTypeButtonConnectDispatchProps,\n ChangeTabTypeButtonConnectOwnProps,\n ChangeTabTypeButtonConnectActionCreators\n> =\n ac =>\n (dispatch, { tabId }) => ({\n toggleTabType: () => dispatch(ac.clientWorkspaceTabTypeToggleThunk(tabId)),\n });\n","import type { MapStateToPropsFactoryHOF, MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\nimport { createSelector } from 'reselect';\nimport type { Client } from 'state/referenceData/referenceDataModel';\nimport { strictValues } from 'utils/object';\n\nexport interface TabPopoverConnectOwnProps {\n tabId: string;\n}\n\nexport interface TabPopoverConnectStateProps {\n pinned: readonly number[];\n clients: readonly Client[];\n}\n\nexport interface TabPopoverConnectDispatchProps {\n onClientChange(companyId: string): void;\n}\n\n// you can whitelist selectors after implementation\nexport type TabPopoverConnectSelectors = Selectors;\n/*\nexport type TabPopoverConnectSelectorsKeys = 'aSelector'; // example\nexport type TabPopoverConnectSelectors = Pick;\n*/\n\nexport const mapStateToPropsTabPopover: MapStateToPropsFactoryHOF<\n TabPopoverConnectStateProps,\n TabPopoverConnectOwnProps,\n AppState,\n TabPopoverConnectSelectors\n> = sl => () => {\n const getClients = createSelector([sl.getAllUserClients], strictValues);\n\n return state => {\n const pinned = state.referenceData.pinnedCompanies;\n\n return {\n pinned,\n clients: getClients(state),\n };\n };\n};\n\n// you can whitelist action creators after implementation\nexport type TabPopoverConnectActionCreators = ActionCreators;\n/*\nexport type TabPopoverConnectActionCreatorsKeys = 'optionLegPropertyChanged';\nexport type TabPopoverConnectActionCreators = Pick;\n*/\n\nexport const mapDispatchToPropsTabPopover: MapDispatchToPropsHOF<\n TabPopoverConnectDispatchProps,\n TabPopoverConnectOwnProps,\n TabPopoverConnectActionCreators\n> =\n ac =>\n (dispatch, { tabId }) => ({\n onClientChange: (companyId: string) =>\n dispatch(ac.clientWorkspaceClientChangedThunk(tabId, companyId)),\n });\n","import { connect } from 'react-redux';\nimport { selectors } from 'state/selectors';\nimport { actionCreators } from 'state/actions';\nimport {\n mapStateToPropsChangeTabTypeButton,\n mapDispatchToPropsChangeTabTypeButton,\n} from './connectChangeTabTypeButton';\nimport { mapStateToPropsTabPopover, mapDispatchToPropsTabPopover } from './connectTabPopover';\n\nexport const connectChangeTabTypeButton = connect(\n mapStateToPropsChangeTabTypeButton(selectors),\n mapDispatchToPropsChangeTabTypeButton(actionCreators),\n);\n\nexport const connectTabPopover = connect(\n mapStateToPropsTabPopover(selectors),\n mapDispatchToPropsTabPopover(actionCreators),\n);\n","import { useCallback } from 'react';\nimport { connectChangeTabTypeButton } from './connect';\nimport { withTabId } from 'components/NavMenu';\nimport { FormattedMessage } from 'react-intl';\nimport { button } from 'components/Form/Inputs/e2e';\n\nexport interface ChangeTabTypeButtonProps {\n tabType: string;\n toggleTabType(): void;\n close(): void;\n}\n\nexport const ChangeTabTypeButtonRaw: React.FunctionComponent = ({\n tabType,\n toggleTabType,\n close,\n}) => {\n const onClick = useCallback(() => {\n toggleTabType();\n close();\n }, [close, toggleTabType]);\n return (\n

\n \n {' '}\n arrow_forward\n \n
\n );\n};\n\nexport const ChangeTabTypeButton = withTabId(connectChangeTabTypeButton(ChangeTabTypeButtonRaw));\n","import { ClientPicker, type ClientPickerProps } from 'components/ClientPicker/ClientPicker';\nimport { UserHasProducts } from 'components/share';\nimport { ChangeTabTypeButton } from './ChangeTabTypeButton';\nimport { connectTabPopover } from './connect';\nimport { withTabId } from '../TabId';\nimport { IntlComponentBoundary } from 'utils/i18n/IntlComponentBoundary';\nimport en from './locales/en.json';\nimport fr from './locales/fr.json';\n\nconst messagesMap = { en, fr };\n\nfunction TabPopoverRaw(props: Exclude) {\n return (\n \n \n \n \n }\n {...props}\n />\n \n );\n}\n\nexport const TabPopover = withTabId(connectTabPopover(TabPopoverRaw));\n","import { useCallback } from 'react';\nimport { withTabId } from 'components/NavMenu';\nimport { connectCloseTabButton } from './connect';\n\nexport interface CloseTabButtonProps {\n close(): void;\n}\n\nexport const CloseTabButtonRaw: React.FunctionComponent = ({ close }) => {\n const onClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n close();\n },\n [close],\n );\n return (\n \n close\n \n );\n};\n\nexport const CloseTabButton = withTabId(connectCloseTabButton(CloseTabButtonRaw));\n","import { PureComponent } from 'react';\nimport type { RenderPropChildren } from 'typings/utils';\n\ninterface HandlerState {}\ninterface HandlerProps {\n value: V;\n}\n\ntype HandlerFunction = (value: V) => ExposedHandler;\n\ntype ExposedHandler = (...args: T) => R;\n\nexport const createHandler = function createHandler(\n scopedHandler: HandlerFunction,\n) {\n return class Handler extends PureComponent<\n RenderPropChildren> & HandlerProps,\n HandlerState\n > {\n private handler: ExposedHandler = (...args) => {\n const partiallyAppliedHandler = scopedHandler(this.props.value);\n return partiallyAppliedHandler(...args);\n };\n private get childrenProps(): ExposedHandler {\n return this.handler;\n }\n public render() {\n return this.props.children(this.childrenProps);\n }\n };\n};\n","import type { RenderPropChildren } from 'typings/utils';\nimport { createHandler } from './createHandler';\nimport { useToggle } from './hooks/useToggle';\n\ninterface InputToggleProps {\n isEditable: boolean;\n onChange(str: string): void;\n}\ninterface InputToggleChildrenProps {\n isOpen: boolean;\n toggle(): void;\n close(delay?: number): void;\n onChange(str: string): void;\n}\n\nexport function InputToggle({\n children,\n ...props\n}: RenderPropChildren & InputToggleProps): JSX.Element {\n const [isOpen, toggle, close] = useToggle();\n return (\n \n {onChange => children({ onChange, isOpen, toggle, close })}\n \n );\n}\n\ninterface V {\n toggle(): void;\n onChange(s: string): void;\n}\n\nconst Handler = createHandler((value: V) => (str: string) => {\n value.toggle();\n if (str.length > 1) {\n value.onChange(str);\n }\n});\n","import { deriveStateOnChangedProps, type PreviousProps } from 'utils/stateProps';\nimport { input } from 'components/Form/Inputs/e2e';\nimport { Component, type FocusEvent, type KeyboardEvent, type ChangeEvent } from 'react';\n\nexport interface IInputProps {\n value: string;\n className: string;\n e2eHandle?: string;\n name?: string;\n autofocus?: boolean;\n onSubmit: (value: string) => void;\n onBlurPristine: () => void;\n onFocus?: (e: FocusEvent) => void;\n onBlur?: (e: FocusEvent) => void;\n}\n\ninterface IInputState extends PreviousProps {\n value: string;\n}\n\nexport class EnhancedInput extends Component {\n public static getDerivedStateFromProps = deriveStateOnChangedProps(\n (props: Readonly, _state: Readonly) =>\n props.autofocus === true\n ? null\n : {\n value: props.value,\n },\n );\n public state = { value: this.props.value };\n\n private onChange = (e: ChangeEvent) => this.setState({ value: e.target.value });\n\n private afterUserInput = () => {\n if (this.state.value !== this.props.value) {\n this.props.onSubmit(this.state.value);\n } else {\n this.props.onBlurPristine();\n }\n };\n\n private onBlur = (e: FocusEvent) => {\n this.afterUserInput();\n if (this.props.onBlur !== undefined) {\n this.props.onBlur(e);\n }\n };\n\n private onFocus = (e: FocusEvent) => {\n e.currentTarget.select();\n if (this.props.onFocus !== undefined) {\n this.props.onFocus(e);\n }\n };\n\n private onkeydown = (e: KeyboardEvent) => {\n switch (e.key) {\n case 'Escape': {\n e.persist();\n e.stopPropagation();\n const blur = e.currentTarget.blur.bind(e.currentTarget);\n this.setState({ value: this.props.value }, blur);\n break;\n }\n case 'Enter': {\n e.stopPropagation();\n this.afterUserInput();\n break;\n }\n }\n };\n\n public render() {\n return (\n \n );\n }\n}\n","import { InputToggle } from 'components/share/InputToggle';\nimport { EnhancedInput } from 'components/share/EnhancedInput';\nimport { withTabId } from 'components/NavMenu';\nimport { connectTabName } from './connect';\nimport styled from 'styled-components';\n\nexport interface TabNameProps {\n name: string;\n isEditable: boolean;\n rename(name: string): void;\n}\n\nconst displayClassName = 'form-control form-control-plaintext text-truncate p-2';\n\nconst inputClassName = 'form-control w-100';\n\nconst DisplayName = styled.strong.attrs({\n className: displayClassName,\n})`\n ${({ isEditable }: Pick) =>\n isEditable ? '' : 'pointer-events: none;'}\n`;\n\nexport const TabNameRaw: React.FunctionComponent = ({ name, rename, isEditable }) => (\n \n {({ isOpen, toggle, onChange }) =>\n isOpen ? (\n \n ) : (\n \n {name}\n \n )\n }\n \n);\n\nexport const TabName = withTabId(connectTabName(TabNameRaw));\n","import { Popover } from 'reactstrap';\nimport styled from 'styled-components';\nimport { RefToggle } from 'components/share/RefToggle';\nimport { withTabId, TabIdProvider } from 'components/NavMenu';\nimport { TabPopover } from '../TabPopover';\nimport { CloseTabButton } from './CloseTabButton';\nimport { TabName } from './TabName';\nimport { PrimeBrokerBadge } from '../PrimeBrokerBadge';\nimport { connectTabItem } from './connect';\nimport * as e2e from 'components/Form/Inputs/e2e';\n\nexport interface TabItemProps {\n showClose: boolean;\n tabId: string;\n active: boolean;\n clientName: string;\n primeBroker: string | null;\n selectTab(): void;\n}\n\nconst TabItemContainer = styled.div`\n max-width: 285px;\n`;\n\nexport const TabItemRaw: React.FunctionComponent = props => (\n >\n {popover => (\n <>\n \n \n
\n \n {props.showClose && }\n
\n \n
\n {props.clientName}\n \n
\n {!props.active ? null : (\n \n )}\n \n \n \n {popover.target !== null && (\n \n {/* popover uses a portal which breaks context propagation */}\n \n \n \n \n )}\n \n )}\n \n);\nTabItemRaw.displayName = 'TabItem';\n\nexport const TabItem = withTabId(connectTabItem(TabItemRaw));\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport styled from 'styled-components';\nimport { TabIdProvider } from 'components/NavMenu';\nimport { connectTabList } from './connect';\nimport { TabItem } from './TabItem';\n\nexport interface TabListProps {\n tabIds: readonly string[];\n activeTab: string | null;\n hasClients: boolean;\n}\n\nconst TabBar = styled.ul.attrs({\n className: 'overflow-hidden nav d-flex flex-nowrap',\n role: 'tablist',\n})`\n transition: margin-left 0.5s;\n`;\n\nexport const TabListRaw: React.FunctionComponent = ({ activeTab, tabIds }) => {\n const [offset, setOffset] = useState(0);\n const [maxOffset, setMaxOffset] = useState(0);\n\n const tabBarRef = useRef(null);\n\n useEffect(() => {\n if (tabBarRef.current !== null) {\n const newMaxOffset = Math.min(\n 0,\n tabBarRef.current.parentElement!.clientWidth -\n Array.from(tabBarRef.current.children).reduce(\n (p, c) => p + c.clientWidth,\n 64, // magic value which works well, don't ask why\n ),\n );\n if (offset === maxOffset || offset < newMaxOffset) {\n setOffset(newMaxOffset);\n }\n setMaxOffset(newMaxOffset);\n }\n }, [maxOffset, offset, tabIds]);\n useEffect(() => {\n if (activeTab !== null) {\n setOffset(\n maxOffset === 0\n ? 0\n : (maxOffset * tabIds.indexOf(activeTab)) / Math.max(1, tabIds.length - 1),\n );\n }\n }, [activeTab, maxOffset, tabIds]);\n\n const onWheel = useCallback(\n (e: React.WheelEvent) => {\n // Firefox will have deltaMode = DOM_DELTA_LINE (1)\n const delta = e.deltaMode === WheelEvent.DOM_DELTA_PIXEL ? e.deltaY / 2 : e.deltaY * 20;\n setOffset(Math.min(0, Math.max(maxOffset, offset - delta)));\n },\n [offset, maxOffset],\n );\n return (\n \n {tabIds.map(tabId => (\n \n 1} />\n \n ))}\n \n );\n};\nTabListRaw.displayName = 'TabList';\n\nexport const TabList = connectTabList(TabListRaw);\n","import type { MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { ActionCreators } from 'state/actions';\n\nexport interface AddTabButtonConnectOwnProps {}\nexport interface AddTabButtonConnectDispatchProps {\n addTab(): void;\n}\n\n// you can whitelist action creators after implementation\nexport type AddTabButtonConnectActionCreators = ActionCreators;\n/*\nexport type AddTabButtonConnectActionCreatorsKeys = 'optionLegPropertyChanged';\nexport type AddTabButtonConnectActionCreators = Pick;\n*/\n\nexport const mapDispatchToPropsAddTabButton: MapDispatchToPropsHOF<\n AddTabButtonConnectDispatchProps,\n AddTabButtonConnectOwnProps,\n AddTabButtonConnectActionCreators\n> = ac => dispatch => ({\n addTab: () => dispatch(ac.clientWorkspaceTabAddedThunk('tiles')),\n});\n","import type { MapStateToPropsHOF, MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\n\nexport interface LockButtonConnectOwnProps {}\n\nexport interface LockButtonConnectStateProps {\n canToggleLock: boolean;\n locked: boolean;\n}\n\nexport interface LockButtonConnectDispatchProps {\n toggleLock(): void;\n}\n\n// you can whitelist selectors after implementation\nexport type LockButtonConnectSelectors = Selectors;\n/*\nexport type LockButtonConnectSelectorsKeys = 'aSelector'; // example\nexport type LockButtonConnectSelectors = Pick;\n*/\n\nexport const mapStateToPropsLockButton: MapStateToPropsHOF<\n LockButtonConnectStateProps,\n LockButtonConnectOwnProps,\n AppState,\n LockButtonConnectSelectors\n> = sl => state => ({\n locked: !sl.userCanTrade(state),\n canToggleLock: sl.getUserInfo(state).canTrade,\n});\n\n// you can whitelist action creators after implementation\nexport type LockButtonConnectActionCreators = ActionCreators;\n/*\nexport type LockButtonConnectActionCreatorsKeys = 'optionLegPropertyChanged';\nexport type LockButtonConnectActionCreators = Pick;\n*/\n\nexport const mapDispatchToPropsLockButton: MapDispatchToPropsHOF<\n LockButtonConnectDispatchProps,\n LockButtonConnectOwnProps,\n LockButtonConnectActionCreators\n> = ac => dispatch => ({\n toggleLock: () => dispatch(ac.toggleLockTraddingThunk()),\n});\n","import type { MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { ActionCreators } from 'state/actions';\n\nexport interface UserPrefButtonConnectOwnProps {}\n\nexport interface UserPrefButtonConnectDispatchProps {\n toggleUserPref(): void;\n}\n\n// you can whitelist action creators after implementation\nexport type UserPrefButtonConnectActionCreators = ActionCreators;\n/*\nexport type UserPrefButtonConnectActionCreatorsKeys = 'optionLegPropertyChanged';\nexport type UserPrefButtonConnectActionCreators = Pick;\n*/\n\nexport const mapDispatchToPropsUserPrefButton: MapDispatchToPropsHOF<\n UserPrefButtonConnectDispatchProps,\n UserPrefButtonConnectOwnProps,\n UserPrefButtonConnectActionCreators\n> = ac => dispatch => ({\n toggleUserPref: () => dispatch(ac.userPreferenceToggleModal(true)),\n});\n","import type { MapStateToPropsHOF, MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\nimport type { SaveState } from 'state/clientWorkspace';\n\nexport interface SaveWorkspaceButtonConnectOwnProps {}\n\nexport interface SaveWorkspaceButtonConnectStateProps {\n saveWorkspaceState: SaveState;\n}\n\nexport interface SaveWorkspaceButtonConnectDispatchProps {\n saveWorkspace(): void;\n}\n\n// you can whitelist selectors after implementation\nexport type SaveWorkspaceButtonConnectSelectors = Selectors;\n/*\nexport type SaveWorkspaceButtonConnectSelectorsKeys = 'aSelector'; // example\nexport type SaveWorkspaceButtonConnectSelectors = Pick;\n*/\n\nexport const mapStateToPropsSaveWorkspaceButton: MapStateToPropsHOF<\n SaveWorkspaceButtonConnectStateProps,\n SaveWorkspaceButtonConnectOwnProps,\n AppState,\n SaveWorkspaceButtonConnectSelectors\n> = sl => state => ({\n saveWorkspaceState: sl.getSaveState(state),\n});\n\n// you can whitelist action creators after implementation\nexport type SaveWorkspaceButtonConnectActionCreators = ActionCreators;\n/*\nexport type SaveWorkspaceButtonConnectActionCreatorsKeys = 'optionLegPropertyChanged';\nexport type SaveWorkspaceButtonConnectActionCreators = Pick;\n*/\n\nexport const mapDispatchToPropsSaveWorkspaceButton: MapDispatchToPropsHOF<\n SaveWorkspaceButtonConnectDispatchProps,\n SaveWorkspaceButtonConnectOwnProps,\n SaveWorkspaceButtonConnectActionCreators\n> = ac => dispatch => ({\n saveWorkspace: () => dispatch(ac.saveWorkspaceThunk()),\n});\n","import type { MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { ActionCreators } from 'state/actions';\n\nexport interface MifidPanelButtonConnectOwnProps {}\n\nexport interface MifidPanelButtonConnectDispatchProps {\n toggleMifidPanel(): void;\n}\n\n// you can whitelist action creators after implementation\nexport type MifidPanelButtonConnectActionCreators = ActionCreators;\n/*\nexport type MifidPanelButtonConnectActionCreatorsKeys = 'optionLegPropertyChanged';\nexport type MifidPanelButtonConnectActionCreators = Pick;\n*/\n\nexport const mapDispatchToPropsMifidPanelButton: MapDispatchToPropsHOF<\n MifidPanelButtonConnectDispatchProps,\n MifidPanelButtonConnectOwnProps,\n MifidPanelButtonConnectActionCreators\n> = ac => (dispatch, _ownProps) => ({\n toggleMifidPanel() {\n dispatch(ac.toggleMifid2Panel());\n },\n});\n","import type { MapStateToPropsHOF, MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\nimport type { IWorkspaceTabs } from 'state/clientWorkspace';\n\nexport interface TabsMenuConnectOwnProps {}\n\nexport interface TabsMenuConnectStateProps {\n tabs: IWorkspaceTabs;\n activeTab: string | null;\n}\n\nexport interface TabsMenuConnectDispatchProps {}\n\n// you can whitelist selectors after implementation\nexport type TabsMenuConnectSelectors = Selectors;\n/*\nexport type TabsMenuConnectSelectorsKeys = 'aSelector'; // example\nexport type TabsMenuConnectSelectors = Pick;\n*/\n\nexport const mapStateToPropsTabsMenu: MapStateToPropsHOF<\n TabsMenuConnectStateProps,\n TabsMenuConnectOwnProps,\n AppState,\n TabsMenuConnectSelectors\n> = sl => (state, _ownProps) => ({\n activeTab: sl.getClientWorkspaceActiveTab(state),\n tabs: sl.getClientWorkspaceTabs(state),\n});\n\n// you can whitelist action creators after implementation\nexport type TabsMenuConnectActionCreators = ActionCreators;\n/*\nexport type TabsMenuConnectActionCreatorsKeys = 'optionLegPropertyChanged';\nexport type TabsMenuConnectActionCreators = Pick;\n*/\n\nexport const mapDispatchToPropsTabsMenu: MapDispatchToPropsHOF<\n TabsMenuConnectDispatchProps,\n TabsMenuConnectOwnProps,\n TabsMenuConnectActionCreators\n> = _ac => (_dispatch, _ownProps) => ({});\n","import type { MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { ActionCreators } from 'state/actions';\n\nexport interface TabMenuItemConnectOwnProps {\n tabId: string;\n}\n\nexport interface TabMenuItemConnectDispatchProps {\n onSwitchToTab(): void;\n}\n\n// you can whitelist action creators after implementation\nexport type TabMenuItemConnectActionCreators = ActionCreators;\n/*\nexport type TabMenuItemConnectActionCreatorsKeys = 'optionLegPropertyChanged';\nexport type TabMenuItemConnectActionCreators = Pick;\n*/\n\nexport const mapDispatchToPropsTabMenuItem: MapDispatchToPropsHOF<\n TabMenuItemConnectDispatchProps,\n TabMenuItemConnectOwnProps,\n TabMenuItemConnectActionCreators\n> =\n ac =>\n (dispatch, { tabId }) => ({\n onSwitchToTab() {\n dispatch(ac.clientWorkspaceTabSwitched(tabId));\n },\n });\n","import { connect } from 'react-redux';\nimport { selectors } from 'state/selectors';\nimport { actionCreators } from 'state/actions';\nimport { mapDispatchToPropsAddTabButton } from './connectAddTabButton';\nimport { mapStateToPropsLockButton, mapDispatchToPropsLockButton } from './connectLockButton';\nimport { mapDispatchToPropsUserPrefButton } from './connectUserPrefButton';\nimport {\n mapStateToPropsSaveWorkspaceButton,\n mapDispatchToPropsSaveWorkspaceButton,\n} from './connectSaveWorkspaceButton';\nimport { mapDispatchToPropsMifidPanelButton } from './connectMifidPanelButton';\nimport { mapStateToPropsTabsMenu } from './connectTabsMenu';\nimport { mapDispatchToPropsTabMenuItem } from './connectTabMenuItem';\nexport const connectAddTabButton = connect(null, mapDispatchToPropsAddTabButton(actionCreators));\n\nexport const connectLockButton = connect(\n mapStateToPropsLockButton(selectors),\n mapDispatchToPropsLockButton(actionCreators),\n);\n\nexport const connectUserPrefButton = connect(\n null,\n mapDispatchToPropsUserPrefButton(actionCreators),\n);\n\nexport const connectMifidPanelButton = connect(\n null,\n mapDispatchToPropsMifidPanelButton(actionCreators),\n);\n\nexport const connectSaveWorkspaceButton = connect(\n mapStateToPropsSaveWorkspaceButton(selectors),\n mapDispatchToPropsSaveWorkspaceButton(actionCreators),\n);\n\nexport const connectTabsMenu = connect(mapStateToPropsTabsMenu(selectors));\nexport const connectTabMenuItem = connect(null, mapDispatchToPropsTabMenuItem(actionCreators));\n","import { type ReactNode, useState } from 'react';\nimport { UncontrolledTooltip } from 'reactstrap';\nimport styled from 'styled-components';\nimport { button } from './e2e';\n\ninterface DisableableButtonWithTooltipProps {\n className: string;\n tooltipContents?: React.ReactNode;\n disabled: boolean;\n e2eHandle: string;\n children: ReactNode;\n onClick(): void;\n}\n\nconst DisabledButtonLike = styled.div`\n cursor: not-allowed;\n`;\n\nexport function DisableableButtonWithTooltip({\n className,\n tooltipContents,\n disabled,\n e2eHandle,\n children,\n onClick,\n}: DisableableButtonWithTooltipProps): JSX.Element {\n const [btnLikeRef, setBtnLikeRef] = useState(null);\n const [btnRef, setBtnRef] = useState(null);\n const tooltipTarget = disabled ? btnLikeRef : btnRef;\n return (\n <>\n {disabled ? (\n \n {children}\n \n ) : (\n \n {children}\n \n )}\n\n {tooltipTarget !== null && tooltipContents !== undefined && (\n \n {tooltipContents}\n \n )}\n \n );\n}\n","import { DisableableButtonWithTooltip } from 'components/Form/Inputs/DisableableButtonWithTooltip';\nimport { noop } from '@sgme/fp';\n\nexport interface MenuButtonProps {\n e2eHandle: string;\n disabled?: boolean;\n tooltip?: React.ReactNode;\n iconClassName?: string;\n color?: 'primary' | 'secondary';\n children: React.ReactNode;\n onClick?(): void;\n}\n\nconst buttonClassName = (color: string) =>\n `h-100 btn btn-flat-${color} btn-icon btn-nav btn-lg p-2`;\n\nexport function MenuButton({\n onClick = noop,\n disabled = false,\n tooltip,\n e2eHandle,\n color = 'primary',\n children,\n}: MenuButtonProps): JSX.Element {\n return (\n \n {children}\n \n );\n}\n","import { connectAddTabButton } from './connect';\nimport { MenuButton } from './MenuButton';\n\nexport interface AddTabButtonProps {\n addTab(): void;\n}\n\nexport const AddTabButtonRaw: React.FunctionComponent = ({ addTab }) => (\n \n add\n \n);\n\nexport const AddTabButton = connectAddTabButton(AddTabButtonRaw);\n","import { FormattedMessage } from 'react-intl';\nimport { connectLockButton } from './connect';\nimport { MenuButton } from './MenuButton';\n\nexport interface LockButtonProps {\n locked: boolean;\n canToggleLock: boolean;\n toggleLock(): void;\n}\n\nconst lockedTooltip = ;\n\nconst unlockedTooltip = ;\n\nconst br = { br:
};\nconst readOnly = ;\n\nexport const LockButtonRaw: React.FunctionComponent = ({\n locked,\n canToggleLock,\n toggleLock,\n}) => (\n \n \n {locked ? 'lock' : 'lock_open'}\n \n \n);\n\nexport const LockButton = connectLockButton(LockButtonRaw);\n","import { FormattedMessage } from 'react-intl';\nimport { MenuButton } from './MenuButton';\nimport { connectUserPrefButton } from './connect';\n\nexport interface UserPrefButtonProps {\n toggleUserPref(): void;\n}\n\nconst tooltip = ;\n\nexport const UserPrefButtonRaw: React.FunctionComponent = props => (\n \n settings\n \n);\n\nexport const UserPrefButton = connectUserPrefButton(UserPrefButtonRaw);\n","import { FormattedMessage } from 'react-intl';\nimport { lazyWithRetry } from 'components/share/lazy';\nimport { MenuButton } from './MenuButton';\nimport { useToggle } from 'components/share/hooks/useToggle';\nimport { IntlComponentBoundary } from 'utils/i18n/IntlComponentBoundary';\nimport en from 'components/Modals/locales/en.json';\nimport fr from 'components/Modals/locales/fr.json';\nimport { Suspense } from 'react';\n\nconst messagesMap = { en, fr };\n\nconst HelpRequestModal = lazyWithRetry(() => import('components/Modals/HelpRequestModal'));\n\nconst tooltip = ;\n\nexport function HelpRequestButton(): JSX.Element {\n const [isOpen, toggle, close] = useToggle();\n return (\n \n \n feedback\n \n {isOpen && (\n \n \n \n )}\n \n );\n}\n","import { useSelector } from 'react-redux';\nimport { getFeatureToggles } from 'state/referenceData/referenceDataSelectors';\n\nexport function useFeatureToggles() {\n return useSelector(getFeatureToggles);\n}\n","import type { SaveState } from 'state/clientWorkspace';\nimport { MenuButton } from './MenuButton';\nimport { connectSaveWorkspaceButton } from './connect';\nimport { FormattedMessage } from 'react-intl';\nimport { useFeatureToggles } from 'components/share/hooks/useFeatureToggle';\n\nexport interface SaveWorkspaceButtonProps {\n saveWorkspaceState: SaveState;\n saveWorkspace(): void;\n}\n\nconst icons: Record = {\n READY: save,\n PENDING: (\n
\n
\n
\n ),\n SUCCESS: check_circle,\n FAIL: highlight_off,\n};\nconst tooltipIds: Record = {\n READY: 'navMenuButtons.saveWorkspace',\n PENDING: undefined,\n SUCCESS: 'navMenuButtons.savedWorkspace',\n FAIL: undefined,\n};\n\nexport const SaveWorkspaceButtonRaw: React.FunctionComponent = ({\n saveWorkspace,\n saveWorkspaceState,\n}) => {\n const tooltipId = tooltipIds[saveWorkspaceState];\n const { allowSaveWorkspace } = useFeatureToggles();\n return (\n }\n >\n {icons[saveWorkspaceState]}\n \n );\n};\n\nexport const SaveWorkspaceButton = connectSaveWorkspaceButton(SaveWorkspaceButtonRaw);\n","import { MenuButton } from './MenuButton';\nimport { FormattedMessage } from 'react-intl';\nimport { connectMifidPanelButton } from './connect';\n\nexport interface MifidPanelButtonProps {\n toggleMifidPanel(): void;\n}\n\nexport const MifidPanelButtonRaw: React.FunctionComponent = ({\n toggleMifidPanel,\n}) => (\n }\n >\n perm_phone_msg\n \n);\n\nexport const MifidPanelButton = connectMifidPanelButton(MifidPanelButtonRaw);\n","import { memo } from 'react';\nimport { DropdownToggle, UncontrolledDropdown, DropdownMenu, DropdownItem } from 'reactstrap';\nimport { connectTabsMenu, connectTabMenuItem } from './connect';\nimport type { IWorkspaceTabs } from 'state/clientWorkspace';\nimport { MenuButton } from './MenuButton';\n\ninterface TabsMenuProps {\n tabs: IWorkspaceTabs;\n activeTab: string | null;\n}\n\ninterface TabMenuItemProps {\n tabName: string;\n selected: boolean;\n onSwitchToTab(): void;\n}\n\nfunction TabMenuItemRaw({ tabName, selected, onSwitchToTab }: TabMenuItemProps): JSX.Element {\n return (\n \n {tabName}\n \n );\n}\n\nconst TabMenuItem = connectTabMenuItem(TabMenuItemRaw);\n\nfunction TabsMenuRaw({ tabs, activeTab }: TabsMenuProps): JSX.Element {\n return (\n \n \n \n keyboard_arrow_down\n \n \n ({\n ...data,\n styles: {\n ...data.styles,\n overflow: 'auto',\n maxHeight: '50vh',\n marginTop: '25px',\n },\n }),\n },\n }}\n >\n {Object.entries(tabs).map(([tabId, tab]) => (\n \n ))}\n \n \n );\n}\n\nexport const TabsMenu = connectTabsMenu(memo(TabsMenuRaw));\n","import { TabList } from './TabList';\nimport * as MenuButtons from './MenuButtons';\nimport { UserHasAccess } from 'components/share/RenderWhen';\nimport { IntlComponentBoundary } from 'utils/i18n/IntlComponentBoundary';\nimport en from './locales/en.json';\nimport fr from './locales/fr.json';\n\nconst messagesMap = { en, fr };\n\nexport function NavMenu(): JSX.Element {\n return (\n \n \n \n );\n}\nNavMenu.displayName = 'NavMenu';\n","import { type ClassAttributes, Component, type Ref } from 'react';\nimport { noop } from '@sgme/fp';\n\n// https://sgithub.fr.world.socgen/DT-Widgets/sgwt-widgets/blob/master/src/sgwt-account-center/README.md\n\ninterface AccountCenterHTMLAttributes {\n authentication: 'sso-v1' | 'sg-connect-v2';\n 'available-languages'?: string; // string[] => .join(',');\n debug?: boolean;\n environment?: string;\n 'hide-current-language'?: boolean;\n 'hide-services-link'?: boolean;\n i18n?: string; // json\n language?: string; // default en\n mode?: 'sg-markets';\n 'navigate-as'?: boolean;\n 'navigate-as-user'?: string; // json extends {name: string;}\n 'navigate-as-list'?: string; // json extends Array<{name: string;}>\n user?: string; // json extends {name: string;}\n 'show-notification'?: boolean;\n 'producer-code'?: string;\n}\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n 'sgwt-account-center': ClassAttributes & AccountCenterHTMLAttributes;\n }\n }\n}\n\ninterface User {\n name: string;\n}\n\ninterface LanguageEvent {\n language: string;\n}\n// events\nconst languageChanged = 'sgwt-account-center--language-changed';\nconst navigateAsSelectUser = 'sgwt-account-center--navigate-as-select-user';\nconst ready = 'sgwt-account-center--ready';\nconst signIn = 'sgwt-account-center--sign-in';\nconst signOut = 'sgwt-account-center--sign-out';\nconst stopNavigationAs = 'sgwt-account-center--stop-navigation-as';\n\ninterface AccountCenterElementEventMap {\n [languageChanged]: CustomEvent;\n [navigateAsSelectUser]: CustomEvent;\n [ready]: Event;\n [signIn]: CustomEvent;\n [signOut]: Event;\n [stopNavigationAs]: CustomEvent;\n}\n\ntype AccountCenterElementListenersMap = {\n [K in keyof AccountCenterElementEventMap]: (e: AccountCenterElementEventMap[K]) => void;\n};\n\ninterface AccountCenterElement extends Element {\n addEventListener(\n type: K,\n listener: (this: AccountCenterElement, ev: AccountCenterElementEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions,\n ): void;\n removeEventListener(\n type: K,\n listener: (this: AccountCenterElement, ev: AccountCenterElementEventMap[K]) => any,\n options?: boolean | EventListenerOptions,\n ): void;\n changeLanguage(newLanguage: string): void;\n setUser(user: User): void;\n setNavigateAsUser(user: User): void;\n signOut(): void;\n stopNavigationAs(): void;\n}\n\ninterface AccountCenterAttributesProps {\n authentication: 'sso-v1' | 'sg-connect-v2';\n language?: string; // default en\n availableLanguages?: string[]; // string[] => .join(',');\n // i18n?: string; // json\n debug?: boolean;\n environment?: string;\n hideCurrentLanguage?: boolean;\n hideServicesLink?: boolean;\n mode?: 'sg-markets';\n showNotification?: boolean;\n user?: string; // json extends {name: string;}\n // ship last two only if navigate as is true\n navigateAs?: true;\n navigateAsUser?: User; // json extends {name: string;}\n navigateAsList?: User[]; // json extends Array<{name: string;}>\n producerCode?: string;\n}\ninterface AccountCenterCallBackProps {\n languageChanged(language: string): void;\n navigateAsSelectUser(event: User): void;\n ready(): void;\n signIn(event: User): void;\n signOut(): void;\n stopNavigationAs(event: User): void;\n}\n\nfunction ed({ detail }: CustomEvent): T {\n return detail;\n}\nfunction pluck(str: keyof T) {\n return (obj: T) => obj[str];\n}\n\nconst pluckLanguage = pluck('language');\n\nexport class AccountCenter extends Component<\n AccountCenterAttributesProps & Partial\n> {\n public static defaultProps: AccountCenterCallBackProps = {\n languageChanged: noop,\n navigateAsSelectUser: noop,\n ready: noop,\n signIn: noop,\n signOut: noop,\n stopNavigationAs: noop,\n };\n\n private accountCenterElement: AccountCenterElement | null = null;\n\n private events: AccountCenterElementListenersMap = {\n [languageChanged]: event => this.props.languageChanged!(pluckLanguage(ed(event))),\n [navigateAsSelectUser]: event => this.props.navigateAsSelectUser!(ed(event)),\n [ready]: () => this.props.ready!(),\n [signIn]: event => this.props.signIn!(ed(event)),\n [signOut]: () => this.props.signOut!(),\n [stopNavigationAs]: event => this.props.stopNavigationAs!(ed(event)),\n };\n\n private ref: Ref = accountCenterElement => {\n if (accountCenterElement !== null) {\n Object.entries(this.events).forEach(([type, event]) =>\n accountCenterElement.addEventListener(type as any, event),\n );\n }\n this.accountCenterElement = accountCenterElement;\n };\n public componentWillUnmount() {\n const accountCenterElement = this.accountCenterElement;\n if (accountCenterElement !== null) {\n Object.entries(this.events).forEach(([type, event]) =>\n accountCenterElement.removeEventListener(type as any, event),\n );\n }\n }\n\n public render() {\n return (\n \n user={json(this.props.user)} // ?: string; // json extends {name: string;}\n show-notification={bool(this.props.showNotification)}\n producer-code={this.props.producerCode}\n />\n );\n }\n}\n\nfunction bool(prop?: any): boolean | undefined {\n return prop === true ? true : undefined;\n}\nfunction json(prop?: any): string | undefined {\n return prop === undefined ? undefined : JSON.stringify(prop);\n}\nfunction join(prop?: string[]): string | undefined {\n return prop?.join(',');\n}\n","import { useCallback } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport type { NotificationZoneProps } from './typings';\nimport { getHelpCenter } from '../HelpCenter';\n\ninterface HelpCenterLinkProps {\n helpCenterLinkId?: string;\n}\n\nconst displayHelpCenterLink = (topicId: string) => getHelpCenter().topic(topicId);\n\nconst HelpCenterLink: React.FunctionComponent = ({ helpCenterLinkId }) => {\n const displayLink = useCallback(\n () => displayHelpCenterLink(helpCenterLinkId!),\n [helpCenterLinkId],\n );\n return helpCenterLinkId === undefined ? null : (\n \n \n \n );\n};\n\nexport const NotificationZone: React.FunctionComponent = ({ messages }) => (\n
\n
\n {messages.map((notif, index) => (\n
\n {' '}\n \n
\n ))}\n
\n
\n);\n","import type { MapStateToPropsHOF, MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\nimport type { NotificationZoneProps, Notification } from './typings';\n\nexport interface NotificationZoneConnectOwnProps {}\n\nexport interface NotificationZoneConnectDispatchProps {}\n\n// you can whitelist selectors after implementation\nexport type NotificationZoneConnectSelectors = Selectors;\n/*\nexport type NotificationZoneConnectSelectorsKeys = 'aSelector'; // example\nexport type NotificationZoneConnectSelectors = Pick;\n*/\n\nconst emptyArray: readonly Notification[] = [];\nconst streamingInitializingNotification: readonly Notification[] = [\n {\n messageId: 'header.notification.streamingInitialising',\n level: 'info',\n },\n];\nconst streamingUnavailableNotification: readonly Notification[] = [\n {\n messageId: 'header.notification.streamingUnavailable',\n level: 'danger',\n },\n];\nconst streamingDegradedNotification: readonly Notification[] = [\n {\n messageId: 'header.notification.streamingDegraded',\n level: 'warning',\n helpCenterLinkId: 'StreamingDegraded',\n },\n];\nconst userOfflineNotification: readonly Notification[] = [\n {\n messageId: 'header.notification.userOffline',\n level: 'warning',\n },\n];\nconst streamingNotOptimalNotification: readonly Notification[] = [\n {\n messageId: 'header.notification.streamingNotOptimal',\n level: 'warning',\n helpCenterLinkId: 'StreamingNotOptimal',\n },\n];\n\nexport const mapStateToPropsNotificationZone: MapStateToPropsHOF<\n NotificationZoneProps,\n NotificationZoneConnectOwnProps,\n AppState,\n NotificationZoneConnectSelectors\n> = sl => (state, _ownProps) => ({\n messages: sl.isUserOffline(state)\n ? userOfflineNotification\n : sl.isStreamingInitialising(state)\n ? streamingInitializingNotification\n : !sl.isStreamingConnected(state)\n ? streamingUnavailableNotification\n : sl.isStreamingDegraded(state)\n ? streamingDegradedNotification\n : sl.isStreamingNotOptimal(state)\n ? streamingNotOptimalNotification\n : emptyArray,\n});\n\n// you can whitelist action creators after implementation\nexport type NotificationZoneConnectActionCreators = ActionCreators;\n/*\nexport type NotificationZoneConnectActionCreatorsKeys = 'optionLegPropertyChanged';\nexport type NotificationZoneConnectActionCreators = Pick;\n*/\n\nexport const mapDispatchToPropsNotificationZone: MapDispatchToPropsHOF<\n NotificationZoneConnectDispatchProps,\n NotificationZoneConnectOwnProps,\n NotificationZoneConnectActionCreators\n> = _ac => (_dispatch, _ownProps) => ({});\n","import { NotificationZone as Component } from './NotificationZone';\nimport { mapStateToPropsNotificationZone } from './connect';\nimport { connect } from 'react-redux';\nimport { selectors } from 'state/selectors';\n\nexport const NotificationZone = connect(mapStateToPropsNotificationZone(selectors))(Component);\n","import { UserHasAccess } from 'components/share';\nimport { MifidPanel, HelpRequest, UserPref } from './MenuButtons';\nimport { IntlComponentBoundary } from 'utils/i18n/IntlComponentBoundary';\nimport en from './locales/en.json';\nimport fr from './locales/fr.json';\nimport { IsInternalSales } from 'components/share/UserType';\n\nconst messagesMap = { en, fr };\n\nexport function HeaderButtons() {\n return (\n \n \n
  • \n \n
  • \n
    \n\n
  • \n \n
  • \n\n \n
  • \n \n
  • \n
    \n
    \n );\n}\n","import { useCallback, useEffect } from 'react';\nimport { IntlComponentBoundary } from 'utils/i18n/IntlComponentBoundary';\nimport { AccountCenter } from './AccountCenter';\nimport { NotificationZone } from './NotificationZone';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { getEnvironment, producerCode } from '../../../configuration';\nimport { DropdownToggle, DropdownMenu, DropdownItem, UncontrolledDropdown } from 'reactstrap';\nimport { useTheme } from 'components/share/hooks/useTheme';\nimport { getMatomo } from 'bootstrap/matomo';\nimport en from './locales/header.en.json';\nimport fr from './locales/header.fr.json';\nimport { HeaderButtons } from 'components/NavMenu/HeaderButtons';\n\nconst messagesMap = { en, fr };\n\nconst availableLanguages = ['fr', 'en'];\nconst outIcon = { out: launch };\n\nexport function Header(): JSX.Element {\n const theme = useTheme();\n const { locale } = useIntl();\n\n useEffect(() => {\n getMatomo().setCustomVariable(1, 'locale', locale, 'visit');\n getMatomo().setCustomVariable(2, 'theme', theme, 'visit');\n getMatomo().trackPageView();\n }, [locale, theme]);\n\n const onOpenCalendar = useCallback(\n () => getMatomo().track('Workspace', 'Open cambist calendar'),\n [],\n );\n return (\n \n \n \n \n );\n}\n","import type { MapStateToPropsFactoryHOF, MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport { createSelector } from 'reselect';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\n\nexport interface MifidPanelConnectOwnProps {}\n\nexport interface MifidPanelConnectStateProps {\n isVisible: boolean;\n negociations: readonly string[];\n isCreatingNewNegotiation: boolean;\n}\n\nexport interface MifidPanelConnectDispatchProps {\n onClose(): void;\n onNewNegotiation(): void;\n}\n\nexport type MifidPanelConnectSelectorsKeys =\n | 'isMifid2PanelVisible'\n | 'getMifid2PanelNegotiations'\n | 'isStartingMifid2Negotiation';\nexport type MifidPanelConnectSelectors = Pick;\n\nexport const mapStateToPropsMifidPanel: MapStateToPropsFactoryHOF<\n MifidPanelConnectStateProps,\n MifidPanelConnectOwnProps,\n AppState,\n MifidPanelConnectSelectors\n> = sl => () => {\n const getNegotiationsIds = createSelector(sl.getMifid2PanelNegotiations, Object.keys);\n return state => ({\n isVisible: sl.isMifid2PanelVisible(state),\n negociations: getNegotiationsIds(state),\n isCreatingNewNegotiation: sl.isStartingMifid2Negotiation(state),\n });\n};\n\nexport type MifidPanelConnectActionCreatorsKeys =\n | 'toggleMifid2Panel'\n | 'mifid2StartNewNegotiationEpic';\nexport type MifidPanelConnectActionCreators = Pick<\n ActionCreators,\n MifidPanelConnectActionCreatorsKeys\n>;\n\nexport const mapDispatchToPropsMifidPanel: MapDispatchToPropsHOF<\n MifidPanelConnectDispatchProps,\n MifidPanelConnectOwnProps,\n MifidPanelConnectActionCreators\n> = ac => (dispatch, _ownProps) => ({\n onClose() {\n dispatch(ac.toggleMifid2Panel(false));\n },\n onNewNegotiation() {\n dispatch(ac.mifid2StartNewNegotiationEpic());\n },\n});\n","import type { MapStateToPropsHOF, MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { ActionCreators } from 'state/actions';\nimport type { AppState } from 'state/model';\nimport type { Mifid2NegotiationStatus } from 'state/mifidPanel';\n\nexport interface NegotiationConnectOwnProps {\n negotiationId: string;\n}\n\nexport interface NegotiationConnectStateProps {\n startTime: string;\n quotes: readonly string[];\n status: Mifid2NegotiationStatus;\n}\n\nexport interface NegotiationConnectDispatchProps {\n onRecordTimestamp(): void;\n onDealDone(): void;\n onDealMissed(): void;\n onRemoveNegotiation(): void;\n}\n\nexport type NegotiationConnectSelectorsKeys = 'getMifid2PanelNegotiation';\nexport type NegotiationConnectSelectors = Pick;\n\nexport const mapStateToPropsNegotiation: MapStateToPropsHOF<\n NegotiationConnectStateProps,\n NegotiationConnectOwnProps,\n AppState,\n NegotiationConnectSelectors\n> =\n sl =>\n (state, { negotiationId }) =>\n sl.getMifid2PanelNegotiation(state, negotiationId) ?? {\n startTime: '',\n quotes: [],\n status: 'Open',\n };\n\nexport type NegotiationConnectActionCreatorsKeys =\n | 'mifid2RecordTimestampEpic'\n | 'mifid2FinishNegotiation'\n | 'mifid2FinishNegotiation'\n | 'mifid2RemoveNegotiation';\nexport type NegotiationConnectActionCreators = Pick<\n ActionCreators,\n NegotiationConnectActionCreatorsKeys\n>;\n\nexport const mapDispatchToPropsNegotiation: MapDispatchToPropsHOF<\n NegotiationConnectDispatchProps,\n NegotiationConnectOwnProps,\n NegotiationConnectActionCreators\n> =\n ac =>\n (dispatch, { negotiationId }) => ({\n onRecordTimestamp() {\n dispatch(ac.mifid2RecordTimestampEpic(negotiationId));\n },\n onDealDone() {\n dispatch(ac.mifid2FinishNegotiation(negotiationId, true));\n },\n onDealMissed() {\n dispatch(ac.mifid2FinishNegotiation(negotiationId, false));\n },\n onRemoveNegotiation() {\n dispatch(ac.mifid2RemoveNegotiation(negotiationId));\n },\n });\n","import type { MapStateToPropsHOF } from 'typings/redux-utils';\nimport type { Selectors } from 'state/selectors';\nimport type { AppState } from 'state/model';\nimport type { Mifid2QuoteStatus } from 'state/mifidPanel';\n\nexport interface MifidQuoteConnectOwnProps {\n negotiationId: string;\n quoteId: string;\n}\n\nexport interface MifidQuoteConnectStateProps {\n timestamp: string;\n status: Mifid2QuoteStatus;\n}\n\nexport type MifidQuoteConnectSelectorsKeys = 'getMifid2Quote';\nexport type MifidQuoteConnectSelectors = Pick;\n\nexport const mapStateToPropsMifidQuote: MapStateToPropsHOF<\n MifidQuoteConnectStateProps,\n MifidQuoteConnectOwnProps,\n AppState,\n MifidQuoteConnectSelectors\n> =\n sl =>\n (state, { negotiationId, quoteId }) =>\n sl.getMifid2Quote(state, negotiationId, quoteId) ?? {\n status: 'Sent',\n timestamp: '',\n };\n","import { connect } from 'react-redux';\nimport { selectors } from 'state/selectors';\nimport { actionCreators } from 'state/actions';\n\nimport { mapStateToPropsMifidPanel, mapDispatchToPropsMifidPanel } from './connectMifidPanel';\nexport const connectMifidPanel = connect(\n mapStateToPropsMifidPanel(selectors),\n mapDispatchToPropsMifidPanel(actionCreators),\n);\n\nimport { mapStateToPropsNegotiation, mapDispatchToPropsNegotiation } from './connectNegotiation';\nexport const connectNegotiation = connect(\n mapStateToPropsNegotiation(selectors),\n mapDispatchToPropsNegotiation(actionCreators),\n);\n\nimport { mapStateToPropsMifidQuote } from './connectMifidQuote';\nexport const connectMifidQuote = connect(mapStateToPropsMifidQuote(selectors));\n","import { FormattedMessage, useIntl } from 'react-intl';\nimport type { Mifid2QuoteStatus } from 'state/mifidPanel';\nimport { connectMifidQuote } from './connect';\nimport { formatDateTimeWithLocale } from 'utils/dateFormats';\n\nexport interface MifidQuoteProps {\n quoteId: string;\n timestamp: string;\n status: Mifid2QuoteStatus;\n}\n\nconst MifidQuoteRaw: React.FunctionComponent = ({\n quoteId,\n timestamp,\n status,\n}) => {\n const { locale } = useIntl();\n return (\n \n \n \n );\n};\n\nexport const MifidQuote = connectMifidQuote(MifidQuoteRaw);\n","import { FormattedMessage, useIntl } from 'react-intl';\nimport { formatDateTimeWithLocale } from 'utils/dateFormats';\nimport { connectNegotiation } from './connect';\nimport type { Mifid2NegotiationStatus, Mifid2ClosedNegotiationStatus } from 'state/mifidPanel';\nimport styled from 'styled-components';\nimport { EmphasizedIcon } from 'components/share/EmphasizedIcon';\nimport { MifidQuote } from './MifidQuote';\nimport { isEmpty } from '@sgme/fp';\n\nexport interface NegotiationProps {\n negotiationId: string;\n startTime: string;\n quotes: readonly string[];\n status: Mifid2NegotiationStatus;\n onRecordTimestamp(): void;\n onDealDone(): void;\n onDealMissed(): void;\n onRemoveNegotiation(): void;\n}\n\nconst OverlayDiv = styled.div`\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n z-index: 1;\n`;\n\nconst Overlay: React.FunctionComponent<{\n negotiationId: string;\n status: Mifid2ClosedNegotiationStatus;\n onRemoveNegotiation(): void;\n}> = ({ negotiationId, status: [status, hasFailed], onRemoveNegotiation }) => (\n \n \n \n \n \n \n {!hasFailed ? (\n (\n \n {children}\n \n ),\n }}\n />\n ) : (\n <>\n \n \n \n \n \n )}\n \n \n);\n\nconst NegotiationRaw: React.FunctionComponent = ({\n negotiationId,\n startTime,\n quotes,\n status,\n onRecordTimestamp,\n onDealDone,\n onDealMissed,\n onRemoveNegotiation,\n}) => {\n const { locale } = useIntl();\n return (\n
    \n {status !== 'Open' && }\n

    \n \n

    \n

    \n \n

    \n
      \n {quotes.map((quote, idx) => (\n
    • \n \n
    • \n ))}\n
    \n \n \n \n
    \n \n \n \n \n
    \n
    \n );\n};\n\nexport const Negotiation = connectNegotiation(NegotiationRaw);\n","import { FormattedMessage } from 'react-intl';\nimport styled from 'styled-components';\nimport { IntlComponentBoundary } from 'utils/i18n/IntlComponentBoundary';\nimport { connectMifidPanel } from './connect';\nimport { Negotiation } from './Negotiation';\nimport en from './locales/en.json';\nimport fr from './locales/fr.json';\n\nconst messagesMap = { en, fr };\n\nexport interface MifidPanelProps {\n isVisible: boolean;\n negociations: readonly string[];\n isCreatingNewNegotiation: boolean;\n onClose(): void;\n onNewNegotiation(): void;\n}\n\nconst Container = styled.div`\n width: 400px;\n z-index: 175;\n`;\n\nfunction MifidPanelRaw({\n isVisible,\n negociations,\n isCreatingNewNegotiation,\n onClose,\n onNewNegotiation,\n}: MifidPanelProps): JSX.Element | null {\n return !isVisible ? null : (\n \n \n
    \n
    \n \n
    \n \n close\n \n
    \n

    \n \n

    \n
    \n {negociations.map(id => (\n \n ))}\n \n add\n \n \n
    \n
    \n
    \n );\n}\n\nexport const MifidPanel = connectMifidPanel(MifidPanelRaw);\n","import { type ReactNode, useCallback, useState } from 'react';\nimport { getTheme, setTheme, type Theme as ThemeType } from 'utils/theme';\nimport { ThemeProvider } from 'components/contexts/ThemeContext';\n\ninterface ThemeProps {\n children: ReactNode;\n}\n\nexport function Theme({ children }: ThemeProps) {\n const [theme, setThemeState] = useState(getTheme());\n const setThemeFunction = useCallback(\n (newTheme: ThemeType) => {\n setTheme(newTheme);\n setThemeState(newTheme);\n },\n [setThemeState],\n );\n const toggleTheme = useCallback(() => {\n setThemeFunction(theme === 'DARK' ? 'LIGHT' : 'DARK');\n }, [theme, setThemeFunction]);\n return (\n \n {children}\n \n );\n}\n","import { FormattedMessage } from 'react-intl';\nimport type { ToastType } from 'state/toasts/toastsModel';\n\ninterface ToastProps {\n name: string;\n type: ToastType;\n values?: Record;\n close: () => void;\n}\n\nconst toastTypeToClass = (type: ToastType) => (type === 'failure' ? 'danger' : 'success');\n\nexport const Toast: React.FunctionComponent = props => (\n
    \n
    \n \n \n
    \n
    \n \n
    \n
    \n);\n","import { useCallback } from 'react';\nimport { connect } from 'react-redux';\nimport styled from 'styled-components';\nimport { Toast } from './Toast';\nimport type { AppState } from 'state/model';\nimport { IntlComponentBoundary } from 'utils/i18n/IntlComponentBoundary';\nimport type { ToastItem } from 'state/toasts/toastsModel';\nimport { actionCreators, type ActionCreators } from 'state/actions';\nimport type { MapDispatchToPropsHOF } from 'typings/redux-utils';\nimport en from './locales/en.json';\nimport fr from './locales/fr.json';\n\nconst messagesMap = { en, fr };\n\ninterface ToastsStateProps {\n toasts: readonly ToastItem[];\n}\ninterface ToastsDispatchProps {\n remove(id: string): void;\n}\ntype ToastsProps = ToastsStateProps & ToastsDispatchProps;\n\nconst ToastsContainer = styled.div.attrs({ className: 'position-absolute' })`\n top: 50px;\n right: 0;\n width: 22.5rem;\n z-index: 50;\n`;\n\nfunction ToastsRaw({ remove, toasts }: ToastsProps) {\n const removeGrowl = useCallback((id: string) => () => remove(id), [remove]);\n return (\n \n \n {toasts.map(toast => (\n \n ))}\n \n \n );\n}\n\nconst mapStateToProps = (state: AppState): ToastsStateProps => ({\n toasts: state.toasts.toasts,\n});\n\nexport const mapDispatchToProps: MapDispatchToPropsHOF<\n ToastsDispatchProps,\n Record,\n ActionCreators\n> = ac => dispatch => ({\n remove(id) {\n dispatch(ac.removeToastAction(id));\n },\n});\n\nexport const Toasts = connect(mapStateToProps, mapDispatchToProps(actionCreators))(ToastsRaw);\n\nexport default Toasts;\n","import { Suspense } from 'react';\nimport { lazyWithRetry } from './share/lazy';\n\nimport { Footer } from './layout/Footer';\nimport { ClientWorkspace } from './ClientWorkspace/ClientWorkspace';\n\nimport { LiveBlotterPanel } from './Blotter/LiveBlotterPanel';\nimport { QuickBlotterButton } from './Blotter/QuickBlotterButton';\nimport { UserHasAccess } from './share/RenderWhen';\nimport { HelpCenter } from './layout/HelpCenter';\nimport { AppCrash } from './AppCrash';\nimport { NavMenu as WorkspaceBar } from './NavMenu';\nimport { Header } from './layout/Header';\nimport { MifidPanel } from './MifidPanel/MifidPanel';\nimport { Theme } from './ClientWorkspace/Theme';\nimport { Toasts } from './Toasts/Toasts';\n\nconst AppModals = lazyWithRetry(() => import('../components/Modals'));\n\nexport function App() {\n return (\n \n \n
    \n
    \n \n \n
    \n
    \n }\n >\n
    \n \n \n
    \n \n
    \n \n
    \n \n
    \n \n